From 2da09a8a251fbbb56f6af0bde499ebe9f492c716 Mon Sep 17 00:00:00 2001 From: Welton Moura Date: Tue, 11 Feb 2025 11:07:58 -0300 Subject: [PATCH] nem sei pq tantos arquivos --- gestaoRaul/balcao/templates/viewBalcao.html | 2 +- gestaoRaul/db.sqlite3 | Bin 311296 -> 311296 bytes .../__pycache__/settings.cpython-310.pyc | Bin 3315 -> 3315 bytes .../static/comandas/js/viewbalcao.js | 1 + .../INSTALLER | 0 .../MarkupSafe-3.0.2.dist-info/LICENSE.txt | 28 + .../MarkupSafe-3.0.2.dist-info/METADATA | 92 + .../MarkupSafe-3.0.2.dist-info/RECORD | 15 + .../REQUESTED | 0 .../WHEEL | 2 +- .../MarkupSafe-3.0.2.dist-info/top_level.txt | 1 + gestao_raul/Lib/site-packages/OpenSSL/SSL.py | 3144 +++ .../Lib/site-packages/OpenSSL/__init__.py | 31 + .../OpenSSL/__pycache__/SSL.cpython-310.pyc | Bin 0 -> 94881 bytes .../__pycache__/__init__.cpython-310.pyc | Bin 0 -> 568 bytes .../OpenSSL/__pycache__/_util.cpython-310.pyc | Bin 0 -> 3851 bytes .../__pycache__/crypto.cpython-310.pyc | Bin 0 -> 71836 bytes .../OpenSSL/__pycache__/debug.cpython-310.pyc | Bin 0 -> 1131 bytes .../OpenSSL/__pycache__/rand.cpython-310.pyc | Bin 0 -> 1511 bytes .../__pycache__/version.cpython-310.pyc | Bin 0 -> 652 bytes .../Lib/site-packages/OpenSSL/_util.py | 126 + .../Lib/site-packages/OpenSSL/crypto.py | 2479 +++ .../Lib/site-packages/OpenSSL/debug.py | 40 + .../REQUESTED => OpenSSL/py.typed} | 0 gestao_raul/Lib/site-packages/OpenSSL/rand.py | 48 + .../Lib/site-packages/OpenSSL/version.py | 28 + .../Lib/site-packages/PIL/BlpImagePlugin.py | 142 +- .../Lib/site-packages/PIL/DdsImagePlugin.py | 4 +- .../Lib/site-packages/PIL/EpsImagePlugin.py | 2 +- gestao_raul/Lib/site-packages/PIL/ExifTags.py | 125 +- .../Lib/site-packages/PIL/FliImagePlugin.py | 2 +- .../Lib/site-packages/PIL/FpxImagePlugin.py | 2 +- .../Lib/site-packages/PIL/FtexImagePlugin.py | 2 +- .../Lib/site-packages/PIL/GdImageFile.py | 2 +- .../Lib/site-packages/PIL/GifImagePlugin.py | 6 +- .../Lib/site-packages/PIL/ImImagePlugin.py | 2 +- gestao_raul/Lib/site-packages/PIL/Image.py | 53 +- .../Lib/site-packages/PIL/ImageFile.py | 8 +- .../Lib/site-packages/PIL/ImageFilter.py | 2 +- .../Lib/site-packages/PIL/ImageFont.py | 2 +- .../Lib/site-packages/PIL/ImageGrab.py | 31 +- gestao_raul/Lib/site-packages/PIL/ImageOps.py | 7 +- gestao_raul/Lib/site-packages/PIL/ImageQt.py | 5 +- .../Lib/site-packages/PIL/ImtImagePlugin.py | 2 +- .../site-packages/PIL/Jpeg2KImagePlugin.py | 8 +- .../Lib/site-packages/PIL/JpegImagePlugin.py | 14 +- .../Lib/site-packages/PIL/MspImagePlugin.py | 6 +- .../Lib/site-packages/PIL/PcdImagePlugin.py | 2 +- .../Lib/site-packages/PIL/PcxImagePlugin.py | 2 +- .../Lib/site-packages/PIL/PixarImagePlugin.py | 4 +- .../Lib/site-packages/PIL/PngImagePlugin.py | 2 +- .../Lib/site-packages/PIL/QoiImagePlugin.py | 2 +- .../site-packages/PIL/SpiderImagePlugin.py | 21 +- .../Lib/site-packages/PIL/TiffImagePlugin.py | 152 +- .../Lib/site-packages/PIL/WebPImagePlugin.py | 1 - .../Lib/site-packages/PIL/WmfImagePlugin.py | 5 +- .../site-packages/PIL/XVThumbImagePlugin.py | 4 +- .../Lib/site-packages/PIL/XbmImagePlugin.py | 4 +- .../Lib/site-packages/PIL/XpmImagePlugin.py | 4 +- .../__pycache__/BdfFontFile.cpython-310.pyc | Bin 2775 -> 2775 bytes .../BlpImagePlugin.cpython-310.pyc | Bin 13500 -> 13517 bytes .../BmpImagePlugin.cpython-310.pyc | Bin 9838 -> 9838 bytes .../BufrStubImagePlugin.cpython-310.pyc | Bin 2011 -> 2011 bytes .../__pycache__/ContainerIO.cpython-310.pyc | Bin 5561 -> 5561 bytes .../CurImagePlugin.cpython-310.pyc | Bin 1514 -> 1514 bytes .../DcxImagePlugin.cpython-310.pyc | Bin 1766 -> 1766 bytes .../DdsImagePlugin.cpython-310.pyc | Bin 13999 -> 13984 bytes .../EpsImagePlugin.cpython-310.pyc | Bin 9236 -> 9232 bytes .../PIL/__pycache__/ExifTags.cpython-310.pyc | Bin 10225 -> 10280 bytes .../FitsImagePlugin.cpython-310.pyc | Bin 3797 -> 3797 bytes .../FliImagePlugin.cpython-310.pyc | Bin 3941 -> 3939 bytes .../PIL/__pycache__/FontFile.cpython-310.pyc | Bin 2906 -> 2906 bytes .../FpxImagePlugin.cpython-310.pyc | Bin 4603 -> 4601 bytes .../FtexImagePlugin.cpython-310.pyc | Bin 3883 -> 3866 bytes .../GbrImagePlugin.cpython-310.pyc | Bin 2092 -> 2092 bytes .../__pycache__/GdImageFile.cpython-310.pyc | Bin 2748 -> 2731 bytes .../GifImagePlugin.cpython-310.pyc | Bin 23572 -> 23576 bytes .../GimpGradientFile.cpython-310.pyc | Bin 3709 -> 3709 bytes .../GimpPaletteFile.cpython-310.pyc | Bin 1575 -> 1575 bytes .../GribStubImagePlugin.cpython-310.pyc | Bin 2008 -> 2008 bytes .../Hdf5StubImagePlugin.cpython-310.pyc | Bin 1999 -> 1999 bytes .../IcnsImagePlugin.cpython-310.pyc | Bin 10338 -> 10338 bytes .../IcoImagePlugin.cpython-310.pyc | Bin 8703 -> 8703 bytes .../__pycache__/ImImagePlugin.cpython-310.pyc | Bin 7084 -> 7102 bytes .../PIL/__pycache__/Image.cpython-310.pyc | Bin 119280 -> 119506 bytes .../__pycache__/ImageChops.cpython-310.pyc | Bin 7386 -> 7386 bytes .../PIL/__pycache__/ImageCms.cpython-310.pyc | Bin 36094 -> 36094 bytes .../__pycache__/ImageColor.cpython-310.pyc | Bin 8178 -> 8178 bytes .../PIL/__pycache__/ImageDraw.cpython-310.pyc | Bin 27360 -> 27360 bytes .../__pycache__/ImageDraw2.cpython-310.pyc | Bin 7245 -> 7245 bytes .../__pycache__/ImageEnhance.cpython-310.pyc | Bin 3797 -> 3797 bytes .../PIL/__pycache__/ImageFile.cpython-310.pyc | Bin 20646 -> 20645 bytes .../__pycache__/ImageFilter.cpython-310.pyc | Bin 18309 -> 18309 bytes .../PIL/__pycache__/ImageFont.cpython-310.pyc | Bin 60503 -> 60485 bytes .../PIL/__pycache__/ImageGrab.cpython-310.pyc | Bin 3863 -> 3602 bytes .../PIL/__pycache__/ImageMath.cpython-310.pyc | Bin 11196 -> 11196 bytes .../PIL/__pycache__/ImageMode.cpython-310.pyc | Bin 2305 -> 2305 bytes .../__pycache__/ImageMorph.cpython-310.pyc | Bin 8052 -> 8052 bytes .../PIL/__pycache__/ImageOps.cpython-310.pyc | Bin 20112 -> 20127 bytes .../__pycache__/ImagePalette.cpython-310.pyc | Bin 8427 -> 8427 bytes .../PIL/__pycache__/ImagePath.cpython-310.pyc | Bin 279 -> 279 bytes .../PIL/__pycache__/ImageQt.cpython-310.pyc | Bin 5738 -> 5790 bytes .../__pycache__/ImageSequence.cpython-310.pyc | Bin 2769 -> 2769 bytes .../PIL/__pycache__/ImageShow.cpython-310.pyc | Bin 10045 -> 10045 bytes .../PIL/__pycache__/ImageStat.cpython-310.pyc | Bin 5757 -> 5757 bytes .../PIL/__pycache__/ImageTk.cpython-310.pyc | Bin 7942 -> 7942 bytes .../ImageTransform.cpython-310.pyc | Bin 4668 -> 4668 bytes .../PIL/__pycache__/ImageWin.cpython-310.pyc | Bin 9260 -> 9260 bytes .../ImtImagePlugin.cpython-310.pyc | Bin 1490 -> 1484 bytes .../IptcImagePlugin.cpython-310.pyc | Bin 5518 -> 5518 bytes .../Jpeg2KImagePlugin.cpython-310.pyc | Bin 10453 -> 10488 bytes .../JpegImagePlugin.cpython-310.pyc | Bin 19819 -> 20446 bytes .../__pycache__/JpegPresets.cpython-310.pyc | Bin 7944 -> 7944 bytes .../McIdasImagePlugin.cpython-310.pyc | Bin 1535 -> 1535 bytes .../MicImagePlugin.cpython-310.pyc | Bin 2567 -> 2567 bytes .../MpegImagePlugin.cpython-310.pyc | Bin 2425 -> 2425 bytes .../MpoImagePlugin.cpython-310.pyc | Bin 4897 -> 4897 bytes .../MspImagePlugin.cpython-310.pyc | Bin 3505 -> 3481 bytes .../PIL/__pycache__/PSDraw.cpython-310.pyc | Bin 6135 -> 6135 bytes .../__pycache__/PaletteFile.cpython-310.pyc | Bin 1551 -> 1551 bytes .../PalmImagePlugin.cpython-310.pyc | Bin 6999 -> 6999 bytes .../PcdImagePlugin.cpython-310.pyc | Bin 1296 -> 1294 bytes .../__pycache__/PcfFontFile.cpython-310.pyc | Bin 6126 -> 6126 bytes .../PcxImagePlugin.cpython-310.pyc | Bin 4044 -> 4045 bytes .../PdfImagePlugin.cpython-310.pyc | Bin 5050 -> 5050 bytes .../PIL/__pycache__/PdfParser.cpython-310.pyc | Bin 29833 -> 29833 bytes .../PixarImagePlugin.cpython-310.pyc | Bin 1318 -> 1300 bytes .../PngImagePlugin.cpython-310.pyc | Bin 33856 -> 33862 bytes .../PpmImagePlugin.cpython-310.pyc | Bin 8342 -> 8342 bytes .../PsdImagePlugin.cpython-310.pyc | Bin 6116 -> 6116 bytes .../QoiImagePlugin.cpython-310.pyc | Bin 3444 -> 3442 bytes .../SgiImagePlugin.cpython-310.pyc | Bin 4456 -> 4456 bytes .../SpiderImagePlugin.cpython-310.pyc | Bin 7417 -> 7427 bytes .../SunImagePlugin.cpython-310.pyc | Bin 2094 -> 2094 bytes .../PIL/__pycache__/TarIO.cpython-310.pyc | Bin 1316 -> 1316 bytes .../TgaImagePlugin.cpython-310.pyc | Bin 4359 -> 4359 bytes .../TiffImagePlugin.cpython-310.pyc | Bin 58070 -> 58372 bytes .../PIL/__pycache__/TiffTags.cpython-310.pyc | Bin 13840 -> 13840 bytes .../__pycache__/WalImageFile.cpython-310.pyc | Bin 3150 -> 3150 bytes .../WebPImagePlugin.cpython-310.pyc | Bin 7394 -> 7381 bytes .../WmfImagePlugin.cpython-310.pyc | Bin 3963 -> 4017 bytes .../XVThumbImagePlugin.cpython-310.pyc | Bin 1614 -> 1604 bytes .../XbmImagePlugin.cpython-310.pyc | Bin 2406 -> 2400 bytes .../XpmImagePlugin.cpython-310.pyc | Bin 2575 -> 2556 bytes .../PIL/__pycache__/__init__.cpython-310.pyc | Bin 1943 -> 1943 bytes .../PIL/__pycache__/__main__.cpython-310.pyc | Bin 330 -> 330 bytes .../PIL/__pycache__/_binary.cpython-310.pyc | Bin 3010 -> 3010 bytes .../__pycache__/_deprecate.cpython-310.pyc | Bin 2057 -> 2057 bytes .../_tkinter_finder.cpython-310.pyc | Bin 552 -> 552 bytes .../PIL/__pycache__/_typing.cpython-310.pyc | Bin 1767 -> 1736 bytes .../PIL/__pycache__/_util.cpython-310.pyc | Bin 1394 -> 1394 bytes .../PIL/__pycache__/_version.cpython-310.pyc | Bin 242 -> 242 bytes .../PIL/__pycache__/features.cpython-310.pyc | Bin 9775 -> 9917 bytes .../PIL/__pycache__/report.cpython-310.pyc | Bin 292 -> 292 bytes .../PIL/_imaging.cp310-win_amd64.pyd | Bin 2348032 -> 2458112 bytes .../PIL/_imagingcms.cp310-win_amd64.pyd | Bin 264192 -> 263680 bytes .../PIL/_imagingft.cp310-win_amd64.pyd | Bin 1828352 -> 1933824 bytes .../PIL/_imagingmath.cp310-win_amd64.pyd | Bin 25088 -> 25088 bytes .../PIL/_imagingmorph.cp310-win_amd64.pyd | Bin 13824 -> 13824 bytes .../PIL/_imagingtk.cp310-win_amd64.pyd | Bin 15360 -> 15360 bytes gestao_raul/Lib/site-packages/PIL/_typing.py | 4 +- gestao_raul/Lib/site-packages/PIL/_version.py | 2 +- .../PIL/_webp.cp310-win_amd64.pyd | Bin 410112 -> 409600 bytes gestao_raul/Lib/site-packages/PIL/features.py | 7 +- .../_cffi_backend.cp310-win_amd64.pyd | Bin 0 -> 178176 bytes .../INSTALLER | 0 .../cffi-1.17.1.dist-info/LICENSE | 26 + .../cffi-1.17.1.dist-info/METADATA | 40 + .../cffi-1.17.1.dist-info/RECORD | 49 + .../REQUESTED} | 0 .../site-packages/cffi-1.17.1.dist-info/WHEEL | 5 + .../cffi-1.17.1.dist-info/entry_points.txt | 2 + .../cffi-1.17.1.dist-info/top_level.txt | 2 + .../Lib/site-packages/cffi/__init__.py | 14 + .../cffi/__pycache__/__init__.cpython-310.pyc | Bin 0 -> 511 bytes .../_imp_emulation.cpython-310.pyc | Bin 0 -> 2486 bytes .../_shimmed_dist_utils.cpython-310.pyc | Bin 0 -> 1735 bytes .../cffi/__pycache__/api.cpython-310.pyc | Bin 0 -> 34378 bytes .../backend_ctypes.cpython-310.pyc | Bin 0 -> 39594 bytes .../__pycache__/cffi_opcode.cpython-310.pyc | Bin 0 -> 5079 bytes .../__pycache__/commontypes.cpython-310.pyc | Bin 0 -> 1998 bytes .../cffi/__pycache__/cparser.cpython-310.pyc | Bin 0 -> 23940 bytes .../cffi/__pycache__/error.cpython-310.pyc | Bin 0 -> 1478 bytes .../__pycache__/ffiplatform.cpython-310.pyc | Bin 0 -> 3307 bytes .../cffi/__pycache__/lock.cpython-310.pyc | Bin 0 -> 415 bytes .../cffi/__pycache__/model.cpython-310.pyc | Bin 0 -> 19860 bytes .../__pycache__/pkgconfig.cpython-310.pyc | Bin 0 -> 4949 bytes .../__pycache__/recompiler.cpython-310.pyc | Bin 0 -> 46900 bytes .../setuptools_ext.cpython-310.pyc | Bin 0 -> 7220 bytes .../__pycache__/vengine_cpy.cpython-310.pyc | Bin 0 -> 35741 bytes .../__pycache__/vengine_gen.cpython-310.pyc | Bin 0 -> 21198 bytes .../cffi/__pycache__/verifier.cpython-310.pyc | Bin 0 -> 9342 bytes .../Lib/site-packages/cffi/_cffi_errors.h | 149 + .../Lib/site-packages/cffi/_cffi_include.h | 389 + .../Lib/site-packages/cffi/_embedding.h | 550 + .../Lib/site-packages/cffi/_imp_emulation.py | 83 + .../site-packages/cffi/_shimmed_dist_utils.py | 45 + gestao_raul/Lib/site-packages/cffi/api.py | 967 + .../Lib/site-packages/cffi/backend_ctypes.py | 1121 ++ .../Lib/site-packages/cffi/cffi_opcode.py | 187 + .../Lib/site-packages/cffi/commontypes.py | 82 + gestao_raul/Lib/site-packages/cffi/cparser.py | 1015 + gestao_raul/Lib/site-packages/cffi/error.py | 31 + .../Lib/site-packages/cffi/ffiplatform.py | 113 + gestao_raul/Lib/site-packages/cffi/lock.py | 30 + gestao_raul/Lib/site-packages/cffi/model.py | 618 + .../Lib/site-packages/cffi/parse_c_type.h | 181 + .../Lib/site-packages/cffi/pkgconfig.py | 121 + .../Lib/site-packages/cffi/recompiler.py | 1598 ++ .../Lib/site-packages/cffi/setuptools_ext.py | 216 + .../Lib/site-packages/cffi/vengine_cpy.py | 1084 + .../Lib/site-packages/cffi/vengine_gen.py | 679 + .../Lib/site-packages/cffi/verifier.py | 306 + .../INSTALLER} | 0 .../cryptography-44.0.0.dist-info/METADATA | 140 + .../cryptography-44.0.0.dist-info/RECORD | 183 + .../REQUESTED} | 0 .../cryptography-44.0.0.dist-info/WHEEL | 4 + .../licenses/LICENSE | 3 + .../licenses/LICENSE.APACHE | 202 + .../licenses/LICENSE.BSD | 27 + .../site-packages/cryptography/__about__.py | 17 + .../site-packages/cryptography/__init__.py | 26 + .../__pycache__/__about__.cpython-310.pyc | Bin 0 -> 419 bytes .../__pycache__/__init__.cpython-310.pyc | Bin 0 -> 738 bytes .../__pycache__/exceptions.cpython-310.pyc | Bin 0 -> 1990 bytes .../__pycache__/fernet.cpython-310.pyc | Bin 0 -> 6963 bytes .../__pycache__/utils.cpython-310.pyc | Bin 0 -> 4688 bytes .../site-packages/cryptography/exceptions.py | 52 + .../Lib/site-packages/cryptography/fernet.py | 223 + .../cryptography/hazmat/__init__.py | 13 + .../__pycache__/__init__.cpython-310.pyc | Bin 0 -> 233 bytes .../hazmat/__pycache__/_oid.cpython-310.pyc | Bin 0 -> 11197 bytes .../site-packages/cryptography/hazmat/_oid.py | 315 + .../cryptography/hazmat/backends/__init__.py | 13 + .../__pycache__/__init__.cpython-310.pyc | Bin 0 -> 489 bytes .../hazmat/backends/openssl/__init__.py | 9 + .../__pycache__/__init__.cpython-310.pyc | Bin 0 -> 346 bytes .../__pycache__/backend.cpython-310.pyc | Bin 0 -> 8592 bytes .../hazmat/backends/openssl/backend.py | 285 + .../cryptography/hazmat/bindings/__init__.py | 3 + .../__pycache__/__init__.cpython-310.pyc | Bin 0 -> 194 bytes .../cryptography/hazmat/bindings/_rust.pyd | Bin 0 -> 8292864 bytes .../hazmat/bindings/_rust/__init__.pyi | 28 + .../hazmat/bindings/_rust/_openssl.pyi | 8 + .../hazmat/bindings/_rust/asn1.pyi | 7 + .../hazmat/bindings/_rust/exceptions.pyi | 17 + .../hazmat/bindings/_rust/ocsp.pyi | 117 + .../bindings/_rust/openssl/__init__.pyi | 72 + .../hazmat/bindings/_rust/openssl/aead.pyi | 103 + .../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 | 12 + .../hazmat/bindings/_rust/openssl/ed448.pyi | 12 + .../hazmat/bindings/_rust/openssl/hashes.pyi | 19 + .../hazmat/bindings/_rust/openssl/hmac.pyi | 21 + .../hazmat/bindings/_rust/openssl/kdf.pyi | 43 + .../hazmat/bindings/_rust/openssl/keys.pyi | 33 + .../bindings/_rust/openssl/poly1305.pyi | 13 + .../hazmat/bindings/_rust/openssl/rsa.pyi | 55 + .../hazmat/bindings/_rust/openssl/x25519.pyi | 12 + .../hazmat/bindings/_rust/openssl/x448.pyi | 12 + .../hazmat/bindings/_rust/pkcs12.pyi | 46 + .../hazmat/bindings/_rust/pkcs7.pyi | 49 + .../hazmat/bindings/_rust/test_support.pyi | 22 + .../hazmat/bindings/_rust/x509.pyi | 246 + .../hazmat/bindings/openssl/__init__.py | 3 + .../__pycache__/__init__.cpython-310.pyc | Bin 0 -> 202 bytes .../__pycache__/_conditional.cpython-310.pyc | Bin 0 -> 4752 bytes .../__pycache__/binding.cpython-310.pyc | Bin 0 -> 3690 bytes .../hazmat/bindings/openssl/_conditional.py | 183 + .../hazmat/bindings/openssl/binding.py | 121 + .../cryptography/hazmat/decrepit/__init__.py | 5 + .../__pycache__/__init__.cpython-310.pyc | Bin 0 -> 240 bytes .../hazmat/decrepit/ciphers/__init__.py | 5 + .../__pycache__/__init__.cpython-310.pyc | Bin 0 -> 248 bytes .../__pycache__/algorithms.cpython-310.pyc | Bin 0 -> 3467 bytes .../hazmat/decrepit/ciphers/algorithms.py | 107 + .../hazmat/primitives/__init__.py | 3 + .../__pycache__/__init__.cpython-310.pyc | Bin 0 -> 196 bytes .../__pycache__/_asymmetric.cpython-310.pyc | Bin 0 -> 716 bytes .../_cipheralgorithm.cpython-310.pyc | Bin 0 -> 2002 bytes .../_serialization.cpython-310.pyc | Bin 0 -> 5291 bytes .../__pycache__/cmac.cpython-310.pyc | Bin 0 -> 362 bytes .../__pycache__/constant_time.cpython-310.pyc | Bin 0 -> 544 bytes .../__pycache__/hashes.cpython-310.pyc | Bin 0 -> 6412 bytes .../__pycache__/hmac.cpython-310.pyc | Bin 0 -> 460 bytes .../__pycache__/keywrap.cpython-310.pyc | Bin 0 -> 4627 bytes .../__pycache__/padding.cpython-310.pyc | Bin 0 -> 5578 bytes .../__pycache__/poly1305.cpython-310.pyc | Bin 0 -> 374 bytes .../hazmat/primitives/_asymmetric.py | 19 + .../hazmat/primitives/_cipheralgorithm.py | 58 + .../hazmat/primitives/_serialization.py | 169 + .../hazmat/primitives/asymmetric/__init__.py | 3 + .../__pycache__/__init__.cpython-310.pyc | Bin 0 -> 207 bytes .../asymmetric/__pycache__/dh.cpython-310.pyc | Bin 0 -> 4473 bytes .../__pycache__/dsa.cpython-310.pyc | Bin 0 -> 5037 bytes .../asymmetric/__pycache__/ec.cpython-310.pyc | Bin 0 -> 11699 bytes .../__pycache__/ed25519.cpython-310.pyc | Bin 0 -> 3941 bytes .../__pycache__/ed448.cpython-310.pyc | Bin 0 -> 3955 bytes .../__pycache__/padding.cpython-310.pyc | Bin 0 -> 3761 bytes .../__pycache__/rsa.cpython-310.pyc | Bin 0 -> 7619 bytes .../__pycache__/types.cpython-310.pyc | Bin 0 -> 1770 bytes .../__pycache__/utils.cpython-310.pyc | Bin 0 -> 1084 bytes .../__pycache__/x25519.cpython-310.pyc | Bin 0 -> 3782 bytes .../__pycache__/x448.cpython-310.pyc | Bin 0 -> 3794 bytes .../hazmat/primitives/asymmetric/dh.py | 135 + .../hazmat/primitives/asymmetric/dsa.py | 154 + .../hazmat/primitives/asymmetric/ec.py | 403 + .../hazmat/primitives/asymmetric/ed25519.py | 116 + .../hazmat/primitives/asymmetric/ed448.py | 118 + .../hazmat/primitives/asymmetric/padding.py | 113 + .../hazmat/primitives/asymmetric/rsa.py | 263 + .../hazmat/primitives/asymmetric/types.py | 111 + .../hazmat/primitives/asymmetric/utils.py | 24 + .../hazmat/primitives/asymmetric/x25519.py | 109 + .../hazmat/primitives/asymmetric/x448.py | 112 + .../hazmat/primitives/ciphers/__init__.py | 27 + .../__pycache__/__init__.cpython-310.pyc | Bin 0 -> 614 bytes .../ciphers/__pycache__/aead.cpython-310.pyc | Bin 0 -> 505 bytes .../__pycache__/algorithms.cpython-310.pyc | Bin 0 -> 4776 bytes .../ciphers/__pycache__/base.cpython-310.pyc | Bin 0 -> 5174 bytes .../ciphers/__pycache__/modes.cpython-310.pyc | Bin 0 -> 8729 bytes .../hazmat/primitives/ciphers/aead.py | 23 + .../hazmat/primitives/ciphers/algorithms.py | 183 + .../hazmat/primitives/ciphers/base.py | 145 + .../hazmat/primitives/ciphers/modes.py | 268 + .../cryptography/hazmat/primitives/cmac.py | 10 + .../hazmat/primitives/constant_time.py | 14 + .../cryptography/hazmat/primitives/hashes.py | 242 + .../cryptography/hazmat/primitives/hmac.py | 13 + .../hazmat/primitives/kdf/__init__.py | 23 + .../kdf/__pycache__/__init__.cpython-310.pyc | Bin 0 -> 1136 bytes .../kdf/__pycache__/argon2.cpython-310.pyc | Bin 0 -> 473 bytes .../kdf/__pycache__/concatkdf.cpython-310.pyc | Bin 0 -> 3969 bytes .../kdf/__pycache__/hkdf.cpython-310.pyc | Bin 0 -> 3153 bytes .../kdf/__pycache__/kbkdf.cpython-310.pyc | Bin 0 -> 7310 bytes .../kdf/__pycache__/pbkdf2.cpython-310.pyc | Bin 0 -> 2079 bytes .../kdf/__pycache__/scrypt.cpython-310.pyc | Bin 0 -> 524 bytes .../kdf/__pycache__/x963kdf.cpython-310.pyc | Bin 0 -> 2196 bytes .../hazmat/primitives/kdf/argon2.py | 13 + .../hazmat/primitives/kdf/concatkdf.py | 124 + .../hazmat/primitives/kdf/hkdf.py | 101 + .../hazmat/primitives/kdf/kbkdf.py | 302 + .../hazmat/primitives/kdf/pbkdf2.py | 62 + .../hazmat/primitives/kdf/scrypt.py | 19 + .../hazmat/primitives/kdf/x963kdf.py | 61 + .../cryptography/hazmat/primitives/keywrap.py | 177 + .../cryptography/hazmat/primitives/padding.py | 183 + .../hazmat/primitives/poly1305.py | 11 + .../primitives/serialization/__init__.py | 63 + .../__pycache__/__init__.cpython-310.pyc | Bin 0 -> 1291 bytes .../__pycache__/base.cpython-310.pyc | Bin 0 -> 526 bytes .../__pycache__/pkcs12.cpython-310.pyc | Bin 0 -> 4243 bytes .../__pycache__/pkcs7.cpython-310.pyc | Bin 0 -> 10049 bytes .../__pycache__/ssh.cpython-310.pyc | Bin 0 -> 38569 bytes .../hazmat/primitives/serialization/base.py | 14 + .../hazmat/primitives/serialization/pkcs12.py | 156 + .../hazmat/primitives/serialization/pkcs7.py | 369 + .../hazmat/primitives/serialization/ssh.py | 1569 ++ .../hazmat/primitives/twofactor/__init__.py | 9 + .../__pycache__/__init__.cpython-310.pyc | Bin 0 -> 426 bytes .../__pycache__/hotp.cpython-310.pyc | Bin 0 -> 3477 bytes .../__pycache__/totp.cpython-310.pyc | Bin 0 -> 1948 bytes .../hazmat/primitives/twofactor/hotp.py | 100 + .../hazmat/primitives/twofactor/totp.py | 55 + .../Lib/site-packages/cryptography/py.typed | 0 .../Lib/site-packages/cryptography/utils.py | 127 + .../cryptography/x509/__init__.py | 267 + .../x509/__pycache__/__init__.cpython-310.pyc | Bin 0 -> 6352 bytes .../x509/__pycache__/base.cpython-310.pyc | Bin 0 -> 21945 bytes .../certificate_transparency.cpython-310.pyc | Bin 0 -> 1225 bytes .../__pycache__/extensions.cpython-310.pyc | Bin 0 -> 74499 bytes .../__pycache__/general_name.cpython-310.pyc | Bin 0 -> 9215 bytes .../x509/__pycache__/name.cpython-310.pyc | Bin 0 -> 15838 bytes .../x509/__pycache__/ocsp.cpython-310.pyc | Bin 0 -> 9354 bytes .../x509/__pycache__/oid.cpython-310.pyc | Bin 0 -> 697 bytes .../__pycache__/verification.cpython-310.pyc | Bin 0 -> 632 bytes .../site-packages/cryptography/x509/base.py | 815 + .../x509/certificate_transparency.py | 35 + .../cryptography/x509/extensions.py | 2477 +++ .../cryptography/x509/general_name.py | 281 + .../site-packages/cryptography/x509/name.py | 465 + .../site-packages/cryptography/x509/ocsp.py | 344 + .../site-packages/cryptography/x509/oid.py | 35 + .../cryptography/x509/verification.py | 28 + .../INSTALLER | 1 + .../django_extensions-3.2.3.dist-info/LICENSE | 19 + .../METADATA | 180 + .../django_extensions-3.2.3.dist-info/RECORD | 274 + .../REQUESTED | 0 .../WHEEL | 2 +- .../top_level.txt | 1 + .../django_extensions/__init__.py | 20 + .../__pycache__/__init__.cpython-310.pyc | Bin 0 -> 629 bytes .../__pycache__/apps.cpython-310.pyc | Bin 0 -> 465 bytes .../collision_resolvers.cpython-310.pyc | Bin 0 -> 11556 bytes .../__pycache__/compat.cpython-310.pyc | Bin 0 -> 2359 bytes .../import_subclasses.cpython-310.pyc | Bin 0 -> 2648 bytes .../__pycache__/models.cpython-310.pyc | Bin 0 -> 181 bytes .../__pycache__/settings.cpython-310.pyc | Bin 0 -> 1145 bytes .../__pycache__/validators.cpython-310.pyc | Bin 0 -> 3766 bytes .../django_extensions/admin/__init__.py | 165 + .../__pycache__/__init__.cpython-310.pyc | Bin 0 -> 6950 bytes .../admin/__pycache__/filter.cpython-310.pyc | Bin 0 -> 2285 bytes .../admin/__pycache__/widgets.cpython-310.pyc | Bin 0 -> 3176 bytes .../django_extensions/admin/filter.py | 53 + .../django_extensions/admin/widgets.py | 90 + .../site-packages/django_extensions/apps.py | 7 + .../django_extensions/auth/__init__.py | 0 .../auth/__pycache__/__init__.cpython-310.pyc | Bin 0 -> 188 bytes .../auth/__pycache__/mixins.cpython-310.pyc | Bin 0 -> 920 bytes .../django_extensions/auth/mixins.py | 15 + .../django_extensions/collision_resolvers.py | 265 + .../site-packages/django_extensions/compat.py | 67 + .../conf/app_template/__init__.py.tmpl | 0 .../conf/app_template/forms.py.tmpl | 3 + .../app_template/migrations/__init__.py.tmpl | 0 .../conf/app_template/models.py.tmpl | 3 + .../conf/app_template/urls.py.tmpl | 3 + .../conf/app_template/views.py.tmpl | 1 + .../management/__init__.py.tmpl | 0 .../management/commands/__init__.py.tmpl | 0 .../management/commands/sample.py.tmpl | 11 + .../conf/jobs_template/jobs/__init__.py.tmpl | 0 .../jobs_template/jobs/daily/__init__.py.tmpl | 0 .../jobs/hourly/__init__.py.tmpl | 0 .../jobs/monthly/__init__.py.tmpl | 0 .../conf/jobs_template/jobs/sample.py.tmpl | 9 + .../jobs/weekly/__init__.py.tmpl | 0 .../jobs/yearly/__init__.py.tmpl | 0 .../templatetags/__init__.py.tmpl | 0 .../templatetags/sample.py.tmpl | 3 + .../django_extensions/db/__init__.py | 0 .../db/__pycache__/__init__.cpython-310.pyc | Bin 0 -> 186 bytes .../db/__pycache__/models.cpython-310.pyc | Bin 0 -> 5367 bytes .../django_extensions/db/fields/__init__.py | 597 + .../__pycache__/__init__.cpython-310.pyc | Bin 0 -> 17787 bytes .../fields/__pycache__/json.cpython-310.pyc | Bin 0 -> 3496 bytes .../django_extensions/db/fields/json.py | 107 + .../django_extensions/db/models.py | 134 + .../django_extensions/import_subclasses.py | 57 + .../django_extensions/jobs/__init__.py | 0 .../jobs/__pycache__/__init__.cpython-310.pyc | Bin 0 -> 188 bytes .../django_extensions/jobs/daily/__init__.py | 0 .../__pycache__/__init__.cpython-310.pyc | Bin 0 -> 194 bytes .../__pycache__/cache_cleanup.cpython-310.pyc | Bin 0 -> 988 bytes .../__pycache__/daily_cleanup.cpython-310.pyc | Bin 0 -> 801 bytes .../jobs/daily/cache_cleanup.py | 24 + .../jobs/daily/daily_cleanup.py | 17 + .../django_extensions/jobs/hourly/__init__.py | 0 .../__pycache__/__init__.cpython-310.pyc | Bin 0 -> 195 bytes .../jobs/minutely/__init__.py | 0 .../__pycache__/__init__.cpython-310.pyc | Bin 0 -> 197 bytes .../jobs/monthly/__init__.py | 0 .../__pycache__/__init__.cpython-310.pyc | Bin 0 -> 196 bytes .../django_extensions/jobs/weekly/__init__.py | 0 .../__pycache__/__init__.cpython-310.pyc | Bin 0 -> 195 bytes .../django_extensions/jobs/yearly/__init__.py | 0 .../__pycache__/__init__.cpython-310.pyc | Bin 0 -> 195 bytes .../locale/ar/LC_MESSAGES/django.po | 109 + .../locale/da/LC_MESSAGES/django.mo | Bin 0 -> 797 bytes .../locale/da/LC_MESSAGES/django.po | 79 + .../locale/de/LC_MESSAGES/django.mo | Bin 0 -> 1227 bytes .../locale/de/LC_MESSAGES/django.po | 77 + .../locale/el/LC_MESSAGES/django.mo | Bin 0 -> 1581 bytes .../locale/el/LC_MESSAGES/django.po | 79 + .../locale/en/LC_MESSAGES/django.mo | Bin 0 -> 367 bytes .../locale/en/LC_MESSAGES/django.po | 112 + .../locale/es/LC_MESSAGES/django.mo | Bin 0 -> 1260 bytes .../locale/es/LC_MESSAGES/django.po | 77 + .../locale/fr/LC_MESSAGES/django.mo | Bin 0 -> 743 bytes .../locale/fr/LC_MESSAGES/django.po | 81 + .../locale/hu/LC_MESSAGES/django.mo | Bin 0 -> 1242 bytes .../locale/hu/LC_MESSAGES/django.po | 77 + .../locale/id/LC_MESSAGES/django.mo | Bin 0 -> 1508 bytes .../locale/id/LC_MESSAGES/django.po | 98 + .../locale/it/LC_MESSAGES/django.mo | Bin 0 -> 1247 bytes .../locale/it/LC_MESSAGES/django.po | 77 + .../locale/ja/LC_MESSAGES/django.mo | Bin 0 -> 1397 bytes .../locale/ja/LC_MESSAGES/django.po | 77 + .../locale/pl/LC_MESSAGES/django.mo | Bin 0 -> 2002 bytes .../locale/pl/LC_MESSAGES/django.po | 109 + .../locale/pt/LC_MESSAGES/django.mo | Bin 0 -> 1262 bytes .../locale/pt/LC_MESSAGES/django.po | 77 + .../locale/pt_BR/LC_MESSAGES/django.mo | Bin 0 -> 1310 bytes .../locale/pt_BR/LC_MESSAGES/django.po | 79 + .../locale/ro/LC_MESSAGES/django.mo | Bin 0 -> 1352 bytes .../locale/ro/LC_MESSAGES/django.po | 80 + .../locale/ru/LC_MESSAGES/django.mo | Bin 0 -> 2009 bytes .../locale/ru/LC_MESSAGES/django.po | 126 + .../django_extensions/logging/__init__.py | 0 .../__pycache__/__init__.cpython-310.pyc | Bin 0 -> 191 bytes .../__pycache__/filters.cpython-310.pyc | Bin 0 -> 1138 bytes .../django_extensions/logging/filters.py | 36 + .../django_extensions/management/__init__.py | 0 .../__pycache__/__init__.cpython-310.pyc | Bin 0 -> 194 bytes .../__pycache__/base.cpython-310.pyc | Bin 0 -> 1861 bytes .../__pycache__/color.cpython-310.pyc | Bin 0 -> 1020 bytes .../__pycache__/debug_cursor.cpython-310.pyc | Bin 0 -> 3586 bytes .../email_notifications.cpython-310.pyc | Bin 0 -> 4822 bytes .../__pycache__/jobs.cpython-310.pyc | Bin 0 -> 5713 bytes .../__pycache__/modelviz.cpython-310.pyc | Bin 0 -> 14054 bytes .../__pycache__/mysql.cpython-310.pyc | Bin 0 -> 1240 bytes .../notebook_extension.cpython-310.pyc | Bin 0 -> 558 bytes .../__pycache__/shells.cpython-310.pyc | Bin 0 -> 10320 bytes .../__pycache__/signals.cpython-310.pyc | Bin 0 -> 467 bytes .../technical_response.cpython-310.pyc | Bin 0 -> 1724 bytes .../__pycache__/utils.cpython-310.pyc | Bin 0 -> 2630 bytes .../django_extensions/management/base.py | 53 + .../django_extensions/management/color.py | 29 + .../management/commands/__init__.py | 0 .../__pycache__/__init__.cpython-310.pyc | Bin 0 -> 203 bytes .../admin_generator.cpython-310.pyc | Bin 0 -> 10384 bytes .../__pycache__/clean_pyc.cpython-310.pyc | Bin 0 -> 1800 bytes .../__pycache__/clear_cache.cpython-310.pyc | Bin 0 -> 1680 bytes .../__pycache__/compile_pyc.cpython-310.pyc | Bin 0 -> 1627 bytes .../create_command.cpython-310.pyc | Bin 0 -> 3466 bytes .../__pycache__/create_jobs.cpython-310.pyc | Bin 0 -> 2561 bytes .../create_template_tags.cpython-310.pyc | Bin 0 -> 2630 bytes ...delete_squashed_migrations.cpython-310.pyc | Bin 0 -> 5040 bytes .../__pycache__/describe_form.cpython-310.pyc | Bin 0 -> 2737 bytes .../drop_test_database.cpython-310.pyc | Bin 0 -> 6084 bytes .../__pycache__/dumpscript.cpython-310.pyc | Bin 0 -> 21489 bytes .../__pycache__/export_emails.cpython-310.pyc | Bin 0 -> 6034 bytes .../__pycache__/find_template.cpython-310.pyc | Bin 0 -> 1075 bytes .../generate_password.cpython-310.pyc | Bin 0 -> 1391 bytes .../generate_secret_key.cpython-310.pyc | Bin 0 -> 918 bytes .../__pycache__/graph_models.cpython-310.pyc | Bin 0 -> 10585 bytes .../list_model_info.cpython-310.pyc | Bin 0 -> 4477 bytes .../__pycache__/list_signals.cpython-310.pyc | Bin 0 -> 2550 bytes .../__pycache__/mail_debug.cpython-310.pyc | Bin 0 -> 3163 bytes .../__pycache__/managestate.cpython-310.pyc | Bin 0 -> 6096 bytes .../merge_model_instances.cpython-310.pyc | Bin 0 -> 6322 bytes .../__pycache__/notes.cpython-310.pyc | Bin 0 -> 2552 bytes .../__pycache__/pipchecker.cpython-310.pyc | Bin 0 -> 11939 bytes .../print_settings.cpython-310.pyc | Bin 0 -> 2869 bytes .../print_user_for_session.cpython-310.pyc | Bin 0 -> 2259 bytes .../raise_test_exception.cpython-310.pyc | Bin 0 -> 1076 bytes .../__pycache__/reset_db.cpython-310.pyc | Bin 0 -> 5620 bytes .../__pycache__/reset_schema.cpython-310.pyc | Bin 0 -> 2805 bytes .../__pycache__/runjob.cpython-310.pyc | Bin 0 -> 2049 bytes .../__pycache__/runjobs.cpython-310.pyc | Bin 0 -> 3443 bytes .../runprofileserver.cpython-310.pyc | Bin 0 -> 9101 bytes .../__pycache__/runscript.cpython-310.pyc | Bin 0 -> 8546 bytes .../runserver_plus.cpython-310.pyc | Bin 0 -> 18128 bytes .../set_default_site.cpython-310.pyc | Bin 0 -> 2466 bytes .../set_fake_emails.cpython-310.pyc | Bin 0 -> 3137 bytes .../set_fake_passwords.cpython-310.pyc | Bin 0 -> 2065 bytes .../__pycache__/shell_plus.cpython-310.pyc | Bin 0 -> 17403 bytes .../show_template_tags.cpython-310.pyc | Bin 0 -> 3848 bytes .../__pycache__/show_urls.cpython-310.pyc | Bin 0 -> 7491 bytes .../__pycache__/sqlcreate.cpython-310.pyc | Bin 0 -> 3764 bytes .../__pycache__/sqldiff.cpython-310.pyc | Bin 0 -> 44280 bytes .../__pycache__/sqldsn.cpython-310.pyc | Bin 0 -> 5802 bytes .../__pycache__/sync_s3.cpython-310.pyc | Bin 0 -> 11088 bytes .../__pycache__/syncdata.cpython-310.pyc | Bin 0 -> 6709 bytes .../unreferenced_files.cpython-310.pyc | Bin 0 -> 1619 bytes .../update_permissions.cpython-310.pyc | Bin 0 -> 2352 bytes .../validate_templates.cpython-310.pyc | Bin 0 -> 2983 bytes .../management/commands/admin_generator.py | 347 + .../management/commands/clean_pyc.py | 46 + .../management/commands/clear_cache.py | 37 + .../management/commands/compile_pyc.py | 37 + .../management/commands/create_command.py | 92 + .../management/commands/create_jobs.py | 65 + .../commands/create_template_tags.py | 73 + .../commands/delete_squashed_migrations.py | 183 + .../management/commands/describe_form.py | 74 + .../management/commands/drop_test_database.py | 213 + .../management/commands/dumpscript.py | 759 + .../management/commands/export_emails.py | 157 + .../management/commands/find_template.py | 22 + .../management/commands/generate_password.py | 30 + .../commands/generate_secret_key.py | 17 + .../management/commands/graph_models.py | 345 + .../management/commands/list_model_info.py | 149 + .../management/commands/list_signals.py | 74 + .../management/commands/mail_debug.py | 87 + .../management/commands/managestate.py | 174 + .../commands/merge_model_instances.py | 222 + .../management/commands/notes.py | 62 + .../management/commands/pipchecker.py | 351 + .../management/commands/print_settings.py | 83 + .../commands/print_user_for_session.py | 63 + .../commands/raise_test_exception.py | 23 + .../management/commands/reset_db.py | 203 + .../management/commands/reset_schema.py | 79 + .../management/commands/runjob.py | 58 + .../management/commands/runjobs.py | 88 + .../management/commands/runprofileserver.py | 291 + .../management/commands/runscript.py | 299 + .../management/commands/runserver_plus.py | 542 + .../management/commands/set_default_site.py | 75 + .../management/commands/set_fake_emails.py | 98 + .../management/commands/set_fake_passwords.py | 55 + .../management/commands/shell_plus.py | 582 + .../management/commands/show_template_tags.py | 113 + .../management/commands/show_urls.py | 239 + .../management/commands/sqlcreate.py | 94 + .../management/commands/sqldiff.py | 1403 ++ .../management/commands/sqldsn.py | 174 + .../management/commands/sync_s3.py | 400 + .../management/commands/syncdata.py | 224 + .../management/commands/unreferenced_files.py | 48 + .../management/commands/update_permissions.py | 54 + .../management/commands/validate_templates.py | 96 + .../management/debug_cursor.py | 113 + .../management/email_notifications.py | 140 + .../django_extensions/management/jobs.py | 180 + .../django_extensions/management/modelviz.py | 479 + .../django_extensions/management/mysql.py | 43 + .../management/notebook_extension.py | 10 + .../django_extensions/management/shells.py | 345 + .../django_extensions/management/signals.py | 13 + .../management/technical_response.py | 44 + .../django_extensions/management/utils.py | 74 + .../site-packages/django_extensions/models.py | 0 .../django_extensions/mongodb/__init__.py | 0 .../__pycache__/__init__.cpython-310.pyc | Bin 0 -> 191 bytes .../__pycache__/models.cpython-310.pyc | Bin 0 -> 3488 bytes .../mongodb/fields/__init__.py | 268 + .../__pycache__/__init__.cpython-310.pyc | Bin 0 -> 8760 bytes .../fields/__pycache__/json.cpython-310.pyc | Bin 0 -> 2914 bytes .../django_extensions/mongodb/fields/json.py | 80 + .../django_extensions/mongodb/models.py | 89 + .../django_extensions/settings.py | 32 + .../css/jquery.autocomplete.css | 38 + .../django_extensions/img/indicator.gif | Bin 0 -> 1553 bytes .../django_extensions/js/jquery.ajaxQueue.js | 116 + .../js/jquery.autocomplete.js | 1152 ++ .../django_extensions/js/jquery.bgiframe.js | 39 + .../graph_models/django2018/digraph.dot | 27 + .../graph_models/django2018/label.dot | 33 + .../graph_models/django2018/relation.dot | 10 + .../graph_models/original/digraph.dot | 27 + .../graph_models/original/label.dot | 33 + .../graph_models/original/relation.dot | 10 + .../widgets/foreignkey_searchinput.html | 61 + .../templatetags/__init__.py | 0 .../__pycache__/__init__.cpython-310.pyc | Bin 0 -> 196 bytes .../__pycache__/debugger_tags.cpython-310.pyc | Bin 0 -> 838 bytes .../__pycache__/highlighting.cpython-310.pyc | Bin 0 -> 3448 bytes .../__pycache__/indent_text.cpython-310.pyc | Bin 0 -> 1802 bytes .../__pycache__/syntax_color.cpython-310.pyc | Bin 0 -> 3451 bytes .../__pycache__/widont.cpython-310.pyc | Bin 0 -> 2426 bytes .../templatetags/debugger_tags.py | 37 + .../templatetags/highlighting.py | 99 + .../templatetags/indent_text.py | 55 + .../templatetags/syntax_color.py | 111 + .../django_extensions/templatetags/widont.py | 64 + .../django_extensions/utils/__init__.py | 2 + .../__pycache__/__init__.cpython-310.pyc | Bin 0 -> 237 bytes .../__pycache__/deprecation.cpython-310.pyc | Bin 0 -> 514 bytes .../__pycache__/dia2django.cpython-310.pyc | Bin 0 -> 5483 bytes .../__pycache__/internal_ips.cpython-310.pyc | Bin 0 -> 2661 bytes .../django_extensions/utils/deprecation.py | 8 + .../django_extensions/utils/dia2django.py | 217 + .../django_extensions/utils/internal_ips.py | 70 + .../django_extensions/validators.py | 110 + .../django_pwa-2.0.1.dist-info/INSTALLER | 1 + .../django_pwa-2.0.1.dist-info/METADATA | 275 + .../django_pwa-2.0.1.dist-info/RECORD | 49 + .../django_pwa-2.0.1.dist-info/REQUESTED | 0 .../django_pwa-2.0.1.dist-info/WHEEL | 4 + .../licenses/LICENSE | 21 + .../Lib/site-packages/markupsafe/__init__.py | 395 + .../__pycache__/__init__.cpython-310.pyc | Bin 0 -> 15405 bytes .../__pycache__/_native.cpython-310.pyc | Bin 0 -> 410 bytes .../Lib/site-packages/markupsafe/_native.py | 8 + .../Lib/site-packages/markupsafe/_speedups.c | 204 + .../markupsafe/_speedups.cp310-win_amd64.pyd | Bin 0 -> 13312 bytes .../site-packages/markupsafe/_speedups.pyi | 1 + .../Lib/site-packages/markupsafe/py.typed | 0 .../pillow-11.1.0.dist-info/INSTALLER | 1 + .../LICENSE | 57 +- .../METADATA | 49 +- .../RECORD | 102 +- .../pillow-11.1.0.dist-info/REQUESTED | 0 .../pillow-11.1.0.dist-info/WHEEL | 5 + .../top_level.txt | 0 .../zip-safe | 0 .../site-packages/pip-23.0.1.dist-info/RECORD | 1002 - .../pip-25.0.1.dist-info/AUTHORS.txt | 806 + .../pip-25.0.1.dist-info/INSTALLER | 1 + .../LICENSE.txt | 0 .../METADATA | 36 +- .../site-packages/pip-25.0.1.dist-info/RECORD | 854 + .../pip-25.0.1.dist-info/REQUESTED | 0 .../site-packages/pip-25.0.1.dist-info/WHEEL | 5 + .../entry_points.txt | 1 - .../pip-25.0.1.dist-info/top_level.txt | 1 + gestao_raul/Lib/site-packages/pip/__init__.py | 2 +- gestao_raul/Lib/site-packages/pip/__main__.py | 7 - .../Lib/site-packages/pip/__pip-runner__.py | 4 +- .../pip/__pycache__/__init__.cpython-310.pyc | Bin 631 -> 625 bytes .../pip/__pycache__/__main__.cpython-310.pyc | Bin 593 -> 459 bytes .../__pip-runner__.cpython-310.pyc | Bin 1629 -> 1623 bytes .../site-packages/pip/_internal/__init__.py | 3 +- .../__pycache__/__init__.cpython-310.pyc | Bin 752 -> 687 bytes .../__pycache__/build_env.cpython-310.pyc | Bin 9710 -> 9887 bytes .../__pycache__/cache.cpython-310.pyc | Bin 9264 -> 9038 bytes .../__pycache__/configuration.cpython-310.pyc | Bin 11212 -> 11640 bytes .../__pycache__/exceptions.cpython-310.pyc | Bin 25937 -> 28089 bytes .../__pycache__/main.cpython-310.pyc | Bin 617 -> 611 bytes .../__pycache__/pyproject.cpython-310.pyc | Bin 3619 -> 3754 bytes .../self_outdated_check.cpython-310.pyc | Bin 6641 -> 6857 bytes .../__pycache__/wheel_builder.cpython-310.pyc | Bin 9129 -> 8636 bytes .../site-packages/pip/_internal/build_env.py | 21 +- .../Lib/site-packages/pip/_internal/cache.py | 91 +- .../cli/__pycache__/__init__.cpython-310.pyc | Bin 272 -> 266 bytes .../autocompletion.cpython-310.pyc | Bin 5305 -> 5441 bytes .../__pycache__/base_command.cpython-310.pyc | Bin 6130 -> 6568 bytes .../__pycache__/cmdoptions.cpython-310.pyc | Bin 23031 -> 23536 bytes .../command_context.cpython-310.pyc | Bin 1312 -> 1306 bytes .../__pycache__/index_command.cpython-310.pyc | Bin 0 -> 4955 bytes .../cli/__pycache__/main.cpython-310.pyc | Bin 1370 -> 1500 bytes .../__pycache__/main_parser.cpython-310.pyc | Bin 2995 -> 2989 bytes .../cli/__pycache__/parser.cpython-310.pyc | Bin 9954 -> 9971 bytes .../__pycache__/progress_bars.cpython-310.pyc | Bin 1896 -> 2629 bytes .../__pycache__/req_command.cpython-310.pyc | Bin 13091 -> 8704 bytes .../cli/__pycache__/spinners.cpython-310.pyc | Bin 4962 -> 4956 bytes .../__pycache__/status_codes.cpython-310.pyc | Bin 351 -> 345 bytes .../pip/_internal/cli/autocompletion.py | 9 +- .../pip/_internal/cli/base_command.py | 154 +- .../pip/_internal/cli/cmdoptions.py | 84 +- .../pip/_internal/cli/index_command.py | 171 + .../site-packages/pip/_internal/cli/main.py | 10 + .../site-packages/pip/_internal/cli/parser.py | 16 +- .../pip/_internal/cli/progress_bars.py | 30 +- .../pip/_internal/cli/req_command.py | 209 +- .../__pycache__/__init__.cpython-310.pyc | Bin 3251 -> 3245 bytes .../__pycache__/cache.cpython-310.pyc | Bin 6234 -> 6538 bytes .../__pycache__/check.cpython-310.pyc | Bin 1569 -> 1965 bytes .../__pycache__/completion.cpython-310.pyc | Bin 4160 -> 4312 bytes .../__pycache__/configuration.cpython-310.pyc | Bin 8938 -> 8929 bytes .../__pycache__/debug.cpython-310.pyc | Bin 6679 -> 6880 bytes .../__pycache__/download.cpython-310.pyc | Bin 4209 -> 4192 bytes .../__pycache__/freeze.cpython-310.pyc | Bin 2634 -> 2993 bytes .../commands/__pycache__/hash.cpython-310.pyc | Bin 2148 -> 2142 bytes .../commands/__pycache__/help.cpython-310.pyc | Bin 1309 -> 1303 bytes .../__pycache__/index.cpython-310.pyc | Bin 4586 -> 4540 bytes .../__pycache__/inspect.cpython-310.pyc | Bin 2969 -> 2964 bytes .../__pycache__/install.cpython-310.pyc | Bin 20214 -> 17891 bytes .../commands/__pycache__/list.cpython-310.pyc | Bin 10296 -> 10640 bytes .../__pycache__/search.cpython-310.pyc | Bin 5362 -> 5306 bytes .../commands/__pycache__/show.cpython-310.pyc | Bin 6523 -> 7156 bytes .../__pycache__/uninstall.cpython-310.pyc | Bin 3330 -> 3326 bytes .../__pycache__/wheel.cpython-310.pyc | Bin 5405 -> 4923 bytes .../pip/_internal/commands/cache.py | 41 +- .../pip/_internal/commands/check.py | 20 +- .../pip/_internal/commands/completion.py | 20 +- .../pip/_internal/commands/configuration.py | 10 +- .../pip/_internal/commands/debug.py | 34 +- .../pip/_internal/commands/download.py | 13 +- .../pip/_internal/commands/freeze.py | 20 +- .../pip/_internal/commands/index.py | 10 +- .../pip/_internal/commands/inspect.py | 2 +- .../pip/_internal/commands/install.py | 175 +- .../pip/_internal/commands/list.py | 36 +- .../pip/_internal/commands/search.py | 10 +- .../pip/_internal/commands/show.py | 47 +- .../pip/_internal/commands/uninstall.py | 3 +- .../pip/_internal/commands/wheel.py | 29 +- .../pip/_internal/configuration.py | 41 +- .../__pycache__/__init__.cpython-310.pyc | Bin 799 -> 793 bytes .../__pycache__/base.cpython-310.pyc | Bin 1887 -> 2505 bytes .../__pycache__/installed.cpython-310.pyc | Bin 1264 -> 1477 bytes .../__pycache__/sdist.cpython-310.pyc | Bin 4995 -> 5310 bytes .../__pycache__/wheel.cpython-310.pyc | Bin 1631 -> 1872 bytes .../pip/_internal/distributions/base.py | 18 +- .../pip/_internal/distributions/installed.py | 6 + .../pip/_internal/distributions/sdist.py | 20 +- .../pip/_internal/distributions/wheel.py | 12 +- .../site-packages/pip/_internal/exceptions.py | 122 +- .../__pycache__/__init__.cpython-310.pyc | Bin 226 -> 220 bytes .../__pycache__/collector.cpython-310.pyc | Bin 15293 -> 15095 bytes .../package_finder.cpython-310.pyc | Bin 29453 -> 29607 bytes .../index/__pycache__/sources.cpython-310.pyc | Bin 7119 -> 8872 bytes .../pip/_internal/index/collector.py | 49 +- .../pip/_internal/index/package_finder.py | 146 +- .../pip/_internal/index/sources.py | 84 +- .../pip/_internal/locations/__init__.py | 11 - .../__pycache__/__init__.cpython-310.pyc | Bin 11028 -> 10879 bytes .../__pycache__/_distutils.cpython-310.pyc | Bin 4601 -> 4556 bytes .../__pycache__/_sysconfig.cpython-310.pyc | Bin 5992 -> 6003 bytes .../__pycache__/base.cpython-310.pyc | Bin 2396 -> 2390 bytes .../pip/_internal/locations/_distutils.py | 11 +- .../pip/_internal/locations/_sysconfig.py | 5 +- .../pip/_internal/metadata/__init__.py | 7 +- .../__pycache__/__init__.cpython-310.pyc | Bin 4730 -> 4795 bytes .../__pycache__/_json.cpython-310.pyc | Bin 2186 -> 2246 bytes .../metadata/__pycache__/base.cpython-310.pyc | Bin 26664 -> 26880 bytes .../__pycache__/pkg_resources.cpython-310.pyc | Bin 10168 -> 10982 bytes .../pip/_internal/metadata/_json.py | 10 +- .../pip/_internal/metadata/base.py | 64 +- .../_internal/metadata/importlib/__init__.py | 4 +- .../__pycache__/__init__.cpython-310.pyc | Bin 317 -> 341 bytes .../__pycache__/_compat.cpython-310.pyc | Bin 2749 -> 3490 bytes .../__pycache__/_dists.cpython-310.pyc | Bin 8907 -> 8846 bytes .../__pycache__/_envs.cpython-310.pyc | Bin 7703 -> 7717 bytes .../_internal/metadata/importlib/_compat.py | 38 +- .../_internal/metadata/importlib/_dists.py | 60 +- .../pip/_internal/metadata/importlib/_envs.py | 19 +- .../pip/_internal/metadata/pkg_resources.py | 45 +- .../__pycache__/__init__.cpython-310.pyc | Bin 260 -> 254 bytes .../__pycache__/candidate.cpython-310.pyc | Bin 1412 -> 1226 bytes .../__pycache__/direct_url.cpython-310.pyc | Bin 7416 -> 7392 bytes .../format_control.cpython-310.pyc | Bin 2737 -> 2725 bytes .../models/__pycache__/index.cpython-310.pyc | Bin 1229 -> 1223 bytes .../installation_report.cpython-310.pyc | Bin 1739 -> 1744 bytes .../models/__pycache__/link.cpython-310.pyc | Bin 16857 -> 18679 bytes .../models/__pycache__/scheme.cpython-310.pyc | Bin 1028 -> 925 bytes .../__pycache__/search_scope.cpython-310.pyc | Bin 3547 -> 3463 bytes .../selection_prefs.cpython-310.pyc | Bin 1690 -> 1684 bytes .../__pycache__/target_python.cpython-310.pyc | Bin 3441 -> 3801 bytes .../models/__pycache__/wheel.cpython-310.pyc | Bin 4460 -> 5084 bytes .../pip/_internal/models/candidate.py | 35 +- .../pip/_internal/models/direct_url.py | 76 +- .../pip/_internal/models/format_control.py | 4 +- .../_internal/models/installation_report.py | 9 +- .../pip/_internal/models/link.py | 174 +- .../pip/_internal/models/scheme.py | 20 +- .../pip/_internal/models/search_scope.py | 18 +- .../pip/_internal/models/selection_prefs.py | 2 + .../pip/_internal/models/target_python.py | 19 +- .../pip/_internal/models/wheel.py | 32 +- .../__pycache__/__init__.cpython-310.pyc | Bin 248 -> 242 bytes .../network/__pycache__/auth.cpython-310.pyc | Bin 11984 -> 14489 bytes .../network/__pycache__/cache.cpython-310.pyc | Bin 2935 -> 4792 bytes .../__pycache__/download.cpython-310.pyc | Bin 5530 -> 5482 bytes .../__pycache__/lazy_wheel.cpython-310.pyc | Bin 8416 -> 8410 bytes .../__pycache__/session.cpython-310.pyc | Bin 12418 -> 12580 bytes .../network/__pycache__/utils.cpython-310.pyc | Bin 1451 -> 1448 bytes .../__pycache__/xmlrpc.cpython-310.pyc | Bin 2061 -> 2098 bytes .../pip/_internal/network/auth.py | 254 +- .../pip/_internal/network/cache.py | 69 +- .../pip/_internal/network/download.py | 9 +- .../pip/_internal/network/lazy_wheel.py | 6 +- .../pip/_internal/network/session.py | 19 +- .../pip/_internal/network/utils.py | 6 +- .../pip/_internal/network/xmlrpc.py | 4 +- .../__pycache__/__init__.cpython-310.pyc | Bin 196 -> 190 bytes .../__pycache__/check.cpython-310.pyc | Bin 4024 -> 4807 bytes .../__pycache__/freeze.cpython-310.pyc | Bin 6201 -> 6333 bytes .../__pycache__/prepare.cpython-310.pyc | Bin 15054 -> 15738 bytes .../__pycache__/__init__.cpython-310.pyc | Bin 202 -> 196 bytes .../__pycache__/build_tracker.cpython-310.pyc | Bin 4283 -> 4968 bytes .../__pycache__/metadata.cpython-310.pyc | Bin 1435 -> 1429 bytes .../metadata_editable.cpython-310.pyc | Bin 1469 -> 1477 bytes .../metadata_legacy.cpython-310.pyc | Bin 2374 -> 2358 bytes .../build/__pycache__/wheel.cpython-310.pyc | Bin 1225 -> 1219 bytes .../wheel_editable.cpython-310.pyc | Bin 1449 -> 1443 bytes .../__pycache__/wheel_legacy.cpython-310.pyc | Bin 2759 -> 2725 bytes .../operations/build/build_tracker.py | 56 +- .../operations/build/metadata_editable.py | 1 + .../operations/build/metadata_legacy.py | 2 +- .../operations/build/wheel_legacy.py | 8 +- .../pip/_internal/operations/check.py | 42 +- .../pip/_internal/operations/freeze.py | 36 +- .../__pycache__/__init__.cpython-310.pyc | Bin 260 -> 254 bytes .../editable_legacy.cpython-310.pyc | Bin 1547 -> 1483 bytes .../__pycache__/legacy.cpython-310.pyc | Bin 3345 -> 0 bytes .../install/__pycache__/wheel.cpython-310.pyc | Bin 21146 -> 21469 bytes .../operations/install/editable_legacy.py | 6 +- .../_internal/operations/install/legacy.py | 120 - .../pip/_internal/operations/install/wheel.py | 93 +- .../pip/_internal/operations/prepare.py | 161 +- .../site-packages/pip/_internal/pyproject.py | 29 +- .../pip/_internal/req/__init__.py | 10 +- .../req/__pycache__/__init__.cpython-310.pyc | Bin 2603 -> 2326 bytes .../__pycache__/constructors.cpython-310.pyc | Bin 12373 -> 13950 bytes .../req/__pycache__/req_file.cpython-310.pyc | Bin 13633 -> 15441 bytes .../__pycache__/req_install.cpython-310.pyc | Bin 24390 -> 24831 bytes .../req/__pycache__/req_set.cpython-310.pyc | Bin 3911 -> 3905 bytes .../__pycache__/req_uninstall.cpython-310.pyc | Bin 19058 -> 18746 bytes .../pip/_internal/req/constructors.py | 161 +- .../pip/_internal/req/req_file.py | 253 +- .../pip/_internal/req/req_install.py | 322 +- .../pip/_internal/req/req_uninstall.py | 55 +- .../__pycache__/__init__.cpython-310.pyc | Bin 196 -> 190 bytes .../__pycache__/base.cpython-310.pyc | Bin 1048 -> 1042 bytes .../__pycache__/__init__.cpython-310.pyc | Bin 203 -> 197 bytes .../__pycache__/resolver.cpython-310.pyc | Bin 14949 -> 15011 bytes .../_internal/resolution/legacy/resolver.py | 43 +- .../__pycache__/__init__.cpython-310.pyc | Bin 207 -> 201 bytes .../__pycache__/base.cpython-310.pyc | Bin 6450 -> 6093 bytes .../__pycache__/candidates.cpython-310.pyc | Bin 18591 -> 19461 bytes .../__pycache__/factory.cpython-310.pyc | Bin 19071 -> 21670 bytes .../found_candidates.cpython-310.pyc | Bin 4867 -> 5222 bytes .../__pycache__/provider.cpython-310.pyc | Bin 7708 -> 8016 bytes .../__pycache__/reporter.cpython-310.pyc | Bin 3176 -> 3775 bytes .../__pycache__/requirements.cpython-310.pyc | Bin 7465 -> 10434 bytes .../__pycache__/resolver.cpython-310.pyc | Bin 8180 -> 8746 bytes .../_internal/resolution/resolvelib/base.py | 26 +- .../resolution/resolvelib/candidates.py | 144 +- .../resolution/resolvelib/factory.py | 240 +- .../resolution/resolvelib/found_candidates.py | 29 +- .../resolution/resolvelib/provider.py | 50 +- .../resolution/resolvelib/reporter.py | 33 +- .../resolution/resolvelib/requirements.py | 113 +- .../resolution/resolvelib/resolver.py | 27 +- .../pip/_internal/self_outdated_check.py | 60 +- .../__pycache__/__init__.cpython-310.pyc | Bin 191 -> 185 bytes .../__pycache__/_jaraco_text.cpython-310.pyc | Bin 0 -> 3840 bytes .../utils/__pycache__/_log.cpython-310.pyc | Bin 1519 -> 1513 bytes .../utils/__pycache__/appdirs.cpython-310.pyc | Bin 1617 -> 1611 bytes .../utils/__pycache__/compat.cpython-310.pyc | Bin 1507 -> 1956 bytes .../compatibility_tags.cpython-310.pyc | Bin 4076 -> 4445 bytes .../__pycache__/datetime.cpython-310.pyc | Bin 514 -> 508 bytes .../__pycache__/deprecation.cpython-310.pyc | Bin 5099 -> 3306 bytes .../direct_url_helpers.cpython-310.pyc | Bin 2082 -> 2070 bytes .../distutils_args.cpython-310.pyc | Bin 1056 -> 0 bytes .../__pycache__/egg_link.cpython-310.pyc | Bin 2162 -> 2406 bytes .../__pycache__/encoding.cpython-310.pyc | Bin 1304 -> 0 bytes .../__pycache__/entrypoints.cpython-310.pyc | Bin 2697 -> 2691 bytes .../__pycache__/filesystem.cpython-310.pyc | Bin 4480 -> 4401 bytes .../__pycache__/filetypes.cpython-310.pyc | Bin 941 -> 935 bytes .../utils/__pycache__/glibc.cpython-310.pyc | Bin 1670 -> 1745 bytes .../utils/__pycache__/hashes.cpython-310.pyc | Bin 5221 -> 5614 bytes .../inject_securetransport.cpython-310.pyc | Bin 986 -> 0 bytes .../utils/__pycache__/logging.cpython-310.pyc | Bin 9716 -> 9960 bytes .../utils/__pycache__/misc.cpython-310.pyc | Bin 22253 -> 22861 bytes .../utils/__pycache__/models.cpython-310.pyc | Bin 1987 -> 0 bytes .../__pycache__/packaging.cpython-310.pyc | Bin 2079 -> 2092 bytes .../utils/__pycache__/retry.cpython-310.pyc | Bin 0 -> 1613 bytes .../setuptools_build.cpython-310.pyc | Bin 4598 -> 3809 bytes .../__pycache__/subprocess.cpython-310.pyc | Bin 5770 -> 5721 bytes .../__pycache__/temp_dir.cpython-310.pyc | Bin 7314 -> 8316 bytes .../__pycache__/unpacking.cpython-310.pyc | Bin 6651 -> 8066 bytes .../utils/__pycache__/urls.cpython-310.pyc | Bin 1584 -> 1356 bytes .../__pycache__/virtualenv.cpython-310.pyc | Bin 3287 -> 3281 bytes .../utils/__pycache__/wheel.cpython-310.pyc | Bin 4412 -> 4384 bytes .../pip/_internal/utils/_jaraco_text.py | 109 + .../pip/_internal/utils/compat.py | 16 + .../pip/_internal/utils/compatibility_tags.py | 27 +- .../pip/_internal/utils/deprecation.py | 84 +- .../pip/_internal/utils/direct_url_helpers.py | 4 +- .../pip/_internal/utils/distutils_args.py | 43 - .../pip/_internal/utils/egg_link.py | 28 +- .../pip/_internal/utils/encoding.py | 36 - .../pip/_internal/utils/filesystem.py | 8 +- .../pip/_internal/utils/glibc.py | 25 +- .../pip/_internal/utils/hashes.py | 15 +- .../_internal/utils/inject_securetransport.py | 35 - .../pip/_internal/utils/logging.py | 16 +- .../site-packages/pip/_internal/utils/misc.py | 256 +- .../pip/_internal/utils/models.py | 39 - .../pip/_internal/utils/packaging.py | 3 +- .../pip/_internal/utils/retry.py | 42 + .../pip/_internal/utils/setuptools_build.py | 51 +- .../pip/_internal/utils/subprocess.py | 19 +- .../pip/_internal/utils/temp_dir.py | 54 +- .../pip/_internal/utils/unpacking.py | 180 +- .../site-packages/pip/_internal/utils/urls.py | 7 - .../pip/_internal/utils/wheel.py | 6 +- .../vcs/__pycache__/__init__.cpython-310.pyc | Bin 514 -> 508 bytes .../vcs/__pycache__/bazaar.cpython-310.pyc | Bin 3480 -> 3505 bytes .../vcs/__pycache__/git.cpython-310.pyc | Bin 12544 -> 12439 bytes .../vcs/__pycache__/mercurial.cpython-310.pyc | Bin 5060 -> 5068 bytes .../__pycache__/subversion.cpython-310.pyc | Bin 8452 -> 8468 bytes .../versioncontrol.cpython-310.pyc | Bin 21143 -> 20975 bytes .../site-packages/pip/_internal/vcs/bazaar.py | 8 +- .../site-packages/pip/_internal/vcs/git.py | 5 +- .../pip/_internal/vcs/mercurial.py | 2 +- .../pip/_internal/vcs/subversion.py | 6 +- .../pip/_internal/vcs/versioncontrol.py | 59 +- .../pip/_internal/wheel_builder.py | 46 +- .../Lib/site-packages/pip/_vendor/__init__.py | 12 +- .../__pycache__/__init__.cpython-310.pyc | Bin 3127 -> 3054 bytes .../_vendor/__pycache__/six.cpython-310.pyc | Bin 27581 -> 0 bytes .../typing_extensions.cpython-310.pyc | Bin 65035 -> 100385 bytes .../pip/_vendor/cachecontrol/__init__.py | 19 +- .../__pycache__/__init__.cpython-310.pyc | Bin 642 -> 756 bytes .../__pycache__/_cmd.cpython-310.pyc | Bin 1580 -> 1825 bytes .../__pycache__/adapter.cpython-310.pyc | Bin 3156 -> 4408 bytes .../__pycache__/cache.cpython-310.pyc | Bin 2690 -> 3269 bytes .../__pycache__/compat.cpython-310.pyc | Bin 756 -> 0 bytes .../__pycache__/controller.cpython-310.pyc | Bin 8590 -> 10149 bytes .../__pycache__/filewrapper.cpython-310.pyc | Bin 2792 -> 3209 bytes .../__pycache__/heuristics.cpython-310.pyc | Bin 4716 -> 5390 bytes .../__pycache__/serialize.cpython-310.pyc | Bin 4331 -> 3343 bytes .../__pycache__/wrapper.cpython-310.pyc | Bin 687 -> 1460 bytes .../pip/_vendor/cachecontrol/_cmd.py | 25 +- .../pip/_vendor/cachecontrol/adapter.py | 80 +- .../pip/_vendor/cachecontrol/cache.py | 36 +- .../_vendor/cachecontrol/caches/__init__.py | 5 +- .../__pycache__/__init__.cpython-310.pyc | Bin 361 -> 419 bytes .../__pycache__/file_cache.cpython-310.pyc | Bin 4961 -> 5638 bytes .../__pycache__/redis_cache.cpython-310.pyc | Bin 1619 -> 2034 bytes .../_vendor/cachecontrol/caches/file_cache.py | 84 +- .../cachecontrol/caches/redis_cache.py | 31 +- .../pip/_vendor/cachecontrol/compat.py | 32 - .../pip/_vendor/cachecontrol/controller.py | 175 +- .../pip/_vendor/cachecontrol/filewrapper.py | 34 +- .../pip/_vendor/cachecontrol/heuristics.py | 60 +- .../pip/_vendor/cachecontrol/py.typed | 0 .../pip/_vendor/cachecontrol/serialize.py | 184 +- .../pip/_vendor/cachecontrol/wrapper.py | 34 +- .../pip/_vendor/certifi/__init__.py | 2 +- .../__pycache__/__init__.cpython-310.pyc | Bin 304 -> 298 bytes .../__pycache__/__main__.cpython-310.pyc | Bin 454 -> 448 bytes .../certifi/__pycache__/core.cpython-310.pyc | Bin 1924 -> 2141 bytes .../pip/_vendor/certifi/cacert.pem | 902 +- .../site-packages/pip/_vendor/certifi/core.py | 6 + .../pip/_vendor/certifi/py.typed | 0 .../pip/_vendor/chardet/__init__.py | 115 - .../__pycache__/__init__.cpython-310.pyc | Bin 3172 -> 0 bytes .../__pycache__/big5freq.cpython-310.pyc | Bin 27178 -> 0 bytes .../__pycache__/big5prober.cpython-310.pyc | Bin 1156 -> 0 bytes .../chardistribution.cpython-310.pyc | Bin 6573 -> 0 bytes .../charsetgroupprober.cpython-310.pyc | Bin 2423 -> 0 bytes .../__pycache__/charsetprober.cpython-310.pyc | Bin 3829 -> 0 bytes .../codingstatemachine.cpython-310.pyc | Bin 3066 -> 0 bytes .../codingstatemachinedict.cpython-310.pyc | Bin 695 -> 0 bytes .../__pycache__/cp949prober.cpython-310.pyc | Bin 1163 -> 0 bytes .../chardet/__pycache__/enums.cpython-310.pyc | Bin 2656 -> 0 bytes .../__pycache__/escprober.cpython-310.pyc | Bin 2814 -> 0 bytes .../chardet/__pycache__/escsm.cpython-310.pyc | Bin 8517 -> 0 bytes .../__pycache__/eucjpprober.cpython-310.pyc | Bin 2600 -> 0 bytes .../__pycache__/euckrfreq.cpython-310.pyc | Bin 12062 -> 0 bytes .../__pycache__/euckrprober.cpython-310.pyc | Bin 1164 -> 0 bytes .../__pycache__/euctwfreq.cpython-310.pyc | Bin 27182 -> 0 bytes .../__pycache__/euctwprober.cpython-310.pyc | Bin 1164 -> 0 bytes .../__pycache__/gb2312freq.cpython-310.pyc | Bin 19106 -> 0 bytes .../__pycache__/gb2312prober.cpython-310.pyc | Bin 1172 -> 0 bytes .../__pycache__/hebrewprober.cpython-310.pyc | Bin 3413 -> 0 bytes .../__pycache__/jisfreq.cpython-310.pyc | Bin 22134 -> 0 bytes .../__pycache__/johabfreq.cpython-310.pyc | Bin 138758 -> 0 bytes .../__pycache__/johabprober.cpython-310.pyc | Bin 1163 -> 0 bytes .../__pycache__/jpcntx.cpython-310.pyc | Bin 37984 -> 0 bytes .../langbulgarianmodel.cpython-310.pyc | Bin 47926 -> 0 bytes .../langgreekmodel.cpython-310.pyc | Bin 46116 -> 0 bytes .../langhebrewmodel.cpython-310.pyc | Bin 44563 -> 0 bytes .../langhungarianmodel.cpython-310.pyc | Bin 47886 -> 0 bytes .../langrussianmodel.cpython-310.pyc | Bin 61027 -> 0 bytes .../__pycache__/langthaimodel.cpython-310.pyc | Bin 44739 -> 0 bytes .../langturkishmodel.cpython-310.pyc | Bin 44580 -> 0 bytes .../__pycache__/latin1prober.cpython-310.pyc | Bin 4562 -> 0 bytes .../macromanprober.cpython-310.pyc | Bin 4703 -> 0 bytes .../mbcharsetprober.cpython-310.pyc | Bin 2312 -> 0 bytes .../mbcsgroupprober.cpython-310.pyc | Bin 1260 -> 0 bytes .../__pycache__/mbcssm.cpython-310.pyc | Bin 20935 -> 0 bytes .../__pycache__/resultdict.cpython-310.pyc | Bin 575 -> 0 bytes .../sbcharsetprober.cpython-310.pyc | Bin 3681 -> 0 bytes .../sbcsgroupprober.cpython-310.pyc | Bin 1739 -> 0 bytes .../__pycache__/sjisprober.cpython-310.pyc | Bin 2638 -> 0 bytes .../universaldetector.cpython-310.pyc | Bin 7126 -> 0 bytes .../__pycache__/utf1632prober.cpython-310.pyc | Bin 6098 -> 0 bytes .../__pycache__/utf8prober.cpython-310.pyc | Bin 2108 -> 0 bytes .../__pycache__/version.cpython-310.pyc | Bin 440 -> 0 bytes .../pip/_vendor/chardet/big5freq.py | 386 - .../pip/_vendor/chardet/big5prober.py | 47 - .../pip/_vendor/chardet/chardistribution.py | 261 - .../pip/_vendor/chardet/charsetgroupprober.py | 106 - .../pip/_vendor/chardet/charsetprober.py | 147 - .../cli/__pycache__/__init__.cpython-310.pyc | Bin 195 -> 0 bytes .../__pycache__/chardetect.cpython-310.pyc | Bin 3037 -> 0 bytes .../pip/_vendor/chardet/cli/chardetect.py | 112 - .../pip/_vendor/chardet/codingstatemachine.py | 90 - .../_vendor/chardet/codingstatemachinedict.py | 19 - .../pip/_vendor/chardet/cp949prober.py | 49 - .../pip/_vendor/chardet/enums.py | 85 - .../pip/_vendor/chardet/escprober.py | 102 - .../pip/_vendor/chardet/escsm.py | 261 - .../pip/_vendor/chardet/eucjpprober.py | 102 - .../pip/_vendor/chardet/euckrfreq.py | 196 - .../pip/_vendor/chardet/euckrprober.py | 47 - .../pip/_vendor/chardet/euctwfreq.py | 388 - .../pip/_vendor/chardet/euctwprober.py | 47 - .../pip/_vendor/chardet/gb2312freq.py | 284 - .../pip/_vendor/chardet/gb2312prober.py | 47 - .../pip/_vendor/chardet/hebrewprober.py | 316 - .../pip/_vendor/chardet/jisfreq.py | 325 - .../pip/_vendor/chardet/johabfreq.py | 2382 --- .../pip/_vendor/chardet/johabprober.py | 47 - .../pip/_vendor/chardet/jpcntx.py | 238 - .../pip/_vendor/chardet/langbulgarianmodel.py | 4649 ----- .../pip/_vendor/chardet/langgreekmodel.py | 4397 ----- .../pip/_vendor/chardet/langhebrewmodel.py | 4380 ---- .../pip/_vendor/chardet/langhungarianmodel.py | 4649 ----- .../pip/_vendor/chardet/langrussianmodel.py | 5725 ------ .../pip/_vendor/chardet/langthaimodel.py | 4380 ---- .../pip/_vendor/chardet/langturkishmodel.py | 4380 ---- .../pip/_vendor/chardet/latin1prober.py | 147 - .../pip/_vendor/chardet/macromanprober.py | 162 - .../pip/_vendor/chardet/mbcharsetprober.py | 95 - .../pip/_vendor/chardet/mbcsgroupprober.py | 57 - .../pip/_vendor/chardet/mbcssm.py | 661 - .../__pycache__/__init__.cpython-310.pyc | Bin 200 -> 0 bytes .../__pycache__/languages.cpython-310.pyc | Bin 8183 -> 0 bytes .../pip/_vendor/chardet/metadata/languages.py | 352 - .../pip/_vendor/chardet/resultdict.py | 16 - .../pip/_vendor/chardet/sbcharsetprober.py | 162 - .../pip/_vendor/chardet/sbcsgroupprober.py | 88 - .../pip/_vendor/chardet/sjisprober.py | 105 - .../pip/_vendor/chardet/universaldetector.py | 362 - .../pip/_vendor/chardet/utf1632prober.py | 225 - .../pip/_vendor/chardet/utf8prober.py | 82 - .../pip/_vendor/chardet/version.py | 9 - .../pip/_vendor/colorama/__init__.py | 7 - .../__pycache__/__init__.cpython-310.pyc | Bin 478 -> 0 bytes .../colorama/__pycache__/ansi.cpython-310.pyc | Bin 3004 -> 0 bytes .../__pycache__/ansitowin32.cpython-310.pyc | Bin 8516 -> 0 bytes .../__pycache__/initialise.cpython-310.pyc | Bin 2261 -> 0 bytes .../__pycache__/win32.cpython-310.pyc | Bin 4471 -> 0 bytes .../__pycache__/winterm.cpython-310.pyc | Bin 5167 -> 0 bytes .../pip/_vendor/colorama/ansi.py | 102 - .../pip/_vendor/colorama/ansitowin32.py | 277 - .../pip/_vendor/colorama/initialise.py | 121 - .../pip/_vendor/colorama/tests/__init__.py | 1 - .../__pycache__/__init__.cpython-310.pyc | Bin 198 -> 0 bytes .../__pycache__/ansi_test.cpython-310.pyc | Bin 2290 -> 0 bytes .../ansitowin32_test.cpython-310.pyc | Bin 11601 -> 0 bytes .../initialise_test.cpython-310.pyc | Bin 6898 -> 0 bytes .../__pycache__/isatty_test.cpython-310.pyc | Bin 2689 -> 0 bytes .../tests/__pycache__/utils.cpython-310.pyc | Bin 1598 -> 0 bytes .../__pycache__/winterm_test.cpython-310.pyc | Bin 3191 -> 0 bytes .../pip/_vendor/colorama/tests/ansi_test.py | 76 - .../colorama/tests/ansitowin32_test.py | 294 - .../_vendor/colorama/tests/initialise_test.py | 189 - .../pip/_vendor/colorama/tests/isatty_test.py | 57 - .../pip/_vendor/colorama/tests/utils.py | 49 - .../_vendor/colorama/tests/winterm_test.py | 131 - .../pip/_vendor/colorama/win32.py | 180 - .../pip/_vendor/colorama/winterm.py | 195 - .../pip/_vendor/distlib/__init__.py | 22 +- .../__pycache__/__init__.cpython-310.pyc | Bin 1062 -> 1056 bytes .../__pycache__/compat.cpython-310.pyc | Bin 31408 -> 31429 bytes .../__pycache__/database.cpython-310.pyc | Bin 43148 -> 43066 bytes .../distlib/__pycache__/index.cpython-310.pyc | Bin 17313 -> 17293 bytes .../__pycache__/locators.cpython-310.pyc | Bin 38370 -> 38244 bytes .../__pycache__/manifest.cpython-310.pyc | Bin 10230 -> 10221 bytes .../__pycache__/markers.cpython-310.pyc | Bin 5034 -> 5289 bytes .../__pycache__/metadata.cpython-310.pyc | Bin 26787 -> 26920 bytes .../__pycache__/resources.cpython-310.pyc | Bin 11036 -> 11030 bytes .../__pycache__/scripts.cpython-310.pyc | Bin 11500 -> 11657 bytes .../distlib/__pycache__/util.cpython-310.pyc | Bin 51695 -> 52067 bytes .../__pycache__/version.cpython-310.pyc | Bin 20149 -> 20275 bytes .../distlib/__pycache__/wheel.cpython-310.pyc | Bin 28131 -> 28476 bytes .../pip/_vendor/distlib/compat.py | 179 +- .../pip/_vendor/distlib/database.py | 139 +- .../pip/_vendor/distlib/index.py | 8 +- .../pip/_vendor/distlib/locators.py | 147 +- .../pip/_vendor/distlib/manifest.py | 25 +- .../pip/_vendor/distlib/markers.py | 44 +- .../pip/_vendor/distlib/metadata.py | 191 +- .../pip/_vendor/distlib/scripts.py | 108 +- .../site-packages/pip/_vendor/distlib/util.py | 250 +- .../pip/_vendor/distlib/version.py | 39 +- .../pip/_vendor/distlib/wheel.py | 174 +- .../__pycache__/__init__.cpython-310.pyc | Bin 915 -> 909 bytes .../__pycache__/__main__.cpython-310.pyc | Bin 269 -> 263 bytes .../distro/__pycache__/distro.cpython-310.pyc | Bin 42063 -> 42146 bytes .../pip/_vendor/distro/distro.py | 12 +- .../site-packages/pip/_vendor/distro/py.typed | 0 .../pip/_vendor/idna/__init__.py | 3 +- .../idna/__pycache__/__init__.cpython-310.pyc | Bin 847 -> 846 bytes .../idna/__pycache__/codec.cpython-310.pyc | Bin 2818 -> 3267 bytes .../idna/__pycache__/compat.cpython-310.pyc | Bin 747 -> 749 bytes .../idna/__pycache__/core.cpython-310.pyc | Bin 9676 -> 9665 bytes .../idna/__pycache__/idnadata.cpython-310.pyc | Bin 38383 -> 194442 bytes .../__pycache__/intranges.cpython-310.pyc | Bin 1984 -> 1978 bytes .../__pycache__/package_data.cpython-310.pyc | Bin 211 -> 206 bytes .../__pycache__/uts46data.cpython-310.pyc | Bin 152398 -> 152370 bytes .../site-packages/pip/_vendor/idna/codec.py | 86 +- .../site-packages/pip/_vendor/idna/compat.py | 10 +- .../site-packages/pip/_vendor/idna/core.py | 295 +- .../pip/_vendor/idna/idnadata.py | 5596 ++++-- .../pip/_vendor/idna/intranges.py | 11 +- .../pip/_vendor/idna/package_data.py | 3 +- .../site-packages/pip/_vendor/idna/py.typed | 0 .../pip/_vendor/idna/uts46data.py | 16441 ++++++++-------- .../pip/_vendor/msgpack/__init__.py | 22 +- .../__pycache__/__init__.cpython-310.pyc | Bin 1445 -> 1391 bytes .../__pycache__/exceptions.cpython-310.pyc | Bin 1808 -> 1802 bytes .../msgpack/__pycache__/ext.cpython-310.pyc | Bin 6316 -> 6083 bytes .../__pycache__/fallback.cpython-310.pyc | Bin 25483 -> 23765 bytes .../site-packages/pip/_vendor/msgpack/ext.py | 61 +- .../pip/_vendor/msgpack/fallback.py | 227 +- .../pip/_vendor/packaging/__about__.py | 26 - .../pip/_vendor/packaging/__init__.py | 30 +- .../__pycache__/__about__.cpython-310.pyc | Bin 590 -> 0 bytes .../__pycache__/__init__.cpython-310.pyc | Bin 446 -> 517 bytes .../__pycache__/_elffile.cpython-310.pyc | Bin 0 -> 3392 bytes .../__pycache__/_manylinux.cpython-310.pyc | Bin 7300 -> 6582 bytes .../__pycache__/_musllinux.cpython-310.pyc | Bin 4612 -> 3441 bytes .../__pycache__/_parser.cpython-310.pyc | Bin 0 -> 9257 bytes .../__pycache__/_structures.cpython-310.pyc | Bin 2705 -> 2699 bytes .../__pycache__/_tokenizer.cpython-310.pyc | Bin 0 -> 5911 bytes .../__pycache__/markers.cpython-310.pyc | Bin 9287 -> 7878 bytes .../__pycache__/metadata.cpython-310.pyc | Bin 0 -> 18742 bytes .../__pycache__/requirements.cpython-310.pyc | Bin 3975 -> 2911 bytes .../__pycache__/specifiers.cpython-310.pyc | Bin 21527 -> 31409 bytes .../__pycache__/tags.cpython-310.pyc | Bin 12190 -> 15211 bytes .../__pycache__/utils.cpython-310.pyc | Bin 3575 -> 4645 bytes .../__pycache__/version.cpython-310.pyc | Bin 12925 -> 15046 bytes .../pip/_vendor/packaging/_elffile.py | 110 + .../pip/_vendor/packaging/_manylinux.py | 230 +- .../pip/_vendor/packaging/_musllinux.py | 97 +- .../pip/_vendor/packaging/_parser.py | 354 + .../pip/_vendor/packaging/_tokenizer.py | 194 + .../_vendor/packaging/licenses/__init__.py | 145 + .../__pycache__/__init__.cpython-310.pyc | Bin 0 -> 2616 bytes .../__pycache__/_spdx.cpython-310.pyc | Bin 0 -> 40976 bytes .../pip/_vendor/packaging/licenses/_spdx.py | 759 + .../pip/_vendor/packaging/markers.py | 301 +- .../pip/_vendor/packaging/metadata.py | 863 + .../pip/_vendor/packaging/py.typed | 0 .../pip/_vendor/packaging/requirements.py | 149 +- .../pip/_vendor/packaging/specifiers.py | 1000 +- .../pip/_vendor/packaging/tags.py | 276 +- .../pip/_vendor/packaging/utils.py | 129 +- .../pip/_vendor/packaging/version.py | 452 +- .../pip/_vendor/pkg_resources/__init__.py | 1806 +- .../__pycache__/__init__.cpython-310.pyc | Bin 99876 -> 113934 bytes .../__pycache__/py31compat.cpython-310.pyc | Bin 660 -> 0 bytes .../pip/_vendor/pkg_resources/py31compat.py | 23 - .../pip/_vendor/platformdirs/__init__.py | 551 +- .../pip/_vendor/platformdirs/__main__.py | 27 +- .../__pycache__/__init__.cpython-310.pyc | Bin 10585 -> 15851 bytes .../__pycache__/__main__.cpython-310.pyc | Bin 1236 -> 1397 bytes .../__pycache__/android.cpython-310.pyc | Bin 4326 -> 7405 bytes .../__pycache__/api.cpython-310.pyc | Bin 5202 -> 10201 bytes .../__pycache__/macos.cpython-310.pyc | Bin 3190 -> 6519 bytes .../__pycache__/unix.cpython-310.pyc | Bin 6892 -> 10515 bytes .../__pycache__/version.cpython-310.pyc | Bin 290 -> 512 bytes .../__pycache__/windows.cpython-310.pyc | Bin 6510 -> 9085 bytes .../pip/_vendor/platformdirs/android.py | 179 +- .../pip/_vendor/platformdirs/api.py | 188 +- .../pip/_vendor/platformdirs/macos.py | 112 +- .../pip/_vendor/platformdirs/py.typed | 0 .../pip/_vendor/platformdirs/unix.py | 216 +- .../pip/_vendor/platformdirs/version.py | 16 +- .../pip/_vendor/platformdirs/windows.py | 160 +- .../pip/_vendor/pygments/__init__.py | 24 +- .../pip/_vendor/pygments/__main__.py | 2 +- .../__pycache__/__init__.cpython-310.pyc | Bin 2948 -> 2929 bytes .../__pycache__/__main__.cpython-310.pyc | Bin 588 -> 582 bytes .../__pycache__/cmdline.cpython-310.pyc | Bin 15603 -> 15546 bytes .../__pycache__/console.cpython-310.pyc | Bin 1883 -> 1884 bytes .../__pycache__/filter.cpython-310.pyc | Bin 2654 -> 2644 bytes .../__pycache__/formatter.cpython-310.pyc | Bin 3010 -> 4095 bytes .../__pycache__/lexer.cpython-310.pyc | Bin 24371 -> 26518 bytes .../__pycache__/modeline.cpython-310.pyc | Bin 1192 -> 1187 bytes .../__pycache__/plugin.cpython-310.pyc | Bin 2520 -> 1943 bytes .../__pycache__/regexopt.cpython-310.pyc | Bin 2956 -> 2950 bytes .../__pycache__/scanner.cpython-310.pyc | Bin 3558 -> 3552 bytes .../__pycache__/sphinxext.cpython-310.pyc | Bin 4542 -> 7761 bytes .../__pycache__/style.cpython-310.pyc | Bin 4579 -> 4608 bytes .../__pycache__/token.cpython-310.pyc | Bin 4671 -> 4690 bytes .../__pycache__/unistring.cpython-310.pyc | Bin 31205 -> 31224 bytes .../pygments/__pycache__/util.cpython-310.pyc | Bin 9147 -> 10056 bytes .../pip/_vendor/pygments/cmdline.py | 28 +- .../pip/_vendor/pygments/console.py | 10 +- .../pip/_vendor/pygments/filter.py | 5 +- .../pip/_vendor/pygments/filters/__init__.py | 8 +- .../__pycache__/__init__.cpython-310.pyc | Bin 29608 -> 29616 bytes .../pip/_vendor/pygments/formatter.py | 57 +- .../_vendor/pygments/formatters/__init__.py | 66 +- .../__pycache__/__init__.cpython-310.pyc | Bin 4370 -> 5013 bytes .../__pycache__/_mapping.cpython-310.pyc | Bin 3930 -> 3994 bytes .../__pycache__/bbcode.cpython-310.pyc | Bin 3085 -> 3089 bytes .../__pycache__/groff.cpython-310.pyc | Bin 4398 -> 4416 bytes .../__pycache__/html.cpython-310.pyc | Bin 29130 -> 29368 bytes .../__pycache__/img.cpython-310.pyc | Bin 17562 -> 18398 bytes .../__pycache__/irc.cpython-310.pyc | Bin 4588 -> 4092 bytes .../__pycache__/latex.cpython-310.pyc | Bin 13798 -> 13886 bytes .../__pycache__/other.cpython-310.pyc | Bin 4804 -> 4804 bytes .../__pycache__/pangomarkup.cpython-310.pyc | Bin 2104 -> 2108 bytes .../__pycache__/rtf.cpython-310.pyc | Bin 4134 -> 8854 bytes .../__pycache__/svg.cpython-310.pyc | Bin 6332 -> 6313 bytes .../__pycache__/terminal.cpython-310.pyc | Bin 3999 -> 3993 bytes .../__pycache__/terminal256.cpython-310.pyc | Bin 9249 -> 9243 bytes .../_vendor/pygments/formatters/_mapping.py | 4 +- .../pip/_vendor/pygments/formatters/bbcode.py | 4 +- .../pip/_vendor/pygments/formatters/groff.py | 8 +- .../pip/_vendor/pygments/formatters/html.py | 104 +- .../pip/_vendor/pygments/formatters/img.py | 62 +- .../pip/_vendor/pygments/formatters/irc.py | 37 +- .../pip/_vendor/pygments/formatters/latex.py | 51 +- .../pip/_vendor/pygments/formatters/other.py | 7 +- .../pygments/formatters/pangomarkup.py | 4 +- .../pip/_vendor/pygments/formatters/rtf.py | 251 +- .../pip/_vendor/pygments/formatters/svg.py | 37 +- .../_vendor/pygments/formatters/terminal.py | 2 +- .../pygments/formatters/terminal256.py | 2 +- .../pip/_vendor/pygments/lexer.py | 175 +- .../pip/_vendor/pygments/lexers/__init__.py | 109 +- .../__pycache__/__init__.cpython-310.pyc | Bin 9056 -> 10055 bytes .../__pycache__/_mapping.cpython-310.pyc | Bin 58883 -> 64898 bytes .../lexers/__pycache__/python.cpython-310.pyc | Bin 29842 -> 30207 bytes .../pip/_vendor/pygments/lexers/_mapping.py | 84 +- .../pip/_vendor/pygments/lexers/python.py | 246 +- .../pip/_vendor/pygments/modeline.py | 8 +- .../pip/_vendor/pygments/plugin.py | 22 +- .../pip/_vendor/pygments/regexopt.py | 2 +- .../pip/_vendor/pygments/scanner.py | 2 +- .../pip/_vendor/pygments/sphinxext.py | 100 +- .../pip/_vendor/pygments/style.py | 10 +- .../pip/_vendor/pygments/styles/__init__.py | 88 +- .../__pycache__/__init__.cpython-310.pyc | Bin 3371 -> 2056 bytes .../__pycache__/_mapping.cpython-310.pyc | Bin 0 -> 3306 bytes .../pip/_vendor/pygments/styles/_mapping.py | 54 + .../pip/_vendor/pygments/token.py | 3 +- .../pip/_vendor/pygments/unistring.py | 14 +- .../pip/_vendor/pygments/util.py | 60 +- .../pip/_vendor/pyparsing/__init__.py | 331 - .../__pycache__/__init__.cpython-310.pyc | Bin 7129 -> 0 bytes .../__pycache__/actions.cpython-310.pyc | Bin 7179 -> 0 bytes .../__pycache__/common.cpython-310.pyc | Bin 10105 -> 0 bytes .../__pycache__/core.cpython-310.pyc | Bin 176456 -> 0 bytes .../__pycache__/exceptions.cpython-310.pyc | Bin 9063 -> 0 bytes .../__pycache__/helpers.cpython-310.pyc | Bin 35340 -> 0 bytes .../__pycache__/results.cpython-310.pyc | Bin 24781 -> 0 bytes .../__pycache__/testing.cpython-310.pyc | Bin 12097 -> 0 bytes .../__pycache__/unicode.cpython-310.pyc | Bin 10058 -> 0 bytes .../__pycache__/util.cpython-310.pyc | Bin 8605 -> 0 bytes .../pip/_vendor/pyparsing/actions.py | 207 - .../pip/_vendor/pyparsing/common.py | 424 - .../pip/_vendor/pyparsing/core.py | 5814 ------ .../pip/_vendor/pyparsing/diagram/__init__.py | 642 - .../__pycache__/__init__.cpython-310.pyc | Bin 16581 -> 0 bytes .../pip/_vendor/pyparsing/exceptions.py | 267 - .../pip/_vendor/pyparsing/helpers.py | 1088 - .../pip/_vendor/pyparsing/results.py | 760 - .../pip/_vendor/pyparsing/testing.py | 331 - .../pip/_vendor/pyparsing/unicode.py | 352 - .../pip/_vendor/pyparsing/util.py | 235 - .../pip/_vendor/pyproject_hooks/__init__.py | 26 +- .../__pycache__/__init__.cpython-310.pyc | Bin 586 -> 694 bytes .../__pycache__/_compat.cpython-310.pyc | Bin 337 -> 0 bytes .../__pycache__/_impl.cpython-310.pyc | Bin 11389 -> 14088 bytes .../pip/_vendor/pyproject_hooks/_compat.py | 8 - .../pip/_vendor/pyproject_hooks/_impl.py | 276 +- .../pyproject_hooks/_in_process/__init__.py | 7 +- .../__pycache__/__init__.cpython-310.pyc | Bin 824 -> 818 bytes .../__pycache__/_in_process.cpython-310.pyc | Bin 9706 -> 10479 bytes .../_in_process/_in_process.py | 194 +- .../pip/_vendor/pyproject_hooks/py.typed | 0 .../pip/_vendor/requests/__init__.py | 17 +- .../__pycache__/__init__.cpython-310.pyc | Bin 4016 -> 3866 bytes .../__pycache__/__version__.cpython-310.pyc | Bin 550 -> 544 bytes .../_internal_utils.cpython-310.pyc | Bin 1565 -> 1620 bytes .../__pycache__/adapters.cpython-310.pyc | Bin 16899 -> 22106 bytes .../requests/__pycache__/api.cpython-310.pyc | Bin 6654 -> 6720 bytes .../requests/__pycache__/auth.cpython-310.pyc | Bin 8122 -> 8116 bytes .../__pycache__/certs.cpython-310.pyc | Bin 809 -> 633 bytes .../__pycache__/compat.cpython-310.pyc | Bin 1371 -> 1512 bytes .../__pycache__/cookies.cpython-310.pyc | Bin 18691 -> 18715 bytes .../__pycache__/exceptions.cpython-310.pyc | Bin 5741 -> 6235 bytes .../requests/__pycache__/help.cpython-310.pyc | Bin 2867 -> 2810 bytes .../__pycache__/hooks.cpython-310.pyc | Bin 994 -> 988 bytes .../__pycache__/models.cpython-310.pyc | Bin 24266 -> 24282 bytes .../__pycache__/packages.cpython-310.pyc | Bin 508 -> 734 bytes .../__pycache__/sessions.cpython-310.pyc | Bin 19574 -> 19718 bytes .../__pycache__/status_codes.cpython-310.pyc | Bin 4673 -> 4738 bytes .../__pycache__/structures.cpython-310.pyc | Bin 4438 -> 4432 bytes .../__pycache__/utils.cpython-310.pyc | Bin 24336 -> 24632 bytes .../pip/_vendor/requests/__version__.py | 6 +- .../pip/_vendor/requests/_internal_utils.py | 6 +- .../pip/_vendor/requests/adapters.py | 297 +- .../site-packages/pip/_vendor/requests/api.py | 8 +- .../pip/_vendor/requests/auth.py | 1 - .../pip/_vendor/requests/certs.py | 9 +- .../pip/_vendor/requests/compat.py | 15 +- .../pip/_vendor/requests/cookies.py | 16 +- .../pip/_vendor/requests/exceptions.py | 10 + .../pip/_vendor/requests/help.py | 6 +- .../pip/_vendor/requests/models.py | 13 +- .../pip/_vendor/requests/packages.py | 13 +- .../pip/_vendor/requests/sessions.py | 14 +- .../pip/_vendor/requests/status_codes.py | 10 +- .../pip/_vendor/requests/utils.py | 50 +- .../pip/_vendor/resolvelib/__init__.py | 2 +- .../__pycache__/__init__.cpython-310.pyc | Bin 606 -> 600 bytes .../__pycache__/providers.cpython-310.pyc | Bin 6657 -> 6650 bytes .../__pycache__/reporters.cpython-310.pyc | Bin 2577 -> 2603 bytes .../__pycache__/resolvers.cpython-310.pyc | Bin 15130 -> 17431 bytes .../__pycache__/structs.cpython-310.pyc | Bin 7163 -> 7259 bytes .../__pycache__/__init__.cpython-310.pyc | Bin 201 -> 195 bytes .../collections_abc.cpython-310.pyc | Bin 377 -> 371 bytes .../pip/_vendor/resolvelib/providers.py | 14 +- .../pip/_vendor/resolvelib/py.typed | 0 .../pip/_vendor/resolvelib/reporters.py | 2 +- .../pip/_vendor/resolvelib/resolvers.py | 93 +- .../pip/_vendor/resolvelib/structs.py | 11 +- .../pip/_vendor/rich/__main__.py | 1 - .../rich/__pycache__/__init__.cpython-310.pyc | Bin 6113 -> 6107 bytes .../rich/__pycache__/__main__.cpython-310.pyc | Bin 7183 -> 7177 bytes .../__pycache__/_cell_widths.cpython-310.pyc | Bin 7814 -> 7859 bytes .../__pycache__/_emoji_codes.cpython-310.pyc | Bin 360054 -> 360048 bytes .../_emoji_replace.cpython-310.pyc | Bin 1194 -> 1188 bytes .../_export_format.cpython-310.pyc | Bin 2311 -> 2319 bytes .../__pycache__/_extension.cpython-310.pyc | Bin 495 -> 489 bytes .../rich/__pycache__/_fileno.cpython-310.pyc | Bin 0 -> 782 bytes .../rich/__pycache__/_inspect.cpython-310.pyc | Bin 8672 -> 8616 bytes .../__pycache__/_log_render.cpython-310.pyc | Bin 2640 -> 2634 bytes .../rich/__pycache__/_loop.cpython-310.pyc | Bin 1292 -> 1286 bytes .../__pycache__/_null_file.cpython-310.pyc | Bin 3603 -> 3237 bytes .../__pycache__/_palettes.cpython-310.pyc | Bin 5097 -> 5091 bytes .../rich/__pycache__/_pick.cpython-310.pyc | Bin 640 -> 634 bytes .../rich/__pycache__/_ratio.cpython-310.pyc | Bin 5157 -> 5151 bytes .../__pycache__/_spinners.cpython-310.pyc | Bin 12271 -> 12265 bytes .../rich/__pycache__/_stack.cpython-310.pyc | Bin 838 -> 832 bytes .../rich/__pycache__/_timer.cpython-310.pyc | Bin 687 -> 681 bytes .../_win32_console.cpython-310.pyc | Bin 19007 -> 18961 bytes .../rich/__pycache__/_windows.cpython-310.pyc | Bin 1789 -> 1783 bytes .../_windows_renderer.cpython-310.pyc | Bin 2043 -> 2037 bytes .../rich/__pycache__/_wrap.cpython-310.pyc | Bin 1551 -> 2467 bytes .../rich/__pycache__/abc.cpython-310.pyc | Bin 1314 -> 1308 bytes .../rich/__pycache__/align.cpython-310.pyc | Bin 7949 -> 8040 bytes .../rich/__pycache__/ansi.cpython-310.pyc | Bin 5953 -> 5989 bytes .../rich/__pycache__/bar.cpython-310.pyc | Bin 2983 -> 2977 bytes .../rich/__pycache__/box.cpython-310.pyc | Bin 8403 -> 8397 bytes .../rich/__pycache__/cells.cpython-310.pyc | Bin 3973 -> 4268 bytes .../rich/__pycache__/color.cpython-310.pyc | Bin 17594 -> 17710 bytes .../__pycache__/color_triplet.cpython-310.pyc | Bin 1437 -> 1431 bytes .../rich/__pycache__/columns.cpython-310.pyc | Bin 6197 -> 6191 bytes .../rich/__pycache__/console.cpython-310.pyc | Bin 82571 -> 83545 bytes .../__pycache__/constrain.cpython-310.pyc | Bin 1754 -> 1748 bytes .../__pycache__/containers.cpython-310.pyc | Bin 6486 -> 6485 bytes .../rich/__pycache__/control.cpython-310.pyc | Bin 8159 -> 8153 bytes .../default_styles.cpython-310.pyc | Bin 6198 -> 6291 bytes .../rich/__pycache__/diagnose.cpython-310.pyc | Bin 1221 -> 1215 bytes .../rich/__pycache__/emoji.cpython-310.pyc | Bin 3267 -> 3261 bytes .../rich/__pycache__/errors.cpython-310.pyc | Bin 1527 -> 1521 bytes .../__pycache__/file_proxy.cpython-310.pyc | Bin 2260 -> 2394 bytes .../rich/__pycache__/filesize.cpython-310.pyc | Bin 2617 -> 2612 bytes .../__pycache__/highlighter.cpython-310.pyc | Bin 8060 -> 8055 bytes .../rich/__pycache__/json.cpython-310.pyc | Bin 4747 -> 4725 bytes .../rich/__pycache__/jupyter.cpython-310.pyc | Bin 3999 -> 3993 bytes .../rich/__pycache__/layout.cpython-310.pyc | Bin 14647 -> 14641 bytes .../rich/__pycache__/live.cpython-310.pyc | Bin 11624 -> 11670 bytes .../__pycache__/live_render.cpython-310.pyc | Bin 3402 -> 3396 bytes .../rich/__pycache__/logging.cpython-310.pyc | Bin 9908 -> 10318 bytes .../rich/__pycache__/markup.cpython-310.pyc | Bin 5941 -> 6150 bytes .../rich/__pycache__/measure.cpython-310.pyc | Bin 5076 -> 5070 bytes .../rich/__pycache__/padding.cpython-310.pyc | Bin 4482 -> 4419 bytes .../rich/__pycache__/pager.cpython-310.pyc | Bin 1476 -> 1470 bytes .../rich/__pycache__/palette.cpython-310.pyc | Bin 3708 -> 3702 bytes .../rich/__pycache__/panel.cpython-310.pyc | Bin 7428 -> 7943 bytes .../rich/__pycache__/pretty.cpython-310.pyc | Bin 27920 -> 27803 bytes .../rich/__pycache__/progress.cpython-310.pyc | Bin 54028 -> 54533 bytes .../__pycache__/progress_bar.cpython-310.pyc | Bin 6911 -> 6905 bytes .../rich/__pycache__/prompt.cpython-310.pyc | Bin 11299 -> 12189 bytes .../rich/__pycache__/protocol.cpython-310.pyc | Bin 1352 -> 1346 bytes .../rich/__pycache__/region.cpython-310.pyc | Bin 527 -> 521 bytes .../rich/__pycache__/repr.cpython-310.pyc | Bin 4100 -> 4090 bytes .../rich/__pycache__/rule.cpython-310.pyc | Bin 4309 -> 3937 bytes .../rich/__pycache__/scope.cpython-310.pyc | Bin 2989 -> 2983 bytes .../rich/__pycache__/screen.cpython-310.pyc | Bin 1879 -> 1873 bytes .../rich/__pycache__/segment.cpython-310.pyc | Bin 20757 -> 21207 bytes .../rich/__pycache__/spinner.cpython-310.pyc | Bin 4417 -> 4407 bytes .../rich/__pycache__/status.cpython-310.pyc | Bin 4593 -> 4587 bytes .../rich/__pycache__/style.cpython-310.pyc | Bin 20842 -> 21322 bytes .../rich/__pycache__/styled.cpython-310.pyc | Bin 1763 -> 1757 bytes .../rich/__pycache__/syntax.cpython-310.pyc | Bin 25677 -> 26160 bytes .../rich/__pycache__/table.cpython-310.pyc | Bin 29942 -> 30180 bytes .../terminal_theme.cpython-310.pyc | Bin 3016 -> 3010 bytes .../rich/__pycache__/text.cpython-310.pyc | Bin 40191 -> 41773 bytes .../rich/__pycache__/theme.cpython-310.pyc | Bin 4700 -> 4826 bytes .../rich/__pycache__/themes.cpython-310.pyc | Bin 293 -> 287 bytes .../__pycache__/traceback.cpython-310.pyc | Bin 19625 -> 22647 bytes .../rich/__pycache__/tree.cpython-310.pyc | Bin 7334 -> 7635 bytes .../pip/_vendor/rich/_cell_widths.py | 367 +- .../pip/_vendor/rich/_export_format.py | 6 +- .../site-packages/pip/_vendor/rich/_fileno.py | 24 + .../pip/_vendor/rich/_inspect.py | 2 - .../pip/_vendor/rich/_null_file.py | 16 +- .../site-packages/pip/_vendor/rich/_ratio.py | 1 - .../pip/_vendor/rich/_win32_console.py | 7 +- .../pip/_vendor/rich/_windows.py | 1 - .../site-packages/pip/_vendor/rich/_wrap.py | 73 +- .../site-packages/pip/_vendor/rich/align.py | 5 +- .../site-packages/pip/_vendor/rich/ansi.py | 4 + .../Lib/site-packages/pip/_vendor/rich/bar.py | 1 - .../Lib/site-packages/pip/_vendor/rich/box.py | 345 +- .../site-packages/pip/_vendor/rich/cells.py | 108 +- .../site-packages/pip/_vendor/rich/color.py | 21 +- .../site-packages/pip/_vendor/rich/console.py | 145 +- .../pip/_vendor/rich/containers.py | 8 +- .../pip/_vendor/rich/default_styles.py | 13 +- .../pip/_vendor/rich/file_proxy.py | 5 +- .../pip/_vendor/rich/filesize.py | 3 +- .../pip/_vendor/rich/highlighter.py | 4 +- .../site-packages/pip/_vendor/rich/json.py | 5 +- .../site-packages/pip/_vendor/rich/layout.py | 3 +- .../site-packages/pip/_vendor/rich/live.py | 6 +- .../pip/_vendor/rich/live_render.py | 1 - .../site-packages/pip/_vendor/rich/logging.py | 8 + .../site-packages/pip/_vendor/rich/markup.py | 7 +- .../site-packages/pip/_vendor/rich/padding.py | 10 +- .../site-packages/pip/_vendor/rich/panel.py | 24 +- .../site-packages/pip/_vendor/rich/pretty.py | 161 +- .../pip/_vendor/rich/progress.py | 58 +- .../pip/_vendor/rich/progress_bar.py | 3 +- .../site-packages/pip/_vendor/rich/prompt.py | 34 +- .../site-packages/pip/_vendor/rich/py.typed | 0 .../site-packages/pip/_vendor/rich/repr.py | 4 +- .../site-packages/pip/_vendor/rich/rule.py | 6 +- .../site-packages/pip/_vendor/rich/segment.py | 55 +- .../site-packages/pip/_vendor/rich/spinner.py | 24 +- .../site-packages/pip/_vendor/rich/status.py | 1 - .../site-packages/pip/_vendor/rich/style.py | 23 + .../site-packages/pip/_vendor/rich/syntax.py | 51 +- .../site-packages/pip/_vendor/rich/table.py | 27 +- .../site-packages/pip/_vendor/rich/text.py | 140 +- .../site-packages/pip/_vendor/rich/theme.py | 9 +- .../pip/_vendor/rich/traceback.py | 236 +- .../site-packages/pip/_vendor/rich/tree.py | 26 +- .../Lib/site-packages/pip/_vendor/six.py | 998 - .../pip/_vendor/tenacity/__init__.py | 519 - .../__pycache__/__init__.cpython-310.pyc | Bin 16472 -> 0 bytes .../__pycache__/_asyncio.cpython-310.pyc | Bin 2614 -> 0 bytes .../__pycache__/_utils.cpython-310.pyc | Bin 1227 -> 0 bytes .../__pycache__/after.cpython-310.pyc | Bin 1231 -> 0 bytes .../__pycache__/before.cpython-310.pyc | Bin 1109 -> 0 bytes .../__pycache__/before_sleep.cpython-310.pyc | Bin 1411 -> 0 bytes .../tenacity/__pycache__/nap.cpython-310.pyc | Bin 1199 -> 0 bytes .../__pycache__/retry.cpython-310.pyc | Bin 9361 -> 0 bytes .../tenacity/__pycache__/stop.cpython-310.pyc | Bin 4017 -> 0 bytes .../__pycache__/tornadoweb.cpython-310.pyc | Bin 1764 -> 0 bytes .../tenacity/__pycache__/wait.cpython-310.pyc | Bin 9360 -> 0 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 | 240 - .../pip/_vendor/tenacity/stop.py | 96 - .../pip/_vendor/tenacity/tornadoweb.py | 59 - .../pip/_vendor/tenacity/wait.py | 232 - .../pip/_vendor/tomli/__init__.py | 5 +- .../__pycache__/__init__.cpython-310.pyc | Bin 355 -> 319 bytes .../tomli/__pycache__/_parser.cpython-310.pyc | Bin 17069 -> 18593 bytes .../tomli/__pycache__/_re.cpython-310.pyc | Bin 2901 -> 2989 bytes .../tomli/__pycache__/_types.cpython-310.pyc | Bin 325 -> 319 bytes .../pip/_vendor/tomli/_parser.py | 237 +- .../site-packages/pip/_vendor/tomli/_re.py | 15 +- .../site-packages/pip/_vendor/tomli/py.typed | 1 + .../pip/_vendor/truststore/__init__.py | 36 + .../__pycache__/__init__.cpython-310.pyc | Bin 0 -> 963 bytes .../__pycache__/_api.cpython-310.pyc | Bin 0 -> 10396 bytes .../__pycache__/_macos.cpython-310.pyc | Bin 0 -> 10088 bytes .../__pycache__/_openssl.cpython-310.pyc | Bin 0 -> 1476 bytes .../_ssl_constants.cpython-310.pyc | Bin 0 -> 790 bytes .../__pycache__/_windows.cpython-310.pyc | Bin 0 -> 10570 bytes .../pip/_vendor/truststore/_api.py | 316 + .../pip/_vendor/truststore/_macos.py | 571 + .../pip/_vendor/truststore/_openssl.py | 66 + .../pip/_vendor/truststore/_ssl_constants.py | 31 + .../pip/_vendor/truststore/_windows.py | 567 + .../pip/_vendor/truststore/py.typed | 0 .../pip/_vendor/typing_extensions.py | 2666 ++- .../__pycache__/__init__.cpython-310.pyc | Bin 2509 -> 2503 bytes .../__pycache__/_collections.cpython-310.pyc | Bin 10863 -> 11348 bytes .../__pycache__/_version.cpython-310.pyc | Bin 214 -> 208 bytes .../__pycache__/connection.cpython-310.pyc | Bin 13635 -> 13695 bytes .../connectionpool.cpython-310.pyc | Bin 25394 -> 25935 bytes .../__pycache__/exceptions.cpython-310.pyc | Bin 10994 -> 10988 bytes .../__pycache__/fields.cpython-310.pyc | Bin 8183 -> 8177 bytes .../__pycache__/filepost.cpython-310.pyc | Bin 2750 -> 2744 bytes .../__pycache__/poolmanager.cpython-310.pyc | Bin 15219 -> 15154 bytes .../__pycache__/request.cpython-310.pyc | Bin 5626 -> 6376 bytes .../__pycache__/response.cpython-310.pyc | Bin 22500 -> 22494 bytes .../pip/_vendor/urllib3/_collections.py | 18 + .../pip/_vendor/urllib3/_version.py | 2 +- .../pip/_vendor/urllib3/connection.py | 9 +- .../pip/_vendor/urllib3/connectionpool.py | 52 +- .../__pycache__/__init__.cpython-310.pyc | Bin 199 -> 193 bytes .../_appengine_environ.cpython-310.pyc | Bin 1379 -> 1373 bytes .../__pycache__/appengine.cpython-310.pyc | Bin 8196 -> 8190 bytes .../__pycache__/ntlmpool.cpython-310.pyc | Bin 3623 -> 3617 bytes .../__pycache__/pyopenssl.cpython-310.pyc | Bin 15809 -> 15803 bytes .../securetransport.cpython-310.pyc | Bin 21941 -> 21932 bytes .../contrib/__pycache__/socks.cpython-310.pyc | Bin 5601 -> 5595 bytes .../__pycache__/__init__.cpython-310.pyc | Bin 216 -> 210 bytes .../__pycache__/bindings.cpython-310.pyc | Bin 10712 -> 10706 bytes .../__pycache__/low_level.cpython-310.pyc | Bin 9099 -> 9093 bytes .../urllib3/contrib/securetransport.py | 3 +- .../__pycache__/__init__.cpython-310.pyc | Bin 200 -> 194 bytes .../packages/__pycache__/six.cpython-310.pyc | Bin 27654 -> 27648 bytes .../__pycache__/__init__.cpython-310.pyc | Bin 210 -> 204 bytes .../__pycache__/makefile.cpython-310.pyc | Bin 1310 -> 1304 bytes .../weakref_finalize.cpython-310.pyc | Bin 0 -> 4902 bytes .../packages/backports/weakref_finalize.py | 155 + .../pip/_vendor/urllib3/poolmanager.py | 9 +- .../pip/_vendor/urllib3/request.py | 21 + .../util/__pycache__/__init__.cpython-310.pyc | Bin 1109 -> 1103 bytes .../__pycache__/connection.cpython-310.pyc | Bin 3437 -> 3431 bytes .../util/__pycache__/proxy.cpython-310.pyc | Bin 1342 -> 1336 bytes .../util/__pycache__/queue.cpython-310.pyc | Bin 1064 -> 1058 bytes .../util/__pycache__/request.cpython-310.pyc | Bin 3371 -> 3365 bytes .../util/__pycache__/response.cpython-310.pyc | Bin 2357 -> 2351 bytes .../util/__pycache__/retry.cpython-310.pyc | Bin 16147 -> 16178 bytes .../util/__pycache__/ssl_.cpython-310.pyc | Bin 11309 -> 11545 bytes .../ssl_match_hostname.cpython-310.pyc | Bin 3261 -> 3255 bytes .../__pycache__/ssltransport.cpython-310.pyc | Bin 7399 -> 7393 bytes .../util/__pycache__/timeout.cpython-310.pyc | Bin 8933 -> 9130 bytes .../util/__pycache__/url.cpython-310.pyc | Bin 10702 -> 10707 bytes .../util/__pycache__/wait.cpython-310.pyc | Bin 3093 -> 3087 bytes .../pip/_vendor/urllib3/util/retry.py | 4 +- .../pip/_vendor/urllib3/util/ssl_.py | 17 +- .../pip/_vendor/urllib3/util/timeout.py | 9 +- .../pip/_vendor/urllib3/util/url.py | 4 +- .../Lib/site-packages/pip/_vendor/vendor.txt | 41 +- .../pip/_vendor/webencodings/__init__.py | 342 - .../__pycache__/__init__.cpython-310.pyc | Bin 9746 -> 0 bytes .../__pycache__/labels.cpython-310.pyc | Bin 5236 -> 0 bytes .../__pycache__/mklabels.cpython-310.pyc | Bin 1941 -> 0 bytes .../__pycache__/tests.cpython-310.pyc | Bin 5043 -> 0 bytes .../x_user_defined.cpython-310.pyc | Bin 2592 -> 0 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 - gestao_raul/Lib/site-packages/pwa/__init__.py | 0 .../pwa/__pycache__/__init__.cpython-310.pyc | Bin 0 -> 169 bytes .../__pycache__/app_settings.cpython-310.pyc | Bin 0 -> 3396 bytes .../pwa/__pycache__/apps.cpython-310.pyc | Bin 0 -> 385 bytes .../pwa/__pycache__/urls.cpython-310.pyc | Bin 0 -> 452 bytes .../pwa/__pycache__/views.cpython-310.pyc | Bin 0 -> 1105 bytes .../Lib/site-packages/pwa/app_settings.py | 99 + gestao_raul/Lib/site-packages/pwa/apps.py | 5 + .../pwa/static/css/django-pwa-app.css | 5 + .../glyphicons-halflings-regular.eot | Bin 0 -> 20127 bytes .../glyphicons-halflings-regular.svg | 288 + .../glyphicons-halflings-regular.ttf | Bin 0 -> 45404 bytes .../glyphicons-halflings-regular.woff | Bin 0 -> 23424 bytes .../glyphicons-halflings-regular.woff2 | Bin 0 -> 18028 bytes .../pwa/static/images/icons/Thumbs.db | Bin 0 -> 76288 bytes .../pwa/static/images/icons/icon-128x128.png | Bin 0 -> 6754 bytes .../pwa/static/images/icons/icon-144x144.png | Bin 0 -> 7672 bytes .../pwa/static/images/icons/icon-152x152.png | Bin 0 -> 8134 bytes .../pwa/static/images/icons/icon-192x192.png | Bin 0 -> 10580 bytes .../pwa/static/images/icons/icon-384x384.png | Bin 0 -> 24415 bytes .../pwa/static/images/icons/icon-512x512.png | Bin 0 -> 22508 bytes .../pwa/static/images/icons/icon-72x72.png | Bin 0 -> 3252 bytes .../pwa/static/images/icons/icon-96x96.png | Bin 0 -> 4693 bytes .../static/images/icons/splash-1125x2436.png | Bin 0 -> 36047 bytes .../static/images/icons/splash-1242x2208.png | Bin 0 -> 30134 bytes .../static/images/icons/splash-1242x2688.png | Bin 0 -> 33765 bytes .../static/images/icons/splash-1536x2048.png | Bin 0 -> 31551 bytes .../static/images/icons/splash-1668x2224.png | Bin 0 -> 34491 bytes .../static/images/icons/splash-1668x2388.png | Bin 0 -> 35903 bytes .../static/images/icons/splash-2048x2732.png | Bin 0 -> 43341 bytes .../static/images/icons/splash-640x1136.png | Bin 0 -> 19254 bytes .../static/images/icons/splash-750x1334.png | Bin 0 -> 20970 bytes .../static/images/icons/splash-828x1792.png | Bin 0 -> 24221 bytes .../site-packages/pwa/templates/manifest.json | 18 + .../site-packages/pwa/templates/offline.html | 11 + .../Lib/site-packages/pwa/templates/pwa.html | 59 + .../pwa/templates/serviceworker.js | 63 + .../pwa/templatetags/__init__.py | 0 .../__pycache__/__init__.cpython-310.pyc | Bin 0 -> 182 bytes .../__pycache__/pwa.cpython-310.pyc | Bin 0 -> 1094 bytes .../Lib/site-packages/pwa/templatetags/pwa.py | 25 + gestao_raul/Lib/site-packages/pwa/urls.py | 10 + gestao_raul/Lib/site-packages/pwa/views.py | 29 + .../pyOpenSSL-24.3.0.dist-info/INSTALLER | 1 + .../pyOpenSSL-24.3.0.dist-info/LICENSE | 202 + .../pyOpenSSL-24.3.0.dist-info/METADATA | 432 + .../pyOpenSSL-24.3.0.dist-info/RECORD | 22 + .../pyOpenSSL-24.3.0.dist-info/REQUESTED | 0 .../pyOpenSSL-24.3.0.dist-info/WHEEL | 5 + .../pyOpenSSL-24.3.0.dist-info/top_level.txt | 1 + .../pycparser-2.22.dist-info/INSTALLER | 1 + .../pycparser-2.22.dist-info/LICENSE | 27 + .../pycparser-2.22.dist-info/METADATA | 28 + .../pycparser-2.22.dist-info/RECORD | 42 + .../pycparser-2.22.dist-info/REQUESTED | 0 .../pycparser-2.22.dist-info/WHEEL | 5 + .../pycparser-2.22.dist-info/top_level.txt | 1 + .../Lib/site-packages/pycparser/__init__.py | 93 + .../__pycache__/__init__.cpython-310.pyc | Bin 0 -> 2605 bytes .../__pycache__/_ast_gen.cpython-310.pyc | Bin 0 -> 10202 bytes .../__pycache__/_build_tables.cpython-310.pyc | Bin 0 -> 581 bytes .../ast_transforms.cpython-310.pyc | Bin 0 -> 3777 bytes .../__pycache__/c_ast.cpython-310.pyc | Bin 0 -> 29534 bytes .../__pycache__/c_generator.cpython-310.pyc | Bin 0 -> 17556 bytes .../__pycache__/c_lexer.cpython-310.pyc | Bin 0 -> 12944 bytes .../__pycache__/c_parser.cpython-310.pyc | Bin 0 -> 63357 bytes .../__pycache__/lextab.cpython-310.pyc | Bin 0 -> 6582 bytes .../__pycache__/plyparser.cpython-310.pyc | Bin 0 -> 4687 bytes .../__pycache__/yacctab.cpython-310.pyc | Bin 0 -> 179999 bytes .../Lib/site-packages/pycparser/_ast_gen.py | 336 + .../site-packages/pycparser/_build_tables.py | 40 + .../Lib/site-packages/pycparser/_c_ast.cfg | 195 + .../site-packages/pycparser/ast_transforms.py | 164 + .../Lib/site-packages/pycparser/c_ast.py | 1125 ++ .../site-packages/pycparser/c_generator.py | 502 + .../Lib/site-packages/pycparser/c_lexer.py | 555 + .../Lib/site-packages/pycparser/c_parser.py | 1950 ++ .../Lib/site-packages/pycparser/lextab.py | 10 + .../site-packages/pycparser/ply/__init__.py | 5 + .../ply/__pycache__/__init__.cpython-310.pyc | Bin 0 -> 228 bytes .../ply/__pycache__/cpp.cpython-310.pyc | Bin 0 -> 16099 bytes .../ply/__pycache__/ctokens.cpython-310.pyc | Bin 0 -> 2081 bytes .../ply/__pycache__/lex.cpython-310.pyc | Bin 0 -> 21408 bytes .../ply/__pycache__/yacc.cpython-310.pyc | Bin 0 -> 52651 bytes .../ply/__pycache__/ygen.cpython-310.pyc | Bin 0 -> 1807 bytes .../Lib/site-packages/pycparser/ply/cpp.py | 905 + .../site-packages/pycparser/ply/ctokens.py | 133 + .../Lib/site-packages/pycparser/ply/lex.py | 1099 ++ .../Lib/site-packages/pycparser/ply/yacc.py | 3494 ++++ .../Lib/site-packages/pycparser/ply/ygen.py | 74 + .../Lib/site-packages/pycparser/plyparser.py | 133 + .../Lib/site-packages/pycparser/yacctab.py | 369 + gestao_raul/Lib/site-packages/rust/Cargo.toml | 35 + .../rust/cryptography-cffi/Cargo.toml | 17 + .../rust/cryptography-keepalive/Cargo.toml | 10 + .../rust/cryptography-key-parsing/Cargo.toml | 17 + .../rust/cryptography-openssl/Cargo.toml | 17 + .../cryptography-x509-verification/Cargo.toml | 16 + .../rust/cryptography-x509/Cargo.toml | 11 + .../werkzeug-3.1.3.dist-info/INSTALLER | 1 + .../werkzeug-3.1.3.dist-info/LICENSE.txt | 28 + .../werkzeug-3.1.3.dist-info/METADATA | 99 + .../werkzeug-3.1.3.dist-info/RECORD | 117 + .../werkzeug-3.1.3.dist-info/REQUESTED | 0 .../werkzeug-3.1.3.dist-info/WHEEL | 4 + .../Lib/site-packages/werkzeug/__init__.py | 4 + .../__pycache__/__init__.cpython-310.pyc | Bin 0 -> 322 bytes .../__pycache__/_internal.cpython-310.pyc | Bin 0 -> 7052 bytes .../__pycache__/_reloader.cpython-310.pyc | Bin 0 -> 12900 bytes .../__pycache__/exceptions.cpython-310.pyc | Bin 0 -> 27676 bytes .../__pycache__/formparser.cpython-310.pyc | Bin 0 -> 12812 bytes .../werkzeug/__pycache__/http.cpython-310.pyc | Bin 0 -> 39405 bytes .../__pycache__/local.cpython-310.pyc | Bin 0 -> 21039 bytes .../__pycache__/security.cpython-310.pyc | Bin 0 -> 5498 bytes .../__pycache__/serving.cpython-310.pyc | Bin 0 -> 30644 bytes .../werkzeug/__pycache__/test.cpython-310.pyc | Bin 0 -> 43009 bytes .../__pycache__/testapp.cpython-310.pyc | Bin 0 -> 6603 bytes .../werkzeug/__pycache__/urls.cpython-310.pyc | Bin 0 -> 5822 bytes .../__pycache__/user_agent.cpython-310.pyc | Bin 0 -> 1860 bytes .../__pycache__/utils.cpython-310.pyc | Bin 0 -> 22307 bytes .../werkzeug/__pycache__/wsgi.cpython-310.pyc | Bin 0 -> 19952 bytes .../Lib/site-packages/werkzeug/_internal.py | 211 + .../Lib/site-packages/werkzeug/_reloader.py | 471 + .../werkzeug/datastructures/__init__.py | 64 + .../__pycache__/__init__.cpython-310.pyc | Bin 0 -> 2228 bytes .../__pycache__/accept.cpython-310.pyc | Bin 0 -> 12499 bytes .../__pycache__/auth.cpython-310.pyc | Bin 0 -> 10508 bytes .../__pycache__/cache_control.cpython-310.pyc | Bin 0 -> 10282 bytes .../__pycache__/csp.cpython-310.pyc | Bin 0 -> 4928 bytes .../__pycache__/etag.cpython-310.pyc | Bin 0 -> 4261 bytes .../__pycache__/file_storage.cpython-310.pyc | Bin 0 -> 6791 bytes .../__pycache__/headers.cpython-310.pyc | Bin 0 -> 23362 bytes .../__pycache__/mixins.cpython-310.pyc | Bin 0 -> 13226 bytes .../__pycache__/range.cpython-310.pyc | Bin 0 -> 7522 bytes .../__pycache__/structures.cpython-310.pyc | Bin 0 -> 44459 bytes .../werkzeug/datastructures/accept.py | 350 + .../werkzeug/datastructures/auth.py | 317 + .../werkzeug/datastructures/cache_control.py | 273 + .../werkzeug/datastructures/csp.py | 100 + .../werkzeug/datastructures/etag.py | 106 + .../werkzeug/datastructures/file_storage.py | 209 + .../werkzeug/datastructures/headers.py | 662 + .../werkzeug/datastructures/mixins.py | 317 + .../werkzeug/datastructures/range.py | 214 + .../werkzeug/datastructures/structures.py | 1239 ++ .../site-packages/werkzeug/debug/__init__.py | 565 + .../__pycache__/__init__.cpython-310.pyc | Bin 0 -> 15000 bytes .../debug/__pycache__/console.cpython-310.pyc | Bin 0 -> 8346 bytes .../debug/__pycache__/repr.cpython-310.pyc | Bin 0 -> 9041 bytes .../debug/__pycache__/tbtools.cpython-310.pyc | Bin 0 -> 11942 bytes .../site-packages/werkzeug/debug/console.py | 219 + .../Lib/site-packages/werkzeug/debug/repr.py | 282 + .../werkzeug/debug/shared/ICON_LICENSE.md | 6 + .../werkzeug/debug/shared/console.png | Bin 0 -> 507 bytes .../werkzeug/debug/shared/debugger.js | 344 + .../werkzeug/debug/shared/less.png | Bin 0 -> 191 bytes .../werkzeug/debug/shared/more.png | Bin 0 -> 200 bytes .../werkzeug/debug/shared/style.css | 150 + .../site-packages/werkzeug/debug/tbtools.py | 450 + .../Lib/site-packages/werkzeug/exceptions.py | 894 + .../Lib/site-packages/werkzeug/formparser.py | 430 + .../Lib/site-packages/werkzeug/http.py | 1405 ++ .../Lib/site-packages/werkzeug/local.py | 653 + .../werkzeug/middleware/__init__.py | 0 .../__pycache__/__init__.cpython-310.pyc | Bin 0 -> 185 bytes .../__pycache__/dispatcher.cpython-310.pyc | Bin 0 -> 2834 bytes .../__pycache__/http_proxy.cpython-310.pyc | Bin 0 -> 6927 bytes .../__pycache__/lint.cpython-310.pyc | Bin 0 -> 13078 bytes .../__pycache__/profiler.cpython-310.pyc | Bin 0 -> 5626 bytes .../__pycache__/proxy_fix.cpython-310.pyc | Bin 0 -> 6027 bytes .../__pycache__/shared_data.cpython-310.pyc | Bin 0 -> 9341 bytes .../werkzeug/middleware/dispatcher.py | 81 + .../werkzeug/middleware/http_proxy.py | 236 + .../site-packages/werkzeug/middleware/lint.py | 439 + .../werkzeug/middleware/profiler.py | 155 + .../werkzeug/middleware/proxy_fix.py | 183 + .../werkzeug/middleware/shared_data.py | 283 + .../Lib/site-packages/werkzeug/py.typed | 0 .../werkzeug/routing/__init__.py | 134 + .../__pycache__/__init__.cpython-310.pyc | Bin 0 -> 4623 bytes .../__pycache__/converters.cpython-310.pyc | Bin 0 -> 9202 bytes .../__pycache__/exceptions.cpython-310.pyc | Bin 0 -> 5671 bytes .../routing/__pycache__/map.cpython-310.pyc | Bin 0 -> 31252 bytes .../__pycache__/matcher.cpython-310.pyc | Bin 0 -> 5147 bytes .../routing/__pycache__/rules.cpython-310.pyc | Bin 0 -> 28072 bytes .../werkzeug/routing/converters.py | 261 + .../werkzeug/routing/exceptions.py | 152 + .../Lib/site-packages/werkzeug/routing/map.py | 951 + .../site-packages/werkzeug/routing/matcher.py | 202 + .../site-packages/werkzeug/routing/rules.py | 928 + .../site-packages/werkzeug/sansio/__init__.py | 0 .../__pycache__/__init__.cpython-310.pyc | Bin 0 -> 181 bytes .../sansio/__pycache__/http.cpython-310.pyc | Bin 0 -> 4165 bytes .../__pycache__/multipart.cpython-310.pyc | Bin 0 -> 7491 bytes .../__pycache__/request.cpython-310.pyc | Bin 0 -> 17313 bytes .../__pycache__/response.cpython-310.pyc | Bin 0 -> 24870 bytes .../sansio/__pycache__/utils.cpython-310.pyc | Bin 0 -> 4754 bytes .../Lib/site-packages/werkzeug/sansio/http.py | 170 + .../werkzeug/sansio/multipart.py | 323 + .../site-packages/werkzeug/sansio/request.py | 534 + .../site-packages/werkzeug/sansio/response.py | 763 + .../site-packages/werkzeug/sansio/utils.py | 167 + .../Lib/site-packages/werkzeug/security.py | 166 + .../Lib/site-packages/werkzeug/serving.py | 1125 ++ .../Lib/site-packages/werkzeug/test.py | 1464 ++ .../Lib/site-packages/werkzeug/testapp.py | 194 + .../Lib/site-packages/werkzeug/urls.py | 203 + .../Lib/site-packages/werkzeug/user_agent.py | 47 + .../Lib/site-packages/werkzeug/utils.py | 691 + .../werkzeug/wrappers/__init__.py | 3 + .../__pycache__/__init__.cpython-310.pyc | Bin 0 -> 300 bytes .../__pycache__/request.cpython-310.pyc | Bin 0 -> 21780 bytes .../__pycache__/response.cpython-310.pyc | Bin 0 -> 28332 bytes .../werkzeug/wrappers/request.py | 650 + .../werkzeug/wrappers/response.py | 831 + .../Lib/site-packages/werkzeug/wsgi.py | 595 + gestao_raul/Scripts/pip.exe | Bin 108426 -> 108420 bytes gestao_raul/Scripts/pip3.10.exe | Bin 108426 -> 108420 bytes gestao_raul/Scripts/pip3.exe | Bin 108426 -> 108420 bytes requirements.txt | Bin 400 -> 0 bytes 1841 files changed, 115867 insertions(+), 77478 deletions(-) rename gestao_raul/Lib/site-packages/{pillow-11.0.0.dist-info => MarkupSafe-3.0.2.dist-info}/INSTALLER (100%) create mode 100644 gestao_raul/Lib/site-packages/MarkupSafe-3.0.2.dist-info/LICENSE.txt create mode 100644 gestao_raul/Lib/site-packages/MarkupSafe-3.0.2.dist-info/METADATA create mode 100644 gestao_raul/Lib/site-packages/MarkupSafe-3.0.2.dist-info/RECORD rename gestao_raul/Lib/site-packages/{pillow-11.0.0.dist-info => MarkupSafe-3.0.2.dist-info}/REQUESTED (100%) rename gestao_raul/Lib/site-packages/{pillow-11.0.0.dist-info => MarkupSafe-3.0.2.dist-info}/WHEEL (69%) create mode 100644 gestao_raul/Lib/site-packages/MarkupSafe-3.0.2.dist-info/top_level.txt create mode 100644 gestao_raul/Lib/site-packages/OpenSSL/SSL.py create mode 100644 gestao_raul/Lib/site-packages/OpenSSL/__init__.py create mode 100644 gestao_raul/Lib/site-packages/OpenSSL/__pycache__/SSL.cpython-310.pyc create mode 100644 gestao_raul/Lib/site-packages/OpenSSL/__pycache__/__init__.cpython-310.pyc create mode 100644 gestao_raul/Lib/site-packages/OpenSSL/__pycache__/_util.cpython-310.pyc create mode 100644 gestao_raul/Lib/site-packages/OpenSSL/__pycache__/crypto.cpython-310.pyc create mode 100644 gestao_raul/Lib/site-packages/OpenSSL/__pycache__/debug.cpython-310.pyc create mode 100644 gestao_raul/Lib/site-packages/OpenSSL/__pycache__/rand.cpython-310.pyc create mode 100644 gestao_raul/Lib/site-packages/OpenSSL/__pycache__/version.cpython-310.pyc create mode 100644 gestao_raul/Lib/site-packages/OpenSSL/_util.py create mode 100644 gestao_raul/Lib/site-packages/OpenSSL/crypto.py create mode 100644 gestao_raul/Lib/site-packages/OpenSSL/debug.py rename gestao_raul/Lib/site-packages/{pip-23.0.1.dist-info/REQUESTED => OpenSSL/py.typed} (100%) create mode 100644 gestao_raul/Lib/site-packages/OpenSSL/rand.py create mode 100644 gestao_raul/Lib/site-packages/OpenSSL/version.py create mode 100644 gestao_raul/Lib/site-packages/_cffi_backend.cp310-win_amd64.pyd rename gestao_raul/Lib/site-packages/{pip-23.0.1.dist-info => cffi-1.17.1.dist-info}/INSTALLER (100%) create mode 100644 gestao_raul/Lib/site-packages/cffi-1.17.1.dist-info/LICENSE create mode 100644 gestao_raul/Lib/site-packages/cffi-1.17.1.dist-info/METADATA create mode 100644 gestao_raul/Lib/site-packages/cffi-1.17.1.dist-info/RECORD rename gestao_raul/Lib/site-packages/{pip/_vendor/chardet/cli/__init__.py => cffi-1.17.1.dist-info/REQUESTED} (100%) create mode 100644 gestao_raul/Lib/site-packages/cffi-1.17.1.dist-info/WHEEL create mode 100644 gestao_raul/Lib/site-packages/cffi-1.17.1.dist-info/entry_points.txt create mode 100644 gestao_raul/Lib/site-packages/cffi-1.17.1.dist-info/top_level.txt create mode 100644 gestao_raul/Lib/site-packages/cffi/__init__.py create mode 100644 gestao_raul/Lib/site-packages/cffi/__pycache__/__init__.cpython-310.pyc create mode 100644 gestao_raul/Lib/site-packages/cffi/__pycache__/_imp_emulation.cpython-310.pyc create mode 100644 gestao_raul/Lib/site-packages/cffi/__pycache__/_shimmed_dist_utils.cpython-310.pyc create mode 100644 gestao_raul/Lib/site-packages/cffi/__pycache__/api.cpython-310.pyc create mode 100644 gestao_raul/Lib/site-packages/cffi/__pycache__/backend_ctypes.cpython-310.pyc create mode 100644 gestao_raul/Lib/site-packages/cffi/__pycache__/cffi_opcode.cpython-310.pyc create mode 100644 gestao_raul/Lib/site-packages/cffi/__pycache__/commontypes.cpython-310.pyc create mode 100644 gestao_raul/Lib/site-packages/cffi/__pycache__/cparser.cpython-310.pyc create mode 100644 gestao_raul/Lib/site-packages/cffi/__pycache__/error.cpython-310.pyc create mode 100644 gestao_raul/Lib/site-packages/cffi/__pycache__/ffiplatform.cpython-310.pyc create mode 100644 gestao_raul/Lib/site-packages/cffi/__pycache__/lock.cpython-310.pyc create mode 100644 gestao_raul/Lib/site-packages/cffi/__pycache__/model.cpython-310.pyc create mode 100644 gestao_raul/Lib/site-packages/cffi/__pycache__/pkgconfig.cpython-310.pyc create mode 100644 gestao_raul/Lib/site-packages/cffi/__pycache__/recompiler.cpython-310.pyc create mode 100644 gestao_raul/Lib/site-packages/cffi/__pycache__/setuptools_ext.cpython-310.pyc create mode 100644 gestao_raul/Lib/site-packages/cffi/__pycache__/vengine_cpy.cpython-310.pyc create mode 100644 gestao_raul/Lib/site-packages/cffi/__pycache__/vengine_gen.cpython-310.pyc create mode 100644 gestao_raul/Lib/site-packages/cffi/__pycache__/verifier.cpython-310.pyc create mode 100644 gestao_raul/Lib/site-packages/cffi/_cffi_errors.h create mode 100644 gestao_raul/Lib/site-packages/cffi/_cffi_include.h create mode 100644 gestao_raul/Lib/site-packages/cffi/_embedding.h create mode 100644 gestao_raul/Lib/site-packages/cffi/_imp_emulation.py create mode 100644 gestao_raul/Lib/site-packages/cffi/_shimmed_dist_utils.py create mode 100644 gestao_raul/Lib/site-packages/cffi/api.py create mode 100644 gestao_raul/Lib/site-packages/cffi/backend_ctypes.py create mode 100644 gestao_raul/Lib/site-packages/cffi/cffi_opcode.py create mode 100644 gestao_raul/Lib/site-packages/cffi/commontypes.py create mode 100644 gestao_raul/Lib/site-packages/cffi/cparser.py create mode 100644 gestao_raul/Lib/site-packages/cffi/error.py create mode 100644 gestao_raul/Lib/site-packages/cffi/ffiplatform.py create mode 100644 gestao_raul/Lib/site-packages/cffi/lock.py create mode 100644 gestao_raul/Lib/site-packages/cffi/model.py create mode 100644 gestao_raul/Lib/site-packages/cffi/parse_c_type.h create mode 100644 gestao_raul/Lib/site-packages/cffi/pkgconfig.py create mode 100644 gestao_raul/Lib/site-packages/cffi/recompiler.py create mode 100644 gestao_raul/Lib/site-packages/cffi/setuptools_ext.py create mode 100644 gestao_raul/Lib/site-packages/cffi/vengine_cpy.py create mode 100644 gestao_raul/Lib/site-packages/cffi/vengine_gen.py create mode 100644 gestao_raul/Lib/site-packages/cffi/verifier.py rename gestao_raul/Lib/site-packages/{pip-23.0.1.dist-info/top_level.txt => cryptography-44.0.0.dist-info/INSTALLER} (100%) create mode 100644 gestao_raul/Lib/site-packages/cryptography-44.0.0.dist-info/METADATA create mode 100644 gestao_raul/Lib/site-packages/cryptography-44.0.0.dist-info/RECORD rename gestao_raul/Lib/site-packages/{pip/_vendor/chardet/metadata/__init__.py => cryptography-44.0.0.dist-info/REQUESTED} (100%) create mode 100644 gestao_raul/Lib/site-packages/cryptography-44.0.0.dist-info/WHEEL create mode 100644 gestao_raul/Lib/site-packages/cryptography-44.0.0.dist-info/licenses/LICENSE create mode 100644 gestao_raul/Lib/site-packages/cryptography-44.0.0.dist-info/licenses/LICENSE.APACHE create mode 100644 gestao_raul/Lib/site-packages/cryptography-44.0.0.dist-info/licenses/LICENSE.BSD create mode 100644 gestao_raul/Lib/site-packages/cryptography/__about__.py create mode 100644 gestao_raul/Lib/site-packages/cryptography/__init__.py create mode 100644 gestao_raul/Lib/site-packages/cryptography/__pycache__/__about__.cpython-310.pyc create mode 100644 gestao_raul/Lib/site-packages/cryptography/__pycache__/__init__.cpython-310.pyc create mode 100644 gestao_raul/Lib/site-packages/cryptography/__pycache__/exceptions.cpython-310.pyc create mode 100644 gestao_raul/Lib/site-packages/cryptography/__pycache__/fernet.cpython-310.pyc create mode 100644 gestao_raul/Lib/site-packages/cryptography/__pycache__/utils.cpython-310.pyc create mode 100644 gestao_raul/Lib/site-packages/cryptography/exceptions.py create mode 100644 gestao_raul/Lib/site-packages/cryptography/fernet.py create mode 100644 gestao_raul/Lib/site-packages/cryptography/hazmat/__init__.py create mode 100644 gestao_raul/Lib/site-packages/cryptography/hazmat/__pycache__/__init__.cpython-310.pyc create mode 100644 gestao_raul/Lib/site-packages/cryptography/hazmat/__pycache__/_oid.cpython-310.pyc create mode 100644 gestao_raul/Lib/site-packages/cryptography/hazmat/_oid.py create mode 100644 gestao_raul/Lib/site-packages/cryptography/hazmat/backends/__init__.py create mode 100644 gestao_raul/Lib/site-packages/cryptography/hazmat/backends/__pycache__/__init__.cpython-310.pyc create mode 100644 gestao_raul/Lib/site-packages/cryptography/hazmat/backends/openssl/__init__.py create mode 100644 gestao_raul/Lib/site-packages/cryptography/hazmat/backends/openssl/__pycache__/__init__.cpython-310.pyc create mode 100644 gestao_raul/Lib/site-packages/cryptography/hazmat/backends/openssl/__pycache__/backend.cpython-310.pyc create mode 100644 gestao_raul/Lib/site-packages/cryptography/hazmat/backends/openssl/backend.py create mode 100644 gestao_raul/Lib/site-packages/cryptography/hazmat/bindings/__init__.py create mode 100644 gestao_raul/Lib/site-packages/cryptography/hazmat/bindings/__pycache__/__init__.cpython-310.pyc create mode 100644 gestao_raul/Lib/site-packages/cryptography/hazmat/bindings/_rust.pyd create mode 100644 gestao_raul/Lib/site-packages/cryptography/hazmat/bindings/_rust/__init__.pyi create mode 100644 gestao_raul/Lib/site-packages/cryptography/hazmat/bindings/_rust/_openssl.pyi create mode 100644 gestao_raul/Lib/site-packages/cryptography/hazmat/bindings/_rust/asn1.pyi create mode 100644 gestao_raul/Lib/site-packages/cryptography/hazmat/bindings/_rust/exceptions.pyi create mode 100644 gestao_raul/Lib/site-packages/cryptography/hazmat/bindings/_rust/ocsp.pyi create mode 100644 gestao_raul/Lib/site-packages/cryptography/hazmat/bindings/_rust/openssl/__init__.pyi create mode 100644 gestao_raul/Lib/site-packages/cryptography/hazmat/bindings/_rust/openssl/aead.pyi create mode 100644 gestao_raul/Lib/site-packages/cryptography/hazmat/bindings/_rust/openssl/ciphers.pyi create mode 100644 gestao_raul/Lib/site-packages/cryptography/hazmat/bindings/_rust/openssl/cmac.pyi create mode 100644 gestao_raul/Lib/site-packages/cryptography/hazmat/bindings/_rust/openssl/dh.pyi create mode 100644 gestao_raul/Lib/site-packages/cryptography/hazmat/bindings/_rust/openssl/dsa.pyi create mode 100644 gestao_raul/Lib/site-packages/cryptography/hazmat/bindings/_rust/openssl/ec.pyi create mode 100644 gestao_raul/Lib/site-packages/cryptography/hazmat/bindings/_rust/openssl/ed25519.pyi create mode 100644 gestao_raul/Lib/site-packages/cryptography/hazmat/bindings/_rust/openssl/ed448.pyi create mode 100644 gestao_raul/Lib/site-packages/cryptography/hazmat/bindings/_rust/openssl/hashes.pyi create mode 100644 gestao_raul/Lib/site-packages/cryptography/hazmat/bindings/_rust/openssl/hmac.pyi create mode 100644 gestao_raul/Lib/site-packages/cryptography/hazmat/bindings/_rust/openssl/kdf.pyi create mode 100644 gestao_raul/Lib/site-packages/cryptography/hazmat/bindings/_rust/openssl/keys.pyi create mode 100644 gestao_raul/Lib/site-packages/cryptography/hazmat/bindings/_rust/openssl/poly1305.pyi create mode 100644 gestao_raul/Lib/site-packages/cryptography/hazmat/bindings/_rust/openssl/rsa.pyi create mode 100644 gestao_raul/Lib/site-packages/cryptography/hazmat/bindings/_rust/openssl/x25519.pyi create mode 100644 gestao_raul/Lib/site-packages/cryptography/hazmat/bindings/_rust/openssl/x448.pyi create mode 100644 gestao_raul/Lib/site-packages/cryptography/hazmat/bindings/_rust/pkcs12.pyi create mode 100644 gestao_raul/Lib/site-packages/cryptography/hazmat/bindings/_rust/pkcs7.pyi create mode 100644 gestao_raul/Lib/site-packages/cryptography/hazmat/bindings/_rust/test_support.pyi create mode 100644 gestao_raul/Lib/site-packages/cryptography/hazmat/bindings/_rust/x509.pyi create mode 100644 gestao_raul/Lib/site-packages/cryptography/hazmat/bindings/openssl/__init__.py create mode 100644 gestao_raul/Lib/site-packages/cryptography/hazmat/bindings/openssl/__pycache__/__init__.cpython-310.pyc create mode 100644 gestao_raul/Lib/site-packages/cryptography/hazmat/bindings/openssl/__pycache__/_conditional.cpython-310.pyc create mode 100644 gestao_raul/Lib/site-packages/cryptography/hazmat/bindings/openssl/__pycache__/binding.cpython-310.pyc create mode 100644 gestao_raul/Lib/site-packages/cryptography/hazmat/bindings/openssl/_conditional.py create mode 100644 gestao_raul/Lib/site-packages/cryptography/hazmat/bindings/openssl/binding.py create mode 100644 gestao_raul/Lib/site-packages/cryptography/hazmat/decrepit/__init__.py create mode 100644 gestao_raul/Lib/site-packages/cryptography/hazmat/decrepit/__pycache__/__init__.cpython-310.pyc create mode 100644 gestao_raul/Lib/site-packages/cryptography/hazmat/decrepit/ciphers/__init__.py create mode 100644 gestao_raul/Lib/site-packages/cryptography/hazmat/decrepit/ciphers/__pycache__/__init__.cpython-310.pyc create mode 100644 gestao_raul/Lib/site-packages/cryptography/hazmat/decrepit/ciphers/__pycache__/algorithms.cpython-310.pyc create mode 100644 gestao_raul/Lib/site-packages/cryptography/hazmat/decrepit/ciphers/algorithms.py create mode 100644 gestao_raul/Lib/site-packages/cryptography/hazmat/primitives/__init__.py create mode 100644 gestao_raul/Lib/site-packages/cryptography/hazmat/primitives/__pycache__/__init__.cpython-310.pyc create mode 100644 gestao_raul/Lib/site-packages/cryptography/hazmat/primitives/__pycache__/_asymmetric.cpython-310.pyc create mode 100644 gestao_raul/Lib/site-packages/cryptography/hazmat/primitives/__pycache__/_cipheralgorithm.cpython-310.pyc create mode 100644 gestao_raul/Lib/site-packages/cryptography/hazmat/primitives/__pycache__/_serialization.cpython-310.pyc create mode 100644 gestao_raul/Lib/site-packages/cryptography/hazmat/primitives/__pycache__/cmac.cpython-310.pyc create mode 100644 gestao_raul/Lib/site-packages/cryptography/hazmat/primitives/__pycache__/constant_time.cpython-310.pyc create mode 100644 gestao_raul/Lib/site-packages/cryptography/hazmat/primitives/__pycache__/hashes.cpython-310.pyc create mode 100644 gestao_raul/Lib/site-packages/cryptography/hazmat/primitives/__pycache__/hmac.cpython-310.pyc create mode 100644 gestao_raul/Lib/site-packages/cryptography/hazmat/primitives/__pycache__/keywrap.cpython-310.pyc create mode 100644 gestao_raul/Lib/site-packages/cryptography/hazmat/primitives/__pycache__/padding.cpython-310.pyc create mode 100644 gestao_raul/Lib/site-packages/cryptography/hazmat/primitives/__pycache__/poly1305.cpython-310.pyc create mode 100644 gestao_raul/Lib/site-packages/cryptography/hazmat/primitives/_asymmetric.py create mode 100644 gestao_raul/Lib/site-packages/cryptography/hazmat/primitives/_cipheralgorithm.py create mode 100644 gestao_raul/Lib/site-packages/cryptography/hazmat/primitives/_serialization.py create mode 100644 gestao_raul/Lib/site-packages/cryptography/hazmat/primitives/asymmetric/__init__.py create mode 100644 gestao_raul/Lib/site-packages/cryptography/hazmat/primitives/asymmetric/__pycache__/__init__.cpython-310.pyc create mode 100644 gestao_raul/Lib/site-packages/cryptography/hazmat/primitives/asymmetric/__pycache__/dh.cpython-310.pyc create mode 100644 gestao_raul/Lib/site-packages/cryptography/hazmat/primitives/asymmetric/__pycache__/dsa.cpython-310.pyc create mode 100644 gestao_raul/Lib/site-packages/cryptography/hazmat/primitives/asymmetric/__pycache__/ec.cpython-310.pyc create mode 100644 gestao_raul/Lib/site-packages/cryptography/hazmat/primitives/asymmetric/__pycache__/ed25519.cpython-310.pyc create mode 100644 gestao_raul/Lib/site-packages/cryptography/hazmat/primitives/asymmetric/__pycache__/ed448.cpython-310.pyc create mode 100644 gestao_raul/Lib/site-packages/cryptography/hazmat/primitives/asymmetric/__pycache__/padding.cpython-310.pyc create mode 100644 gestao_raul/Lib/site-packages/cryptography/hazmat/primitives/asymmetric/__pycache__/rsa.cpython-310.pyc create mode 100644 gestao_raul/Lib/site-packages/cryptography/hazmat/primitives/asymmetric/__pycache__/types.cpython-310.pyc create mode 100644 gestao_raul/Lib/site-packages/cryptography/hazmat/primitives/asymmetric/__pycache__/utils.cpython-310.pyc create mode 100644 gestao_raul/Lib/site-packages/cryptography/hazmat/primitives/asymmetric/__pycache__/x25519.cpython-310.pyc create mode 100644 gestao_raul/Lib/site-packages/cryptography/hazmat/primitives/asymmetric/__pycache__/x448.cpython-310.pyc create mode 100644 gestao_raul/Lib/site-packages/cryptography/hazmat/primitives/asymmetric/dh.py create mode 100644 gestao_raul/Lib/site-packages/cryptography/hazmat/primitives/asymmetric/dsa.py create mode 100644 gestao_raul/Lib/site-packages/cryptography/hazmat/primitives/asymmetric/ec.py create mode 100644 gestao_raul/Lib/site-packages/cryptography/hazmat/primitives/asymmetric/ed25519.py create mode 100644 gestao_raul/Lib/site-packages/cryptography/hazmat/primitives/asymmetric/ed448.py create mode 100644 gestao_raul/Lib/site-packages/cryptography/hazmat/primitives/asymmetric/padding.py create mode 100644 gestao_raul/Lib/site-packages/cryptography/hazmat/primitives/asymmetric/rsa.py create mode 100644 gestao_raul/Lib/site-packages/cryptography/hazmat/primitives/asymmetric/types.py create mode 100644 gestao_raul/Lib/site-packages/cryptography/hazmat/primitives/asymmetric/utils.py create mode 100644 gestao_raul/Lib/site-packages/cryptography/hazmat/primitives/asymmetric/x25519.py create mode 100644 gestao_raul/Lib/site-packages/cryptography/hazmat/primitives/asymmetric/x448.py create mode 100644 gestao_raul/Lib/site-packages/cryptography/hazmat/primitives/ciphers/__init__.py create mode 100644 gestao_raul/Lib/site-packages/cryptography/hazmat/primitives/ciphers/__pycache__/__init__.cpython-310.pyc create mode 100644 gestao_raul/Lib/site-packages/cryptography/hazmat/primitives/ciphers/__pycache__/aead.cpython-310.pyc create mode 100644 gestao_raul/Lib/site-packages/cryptography/hazmat/primitives/ciphers/__pycache__/algorithms.cpython-310.pyc create mode 100644 gestao_raul/Lib/site-packages/cryptography/hazmat/primitives/ciphers/__pycache__/base.cpython-310.pyc create mode 100644 gestao_raul/Lib/site-packages/cryptography/hazmat/primitives/ciphers/__pycache__/modes.cpython-310.pyc create mode 100644 gestao_raul/Lib/site-packages/cryptography/hazmat/primitives/ciphers/aead.py create mode 100644 gestao_raul/Lib/site-packages/cryptography/hazmat/primitives/ciphers/algorithms.py create mode 100644 gestao_raul/Lib/site-packages/cryptography/hazmat/primitives/ciphers/base.py create mode 100644 gestao_raul/Lib/site-packages/cryptography/hazmat/primitives/ciphers/modes.py create mode 100644 gestao_raul/Lib/site-packages/cryptography/hazmat/primitives/cmac.py create mode 100644 gestao_raul/Lib/site-packages/cryptography/hazmat/primitives/constant_time.py create mode 100644 gestao_raul/Lib/site-packages/cryptography/hazmat/primitives/hashes.py create mode 100644 gestao_raul/Lib/site-packages/cryptography/hazmat/primitives/hmac.py create mode 100644 gestao_raul/Lib/site-packages/cryptography/hazmat/primitives/kdf/__init__.py create mode 100644 gestao_raul/Lib/site-packages/cryptography/hazmat/primitives/kdf/__pycache__/__init__.cpython-310.pyc create mode 100644 gestao_raul/Lib/site-packages/cryptography/hazmat/primitives/kdf/__pycache__/argon2.cpython-310.pyc create mode 100644 gestao_raul/Lib/site-packages/cryptography/hazmat/primitives/kdf/__pycache__/concatkdf.cpython-310.pyc create mode 100644 gestao_raul/Lib/site-packages/cryptography/hazmat/primitives/kdf/__pycache__/hkdf.cpython-310.pyc create mode 100644 gestao_raul/Lib/site-packages/cryptography/hazmat/primitives/kdf/__pycache__/kbkdf.cpython-310.pyc create mode 100644 gestao_raul/Lib/site-packages/cryptography/hazmat/primitives/kdf/__pycache__/pbkdf2.cpython-310.pyc create mode 100644 gestao_raul/Lib/site-packages/cryptography/hazmat/primitives/kdf/__pycache__/scrypt.cpython-310.pyc create mode 100644 gestao_raul/Lib/site-packages/cryptography/hazmat/primitives/kdf/__pycache__/x963kdf.cpython-310.pyc create mode 100644 gestao_raul/Lib/site-packages/cryptography/hazmat/primitives/kdf/argon2.py create mode 100644 gestao_raul/Lib/site-packages/cryptography/hazmat/primitives/kdf/concatkdf.py create mode 100644 gestao_raul/Lib/site-packages/cryptography/hazmat/primitives/kdf/hkdf.py create mode 100644 gestao_raul/Lib/site-packages/cryptography/hazmat/primitives/kdf/kbkdf.py create mode 100644 gestao_raul/Lib/site-packages/cryptography/hazmat/primitives/kdf/pbkdf2.py create mode 100644 gestao_raul/Lib/site-packages/cryptography/hazmat/primitives/kdf/scrypt.py create mode 100644 gestao_raul/Lib/site-packages/cryptography/hazmat/primitives/kdf/x963kdf.py create mode 100644 gestao_raul/Lib/site-packages/cryptography/hazmat/primitives/keywrap.py create mode 100644 gestao_raul/Lib/site-packages/cryptography/hazmat/primitives/padding.py create mode 100644 gestao_raul/Lib/site-packages/cryptography/hazmat/primitives/poly1305.py create mode 100644 gestao_raul/Lib/site-packages/cryptography/hazmat/primitives/serialization/__init__.py create mode 100644 gestao_raul/Lib/site-packages/cryptography/hazmat/primitives/serialization/__pycache__/__init__.cpython-310.pyc create mode 100644 gestao_raul/Lib/site-packages/cryptography/hazmat/primitives/serialization/__pycache__/base.cpython-310.pyc create mode 100644 gestao_raul/Lib/site-packages/cryptography/hazmat/primitives/serialization/__pycache__/pkcs12.cpython-310.pyc create mode 100644 gestao_raul/Lib/site-packages/cryptography/hazmat/primitives/serialization/__pycache__/pkcs7.cpython-310.pyc create mode 100644 gestao_raul/Lib/site-packages/cryptography/hazmat/primitives/serialization/__pycache__/ssh.cpython-310.pyc create mode 100644 gestao_raul/Lib/site-packages/cryptography/hazmat/primitives/serialization/base.py create mode 100644 gestao_raul/Lib/site-packages/cryptography/hazmat/primitives/serialization/pkcs12.py create mode 100644 gestao_raul/Lib/site-packages/cryptography/hazmat/primitives/serialization/pkcs7.py create mode 100644 gestao_raul/Lib/site-packages/cryptography/hazmat/primitives/serialization/ssh.py create mode 100644 gestao_raul/Lib/site-packages/cryptography/hazmat/primitives/twofactor/__init__.py create mode 100644 gestao_raul/Lib/site-packages/cryptography/hazmat/primitives/twofactor/__pycache__/__init__.cpython-310.pyc create mode 100644 gestao_raul/Lib/site-packages/cryptography/hazmat/primitives/twofactor/__pycache__/hotp.cpython-310.pyc create mode 100644 gestao_raul/Lib/site-packages/cryptography/hazmat/primitives/twofactor/__pycache__/totp.cpython-310.pyc create mode 100644 gestao_raul/Lib/site-packages/cryptography/hazmat/primitives/twofactor/hotp.py create mode 100644 gestao_raul/Lib/site-packages/cryptography/hazmat/primitives/twofactor/totp.py create mode 100644 gestao_raul/Lib/site-packages/cryptography/py.typed create mode 100644 gestao_raul/Lib/site-packages/cryptography/utils.py create mode 100644 gestao_raul/Lib/site-packages/cryptography/x509/__init__.py create mode 100644 gestao_raul/Lib/site-packages/cryptography/x509/__pycache__/__init__.cpython-310.pyc create mode 100644 gestao_raul/Lib/site-packages/cryptography/x509/__pycache__/base.cpython-310.pyc create mode 100644 gestao_raul/Lib/site-packages/cryptography/x509/__pycache__/certificate_transparency.cpython-310.pyc create mode 100644 gestao_raul/Lib/site-packages/cryptography/x509/__pycache__/extensions.cpython-310.pyc create mode 100644 gestao_raul/Lib/site-packages/cryptography/x509/__pycache__/general_name.cpython-310.pyc create mode 100644 gestao_raul/Lib/site-packages/cryptography/x509/__pycache__/name.cpython-310.pyc create mode 100644 gestao_raul/Lib/site-packages/cryptography/x509/__pycache__/ocsp.cpython-310.pyc create mode 100644 gestao_raul/Lib/site-packages/cryptography/x509/__pycache__/oid.cpython-310.pyc create mode 100644 gestao_raul/Lib/site-packages/cryptography/x509/__pycache__/verification.cpython-310.pyc create mode 100644 gestao_raul/Lib/site-packages/cryptography/x509/base.py create mode 100644 gestao_raul/Lib/site-packages/cryptography/x509/certificate_transparency.py create mode 100644 gestao_raul/Lib/site-packages/cryptography/x509/extensions.py create mode 100644 gestao_raul/Lib/site-packages/cryptography/x509/general_name.py create mode 100644 gestao_raul/Lib/site-packages/cryptography/x509/name.py create mode 100644 gestao_raul/Lib/site-packages/cryptography/x509/ocsp.py create mode 100644 gestao_raul/Lib/site-packages/cryptography/x509/oid.py create mode 100644 gestao_raul/Lib/site-packages/cryptography/x509/verification.py create mode 100644 gestao_raul/Lib/site-packages/django_extensions-3.2.3.dist-info/INSTALLER create mode 100644 gestao_raul/Lib/site-packages/django_extensions-3.2.3.dist-info/LICENSE create mode 100644 gestao_raul/Lib/site-packages/django_extensions-3.2.3.dist-info/METADATA create mode 100644 gestao_raul/Lib/site-packages/django_extensions-3.2.3.dist-info/RECORD create mode 100644 gestao_raul/Lib/site-packages/django_extensions-3.2.3.dist-info/REQUESTED rename gestao_raul/Lib/site-packages/{pip-23.0.1.dist-info => django_extensions-3.2.3.dist-info}/WHEEL (65%) create mode 100644 gestao_raul/Lib/site-packages/django_extensions-3.2.3.dist-info/top_level.txt create mode 100644 gestao_raul/Lib/site-packages/django_extensions/__init__.py create mode 100644 gestao_raul/Lib/site-packages/django_extensions/__pycache__/__init__.cpython-310.pyc create mode 100644 gestao_raul/Lib/site-packages/django_extensions/__pycache__/apps.cpython-310.pyc create mode 100644 gestao_raul/Lib/site-packages/django_extensions/__pycache__/collision_resolvers.cpython-310.pyc create mode 100644 gestao_raul/Lib/site-packages/django_extensions/__pycache__/compat.cpython-310.pyc create mode 100644 gestao_raul/Lib/site-packages/django_extensions/__pycache__/import_subclasses.cpython-310.pyc create mode 100644 gestao_raul/Lib/site-packages/django_extensions/__pycache__/models.cpython-310.pyc create mode 100644 gestao_raul/Lib/site-packages/django_extensions/__pycache__/settings.cpython-310.pyc create mode 100644 gestao_raul/Lib/site-packages/django_extensions/__pycache__/validators.cpython-310.pyc create mode 100644 gestao_raul/Lib/site-packages/django_extensions/admin/__init__.py create mode 100644 gestao_raul/Lib/site-packages/django_extensions/admin/__pycache__/__init__.cpython-310.pyc create mode 100644 gestao_raul/Lib/site-packages/django_extensions/admin/__pycache__/filter.cpython-310.pyc create mode 100644 gestao_raul/Lib/site-packages/django_extensions/admin/__pycache__/widgets.cpython-310.pyc create mode 100644 gestao_raul/Lib/site-packages/django_extensions/admin/filter.py create mode 100644 gestao_raul/Lib/site-packages/django_extensions/admin/widgets.py create mode 100644 gestao_raul/Lib/site-packages/django_extensions/apps.py create mode 100644 gestao_raul/Lib/site-packages/django_extensions/auth/__init__.py create mode 100644 gestao_raul/Lib/site-packages/django_extensions/auth/__pycache__/__init__.cpython-310.pyc create mode 100644 gestao_raul/Lib/site-packages/django_extensions/auth/__pycache__/mixins.cpython-310.pyc create mode 100644 gestao_raul/Lib/site-packages/django_extensions/auth/mixins.py create mode 100644 gestao_raul/Lib/site-packages/django_extensions/collision_resolvers.py create mode 100644 gestao_raul/Lib/site-packages/django_extensions/compat.py create mode 100644 gestao_raul/Lib/site-packages/django_extensions/conf/app_template/__init__.py.tmpl create mode 100644 gestao_raul/Lib/site-packages/django_extensions/conf/app_template/forms.py.tmpl create mode 100644 gestao_raul/Lib/site-packages/django_extensions/conf/app_template/migrations/__init__.py.tmpl create mode 100644 gestao_raul/Lib/site-packages/django_extensions/conf/app_template/models.py.tmpl create mode 100644 gestao_raul/Lib/site-packages/django_extensions/conf/app_template/urls.py.tmpl create mode 100644 gestao_raul/Lib/site-packages/django_extensions/conf/app_template/views.py.tmpl create mode 100644 gestao_raul/Lib/site-packages/django_extensions/conf/command_template/management/__init__.py.tmpl create mode 100644 gestao_raul/Lib/site-packages/django_extensions/conf/command_template/management/commands/__init__.py.tmpl create mode 100644 gestao_raul/Lib/site-packages/django_extensions/conf/command_template/management/commands/sample.py.tmpl create mode 100644 gestao_raul/Lib/site-packages/django_extensions/conf/jobs_template/jobs/__init__.py.tmpl create mode 100644 gestao_raul/Lib/site-packages/django_extensions/conf/jobs_template/jobs/daily/__init__.py.tmpl create mode 100644 gestao_raul/Lib/site-packages/django_extensions/conf/jobs_template/jobs/hourly/__init__.py.tmpl create mode 100644 gestao_raul/Lib/site-packages/django_extensions/conf/jobs_template/jobs/monthly/__init__.py.tmpl create mode 100644 gestao_raul/Lib/site-packages/django_extensions/conf/jobs_template/jobs/sample.py.tmpl create mode 100644 gestao_raul/Lib/site-packages/django_extensions/conf/jobs_template/jobs/weekly/__init__.py.tmpl create mode 100644 gestao_raul/Lib/site-packages/django_extensions/conf/jobs_template/jobs/yearly/__init__.py.tmpl create mode 100644 gestao_raul/Lib/site-packages/django_extensions/conf/template_tags_template/templatetags/__init__.py.tmpl create mode 100644 gestao_raul/Lib/site-packages/django_extensions/conf/template_tags_template/templatetags/sample.py.tmpl create mode 100644 gestao_raul/Lib/site-packages/django_extensions/db/__init__.py create mode 100644 gestao_raul/Lib/site-packages/django_extensions/db/__pycache__/__init__.cpython-310.pyc create mode 100644 gestao_raul/Lib/site-packages/django_extensions/db/__pycache__/models.cpython-310.pyc create mode 100644 gestao_raul/Lib/site-packages/django_extensions/db/fields/__init__.py create mode 100644 gestao_raul/Lib/site-packages/django_extensions/db/fields/__pycache__/__init__.cpython-310.pyc create mode 100644 gestao_raul/Lib/site-packages/django_extensions/db/fields/__pycache__/json.cpython-310.pyc create mode 100644 gestao_raul/Lib/site-packages/django_extensions/db/fields/json.py create mode 100644 gestao_raul/Lib/site-packages/django_extensions/db/models.py create mode 100644 gestao_raul/Lib/site-packages/django_extensions/import_subclasses.py create mode 100644 gestao_raul/Lib/site-packages/django_extensions/jobs/__init__.py create mode 100644 gestao_raul/Lib/site-packages/django_extensions/jobs/__pycache__/__init__.cpython-310.pyc create mode 100644 gestao_raul/Lib/site-packages/django_extensions/jobs/daily/__init__.py create mode 100644 gestao_raul/Lib/site-packages/django_extensions/jobs/daily/__pycache__/__init__.cpython-310.pyc create mode 100644 gestao_raul/Lib/site-packages/django_extensions/jobs/daily/__pycache__/cache_cleanup.cpython-310.pyc create mode 100644 gestao_raul/Lib/site-packages/django_extensions/jobs/daily/__pycache__/daily_cleanup.cpython-310.pyc create mode 100644 gestao_raul/Lib/site-packages/django_extensions/jobs/daily/cache_cleanup.py create mode 100644 gestao_raul/Lib/site-packages/django_extensions/jobs/daily/daily_cleanup.py create mode 100644 gestao_raul/Lib/site-packages/django_extensions/jobs/hourly/__init__.py create mode 100644 gestao_raul/Lib/site-packages/django_extensions/jobs/hourly/__pycache__/__init__.cpython-310.pyc create mode 100644 gestao_raul/Lib/site-packages/django_extensions/jobs/minutely/__init__.py create mode 100644 gestao_raul/Lib/site-packages/django_extensions/jobs/minutely/__pycache__/__init__.cpython-310.pyc create mode 100644 gestao_raul/Lib/site-packages/django_extensions/jobs/monthly/__init__.py create mode 100644 gestao_raul/Lib/site-packages/django_extensions/jobs/monthly/__pycache__/__init__.cpython-310.pyc create mode 100644 gestao_raul/Lib/site-packages/django_extensions/jobs/weekly/__init__.py create mode 100644 gestao_raul/Lib/site-packages/django_extensions/jobs/weekly/__pycache__/__init__.cpython-310.pyc create mode 100644 gestao_raul/Lib/site-packages/django_extensions/jobs/yearly/__init__.py create mode 100644 gestao_raul/Lib/site-packages/django_extensions/jobs/yearly/__pycache__/__init__.cpython-310.pyc create mode 100644 gestao_raul/Lib/site-packages/django_extensions/locale/ar/LC_MESSAGES/django.po create mode 100644 gestao_raul/Lib/site-packages/django_extensions/locale/da/LC_MESSAGES/django.mo create mode 100644 gestao_raul/Lib/site-packages/django_extensions/locale/da/LC_MESSAGES/django.po create mode 100644 gestao_raul/Lib/site-packages/django_extensions/locale/de/LC_MESSAGES/django.mo create mode 100644 gestao_raul/Lib/site-packages/django_extensions/locale/de/LC_MESSAGES/django.po create mode 100644 gestao_raul/Lib/site-packages/django_extensions/locale/el/LC_MESSAGES/django.mo create mode 100644 gestao_raul/Lib/site-packages/django_extensions/locale/el/LC_MESSAGES/django.po create mode 100644 gestao_raul/Lib/site-packages/django_extensions/locale/en/LC_MESSAGES/django.mo create mode 100644 gestao_raul/Lib/site-packages/django_extensions/locale/en/LC_MESSAGES/django.po create mode 100644 gestao_raul/Lib/site-packages/django_extensions/locale/es/LC_MESSAGES/django.mo create mode 100644 gestao_raul/Lib/site-packages/django_extensions/locale/es/LC_MESSAGES/django.po create mode 100644 gestao_raul/Lib/site-packages/django_extensions/locale/fr/LC_MESSAGES/django.mo create mode 100644 gestao_raul/Lib/site-packages/django_extensions/locale/fr/LC_MESSAGES/django.po create mode 100644 gestao_raul/Lib/site-packages/django_extensions/locale/hu/LC_MESSAGES/django.mo create mode 100644 gestao_raul/Lib/site-packages/django_extensions/locale/hu/LC_MESSAGES/django.po create mode 100644 gestao_raul/Lib/site-packages/django_extensions/locale/id/LC_MESSAGES/django.mo create mode 100644 gestao_raul/Lib/site-packages/django_extensions/locale/id/LC_MESSAGES/django.po create mode 100644 gestao_raul/Lib/site-packages/django_extensions/locale/it/LC_MESSAGES/django.mo create mode 100644 gestao_raul/Lib/site-packages/django_extensions/locale/it/LC_MESSAGES/django.po create mode 100644 gestao_raul/Lib/site-packages/django_extensions/locale/ja/LC_MESSAGES/django.mo create mode 100644 gestao_raul/Lib/site-packages/django_extensions/locale/ja/LC_MESSAGES/django.po create mode 100644 gestao_raul/Lib/site-packages/django_extensions/locale/pl/LC_MESSAGES/django.mo create mode 100644 gestao_raul/Lib/site-packages/django_extensions/locale/pl/LC_MESSAGES/django.po create mode 100644 gestao_raul/Lib/site-packages/django_extensions/locale/pt/LC_MESSAGES/django.mo create mode 100644 gestao_raul/Lib/site-packages/django_extensions/locale/pt/LC_MESSAGES/django.po create mode 100644 gestao_raul/Lib/site-packages/django_extensions/locale/pt_BR/LC_MESSAGES/django.mo create mode 100644 gestao_raul/Lib/site-packages/django_extensions/locale/pt_BR/LC_MESSAGES/django.po create mode 100644 gestao_raul/Lib/site-packages/django_extensions/locale/ro/LC_MESSAGES/django.mo create mode 100644 gestao_raul/Lib/site-packages/django_extensions/locale/ro/LC_MESSAGES/django.po create mode 100644 gestao_raul/Lib/site-packages/django_extensions/locale/ru/LC_MESSAGES/django.mo create mode 100644 gestao_raul/Lib/site-packages/django_extensions/locale/ru/LC_MESSAGES/django.po create mode 100644 gestao_raul/Lib/site-packages/django_extensions/logging/__init__.py create mode 100644 gestao_raul/Lib/site-packages/django_extensions/logging/__pycache__/__init__.cpython-310.pyc create mode 100644 gestao_raul/Lib/site-packages/django_extensions/logging/__pycache__/filters.cpython-310.pyc create mode 100644 gestao_raul/Lib/site-packages/django_extensions/logging/filters.py create mode 100644 gestao_raul/Lib/site-packages/django_extensions/management/__init__.py create mode 100644 gestao_raul/Lib/site-packages/django_extensions/management/__pycache__/__init__.cpython-310.pyc create mode 100644 gestao_raul/Lib/site-packages/django_extensions/management/__pycache__/base.cpython-310.pyc create mode 100644 gestao_raul/Lib/site-packages/django_extensions/management/__pycache__/color.cpython-310.pyc create mode 100644 gestao_raul/Lib/site-packages/django_extensions/management/__pycache__/debug_cursor.cpython-310.pyc create mode 100644 gestao_raul/Lib/site-packages/django_extensions/management/__pycache__/email_notifications.cpython-310.pyc create mode 100644 gestao_raul/Lib/site-packages/django_extensions/management/__pycache__/jobs.cpython-310.pyc create mode 100644 gestao_raul/Lib/site-packages/django_extensions/management/__pycache__/modelviz.cpython-310.pyc create mode 100644 gestao_raul/Lib/site-packages/django_extensions/management/__pycache__/mysql.cpython-310.pyc create mode 100644 gestao_raul/Lib/site-packages/django_extensions/management/__pycache__/notebook_extension.cpython-310.pyc create mode 100644 gestao_raul/Lib/site-packages/django_extensions/management/__pycache__/shells.cpython-310.pyc create mode 100644 gestao_raul/Lib/site-packages/django_extensions/management/__pycache__/signals.cpython-310.pyc create mode 100644 gestao_raul/Lib/site-packages/django_extensions/management/__pycache__/technical_response.cpython-310.pyc create mode 100644 gestao_raul/Lib/site-packages/django_extensions/management/__pycache__/utils.cpython-310.pyc create mode 100644 gestao_raul/Lib/site-packages/django_extensions/management/base.py create mode 100644 gestao_raul/Lib/site-packages/django_extensions/management/color.py create mode 100644 gestao_raul/Lib/site-packages/django_extensions/management/commands/__init__.py create mode 100644 gestao_raul/Lib/site-packages/django_extensions/management/commands/__pycache__/__init__.cpython-310.pyc create mode 100644 gestao_raul/Lib/site-packages/django_extensions/management/commands/__pycache__/admin_generator.cpython-310.pyc create mode 100644 gestao_raul/Lib/site-packages/django_extensions/management/commands/__pycache__/clean_pyc.cpython-310.pyc create mode 100644 gestao_raul/Lib/site-packages/django_extensions/management/commands/__pycache__/clear_cache.cpython-310.pyc create mode 100644 gestao_raul/Lib/site-packages/django_extensions/management/commands/__pycache__/compile_pyc.cpython-310.pyc create mode 100644 gestao_raul/Lib/site-packages/django_extensions/management/commands/__pycache__/create_command.cpython-310.pyc create mode 100644 gestao_raul/Lib/site-packages/django_extensions/management/commands/__pycache__/create_jobs.cpython-310.pyc create mode 100644 gestao_raul/Lib/site-packages/django_extensions/management/commands/__pycache__/create_template_tags.cpython-310.pyc create mode 100644 gestao_raul/Lib/site-packages/django_extensions/management/commands/__pycache__/delete_squashed_migrations.cpython-310.pyc create mode 100644 gestao_raul/Lib/site-packages/django_extensions/management/commands/__pycache__/describe_form.cpython-310.pyc create mode 100644 gestao_raul/Lib/site-packages/django_extensions/management/commands/__pycache__/drop_test_database.cpython-310.pyc create mode 100644 gestao_raul/Lib/site-packages/django_extensions/management/commands/__pycache__/dumpscript.cpython-310.pyc create mode 100644 gestao_raul/Lib/site-packages/django_extensions/management/commands/__pycache__/export_emails.cpython-310.pyc create mode 100644 gestao_raul/Lib/site-packages/django_extensions/management/commands/__pycache__/find_template.cpython-310.pyc create mode 100644 gestao_raul/Lib/site-packages/django_extensions/management/commands/__pycache__/generate_password.cpython-310.pyc create mode 100644 gestao_raul/Lib/site-packages/django_extensions/management/commands/__pycache__/generate_secret_key.cpython-310.pyc create mode 100644 gestao_raul/Lib/site-packages/django_extensions/management/commands/__pycache__/graph_models.cpython-310.pyc create mode 100644 gestao_raul/Lib/site-packages/django_extensions/management/commands/__pycache__/list_model_info.cpython-310.pyc create mode 100644 gestao_raul/Lib/site-packages/django_extensions/management/commands/__pycache__/list_signals.cpython-310.pyc create mode 100644 gestao_raul/Lib/site-packages/django_extensions/management/commands/__pycache__/mail_debug.cpython-310.pyc create mode 100644 gestao_raul/Lib/site-packages/django_extensions/management/commands/__pycache__/managestate.cpython-310.pyc create mode 100644 gestao_raul/Lib/site-packages/django_extensions/management/commands/__pycache__/merge_model_instances.cpython-310.pyc create mode 100644 gestao_raul/Lib/site-packages/django_extensions/management/commands/__pycache__/notes.cpython-310.pyc create mode 100644 gestao_raul/Lib/site-packages/django_extensions/management/commands/__pycache__/pipchecker.cpython-310.pyc create mode 100644 gestao_raul/Lib/site-packages/django_extensions/management/commands/__pycache__/print_settings.cpython-310.pyc create mode 100644 gestao_raul/Lib/site-packages/django_extensions/management/commands/__pycache__/print_user_for_session.cpython-310.pyc create mode 100644 gestao_raul/Lib/site-packages/django_extensions/management/commands/__pycache__/raise_test_exception.cpython-310.pyc create mode 100644 gestao_raul/Lib/site-packages/django_extensions/management/commands/__pycache__/reset_db.cpython-310.pyc create mode 100644 gestao_raul/Lib/site-packages/django_extensions/management/commands/__pycache__/reset_schema.cpython-310.pyc create mode 100644 gestao_raul/Lib/site-packages/django_extensions/management/commands/__pycache__/runjob.cpython-310.pyc create mode 100644 gestao_raul/Lib/site-packages/django_extensions/management/commands/__pycache__/runjobs.cpython-310.pyc create mode 100644 gestao_raul/Lib/site-packages/django_extensions/management/commands/__pycache__/runprofileserver.cpython-310.pyc create mode 100644 gestao_raul/Lib/site-packages/django_extensions/management/commands/__pycache__/runscript.cpython-310.pyc create mode 100644 gestao_raul/Lib/site-packages/django_extensions/management/commands/__pycache__/runserver_plus.cpython-310.pyc create mode 100644 gestao_raul/Lib/site-packages/django_extensions/management/commands/__pycache__/set_default_site.cpython-310.pyc create mode 100644 gestao_raul/Lib/site-packages/django_extensions/management/commands/__pycache__/set_fake_emails.cpython-310.pyc create mode 100644 gestao_raul/Lib/site-packages/django_extensions/management/commands/__pycache__/set_fake_passwords.cpython-310.pyc create mode 100644 gestao_raul/Lib/site-packages/django_extensions/management/commands/__pycache__/shell_plus.cpython-310.pyc create mode 100644 gestao_raul/Lib/site-packages/django_extensions/management/commands/__pycache__/show_template_tags.cpython-310.pyc create mode 100644 gestao_raul/Lib/site-packages/django_extensions/management/commands/__pycache__/show_urls.cpython-310.pyc create mode 100644 gestao_raul/Lib/site-packages/django_extensions/management/commands/__pycache__/sqlcreate.cpython-310.pyc create mode 100644 gestao_raul/Lib/site-packages/django_extensions/management/commands/__pycache__/sqldiff.cpython-310.pyc create mode 100644 gestao_raul/Lib/site-packages/django_extensions/management/commands/__pycache__/sqldsn.cpython-310.pyc create mode 100644 gestao_raul/Lib/site-packages/django_extensions/management/commands/__pycache__/sync_s3.cpython-310.pyc create mode 100644 gestao_raul/Lib/site-packages/django_extensions/management/commands/__pycache__/syncdata.cpython-310.pyc create mode 100644 gestao_raul/Lib/site-packages/django_extensions/management/commands/__pycache__/unreferenced_files.cpython-310.pyc create mode 100644 gestao_raul/Lib/site-packages/django_extensions/management/commands/__pycache__/update_permissions.cpython-310.pyc create mode 100644 gestao_raul/Lib/site-packages/django_extensions/management/commands/__pycache__/validate_templates.cpython-310.pyc create mode 100644 gestao_raul/Lib/site-packages/django_extensions/management/commands/admin_generator.py create mode 100644 gestao_raul/Lib/site-packages/django_extensions/management/commands/clean_pyc.py create mode 100644 gestao_raul/Lib/site-packages/django_extensions/management/commands/clear_cache.py create mode 100644 gestao_raul/Lib/site-packages/django_extensions/management/commands/compile_pyc.py create mode 100644 gestao_raul/Lib/site-packages/django_extensions/management/commands/create_command.py create mode 100644 gestao_raul/Lib/site-packages/django_extensions/management/commands/create_jobs.py create mode 100644 gestao_raul/Lib/site-packages/django_extensions/management/commands/create_template_tags.py create mode 100644 gestao_raul/Lib/site-packages/django_extensions/management/commands/delete_squashed_migrations.py create mode 100644 gestao_raul/Lib/site-packages/django_extensions/management/commands/describe_form.py create mode 100644 gestao_raul/Lib/site-packages/django_extensions/management/commands/drop_test_database.py create mode 100644 gestao_raul/Lib/site-packages/django_extensions/management/commands/dumpscript.py create mode 100644 gestao_raul/Lib/site-packages/django_extensions/management/commands/export_emails.py create mode 100644 gestao_raul/Lib/site-packages/django_extensions/management/commands/find_template.py create mode 100644 gestao_raul/Lib/site-packages/django_extensions/management/commands/generate_password.py create mode 100644 gestao_raul/Lib/site-packages/django_extensions/management/commands/generate_secret_key.py create mode 100644 gestao_raul/Lib/site-packages/django_extensions/management/commands/graph_models.py create mode 100644 gestao_raul/Lib/site-packages/django_extensions/management/commands/list_model_info.py create mode 100644 gestao_raul/Lib/site-packages/django_extensions/management/commands/list_signals.py create mode 100644 gestao_raul/Lib/site-packages/django_extensions/management/commands/mail_debug.py create mode 100644 gestao_raul/Lib/site-packages/django_extensions/management/commands/managestate.py create mode 100644 gestao_raul/Lib/site-packages/django_extensions/management/commands/merge_model_instances.py create mode 100644 gestao_raul/Lib/site-packages/django_extensions/management/commands/notes.py create mode 100644 gestao_raul/Lib/site-packages/django_extensions/management/commands/pipchecker.py create mode 100644 gestao_raul/Lib/site-packages/django_extensions/management/commands/print_settings.py create mode 100644 gestao_raul/Lib/site-packages/django_extensions/management/commands/print_user_for_session.py create mode 100644 gestao_raul/Lib/site-packages/django_extensions/management/commands/raise_test_exception.py create mode 100644 gestao_raul/Lib/site-packages/django_extensions/management/commands/reset_db.py create mode 100644 gestao_raul/Lib/site-packages/django_extensions/management/commands/reset_schema.py create mode 100644 gestao_raul/Lib/site-packages/django_extensions/management/commands/runjob.py create mode 100644 gestao_raul/Lib/site-packages/django_extensions/management/commands/runjobs.py create mode 100644 gestao_raul/Lib/site-packages/django_extensions/management/commands/runprofileserver.py create mode 100644 gestao_raul/Lib/site-packages/django_extensions/management/commands/runscript.py create mode 100644 gestao_raul/Lib/site-packages/django_extensions/management/commands/runserver_plus.py create mode 100644 gestao_raul/Lib/site-packages/django_extensions/management/commands/set_default_site.py create mode 100644 gestao_raul/Lib/site-packages/django_extensions/management/commands/set_fake_emails.py create mode 100644 gestao_raul/Lib/site-packages/django_extensions/management/commands/set_fake_passwords.py create mode 100644 gestao_raul/Lib/site-packages/django_extensions/management/commands/shell_plus.py create mode 100644 gestao_raul/Lib/site-packages/django_extensions/management/commands/show_template_tags.py create mode 100644 gestao_raul/Lib/site-packages/django_extensions/management/commands/show_urls.py create mode 100644 gestao_raul/Lib/site-packages/django_extensions/management/commands/sqlcreate.py create mode 100644 gestao_raul/Lib/site-packages/django_extensions/management/commands/sqldiff.py create mode 100644 gestao_raul/Lib/site-packages/django_extensions/management/commands/sqldsn.py create mode 100644 gestao_raul/Lib/site-packages/django_extensions/management/commands/sync_s3.py create mode 100644 gestao_raul/Lib/site-packages/django_extensions/management/commands/syncdata.py create mode 100644 gestao_raul/Lib/site-packages/django_extensions/management/commands/unreferenced_files.py create mode 100644 gestao_raul/Lib/site-packages/django_extensions/management/commands/update_permissions.py create mode 100644 gestao_raul/Lib/site-packages/django_extensions/management/commands/validate_templates.py create mode 100644 gestao_raul/Lib/site-packages/django_extensions/management/debug_cursor.py create mode 100644 gestao_raul/Lib/site-packages/django_extensions/management/email_notifications.py create mode 100644 gestao_raul/Lib/site-packages/django_extensions/management/jobs.py create mode 100644 gestao_raul/Lib/site-packages/django_extensions/management/modelviz.py create mode 100644 gestao_raul/Lib/site-packages/django_extensions/management/mysql.py create mode 100644 gestao_raul/Lib/site-packages/django_extensions/management/notebook_extension.py create mode 100644 gestao_raul/Lib/site-packages/django_extensions/management/shells.py create mode 100644 gestao_raul/Lib/site-packages/django_extensions/management/signals.py create mode 100644 gestao_raul/Lib/site-packages/django_extensions/management/technical_response.py create mode 100644 gestao_raul/Lib/site-packages/django_extensions/management/utils.py create mode 100644 gestao_raul/Lib/site-packages/django_extensions/models.py create mode 100644 gestao_raul/Lib/site-packages/django_extensions/mongodb/__init__.py create mode 100644 gestao_raul/Lib/site-packages/django_extensions/mongodb/__pycache__/__init__.cpython-310.pyc create mode 100644 gestao_raul/Lib/site-packages/django_extensions/mongodb/__pycache__/models.cpython-310.pyc create mode 100644 gestao_raul/Lib/site-packages/django_extensions/mongodb/fields/__init__.py create mode 100644 gestao_raul/Lib/site-packages/django_extensions/mongodb/fields/__pycache__/__init__.cpython-310.pyc create mode 100644 gestao_raul/Lib/site-packages/django_extensions/mongodb/fields/__pycache__/json.cpython-310.pyc create mode 100644 gestao_raul/Lib/site-packages/django_extensions/mongodb/fields/json.py create mode 100644 gestao_raul/Lib/site-packages/django_extensions/mongodb/models.py create mode 100644 gestao_raul/Lib/site-packages/django_extensions/settings.py create mode 100644 gestao_raul/Lib/site-packages/django_extensions/static/django_extensions/css/jquery.autocomplete.css create mode 100644 gestao_raul/Lib/site-packages/django_extensions/static/django_extensions/img/indicator.gif create mode 100644 gestao_raul/Lib/site-packages/django_extensions/static/django_extensions/js/jquery.ajaxQueue.js create mode 100644 gestao_raul/Lib/site-packages/django_extensions/static/django_extensions/js/jquery.autocomplete.js create mode 100644 gestao_raul/Lib/site-packages/django_extensions/static/django_extensions/js/jquery.bgiframe.js create mode 100644 gestao_raul/Lib/site-packages/django_extensions/templates/django_extensions/graph_models/django2018/digraph.dot create mode 100644 gestao_raul/Lib/site-packages/django_extensions/templates/django_extensions/graph_models/django2018/label.dot create mode 100644 gestao_raul/Lib/site-packages/django_extensions/templates/django_extensions/graph_models/django2018/relation.dot create mode 100644 gestao_raul/Lib/site-packages/django_extensions/templates/django_extensions/graph_models/original/digraph.dot create mode 100644 gestao_raul/Lib/site-packages/django_extensions/templates/django_extensions/graph_models/original/label.dot create mode 100644 gestao_raul/Lib/site-packages/django_extensions/templates/django_extensions/graph_models/original/relation.dot create mode 100644 gestao_raul/Lib/site-packages/django_extensions/templates/django_extensions/widgets/foreignkey_searchinput.html create mode 100644 gestao_raul/Lib/site-packages/django_extensions/templatetags/__init__.py create mode 100644 gestao_raul/Lib/site-packages/django_extensions/templatetags/__pycache__/__init__.cpython-310.pyc create mode 100644 gestao_raul/Lib/site-packages/django_extensions/templatetags/__pycache__/debugger_tags.cpython-310.pyc create mode 100644 gestao_raul/Lib/site-packages/django_extensions/templatetags/__pycache__/highlighting.cpython-310.pyc create mode 100644 gestao_raul/Lib/site-packages/django_extensions/templatetags/__pycache__/indent_text.cpython-310.pyc create mode 100644 gestao_raul/Lib/site-packages/django_extensions/templatetags/__pycache__/syntax_color.cpython-310.pyc create mode 100644 gestao_raul/Lib/site-packages/django_extensions/templatetags/__pycache__/widont.cpython-310.pyc create mode 100644 gestao_raul/Lib/site-packages/django_extensions/templatetags/debugger_tags.py create mode 100644 gestao_raul/Lib/site-packages/django_extensions/templatetags/highlighting.py create mode 100644 gestao_raul/Lib/site-packages/django_extensions/templatetags/indent_text.py create mode 100644 gestao_raul/Lib/site-packages/django_extensions/templatetags/syntax_color.py create mode 100644 gestao_raul/Lib/site-packages/django_extensions/templatetags/widont.py create mode 100644 gestao_raul/Lib/site-packages/django_extensions/utils/__init__.py create mode 100644 gestao_raul/Lib/site-packages/django_extensions/utils/__pycache__/__init__.cpython-310.pyc create mode 100644 gestao_raul/Lib/site-packages/django_extensions/utils/__pycache__/deprecation.cpython-310.pyc create mode 100644 gestao_raul/Lib/site-packages/django_extensions/utils/__pycache__/dia2django.cpython-310.pyc create mode 100644 gestao_raul/Lib/site-packages/django_extensions/utils/__pycache__/internal_ips.cpython-310.pyc create mode 100644 gestao_raul/Lib/site-packages/django_extensions/utils/deprecation.py create mode 100644 gestao_raul/Lib/site-packages/django_extensions/utils/dia2django.py create mode 100644 gestao_raul/Lib/site-packages/django_extensions/utils/internal_ips.py create mode 100644 gestao_raul/Lib/site-packages/django_extensions/validators.py create mode 100644 gestao_raul/Lib/site-packages/django_pwa-2.0.1.dist-info/INSTALLER create mode 100644 gestao_raul/Lib/site-packages/django_pwa-2.0.1.dist-info/METADATA create mode 100644 gestao_raul/Lib/site-packages/django_pwa-2.0.1.dist-info/RECORD create mode 100644 gestao_raul/Lib/site-packages/django_pwa-2.0.1.dist-info/REQUESTED create mode 100644 gestao_raul/Lib/site-packages/django_pwa-2.0.1.dist-info/WHEEL create mode 100644 gestao_raul/Lib/site-packages/django_pwa-2.0.1.dist-info/licenses/LICENSE create mode 100644 gestao_raul/Lib/site-packages/markupsafe/__init__.py create mode 100644 gestao_raul/Lib/site-packages/markupsafe/__pycache__/__init__.cpython-310.pyc create mode 100644 gestao_raul/Lib/site-packages/markupsafe/__pycache__/_native.cpython-310.pyc create mode 100644 gestao_raul/Lib/site-packages/markupsafe/_native.py create mode 100644 gestao_raul/Lib/site-packages/markupsafe/_speedups.c create mode 100644 gestao_raul/Lib/site-packages/markupsafe/_speedups.cp310-win_amd64.pyd create mode 100644 gestao_raul/Lib/site-packages/markupsafe/_speedups.pyi create mode 100644 gestao_raul/Lib/site-packages/markupsafe/py.typed create mode 100644 gestao_raul/Lib/site-packages/pillow-11.1.0.dist-info/INSTALLER rename gestao_raul/Lib/site-packages/{pillow-11.0.0.dist-info => pillow-11.1.0.dist-info}/LICENSE (96%) rename gestao_raul/Lib/site-packages/{pillow-11.0.0.dist-info => pillow-11.1.0.dist-info}/METADATA (87%) rename gestao_raul/Lib/site-packages/{pillow-11.0.0.dist-info => pillow-11.1.0.dist-info}/RECORD (70%) create mode 100644 gestao_raul/Lib/site-packages/pillow-11.1.0.dist-info/REQUESTED create mode 100644 gestao_raul/Lib/site-packages/pillow-11.1.0.dist-info/WHEEL rename gestao_raul/Lib/site-packages/{pillow-11.0.0.dist-info => pillow-11.1.0.dist-info}/top_level.txt (100%) rename gestao_raul/Lib/site-packages/{pillow-11.0.0.dist-info => pillow-11.1.0.dist-info}/zip-safe (100%) delete mode 100644 gestao_raul/Lib/site-packages/pip-23.0.1.dist-info/RECORD create mode 100644 gestao_raul/Lib/site-packages/pip-25.0.1.dist-info/AUTHORS.txt create mode 100644 gestao_raul/Lib/site-packages/pip-25.0.1.dist-info/INSTALLER rename gestao_raul/Lib/site-packages/{pip-23.0.1.dist-info => pip-25.0.1.dist-info}/LICENSE.txt (100%) rename gestao_raul/Lib/site-packages/{pip-23.0.1.dist-info => pip-25.0.1.dist-info}/METADATA (73%) create mode 100644 gestao_raul/Lib/site-packages/pip-25.0.1.dist-info/RECORD create mode 100644 gestao_raul/Lib/site-packages/pip-25.0.1.dist-info/REQUESTED create mode 100644 gestao_raul/Lib/site-packages/pip-25.0.1.dist-info/WHEEL rename gestao_raul/Lib/site-packages/{pip-23.0.1.dist-info => pip-25.0.1.dist-info}/entry_points.txt (70%) create mode 100644 gestao_raul/Lib/site-packages/pip-25.0.1.dist-info/top_level.txt create mode 100644 gestao_raul/Lib/site-packages/pip/_internal/cli/__pycache__/index_command.cpython-310.pyc create mode 100644 gestao_raul/Lib/site-packages/pip/_internal/cli/index_command.py delete mode 100644 gestao_raul/Lib/site-packages/pip/_internal/operations/install/__pycache__/legacy.cpython-310.pyc delete mode 100644 gestao_raul/Lib/site-packages/pip/_internal/operations/install/legacy.py create mode 100644 gestao_raul/Lib/site-packages/pip/_internal/utils/__pycache__/_jaraco_text.cpython-310.pyc delete mode 100644 gestao_raul/Lib/site-packages/pip/_internal/utils/__pycache__/distutils_args.cpython-310.pyc delete mode 100644 gestao_raul/Lib/site-packages/pip/_internal/utils/__pycache__/encoding.cpython-310.pyc delete mode 100644 gestao_raul/Lib/site-packages/pip/_internal/utils/__pycache__/inject_securetransport.cpython-310.pyc delete mode 100644 gestao_raul/Lib/site-packages/pip/_internal/utils/__pycache__/models.cpython-310.pyc create mode 100644 gestao_raul/Lib/site-packages/pip/_internal/utils/__pycache__/retry.cpython-310.pyc create mode 100644 gestao_raul/Lib/site-packages/pip/_internal/utils/_jaraco_text.py delete mode 100644 gestao_raul/Lib/site-packages/pip/_internal/utils/distutils_args.py delete mode 100644 gestao_raul/Lib/site-packages/pip/_internal/utils/encoding.py delete mode 100644 gestao_raul/Lib/site-packages/pip/_internal/utils/inject_securetransport.py delete mode 100644 gestao_raul/Lib/site-packages/pip/_internal/utils/models.py create mode 100644 gestao_raul/Lib/site-packages/pip/_internal/utils/retry.py delete mode 100644 gestao_raul/Lib/site-packages/pip/_vendor/__pycache__/six.cpython-310.pyc delete mode 100644 gestao_raul/Lib/site-packages/pip/_vendor/cachecontrol/__pycache__/compat.cpython-310.pyc delete mode 100644 gestao_raul/Lib/site-packages/pip/_vendor/cachecontrol/compat.py create mode 100644 gestao_raul/Lib/site-packages/pip/_vendor/cachecontrol/py.typed create mode 100644 gestao_raul/Lib/site-packages/pip/_vendor/certifi/py.typed delete mode 100644 gestao_raul/Lib/site-packages/pip/_vendor/chardet/__init__.py delete mode 100644 gestao_raul/Lib/site-packages/pip/_vendor/chardet/__pycache__/__init__.cpython-310.pyc delete mode 100644 gestao_raul/Lib/site-packages/pip/_vendor/chardet/__pycache__/big5freq.cpython-310.pyc delete mode 100644 gestao_raul/Lib/site-packages/pip/_vendor/chardet/__pycache__/big5prober.cpython-310.pyc delete mode 100644 gestao_raul/Lib/site-packages/pip/_vendor/chardet/__pycache__/chardistribution.cpython-310.pyc delete mode 100644 gestao_raul/Lib/site-packages/pip/_vendor/chardet/__pycache__/charsetgroupprober.cpython-310.pyc delete mode 100644 gestao_raul/Lib/site-packages/pip/_vendor/chardet/__pycache__/charsetprober.cpython-310.pyc delete mode 100644 gestao_raul/Lib/site-packages/pip/_vendor/chardet/__pycache__/codingstatemachine.cpython-310.pyc delete mode 100644 gestao_raul/Lib/site-packages/pip/_vendor/chardet/__pycache__/codingstatemachinedict.cpython-310.pyc delete mode 100644 gestao_raul/Lib/site-packages/pip/_vendor/chardet/__pycache__/cp949prober.cpython-310.pyc delete mode 100644 gestao_raul/Lib/site-packages/pip/_vendor/chardet/__pycache__/enums.cpython-310.pyc delete mode 100644 gestao_raul/Lib/site-packages/pip/_vendor/chardet/__pycache__/escprober.cpython-310.pyc delete mode 100644 gestao_raul/Lib/site-packages/pip/_vendor/chardet/__pycache__/escsm.cpython-310.pyc delete mode 100644 gestao_raul/Lib/site-packages/pip/_vendor/chardet/__pycache__/eucjpprober.cpython-310.pyc delete mode 100644 gestao_raul/Lib/site-packages/pip/_vendor/chardet/__pycache__/euckrfreq.cpython-310.pyc delete mode 100644 gestao_raul/Lib/site-packages/pip/_vendor/chardet/__pycache__/euckrprober.cpython-310.pyc delete mode 100644 gestao_raul/Lib/site-packages/pip/_vendor/chardet/__pycache__/euctwfreq.cpython-310.pyc delete mode 100644 gestao_raul/Lib/site-packages/pip/_vendor/chardet/__pycache__/euctwprober.cpython-310.pyc delete mode 100644 gestao_raul/Lib/site-packages/pip/_vendor/chardet/__pycache__/gb2312freq.cpython-310.pyc delete mode 100644 gestao_raul/Lib/site-packages/pip/_vendor/chardet/__pycache__/gb2312prober.cpython-310.pyc delete mode 100644 gestao_raul/Lib/site-packages/pip/_vendor/chardet/__pycache__/hebrewprober.cpython-310.pyc delete mode 100644 gestao_raul/Lib/site-packages/pip/_vendor/chardet/__pycache__/jisfreq.cpython-310.pyc delete mode 100644 gestao_raul/Lib/site-packages/pip/_vendor/chardet/__pycache__/johabfreq.cpython-310.pyc delete mode 100644 gestao_raul/Lib/site-packages/pip/_vendor/chardet/__pycache__/johabprober.cpython-310.pyc delete mode 100644 gestao_raul/Lib/site-packages/pip/_vendor/chardet/__pycache__/jpcntx.cpython-310.pyc delete mode 100644 gestao_raul/Lib/site-packages/pip/_vendor/chardet/__pycache__/langbulgarianmodel.cpython-310.pyc delete mode 100644 gestao_raul/Lib/site-packages/pip/_vendor/chardet/__pycache__/langgreekmodel.cpython-310.pyc delete mode 100644 gestao_raul/Lib/site-packages/pip/_vendor/chardet/__pycache__/langhebrewmodel.cpython-310.pyc delete mode 100644 gestao_raul/Lib/site-packages/pip/_vendor/chardet/__pycache__/langhungarianmodel.cpython-310.pyc delete mode 100644 gestao_raul/Lib/site-packages/pip/_vendor/chardet/__pycache__/langrussianmodel.cpython-310.pyc delete mode 100644 gestao_raul/Lib/site-packages/pip/_vendor/chardet/__pycache__/langthaimodel.cpython-310.pyc delete mode 100644 gestao_raul/Lib/site-packages/pip/_vendor/chardet/__pycache__/langturkishmodel.cpython-310.pyc delete mode 100644 gestao_raul/Lib/site-packages/pip/_vendor/chardet/__pycache__/latin1prober.cpython-310.pyc delete mode 100644 gestao_raul/Lib/site-packages/pip/_vendor/chardet/__pycache__/macromanprober.cpython-310.pyc delete mode 100644 gestao_raul/Lib/site-packages/pip/_vendor/chardet/__pycache__/mbcharsetprober.cpython-310.pyc delete mode 100644 gestao_raul/Lib/site-packages/pip/_vendor/chardet/__pycache__/mbcsgroupprober.cpython-310.pyc delete mode 100644 gestao_raul/Lib/site-packages/pip/_vendor/chardet/__pycache__/mbcssm.cpython-310.pyc delete mode 100644 gestao_raul/Lib/site-packages/pip/_vendor/chardet/__pycache__/resultdict.cpython-310.pyc delete mode 100644 gestao_raul/Lib/site-packages/pip/_vendor/chardet/__pycache__/sbcharsetprober.cpython-310.pyc delete mode 100644 gestao_raul/Lib/site-packages/pip/_vendor/chardet/__pycache__/sbcsgroupprober.cpython-310.pyc delete mode 100644 gestao_raul/Lib/site-packages/pip/_vendor/chardet/__pycache__/sjisprober.cpython-310.pyc delete mode 100644 gestao_raul/Lib/site-packages/pip/_vendor/chardet/__pycache__/universaldetector.cpython-310.pyc delete mode 100644 gestao_raul/Lib/site-packages/pip/_vendor/chardet/__pycache__/utf1632prober.cpython-310.pyc delete mode 100644 gestao_raul/Lib/site-packages/pip/_vendor/chardet/__pycache__/utf8prober.cpython-310.pyc delete mode 100644 gestao_raul/Lib/site-packages/pip/_vendor/chardet/__pycache__/version.cpython-310.pyc delete mode 100644 gestao_raul/Lib/site-packages/pip/_vendor/chardet/big5freq.py delete mode 100644 gestao_raul/Lib/site-packages/pip/_vendor/chardet/big5prober.py delete mode 100644 gestao_raul/Lib/site-packages/pip/_vendor/chardet/chardistribution.py delete mode 100644 gestao_raul/Lib/site-packages/pip/_vendor/chardet/charsetgroupprober.py delete mode 100644 gestao_raul/Lib/site-packages/pip/_vendor/chardet/charsetprober.py delete mode 100644 gestao_raul/Lib/site-packages/pip/_vendor/chardet/cli/__pycache__/__init__.cpython-310.pyc delete mode 100644 gestao_raul/Lib/site-packages/pip/_vendor/chardet/cli/__pycache__/chardetect.cpython-310.pyc delete mode 100644 gestao_raul/Lib/site-packages/pip/_vendor/chardet/cli/chardetect.py delete mode 100644 gestao_raul/Lib/site-packages/pip/_vendor/chardet/codingstatemachine.py delete mode 100644 gestao_raul/Lib/site-packages/pip/_vendor/chardet/codingstatemachinedict.py delete mode 100644 gestao_raul/Lib/site-packages/pip/_vendor/chardet/cp949prober.py delete mode 100644 gestao_raul/Lib/site-packages/pip/_vendor/chardet/enums.py delete mode 100644 gestao_raul/Lib/site-packages/pip/_vendor/chardet/escprober.py delete mode 100644 gestao_raul/Lib/site-packages/pip/_vendor/chardet/escsm.py delete mode 100644 gestao_raul/Lib/site-packages/pip/_vendor/chardet/eucjpprober.py delete mode 100644 gestao_raul/Lib/site-packages/pip/_vendor/chardet/euckrfreq.py delete mode 100644 gestao_raul/Lib/site-packages/pip/_vendor/chardet/euckrprober.py delete mode 100644 gestao_raul/Lib/site-packages/pip/_vendor/chardet/euctwfreq.py delete mode 100644 gestao_raul/Lib/site-packages/pip/_vendor/chardet/euctwprober.py delete mode 100644 gestao_raul/Lib/site-packages/pip/_vendor/chardet/gb2312freq.py delete mode 100644 gestao_raul/Lib/site-packages/pip/_vendor/chardet/gb2312prober.py delete mode 100644 gestao_raul/Lib/site-packages/pip/_vendor/chardet/hebrewprober.py delete mode 100644 gestao_raul/Lib/site-packages/pip/_vendor/chardet/jisfreq.py delete mode 100644 gestao_raul/Lib/site-packages/pip/_vendor/chardet/johabfreq.py delete mode 100644 gestao_raul/Lib/site-packages/pip/_vendor/chardet/johabprober.py delete mode 100644 gestao_raul/Lib/site-packages/pip/_vendor/chardet/jpcntx.py delete mode 100644 gestao_raul/Lib/site-packages/pip/_vendor/chardet/langbulgarianmodel.py delete mode 100644 gestao_raul/Lib/site-packages/pip/_vendor/chardet/langgreekmodel.py delete mode 100644 gestao_raul/Lib/site-packages/pip/_vendor/chardet/langhebrewmodel.py delete mode 100644 gestao_raul/Lib/site-packages/pip/_vendor/chardet/langhungarianmodel.py delete mode 100644 gestao_raul/Lib/site-packages/pip/_vendor/chardet/langrussianmodel.py delete mode 100644 gestao_raul/Lib/site-packages/pip/_vendor/chardet/langthaimodel.py delete mode 100644 gestao_raul/Lib/site-packages/pip/_vendor/chardet/langturkishmodel.py delete mode 100644 gestao_raul/Lib/site-packages/pip/_vendor/chardet/latin1prober.py delete mode 100644 gestao_raul/Lib/site-packages/pip/_vendor/chardet/macromanprober.py delete mode 100644 gestao_raul/Lib/site-packages/pip/_vendor/chardet/mbcharsetprober.py delete mode 100644 gestao_raul/Lib/site-packages/pip/_vendor/chardet/mbcsgroupprober.py delete mode 100644 gestao_raul/Lib/site-packages/pip/_vendor/chardet/mbcssm.py delete mode 100644 gestao_raul/Lib/site-packages/pip/_vendor/chardet/metadata/__pycache__/__init__.cpython-310.pyc delete mode 100644 gestao_raul/Lib/site-packages/pip/_vendor/chardet/metadata/__pycache__/languages.cpython-310.pyc delete mode 100644 gestao_raul/Lib/site-packages/pip/_vendor/chardet/metadata/languages.py delete mode 100644 gestao_raul/Lib/site-packages/pip/_vendor/chardet/resultdict.py delete mode 100644 gestao_raul/Lib/site-packages/pip/_vendor/chardet/sbcharsetprober.py delete mode 100644 gestao_raul/Lib/site-packages/pip/_vendor/chardet/sbcsgroupprober.py delete mode 100644 gestao_raul/Lib/site-packages/pip/_vendor/chardet/sjisprober.py delete mode 100644 gestao_raul/Lib/site-packages/pip/_vendor/chardet/universaldetector.py delete mode 100644 gestao_raul/Lib/site-packages/pip/_vendor/chardet/utf1632prober.py delete mode 100644 gestao_raul/Lib/site-packages/pip/_vendor/chardet/utf8prober.py delete mode 100644 gestao_raul/Lib/site-packages/pip/_vendor/chardet/version.py delete mode 100644 gestao_raul/Lib/site-packages/pip/_vendor/colorama/__init__.py delete mode 100644 gestao_raul/Lib/site-packages/pip/_vendor/colorama/__pycache__/__init__.cpython-310.pyc delete mode 100644 gestao_raul/Lib/site-packages/pip/_vendor/colorama/__pycache__/ansi.cpython-310.pyc delete mode 100644 gestao_raul/Lib/site-packages/pip/_vendor/colorama/__pycache__/ansitowin32.cpython-310.pyc delete mode 100644 gestao_raul/Lib/site-packages/pip/_vendor/colorama/__pycache__/initialise.cpython-310.pyc delete mode 100644 gestao_raul/Lib/site-packages/pip/_vendor/colorama/__pycache__/win32.cpython-310.pyc delete mode 100644 gestao_raul/Lib/site-packages/pip/_vendor/colorama/__pycache__/winterm.cpython-310.pyc delete mode 100644 gestao_raul/Lib/site-packages/pip/_vendor/colorama/ansi.py delete mode 100644 gestao_raul/Lib/site-packages/pip/_vendor/colorama/ansitowin32.py delete mode 100644 gestao_raul/Lib/site-packages/pip/_vendor/colorama/initialise.py delete mode 100644 gestao_raul/Lib/site-packages/pip/_vendor/colorama/tests/__init__.py delete mode 100644 gestao_raul/Lib/site-packages/pip/_vendor/colorama/tests/__pycache__/__init__.cpython-310.pyc delete mode 100644 gestao_raul/Lib/site-packages/pip/_vendor/colorama/tests/__pycache__/ansi_test.cpython-310.pyc delete mode 100644 gestao_raul/Lib/site-packages/pip/_vendor/colorama/tests/__pycache__/ansitowin32_test.cpython-310.pyc delete mode 100644 gestao_raul/Lib/site-packages/pip/_vendor/colorama/tests/__pycache__/initialise_test.cpython-310.pyc delete mode 100644 gestao_raul/Lib/site-packages/pip/_vendor/colorama/tests/__pycache__/isatty_test.cpython-310.pyc delete mode 100644 gestao_raul/Lib/site-packages/pip/_vendor/colorama/tests/__pycache__/utils.cpython-310.pyc delete mode 100644 gestao_raul/Lib/site-packages/pip/_vendor/colorama/tests/__pycache__/winterm_test.cpython-310.pyc delete mode 100644 gestao_raul/Lib/site-packages/pip/_vendor/colorama/tests/ansi_test.py delete mode 100644 gestao_raul/Lib/site-packages/pip/_vendor/colorama/tests/ansitowin32_test.py delete mode 100644 gestao_raul/Lib/site-packages/pip/_vendor/colorama/tests/initialise_test.py delete mode 100644 gestao_raul/Lib/site-packages/pip/_vendor/colorama/tests/isatty_test.py delete mode 100644 gestao_raul/Lib/site-packages/pip/_vendor/colorama/tests/utils.py delete mode 100644 gestao_raul/Lib/site-packages/pip/_vendor/colorama/tests/winterm_test.py delete mode 100644 gestao_raul/Lib/site-packages/pip/_vendor/colorama/win32.py delete mode 100644 gestao_raul/Lib/site-packages/pip/_vendor/colorama/winterm.py create mode 100644 gestao_raul/Lib/site-packages/pip/_vendor/distro/py.typed create mode 100644 gestao_raul/Lib/site-packages/pip/_vendor/idna/py.typed delete mode 100644 gestao_raul/Lib/site-packages/pip/_vendor/packaging/__about__.py delete mode 100644 gestao_raul/Lib/site-packages/pip/_vendor/packaging/__pycache__/__about__.cpython-310.pyc create mode 100644 gestao_raul/Lib/site-packages/pip/_vendor/packaging/__pycache__/_elffile.cpython-310.pyc create mode 100644 gestao_raul/Lib/site-packages/pip/_vendor/packaging/__pycache__/_parser.cpython-310.pyc create mode 100644 gestao_raul/Lib/site-packages/pip/_vendor/packaging/__pycache__/_tokenizer.cpython-310.pyc create mode 100644 gestao_raul/Lib/site-packages/pip/_vendor/packaging/__pycache__/metadata.cpython-310.pyc create mode 100644 gestao_raul/Lib/site-packages/pip/_vendor/packaging/_elffile.py create mode 100644 gestao_raul/Lib/site-packages/pip/_vendor/packaging/_parser.py create mode 100644 gestao_raul/Lib/site-packages/pip/_vendor/packaging/_tokenizer.py create mode 100644 gestao_raul/Lib/site-packages/pip/_vendor/packaging/licenses/__init__.py create mode 100644 gestao_raul/Lib/site-packages/pip/_vendor/packaging/licenses/__pycache__/__init__.cpython-310.pyc create mode 100644 gestao_raul/Lib/site-packages/pip/_vendor/packaging/licenses/__pycache__/_spdx.cpython-310.pyc create mode 100644 gestao_raul/Lib/site-packages/pip/_vendor/packaging/licenses/_spdx.py create mode 100644 gestao_raul/Lib/site-packages/pip/_vendor/packaging/metadata.py create mode 100644 gestao_raul/Lib/site-packages/pip/_vendor/packaging/py.typed delete mode 100644 gestao_raul/Lib/site-packages/pip/_vendor/pkg_resources/__pycache__/py31compat.cpython-310.pyc delete mode 100644 gestao_raul/Lib/site-packages/pip/_vendor/pkg_resources/py31compat.py create mode 100644 gestao_raul/Lib/site-packages/pip/_vendor/platformdirs/py.typed create mode 100644 gestao_raul/Lib/site-packages/pip/_vendor/pygments/styles/__pycache__/_mapping.cpython-310.pyc create mode 100644 gestao_raul/Lib/site-packages/pip/_vendor/pygments/styles/_mapping.py delete mode 100644 gestao_raul/Lib/site-packages/pip/_vendor/pyparsing/__init__.py delete mode 100644 gestao_raul/Lib/site-packages/pip/_vendor/pyparsing/__pycache__/__init__.cpython-310.pyc delete mode 100644 gestao_raul/Lib/site-packages/pip/_vendor/pyparsing/__pycache__/actions.cpython-310.pyc delete mode 100644 gestao_raul/Lib/site-packages/pip/_vendor/pyparsing/__pycache__/common.cpython-310.pyc delete mode 100644 gestao_raul/Lib/site-packages/pip/_vendor/pyparsing/__pycache__/core.cpython-310.pyc delete mode 100644 gestao_raul/Lib/site-packages/pip/_vendor/pyparsing/__pycache__/exceptions.cpython-310.pyc delete mode 100644 gestao_raul/Lib/site-packages/pip/_vendor/pyparsing/__pycache__/helpers.cpython-310.pyc delete mode 100644 gestao_raul/Lib/site-packages/pip/_vendor/pyparsing/__pycache__/results.cpython-310.pyc delete mode 100644 gestao_raul/Lib/site-packages/pip/_vendor/pyparsing/__pycache__/testing.cpython-310.pyc delete mode 100644 gestao_raul/Lib/site-packages/pip/_vendor/pyparsing/__pycache__/unicode.cpython-310.pyc delete mode 100644 gestao_raul/Lib/site-packages/pip/_vendor/pyparsing/__pycache__/util.cpython-310.pyc delete mode 100644 gestao_raul/Lib/site-packages/pip/_vendor/pyparsing/actions.py delete mode 100644 gestao_raul/Lib/site-packages/pip/_vendor/pyparsing/common.py delete mode 100644 gestao_raul/Lib/site-packages/pip/_vendor/pyparsing/core.py delete mode 100644 gestao_raul/Lib/site-packages/pip/_vendor/pyparsing/diagram/__init__.py delete mode 100644 gestao_raul/Lib/site-packages/pip/_vendor/pyparsing/diagram/__pycache__/__init__.cpython-310.pyc delete mode 100644 gestao_raul/Lib/site-packages/pip/_vendor/pyparsing/exceptions.py delete mode 100644 gestao_raul/Lib/site-packages/pip/_vendor/pyparsing/helpers.py delete mode 100644 gestao_raul/Lib/site-packages/pip/_vendor/pyparsing/results.py delete mode 100644 gestao_raul/Lib/site-packages/pip/_vendor/pyparsing/testing.py delete mode 100644 gestao_raul/Lib/site-packages/pip/_vendor/pyparsing/unicode.py delete mode 100644 gestao_raul/Lib/site-packages/pip/_vendor/pyparsing/util.py delete mode 100644 gestao_raul/Lib/site-packages/pip/_vendor/pyproject_hooks/__pycache__/_compat.cpython-310.pyc delete mode 100644 gestao_raul/Lib/site-packages/pip/_vendor/pyproject_hooks/_compat.py create mode 100644 gestao_raul/Lib/site-packages/pip/_vendor/pyproject_hooks/py.typed create mode 100644 gestao_raul/Lib/site-packages/pip/_vendor/resolvelib/py.typed create mode 100644 gestao_raul/Lib/site-packages/pip/_vendor/rich/__pycache__/_fileno.cpython-310.pyc create mode 100644 gestao_raul/Lib/site-packages/pip/_vendor/rich/_fileno.py create mode 100644 gestao_raul/Lib/site-packages/pip/_vendor/rich/py.typed delete mode 100644 gestao_raul/Lib/site-packages/pip/_vendor/six.py delete mode 100644 gestao_raul/Lib/site-packages/pip/_vendor/tenacity/__init__.py delete mode 100644 gestao_raul/Lib/site-packages/pip/_vendor/tenacity/__pycache__/__init__.cpython-310.pyc delete mode 100644 gestao_raul/Lib/site-packages/pip/_vendor/tenacity/__pycache__/_asyncio.cpython-310.pyc delete mode 100644 gestao_raul/Lib/site-packages/pip/_vendor/tenacity/__pycache__/_utils.cpython-310.pyc delete mode 100644 gestao_raul/Lib/site-packages/pip/_vendor/tenacity/__pycache__/after.cpython-310.pyc delete mode 100644 gestao_raul/Lib/site-packages/pip/_vendor/tenacity/__pycache__/before.cpython-310.pyc delete mode 100644 gestao_raul/Lib/site-packages/pip/_vendor/tenacity/__pycache__/before_sleep.cpython-310.pyc delete mode 100644 gestao_raul/Lib/site-packages/pip/_vendor/tenacity/__pycache__/nap.cpython-310.pyc delete mode 100644 gestao_raul/Lib/site-packages/pip/_vendor/tenacity/__pycache__/retry.cpython-310.pyc delete mode 100644 gestao_raul/Lib/site-packages/pip/_vendor/tenacity/__pycache__/stop.cpython-310.pyc delete mode 100644 gestao_raul/Lib/site-packages/pip/_vendor/tenacity/__pycache__/tornadoweb.cpython-310.pyc delete mode 100644 gestao_raul/Lib/site-packages/pip/_vendor/tenacity/__pycache__/wait.cpython-310.pyc delete mode 100644 gestao_raul/Lib/site-packages/pip/_vendor/tenacity/_asyncio.py delete mode 100644 gestao_raul/Lib/site-packages/pip/_vendor/tenacity/_utils.py delete mode 100644 gestao_raul/Lib/site-packages/pip/_vendor/tenacity/after.py delete mode 100644 gestao_raul/Lib/site-packages/pip/_vendor/tenacity/before.py delete mode 100644 gestao_raul/Lib/site-packages/pip/_vendor/tenacity/before_sleep.py delete mode 100644 gestao_raul/Lib/site-packages/pip/_vendor/tenacity/nap.py delete mode 100644 gestao_raul/Lib/site-packages/pip/_vendor/tenacity/retry.py delete mode 100644 gestao_raul/Lib/site-packages/pip/_vendor/tenacity/stop.py delete mode 100644 gestao_raul/Lib/site-packages/pip/_vendor/tenacity/tornadoweb.py delete mode 100644 gestao_raul/Lib/site-packages/pip/_vendor/tenacity/wait.py create mode 100644 gestao_raul/Lib/site-packages/pip/_vendor/tomli/py.typed create mode 100644 gestao_raul/Lib/site-packages/pip/_vendor/truststore/__init__.py create mode 100644 gestao_raul/Lib/site-packages/pip/_vendor/truststore/__pycache__/__init__.cpython-310.pyc create mode 100644 gestao_raul/Lib/site-packages/pip/_vendor/truststore/__pycache__/_api.cpython-310.pyc create mode 100644 gestao_raul/Lib/site-packages/pip/_vendor/truststore/__pycache__/_macos.cpython-310.pyc create mode 100644 gestao_raul/Lib/site-packages/pip/_vendor/truststore/__pycache__/_openssl.cpython-310.pyc create mode 100644 gestao_raul/Lib/site-packages/pip/_vendor/truststore/__pycache__/_ssl_constants.cpython-310.pyc create mode 100644 gestao_raul/Lib/site-packages/pip/_vendor/truststore/__pycache__/_windows.cpython-310.pyc create mode 100644 gestao_raul/Lib/site-packages/pip/_vendor/truststore/_api.py create mode 100644 gestao_raul/Lib/site-packages/pip/_vendor/truststore/_macos.py create mode 100644 gestao_raul/Lib/site-packages/pip/_vendor/truststore/_openssl.py create mode 100644 gestao_raul/Lib/site-packages/pip/_vendor/truststore/_ssl_constants.py create mode 100644 gestao_raul/Lib/site-packages/pip/_vendor/truststore/_windows.py create mode 100644 gestao_raul/Lib/site-packages/pip/_vendor/truststore/py.typed create mode 100644 gestao_raul/Lib/site-packages/pip/_vendor/urllib3/packages/backports/__pycache__/weakref_finalize.cpython-310.pyc create mode 100644 gestao_raul/Lib/site-packages/pip/_vendor/urllib3/packages/backports/weakref_finalize.py delete mode 100644 gestao_raul/Lib/site-packages/pip/_vendor/webencodings/__init__.py delete mode 100644 gestao_raul/Lib/site-packages/pip/_vendor/webencodings/__pycache__/__init__.cpython-310.pyc delete mode 100644 gestao_raul/Lib/site-packages/pip/_vendor/webencodings/__pycache__/labels.cpython-310.pyc delete mode 100644 gestao_raul/Lib/site-packages/pip/_vendor/webencodings/__pycache__/mklabels.cpython-310.pyc delete mode 100644 gestao_raul/Lib/site-packages/pip/_vendor/webencodings/__pycache__/tests.cpython-310.pyc delete mode 100644 gestao_raul/Lib/site-packages/pip/_vendor/webencodings/__pycache__/x_user_defined.cpython-310.pyc delete mode 100644 gestao_raul/Lib/site-packages/pip/_vendor/webencodings/labels.py delete mode 100644 gestao_raul/Lib/site-packages/pip/_vendor/webencodings/mklabels.py delete mode 100644 gestao_raul/Lib/site-packages/pip/_vendor/webencodings/tests.py delete mode 100644 gestao_raul/Lib/site-packages/pip/_vendor/webencodings/x_user_defined.py create mode 100644 gestao_raul/Lib/site-packages/pwa/__init__.py create mode 100644 gestao_raul/Lib/site-packages/pwa/__pycache__/__init__.cpython-310.pyc create mode 100644 gestao_raul/Lib/site-packages/pwa/__pycache__/app_settings.cpython-310.pyc create mode 100644 gestao_raul/Lib/site-packages/pwa/__pycache__/apps.cpython-310.pyc create mode 100644 gestao_raul/Lib/site-packages/pwa/__pycache__/urls.cpython-310.pyc create mode 100644 gestao_raul/Lib/site-packages/pwa/__pycache__/views.cpython-310.pyc create mode 100644 gestao_raul/Lib/site-packages/pwa/app_settings.py create mode 100644 gestao_raul/Lib/site-packages/pwa/apps.py create mode 100644 gestao_raul/Lib/site-packages/pwa/static/css/django-pwa-app.css create mode 100644 gestao_raul/Lib/site-packages/pwa/static/fonts/bootstrap/glyphicons-halflings-regular.eot create mode 100644 gestao_raul/Lib/site-packages/pwa/static/fonts/bootstrap/glyphicons-halflings-regular.svg create mode 100644 gestao_raul/Lib/site-packages/pwa/static/fonts/bootstrap/glyphicons-halflings-regular.ttf create mode 100644 gestao_raul/Lib/site-packages/pwa/static/fonts/bootstrap/glyphicons-halflings-regular.woff create mode 100644 gestao_raul/Lib/site-packages/pwa/static/fonts/bootstrap/glyphicons-halflings-regular.woff2 create mode 100644 gestao_raul/Lib/site-packages/pwa/static/images/icons/Thumbs.db create mode 100644 gestao_raul/Lib/site-packages/pwa/static/images/icons/icon-128x128.png create mode 100644 gestao_raul/Lib/site-packages/pwa/static/images/icons/icon-144x144.png create mode 100644 gestao_raul/Lib/site-packages/pwa/static/images/icons/icon-152x152.png create mode 100644 gestao_raul/Lib/site-packages/pwa/static/images/icons/icon-192x192.png create mode 100644 gestao_raul/Lib/site-packages/pwa/static/images/icons/icon-384x384.png create mode 100644 gestao_raul/Lib/site-packages/pwa/static/images/icons/icon-512x512.png create mode 100644 gestao_raul/Lib/site-packages/pwa/static/images/icons/icon-72x72.png create mode 100644 gestao_raul/Lib/site-packages/pwa/static/images/icons/icon-96x96.png create mode 100644 gestao_raul/Lib/site-packages/pwa/static/images/icons/splash-1125x2436.png create mode 100644 gestao_raul/Lib/site-packages/pwa/static/images/icons/splash-1242x2208.png create mode 100644 gestao_raul/Lib/site-packages/pwa/static/images/icons/splash-1242x2688.png create mode 100644 gestao_raul/Lib/site-packages/pwa/static/images/icons/splash-1536x2048.png create mode 100644 gestao_raul/Lib/site-packages/pwa/static/images/icons/splash-1668x2224.png create mode 100644 gestao_raul/Lib/site-packages/pwa/static/images/icons/splash-1668x2388.png create mode 100644 gestao_raul/Lib/site-packages/pwa/static/images/icons/splash-2048x2732.png create mode 100644 gestao_raul/Lib/site-packages/pwa/static/images/icons/splash-640x1136.png create mode 100644 gestao_raul/Lib/site-packages/pwa/static/images/icons/splash-750x1334.png create mode 100644 gestao_raul/Lib/site-packages/pwa/static/images/icons/splash-828x1792.png create mode 100644 gestao_raul/Lib/site-packages/pwa/templates/manifest.json create mode 100644 gestao_raul/Lib/site-packages/pwa/templates/offline.html create mode 100644 gestao_raul/Lib/site-packages/pwa/templates/pwa.html create mode 100644 gestao_raul/Lib/site-packages/pwa/templates/serviceworker.js create mode 100644 gestao_raul/Lib/site-packages/pwa/templatetags/__init__.py create mode 100644 gestao_raul/Lib/site-packages/pwa/templatetags/__pycache__/__init__.cpython-310.pyc create mode 100644 gestao_raul/Lib/site-packages/pwa/templatetags/__pycache__/pwa.cpython-310.pyc create mode 100644 gestao_raul/Lib/site-packages/pwa/templatetags/pwa.py create mode 100644 gestao_raul/Lib/site-packages/pwa/urls.py create mode 100644 gestao_raul/Lib/site-packages/pwa/views.py create mode 100644 gestao_raul/Lib/site-packages/pyOpenSSL-24.3.0.dist-info/INSTALLER create mode 100644 gestao_raul/Lib/site-packages/pyOpenSSL-24.3.0.dist-info/LICENSE create mode 100644 gestao_raul/Lib/site-packages/pyOpenSSL-24.3.0.dist-info/METADATA create mode 100644 gestao_raul/Lib/site-packages/pyOpenSSL-24.3.0.dist-info/RECORD create mode 100644 gestao_raul/Lib/site-packages/pyOpenSSL-24.3.0.dist-info/REQUESTED create mode 100644 gestao_raul/Lib/site-packages/pyOpenSSL-24.3.0.dist-info/WHEEL create mode 100644 gestao_raul/Lib/site-packages/pyOpenSSL-24.3.0.dist-info/top_level.txt create mode 100644 gestao_raul/Lib/site-packages/pycparser-2.22.dist-info/INSTALLER create mode 100644 gestao_raul/Lib/site-packages/pycparser-2.22.dist-info/LICENSE create mode 100644 gestao_raul/Lib/site-packages/pycparser-2.22.dist-info/METADATA create mode 100644 gestao_raul/Lib/site-packages/pycparser-2.22.dist-info/RECORD create mode 100644 gestao_raul/Lib/site-packages/pycparser-2.22.dist-info/REQUESTED create mode 100644 gestao_raul/Lib/site-packages/pycparser-2.22.dist-info/WHEEL create mode 100644 gestao_raul/Lib/site-packages/pycparser-2.22.dist-info/top_level.txt create mode 100644 gestao_raul/Lib/site-packages/pycparser/__init__.py create mode 100644 gestao_raul/Lib/site-packages/pycparser/__pycache__/__init__.cpython-310.pyc create mode 100644 gestao_raul/Lib/site-packages/pycparser/__pycache__/_ast_gen.cpython-310.pyc create mode 100644 gestao_raul/Lib/site-packages/pycparser/__pycache__/_build_tables.cpython-310.pyc create mode 100644 gestao_raul/Lib/site-packages/pycparser/__pycache__/ast_transforms.cpython-310.pyc create mode 100644 gestao_raul/Lib/site-packages/pycparser/__pycache__/c_ast.cpython-310.pyc create mode 100644 gestao_raul/Lib/site-packages/pycparser/__pycache__/c_generator.cpython-310.pyc create mode 100644 gestao_raul/Lib/site-packages/pycparser/__pycache__/c_lexer.cpython-310.pyc create mode 100644 gestao_raul/Lib/site-packages/pycparser/__pycache__/c_parser.cpython-310.pyc create mode 100644 gestao_raul/Lib/site-packages/pycparser/__pycache__/lextab.cpython-310.pyc create mode 100644 gestao_raul/Lib/site-packages/pycparser/__pycache__/plyparser.cpython-310.pyc create mode 100644 gestao_raul/Lib/site-packages/pycparser/__pycache__/yacctab.cpython-310.pyc create mode 100644 gestao_raul/Lib/site-packages/pycparser/_ast_gen.py create mode 100644 gestao_raul/Lib/site-packages/pycparser/_build_tables.py create mode 100644 gestao_raul/Lib/site-packages/pycparser/_c_ast.cfg create mode 100644 gestao_raul/Lib/site-packages/pycparser/ast_transforms.py create mode 100644 gestao_raul/Lib/site-packages/pycparser/c_ast.py create mode 100644 gestao_raul/Lib/site-packages/pycparser/c_generator.py create mode 100644 gestao_raul/Lib/site-packages/pycparser/c_lexer.py create mode 100644 gestao_raul/Lib/site-packages/pycparser/c_parser.py create mode 100644 gestao_raul/Lib/site-packages/pycparser/lextab.py create mode 100644 gestao_raul/Lib/site-packages/pycparser/ply/__init__.py create mode 100644 gestao_raul/Lib/site-packages/pycparser/ply/__pycache__/__init__.cpython-310.pyc create mode 100644 gestao_raul/Lib/site-packages/pycparser/ply/__pycache__/cpp.cpython-310.pyc create mode 100644 gestao_raul/Lib/site-packages/pycparser/ply/__pycache__/ctokens.cpython-310.pyc create mode 100644 gestao_raul/Lib/site-packages/pycparser/ply/__pycache__/lex.cpython-310.pyc create mode 100644 gestao_raul/Lib/site-packages/pycparser/ply/__pycache__/yacc.cpython-310.pyc create mode 100644 gestao_raul/Lib/site-packages/pycparser/ply/__pycache__/ygen.cpython-310.pyc create mode 100644 gestao_raul/Lib/site-packages/pycparser/ply/cpp.py create mode 100644 gestao_raul/Lib/site-packages/pycparser/ply/ctokens.py create mode 100644 gestao_raul/Lib/site-packages/pycparser/ply/lex.py create mode 100644 gestao_raul/Lib/site-packages/pycparser/ply/yacc.py create mode 100644 gestao_raul/Lib/site-packages/pycparser/ply/ygen.py create mode 100644 gestao_raul/Lib/site-packages/pycparser/plyparser.py create mode 100644 gestao_raul/Lib/site-packages/pycparser/yacctab.py create mode 100644 gestao_raul/Lib/site-packages/rust/Cargo.toml create mode 100644 gestao_raul/Lib/site-packages/rust/cryptography-cffi/Cargo.toml create mode 100644 gestao_raul/Lib/site-packages/rust/cryptography-keepalive/Cargo.toml create mode 100644 gestao_raul/Lib/site-packages/rust/cryptography-key-parsing/Cargo.toml create mode 100644 gestao_raul/Lib/site-packages/rust/cryptography-openssl/Cargo.toml create mode 100644 gestao_raul/Lib/site-packages/rust/cryptography-x509-verification/Cargo.toml create mode 100644 gestao_raul/Lib/site-packages/rust/cryptography-x509/Cargo.toml create mode 100644 gestao_raul/Lib/site-packages/werkzeug-3.1.3.dist-info/INSTALLER create mode 100644 gestao_raul/Lib/site-packages/werkzeug-3.1.3.dist-info/LICENSE.txt create mode 100644 gestao_raul/Lib/site-packages/werkzeug-3.1.3.dist-info/METADATA create mode 100644 gestao_raul/Lib/site-packages/werkzeug-3.1.3.dist-info/RECORD create mode 100644 gestao_raul/Lib/site-packages/werkzeug-3.1.3.dist-info/REQUESTED create mode 100644 gestao_raul/Lib/site-packages/werkzeug-3.1.3.dist-info/WHEEL create mode 100644 gestao_raul/Lib/site-packages/werkzeug/__init__.py create mode 100644 gestao_raul/Lib/site-packages/werkzeug/__pycache__/__init__.cpython-310.pyc create mode 100644 gestao_raul/Lib/site-packages/werkzeug/__pycache__/_internal.cpython-310.pyc create mode 100644 gestao_raul/Lib/site-packages/werkzeug/__pycache__/_reloader.cpython-310.pyc create mode 100644 gestao_raul/Lib/site-packages/werkzeug/__pycache__/exceptions.cpython-310.pyc create mode 100644 gestao_raul/Lib/site-packages/werkzeug/__pycache__/formparser.cpython-310.pyc create mode 100644 gestao_raul/Lib/site-packages/werkzeug/__pycache__/http.cpython-310.pyc create mode 100644 gestao_raul/Lib/site-packages/werkzeug/__pycache__/local.cpython-310.pyc create mode 100644 gestao_raul/Lib/site-packages/werkzeug/__pycache__/security.cpython-310.pyc create mode 100644 gestao_raul/Lib/site-packages/werkzeug/__pycache__/serving.cpython-310.pyc create mode 100644 gestao_raul/Lib/site-packages/werkzeug/__pycache__/test.cpython-310.pyc create mode 100644 gestao_raul/Lib/site-packages/werkzeug/__pycache__/testapp.cpython-310.pyc create mode 100644 gestao_raul/Lib/site-packages/werkzeug/__pycache__/urls.cpython-310.pyc create mode 100644 gestao_raul/Lib/site-packages/werkzeug/__pycache__/user_agent.cpython-310.pyc create mode 100644 gestao_raul/Lib/site-packages/werkzeug/__pycache__/utils.cpython-310.pyc create mode 100644 gestao_raul/Lib/site-packages/werkzeug/__pycache__/wsgi.cpython-310.pyc create mode 100644 gestao_raul/Lib/site-packages/werkzeug/_internal.py create mode 100644 gestao_raul/Lib/site-packages/werkzeug/_reloader.py create mode 100644 gestao_raul/Lib/site-packages/werkzeug/datastructures/__init__.py create mode 100644 gestao_raul/Lib/site-packages/werkzeug/datastructures/__pycache__/__init__.cpython-310.pyc create mode 100644 gestao_raul/Lib/site-packages/werkzeug/datastructures/__pycache__/accept.cpython-310.pyc create mode 100644 gestao_raul/Lib/site-packages/werkzeug/datastructures/__pycache__/auth.cpython-310.pyc create mode 100644 gestao_raul/Lib/site-packages/werkzeug/datastructures/__pycache__/cache_control.cpython-310.pyc create mode 100644 gestao_raul/Lib/site-packages/werkzeug/datastructures/__pycache__/csp.cpython-310.pyc create mode 100644 gestao_raul/Lib/site-packages/werkzeug/datastructures/__pycache__/etag.cpython-310.pyc create mode 100644 gestao_raul/Lib/site-packages/werkzeug/datastructures/__pycache__/file_storage.cpython-310.pyc create mode 100644 gestao_raul/Lib/site-packages/werkzeug/datastructures/__pycache__/headers.cpython-310.pyc create mode 100644 gestao_raul/Lib/site-packages/werkzeug/datastructures/__pycache__/mixins.cpython-310.pyc create mode 100644 gestao_raul/Lib/site-packages/werkzeug/datastructures/__pycache__/range.cpython-310.pyc create mode 100644 gestao_raul/Lib/site-packages/werkzeug/datastructures/__pycache__/structures.cpython-310.pyc create mode 100644 gestao_raul/Lib/site-packages/werkzeug/datastructures/accept.py create mode 100644 gestao_raul/Lib/site-packages/werkzeug/datastructures/auth.py create mode 100644 gestao_raul/Lib/site-packages/werkzeug/datastructures/cache_control.py create mode 100644 gestao_raul/Lib/site-packages/werkzeug/datastructures/csp.py create mode 100644 gestao_raul/Lib/site-packages/werkzeug/datastructures/etag.py create mode 100644 gestao_raul/Lib/site-packages/werkzeug/datastructures/file_storage.py create mode 100644 gestao_raul/Lib/site-packages/werkzeug/datastructures/headers.py create mode 100644 gestao_raul/Lib/site-packages/werkzeug/datastructures/mixins.py create mode 100644 gestao_raul/Lib/site-packages/werkzeug/datastructures/range.py create mode 100644 gestao_raul/Lib/site-packages/werkzeug/datastructures/structures.py create mode 100644 gestao_raul/Lib/site-packages/werkzeug/debug/__init__.py create mode 100644 gestao_raul/Lib/site-packages/werkzeug/debug/__pycache__/__init__.cpython-310.pyc create mode 100644 gestao_raul/Lib/site-packages/werkzeug/debug/__pycache__/console.cpython-310.pyc create mode 100644 gestao_raul/Lib/site-packages/werkzeug/debug/__pycache__/repr.cpython-310.pyc create mode 100644 gestao_raul/Lib/site-packages/werkzeug/debug/__pycache__/tbtools.cpython-310.pyc create mode 100644 gestao_raul/Lib/site-packages/werkzeug/debug/console.py create mode 100644 gestao_raul/Lib/site-packages/werkzeug/debug/repr.py create mode 100644 gestao_raul/Lib/site-packages/werkzeug/debug/shared/ICON_LICENSE.md create mode 100644 gestao_raul/Lib/site-packages/werkzeug/debug/shared/console.png create mode 100644 gestao_raul/Lib/site-packages/werkzeug/debug/shared/debugger.js create mode 100644 gestao_raul/Lib/site-packages/werkzeug/debug/shared/less.png create mode 100644 gestao_raul/Lib/site-packages/werkzeug/debug/shared/more.png create mode 100644 gestao_raul/Lib/site-packages/werkzeug/debug/shared/style.css create mode 100644 gestao_raul/Lib/site-packages/werkzeug/debug/tbtools.py create mode 100644 gestao_raul/Lib/site-packages/werkzeug/exceptions.py create mode 100644 gestao_raul/Lib/site-packages/werkzeug/formparser.py create mode 100644 gestao_raul/Lib/site-packages/werkzeug/http.py create mode 100644 gestao_raul/Lib/site-packages/werkzeug/local.py create mode 100644 gestao_raul/Lib/site-packages/werkzeug/middleware/__init__.py create mode 100644 gestao_raul/Lib/site-packages/werkzeug/middleware/__pycache__/__init__.cpython-310.pyc create mode 100644 gestao_raul/Lib/site-packages/werkzeug/middleware/__pycache__/dispatcher.cpython-310.pyc create mode 100644 gestao_raul/Lib/site-packages/werkzeug/middleware/__pycache__/http_proxy.cpython-310.pyc create mode 100644 gestao_raul/Lib/site-packages/werkzeug/middleware/__pycache__/lint.cpython-310.pyc create mode 100644 gestao_raul/Lib/site-packages/werkzeug/middleware/__pycache__/profiler.cpython-310.pyc create mode 100644 gestao_raul/Lib/site-packages/werkzeug/middleware/__pycache__/proxy_fix.cpython-310.pyc create mode 100644 gestao_raul/Lib/site-packages/werkzeug/middleware/__pycache__/shared_data.cpython-310.pyc create mode 100644 gestao_raul/Lib/site-packages/werkzeug/middleware/dispatcher.py create mode 100644 gestao_raul/Lib/site-packages/werkzeug/middleware/http_proxy.py create mode 100644 gestao_raul/Lib/site-packages/werkzeug/middleware/lint.py create mode 100644 gestao_raul/Lib/site-packages/werkzeug/middleware/profiler.py create mode 100644 gestao_raul/Lib/site-packages/werkzeug/middleware/proxy_fix.py create mode 100644 gestao_raul/Lib/site-packages/werkzeug/middleware/shared_data.py create mode 100644 gestao_raul/Lib/site-packages/werkzeug/py.typed create mode 100644 gestao_raul/Lib/site-packages/werkzeug/routing/__init__.py create mode 100644 gestao_raul/Lib/site-packages/werkzeug/routing/__pycache__/__init__.cpython-310.pyc create mode 100644 gestao_raul/Lib/site-packages/werkzeug/routing/__pycache__/converters.cpython-310.pyc create mode 100644 gestao_raul/Lib/site-packages/werkzeug/routing/__pycache__/exceptions.cpython-310.pyc create mode 100644 gestao_raul/Lib/site-packages/werkzeug/routing/__pycache__/map.cpython-310.pyc create mode 100644 gestao_raul/Lib/site-packages/werkzeug/routing/__pycache__/matcher.cpython-310.pyc create mode 100644 gestao_raul/Lib/site-packages/werkzeug/routing/__pycache__/rules.cpython-310.pyc create mode 100644 gestao_raul/Lib/site-packages/werkzeug/routing/converters.py create mode 100644 gestao_raul/Lib/site-packages/werkzeug/routing/exceptions.py create mode 100644 gestao_raul/Lib/site-packages/werkzeug/routing/map.py create mode 100644 gestao_raul/Lib/site-packages/werkzeug/routing/matcher.py create mode 100644 gestao_raul/Lib/site-packages/werkzeug/routing/rules.py create mode 100644 gestao_raul/Lib/site-packages/werkzeug/sansio/__init__.py create mode 100644 gestao_raul/Lib/site-packages/werkzeug/sansio/__pycache__/__init__.cpython-310.pyc create mode 100644 gestao_raul/Lib/site-packages/werkzeug/sansio/__pycache__/http.cpython-310.pyc create mode 100644 gestao_raul/Lib/site-packages/werkzeug/sansio/__pycache__/multipart.cpython-310.pyc create mode 100644 gestao_raul/Lib/site-packages/werkzeug/sansio/__pycache__/request.cpython-310.pyc create mode 100644 gestao_raul/Lib/site-packages/werkzeug/sansio/__pycache__/response.cpython-310.pyc create mode 100644 gestao_raul/Lib/site-packages/werkzeug/sansio/__pycache__/utils.cpython-310.pyc create mode 100644 gestao_raul/Lib/site-packages/werkzeug/sansio/http.py create mode 100644 gestao_raul/Lib/site-packages/werkzeug/sansio/multipart.py create mode 100644 gestao_raul/Lib/site-packages/werkzeug/sansio/request.py create mode 100644 gestao_raul/Lib/site-packages/werkzeug/sansio/response.py create mode 100644 gestao_raul/Lib/site-packages/werkzeug/sansio/utils.py create mode 100644 gestao_raul/Lib/site-packages/werkzeug/security.py create mode 100644 gestao_raul/Lib/site-packages/werkzeug/serving.py create mode 100644 gestao_raul/Lib/site-packages/werkzeug/test.py create mode 100644 gestao_raul/Lib/site-packages/werkzeug/testapp.py create mode 100644 gestao_raul/Lib/site-packages/werkzeug/urls.py create mode 100644 gestao_raul/Lib/site-packages/werkzeug/user_agent.py create mode 100644 gestao_raul/Lib/site-packages/werkzeug/utils.py create mode 100644 gestao_raul/Lib/site-packages/werkzeug/wrappers/__init__.py create mode 100644 gestao_raul/Lib/site-packages/werkzeug/wrappers/__pycache__/__init__.cpython-310.pyc create mode 100644 gestao_raul/Lib/site-packages/werkzeug/wrappers/__pycache__/request.cpython-310.pyc create mode 100644 gestao_raul/Lib/site-packages/werkzeug/wrappers/__pycache__/response.cpython-310.pyc create mode 100644 gestao_raul/Lib/site-packages/werkzeug/wrappers/request.py create mode 100644 gestao_raul/Lib/site-packages/werkzeug/wrappers/response.py create mode 100644 gestao_raul/Lib/site-packages/werkzeug/wsgi.py delete mode 100644 requirements.txt diff --git a/gestaoRaul/balcao/templates/viewBalcao.html b/gestaoRaul/balcao/templates/viewBalcao.html index 1e66bbc..10afa09 100644 --- a/gestaoRaul/balcao/templates/viewBalcao.html +++ b/gestaoRaul/balcao/templates/viewBalcao.html @@ -43,7 +43,7 @@ {{item.product.name}} - R$ {{item.product.price}} + R$ {{item.product.price}} diff --git a/gestaoRaul/db.sqlite3 b/gestaoRaul/db.sqlite3 index be1851a57a93a20dada2da581a998c9531ca417e..761ae09afc87b1b2937692f3cd016536386c6c44 100644 GIT binary patch delta 789 zcmah{Pe>F|9NzbvaYt<5+k>HLn&N7g+F|GIzMa`2kX^x&Ty>qzJ=H?4gQA;%R&CRu zC4&~~kSI)t4$>d!;KAHtPQuoqPR54NAuuS=L#Oa$MbNmLB^Y%2_;?@R_xm1SCR3To zRNgy|a`Sa4~GInG2&)njFy66UyM|RC>lcayg|>>gg0yMx^nXe);MUo!ebDcbAc)jjO^j zL->kL0gmOQMi+LS;DU&HD06$Lo3aC$%ts|Z-Fr5=AMv&3;!l)Z73_<)ILd=jz5>rH z_#Ys_5wwl+#_JXMe#4cG+HFA_f_=li5^7S%j&(!GL%ag-;8{G0lNQ(W&}ZcHaK?m}kZ{!5IRu!GmOv{( zZwVsC&2<fStEDI9GN8pcpFbySp!&h zzHug;UCtEQAz#R6@&UKwi}*c$iyz=cd>7v$K@uPm>Be0~z5r3P_8rta8Uzji)s$}1 zc&$kNd~Xp$e8lM6glzGuYQE?8)+U%+n_R;y4x@3(}Mro)WZBiu48aK zIi^l_raLb5N2e4$c+EZ0J{?vPL#aq8F@0V;>q!j_caFO!&JD)HU3zeT7l(#swmsz6 G>VE+pu+4J- delta 497 zcmXBNPiPZC6bA5_H)|%gJF{RD!8ElITPsMGnQeC4Er^yD4>>eyA%R{hlAa_|koKa7 zkRB`)q@jiJ82kf5t2SL_P!Xbno(k(#h*qH~7zqqtbjX!7x3Rp$A;8_*`eKf-=iZ)guJ>E z!oUE3#9#9jzQk|xIrg0`uo9cIK3GL-%DTb#`49e$e^O6EI0`(c!Vt1*H*C)*K0=?_ zPfqg;qFFL@u%Crh%fjza9qzRA6{eu_O<1NpjiUIhaeJ=`dap_P-x3ohHLV#59Gs{Q LVtwJB@v`q9tFVsS diff --git a/gestaoRaul/gestaoRaul/__pycache__/settings.cpython-310.pyc b/gestaoRaul/gestaoRaul/__pycache__/settings.cpython-310.pyc index 27db9d604c7f4451226e7f8c4c275c7e98bcda4f..0e5f22e2339a4debeaa391a3ae6832d1fae3b8bc 100644 GIT binary patch delta 20 acmew?`B{=XpO=@50SG?(tlr4|f(HOWHwIAv delta 20 acmew?`B{=XpO=@50SHuEW^d$v!2]*>(?:(?!<\/button>)[\s\S])*<\/button>/gi,''); content = content.replace(/]*>(?:(?!<\/tfoot>)[\s\S])*<\/tfoot>/gi,''); content = content.replace(/]*>(?:(?!<\/th>)[\s\S])*<\/th>/gi,''); + content = content.replace(/R\$.{7}/g, ''); content = content.replace(/<\/tr>/g,''+dateString+ '
VÁLIDO SOMENTE POR ESSA NOITE'+''); var printWindow = window.open('', '_blank'); diff --git a/gestao_raul/Lib/site-packages/pillow-11.0.0.dist-info/INSTALLER b/gestao_raul/Lib/site-packages/MarkupSafe-3.0.2.dist-info/INSTALLER similarity index 100% rename from gestao_raul/Lib/site-packages/pillow-11.0.0.dist-info/INSTALLER rename to gestao_raul/Lib/site-packages/MarkupSafe-3.0.2.dist-info/INSTALLER diff --git a/gestao_raul/Lib/site-packages/MarkupSafe-3.0.2.dist-info/LICENSE.txt b/gestao_raul/Lib/site-packages/MarkupSafe-3.0.2.dist-info/LICENSE.txt new file mode 100644 index 0000000..9d227a0 --- /dev/null +++ b/gestao_raul/Lib/site-packages/MarkupSafe-3.0.2.dist-info/LICENSE.txt @@ -0,0 +1,28 @@ +Copyright 2010 Pallets + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + +1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + +2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + +3. Neither the name of the copyright holder nor the names of its + contributors may be used to endorse or promote products derived from + this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A +PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED +TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/gestao_raul/Lib/site-packages/MarkupSafe-3.0.2.dist-info/METADATA b/gestao_raul/Lib/site-packages/MarkupSafe-3.0.2.dist-info/METADATA new file mode 100644 index 0000000..82261f2 --- /dev/null +++ b/gestao_raul/Lib/site-packages/MarkupSafe-3.0.2.dist-info/METADATA @@ -0,0 +1,92 @@ +Metadata-Version: 2.1 +Name: MarkupSafe +Version: 3.0.2 +Summary: Safely add untrusted strings to HTML/XML markup. +Maintainer-email: Pallets +License: Copyright 2010 Pallets + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are + met: + + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + 3. Neither the name of the copyright holder nor the names of its + contributors may be used to endorse or promote products derived from + this software without specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A + PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED + TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +Project-URL: Donate, https://palletsprojects.com/donate +Project-URL: Documentation, https://markupsafe.palletsprojects.com/ +Project-URL: Changes, https://markupsafe.palletsprojects.com/changes/ +Project-URL: Source, https://github.com/pallets/markupsafe/ +Project-URL: Chat, https://discord.gg/pallets +Classifier: Development Status :: 5 - Production/Stable +Classifier: Environment :: Web Environment +Classifier: Intended Audience :: Developers +Classifier: License :: OSI Approved :: BSD License +Classifier: Operating System :: OS Independent +Classifier: Programming Language :: Python +Classifier: Topic :: Internet :: WWW/HTTP :: Dynamic Content +Classifier: Topic :: Text Processing :: Markup :: HTML +Classifier: Typing :: Typed +Requires-Python: >=3.9 +Description-Content-Type: text/markdown +License-File: LICENSE.txt + +# MarkupSafe + +MarkupSafe implements a text object that escapes characters so it is +safe to use in HTML and XML. Characters that have special meanings are +replaced so that they display as the actual characters. This mitigates +injection attacks, meaning untrusted user input can safely be displayed +on a page. + + +## Examples + +```pycon +>>> from markupsafe import Markup, escape + +>>> # escape replaces special characters and wraps in Markup +>>> escape("") +Markup('<script>alert(document.cookie);</script>') + +>>> # wrap in Markup to mark text "safe" and prevent escaping +>>> Markup("Hello") +Markup('hello') + +>>> escape(Markup("Hello")) +Markup('hello') + +>>> # Markup is a str subclass +>>> # methods and operators escape their arguments +>>> template = Markup("Hello {name}") +>>> template.format(name='"World"') +Markup('Hello "World"') +``` + +## Donate + +The Pallets organization develops and supports MarkupSafe and other +popular packages. In order to grow the community of contributors and +users, and allow the maintainers to devote more time to the projects, +[please donate today][]. + +[please donate today]: https://palletsprojects.com/donate diff --git a/gestao_raul/Lib/site-packages/MarkupSafe-3.0.2.dist-info/RECORD b/gestao_raul/Lib/site-packages/MarkupSafe-3.0.2.dist-info/RECORD new file mode 100644 index 0000000..f6d5212 --- /dev/null +++ b/gestao_raul/Lib/site-packages/MarkupSafe-3.0.2.dist-info/RECORD @@ -0,0 +1,15 @@ +MarkupSafe-3.0.2.dist-info/INSTALLER,sha256=zuuue4knoyJ-UwPPXg8fezS7VCrXJQrAP7zeNuwvFQg,4 +MarkupSafe-3.0.2.dist-info/LICENSE.txt,sha256=RjHsDbX9kKVH4zaBcmTGeYIUM4FG-KyUtKV_lu6MnsQ,1503 +MarkupSafe-3.0.2.dist-info/METADATA,sha256=nhoabjupBG41j_JxPCJ3ylgrZ6Fx8oMCFbiLF9Kafqc,4067 +MarkupSafe-3.0.2.dist-info/RECORD,, +MarkupSafe-3.0.2.dist-info/REQUESTED,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +MarkupSafe-3.0.2.dist-info/WHEEL,sha256=IqiWNwTSPPvorR7mTezuRY2eqj__44JKKkjOiewDX64,101 +MarkupSafe-3.0.2.dist-info/top_level.txt,sha256=qy0Plje5IJuvsCBjejJyhDCjEAdcDLK_2agVcex8Z6U,11 +markupsafe/__init__.py,sha256=pREerPwvinB62tNCMOwqxBS2YHV6R52Wcq1d-rB4Z5o,13609 +markupsafe/__pycache__/__init__.cpython-310.pyc,, +markupsafe/__pycache__/_native.cpython-310.pyc,, +markupsafe/_native.py,sha256=2ptkJ40yCcp9kq3L1NqpgjfpZB-obniYKFFKUOkHh4Q,218 +markupsafe/_speedups.c,sha256=SglUjn40ti9YgQAO--OgkSyv9tXq9vvaHyVhQows4Ok,4353 +markupsafe/_speedups.cp310-win_amd64.pyd,sha256=RTvh-UzJTX7J_4j-A5jZmnqwRKBe0pQiDPd_j60jft8,13312 +markupsafe/_speedups.pyi,sha256=LSDmXYOefH4HVpAXuL8sl7AttLw0oXh1njVoVZp2wqQ,42 +markupsafe/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 diff --git a/gestao_raul/Lib/site-packages/pillow-11.0.0.dist-info/REQUESTED b/gestao_raul/Lib/site-packages/MarkupSafe-3.0.2.dist-info/REQUESTED similarity index 100% rename from gestao_raul/Lib/site-packages/pillow-11.0.0.dist-info/REQUESTED rename to gestao_raul/Lib/site-packages/MarkupSafe-3.0.2.dist-info/REQUESTED diff --git a/gestao_raul/Lib/site-packages/pillow-11.0.0.dist-info/WHEEL b/gestao_raul/Lib/site-packages/MarkupSafe-3.0.2.dist-info/WHEEL similarity index 69% rename from gestao_raul/Lib/site-packages/pillow-11.0.0.dist-info/WHEEL rename to gestao_raul/Lib/site-packages/MarkupSafe-3.0.2.dist-info/WHEEL index d538e59..c4388f8 100644 --- a/gestao_raul/Lib/site-packages/pillow-11.0.0.dist-info/WHEEL +++ b/gestao_raul/Lib/site-packages/MarkupSafe-3.0.2.dist-info/WHEEL @@ -1,5 +1,5 @@ Wheel-Version: 1.0 -Generator: setuptools (75.1.0) +Generator: setuptools (75.2.0) Root-Is-Purelib: false Tag: cp310-cp310-win_amd64 diff --git a/gestao_raul/Lib/site-packages/MarkupSafe-3.0.2.dist-info/top_level.txt b/gestao_raul/Lib/site-packages/MarkupSafe-3.0.2.dist-info/top_level.txt new file mode 100644 index 0000000..75bf729 --- /dev/null +++ b/gestao_raul/Lib/site-packages/MarkupSafe-3.0.2.dist-info/top_level.txt @@ -0,0 +1 @@ +markupsafe diff --git a/gestao_raul/Lib/site-packages/OpenSSL/SSL.py b/gestao_raul/Lib/site-packages/OpenSSL/SSL.py new file mode 100644 index 0000000..eed27a0 --- /dev/null +++ b/gestao_raul/Lib/site-packages/OpenSSL/SSL.py @@ -0,0 +1,3144 @@ +from __future__ import annotations + +import os +import socket +import typing +import warnings +from collections.abc import Sequence +from errno import errorcode +from functools import partial, wraps +from itertools import chain, count +from sys import platform +from typing import Any, Callable, Optional, TypeVar +from weakref import WeakValueDictionary + +from cryptography import x509 +from cryptography.hazmat.primitives.asymmetric import ec + +from OpenSSL._util import ( + StrOrBytesPath as _StrOrBytesPath, +) +from OpenSSL._util import ( + exception_from_error_queue as _exception_from_error_queue, +) +from OpenSSL._util import ( + ffi as _ffi, +) +from OpenSSL._util import ( + lib as _lib, +) +from OpenSSL._util import ( + make_assert as _make_assert, +) +from OpenSSL._util import ( + no_zero_allocator as _no_zero_allocator, +) +from OpenSSL._util import ( + path_bytes as _path_bytes, +) +from OpenSSL._util import ( + text_to_bytes_and_warn as _text_to_bytes_and_warn, +) +from OpenSSL.crypto import ( + FILETYPE_PEM, + X509, + PKey, + X509Name, + X509Store, + _EllipticCurve, + _PassphraseHelper, + _PrivateKey, +) + +__all__ = [ + "DTLS_CLIENT_METHOD", + "DTLS_METHOD", + "DTLS_SERVER_METHOD", + "MODE_RELEASE_BUFFERS", + "NO_OVERLAPPING_PROTOCOLS", + "OPENSSL_BUILT_ON", + "OPENSSL_CFLAGS", + "OPENSSL_DIR", + "OPENSSL_PLATFORM", + "OPENSSL_VERSION", + "OPENSSL_VERSION_NUMBER", + "OP_ALL", + "OP_CIPHER_SERVER_PREFERENCE", + "OP_COOKIE_EXCHANGE", + "OP_DONT_INSERT_EMPTY_FRAGMENTS", + "OP_EPHEMERAL_RSA", + "OP_MICROSOFT_BIG_SSLV3_BUFFER", + "OP_MICROSOFT_SESS_ID_BUG", + "OP_MSIE_SSLV2_RSA_PADDING", + "OP_NETSCAPE_CA_DN_BUG", + "OP_NETSCAPE_CHALLENGE_BUG", + "OP_NETSCAPE_DEMO_CIPHER_CHANGE_BUG", + "OP_NETSCAPE_REUSE_CIPHER_CHANGE_BUG", + "OP_NO_COMPRESSION", + "OP_NO_QUERY_MTU", + "OP_NO_TICKET", + "OP_PKCS1_CHECK_1", + "OP_PKCS1_CHECK_2", + "OP_SINGLE_DH_USE", + "OP_SINGLE_ECDH_USE", + "OP_SSLEAY_080_CLIENT_DH_BUG", + "OP_SSLREF2_REUSE_CERT_TYPE_BUG", + "OP_TLS_BLOCK_PADDING_BUG", + "OP_TLS_D5_BUG", + "OP_TLS_ROLLBACK_BUG", + "RECEIVED_SHUTDOWN", + "SENT_SHUTDOWN", + "SESS_CACHE_BOTH", + "SESS_CACHE_CLIENT", + "SESS_CACHE_NO_AUTO_CLEAR", + "SESS_CACHE_NO_INTERNAL", + "SESS_CACHE_NO_INTERNAL_LOOKUP", + "SESS_CACHE_NO_INTERNAL_STORE", + "SESS_CACHE_OFF", + "SESS_CACHE_SERVER", + "SSL3_VERSION", + "SSLEAY_BUILT_ON", + "SSLEAY_CFLAGS", + "SSLEAY_DIR", + "SSLEAY_PLATFORM", + "SSLEAY_VERSION", + "SSL_CB_ACCEPT_EXIT", + "SSL_CB_ACCEPT_LOOP", + "SSL_CB_ALERT", + "SSL_CB_CONNECT_EXIT", + "SSL_CB_CONNECT_LOOP", + "SSL_CB_EXIT", + "SSL_CB_HANDSHAKE_DONE", + "SSL_CB_HANDSHAKE_START", + "SSL_CB_LOOP", + "SSL_CB_READ", + "SSL_CB_READ_ALERT", + "SSL_CB_WRITE", + "SSL_CB_WRITE_ALERT", + "SSL_ST_ACCEPT", + "SSL_ST_CONNECT", + "SSL_ST_MASK", + "TLS1_1_VERSION", + "TLS1_2_VERSION", + "TLS1_3_VERSION", + "TLS1_VERSION", + "TLS_CLIENT_METHOD", + "TLS_METHOD", + "TLS_SERVER_METHOD", + "VERIFY_CLIENT_ONCE", + "VERIFY_FAIL_IF_NO_PEER_CERT", + "VERIFY_NONE", + "VERIFY_PEER", + "Connection", + "Context", + "Error", + "OP_NO_SSLv2", + "OP_NO_SSLv3", + "OP_NO_TLSv1", + "OP_NO_TLSv1_1", + "OP_NO_TLSv1_2", + "OP_NO_TLSv1_3", + "SSLeay_version", + "SSLv23_METHOD", + "Session", + "SysCallError", + "TLSv1_1_METHOD", + "TLSv1_2_METHOD", + "TLSv1_METHOD", + "WantReadError", + "WantWriteError", + "WantX509LookupError", + "X509VerificationCodes", + "ZeroReturnError", +] + + +OPENSSL_VERSION_NUMBER: int = _lib.OPENSSL_VERSION_NUMBER +OPENSSL_VERSION: int = _lib.OPENSSL_VERSION +OPENSSL_CFLAGS: int = _lib.OPENSSL_CFLAGS +OPENSSL_PLATFORM: int = _lib.OPENSSL_PLATFORM +OPENSSL_DIR: int = _lib.OPENSSL_DIR +OPENSSL_BUILT_ON: int = _lib.OPENSSL_BUILT_ON + +SSLEAY_VERSION = OPENSSL_VERSION +SSLEAY_CFLAGS = OPENSSL_CFLAGS +SSLEAY_PLATFORM = OPENSSL_PLATFORM +SSLEAY_DIR = OPENSSL_DIR +SSLEAY_BUILT_ON = OPENSSL_BUILT_ON + +SENT_SHUTDOWN = _lib.SSL_SENT_SHUTDOWN +RECEIVED_SHUTDOWN = _lib.SSL_RECEIVED_SHUTDOWN + +SSLv23_METHOD = 3 +TLSv1_METHOD = 4 +TLSv1_1_METHOD = 5 +TLSv1_2_METHOD = 6 +TLS_METHOD = 7 +TLS_SERVER_METHOD = 8 +TLS_CLIENT_METHOD = 9 +DTLS_METHOD = 10 +DTLS_SERVER_METHOD = 11 +DTLS_CLIENT_METHOD = 12 + +SSL3_VERSION: int = _lib.SSL3_VERSION +TLS1_VERSION: int = _lib.TLS1_VERSION +TLS1_1_VERSION: int = _lib.TLS1_1_VERSION +TLS1_2_VERSION: int = _lib.TLS1_2_VERSION +TLS1_3_VERSION: int = _lib.TLS1_3_VERSION + +OP_NO_SSLv2: int = _lib.SSL_OP_NO_SSLv2 +OP_NO_SSLv3: int = _lib.SSL_OP_NO_SSLv3 +OP_NO_TLSv1: int = _lib.SSL_OP_NO_TLSv1 +OP_NO_TLSv1_1: int = _lib.SSL_OP_NO_TLSv1_1 +OP_NO_TLSv1_2: int = _lib.SSL_OP_NO_TLSv1_2 +OP_NO_TLSv1_3: int = _lib.SSL_OP_NO_TLSv1_3 + +MODE_RELEASE_BUFFERS: int = _lib.SSL_MODE_RELEASE_BUFFERS + +OP_SINGLE_DH_USE: int = _lib.SSL_OP_SINGLE_DH_USE +OP_SINGLE_ECDH_USE: int = _lib.SSL_OP_SINGLE_ECDH_USE +OP_EPHEMERAL_RSA: int = _lib.SSL_OP_EPHEMERAL_RSA +OP_MICROSOFT_SESS_ID_BUG: int = _lib.SSL_OP_MICROSOFT_SESS_ID_BUG +OP_NETSCAPE_CHALLENGE_BUG: int = _lib.SSL_OP_NETSCAPE_CHALLENGE_BUG +OP_NETSCAPE_REUSE_CIPHER_CHANGE_BUG: int = ( + _lib.SSL_OP_NETSCAPE_REUSE_CIPHER_CHANGE_BUG +) +OP_SSLREF2_REUSE_CERT_TYPE_BUG: int = _lib.SSL_OP_SSLREF2_REUSE_CERT_TYPE_BUG +OP_MICROSOFT_BIG_SSLV3_BUFFER: int = _lib.SSL_OP_MICROSOFT_BIG_SSLV3_BUFFER +OP_MSIE_SSLV2_RSA_PADDING: int = _lib.SSL_OP_MSIE_SSLV2_RSA_PADDING +OP_SSLEAY_080_CLIENT_DH_BUG: int = _lib.SSL_OP_SSLEAY_080_CLIENT_DH_BUG +OP_TLS_D5_BUG: int = _lib.SSL_OP_TLS_D5_BUG +OP_TLS_BLOCK_PADDING_BUG: int = _lib.SSL_OP_TLS_BLOCK_PADDING_BUG +OP_DONT_INSERT_EMPTY_FRAGMENTS: int = _lib.SSL_OP_DONT_INSERT_EMPTY_FRAGMENTS +OP_CIPHER_SERVER_PREFERENCE: int = _lib.SSL_OP_CIPHER_SERVER_PREFERENCE +OP_TLS_ROLLBACK_BUG: int = _lib.SSL_OP_TLS_ROLLBACK_BUG +OP_PKCS1_CHECK_1 = _lib.SSL_OP_PKCS1_CHECK_1 +OP_PKCS1_CHECK_2: int = _lib.SSL_OP_PKCS1_CHECK_2 +OP_NETSCAPE_CA_DN_BUG: int = _lib.SSL_OP_NETSCAPE_CA_DN_BUG +OP_NETSCAPE_DEMO_CIPHER_CHANGE_BUG: int = ( + _lib.SSL_OP_NETSCAPE_DEMO_CIPHER_CHANGE_BUG +) +OP_NO_COMPRESSION: int = _lib.SSL_OP_NO_COMPRESSION + +OP_NO_QUERY_MTU: int = _lib.SSL_OP_NO_QUERY_MTU +OP_COOKIE_EXCHANGE: int = _lib.SSL_OP_COOKIE_EXCHANGE +OP_NO_TICKET: int = _lib.SSL_OP_NO_TICKET + +try: + OP_NO_RENEGOTIATION: int = _lib.SSL_OP_NO_RENEGOTIATION + __all__.append("OP_NO_RENEGOTIATION") +except AttributeError: + pass + +try: + OP_IGNORE_UNEXPECTED_EOF: int = _lib.SSL_OP_IGNORE_UNEXPECTED_EOF + __all__.append("OP_IGNORE_UNEXPECTED_EOF") +except AttributeError: + pass + +try: + OP_LEGACY_SERVER_CONNECT: int = _lib.SSL_OP_LEGACY_SERVER_CONNECT + __all__.append("OP_LEGACY_SERVER_CONNECT") +except AttributeError: + pass + +OP_ALL: int = _lib.SSL_OP_ALL + +VERIFY_PEER: int = _lib.SSL_VERIFY_PEER +VERIFY_FAIL_IF_NO_PEER_CERT: int = _lib.SSL_VERIFY_FAIL_IF_NO_PEER_CERT +VERIFY_CLIENT_ONCE: int = _lib.SSL_VERIFY_CLIENT_ONCE +VERIFY_NONE: int = _lib.SSL_VERIFY_NONE + +SESS_CACHE_OFF: int = _lib.SSL_SESS_CACHE_OFF +SESS_CACHE_CLIENT: int = _lib.SSL_SESS_CACHE_CLIENT +SESS_CACHE_SERVER: int = _lib.SSL_SESS_CACHE_SERVER +SESS_CACHE_BOTH: int = _lib.SSL_SESS_CACHE_BOTH +SESS_CACHE_NO_AUTO_CLEAR: int = _lib.SSL_SESS_CACHE_NO_AUTO_CLEAR +SESS_CACHE_NO_INTERNAL_LOOKUP: int = _lib.SSL_SESS_CACHE_NO_INTERNAL_LOOKUP +SESS_CACHE_NO_INTERNAL_STORE: int = _lib.SSL_SESS_CACHE_NO_INTERNAL_STORE +SESS_CACHE_NO_INTERNAL: int = _lib.SSL_SESS_CACHE_NO_INTERNAL + +SSL_ST_CONNECT: int = _lib.SSL_ST_CONNECT +SSL_ST_ACCEPT: int = _lib.SSL_ST_ACCEPT +SSL_ST_MASK: int = _lib.SSL_ST_MASK + +SSL_CB_LOOP: int = _lib.SSL_CB_LOOP +SSL_CB_EXIT: int = _lib.SSL_CB_EXIT +SSL_CB_READ: int = _lib.SSL_CB_READ +SSL_CB_WRITE: int = _lib.SSL_CB_WRITE +SSL_CB_ALERT: int = _lib.SSL_CB_ALERT +SSL_CB_READ_ALERT: int = _lib.SSL_CB_READ_ALERT +SSL_CB_WRITE_ALERT: int = _lib.SSL_CB_WRITE_ALERT +SSL_CB_ACCEPT_LOOP: int = _lib.SSL_CB_ACCEPT_LOOP +SSL_CB_ACCEPT_EXIT: int = _lib.SSL_CB_ACCEPT_EXIT +SSL_CB_CONNECT_LOOP: int = _lib.SSL_CB_CONNECT_LOOP +SSL_CB_CONNECT_EXIT: int = _lib.SSL_CB_CONNECT_EXIT +SSL_CB_HANDSHAKE_START: int = _lib.SSL_CB_HANDSHAKE_START +SSL_CB_HANDSHAKE_DONE: int = _lib.SSL_CB_HANDSHAKE_DONE + +_T = TypeVar("_T") + + +class _NoOverlappingProtocols: + pass + + +NO_OVERLAPPING_PROTOCOLS = _NoOverlappingProtocols() + +# Callback types. +_ALPNSelectCallback = Callable[ + [ + "Connection", + typing.Union[typing.List[bytes], _NoOverlappingProtocols], + ], + None, +] +_CookieGenerateCallback = Callable[["Connection"], bytes] +_CookieVerifyCallback = Callable[["Connection", bytes], bool] +_OCSPClientCallback = Callable[["Connection", bytes, Optional[_T]], bool] +_OCSPServerCallback = Callable[["Connection", Optional[_T]], bytes] +_PassphraseCallback = Callable[[int, bool, Optional[_T]], bytes] +_VerifyCallback = Callable[["Connection", X509, int, int, int], bool] + + +class X509VerificationCodes: + """ + Success and error codes for X509 verification, as returned by the + underlying ``X509_STORE_CTX_get_error()`` function and passed by pyOpenSSL + to verification callback functions. + + See `OpenSSL Verification Errors + `_ + for details. + """ + + OK = _lib.X509_V_OK + ERR_UNABLE_TO_GET_ISSUER_CERT = _lib.X509_V_ERR_UNABLE_TO_GET_ISSUER_CERT + ERR_UNABLE_TO_GET_CRL = _lib.X509_V_ERR_UNABLE_TO_GET_CRL + ERR_UNABLE_TO_DECRYPT_CERT_SIGNATURE = ( + _lib.X509_V_ERR_UNABLE_TO_DECRYPT_CERT_SIGNATURE + ) + ERR_UNABLE_TO_DECRYPT_CRL_SIGNATURE = ( + _lib.X509_V_ERR_UNABLE_TO_DECRYPT_CRL_SIGNATURE + ) + ERR_UNABLE_TO_DECODE_ISSUER_PUBLIC_KEY = ( + _lib.X509_V_ERR_UNABLE_TO_DECODE_ISSUER_PUBLIC_KEY + ) + ERR_CERT_SIGNATURE_FAILURE = _lib.X509_V_ERR_CERT_SIGNATURE_FAILURE + ERR_CRL_SIGNATURE_FAILURE = _lib.X509_V_ERR_CRL_SIGNATURE_FAILURE + ERR_CERT_NOT_YET_VALID = _lib.X509_V_ERR_CERT_NOT_YET_VALID + ERR_CERT_HAS_EXPIRED = _lib.X509_V_ERR_CERT_HAS_EXPIRED + ERR_CRL_NOT_YET_VALID = _lib.X509_V_ERR_CRL_NOT_YET_VALID + ERR_CRL_HAS_EXPIRED = _lib.X509_V_ERR_CRL_HAS_EXPIRED + ERR_ERROR_IN_CERT_NOT_BEFORE_FIELD = ( + _lib.X509_V_ERR_ERROR_IN_CERT_NOT_BEFORE_FIELD + ) + ERR_ERROR_IN_CERT_NOT_AFTER_FIELD = ( + _lib.X509_V_ERR_ERROR_IN_CERT_NOT_AFTER_FIELD + ) + ERR_ERROR_IN_CRL_LAST_UPDATE_FIELD = ( + _lib.X509_V_ERR_ERROR_IN_CRL_LAST_UPDATE_FIELD + ) + ERR_ERROR_IN_CRL_NEXT_UPDATE_FIELD = ( + _lib.X509_V_ERR_ERROR_IN_CRL_NEXT_UPDATE_FIELD + ) + ERR_OUT_OF_MEM = _lib.X509_V_ERR_OUT_OF_MEM + ERR_DEPTH_ZERO_SELF_SIGNED_CERT = ( + _lib.X509_V_ERR_DEPTH_ZERO_SELF_SIGNED_CERT + ) + ERR_SELF_SIGNED_CERT_IN_CHAIN = _lib.X509_V_ERR_SELF_SIGNED_CERT_IN_CHAIN + ERR_UNABLE_TO_GET_ISSUER_CERT_LOCALLY = ( + _lib.X509_V_ERR_UNABLE_TO_GET_ISSUER_CERT_LOCALLY + ) + ERR_UNABLE_TO_VERIFY_LEAF_SIGNATURE = ( + _lib.X509_V_ERR_UNABLE_TO_VERIFY_LEAF_SIGNATURE + ) + ERR_CERT_CHAIN_TOO_LONG = _lib.X509_V_ERR_CERT_CHAIN_TOO_LONG + ERR_CERT_REVOKED = _lib.X509_V_ERR_CERT_REVOKED + ERR_INVALID_CA = _lib.X509_V_ERR_INVALID_CA + ERR_PATH_LENGTH_EXCEEDED = _lib.X509_V_ERR_PATH_LENGTH_EXCEEDED + ERR_INVALID_PURPOSE = _lib.X509_V_ERR_INVALID_PURPOSE + ERR_CERT_UNTRUSTED = _lib.X509_V_ERR_CERT_UNTRUSTED + ERR_CERT_REJECTED = _lib.X509_V_ERR_CERT_REJECTED + ERR_SUBJECT_ISSUER_MISMATCH = _lib.X509_V_ERR_SUBJECT_ISSUER_MISMATCH + ERR_AKID_SKID_MISMATCH = _lib.X509_V_ERR_AKID_SKID_MISMATCH + ERR_AKID_ISSUER_SERIAL_MISMATCH = ( + _lib.X509_V_ERR_AKID_ISSUER_SERIAL_MISMATCH + ) + ERR_KEYUSAGE_NO_CERTSIGN = _lib.X509_V_ERR_KEYUSAGE_NO_CERTSIGN + ERR_UNABLE_TO_GET_CRL_ISSUER = _lib.X509_V_ERR_UNABLE_TO_GET_CRL_ISSUER + ERR_UNHANDLED_CRITICAL_EXTENSION = ( + _lib.X509_V_ERR_UNHANDLED_CRITICAL_EXTENSION + ) + ERR_KEYUSAGE_NO_CRL_SIGN = _lib.X509_V_ERR_KEYUSAGE_NO_CRL_SIGN + ERR_UNHANDLED_CRITICAL_CRL_EXTENSION = ( + _lib.X509_V_ERR_UNHANDLED_CRITICAL_CRL_EXTENSION + ) + ERR_INVALID_NON_CA = _lib.X509_V_ERR_INVALID_NON_CA + ERR_PROXY_PATH_LENGTH_EXCEEDED = _lib.X509_V_ERR_PROXY_PATH_LENGTH_EXCEEDED + ERR_KEYUSAGE_NO_DIGITAL_SIGNATURE = ( + _lib.X509_V_ERR_KEYUSAGE_NO_DIGITAL_SIGNATURE + ) + ERR_PROXY_CERTIFICATES_NOT_ALLOWED = ( + _lib.X509_V_ERR_PROXY_CERTIFICATES_NOT_ALLOWED + ) + ERR_INVALID_EXTENSION = _lib.X509_V_ERR_INVALID_EXTENSION + ERR_INVALID_POLICY_EXTENSION = _lib.X509_V_ERR_INVALID_POLICY_EXTENSION + ERR_NO_EXPLICIT_POLICY = _lib.X509_V_ERR_NO_EXPLICIT_POLICY + ERR_DIFFERENT_CRL_SCOPE = _lib.X509_V_ERR_DIFFERENT_CRL_SCOPE + ERR_UNSUPPORTED_EXTENSION_FEATURE = ( + _lib.X509_V_ERR_UNSUPPORTED_EXTENSION_FEATURE + ) + ERR_UNNESTED_RESOURCE = _lib.X509_V_ERR_UNNESTED_RESOURCE + ERR_PERMITTED_VIOLATION = _lib.X509_V_ERR_PERMITTED_VIOLATION + ERR_EXCLUDED_VIOLATION = _lib.X509_V_ERR_EXCLUDED_VIOLATION + ERR_SUBTREE_MINMAX = _lib.X509_V_ERR_SUBTREE_MINMAX + ERR_UNSUPPORTED_CONSTRAINT_TYPE = ( + _lib.X509_V_ERR_UNSUPPORTED_CONSTRAINT_TYPE + ) + ERR_UNSUPPORTED_CONSTRAINT_SYNTAX = ( + _lib.X509_V_ERR_UNSUPPORTED_CONSTRAINT_SYNTAX + ) + ERR_UNSUPPORTED_NAME_SYNTAX = _lib.X509_V_ERR_UNSUPPORTED_NAME_SYNTAX + ERR_CRL_PATH_VALIDATION_ERROR = _lib.X509_V_ERR_CRL_PATH_VALIDATION_ERROR + ERR_HOSTNAME_MISMATCH = _lib.X509_V_ERR_HOSTNAME_MISMATCH + ERR_EMAIL_MISMATCH = _lib.X509_V_ERR_EMAIL_MISMATCH + ERR_IP_ADDRESS_MISMATCH = _lib.X509_V_ERR_IP_ADDRESS_MISMATCH + ERR_APPLICATION_VERIFICATION = _lib.X509_V_ERR_APPLICATION_VERIFICATION + + +# Taken from https://golang.org/src/crypto/x509/root_linux.go +_CERTIFICATE_FILE_LOCATIONS = [ + "/etc/ssl/certs/ca-certificates.crt", # Debian/Ubuntu/Gentoo etc. + "/etc/pki/tls/certs/ca-bundle.crt", # Fedora/RHEL 6 + "/etc/ssl/ca-bundle.pem", # OpenSUSE + "/etc/pki/tls/cacert.pem", # OpenELEC + "/etc/pki/ca-trust/extracted/pem/tls-ca-bundle.pem", # CentOS/RHEL 7 +] + +_CERTIFICATE_PATH_LOCATIONS = [ + "/etc/ssl/certs", # SLES10/SLES11 +] + +# These values are compared to output from cffi's ffi.string so they must be +# byte strings. +_CRYPTOGRAPHY_MANYLINUX_CA_DIR = b"/opt/pyca/cryptography/openssl/certs" +_CRYPTOGRAPHY_MANYLINUX_CA_FILE = b"/opt/pyca/cryptography/openssl/cert.pem" + + +class Error(Exception): + """ + An error occurred in an `OpenSSL.SSL` API. + """ + + +_raise_current_error = partial(_exception_from_error_queue, Error) +_openssl_assert = _make_assert(Error) + + +class WantReadError(Error): + pass + + +class WantWriteError(Error): + pass + + +class WantX509LookupError(Error): + pass + + +class ZeroReturnError(Error): + pass + + +class SysCallError(Error): + pass + + +class _CallbackExceptionHelper: + """ + A base class for wrapper classes that allow for intelligent exception + handling in OpenSSL callbacks. + + :ivar list _problems: Any exceptions that occurred while executing in a + context where they could not be raised in the normal way. Typically + this is because OpenSSL has called into some Python code and requires a + return value. The exceptions are saved to be raised later when it is + possible to do so. + """ + + def __init__(self) -> None: + self._problems: list[Exception] = [] + + def raise_if_problem(self) -> None: + """ + Raise an exception from the OpenSSL error queue or that was previously + captured whe running a callback. + """ + if self._problems: + try: + _raise_current_error() + except Error: + pass + raise self._problems.pop(0) + + +class _VerifyHelper(_CallbackExceptionHelper): + """ + Wrap a callback such that it can be used as a certificate verification + callback. + """ + + def __init__(self, callback: _VerifyCallback) -> None: + _CallbackExceptionHelper.__init__(self) + + @wraps(callback) + def wrapper(ok, store_ctx): # type: ignore[no-untyped-def] + x509 = _lib.X509_STORE_CTX_get_current_cert(store_ctx) + _lib.X509_up_ref(x509) + cert = X509._from_raw_x509_ptr(x509) + error_number = _lib.X509_STORE_CTX_get_error(store_ctx) + error_depth = _lib.X509_STORE_CTX_get_error_depth(store_ctx) + + index = _lib.SSL_get_ex_data_X509_STORE_CTX_idx() + ssl = _lib.X509_STORE_CTX_get_ex_data(store_ctx, index) + connection = Connection._reverse_mapping[ssl] + + try: + result = callback( + connection, cert, error_number, error_depth, ok + ) + except Exception as e: + self._problems.append(e) + return 0 + else: + if result: + _lib.X509_STORE_CTX_set_error(store_ctx, _lib.X509_V_OK) + return 1 + else: + return 0 + + self.callback = _ffi.callback( + "int (*)(int, X509_STORE_CTX *)", wrapper + ) + + +class _ALPNSelectHelper(_CallbackExceptionHelper): + """ + Wrap a callback such that it can be used as an ALPN selection callback. + """ + + def __init__(self, callback: _ALPNSelectCallback) -> None: + _CallbackExceptionHelper.__init__(self) + + @wraps(callback) + def wrapper(ssl, out, outlen, in_, inlen, arg): # type: ignore[no-untyped-def] + try: + conn = Connection._reverse_mapping[ssl] + + # The string passed to us is made up of multiple + # length-prefixed bytestrings. We need to split that into a + # list. + instr = _ffi.buffer(in_, inlen)[:] + protolist = [] + while instr: + encoded_len = instr[0] + proto = instr[1 : encoded_len + 1] + protolist.append(proto) + instr = instr[encoded_len + 1 :] + + # Call the callback + outbytes = callback(conn, protolist) + any_accepted = True + if outbytes is NO_OVERLAPPING_PROTOCOLS: + outbytes = b"" + any_accepted = False + elif not isinstance(outbytes, bytes): + raise TypeError( + "ALPN callback must return a bytestring or the " + "special NO_OVERLAPPING_PROTOCOLS sentinel value." + ) + + # Save our callback arguments on the connection object to make + # sure that they don't get freed before OpenSSL can use them. + # Then, return them in the appropriate output parameters. + conn._alpn_select_callback_args = [ + _ffi.new("unsigned char *", len(outbytes)), + _ffi.new("unsigned char[]", outbytes), + ] + outlen[0] = conn._alpn_select_callback_args[0][0] + out[0] = conn._alpn_select_callback_args[1] + if not any_accepted: + return _lib.SSL_TLSEXT_ERR_NOACK + return _lib.SSL_TLSEXT_ERR_OK + except Exception as e: + self._problems.append(e) + return _lib.SSL_TLSEXT_ERR_ALERT_FATAL + + self.callback = _ffi.callback( + ( + "int (*)(SSL *, unsigned char **, unsigned char *, " + "const unsigned char *, unsigned int, void *)" + ), + wrapper, + ) + + +class _OCSPServerCallbackHelper(_CallbackExceptionHelper): + """ + Wrap a callback such that it can be used as an OCSP callback for the server + side. + + Annoyingly, OpenSSL defines one OCSP callback but uses it in two different + ways. For servers, that callback is expected to retrieve some OCSP data and + hand it to OpenSSL, and may return only SSL_TLSEXT_ERR_OK, + SSL_TLSEXT_ERR_FATAL, and SSL_TLSEXT_ERR_NOACK. For clients, that callback + is expected to check the OCSP data, and returns a negative value on error, + 0 if the response is not acceptable, or positive if it is. These are + mutually exclusive return code behaviours, and they mean that we need two + helpers so that we always return an appropriate error code if the user's + code throws an exception. + + Given that we have to have two helpers anyway, these helpers are a bit more + helpery than most: specifically, they hide a few more of the OpenSSL + functions so that the user has an easier time writing these callbacks. + + This helper implements the server side. + """ + + def __init__(self, callback: _OCSPServerCallback[Any]) -> None: + _CallbackExceptionHelper.__init__(self) + + @wraps(callback) + def wrapper(ssl, cdata): # type: ignore[no-untyped-def] + try: + conn = Connection._reverse_mapping[ssl] + + # Extract the data if any was provided. + if cdata != _ffi.NULL: + data = _ffi.from_handle(cdata) + else: + data = None + + # Call the callback. + ocsp_data = callback(conn, data) + + if not isinstance(ocsp_data, bytes): + raise TypeError("OCSP callback must return a bytestring.") + + # If the OCSP data was provided, we will pass it to OpenSSL. + # However, we have an early exit here: if no OCSP data was + # provided we will just exit out and tell OpenSSL that there + # is nothing to do. + if not ocsp_data: + return 3 # SSL_TLSEXT_ERR_NOACK + + # OpenSSL takes ownership of this data and expects it to have + # been allocated by OPENSSL_malloc. + ocsp_data_length = len(ocsp_data) + data_ptr = _lib.OPENSSL_malloc(ocsp_data_length) + _ffi.buffer(data_ptr, ocsp_data_length)[:] = ocsp_data + + _lib.SSL_set_tlsext_status_ocsp_resp( + ssl, data_ptr, ocsp_data_length + ) + + return 0 + except Exception as e: + self._problems.append(e) + return 2 # SSL_TLSEXT_ERR_ALERT_FATAL + + self.callback = _ffi.callback("int (*)(SSL *, void *)", wrapper) + + +class _OCSPClientCallbackHelper(_CallbackExceptionHelper): + """ + Wrap a callback such that it can be used as an OCSP callback for the client + side. + + Annoyingly, OpenSSL defines one OCSP callback but uses it in two different + ways. For servers, that callback is expected to retrieve some OCSP data and + hand it to OpenSSL, and may return only SSL_TLSEXT_ERR_OK, + SSL_TLSEXT_ERR_FATAL, and SSL_TLSEXT_ERR_NOACK. For clients, that callback + is expected to check the OCSP data, and returns a negative value on error, + 0 if the response is not acceptable, or positive if it is. These are + mutually exclusive return code behaviours, and they mean that we need two + helpers so that we always return an appropriate error code if the user's + code throws an exception. + + Given that we have to have two helpers anyway, these helpers are a bit more + helpery than most: specifically, they hide a few more of the OpenSSL + functions so that the user has an easier time writing these callbacks. + + This helper implements the client side. + """ + + def __init__(self, callback: _OCSPClientCallback[Any]) -> None: + _CallbackExceptionHelper.__init__(self) + + @wraps(callback) + def wrapper(ssl, cdata): # type: ignore[no-untyped-def] + try: + conn = Connection._reverse_mapping[ssl] + + # Extract the data if any was provided. + if cdata != _ffi.NULL: + data = _ffi.from_handle(cdata) + else: + data = None + + # Get the OCSP data. + ocsp_ptr = _ffi.new("unsigned char **") + ocsp_len = _lib.SSL_get_tlsext_status_ocsp_resp(ssl, ocsp_ptr) + if ocsp_len < 0: + # No OCSP data. + ocsp_data = b"" + else: + # Copy the OCSP data, then pass it to the callback. + ocsp_data = _ffi.buffer(ocsp_ptr[0], ocsp_len)[:] + + valid = callback(conn, ocsp_data, data) + + # Return 1 on success or 0 on error. + return int(bool(valid)) + + except Exception as e: + self._problems.append(e) + # Return negative value if an exception is hit. + return -1 + + self.callback = _ffi.callback("int (*)(SSL *, void *)", wrapper) + + +class _CookieGenerateCallbackHelper(_CallbackExceptionHelper): + def __init__(self, callback: _CookieGenerateCallback) -> None: + _CallbackExceptionHelper.__init__(self) + + @wraps(callback) + def wrapper(ssl, out, outlen): # type: ignore[no-untyped-def] + try: + conn = Connection._reverse_mapping[ssl] + cookie = callback(conn) + out[0 : len(cookie)] = cookie + outlen[0] = len(cookie) + return 1 + except Exception as e: + self._problems.append(e) + # "a zero return value can be used to abort the handshake" + return 0 + + self.callback = _ffi.callback( + "int (*)(SSL *, unsigned char *, unsigned int *)", + wrapper, + ) + + +class _CookieVerifyCallbackHelper(_CallbackExceptionHelper): + def __init__(self, callback: _CookieVerifyCallback) -> None: + _CallbackExceptionHelper.__init__(self) + + @wraps(callback) + def wrapper(ssl, c_cookie, cookie_len): # type: ignore[no-untyped-def] + try: + conn = Connection._reverse_mapping[ssl] + return callback(conn, bytes(c_cookie[0:cookie_len])) + except Exception as e: + self._problems.append(e) + return 0 + + self.callback = _ffi.callback( + "int (*)(SSL *, unsigned char *, unsigned int)", + wrapper, + ) + + +def _asFileDescriptor(obj: Any) -> int: + fd = None + if not isinstance(obj, int): + meth = getattr(obj, "fileno", None) + if meth is not None: + obj = meth() + + if isinstance(obj, int): + fd = obj + + if not isinstance(fd, int): + raise TypeError("argument must be an int, or have a fileno() method.") + elif fd < 0: + raise ValueError( + f"file descriptor cannot be a negative integer ({fd:i})" + ) + + return fd + + +def OpenSSL_version(type: int) -> bytes: + """ + Return a string describing the version of OpenSSL in use. + + :param type: One of the :const:`OPENSSL_` constants defined in this module. + """ + return _ffi.string(_lib.OpenSSL_version(type)) + + +SSLeay_version = OpenSSL_version + + +def _make_requires(flag: int, error: str) -> Callable[[_T], _T]: + """ + Builds a decorator that ensures that functions that rely on OpenSSL + functions that are not present in this build raise NotImplementedError, + rather than AttributeError coming out of cryptography. + + :param flag: A cryptography flag that guards the functions, e.g. + ``Cryptography_HAS_NEXTPROTONEG``. + :param error: The string to be used in the exception if the flag is false. + """ + + def _requires_decorator(func): # type: ignore[no-untyped-def] + if not flag: + + @wraps(func) + def explode(*args, **kwargs): # type: ignore[no-untyped-def] + raise NotImplementedError(error) + + return explode + else: + return func + + return _requires_decorator + + +_requires_keylog = _make_requires( + getattr(_lib, "Cryptography_HAS_KEYLOG", 0), "Key logging not available" +) + + +class Session: + """ + A class representing an SSL session. A session defines certain connection + parameters which may be re-used to speed up the setup of subsequent + connections. + + .. versionadded:: 0.14 + """ + + _session: Any + + +class Context: + """ + :class:`OpenSSL.SSL.Context` instances define the parameters for setting + up new SSL connections. + + :param method: One of TLS_METHOD, TLS_CLIENT_METHOD, TLS_SERVER_METHOD, + DTLS_METHOD, DTLS_CLIENT_METHOD, or DTLS_SERVER_METHOD. + SSLv23_METHOD, TLSv1_METHOD, etc. are deprecated and should + not be used. + """ + + _methods: typing.ClassVar[ + dict[int, tuple[Callable[[], Any], int | None]] + ] = { + SSLv23_METHOD: (_lib.TLS_method, None), + TLSv1_METHOD: (_lib.TLS_method, TLS1_VERSION), + TLSv1_1_METHOD: (_lib.TLS_method, TLS1_1_VERSION), + TLSv1_2_METHOD: (_lib.TLS_method, TLS1_2_VERSION), + TLS_METHOD: (_lib.TLS_method, None), + TLS_SERVER_METHOD: (_lib.TLS_server_method, None), + TLS_CLIENT_METHOD: (_lib.TLS_client_method, None), + DTLS_METHOD: (_lib.DTLS_method, None), + DTLS_SERVER_METHOD: (_lib.DTLS_server_method, None), + DTLS_CLIENT_METHOD: (_lib.DTLS_client_method, None), + } + + def __init__(self, method: int) -> None: + if not isinstance(method, int): + raise TypeError("method must be an integer") + + try: + method_func, version = self._methods[method] + except KeyError: + raise ValueError("No such protocol") + + method_obj = method_func() + _openssl_assert(method_obj != _ffi.NULL) + + context = _lib.SSL_CTX_new(method_obj) + _openssl_assert(context != _ffi.NULL) + context = _ffi.gc(context, _lib.SSL_CTX_free) + + self._context = context + self._passphrase_helper: _PassphraseHelper | None = None + self._passphrase_callback: _PassphraseCallback[Any] | None = None + self._passphrase_userdata: Any | None = None + self._verify_helper: _VerifyHelper | None = None + self._verify_callback: _VerifyCallback | None = None + self._info_callback = None + self._keylog_callback = None + self._tlsext_servername_callback = None + self._app_data = None + self._alpn_select_helper: _ALPNSelectHelper | None = None + self._alpn_select_callback: _ALPNSelectCallback | None = None + self._ocsp_helper: ( + _OCSPClientCallbackHelper | _OCSPServerCallbackHelper | None + ) = None + self._ocsp_callback: ( + _OCSPClientCallback[Any] | _OCSPServerCallback[Any] | None + ) = None + self._ocsp_data: Any | None = None + self._cookie_generate_helper: _CookieGenerateCallbackHelper | None = ( + None + ) + self._cookie_verify_helper: _CookieVerifyCallbackHelper | None = None + + self.set_mode(_lib.SSL_MODE_ENABLE_PARTIAL_WRITE) + if version is not None: + self.set_min_proto_version(version) + self.set_max_proto_version(version) + + def set_min_proto_version(self, version: int) -> None: + """ + Set the minimum supported protocol version. Setting the minimum + version to 0 will enable protocol versions down to the lowest version + supported by the library. + + If the underlying OpenSSL build is missing support for the selected + version, this method will raise an exception. + """ + _openssl_assert( + _lib.SSL_CTX_set_min_proto_version(self._context, version) == 1 + ) + + def set_max_proto_version(self, version: int) -> None: + """ + Set the maximum supported protocol version. Setting the maximum + version to 0 will enable protocol versions up to the highest version + supported by the library. + + If the underlying OpenSSL build is missing support for the selected + version, this method will raise an exception. + """ + _openssl_assert( + _lib.SSL_CTX_set_max_proto_version(self._context, version) == 1 + ) + + def load_verify_locations( + self, + cafile: _StrOrBytesPath | None, + capath: _StrOrBytesPath | None = None, + ) -> None: + """ + Let SSL know where we can find trusted certificates for the certificate + chain. Note that the certificates have to be in PEM format. + + If capath is passed, it must be a directory prepared using the + ``c_rehash`` tool included with OpenSSL. Either, but not both, of + *pemfile* or *capath* may be :data:`None`. + + :param cafile: In which file we can find the certificates (``bytes`` or + ``str``). + :param capath: In which directory we can find the certificates + (``bytes`` or ``str``). + + :return: None + """ + if cafile is None: + cafile = _ffi.NULL + else: + cafile = _path_bytes(cafile) + + if capath is None: + capath = _ffi.NULL + else: + capath = _path_bytes(capath) + + load_result = _lib.SSL_CTX_load_verify_locations( + self._context, cafile, capath + ) + if not load_result: + _raise_current_error() + + def _wrap_callback( + self, callback: _PassphraseCallback[_T] + ) -> _PassphraseHelper: + @wraps(callback) + def wrapper(size: int, verify: bool, userdata: Any) -> bytes: + return callback(size, verify, self._passphrase_userdata) + + return _PassphraseHelper( + FILETYPE_PEM, wrapper, more_args=True, truncate=True + ) + + def set_passwd_cb( + self, + callback: _PassphraseCallback[_T], + userdata: _T | None = None, + ) -> None: + """ + Set the passphrase callback. This function will be called + when a private key with a passphrase is loaded. + + :param callback: The Python callback to use. This must accept three + positional arguments. First, an integer giving the maximum length + of the passphrase it may return. If the returned passphrase is + longer than this, it will be truncated. Second, a boolean value + which will be true if the user should be prompted for the + passphrase twice and the callback should verify that the two values + supplied are equal. Third, the value given as the *userdata* + parameter to :meth:`set_passwd_cb`. The *callback* must return + a byte string. If an error occurs, *callback* should return a false + value (e.g. an empty string). + :param userdata: (optional) A Python object which will be given as + argument to the callback + :return: None + """ + if not callable(callback): + raise TypeError("callback must be callable") + + self._passphrase_helper = self._wrap_callback(callback) + self._passphrase_callback = self._passphrase_helper.callback + _lib.SSL_CTX_set_default_passwd_cb( + self._context, self._passphrase_callback + ) + self._passphrase_userdata = userdata + + def set_default_verify_paths(self) -> None: + """ + Specify that the platform provided CA certificates are to be used for + verification purposes. This method has some caveats related to the + binary wheels that cryptography (pyOpenSSL's primary dependency) ships: + + * macOS will only load certificates using this method if the user has + the ``openssl@1.1`` `Homebrew `_ formula installed + in the default location. + * Windows will not work. + * manylinux cryptography wheels will work on most common Linux + distributions in pyOpenSSL 17.1.0 and above. pyOpenSSL detects the + manylinux wheel and attempts to load roots via a fallback path. + + :return: None + """ + # SSL_CTX_set_default_verify_paths will attempt to load certs from + # both a cafile and capath that are set at compile time. However, + # it will first check environment variables and, if present, load + # those paths instead + set_result = _lib.SSL_CTX_set_default_verify_paths(self._context) + _openssl_assert(set_result == 1) + # After attempting to set default_verify_paths we need to know whether + # to go down the fallback path. + # First we'll check to see if any env vars have been set. If so, + # we won't try to do anything else because the user has set the path + # themselves. + dir_env_var = _ffi.string(_lib.X509_get_default_cert_dir_env()).decode( + "ascii" + ) + file_env_var = _ffi.string( + _lib.X509_get_default_cert_file_env() + ).decode("ascii") + if not self._check_env_vars_set(dir_env_var, file_env_var): + default_dir = _ffi.string(_lib.X509_get_default_cert_dir()) + default_file = _ffi.string(_lib.X509_get_default_cert_file()) + # Now we check to see if the default_dir and default_file are set + # to the exact values we use in our manylinux builds. If they are + # then we know to load the fallbacks + if ( + default_dir == _CRYPTOGRAPHY_MANYLINUX_CA_DIR + and default_file == _CRYPTOGRAPHY_MANYLINUX_CA_FILE + ): + # This is manylinux, let's load our fallback paths + self._fallback_default_verify_paths( + _CERTIFICATE_FILE_LOCATIONS, _CERTIFICATE_PATH_LOCATIONS + ) + + def _check_env_vars_set(self, dir_env_var: str, file_env_var: str) -> bool: + """ + Check to see if the default cert dir/file environment vars are present. + + :return: bool + """ + return ( + os.environ.get(file_env_var) is not None + or os.environ.get(dir_env_var) is not None + ) + + def _fallback_default_verify_paths( + self, file_path: list[str], dir_path: list[str] + ) -> None: + """ + Default verify paths are based on the compiled version of OpenSSL. + However, when pyca/cryptography is compiled as a manylinux wheel + that compiled location can potentially be wrong. So, like Go, we + will try a predefined set of paths and attempt to load roots + from there. + + :return: None + """ + for cafile in file_path: + if os.path.isfile(cafile): + self.load_verify_locations(cafile) + break + + for capath in dir_path: + if os.path.isdir(capath): + self.load_verify_locations(None, capath) + break + + def use_certificate_chain_file(self, certfile: _StrOrBytesPath) -> None: + """ + Load a certificate chain from a file. + + :param certfile: The name of the certificate chain file (``bytes`` or + ``str``). Must be PEM encoded. + + :return: None + """ + certfile = _path_bytes(certfile) + + result = _lib.SSL_CTX_use_certificate_chain_file( + self._context, certfile + ) + if not result: + _raise_current_error() + + def use_certificate_file( + self, certfile: _StrOrBytesPath, filetype: int = FILETYPE_PEM + ) -> None: + """ + Load a certificate from a file + + :param certfile: The name of the certificate file (``bytes`` or + ``str``). + :param filetype: (optional) The encoding of the file, which is either + :const:`FILETYPE_PEM` or :const:`FILETYPE_ASN1`. The default is + :const:`FILETYPE_PEM`. + + :return: None + """ + certfile = _path_bytes(certfile) + if not isinstance(filetype, int): + raise TypeError("filetype must be an integer") + + use_result = _lib.SSL_CTX_use_certificate_file( + self._context, certfile, filetype + ) + if not use_result: + _raise_current_error() + + def use_certificate(self, cert: X509 | x509.Certificate) -> None: + """ + Load a certificate from a X509 object + + :param cert: The X509 object + :return: None + """ + # Mirrored at Connection.use_certificate + if not isinstance(cert, X509): + cert = X509.from_cryptography(cert) + else: + warnings.warn( + ( + "Passing pyOpenSSL X509 objects is deprecated. You " + "should use a cryptography.x509.Certificate instead." + ), + DeprecationWarning, + stacklevel=2, + ) + + use_result = _lib.SSL_CTX_use_certificate(self._context, cert._x509) + if not use_result: + _raise_current_error() + + def add_extra_chain_cert(self, certobj: X509 | x509.Certificate) -> None: + """ + Add certificate to chain + + :param certobj: The X509 certificate object to add to the chain + :return: None + """ + if not isinstance(certobj, X509): + certobj = X509.from_cryptography(certobj) + else: + warnings.warn( + ( + "Passing pyOpenSSL X509 objects is deprecated. You " + "should use a cryptography.x509.Certificate instead." + ), + DeprecationWarning, + stacklevel=2, + ) + + copy = _lib.X509_dup(certobj._x509) + add_result = _lib.SSL_CTX_add_extra_chain_cert(self._context, copy) + if not add_result: + # TODO: This is untested. + _lib.X509_free(copy) + _raise_current_error() + + def _raise_passphrase_exception(self) -> None: + if self._passphrase_helper is not None: + self._passphrase_helper.raise_if_problem(Error) + + _raise_current_error() + + def use_privatekey_file( + self, keyfile: _StrOrBytesPath, filetype: int = FILETYPE_PEM + ) -> None: + """ + Load a private key from a file + + :param keyfile: The name of the key file (``bytes`` or ``str``) + :param filetype: (optional) The encoding of the file, which is either + :const:`FILETYPE_PEM` or :const:`FILETYPE_ASN1`. The default is + :const:`FILETYPE_PEM`. + + :return: None + """ + keyfile = _path_bytes(keyfile) + + if not isinstance(filetype, int): + raise TypeError("filetype must be an integer") + + use_result = _lib.SSL_CTX_use_PrivateKey_file( + self._context, keyfile, filetype + ) + if not use_result: + self._raise_passphrase_exception() + + def use_privatekey(self, pkey: _PrivateKey | PKey) -> None: + """ + Load a private key from a PKey object + + :param pkey: The PKey object + :return: None + """ + # Mirrored at Connection.use_privatekey + if not isinstance(pkey, PKey): + pkey = PKey.from_cryptography_key(pkey) + else: + warnings.warn( + ( + "Passing pyOpenSSL PKey objects is deprecated. You " + "should use a cryptography private key instead." + ), + DeprecationWarning, + stacklevel=2, + ) + + use_result = _lib.SSL_CTX_use_PrivateKey(self._context, pkey._pkey) + if not use_result: + self._raise_passphrase_exception() + + def check_privatekey(self) -> None: + """ + Check if the private key (loaded with :meth:`use_privatekey`) matches + the certificate (loaded with :meth:`use_certificate`) + + :return: :data:`None` (raises :exc:`Error` if something's wrong) + """ + if not _lib.SSL_CTX_check_private_key(self._context): + _raise_current_error() + + def load_client_ca(self, cafile: bytes) -> None: + """ + Load the trusted certificates that will be sent to the client. Does + not actually imply any of the certificates are trusted; that must be + configured separately. + + :param bytes cafile: The path to a certificates file in PEM format. + :return: None + """ + ca_list = _lib.SSL_load_client_CA_file( + _text_to_bytes_and_warn("cafile", cafile) + ) + _openssl_assert(ca_list != _ffi.NULL) + _lib.SSL_CTX_set_client_CA_list(self._context, ca_list) + + def set_session_id(self, buf: bytes) -> None: + """ + Set the session id to *buf* within which a session can be reused for + this Context object. This is needed when doing session resumption, + because there is no way for a stored session to know which Context + object it is associated with. + + :param bytes buf: The session id. + + :returns: None + """ + buf = _text_to_bytes_and_warn("buf", buf) + _openssl_assert( + _lib.SSL_CTX_set_session_id_context(self._context, buf, len(buf)) + == 1 + ) + + def set_session_cache_mode(self, mode: int) -> None: + """ + Set the behavior of the session cache used by all connections using + this Context. The previously set mode is returned. See + :const:`SESS_CACHE_*` for details about particular modes. + + :param mode: One or more of the SESS_CACHE_* flags (combine using + bitwise or) + :returns: The previously set caching mode. + + .. versionadded:: 0.14 + """ + if not isinstance(mode, int): + raise TypeError("mode must be an integer") + + return _lib.SSL_CTX_set_session_cache_mode(self._context, mode) + + def get_session_cache_mode(self) -> int: + """ + Get the current session cache mode. + + :returns: The currently used cache mode. + + .. versionadded:: 0.14 + """ + return _lib.SSL_CTX_get_session_cache_mode(self._context) + + def set_verify( + self, mode: int, callback: _VerifyCallback | None = None + ) -> None: + """ + Set the verification flags for this Context object to *mode* and + specify that *callback* should be used for verification callbacks. + + :param mode: The verify mode, this should be one of + :const:`VERIFY_NONE` and :const:`VERIFY_PEER`. If + :const:`VERIFY_PEER` is used, *mode* can be OR:ed with + :const:`VERIFY_FAIL_IF_NO_PEER_CERT` and + :const:`VERIFY_CLIENT_ONCE` to further control the behaviour. + :param callback: The optional Python verification callback to use. + This should take five arguments: A Connection object, an X509 + object, and three integer variables, which are in turn potential + error number, error depth and return code. *callback* should + return True if verification passes and False otherwise. + If omitted, OpenSSL's default verification is used. + :return: None + + See SSL_CTX_set_verify(3SSL) for further details. + """ + if not isinstance(mode, int): + raise TypeError("mode must be an integer") + + if callback is None: + self._verify_helper = None + self._verify_callback = None + _lib.SSL_CTX_set_verify(self._context, mode, _ffi.NULL) + else: + if not callable(callback): + raise TypeError("callback must be callable") + + self._verify_helper = _VerifyHelper(callback) + self._verify_callback = self._verify_helper.callback + _lib.SSL_CTX_set_verify(self._context, mode, self._verify_callback) + + def set_verify_depth(self, depth: int) -> None: + """ + Set the maximum depth for the certificate chain verification that shall + be allowed for this Context object. + + :param depth: An integer specifying the verify depth + :return: None + """ + if not isinstance(depth, int): + raise TypeError("depth must be an integer") + + _lib.SSL_CTX_set_verify_depth(self._context, depth) + + def get_verify_mode(self) -> int: + """ + Retrieve the Context object's verify mode, as set by + :meth:`set_verify`. + + :return: The verify mode + """ + return _lib.SSL_CTX_get_verify_mode(self._context) + + def get_verify_depth(self) -> int: + """ + Retrieve the Context object's verify depth, as set by + :meth:`set_verify_depth`. + + :return: The verify depth + """ + return _lib.SSL_CTX_get_verify_depth(self._context) + + def load_tmp_dh(self, dhfile: _StrOrBytesPath) -> None: + """ + Load parameters for Ephemeral Diffie-Hellman + + :param dhfile: The file to load EDH parameters from (``bytes`` or + ``str``). + + :return: None + """ + dhfile = _path_bytes(dhfile) + + bio = _lib.BIO_new_file(dhfile, b"r") + if bio == _ffi.NULL: + _raise_current_error() + bio = _ffi.gc(bio, _lib.BIO_free) + + dh = _lib.PEM_read_bio_DHparams(bio, _ffi.NULL, _ffi.NULL, _ffi.NULL) + dh = _ffi.gc(dh, _lib.DH_free) + res = _lib.SSL_CTX_set_tmp_dh(self._context, dh) + _openssl_assert(res == 1) + + def set_tmp_ecdh(self, curve: _EllipticCurve | ec.EllipticCurve) -> None: + """ + Select a curve to use for ECDHE key exchange. + + :param curve: A curve instance from cryptography + (:class:`~cryptogragraphy.hazmat.primitives.asymmetric.ec.EllipticCurve`). + Alternatively (deprecated) a curve object from either + :meth:`OpenSSL.crypto.get_elliptic_curve` or + :meth:`OpenSSL.crypto.get_elliptic_curves`. + + :return: None + """ + + if isinstance(curve, _EllipticCurve): + warnings.warn( + ( + "Passing pyOpenSSL elliptic curves to set_tmp_ecdh is " + "deprecated. You should use cryptography's elliptic curve " + "types instead." + ), + DeprecationWarning, + stacklevel=2, + ) + _lib.SSL_CTX_set_tmp_ecdh(self._context, curve._to_EC_KEY()) + else: + name = curve.name + if name == "secp192r1": + name = "prime192v1" + elif name == "secp256r1": + name = "prime256v1" + nid = _lib.OBJ_txt2nid(name.encode()) + if nid == _lib.NID_undef: + _raise_current_error() + + ec = _lib.EC_KEY_new_by_curve_name(nid) + _openssl_assert(ec != _ffi.NULL) + ec = _ffi.gc(ec, _lib.EC_KEY_free) + _lib.SSL_CTX_set_tmp_ecdh(self._context, ec) + + def set_cipher_list(self, cipher_list: bytes) -> None: + """ + Set the list of ciphers to be used in this context. + + See the OpenSSL manual for more information (e.g. + :manpage:`ciphers(1)`). + + :param bytes cipher_list: An OpenSSL cipher string. + :return: None + """ + cipher_list = _text_to_bytes_and_warn("cipher_list", cipher_list) + + if not isinstance(cipher_list, bytes): + raise TypeError("cipher_list must be a byte string.") + + _openssl_assert( + _lib.SSL_CTX_set_cipher_list(self._context, cipher_list) == 1 + ) + # In OpenSSL 1.1.1 setting the cipher list will always return TLS 1.3 + # ciphers even if you pass an invalid cipher. Applications (like + # Twisted) have tests that depend on an error being raised if an + # invalid cipher string is passed, but without the following check + # for the TLS 1.3 specific cipher suites it would never error. + tmpconn = Connection(self, None) + if tmpconn.get_cipher_list() == [ + "TLS_AES_256_GCM_SHA384", + "TLS_CHACHA20_POLY1305_SHA256", + "TLS_AES_128_GCM_SHA256", + ]: + raise Error( + [ + ( + "SSL routines", + "SSL_CTX_set_cipher_list", + "no cipher match", + ), + ], + ) + + def set_client_ca_list( + self, certificate_authorities: Sequence[X509Name] + ) -> None: + """ + Set the list of preferred client certificate signers for this server + context. + + This list of certificate authorities will be sent to the client when + the server requests a client certificate. + + :param certificate_authorities: a sequence of X509Names. + :return: None + + .. versionadded:: 0.10 + """ + name_stack = _lib.sk_X509_NAME_new_null() + _openssl_assert(name_stack != _ffi.NULL) + + try: + for ca_name in certificate_authorities: + if not isinstance(ca_name, X509Name): + raise TypeError( + f"client CAs must be X509Name objects, not " + f"{type(ca_name).__name__} objects" + ) + copy = _lib.X509_NAME_dup(ca_name._name) + _openssl_assert(copy != _ffi.NULL) + push_result = _lib.sk_X509_NAME_push(name_stack, copy) + if not push_result: + _lib.X509_NAME_free(copy) + _raise_current_error() + except Exception: + _lib.sk_X509_NAME_free(name_stack) + raise + + _lib.SSL_CTX_set_client_CA_list(self._context, name_stack) + + def add_client_ca( + self, certificate_authority: X509 | x509.Certificate + ) -> None: + """ + Add the CA certificate to the list of preferred signers for this + context. + + The list of certificate authorities will be sent to the client when the + server requests a client certificate. + + :param certificate_authority: certificate authority's X509 certificate. + :return: None + + .. versionadded:: 0.10 + """ + if not isinstance(certificate_authority, X509): + certificate_authority = X509.from_cryptography( + certificate_authority + ) + else: + warnings.warn( + ( + "Passing pyOpenSSL X509 objects is deprecated. You " + "should use a cryptography.x509.Certificate instead." + ), + DeprecationWarning, + stacklevel=2, + ) + + add_result = _lib.SSL_CTX_add_client_CA( + self._context, certificate_authority._x509 + ) + _openssl_assert(add_result == 1) + + def set_timeout(self, timeout: int) -> None: + """ + Set the timeout for newly created sessions for this Context object to + *timeout*. The default value is 300 seconds. See the OpenSSL manual + for more information (e.g. :manpage:`SSL_CTX_set_timeout(3)`). + + :param timeout: The timeout in (whole) seconds + :return: The previous session timeout + """ + if not isinstance(timeout, int): + raise TypeError("timeout must be an integer") + + return _lib.SSL_CTX_set_timeout(self._context, timeout) + + def get_timeout(self) -> int: + """ + Retrieve session timeout, as set by :meth:`set_timeout`. The default + is 300 seconds. + + :return: The session timeout + """ + return _lib.SSL_CTX_get_timeout(self._context) + + def set_info_callback( + self, callback: Callable[[Connection, int, int], None] + ) -> None: + """ + Set the information callback to *callback*. This function will be + called from time to time during SSL handshakes. + + :param callback: The Python callback to use. This should take three + arguments: a Connection object and two integers. The first integer + specifies where in the SSL handshake the function was called, and + the other the return code from a (possibly failed) internal + function call. + :return: None + """ + + @wraps(callback) + def wrapper(ssl, where, return_code): # type: ignore[no-untyped-def] + callback(Connection._reverse_mapping[ssl], where, return_code) + + self._info_callback = _ffi.callback( + "void (*)(const SSL *, int, int)", wrapper + ) + _lib.SSL_CTX_set_info_callback(self._context, self._info_callback) + + @_requires_keylog + def set_keylog_callback( + self, callback: Callable[[Connection, bytes], None] + ) -> None: + """ + Set the TLS key logging callback to *callback*. This function will be + called whenever TLS key material is generated or received, in order + to allow applications to store this keying material for debugging + purposes. + + :param callback: The Python callback to use. This should take two + arguments: a Connection object and a bytestring that contains + the key material in the format used by NSS for its SSLKEYLOGFILE + debugging output. + :return: None + """ + + @wraps(callback) + def wrapper(ssl, line): # type: ignore[no-untyped-def] + line = _ffi.string(line) + callback(Connection._reverse_mapping[ssl], line) + + self._keylog_callback = _ffi.callback( + "void (*)(const SSL *, const char *)", wrapper + ) + _lib.SSL_CTX_set_keylog_callback(self._context, self._keylog_callback) + + def get_app_data(self) -> Any: + """ + Get the application data (supplied via :meth:`set_app_data()`) + + :return: The application data + """ + return self._app_data + + def set_app_data(self, data: Any) -> None: + """ + Set the application data (will be returned from get_app_data()) + + :param data: Any Python object + :return: None + """ + self._app_data = data + + def get_cert_store(self) -> X509Store | None: + """ + Get the certificate store for the context. This can be used to add + "trusted" certificates without using the + :meth:`load_verify_locations` method. + + :return: A X509Store object or None if it does not have one. + """ + store = _lib.SSL_CTX_get_cert_store(self._context) + if store == _ffi.NULL: + # TODO: This is untested. + return None + + pystore = X509Store.__new__(X509Store) + pystore._store = store + return pystore + + def set_options(self, options: int) -> None: + """ + Add options. Options set before are not cleared! + This method should be used with the :const:`OP_*` constants. + + :param options: The options to add. + :return: The new option bitmask. + """ + if not isinstance(options, int): + raise TypeError("options must be an integer") + + return _lib.SSL_CTX_set_options(self._context, options) + + def set_mode(self, mode: int) -> None: + """ + Add modes via bitmask. Modes set before are not cleared! This method + should be used with the :const:`MODE_*` constants. + + :param mode: The mode to add. + :return: The new mode bitmask. + """ + if not isinstance(mode, int): + raise TypeError("mode must be an integer") + + return _lib.SSL_CTX_set_mode(self._context, mode) + + def set_tlsext_servername_callback( + self, callback: Callable[[Connection], None] + ) -> None: + """ + Specify a callback function to be called when clients specify a server + name. + + :param callback: The callback function. It will be invoked with one + argument, the Connection instance. + + .. versionadded:: 0.13 + """ + + @wraps(callback) + def wrapper(ssl, alert, arg): # type: ignore[no-untyped-def] + callback(Connection._reverse_mapping[ssl]) + return 0 + + self._tlsext_servername_callback = _ffi.callback( + "int (*)(SSL *, int *, void *)", wrapper + ) + _lib.SSL_CTX_set_tlsext_servername_callback( + self._context, self._tlsext_servername_callback + ) + + def set_tlsext_use_srtp(self, profiles: bytes) -> None: + """ + Enable support for negotiating SRTP keying material. + + :param bytes profiles: A colon delimited list of protection profile + names, like ``b'SRTP_AES128_CM_SHA1_80:SRTP_AES128_CM_SHA1_32'``. + :return: None + """ + if not isinstance(profiles, bytes): + raise TypeError("profiles must be a byte string.") + + _openssl_assert( + _lib.SSL_CTX_set_tlsext_use_srtp(self._context, profiles) == 0 + ) + + def set_alpn_protos(self, protos: list[bytes]) -> None: + """ + Specify the protocols that the client is prepared to speak after the + TLS connection has been negotiated using Application Layer Protocol + Negotiation. + + :param protos: A list of the protocols to be offered to the server. + This list should be a Python list of bytestrings representing the + protocols to offer, e.g. ``[b'http/1.1', b'spdy/2']``. + """ + # Different versions of OpenSSL are inconsistent about how they handle + # empty proto lists (see #1043), so we avoid the problem entirely by + # rejecting them ourselves. + if not protos: + raise ValueError("at least one protocol must be specified") + + # Take the list of protocols and join them together, prefixing them + # with their lengths. + protostr = b"".join( + chain.from_iterable((bytes((len(p),)), p) for p in protos) + ) + + # Build a C string from the list. We don't need to save this off + # because OpenSSL immediately copies the data out. + input_str = _ffi.new("unsigned char[]", protostr) + + # https://www.openssl.org/docs/man1.1.0/man3/SSL_CTX_set_alpn_protos.html: + # SSL_CTX_set_alpn_protos() and SSL_set_alpn_protos() + # return 0 on success, and non-0 on failure. + # WARNING: these functions reverse the return value convention. + _openssl_assert( + _lib.SSL_CTX_set_alpn_protos( + self._context, input_str, len(protostr) + ) + == 0 + ) + + def set_alpn_select_callback(self, callback: _ALPNSelectCallback) -> None: + """ + Specify a callback function that will be called on the server when a + client offers protocols using ALPN. + + :param callback: The callback function. It will be invoked with two + arguments: the Connection, and a list of offered protocols as + bytestrings, e.g ``[b'http/1.1', b'spdy/2']``. It can return + one of those bytestrings to indicate the chosen protocol, the + empty bytestring to terminate the TLS connection, or the + :py:obj:`NO_OVERLAPPING_PROTOCOLS` to indicate that no offered + protocol was selected, but that the connection should not be + aborted. + """ + self._alpn_select_helper = _ALPNSelectHelper(callback) + self._alpn_select_callback = self._alpn_select_helper.callback + _lib.SSL_CTX_set_alpn_select_cb( + self._context, self._alpn_select_callback, _ffi.NULL + ) + + def _set_ocsp_callback( + self, + helper: _OCSPClientCallbackHelper | _OCSPServerCallbackHelper, + data: Any | None, + ) -> None: + """ + This internal helper does the common work for + ``set_ocsp_server_callback`` and ``set_ocsp_client_callback``, which is + almost all of it. + """ + self._ocsp_helper = helper + self._ocsp_callback = helper.callback + if data is None: + self._ocsp_data = _ffi.NULL + else: + self._ocsp_data = _ffi.new_handle(data) + + rc = _lib.SSL_CTX_set_tlsext_status_cb( + self._context, self._ocsp_callback + ) + _openssl_assert(rc == 1) + rc = _lib.SSL_CTX_set_tlsext_status_arg(self._context, self._ocsp_data) + _openssl_assert(rc == 1) + + def set_ocsp_server_callback( + self, + callback: _OCSPServerCallback[_T], + data: _T | None = None, + ) -> None: + """ + Set a callback to provide OCSP data to be stapled to the TLS handshake + on the server side. + + :param callback: The callback function. It will be invoked with two + arguments: the Connection, and the optional arbitrary data you have + provided. The callback must return a bytestring that contains the + OCSP data to staple to the handshake. If no OCSP data is available + for this connection, return the empty bytestring. + :param data: Some opaque data that will be passed into the callback + function when called. This can be used to avoid needing to do + complex data lookups or to keep track of what context is being + used. This parameter is optional. + """ + helper = _OCSPServerCallbackHelper(callback) + self._set_ocsp_callback(helper, data) + + def set_ocsp_client_callback( + self, + callback: _OCSPClientCallback[_T], + data: _T | None = None, + ) -> None: + """ + Set a callback to validate OCSP data stapled to the TLS handshake on + the client side. + + :param callback: The callback function. It will be invoked with three + arguments: the Connection, a bytestring containing the stapled OCSP + assertion, and the optional arbitrary data you have provided. The + callback must return a boolean that indicates the result of + validating the OCSP data: ``True`` if the OCSP data is valid and + the certificate can be trusted, or ``False`` if either the OCSP + data is invalid or the certificate has been revoked. + :param data: Some opaque data that will be passed into the callback + function when called. This can be used to avoid needing to do + complex data lookups or to keep track of what context is being + used. This parameter is optional. + """ + helper = _OCSPClientCallbackHelper(callback) + self._set_ocsp_callback(helper, data) + + def set_cookie_generate_callback( + self, callback: _CookieGenerateCallback + ) -> None: + self._cookie_generate_helper = _CookieGenerateCallbackHelper(callback) + _lib.SSL_CTX_set_cookie_generate_cb( + self._context, + self._cookie_generate_helper.callback, + ) + + def set_cookie_verify_callback( + self, callback: _CookieVerifyCallback + ) -> None: + self._cookie_verify_helper = _CookieVerifyCallbackHelper(callback) + _lib.SSL_CTX_set_cookie_verify_cb( + self._context, + self._cookie_verify_helper.callback, + ) + + +class Connection: + _reverse_mapping: typing.MutableMapping[Any, Connection] = ( + WeakValueDictionary() + ) + + def __init__( + self, context: Context, socket: socket.socket | None = None + ) -> None: + """ + Create a new Connection object, using the given OpenSSL.SSL.Context + instance and socket. + + :param context: An SSL Context to use for this connection + :param socket: The socket to use for transport layer + """ + if not isinstance(context, Context): + raise TypeError("context must be a Context instance") + + ssl = _lib.SSL_new(context._context) + self._ssl = _ffi.gc(ssl, _lib.SSL_free) + # We set SSL_MODE_AUTO_RETRY to handle situations where OpenSSL returns + # an SSL_ERROR_WANT_READ when processing a non-application data packet + # even though there is still data on the underlying transport. + # See https://github.com/openssl/openssl/issues/6234 for more details. + _lib.SSL_set_mode(self._ssl, _lib.SSL_MODE_AUTO_RETRY) + self._context = context + self._app_data = None + + # References to strings used for Application Layer Protocol + # Negotiation. These strings get copied at some point but it's well + # after the callback returns, so we have to hang them somewhere to + # avoid them getting freed. + self._alpn_select_callback_args = None + + # Reference the verify_callback of the Context. This ensures that if + # set_verify is called again after the SSL object has been created we + # do not point to a dangling reference + self._verify_helper = context._verify_helper + self._verify_callback = context._verify_callback + + # And likewise for the cookie callbacks + self._cookie_generate_helper = context._cookie_generate_helper + self._cookie_verify_helper = context._cookie_verify_helper + + self._reverse_mapping[self._ssl] = self + + if socket is None: + self._socket = None + # Don't set up any gc for these, SSL_free will take care of them. + self._into_ssl = _lib.BIO_new(_lib.BIO_s_mem()) + _openssl_assert(self._into_ssl != _ffi.NULL) + + self._from_ssl = _lib.BIO_new(_lib.BIO_s_mem()) + _openssl_assert(self._from_ssl != _ffi.NULL) + + _lib.SSL_set_bio(self._ssl, self._into_ssl, self._from_ssl) + else: + self._into_ssl = None + self._from_ssl = None + self._socket = socket + set_result = _lib.SSL_set_fd( + self._ssl, _asFileDescriptor(self._socket) + ) + _openssl_assert(set_result == 1) + + def __getattr__(self, name: str) -> Any: + """ + Look up attributes on the wrapped socket object if they are not found + on the Connection object. + """ + if self._socket is None: + raise AttributeError( + f"'{self.__class__.__name__}' object has no attribute '{name}'" + ) + else: + return getattr(self._socket, name) + + def _raise_ssl_error(self, ssl: Any, result: int) -> None: + if self._context._verify_helper is not None: + self._context._verify_helper.raise_if_problem() + if self._context._alpn_select_helper is not None: + self._context._alpn_select_helper.raise_if_problem() + if self._context._ocsp_helper is not None: + self._context._ocsp_helper.raise_if_problem() + + error = _lib.SSL_get_error(ssl, result) + if error == _lib.SSL_ERROR_WANT_READ: + raise WantReadError() + elif error == _lib.SSL_ERROR_WANT_WRITE: + raise WantWriteError() + elif error == _lib.SSL_ERROR_ZERO_RETURN: + raise ZeroReturnError() + elif error == _lib.SSL_ERROR_WANT_X509_LOOKUP: + # TODO: This is untested. + raise WantX509LookupError() + elif error == _lib.SSL_ERROR_SYSCALL: + if platform == "win32": + errno = _ffi.getwinerror()[0] + else: + errno = _ffi.errno + if _lib.ERR_peek_error() == 0 or errno != 0: + if result < 0 and errno != 0: + raise SysCallError(errno, errorcode.get(errno)) + raise SysCallError(-1, "Unexpected EOF") + else: + # TODO: This is untested, but I think twisted hits it? + _raise_current_error() + elif error == _lib.SSL_ERROR_SSL and _lib.ERR_peek_error() != 0: + # In 3.0.x an unexpected EOF no longer triggers syscall error + # but we want to maintain compatibility so we check here and + # raise syscall if it is an EOF. Since we're not actually sure + # what else could raise SSL_ERROR_SSL we check for the presence + # of the OpenSSL 3 constant SSL_R_UNEXPECTED_EOF_WHILE_READING + # and if it's not present we just raise an error, which matches + # the behavior before we added this elif section + peeked_error = _lib.ERR_peek_error() + reason = _lib.ERR_GET_REASON(peeked_error) + if _lib.Cryptography_HAS_UNEXPECTED_EOF_WHILE_READING: + _openssl_assert( + reason == _lib.SSL_R_UNEXPECTED_EOF_WHILE_READING + ) + _lib.ERR_clear_error() + raise SysCallError(-1, "Unexpected EOF") + else: + _raise_current_error() + elif error == _lib.SSL_ERROR_NONE: + pass + else: + _raise_current_error() + + def get_context(self) -> Context: + """ + Retrieve the :class:`Context` object associated with this + :class:`Connection`. + """ + return self._context + + def set_context(self, context: Context) -> None: + """ + Switch this connection to a new session context. + + :param context: A :class:`Context` instance giving the new session + context to use. + """ + if not isinstance(context, Context): + raise TypeError("context must be a Context instance") + + _lib.SSL_set_SSL_CTX(self._ssl, context._context) + self._context = context + + def get_servername(self) -> bytes | None: + """ + Retrieve the servername extension value if provided in the client hello + message, or None if there wasn't one. + + :return: A byte string giving the server name or :data:`None`. + + .. versionadded:: 0.13 + """ + name = _lib.SSL_get_servername( + self._ssl, _lib.TLSEXT_NAMETYPE_host_name + ) + if name == _ffi.NULL: + return None + + return _ffi.string(name) + + def set_verify( + self, mode: int, callback: _VerifyCallback | None = None + ) -> None: + """ + Override the Context object's verification flags for this specific + connection. See :py:meth:`Context.set_verify` for details. + """ + if not isinstance(mode, int): + raise TypeError("mode must be an integer") + + if callback is None: + self._verify_helper = None + self._verify_callback = None + _lib.SSL_set_verify(self._ssl, mode, _ffi.NULL) + else: + if not callable(callback): + raise TypeError("callback must be callable") + + self._verify_helper = _VerifyHelper(callback) + self._verify_callback = self._verify_helper.callback + _lib.SSL_set_verify(self._ssl, mode, self._verify_callback) + + def get_verify_mode(self) -> int: + """ + Retrieve the Connection object's verify mode, as set by + :meth:`set_verify`. + + :return: The verify mode + """ + return _lib.SSL_get_verify_mode(self._ssl) + + def use_certificate(self, cert: X509 | x509.Certificate) -> None: + """ + Load a certificate from a X509 object + + :param cert: The X509 object + :return: None + """ + # Mirrored from Context.use_certificate + if not isinstance(cert, X509): + cert = X509.from_cryptography(cert) + else: + warnings.warn( + ( + "Passing pyOpenSSL X509 objects is deprecated. You " + "should use a cryptography.x509.Certificate instead." + ), + DeprecationWarning, + stacklevel=2, + ) + + use_result = _lib.SSL_use_certificate(self._ssl, cert._x509) + if not use_result: + _raise_current_error() + + def use_privatekey(self, pkey: _PrivateKey | PKey) -> None: + """ + Load a private key from a PKey object + + :param pkey: The PKey object + :return: None + """ + # Mirrored from Context.use_privatekey + if not isinstance(pkey, PKey): + pkey = PKey.from_cryptography_key(pkey) + else: + warnings.warn( + ( + "Passing pyOpenSSL PKey objects is deprecated. You " + "should use a cryptography private key instead." + ), + DeprecationWarning, + stacklevel=2, + ) + + use_result = _lib.SSL_use_PrivateKey(self._ssl, pkey._pkey) + if not use_result: + self._context._raise_passphrase_exception() + + def set_ciphertext_mtu(self, mtu: int) -> None: + """ + For DTLS, set the maximum UDP payload size (*not* including IP/UDP + overhead). + + Note that you might have to set :data:`OP_NO_QUERY_MTU` to prevent + OpenSSL from spontaneously clearing this. + + :param mtu: An integer giving the maximum transmission unit. + + .. versionadded:: 21.1 + """ + _lib.SSL_set_mtu(self._ssl, mtu) + + def get_cleartext_mtu(self) -> int: + """ + For DTLS, get the maximum size of unencrypted data you can pass to + :meth:`write` without exceeding the MTU (as passed to + :meth:`set_ciphertext_mtu`). + + :return: The effective MTU as an integer. + + .. versionadded:: 21.1 + """ + + if not hasattr(_lib, "DTLS_get_data_mtu"): + raise NotImplementedError("requires OpenSSL 1.1.1 or better") + return _lib.DTLS_get_data_mtu(self._ssl) + + def set_tlsext_host_name(self, name: bytes) -> None: + """ + Set the value of the servername extension to send in the client hello. + + :param name: A byte string giving the name. + + .. versionadded:: 0.13 + """ + if not isinstance(name, bytes): + raise TypeError("name must be a byte string") + elif b"\0" in name: + raise TypeError("name must not contain NUL byte") + + # XXX I guess this can fail sometimes? + _lib.SSL_set_tlsext_host_name(self._ssl, name) + + def pending(self) -> int: + """ + Get the number of bytes that can be safely read from the SSL buffer + (**not** the underlying transport buffer). + + :return: The number of bytes available in the receive buffer. + """ + return _lib.SSL_pending(self._ssl) + + def send(self, buf: bytes, flags: int = 0) -> int: + """ + Send data on the connection. NOTE: If you get one of the WantRead, + WantWrite or WantX509Lookup exceptions on this, you have to call the + method again with the SAME buffer. + + :param buf: The string, buffer or memoryview to send + :param flags: (optional) Included for compatibility with the socket + API, the value is ignored + :return: The number of bytes written + """ + # Backward compatibility + buf = _text_to_bytes_and_warn("buf", buf) + + with _ffi.from_buffer(buf) as data: + # check len(buf) instead of len(data) for testability + if len(buf) > 2147483647: + raise ValueError( + "Cannot send more than 2**31-1 bytes at once." + ) + + result = _lib.SSL_write(self._ssl, data, len(data)) + self._raise_ssl_error(self._ssl, result) + + return result + + write = send + + def sendall(self, buf: bytes, flags: int = 0) -> int: + """ + Send "all" data on the connection. This calls send() repeatedly until + all data is sent. If an error occurs, it's impossible to tell how much + data has been sent. + + :param buf: The string, buffer or memoryview to send + :param flags: (optional) Included for compatibility with the socket + API, the value is ignored + :return: The number of bytes written + """ + buf = _text_to_bytes_and_warn("buf", buf) + + with _ffi.from_buffer(buf) as data: + left_to_send = len(buf) + total_sent = 0 + + while left_to_send: + # SSL_write's num arg is an int, + # so we cannot send more than 2**31-1 bytes at once. + result = _lib.SSL_write( + self._ssl, data + total_sent, min(left_to_send, 2147483647) + ) + self._raise_ssl_error(self._ssl, result) + total_sent += result + left_to_send -= result + + return total_sent + + def recv(self, bufsiz: int, flags: int | None = None) -> bytes: + """ + Receive data on the connection. + + :param bufsiz: The maximum number of bytes to read + :param flags: (optional) The only supported flag is ``MSG_PEEK``, + all other flags are ignored. + :return: The string read from the Connection + """ + buf = _no_zero_allocator("char[]", bufsiz) + if flags is not None and flags & socket.MSG_PEEK: + result = _lib.SSL_peek(self._ssl, buf, bufsiz) + else: + result = _lib.SSL_read(self._ssl, buf, bufsiz) + self._raise_ssl_error(self._ssl, result) + return _ffi.buffer(buf, result)[:] + + read = recv + + def recv_into( + self, + buffer: Any, # collections.abc.Buffer once we use Python 3.12+ + nbytes: int | None = None, + flags: int | None = None, + ) -> int: + """ + Receive data on the connection and copy it directly into the provided + buffer, rather than creating a new string. + + :param buffer: The buffer to copy into. + :param nbytes: (optional) The maximum number of bytes to read into the + buffer. If not present, defaults to the size of the buffer. If + larger than the size of the buffer, is reduced to the size of the + buffer. + :param flags: (optional) The only supported flag is ``MSG_PEEK``, + all other flags are ignored. + :return: The number of bytes read into the buffer. + """ + if nbytes is None: + nbytes = len(buffer) + else: + nbytes = min(nbytes, len(buffer)) + + # We need to create a temporary buffer. This is annoying, it would be + # better if we could pass memoryviews straight into the SSL_read call, + # but right now we can't. Revisit this if CFFI gets that ability. + buf = _no_zero_allocator("char[]", nbytes) + if flags is not None and flags & socket.MSG_PEEK: + result = _lib.SSL_peek(self._ssl, buf, nbytes) + else: + result = _lib.SSL_read(self._ssl, buf, nbytes) + self._raise_ssl_error(self._ssl, result) + + # This strange line is all to avoid a memory copy. The buffer protocol + # should allow us to assign a CFFI buffer to the LHS of this line, but + # on CPython 3.3+ that segfaults. As a workaround, we can temporarily + # wrap it in a memoryview. + buffer[:result] = memoryview(_ffi.buffer(buf, result)) + + return result + + def _handle_bio_errors(self, bio: Any, result: int) -> typing.NoReturn: + if _lib.BIO_should_retry(bio): + if _lib.BIO_should_read(bio): + raise WantReadError() + elif _lib.BIO_should_write(bio): + # TODO: This is untested. + raise WantWriteError() + elif _lib.BIO_should_io_special(bio): + # TODO: This is untested. I think io_special means the socket + # BIO has a not-yet connected socket. + raise ValueError("BIO_should_io_special") + else: + # TODO: This is untested. + raise ValueError("unknown bio failure") + else: + # TODO: This is untested. + _raise_current_error() + + def bio_read(self, bufsiz: int) -> bytes: + """ + If the Connection was created with a memory BIO, this method can be + used to read bytes from the write end of that memory BIO. Many + Connection methods will add bytes which must be read in this manner or + the buffer will eventually fill up and the Connection will be able to + take no further actions. + + :param bufsiz: The maximum number of bytes to read + :return: The string read. + """ + if self._from_ssl is None: + raise TypeError("Connection sock was not None") + + if not isinstance(bufsiz, int): + raise TypeError("bufsiz must be an integer") + + buf = _no_zero_allocator("char[]", bufsiz) + result = _lib.BIO_read(self._from_ssl, buf, bufsiz) + if result <= 0: + self._handle_bio_errors(self._from_ssl, result) + + return _ffi.buffer(buf, result)[:] + + def bio_write(self, buf: bytes) -> int: + """ + If the Connection was created with a memory BIO, this method can be + used to add bytes to the read end of that memory BIO. The Connection + can then read the bytes (for example, in response to a call to + :meth:`recv`). + + :param buf: The string to put into the memory BIO. + :return: The number of bytes written + """ + buf = _text_to_bytes_and_warn("buf", buf) + + if self._into_ssl is None: + raise TypeError("Connection sock was not None") + + with _ffi.from_buffer(buf) as data: + result = _lib.BIO_write(self._into_ssl, data, len(data)) + if result <= 0: + self._handle_bio_errors(self._into_ssl, result) + return result + + def renegotiate(self) -> bool: + """ + Renegotiate the session. + + :return: True if the renegotiation can be started, False otherwise + """ + if not self.renegotiate_pending(): + _openssl_assert(_lib.SSL_renegotiate(self._ssl) == 1) + return True + return False + + def do_handshake(self) -> None: + """ + Perform an SSL handshake (usually called after :meth:`renegotiate` or + one of :meth:`set_accept_state` or :meth:`set_connect_state`). This can + raise the same exceptions as :meth:`send` and :meth:`recv`. + + :return: None. + """ + result = _lib.SSL_do_handshake(self._ssl) + self._raise_ssl_error(self._ssl, result) + + def renegotiate_pending(self) -> bool: + """ + Check if there's a renegotiation in progress, it will return False once + a renegotiation is finished. + + :return: Whether there's a renegotiation in progress + """ + return _lib.SSL_renegotiate_pending(self._ssl) == 1 + + def total_renegotiations(self) -> int: + """ + Find out the total number of renegotiations. + + :return: The number of renegotiations. + """ + return _lib.SSL_total_renegotiations(self._ssl) + + def connect(self, addr: Any) -> None: + """ + Call the :meth:`connect` method of the underlying socket and set up SSL + on the socket, using the :class:`Context` object supplied to this + :class:`Connection` object at creation. + + :param addr: A remote address + :return: What the socket's connect method returns + """ + _lib.SSL_set_connect_state(self._ssl) + return self._socket.connect(addr) # type: ignore[return-value, union-attr] + + def connect_ex(self, addr: Any) -> int: + """ + Call the :meth:`connect_ex` method of the underlying socket and set up + SSL on the socket, using the Context object supplied to this Connection + object at creation. Note that if the :meth:`connect_ex` method of the + socket doesn't return 0, SSL won't be initialized. + + :param addr: A remove address + :return: What the socket's connect_ex method returns + """ + connect_ex = self._socket.connect_ex # type: ignore[union-attr] + self.set_connect_state() + return connect_ex(addr) + + def accept(self) -> tuple[Connection, Any]: + """ + Call the :meth:`accept` method of the underlying socket and set up SSL + on the returned socket, using the Context object supplied to this + :class:`Connection` object at creation. + + :return: A *(conn, addr)* pair where *conn* is the new + :class:`Connection` object created, and *address* is as returned by + the socket's :meth:`accept`. + """ + client, addr = self._socket.accept() # type: ignore[union-attr] + conn = Connection(self._context, client) + conn.set_accept_state() + return (conn, addr) + + def DTLSv1_listen(self) -> None: + """ + Call the OpenSSL function DTLSv1_listen on this connection. See the + OpenSSL manual for more details. + + :return: None + """ + # Possible future extension: return the BIO_ADDR in some form. + bio_addr = _lib.BIO_ADDR_new() + try: + result = _lib.DTLSv1_listen(self._ssl, bio_addr) + finally: + _lib.BIO_ADDR_free(bio_addr) + # DTLSv1_listen is weird. A zero return value means 'didn't find a + # ClientHello with valid cookie, but keep trying'. So basically + # WantReadError. But it doesn't work correctly with _raise_ssl_error. + # So we raise it manually instead. + if self._cookie_generate_helper is not None: + self._cookie_generate_helper.raise_if_problem() + if self._cookie_verify_helper is not None: + self._cookie_verify_helper.raise_if_problem() + if result == 0: + raise WantReadError() + if result < 0: + self._raise_ssl_error(self._ssl, result) + + def DTLSv1_get_timeout(self) -> int | None: + """ + Determine when the DTLS SSL object next needs to perform internal + processing due to the passage of time. + + When the returned number of seconds have passed, the + :meth:`DTLSv1_handle_timeout` method needs to be called. + + :return: The time left in seconds before the next timeout or `None` + if no timeout is currently active. + """ + ptv_sec = _ffi.new("time_t *") + ptv_usec = _ffi.new("long *") + if _lib.Cryptography_DTLSv1_get_timeout(self._ssl, ptv_sec, ptv_usec): + return ptv_sec[0] + (ptv_usec[0] / 1000000) + else: + return None + + def DTLSv1_handle_timeout(self) -> bool: + """ + Handles any timeout events which have become pending on a DTLS SSL + object. + + :return: `True` if there was a pending timeout, `False` otherwise. + """ + result = _lib.DTLSv1_handle_timeout(self._ssl) + if result < 0: + self._raise_ssl_error(self._ssl, result) + assert False, "unreachable" + else: + return bool(result) + + def bio_shutdown(self) -> None: + """ + If the Connection was created with a memory BIO, this method can be + used to indicate that *end of file* has been reached on the read end of + that memory BIO. + + :return: None + """ + if self._from_ssl is None: + raise TypeError("Connection sock was not None") + + _lib.BIO_set_mem_eof_return(self._into_ssl, 0) + + def shutdown(self) -> bool: + """ + Send the shutdown message to the Connection. + + :return: True if the shutdown completed successfully (i.e. both sides + have sent closure alerts), False otherwise (in which case you + call :meth:`recv` or :meth:`send` when the connection becomes + readable/writeable). + """ + result = _lib.SSL_shutdown(self._ssl) + if result < 0: + self._raise_ssl_error(self._ssl, result) + assert False, "unreachable" + elif result > 0: + return True + else: + return False + + def get_cipher_list(self) -> list[str]: + """ + Retrieve the list of ciphers used by the Connection object. + + :return: A list of native cipher strings. + """ + ciphers = [] + for i in count(): + result = _lib.SSL_get_cipher_list(self._ssl, i) + if result == _ffi.NULL: + break + ciphers.append(_ffi.string(result).decode("utf-8")) + return ciphers + + def get_client_ca_list(self) -> list[X509Name]: + """ + Get CAs whose certificates are suggested for client authentication. + + :return: If this is a server connection, the list of certificate + authorities that will be sent or has been sent to the client, as + controlled by this :class:`Connection`'s :class:`Context`. + + If this is a client connection, the list will be empty until the + connection with the server is established. + + .. versionadded:: 0.10 + """ + ca_names = _lib.SSL_get_client_CA_list(self._ssl) + if ca_names == _ffi.NULL: + # TODO: This is untested. + return [] + + result = [] + for i in range(_lib.sk_X509_NAME_num(ca_names)): + name = _lib.sk_X509_NAME_value(ca_names, i) + copy = _lib.X509_NAME_dup(name) + _openssl_assert(copy != _ffi.NULL) + + pyname = X509Name.__new__(X509Name) + pyname._name = _ffi.gc(copy, _lib.X509_NAME_free) + result.append(pyname) + return result + + def makefile(self, *args: Any, **kwargs: Any) -> typing.NoReturn: + """ + The makefile() method is not implemented, since there is no dup + semantics for SSL connections + + :raise: NotImplementedError + """ + raise NotImplementedError( + "Cannot make file object of OpenSSL.SSL.Connection" + ) + + def get_app_data(self) -> Any: + """ + Retrieve application data as set by :meth:`set_app_data`. + + :return: The application data + """ + return self._app_data + + def set_app_data(self, data: Any) -> None: + """ + Set application data + + :param data: The application data + :return: None + """ + self._app_data = data + + def get_shutdown(self) -> int: + """ + Get the shutdown state of the Connection. + + :return: The shutdown state, a bitvector of SENT_SHUTDOWN, + RECEIVED_SHUTDOWN. + """ + return _lib.SSL_get_shutdown(self._ssl) + + def set_shutdown(self, state: int) -> None: + """ + Set the shutdown state of the Connection. + + :param state: bitvector of SENT_SHUTDOWN, RECEIVED_SHUTDOWN. + :return: None + """ + if not isinstance(state, int): + raise TypeError("state must be an integer") + + _lib.SSL_set_shutdown(self._ssl, state) + + def get_state_string(self) -> bytes: + """ + Retrieve a verbose string detailing the state of the Connection. + + :return: A string representing the state + """ + return _ffi.string(_lib.SSL_state_string_long(self._ssl)) + + def server_random(self) -> bytes | None: + """ + Retrieve the random value used with the server hello message. + + :return: A string representing the state + """ + session = _lib.SSL_get_session(self._ssl) + if session == _ffi.NULL: + return None + length = _lib.SSL_get_server_random(self._ssl, _ffi.NULL, 0) + _openssl_assert(length > 0) + outp = _no_zero_allocator("unsigned char[]", length) + _lib.SSL_get_server_random(self._ssl, outp, length) + return _ffi.buffer(outp, length)[:] + + def client_random(self) -> bytes | None: + """ + Retrieve the random value used with the client hello message. + + :return: A string representing the state + """ + session = _lib.SSL_get_session(self._ssl) + if session == _ffi.NULL: + return None + + length = _lib.SSL_get_client_random(self._ssl, _ffi.NULL, 0) + _openssl_assert(length > 0) + outp = _no_zero_allocator("unsigned char[]", length) + _lib.SSL_get_client_random(self._ssl, outp, length) + return _ffi.buffer(outp, length)[:] + + def master_key(self) -> bytes | None: + """ + Retrieve the value of the master key for this session. + + :return: A string representing the state + """ + session = _lib.SSL_get_session(self._ssl) + if session == _ffi.NULL: + return None + + length = _lib.SSL_SESSION_get_master_key(session, _ffi.NULL, 0) + _openssl_assert(length > 0) + outp = _no_zero_allocator("unsigned char[]", length) + _lib.SSL_SESSION_get_master_key(session, outp, length) + return _ffi.buffer(outp, length)[:] + + def export_keying_material( + self, label: bytes, olen: int, context: bytes | None = None + ) -> bytes: + """ + Obtain keying material for application use. + + :param: label - a disambiguating label string as described in RFC 5705 + :param: olen - the length of the exported key material in bytes + :param: context - a per-association context value + :return: the exported key material bytes or None + """ + outp = _no_zero_allocator("unsigned char[]", olen) + context_buf = _ffi.NULL + context_len = 0 + use_context = 0 + if context is not None: + context_buf = context + context_len = len(context) + use_context = 1 + success = _lib.SSL_export_keying_material( + self._ssl, + outp, + olen, + label, + len(label), + context_buf, + context_len, + use_context, + ) + _openssl_assert(success == 1) + return _ffi.buffer(outp, olen)[:] + + def sock_shutdown(self, *args: Any, **kwargs: Any) -> None: + """ + Call the :meth:`shutdown` method of the underlying socket. + See :manpage:`shutdown(2)`. + + :return: What the socket's shutdown() method returns + """ + return self._socket.shutdown(*args, **kwargs) # type: ignore[return-value, union-attr] + + @typing.overload + def get_certificate( + self, *, as_cryptography: typing.Literal[True] + ) -> x509.Certificate | None: + pass + + @typing.overload + def get_certificate( + self, *, as_cryptography: typing.Literal[False] = False + ) -> X509 | None: + pass + + def get_certificate( + self, + *, + as_cryptography: typing.Literal[True] | typing.Literal[False] = False, + ) -> X509 | x509.Certificate | None: + """ + Retrieve the local certificate (if any) + + :param bool as_cryptography: Controls whether a + ``cryptography.x509.Certificate`` or an ``OpenSSL.crypto.X509`` + object should be returned. + + :return: The local certificate + """ + cert = _lib.SSL_get_certificate(self._ssl) + if cert != _ffi.NULL: + _lib.X509_up_ref(cert) + pycert = X509._from_raw_x509_ptr(cert) + if as_cryptography: + return pycert.to_cryptography() + return pycert + return None + + @typing.overload + def get_peer_certificate( + self, *, as_cryptography: typing.Literal[True] + ) -> x509.Certificate | None: + pass + + @typing.overload + def get_peer_certificate( + self, *, as_cryptography: typing.Literal[False] = False + ) -> X509 | None: + pass + + def get_peer_certificate( + self, + *, + as_cryptography: typing.Literal[True] | typing.Literal[False] = False, + ) -> X509 | x509.Certificate | None: + """ + Retrieve the other side's certificate (if any) + + :param bool as_cryptography: Controls whether a + ``cryptography.x509.Certificate`` or an ``OpenSSL.crypto.X509`` + object should be returned. + + :return: The peer's certificate + """ + cert = _lib.SSL_get_peer_certificate(self._ssl) + if cert != _ffi.NULL: + pycert = X509._from_raw_x509_ptr(cert) + if as_cryptography: + return pycert.to_cryptography() + return pycert + return None + + @staticmethod + def _cert_stack_to_list(cert_stack: Any) -> list[X509]: + """ + Internal helper to convert a STACK_OF(X509) to a list of X509 + instances. + """ + result = [] + for i in range(_lib.sk_X509_num(cert_stack)): + cert = _lib.sk_X509_value(cert_stack, i) + _openssl_assert(cert != _ffi.NULL) + res = _lib.X509_up_ref(cert) + _openssl_assert(res >= 1) + pycert = X509._from_raw_x509_ptr(cert) + result.append(pycert) + return result + + @staticmethod + def _cert_stack_to_cryptography_list( + cert_stack: Any, + ) -> list[x509.Certificate]: + """ + Internal helper to convert a STACK_OF(X509) to a list of X509 + instances. + """ + result = [] + for i in range(_lib.sk_X509_num(cert_stack)): + cert = _lib.sk_X509_value(cert_stack, i) + _openssl_assert(cert != _ffi.NULL) + res = _lib.X509_up_ref(cert) + _openssl_assert(res >= 1) + pycert = X509._from_raw_x509_ptr(cert) + result.append(pycert.to_cryptography()) + return result + + @typing.overload + def get_peer_cert_chain( + self, *, as_cryptography: typing.Literal[True] + ) -> list[x509.Certificate] | None: + pass + + @typing.overload + def get_peer_cert_chain( + self, *, as_cryptography: typing.Literal[False] = False + ) -> list[X509] | None: + pass + + def get_peer_cert_chain( + self, + *, + as_cryptography: typing.Literal[True] | typing.Literal[False] = False, + ) -> list[X509] | list[x509.Certificate] | None: + """ + Retrieve the other side's certificate (if any) + + :param bool as_cryptography: Controls whether a list of + ``cryptography.x509.Certificate`` or ``OpenSSL.crypto.X509`` + object should be returned. + + :return: A list of X509 instances giving the peer's certificate chain, + or None if it does not have one. + """ + cert_stack = _lib.SSL_get_peer_cert_chain(self._ssl) + if cert_stack == _ffi.NULL: + return None + + if as_cryptography: + return self._cert_stack_to_cryptography_list(cert_stack) + return self._cert_stack_to_list(cert_stack) + + @typing.overload + def get_verified_chain( + self, *, as_cryptography: typing.Literal[True] + ) -> list[x509.Certificate] | None: + pass + + @typing.overload + def get_verified_chain( + self, *, as_cryptography: typing.Literal[False] = False + ) -> list[X509] | None: + pass + + def get_verified_chain( + self, + *, + as_cryptography: typing.Literal[True] | typing.Literal[False] = False, + ) -> list[X509] | list[x509.Certificate] | None: + """ + Retrieve the verified certificate chain of the peer including the + peer's end entity certificate. It must be called after a session has + been successfully established. If peer verification was not successful + the chain may be incomplete, invalid, or None. + + :param bool as_cryptography: Controls whether a list of + ``cryptography.x509.Certificate`` or ``OpenSSL.crypto.X509`` + object should be returned. + + :return: A list of X509 instances giving the peer's verified + certificate chain, or None if it does not have one. + + .. versionadded:: 20.0 + """ + # OpenSSL 1.1+ + cert_stack = _lib.SSL_get0_verified_chain(self._ssl) + if cert_stack == _ffi.NULL: + return None + + if as_cryptography: + return self._cert_stack_to_cryptography_list(cert_stack) + return self._cert_stack_to_list(cert_stack) + + def want_read(self) -> bool: + """ + Checks if more data has to be read from the transport layer to complete + an operation. + + :return: True iff more data has to be read + """ + return _lib.SSL_want_read(self._ssl) + + def want_write(self) -> bool: + """ + Checks if there is data to write to the transport layer to complete an + operation. + + :return: True iff there is data to write + """ + return _lib.SSL_want_write(self._ssl) + + def set_accept_state(self) -> None: + """ + Set the connection to work in server mode. The handshake will be + handled automatically by read/write. + + :return: None + """ + _lib.SSL_set_accept_state(self._ssl) + + def set_connect_state(self) -> None: + """ + Set the connection to work in client mode. The handshake will be + handled automatically by read/write. + + :return: None + """ + _lib.SSL_set_connect_state(self._ssl) + + def get_session(self) -> Session | None: + """ + Returns the Session currently used. + + :return: An instance of :class:`OpenSSL.SSL.Session` or + :obj:`None` if no session exists. + + .. versionadded:: 0.14 + """ + session = _lib.SSL_get1_session(self._ssl) + if session == _ffi.NULL: + return None + + pysession = Session.__new__(Session) + pysession._session = _ffi.gc(session, _lib.SSL_SESSION_free) + return pysession + + def set_session(self, session: Session) -> None: + """ + Set the session to be used when the TLS/SSL connection is established. + + :param session: A Session instance representing the session to use. + :returns: None + + .. versionadded:: 0.14 + """ + if not isinstance(session, Session): + raise TypeError("session must be a Session instance") + + result = _lib.SSL_set_session(self._ssl, session._session) + _openssl_assert(result == 1) + + def _get_finished_message( + self, function: Callable[[Any, Any, int], int] + ) -> bytes | None: + """ + Helper to implement :meth:`get_finished` and + :meth:`get_peer_finished`. + + :param function: Either :data:`SSL_get_finished`: or + :data:`SSL_get_peer_finished`. + + :return: :data:`None` if the desired message has not yet been + received, otherwise the contents of the message. + """ + # The OpenSSL documentation says nothing about what might happen if the + # count argument given is zero. Specifically, it doesn't say whether + # the output buffer may be NULL in that case or not. Inspection of the + # implementation reveals that it calls memcpy() unconditionally. + # Section 7.1.4, paragraph 1 of the C standard suggests that + # memcpy(NULL, source, 0) is not guaranteed to produce defined (let + # alone desirable) behavior (though it probably does on just about + # every implementation...) + # + # Allocate a tiny buffer to pass in (instead of just passing NULL as + # one might expect) for the initial call so as to be safe against this + # potentially undefined behavior. + empty = _ffi.new("char[]", 0) + size = function(self._ssl, empty, 0) + if size == 0: + # No Finished message so far. + return None + + buf = _no_zero_allocator("char[]", size) + function(self._ssl, buf, size) + return _ffi.buffer(buf, size)[:] + + def get_finished(self) -> bytes | None: + """ + Obtain the latest TLS Finished message that we sent. + + :return: The contents of the message or :obj:`None` if the TLS + handshake has not yet completed. + + .. versionadded:: 0.15 + """ + return self._get_finished_message(_lib.SSL_get_finished) + + def get_peer_finished(self) -> bytes | None: + """ + Obtain the latest TLS Finished message that we received from the peer. + + :return: The contents of the message or :obj:`None` if the TLS + handshake has not yet completed. + + .. versionadded:: 0.15 + """ + return self._get_finished_message(_lib.SSL_get_peer_finished) + + def get_cipher_name(self) -> str | None: + """ + Obtain the name of the currently used cipher. + + :returns: The name of the currently used cipher or :obj:`None` + if no connection has been established. + + .. versionadded:: 0.15 + """ + cipher = _lib.SSL_get_current_cipher(self._ssl) + if cipher == _ffi.NULL: + return None + else: + name = _ffi.string(_lib.SSL_CIPHER_get_name(cipher)) + return name.decode("utf-8") + + def get_cipher_bits(self) -> int | None: + """ + Obtain the number of secret bits of the currently used cipher. + + :returns: The number of secret bits of the currently used cipher + or :obj:`None` if no connection has been established. + + .. versionadded:: 0.15 + """ + cipher = _lib.SSL_get_current_cipher(self._ssl) + if cipher == _ffi.NULL: + return None + else: + return _lib.SSL_CIPHER_get_bits(cipher, _ffi.NULL) + + def get_cipher_version(self) -> str | None: + """ + Obtain the protocol version of the currently used cipher. + + :returns: The protocol name of the currently used cipher + or :obj:`None` if no connection has been established. + + .. versionadded:: 0.15 + """ + cipher = _lib.SSL_get_current_cipher(self._ssl) + if cipher == _ffi.NULL: + return None + else: + version = _ffi.string(_lib.SSL_CIPHER_get_version(cipher)) + return version.decode("utf-8") + + def get_protocol_version_name(self) -> str: + """ + Retrieve the protocol version of the current connection. + + :returns: The TLS version of the current connection, for example + the value for TLS 1.2 would be ``TLSv1.2``or ``Unknown`` + for connections that were not successfully established. + """ + version = _ffi.string(_lib.SSL_get_version(self._ssl)) + return version.decode("utf-8") + + def get_protocol_version(self) -> int: + """ + Retrieve the SSL or TLS protocol version of the current connection. + + :returns: The TLS version of the current connection. For example, + it will return ``0x769`` for connections made over TLS version 1. + """ + version = _lib.SSL_version(self._ssl) + return version + + def set_alpn_protos(self, protos: list[bytes]) -> None: + """ + Specify the client's ALPN protocol list. + + These protocols are offered to the server during protocol negotiation. + + :param protos: A list of the protocols to be offered to the server. + This list should be a Python list of bytestrings representing the + protocols to offer, e.g. ``[b'http/1.1', b'spdy/2']``. + """ + # Different versions of OpenSSL are inconsistent about how they handle + # empty proto lists (see #1043), so we avoid the problem entirely by + # rejecting them ourselves. + if not protos: + raise ValueError("at least one protocol must be specified") + + # Take the list of protocols and join them together, prefixing them + # with their lengths. + protostr = b"".join( + chain.from_iterable((bytes((len(p),)), p) for p in protos) + ) + + # Build a C string from the list. We don't need to save this off + # because OpenSSL immediately copies the data out. + input_str = _ffi.new("unsigned char[]", protostr) + + # https://www.openssl.org/docs/man1.1.0/man3/SSL_CTX_set_alpn_protos.html: + # SSL_CTX_set_alpn_protos() and SSL_set_alpn_protos() + # return 0 on success, and non-0 on failure. + # WARNING: these functions reverse the return value convention. + _openssl_assert( + _lib.SSL_set_alpn_protos(self._ssl, input_str, len(protostr)) == 0 + ) + + def get_alpn_proto_negotiated(self) -> bytes: + """ + Get the protocol that was negotiated by ALPN. + + :returns: A bytestring of the protocol name. If no protocol has been + negotiated yet, returns an empty bytestring. + """ + data = _ffi.new("unsigned char **") + data_len = _ffi.new("unsigned int *") + + _lib.SSL_get0_alpn_selected(self._ssl, data, data_len) + + if not data_len: + return b"" + + return _ffi.buffer(data[0], data_len[0])[:] + + def get_selected_srtp_profile(self) -> bytes: + """ + Get the SRTP protocol which was negotiated. + + :returns: A bytestring of the SRTP profile name. If no profile has been + negotiated yet, returns an empty bytestring. + """ + profile = _lib.SSL_get_selected_srtp_profile(self._ssl) + if not profile: + return b"" + + return _ffi.string(profile.name) + + def request_ocsp(self) -> None: + """ + Called to request that the server sends stapled OCSP data, if + available. If this is not called on the client side then the server + will not send OCSP data. Should be used in conjunction with + :meth:`Context.set_ocsp_client_callback`. + """ + rc = _lib.SSL_set_tlsext_status_type( + self._ssl, _lib.TLSEXT_STATUSTYPE_ocsp + ) + _openssl_assert(rc == 1) diff --git a/gestao_raul/Lib/site-packages/OpenSSL/__init__.py b/gestao_raul/Lib/site-packages/OpenSSL/__init__.py new file mode 100644 index 0000000..7b077cf --- /dev/null +++ b/gestao_raul/Lib/site-packages/OpenSSL/__init__.py @@ -0,0 +1,31 @@ +# Copyright (C) AB Strakt +# See LICENSE for details. + +""" +pyOpenSSL - A simple wrapper around the OpenSSL library +""" + +from OpenSSL import SSL, crypto +from OpenSSL.version import ( + __author__, + __copyright__, + __email__, + __license__, + __summary__, + __title__, + __uri__, + __version__, +) + +__all__ = [ + "SSL", + "__author__", + "__copyright__", + "__email__", + "__license__", + "__summary__", + "__title__", + "__uri__", + "__version__", + "crypto", +] diff --git a/gestao_raul/Lib/site-packages/OpenSSL/__pycache__/SSL.cpython-310.pyc b/gestao_raul/Lib/site-packages/OpenSSL/__pycache__/SSL.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..eacfe621885eb3ad7f82f2602762abdada1cd454 GIT binary patch literal 94881 zcmeFad3;;PbuUgV1WAyhsD1MS%Zo%srZzja6+00{LJ}7HZb@GkH*J$wzqaowjs5$6&&<8J z7XT%@ubsA&YU@O&Y3f%RjcA{_`7@TLo?-%huZ#%0smho0*Bh#Lgi;W z+S*RGsWufVw9SXCP>B9;A#8=^H)2KPH)=)Yx7}*TZ=?{L@31-~ZM4ui-(_`)zr7Hj z@3y+ z2j=gv?wG&Rx---^)224OJ7m4szGdz%>n^p?zFTd&w+*3tta~K1SwaV`gA&>zp_f=M zk@S*CBL|^-}ww^)mY<)*<^|YtX*WI*gKstYNrG>xjDEI;w84 zj;R~15tXp+S2tP5)pl!C-E5suw^%84t2L%>v&ND7<<`rk)E!dCgf$_dof1l0X$kd9 zXwsUL&@Ks`v`$LsMG|_zIwhgq5_-@&Euq^bWLXbMXh1>_TaQR+kAz-fWhAs$LQ_^& zLi;3i#>z=(zl4-!OXz@vrmYzX-65e_D=(otB{XN9mC%bNRIuhHbeDvRR!Ks4OK8D* zR6_Si$g#>2Iw+xvwJ4#NNa&n(UPAXu=rLx~jRDxo)7KPI7L_qJ7gQOA#4KOx}}e0}kyH>;7$SjVT@it%Wh{gZDBE&Xe#jsKl) zD~8VN9B;ASDmm^qIqnbS2rps1Hstsz>!&5hag*bCLk_H{dJeSdZPwc*{iw9~9o9P~ zbV5QuW4%j4DG6P&E=y=kLhrWTBcX8#z1Mo5gkCP8_ggOFhb44ULO*Z)f`lHB&@WoQB%xCh`eo}^B=n$!K4N`DLZ>D4tJbed$db@Ut&d9R zAqjoV`j~_sme8+Rzb2taB=m9X;}Uv>gnr%nbqQr8^a<+|5}K0GZ&<$}p{#^HX?;>c zXC(9~>r)cSN$AtorzNB$^cm|j60#-qS?jYBnwHS#tj|ekMna#rJ};qJgf^)B#gO%z zN88k#I{QSMI(so}eZl_1#Ww4U_BvItqjSH7f4^;iX-k{^h3W8?wwbUB^Vj+^zt4p1 zFG=VtlKM+CVf%L^{JT1AueW~_c_JqEs}if@!Y1c`v)9@G-Toafr7rLHB;_7_!GAOD zCjalFo%5=Qb{5gjKLEZh0pI?iT9^r0f21C@{#ZHI*N~>HDo9hY|KwuC`nuh1C+x2y zea*fNzai@zNU^BSA;md_Bi5fHd|o|<@M9AGGlZ8^72&Fc{~Y00s%3)D z{J4bw65&^=S0nst)bdS)UZY-%&};2)qV#Ved{I4t@DmdLD}-OCUXSqWCHy}SeuH`v z;U^{h*9iZB`ay($P{MzM@DHgUM)-#%{I}{o>P_m$o`_n1r{1gHtbP){r|qY$zgO>5 zZ&Pna=-c+U?SHUuQSVS~7bEJOXwyHUjGs~OLK*Ku=${a}q%I?L8KLhW^lnu^sDRLS zRXE+&|Nf^*8T5y0-PvNXRLNHIrD8dSaA(?nbkQ#6Z1}ru$0<3vlCt~5wT^|XQ^{uw zwf6H)cA<=z_S|eXU&K#ou~=c&g+jJ6U2^98qqWFjajDihlr0ppX9{+$b8LY%Aa}>) z(t`a!)w%j%S=0^`HVC&gGMj1&5`NpJbw!LGx+JA&z`k2*>c%-*upi%Ql@GG5P{Jb9uPeGsjzMaPfZ z=qLTD?7Us;qA!hd?OJapSt#Vu&fL(VbIz`<$&8~N3$sqPY#*}=3$|11&WtcG zLi%&HwZoI6>CDjRNHR5KaPzZA4z7C4-Oq0OdUOpXj4 zPfl{0GULaG()%()$C5+GGy9ri_Df6}JsVAChL2@Xvkbn8Ne-Df&K3qEIe0p=_wKze zG~y$Ni!+0dm_Ce^ZagPQ76rd^pb5i=N5{|zGm?^XmH9G!rv%rT;KbPI=;1-6W$rZ- z$)V)P1Igh``q;_I;jvSx+Nw0yf)`vZb2l`IPG$~|O&+VQ@kQu`Q`_u|!iWu?oWw|? zKNGc$!7n4J$>c<8aI|)P>-fwl;PT{n?Yb2{rzgiIlE6;{C*7p6BS!))(%@d}!H^xu zxXWd=8C`Gvtuhg2`Nd6;tItjAExum!(JgE(!kMANnZco<)Ve4x$z}Z=j%w zzRW&v z%yoEwL%2RCJ(AuX)HTg$IL;`8h2?V)39m)gkt3(w)iOrRw#~#H85|kSj2z+W9Zv!W z4zau4=3|Nj=mz+?79T1Vi?(cswGQ~X9o5>C+=z*pSqyr9ZofZpzzv|4=l0dO){smB zzyyKd{$TKcjH8`h%AB*EGInUJIF^3E?QBQdE=zn*da2CqT(^V+dX6J(#>9m8yI~F} zzMHSBPGyUg2|KGyW(H3=`HHQ>>lo(7Ia(^6U0l$S8yN9`?c}HP*r?I6A&?>E+G-2i z_k>+pbc#A%BwwsJF9I#&?4q-SPCuQUbZ&$5bc9ZnPCK0#9dJO}o+d-&=`K2CoIKr4 zrw5LcqBBEB(Xr`F({bpO=~U<}(m6-xJe^zU+(+l7boSEOPv=fLchNaSXCIvdbY4d1 zFr7g{M5LH&Y^KShW0NC;liZPshDVO3fSxiZ zQ^^O%vBrT^lVeBZ%V_fG;LvGzFE;DP+07!0bP9CN(wV0-O6Mq@6LgNyIY#GxI>+gZ z&^bdVOD9L?VLGSjJVGZ!=K(sepfg41B%Mh*57IeB=OH>4oLV?D$$|oZA%qTrgY^t& z$!@bkstr7=5a`)(ZBr&y8Uqv;vI`6O;>@^Hs+4l2LOJzRq}G|q6hWS4GPQUnGhb4R z1^Rn3pc=CU{pG1P=ciGqI9HAj9ensCXvXrx=j}qJ^zd*gw>WPXE9HkLCJrZu9-gtw zm24^FWETq$kLJ%jTm~%PzL3qG&Em_$V+(c>t7s4Y4J<4U20aMRW#+>_P=a8Fqe!aZ$Sa38WBhWm*13b+|-3U1aq12<pQ;~fbBOXuSFTI${0qG?` z`X_AS-2_iSs}a8HY91f8Kcu z2HJTmou7hJ>&RqKAy#5EgX5Y$JY^opj2*9q$BtXKNW~9iP&m-o;9=0MAmxrGaV|)w zK?loDYF&Tz&)2P3$k4>7wV^pPqhHiA({OTV;xvdXZs3_T@ay2@$%&+OOR$U;Qti5W zkrNzi>l^D%jZJ1wW4<34932_9HhT32Dz13e2GWiQ!=l04U+3(AM?_(1<(CUF>eTS1cPA4-*Mv|k$ z)^_HhEpG4#PBW&on_8FVPtv+==+)>Ti0G5!!-JD6w5?^D6^jG;an0hI(+Kfr zz-a6wxD-b~N}jNK*)L!CHs6R0+%jp$ z21imF)vWw^x34uT;wu~~hrly9ZQaT?T{~H8ykSlcIMwQoYE0CCH(DpU!PiPz#Nays zEGNgt(6rQ1YZKem@oGd=RroRtkQ= z2udc0QSxS%-13WmExIL+pPU#UOD8Q^i;a<6e053hPNpU&PNqQ@TWh`c*W)%fCZ9;& zFI2R(#!Kx*ZTBTkpFGTjE(Sg^l0GpwIdsh0#%wEn^dr8(<6upt>3Des@wJHegTH(> zXdh?O5irKQ`~v=0P2lSQHj9(#L2$His^CCzThbHJ^2^P>tU+id0@V$&u4Cs{{JJAh z1i1*KT)1Eaj9{q%8YaQ8#IeRo=whyt!Vgh_=Atbtbj1A<-1D32U~lRzF?;?sQu$%d zg-0CtxfBHE8scvCjRW|#51wuf`ZsVCuJYZ#P58%Pc;x8FB*wE&XUH~j^(210uInUB zj2ywtOeWK^ZvvZ*ox(DbE$kX;{QIuk`}(NLzS|t_2Ql~S_!tPA)4mxI5L@x9e}Mt6 zK^!3a$Ye$rqbZ9P@qS!6JVMSoxse2g^bnZd8dtXZ;Gct&sr1S5@v#Xxg1fMsIg->k zTjt>EN&JI$5)3;cEgbmMV<#tuk}e6`80~NRcyi*z$Ru+;Ffs-4(mrrm}i+De*1I1&Hg~P zxzQ?ZQ_TbRGhX>;Fo?P~JdNfzSE)V3KN;M&A z7S87PR0>GpraJ@1K*5$28|$THZ#VG^_I!0yFlUx|2l!#1_W>1FoW*iw54gilHdnFL z9wcB*x8swqtloMZY(beU$~~op%ASR#Ty{^+Sz4%+W+2aI4@!UfZ0Zkb<1Cq^l*Mh3(ldpfU||i8BzvCvpX_ z+Jvb`eFli*bqpANmDy}1K@EZP@)-gK8VcFr3l?F496rFT%W`uWb1pyb zAO!qQqL43F5}5_31Z9Z%^1%eOBkE8el}l#Ld#=zZn0uY&q{q{qvc8>5=xw( zwH=$>#wA287E}US9Eme_!pY{zKtzl14Ux`#wvafVT^dLvpm_mVN};gi6;_$emlOE^ zjGfCaVocml%z~-Olu{5_kLA+5ofu!L%$AD63>8+T14WU%gYl|2PBTIi=cv=c3ef^@ z#E=dRE@#i7P!w5jDwIYr_~=hDk*}aNUh5W05IteQm|U?D8VA&3x|&)vRf41p)9U@v zAI85SLJeg)Gi}Rl8EChr+nx$hyQRyUgQuWqQnm}zzD3TxhoXXfF<;4KzJ|ieEG!tHg`ma3-kxB6I9cn&wrD9!vtvSApX5n8*dkK9?^omVNV{%Pv5IhKaza zC!ED%kzkhfn96#b32hEXG}Rw<-izPbdPqFbj*MXHqG1FJR;@)AN(;{Wkf?Dy`*fE4 zv^(-Ojw?5YSbG>-YELK{3P0Bqj()G&zv3u2mXUfY>|ADL?}pPKYq=%-EWdw{jwjdA zJ|Q?R;lo$h63!C|j(B%(#9?d>{{nvzgbq>Yv=yEPG^CMF)F7W#8DY3DX^c~Sg-qWm zU>D!mCd!MsSv@&`_8g`ZD*wW)Z>;J*6ch5Wk^kD449YT?#!3hzkK4pKQArdPCbALemhasqhn>7eg1qmB^*2iY$jOho1~( zpbQQa8%+g@q|B5HZ5>zKFPkElQ6w_AT?!*B3r8{ZU5FsAUA{))i;1rtzK+Xn7h?GB zTn;VAE{894RJ!Kk%N<+VE_7DoPqr<0E=QK5%k9f;7uzp%Vfk#q^66eW9%{P~54BZS zJsFzoxwL9IuC-H7W4&L9KOU!CQ2Wk919rK~IfWW}mqV4dxz(4$(D{ZQ9Me1%NeP%g zO<3>mbKZ#`OLG!}A{!U%IY+f_Ijt`)WE^|iA!O9nYIQUxdp`3RxgjZkx5XgYeOUqQ^2STghgmzIyt+dd$*XuzH-xm2`3uFV_0dI!JD?WaqV1 zwASTqi+V}Nxb+oPQ$x$Hh|2jHj!JheTsmuYm8sd5$yFY6R5^x!y=ms5jL4>hQDCXfIGnG+f;gScM*j9=Mk(e}(c(2Ta-3 z8?dt{cJAumiQnB?a^a0-VpsoD?Sc;+K_pZffS3x(h0@-qBD%%W_Rn~2|1^DqUzq71 z*?3B-3MHkf#= zx7}e}4*vpw#07`2Xq}&f2ZYlasM(CC(slv5CkB7L{DtGMVuGb4u(4_tmWC}wdRSZM ztLg<{Eaw;5Qs5tU&Hd|z$HPCH(edg6)^}*R4Y(s#315m3b6n=VmbTYHr};w13~>{>uw4qCNRN~9s7eklB66##;z8szjFUK<7%dxp` zwuAqcfq3sl`G`SFmqQZjDbH7W=2o2o>cwv_e}Vf}FZ~d3-zwm~)xdpyXz?n+vpsWb zPPN6_1Ou*me3jro{1X55cWEr=5J^uy!|^*(eTB@HyNx8~aiTQB>_isAY-q%akXMrv zAl?@295jFvV3oC0F2%eTL9yBeLjhJ-FBZ%BnIbkfs0urYT~~q;4?WVqRuGl*t7wk% zIXJc0nZ@a8;E<0o=2phU^W}UI`WDbhuC+^}YF$(!PKr)cq-dXqwy#~RZG~3vLNTLZ zFXMJ9lXYgw8mF%(N`+z)MN(v^HJ7KipSd8kVTZ$AjESP$aM(@gPRh>cRn_QsP+vXtGGH0+nIPc8Rw-QHb=< z>d6+DGFhl0EZ}7Ce2UEx)Z!sX=QD`gguT6d2%a#Im%=HKHT41tkC zWQqTx&-Hcz4?Vk9&}1jR^@8?VE2y*jBHxPCi~lNU^A#@I#MmTu?M^hzadXUW9$Eld z4GDcY1p%KcHEr){WvJ1$}~r_b*K-~LC?DGT(Fs2oRm ztb=M2s*v)^d1V{bk3neiQ{kkrwA(w$DSH|VvYfz4DG@B|%pzu_j88mt;k0-jhpar8 z9@emwj6-92AaMjo30+-zw$hUOP5&`HBE;G|brEVDjyswTd`VPQ7Q)0~4&aq!UMrNq3A zV}w5M;mB`uI?k8$n9D_jGN#1)o-J@<-9nKO6rh8{TOP-7pT3jZAApFnL!Zf|0hL*& zbRNUuJBk|cJBqf}n}KH9oNE0G;F>i}0ct}7I3?`17Yp71wj2z}JV;Dm+o@57%H~Vu z%0ayWQ6UrqBqb~*W&!`mIc=YpoQaa21_NPIkgH%-9|q1dJBHTju4K!3gerNkInF~d zmB(S-J{QbyO5MQ2|kS zhcu7m0XFjfcw+TPo?k0l~vrJN` z{c?o-3>6WwWYy9`AWLvXSdL`9msT%#_>N>9k9Vl3kRpZhrcUCnNw?ex626@6e3>b}Lg#nre3gzI?z|f>;Emx>;Cu;RtQ(0& zcqX>VXzernjDz zck(M68+P*NwF94F`veAM2VQ$yb^EpJ_D(ln=OjFjJ@`+MZWJ{=#d%(R=WaApRl44$%XV{m(GcG7lo_^}7aE_GlB1#99$`*OPqpT%JpEQMIH2WhYe3k$&8 zammb({X2#oJVN#;7z!O1v3DDWK=;xE*m*mB%+OBX&fEETr`dVoGdu5=NtIs{3)H^rK9A8Mlk-hxU}(jS z@tKYI>WM8nRlABoUK&vyVCHw#uFnkN(pBC*Y8Pz>CxGCVsrhxAR!CEC=(P!0Zqx1` zw{&mu%py?T>Mb6UsSyyMQSkf00jq>bj=nAol2d$|N2Wv8Md)?@4qpMM+f4hk zfUOmjZfKdJ-o_UOqwT2HgV6^NsICdZDBuzBxf~`}8HhM+5OHJ)mW3`veGnP-L1gst zsDViM2$4^PHCHwOlyYQg0Lpd&N~<%M(Qs%%oWga>bA?8nD{%?`nlny$D*-TU?Qf5&*gJvra1Q5H#*S1iHVqAsVySun zEM&QOs9E!8!0CXJ1f^AAB?)H*oDWI5vmaa_=x3+_*~Y5_jK&45a?XJb3Z#al*=UIP zI9Vvlo&n=yXDyV!66)`7*Jozgt~;=+XDc|U^6*@Xi=7T(x%WpLiVtexX;q7|Qr}pM z@NNwZZX7}N!(Q$Gi_?4^GC=|c#EAVk6c59XQ*9^k56-wy^K-t(Qlk~H_T|(bn2Zp< zaZSo(5Sk&&rEDd#+;$lR6^1QTeX~%S6LJ|Zkxdxcg&u=5hNVNHI`1=+Pvk02fcpt% zkl|t-gqf2p6f4k*gNZS4O$|fopzyE{PPxV|rZiIcY-s2!qVBEh{*d$UNYpTp&a;T?1Q?1MN?%OEwdiyqJ5y^HF)Jji73a!Y zqC;{RA9^S=`N-}BoF-(4Qbg=uUJH+3%unFO=tZ(`#t_Q@9$w5B6d9h%&XqtD0CS@t%mHp!M=3_D#m>SO&J4`tI8a;)$m<~pD1bk`9dIVl z+8M6i3#9`X-*MH%>hgCl3aSnU!s;JQL8yXcB5US!IAAJbv((i-hYxzG2)bFM#qj;x4`62qEMQdA?$KlWY6KMEEjPO1qA+3YTF@B*H(C3LLTNDLm=YAHuQ7u zZR6<<$h(RJ)h`Lu0M13f(Xq{XV?EeBa9jhUT1+}XL2uCY8x#huKWKEos1uQ!QPz;+ z1S#6k(qv1GSmkK zT$G$ukcS>TnAkh8?+&R{_GKvKnf9j8!v-poy1!6(YB*@`&^91(d-WT>`wT)#21IJTYNq6t@6_K!nay- z^uf1Ad~4xbC%*OYZ4lo^_%_j(k6W8n#NMK!nAOWrZ;j)ywiV{PdekcTw!zn{R>OB) zR~Tl(-mBKB^-r{0*TXc}X0-+JH%R>Z)phE6#NViXR^6a(M0`ShK;5Elh3_WylOaFd3CS4 z4{7_=FQ`Lm5b?W^;;F~tG<EToh(Ge?u*(M-lfD`(E`)F(ZcqCX8@? zN}W^Z5&u&4X)z5KwO*z^qn6bL#2r$f74vUVYY@Gl>9?qLSba`CpNmxZThvObFQ^|?Z^YLl>Wk_p)SKZuD!u(J^%nJ3^!Av9ep~&tdK*F`>Ps-@_D-a_ zUwv7sdOL#%#c2~cZ9P~4b@h=gELm&XZxfat0~Lx_8IwF}C^k!9!%JsiFez7T;%WH-1W z(WUFPLU9EQMW%z+BM&5CHbRKkG1qw(hYV~o(C80UJ zN`bV<^oqM$+&*#Fh`UzYb>glUcZ0Ya#oZ+CW^uQOyH(t6;$A22^~-ISZa|GU@{GJ3 zkwerIh)XO-B&O}sP1;A*Q&B&Sq^eu=7&aV}j6@2m)V`DyMT_XLmj{CU^pcym&kcL|dZC>@UCMajzRX#B z33Nm~W}C-~6(td|ZsR5I%0SvL`lQgp^Q%jl#%>5idf9rk7}O-{)gkX|T!*Cxn+$&f zJYmgHbi1;_{SfS7Cnc^pFWJ`h9EPwK?B`A#enE>qTkSIl+Y`+?JJ8So769?# zop(j?yaKiZ^r>atLl7T2ixsYQm~nO+Ms^RIrETcg;248rQGR}L9t&b&q2v(txvRpZ zxCRnP>nc0A>AiB?lQL+#y@~VrLLp%nNuV|rgWaZd9-1H2F|k3^o`>3?TZLCzy%pL> z4z9$Uak9>mIivygCPuXChR<@2+2qU_ktgdsNLNs@rZk^I6ctYGI!ZT32Q`m zLhceY=&!JL{)uuVnen)pVFVlkmNeSa68@ZZNQiTZKpQ8q5rl3<-0J{BBF7GQ^+9F1 zdc8aSEsIRDf`@6@E1N zXW{G#ARP}NMuA0mSUg+AH8_3Q>^v^b;Rp#{7lhlqeF~J~yRV`z(-8&uBE9m&Rxpm7 zU@t%~j5q8WQbMiDsEmRB!U+^ccDcOgvy~u<(8ELZI&CWp#1@pssJV=MU|QiyS`Iv` zB{G^o`tnRFCBLr|nW!7b5p}9!}ZD%(yP({;* zrOGVG(`m1$UAO?t`P@a8>@MB7UGDMtAos+BQ=|jI9P;uQ%31@$!Nf?>9IAz98yMx_ zV3rd*r=~oC6=%Ch7 zJSZfu7n|zusFPB#c3d~KtcAxOZY`9u$|ZHgFf%x`Wxd`$0B8q776glj8esbnj@2zW zz)8d{k_MDp+t9MKcVRu1H>0r5^$YWnhf@A4n|wx`hYT%8 zrmF*fT5tpB@+B#c-%xocJetv_RvG3iPxd{sG%4f^t8V<)^CRTr^rmn#F%L7@{su+VI$cV!F0#<9a@OYl(NBaSJVJ{4AW{Xwz(oPbD$;Gj=mUFgBgPRNuKgTS zNKs*ElFp}*UJs~HK%YVIizrZddcC+?<8ECUUZU}c&N}80iw4#^IBJb+*v=c{;+;kw&t8;J^ji@p(3t<-{UuL*WSI z47hL8y2(=Km9EUB!Mg!`>ki=%C+`r-;~DHC7^W5AT@lpqZX4tdI2}O(F&CMO!iVz| zl{)4+iD@t6h8Ywt+cLOYLN;vnpHZl{GTd#uehBcCyn%E?$<*aSYpMmfjr6vU!jTKJ zSztM_AfCW6K;te%d1nw}NkX%&T45i3Pg=96-OIfOrn$od*4(xTdexfDK-)O;cpV{j z&^pbu?vAszmRCWoIdLTKlp(3o5-Sli&E(IKcq8JUH}r~DiwqQJ1TOww0Kt1o;wae= ziW=vTuJv~~P*$N-qP?+X? z`f_8RG9)W?i8WJ!yAbH?dEVS`$ znxjur7}}0X_#9xhW(!m)&pYT02U>C@F!IpNhO#rGcDYz&S3|=f_#%&&lYfvT^T8=n zsBG|gmC2o%5^z9%_vD9tu6|=EP?o+uWJGWSoG^^2NJJ8H%^efrE5(eQ(Q}7LlhThs zdAb)nDUOknFuY5q^yVGU?cTw}PFT9YR+26BCkEa7>p1X%KrlP5JDKkI1S;j|dVelt zyR@%6240TVTi}%~ZbFYnVFb@nDcrh~E4&P7=ERGMg4fgGZsXu_q*kX8h#O&e);BSF zr!)xt{md!Z1)c_&tVvy_MCKKB8P|qWk~#N3&n^leKAHVVjmq1$tGvZ&q;8 zp2J-Nl^BBTq<#w{*p%XrMd`Q?Nq8FBYeF_8 zNh|v|?Un?#!^@nt_G~$q&!_s=XsTLtv0aXZi!1bIA{4kGtcAt#IplY~569AWzo^OS zX5k{p;INRfi|1-FifX~7)7RFUlJVps>DFcBCKde|7(OYJZDMKTR85&swzvCcR(1jy4@jVk9*tzlQf=PHnTuC zfxoTaA*SAiiRxJo4b~X%b4Fnh3yjEc_}QKa8IhgsILt(V!Jmu%OBA<1s|i02Z&j#6 zzM&JMlcYmhyonA*#TvyY;2~c@TXg`RA+)gCgh2^2OfEuo!CL@B`c55K@~}y5(28k> zAR(UB_iz-zSUi_^N=4qK0>J_yGjXmFT(?>Tq|v-;QvDHFCn(oCOewVpzzN3(*$AbF z(z)P9=-h`6--zu?1j2nCy`k{4)ot#8wE*H;mrN;_<&`d8;e8000-_zxIwJ$)MqZ7_ zuNg;RIW*k%$ZFcZknw|b!&!rE3w#*LIYMp4(4#m6BF!3Xc1#2PSERX>X`p2YHF2gQ zujbM9biu8G!gu{VF|0`fa$UK*u|aweY3fK3?-9=e?JZ!qmCKx^fZmlOdc%1P{96>W zn_Cg_UxS%29x1$XczX_;jEj5)$9V+_;p!!Ial5dP7Qh6;O>y8l(IPmHxd&mFF6{u7JUt zXFH=kq9F{s70*>~^Wg64_^OjAnQei@D#$zxFparlJ;F@09yE8*FF~N*S9xtEdeOj@ zhAN{y!m$}8t&sIo3%taSEm1~N>mB;nrq-KtTc}T!6h3j11o-MSm0J*(et@;)%@!Nr zakLVN6NbGJJwo|seNrU)8Ntk@e{eOT$}Q${A3ynILaO$K?4 zGvbpN&4x*>ZC$yPL!4`JT{^q;H9f;!+V0Nr%2{ijYz8$C1IUC^=^>MQ5zx#C(AZ$+ zR>IIlT?NfjVM~xs1_choIv$(%I+&y26w}y^W<)6T${Xkwv+SGSIyLDs6Ab`feR|oA z=QFWhD@^Hb_X7vFNgytnbFvN$EHNPw6g826k8EMmdZiI~Ty;(Vn{DKoHh&mQr}nug zTX%Qz86jJ-uxkR~m2GZ+yrW;87m@-eOrZ121g|IP$R$+)*6Sz=Z3V0>u$e6?V4B9P z*5U-N)?Cr`jc~`ZUQS@8Mrda*#hU?k=yfXrtTf`|$aG~BZ4!ZhMsr64L-qCDgpFMA zedZXldHM|9f{%C|Dpc&OfQN?r9?)D+kspabOTp!(h32}Tk3ej-y%HBt29uNuZ%?&X z>!*{I;aJ+J5B)8{S%b1a6{nnkt#^kj_Ba?K1jah~@5?Rr^y=y+1Buh6MVF(4DIiAm zDUl8|4xJp7@KVx%Q^Qa}A2SY(p4{02w&X&pzgufFY{jSA8m`lfzpz>-Un)e)%C#tc zcu>%&z2G!+N`KPWaMKC^Ca_g&7yDI$37;~Ukkjp)BsvU|QMJ_#V3h|%$&I6UCvPs( zI!8DZyVBQ1&2MaVn^u4-$lw7#n5F>i1W@0@FAR1n*nBZGgpL*vJetQL-44o-Df;c(}h#9rG;A9bJd3XesXT(yh+3wgxnQN;{ za!`#$?|eqmVk0|k*DNg6;>^4PPH9!{Ylu?_q45qs1oU*#JQvM)MZaJ5a7(KK0!${f zgCdmr2?TQqO`ye)(@h`m0LV;6WG0~{q{SOi%|-hl$L~=(+}2y#C){Ri8rIpe7%B6< z=-b&9vblI^As(*Y>;msq^3*!Oi6@F&c@KXnN_;_kIMt*&E(dq<6h_8_A%p$=vVg1Y z;--bon>d9CYAFziysWx|_m$E(EPgON`1dQAOn+9DqgDk$R0THkZB*p>M-Z2+5c9l1NPs5JeD zcjB7?kYLS%th~xz+yWZeB!d&15GlK$A=00U`!N4nW6A1N^Iq)B{lfNQ94_mkG-}d% z+ps~wX7}BOVXSRv+I^{r*Agk~_c6`UqYgFhUdw(vgd2CSEvy7Gy}_yfIH857%I2+B zAjT7X2D7b)_6QzsSw}JI@Rw3Aou*|SGP#)6h*Ic;vmrZ!70)9gn~3~B!FEFQDAWfd~{(v z^n1Oc=9lcFTik`NnVF`8GQ-{>vE^>k7s!B_{XKUJ>FE&qXS2J7G$zz?e26N%zrb?c zYvzV3z&Oln844`3R`4#MQR}5a)wa0~5<2?42ca|7&%Ex*F2S*Gsk|fX8dn}BH?&-G zMQo{n-923L%^4Z-Fg&kqRnZa>*fTI{-F(PQ68A8$D*QS`8jq}mNrZtzcGDtYBZ3KT*0CyAd!ur?@>aB0p~Ar ziZ0_~k|A#LTf{0~G`% zXcWr3d}^~Z0Ma187Tir+X2>9%NLAvQ%Po-vDVTjY*wil=xK_*o;$R=6gkp)7&qWH4 zw$OGhRR2wr&}5_9Mkaz;l^#GEx?L=^L2Ou|35&DF_uR4AgZ`Z*b8Nr2?kZOddd~)y)Nx#H>}n(Lj~L8lfnd z`R@ruJ*Y3<9ftWw+_!!XDyiOH5loExy%72|0TPN3Kzb$tk4Hp!*Av9tvnU&0CdVn9 z{ZT&_a>2(~vU6ON;f`7^3)HAZt7hdE9pUAvjnSiVhs(+a0Nb>ODwMSc$-o#qOqB|A6&yg=iX+t$5@n`Dd0!yWRfAq45H|qfMn7ED^L@|V9pgQ) zM;fl);O>sCldnj+$a}zb(gi>ls=mP+*P{ku8T;KH3eb?&FmS=aHd(N_3Fc~<;~GN^ zR4;pqH-r>+x{J9!6nZhg4-2Yk>{@5&0VywPc|D!=aci9vy2cNPU}(sdF6+BVfg`G) z+<4|(%Y_X!#W1vvZ-B*Q=)H*xV}ge42vs`4sRQSZY-X4zg5GiYHjpb~*q{QA%f-63 z9E=BMd^th3MBSX&ZE9$WH+e3)5XqLSYQbyLuDWs4{vo>&XLT3F?Os7*yx7(JXjVS* zsds28np>Bvzq8_+=b|)nH`Z#d9MrYJfbM|{ymoN;xoF2c(TGRkl2f7^(C~pT!h<(G za@E|Dh&YZQ3cV`bb+hG;O&m1a*3}wtq{SQc(x9tlGB^MD*!>j8e0tI0&P#M%aiCI- z0F-8+)J=1xb$tz2l3+klBQ;k~%T>|}%(goNtOR|m7sa6zQo#&%1^3NC`@!(2tF6VS zR=ByFyUd2d5T!&iz5?CTdp^HW9}gTc7bj9Aou`r(wAKt|L;32ny z-Ly@7+(VRSq`?&iwaVi4ZiJBn&TdwO3lwCMPCARIaykf_nH(Zyg`2?|^h(9)Q@1PlXjWgH!2_RjC#*-eU?cBq}v~cfG=gmDs%N`_3 za19%gXl&?`HWGo#`FSIC!Fh*kBQ?W?Nx3mpUF+YBbe3AX%;Cxe(Jd|Urk@~kk7m`c z`^HkMqPaS;8cs-ra0&Siy+&>-ZE?|)oTtjOSWRAeKxGI*jPEL-Hlau#pX_RlKt^v^HGz4&03iS0pB!$59Umh$p;mPPmq>IS>Xa3@X7oG9#mL zKehcpZk(yVvEb$bwkQy92g!0dphb; zn1(dh9FrgR8uq-#MCK3}_1c4?C+}KA6NEl@Y&_`k^`;Izt@$*KNnei9aee?3Uk8}R zB+!AI6~;aX(fvaIwpN#y)Qdz}Tb6E-BrFs_NQGJLMF>2Qjd2LUSGb3MptO zLP+8MyBvk45Yt4EhSE>`;?8#4TsM_tp&`^m1Cjm{diA5;#0Zy1&LrAi2k}U9VHSp} z9VqAz!^C^uz8yxs3eel}@zC@sM)y#IqcBmh<&w3KNDd$4AxJBTgY@F#Q_n+n!&iX| z>4D?#GZ^tU$DDsx`Sdk<4v&oSy0zx5*U`Pman>T2)yWhTTv;2y=7EF?+?q4_QfBy= zw6kn=3?I|q1G`9N9`~O$UXhcwtIG33C=+axe8~!{*;)krg+^4P?;Pp;7Uo@Z>bs~m zO-p|pZMuTV~6k0R35ABFXmM(rq#-(1qY^Bv(U2T)1`C3`5vLcq@m=Ia5_C+l@B6;^zQbQm3o=q(3t z1VHcy)-jZFE_GeTBa5p2-7rYtyr>dau^G`s6N^+G)n~jlnKn!qGP=nc)9n*5bC2FU zQIYYR)9g(jk;>BsX)go&R5^v;etO@5y?62}64rC=+kdy43-SGtD$SGN zRsmlRwaYb+bR>ZIT2);Q{HMRtpsHefYE|(O(;xXfud;v zqD)j{IS5t<)*xoH*a+~e8=CSK!o28=#3}d=^R=|+;+=h=a64AObI^7FUY%xb$Xnaw zJ0WGVi!g%87d-6pm9=THJeIQ`;#oh1MH{q>NX?E;{2QW7$Ox7K%;m zoX>n9PTgTP~jEUyaI*I;;mhuhLdl=^$i`Y=4R=k zh;Y2(xs-K{;Dq48(sG4**ac7%gPCbaMm*SBS#UYNs1c^{>f zERcVv?=5g@t5{J+@6`PK@w zve?#Xha4f6rD}!;4};X=BNJdSu%1BCGS*!m^|jZy(7b|Lt+09lzWyd&zyf08Y#?W?gO5pJ3l0!pTjRAsl@< ze!NL@vAD@B2pV_;M~xf~xRgK}$&n9tn}uVr518a$X}e4@yNqnq&=n96q^Xi0FHubS21b{7=j&hxXle~;^|x>;WJ z9{!%hLc;B{I~SYS4fLEKxU@B!W!nLgf(JCQ5+al*hUR4cxCEu%^V)yB-6J9hb==f%am5d-l7nR-pe#;TJ&F zC5PsoccYySZ`7EJEO>dRoiEFAm*B5jbjVdFkTCWLQJ^pV7^RWFgN8|d&0 zz?uzo_@rUkW@(rfc)_@YQ30Us4nhN-I>u4WM0&jRAhAi-8BrKA1Ue)eVts7D z0@mXp^0h!|6=W5`m1NQID55di!FVA6Jd;@-iErss^scq;RD1&MM|coPHWw zLecsOU0v}OVymDsV^c+X?S7saWgC2odDz(6nx?ed*mUX*#X#5bnsMy8^^xk96+3a| z=Ao8rS`OORT+q(@(G)DrjTkHsSki`tfK#!s3|;ft?n2=Ld%??-x@ElYN@KQCDvrX? zl>m1EIMX#^i5s*Ijw(4D>_W&;u}zg6$X>jbp<;9vhSFeNvtT51nuA8AGr%>A1ynKUMabMKJ;HmE;+b_|HQJ<|$AO_X)pfd?jR{*%VMn)WSa~Yy#|P7QC*q%hI@T z(JQL+ni132j5RMtYs^4}E0seSmFCf?pxAfy`-ZsCt*9XAY^HH zOL&;;fXE^qULUIN_QOBM!f%PSc^Ti_dKv3A4fZz-$hBI^TfL?1T|nUSY^ZMK#k{UX z>I2?#UW4TvHOqP1Rk|Z4$C~IDG)=1l68(Tf0W=BG>3MJRj+!;=TNnu%#Y^n;>=x1R zg-=N88mQd~veCB){B%lVVP0*(y4P{AT9G3?Bsko{Q)sRTLu0Wz1J$2E-XUv(F{17v z(i?I1mikPtYWy3$Hn>=-v5}x`X+st45#1G+H1OBDv)|ukO$LYwL7J6zbz`)A!K<(J z@<=(qfPrvT^8OsnZ6wcx>Fkcj1MYalJL=;>uyGSy>Elr^E$GZBk8$eVKQ2E0oYndSwf;qH?)&J)Bxc zMr0D1T1+Q0eAimLWU)FHmUP~R^KEai=!}a7dOC4EAspw!vOcZyVB%VbR?{jst&4^; zZS~K*@f-xh#N-+P`<@(nqYPkUo1mhWeibGMn`>ZJ-sEKzhNH2eRM(}GITjP0+Q=W1mm~PX4wojk zOslKg@(H4?hPjf%rAfTN1&V*T?9+U>G-<9mEr02aE~ka+Biihc+rz{OiNd-Enrb;c zM&C})i&xsU=0~i0Uwwwy7(G4oU3+dMmD_HwA);Hhf{sxiXpf958)SC9td^Sx-nj*F z7ckh)C*i4E>n1*A#w*vgB5j{HO^efnkES*D$iV&v1$hSS*ZMgI0E*p$@z^Wm4uocF zVF7u$8W{Iv+cty0TeKcvH{?|WJUUXhikL5+E1hM9z>zQFe;LTOj35@%P5OBN!SwDdZD;E2P^FI;o{455~J9cGZ4WZ)v0pnXxYHuZO zBWCIi1E<~PCvDuvN}Da@Hxq5wG6!N>|#co^n?TP_@)`U*_(;2U|rS*uTSl--{)Adqv<( zQoYe_WS#98l=uQPaM7njt1+|?v04EN-^@HVy-eAuECe=;&l1WSHVh&38#29zFhX*b z8wUlefQ|r}-;ll*Lmw)o@|A85>O=at9@ts9q};1y&rBe&94g1CML@&2D$FbSFj^H+ z(I@a_xDD6Icn}kdkE)#lObAkAl@2Jqwas-wpek1daODh2NwU`YFl}e{C(%D|^3tBw zM)H2qJUs1z^R;Uk)yU{T3W6~Vsu>Ug+zBL^J)6i*i$znPV1x&KP>?R>qJhRUHcVZ) zfQj7ND&k=MFrOIBE`didZtC_LmU4laMhm@I1Gjo039l}El4$X@U+{Zr8gg3QVt&>L zy-t-7+UmmB`c9j5j{|PmGE;J7=WQnp1f{Tz<|3hbX%vLH3dtljd z2W+12C@-j`J^Ob&;s^aJJHQVBwMI1#P`7Sr9>lxMK_yQ~2M&xpJ`sA#JVI@U=QTJo zKGMTiHDSvL@H35n%c1G;0~Cpe{X92WD_=#Hr^2=Hz}{MDp%M7I?j^V8u?6R)UjWEI z!+OH6PP7I2Z1UuZo|ihN_cA)ajZBVSquu&xnCKj?9XbT}+A6v74SeH>!B(NilJ3!w7@6VwY%ue(i|O6H7_`q zvU%Zj4s0uXHFJ%)bPn#1a8cF?9eq6{>#b;a_0}8MU^3OWEM=KpeU%9%#`CP^5d_-A z)h2feVPsZz70sX%J|j$|lI=)VBPhmMq`<`#GiE}o1xlisJQ&`CDw50NgJi;X@L-Hv zL=Z>Hdt4|vP{_fBrGq%>;&p?u%or{*jSh~FkED)fJb$K|{Pr2wf7wR~^j8h@8id=6F|DI67VhyznAxn!(BbwCEhm@c!#7&up^YWjybpd8BoV1TE(hUK;W@buDpPIlhjl4-W`~l65*9Efkqp?1n!kB zpGmiDL5u)nP`RG+K2~!|6b|}(oEtrGNzms3f^!psP?muz4@Gx4e+VRbhL-%~HXfv0 zEPJrTO+vqM<(@%Zx?ZOP#&HeD{2{9(%dQr7a*g}JT3XZ%KEU;D0vg3uu{el-DA)9u zhb?*{eRznzu3FQa6%Sev%z~iA2Q31pGe7V=!#6a{B?nsU4lTn9g$Psij_|#}jsQ-A zZ#Muwz*47`?F4Jpj9`7rh2{~S(i6Ikpg{cN$woau2yPf`cql{;aGK$PVdABIK^%>IUO9r(M1)YeB_NVONi;oM zupiS6DU?cQ7Z=Ku+V4x_n9Ze&IDKD=iAf*cc z_2Ec?q4y_PAgvfeSn1#ts(I|7JP7#2TF5+y>Y>t*G7cSafu}!Z7C+=>qY?3 zKsjbI+}3+*`ydEQUJ}NZ2!R9hd!Go?l8yZc6eiQ-Q|2`*%m__{?3RaS7)|btHVG$5S_2D2E`Id`CoNtgGSP^M7P&`{a zq_LqT(r8HT{5`5^Iug2+qG#Ym9|=7>K|C7D3rF4&9ZdJ9+2HMLtI$NAy$jMSIiTOX zU4InRrLYAv{(g)8UDq;~*);c|k0OGNN1~vtaV_TA>Mb~<(KeG%)=kx!jLvtj)?4Q< z*pT-i33~G#_U2}xqKh7FX1#?9m+AD30 zjX7e0QEF&iR)M+Z8_SX*6MoZW)@53Ip2?bG#m+!O8^gLkjD0HR)KkcyzPhotCm0bd z0WpA9^Rk&ervPDo`@gewGozaYr4WXY6kV(mG#5m4IC#vHpmk zq#=JCNaVuy*S+s|wfz2PD|~nUf&Kbt)-)=YG@Q3G;-~1mgU%8i!GCd_Va&VV&f|=o zp|ea!(YZj!rjw^L2gh2&Jm!q6WvmX*>N?(FZWF(q@!j%Bx{0}&F>56zSj0{B55Y2e z*~?XQeilg_8Vhu8qqCRJi|HJsbA--)bPmy(ptFTJ9-uErXO>Q$&RIHSqB>m)3^MiEWNQX>+=cnnsi_T>_@1gTvIv<2n>%&!)M;GzPXW1w~IUnY? zU!?O9I=@cmH|X3#=QDIZN9XtG`~e-(=FXqe`ExpdN#|R1>YJ?iMCoe*9epVXe0BWx_^NPU&-dfEgnQxM6yF=~j&BUF?RhS~8UJk!cNkwB zY1hQpgu4;G73Fo|zYXyn`0v*E_IPi+E4;ZU6yF-}MEn|jUlrei9Jj{Thqv{7KfDEH zZ|?1K*s>h{1^&p*Jwz=WzU^hVSs~SCg-^EGu;ppNz`6|s>-V;GMby_-O~qCB6YW+^ zeM7BQeNRNK4)v#Mz1jd@r}{IsQEh^+OZ~apthT@xSAU_lsq5hDmi&LI66z-8?@`}W z+ttm8U!}gKZc{tp>s5cHcBvP^w_5!Vb-NmXuMg?=sJ-y5QGc!Ws{`<@Mcf_gPWaZT zzfpgy?okI(;(B|%wL!u!QTHOe5v~0@^)ht`{!R8KYjalwEqGe}y&6)(h})vRt&XZ= zC}peq2Q{MZhi{wuM|E6{!grneCzVoT@LjLIqsGKuHxqb=vvWAF{A|D&qv zmGJFRSJbk)0N-AW|KsXa@a==|)#^3y?T7ER>LPpxWKO=PUa#JO5xGPCyLwXn0OIeo zUp#l0`o8)R^`lQjFNUnUCHzM9rgwzYv+5@h8)K}}G0&;DFvg_%zIv?^0h;zXShq%<}K5ufjKq*tq&V_51Ljz&!tf z`a}3q@cohcWBA6fp45|+U@Knj-vK?^)|c`f+OI-iNy+qQ753Lhu}kC{_ge( zD;^Oo^^~)d`G_rQF<7!ZYgewU*S`b$$1sfR`*nc(M~uRML&Pey&D2U801p=NND!iI z7muLAd%BCtb4+P#GC8M;WgySGh*`5N76@q|Ib&;QS-^)~Tvu3L(1-?5p}! zU!*f_@ya)+Z(Xt$o*BUKXLhp1@&e>5i2`NeUgj&?P0gMJIP2BzHr(*luh)7HghbzK zCmqz10Y}{@b6E>0vpN~iE336=rd%#qywxroZ0cZHau-Py%LY$Qj%6m2lM|=4^6!6R z@tX+p1Xg__y_vpW#Ruq3>aJNG#=?x%MNb)|+I+1G7cpQa0=4N&x?;<>3yr`_8*Df&UqUK4#o~zOKoG!u0h6h6?YrRJ%n~x)MCA6cuZHHSN zIZ5Dbd$lKaVD!I(k*@U)x-Alu-D6kgw*La5ut- z`Ra)Y^ZC^KX@S6mS0ntIN*^C?b*##oOKUH;sqmJz3(;bvvSw}_P+t3`^^7|kF3*S! zs)(~plzg_$Id8(}D;r?>VB;kq$IE~lz|aON1Bq|*Mf8$9BWc|h)be4k#E9#^(2lsR z%iK($C_cB%`2dhEeb*cFBkh-N;ApK_?u{t-Bdn$3)z{yi!Y!?Q@xXqLf1C5yaH_p0 zsV@S3G02^gV@LWE8UqRH_#jh>&{#x)a-v(s1y7Y|G3Qtl43wOh7@NqP8can4$4~IW;jdnRH&wPjX9Hf3lJjg11giq@0WVCh}-sHo4V5IyQFv7l{VQKt*>BA&E(-4Z?2ZEMF*v1Iikac04`&*~;SuVm^doe_fm2Uw`|$`qO& z)me@vr90`dly&=%@42GPvB7laWGeaKcyeemIh?_$WlkOAyP51fr2m38EqQEh;;IR) z)ohw*ee1Saz4gweU=I~aa_?tD1&7MI!j$8!QaDx*yJX`@8=BRu#jw+sOHDRLa8S&` z5+?DsPWWS7&G(~BzP#uCC)T^fpbn5Lei4R(HGbDablS&bUIbPlp&bv41vJ0&TxSGv zNX5r&M3c_L1`YM)&{Xe_e*Pm7<@`K+xFu7!qd4I=Fz6bt0ygA^4m(i##p(t#&H9PnhIYMD1inRyu9AVxhY1&c zP;7zE#XRaSreC6~e$Z=S8rsG%!`>i*B<-RJDEDTvX+;aMuSfmhRsiw+!6|S2Tq=Z= zmMb@*e!nTyYXpbORA8v4`Vcz*h&l5#HybFJ)h;E#Ux@dee?npza`5p5iiIW!5&<<) z?>F`RE=Rr-LmBVr#C9LocQ9PY(kx+thATZHB6d|g2vY7JC(fIVod~#haB!EEW&@#F zC$B|>oz-#=C(6y^vPkW#-|+?^0E(KAM77xjAki+CX@SHd$-NGP#2^Ep>{Hw!N`(ID)S_@IO|qlLRFZ$@belw%mog^*n;*V% zuAzL+nG~EZwgCy>^{&e7SzEx0OFlR$=2s?9k0&!ws;X$qU!TL+I^Ur4eLDZb$!?fi zxn@%@vc~D{L1Jw+f?^9G4_=;ir?{aB!Zr37#sO*~f@0j`nDZLc4Z7^D-t>(@z~E59 zf)ip^fI%RxsZuJ6aUL6tXdAuFoL3Y;(`}vDhM>Y1S&iPx5>bm5XasEL`&P{>(Z1(t z>sRnUAzhcK*HC?^@8KwWc7C1LHV?Y66~E1qrY;N@QVXNLeAnLXRlTw%RLwyqR&#B^ z){V&r)V&iJrlT1;AJlqk<&&5_{aFg~<|JT=fiR;JX(RlC zbz0zf;j)H+U9<%TTH0}kps|RLqu(M&3E=qv$UVrBKMlwK8sW-jS%gZW2D?uXtmih% zf=GfmXIe}qrzFlcD|keO$!&9EVV)Fc#Wt5mQH#g5ctHk%@a!Z>?l?_kf^>z!2>x@5 zXcW}MzRcEdqf=rRTA3si1j8ned+&wm?k_OMIy%BOf0Vu;77;G`c8tLauRP(-$8!NB z!fMQ0MYtSXi_BLR17i}{A$ZHi-660KfHPxsdXJ+e9>5&|ilsTO3ujm9whRLDgjn!VWrh?eJ_Rk8bDRhbfV7Ge12xO zBAQd&e_5fy?zrFwEz_5uOith#_{o!^SxOr)&~W#PcWw2Fy$vubpg2{80iH5#=kRi& z-ud$_3~gYTglj^@#2M&U`p5*=BsX-0iskvde$8ePXKml2ZQg43Lx0|D7oI2ATaCv& zKz#xNE^*L~d1;vXnzpPZ<_P7*A-0i_z$skYQ@!4|hKa_s6+SoRis-C-gG@Tk`#71E zd6@@SE^tB%;U#ju!9Zdll8v_p0N@JQRopR=Nr(E>ViC48c}T!9N|Zo2mDD7mz85Ca z8wrE@&ci&PJ>}iO|F*kQH5@fmO*(IDKX;%`$&(Rv0-N)4}{k`z@s1=K_=gca(Q=f zqF2JwwKc3lK-HbcW1MmFY~tNu2ZiL>Ocx6_CI0`)`}W|tuJb-%v3M<)AP7E0z1OrX z5-KiBpU=5Bq9)?u%IYGW)=%zK|%xp`0Rp@EofVjoH$Rrnbu7+afYH{MO}gf(a>9Zqj;o%c@v2*7Sz~CZ~F%iL~(_+dqiG!p}D>s`39hX-Q@snfH*=4C0v-9ua2~EI~XPo$FJa;3BP+*!Q2X0U5eu`ifwGu+I_}AA~ zdoV`O@mDk@X)B?8!vX220g^60K?g^DWDquMJiIEU1yooA8iRT31VtbhoL+J$Vuf%d zH`d+(Vd?`y_)LqdmL!Xb@Iz4s>j!+E9tbh- z(rO2?Z|mwd)Wfm#9`EAHwYDob^oq}XCv$#6vzI>Al7i@v#tDt-gbFPOS}F%Gwzfj3 zXl;4Ph!#kA^Ch467Vxt*OEn5oV5NuDY#S0@46s5Tm} zoFd~TkKz|9m#D;r4woF*MCQwT77-(9U6{EM({+&u;IKkF9OO!8NHs1Rzc6$>@4)E# z8WN9+qe+MwgFA?5oDCH3E9&xvMV!bD*N8tXzzT}OkBX3i4Tp})bo9lMW_EFD5n(NE zK3W0o#=_y=`!{rARL3xz(=7ZJ&nzP$L8OzuDH?MR!+F>ZE?D)g8#iuz6e(d!%j7Bu z!C{O&4!R(`<=nx6fyWL!a=_3c1fG@Ux$+?6Q>xq=t^?ufo5awdS4Qf(Ner4WpL#cS z3$k@;DgZh;i^D~Zu$h~SxV(tAEEFZ{X-;RAjAuLEl*wjO*%b3~rf+OVPR>;7p+Bo_ z@hFD91M0xBDx!{0BvZ$JOC48`mHtZmdRiT*rmwbxGEm82z5TA1DyRVzlLCE!UW7h6 z*0oxweZAw!7Cy7y@f7sU>*>n2_4Wjsc_x8o82jxYAvCia7`wYEh?r&=k#MZe9d1Hc(hg(uG< zBh>k|xk%3^Lpd*48L+{Q_x}T>XeE3PFg73nwS_qRbzqkkntJ(_dn=AIh{6<&5^-Oi8T3X`gs!Ae;PWA$5f131gAL(HejBU{9rc-HD)nsi=Zp-O6 zQ<;bUyVL=)T-Q8U?*Nn_|88V(X0Wv^$Y8lhkw?Kp9Xhg@z|bQbE9!P4HqU#6(QY&2yuJxwT$CJ>H+G_Z62{inX#@ zL0qgP_E}Nt+r+RgJ1@;{#rRA!gT_Dk$`=U|>UglP0j$>MyMvf299R%D3F+XZI(Omo z#5gJfGu?ftzS)bKA;==;b6)mR9J=1IEOOf%b-MN+4+9Rb$c9beUbl(JN-cLHk~*co zF+)F(c*tM~Zv}+xwF2+LXTG^Au*C%iS;ev& zO>c>aNGd@LVWbjRuq4Fgq25>sM6PH&Tj)nMV(ZT$(#X4E>-SJgr`ytt9taymXM5;v zLKAN8ZpuVy{XP?hg(9LlCV!vJ&MJ|+_(58IVnny-nP4bX9;IqRetGgE*oGMRKfg8y za^nsZ4jhbTUgEC(-=^gFstQRvbcoM(T-^m!L-9D-Df&oyyV!gibgb^?r_X>g)IIzp zC$oF`iMvNV6A7Ch5t~Hlq&js!``(0qi+yYWeKnXAn#&JN8@3mva; zX9p`w$#*g8s0Ub~Ky*8uM#lrM0Bw8kZyT@g5T6(1KwFwGqGpol{!2@>ZEMRcii~2- zi>T*_WUDC24GERYIo<0$0ws&OJiR5j0^UgDchFDEs~^K<^)9aKoBZ@EXmGj{yBHTE zaf|LV@wHOYNu;gHH@Vo}){OJseEYdpHDI=Acs2;DC5=J zj_7c7BaKEImW03CJl}GRDVf7j4lB*$3Mky1z4STWjRnoG5WNtNKJL3?y#OHxiHE8H zQ37Zp;Gl!K+;Nm`cjI`I(Jx}IJZ#KJlx9vYx&Wrtt{6f!Q^UbWj&yD~{yt5;dKl5z z>XPxuINqZMclSyCkf7c%-aY}a|oEnBkv8z=K?oa~HYk7~t)u8cNFQm?N547m!7oYlA#HNDO9lFnCxWvbJGI@cp2e2(!(eDJb2PTBZVubu%M50*jfq0~$3!duG?j?WKOAe5u4pWXT&05dfwM z_+#R2C8Jr1Fx+U!xmko-Z7rJs!HjpN2s<1DS!0~+;W3K{YXgZnzRxDAF~-%qiF#Q0 z7OS23Q-`yHkaA2DbQRx8&E;h?Cek8kM|itnX;XznH&IWX?CrLEU5fu?;dw($O|?Gs zRJm=T@$^ zEU!40cwMwO^SAH=2qs-)QRaM)2zGrO9480-IjEUV;u?(M8S z;4NyxKuy=yT3VLf#6}RX&vfO2SfX?CbSBZzaUsPq5-^a6Bggym0Lg#W5F*wmt=I~? zHfIXkle!-vhLPB_9f8#;sc$`v?NJ570iSf(wkyCkabTt{OM8{ImLB&R#4r^+ z!a9g8opPp+&3ZfL+R$vNV8DQ3g&M3gf_;EaY-dn|xHjgvN;k~NzG=)15P+EAC76eK{v?QbLVAS> zyK(xY8w}4ruhCbaHB8gk1jNPir8|MLTR`q3O`$xj9X>6f;=uKeRc<`%N9(~9lDl<4 z(JV2BosCm>qZ#aEUT?ZF8VMe)&JhUHYl=f{ zIvyfpai@GqSM{*pWhb@ga6z0$6R?NZUL^KV^VlW%rE0zpogJ-wX=7(~4N`7Uzz6YY zrvrYzWqMnALmvFfo}`MH_ER)86?faUu`Sa-pWCG*Z`}DQFul(tRKS%Nruns2%G2(ERSYtW}7yyS5c zWW#SQY6y&xdU7uln)uSS)&9DJlH-lePt7K}qI=PW15!K@2S{Uqw_5}^9$T5sjb(>G z*|ney?mPmQ7MB8rhz9T>(NMVO$E_|x#8xS_K6K>BB!lqkn}g}dUNgO!iazNf6(n~9 z#Om*2nRR{?YW=irPAm1MMGHYhOVaGACjj9!LYPTRySh>cve*U9DV2H*ypC_q@k&qbR0pMxYQ1`)f(S~|3s0?;Dd@}BBxeErg zd0p+1NebLL9buj?SRUc4&a*v zFjvgOdETfR=;Q|9coBV27|fF}ASUbgIRcFYMN=71`$=j)IdNrh(>C;K7L6ydrLry8 z=J=zVvr94Wz21o~Q~1eJvyAptY-SL|z=!Z-O??0^i7bJs2FHWh439@MZZ>2m*ju5u zvwgtBU^j;lOQR2!co)3WRIQ8Miq+getpiEE&*TOKSru8f!6f{I#|#n=`R zLnHM?W&tJyZ5WLLnM%o_t{Y0Da1z*cCNXzP6g_9jjb@g1U(Tck(`MU?IAKS7g8*%$ zzG-b4;xo*zP~|$QHW4wkR7<&2)H`Y~KZQ;#>M2~iX2Fq#gMSaVhm@qov)e=B-~mKH z;Sof%vZ&Djpc%%zC@Y1Rr)&S(E!_7*4{3A1fy>~uFklpr%*{UlkeU?bvX&4|j8rVj zM%~lREw12C5Hm=huD`GCYxk7XLR~w>!UJl8#h_STS%7Yt)+#0Xz$7(PmP)$H*|q9C ztVmx3sML>RxdT0h-y?uaKq-grh*D^ahC|-H;-9Y-$IttWyud{gnZ`^FQnO~gh7)^x zO~QgPubv@>oc(d)b+&{J0;1v?bW@ee0%|*7&h1?sEDz>p;mH8AE()x;g(e@Ae?p-2 zO@UwfN(B}+xIQ3BUZuZ5VTi%tUnf*OSAzZuPI-;P&GB6AYpeq07*$$s^8)KOWCH$8 z29Yp3;uNX%QPIr`-Nva}Jqb`vS*@22%Qx%lQE>tR*SqZMeT7uq0~lvnE0t6%-Zw!| zyX`BP!vaj{GBT_}kV@{(= zN!KHp05`~N20L;a?Q7MAN1lS}og%Q-EJ_fKczjDlfXIq^sjst-#G?HsKfTT7X`sFp zxI4{+)&Jz3-(nMEsy~n3Une-II!t%Kjtw~sj)AFNH=sF=2Mg)pWC9yKQXztlq~lPk zh6g?R3p%;%BltpTEZX+yf&!3iJ_E@Mz=P!o_r-Gk8cIf-ei)vFba@hM5u(oND+mof zBE!4a+vQnokaS47x~ZDMb!My1;!even~`*+1F1w(SGT~kkbvDO1;$!Sf8a9&`be{+ zJBkg1uDsABY^)&23aT<9H#%rr{7ZFQBMWhZYEAfD5{zYEfOLcZl^`iGRkbI_YkyOR zNKsx)2YRA_U+!CYxlNic90TH&+YID_;a~b##dxz|Fc5rIt%%wkg&4(toN!WvLdv@; zF~{DoaMH8El-OsVp0-EWL)yupYqrrNgH)m7y{tro#RK8`AZVY~j zsXj!22yw!aixeQOfe_mGylUr5JJ1BIlSgH4v=h|rk-^x)Ent1W=+<)zT-XIWeq&YUDo7H>+-(N*PB~P>iltPJLdq1y%fwmgX5A zQmdoU;CV*(yP;|ahP7Wc=LHi3Tm#Gz3|7pYeIPfJtqH5$F(J)SpACvM+qP&+R#zpyDAC|V zc*KWsD2Te8GV7MsXSs6u?9f{-67+`ZYWYrwm?aHmM76P>8FL`2)V#|_=22@)%z(BfNVv@dG~UVt+r*fg-RkVjUK!m*Q6 zMO1mMQ`|tQn%l22UqAP;w$9$V2w!3w*ll7 zt7M@*&V_38qRI*KJ6$NP;+8iZy4kwqZn73`wF4BX?b2|vPDn60Q{e*tNEf;FI(~|m zVoKJMND{22wVDhA*JHR=m+Gjt_XAi`9fyZAXJ0CyB!AQf)N>M$4YsuzlqqylrCod7 zA!EcZ82LR*xx~03X|*18M*;)F?)GqW$c_-N2c;3#z1pf(M0%8ipQNdgRc1{hyt+tT zOmhtE75w7NO#cBc8F@%wN01~X-Y-}(BA{KeHx}?ES!kTc(%}vROHvdDq2z0W2-zWt zh>+tDf?+4pSkdd5Vx;twDiv+G(*{ve^t7I1Ub^4 z&ued-I$|DVkb1{bdHGEBY(337+i|qttff|@&fyO~NFef9kj1ee4Ye#K5URie9>lTU~XGPlhL|`sUz?q1Ym(5*IOer0F77 zW&w;_5QP+5z9mWMvMtRCqLxe$LEtZ{;zG?WCE$5XlHd%f-!cjBkV%QjN*FwN~epLLr4aFkZEUMM{L}B=e4dY zUGS>xf;Xjju|dg!GcoKLuwu-&84u(3(lKn^4s;W<64#6s;pTB3+*!dEEoWL^Dg$Hl zIhSnQhmhqFzcKd+gqr!qO6mOU;+ZulE-;S1VfH4-vQTo(AqOB1%g|O$jtu9Xcyj*} zZVp-=Je1>FVKj18&4BC{h7@d4v`g^F%@IS18*{@rJkrwU!imA$@`%lf1^&pxh1?S? zjhn=0Z*zbNa*h*hBstV`_%yxA{DLApJ)*Qk_g=g+ zvx)g5)1qt>g&RII2s9=Q~qS`Pv_ii~3x1Ve%R@nCtK+rcjDfN}B-@hv$JT$!NnRU)2ch{sPT-{hlI3ADU)S6bP!k z08sy z(1*#g)hV*{_>Xf_V}P%4$Vi7BAyiD}QePrg&@Vv!I-2?x1oZkp%E+>UgHi|t#fmQz zjbo%K`15HJqzJDlzsNt$_tLG7b;XJ3HZZfkos@&PP}Crde#RFpss;{~Nj<-pcdJp-SVqo{|DzP{Oh(dv1TtFEJ$mdHX5BAR&=;i0O_)5m|A z-G3J3uS$(zsc#d~)@#p{0-X0Z2qsE4=?PW14;KY7BV8#@JjaejOgP|o8$ z37~xVdj}=6*hSz}jMzpNJGankfy;4*&8?SJ7vaLPxcnWQczGv5AjJEXv4a ztd#(m1e}X+K<7xAi)gF`Ob!CV31j;ZvFmM;Bok9)w@^|_BL#8hdy|yJritxfaRD(G zntrx#!jve|H`p%2et~R*?(Ud#8xopQc;FuUqF^K+|J5qG0h@mm|8ZCq$m@1WfwUuF zw3-Wo83O`dIF*h8~!TNWcFQE!NV-%P{i@r<@QN^~p2*a*H%m&2} zT$^t1aPpUvW-Zj+Y6+FH@c?M3*{)G@;&r1m`Y#;ZKN$HhxOCK(xcBSCzK(L561Vy= z5I8Pak_2)f0Zq_55(pYJB}8Sn0~_1+IX7d86ND?vg3e*)GFL&&1Imc!q02B3WdoGb zFckMJM!E5D@?3$wt|64log%f5UGvwuk*tAK3Kv|2e}P22>lI3}j&{2~&yX#MX>_|M zWw_gpSu|Un&$u~6s{?A%t`D+8_~qg^XFa@cvNAaOyWwtcWs+az2C?fRiL~WM>A-BU zYa}g9Ch9ceR>oI(NB5g9%^N&nM_Ln`M7Z{8H!W*B#^J!a{cx356rxb+PcB|k%$BVS zqep?m#+S$qq#fD8D%Ywj(5=D`i~g4Iq98JAcSWCDS;Pudx-J>7l<1)C){jzYibLu# zP}Bt1XaFAqgJyh;rYoh^@F*N9Zg*vj+3N?rGU^dbv-v{o$K4m*LU;)=Ox<09G0#rb z@1#zU>eFg0&a1vn&y3XFfCn0gV8Q)M+6=;P=U2roaD7E2Y8VMSav zf7_u5HgLEn>kujX@+j1R2HYeJ8KVDy7UQ_JTVFV$B>C(7=Bt2GMf}BB2agK`C&yM(OlM_g$2M04_h;qj&*URS@S~+jm z;ZQEW$Q{|{s0Rv)8QMJxn`ew!h*R8*?MR_LnvVY>yLI`sO>F!DtgXnGhs?6TO2&@S z9hidtWqK6ipx}NIQ51<}%J4O(IM1mvL`Sr_*o%?9wu+iW0E0HCf zZwdT{gvne6FQ~VR&#yX2Je1TgF;=r9SRF)^$oyX=0*e0gZiWHi+^JI{dQSC&i4O+5 z3EmlLHh7AK#-fE5cjIOC@7$^wlQ>obc5Gzmspc5aheQtIaqL!AdtR5p&5`rfV;>eW zQ#?Z@FCtF`v2B5G!)x3m2%1RF@gZo%W`CbbXMIBW zWk5h|f7$N9vCZ$(bg|VHyc%w7|IPijJ6vFkp-~oclEq)9C3jv}0X-+KyJYwex_uFg zuRe-3Y{=~&blb?l-6F0?1ey!dlgCnwdLw4|VZA3`jB2~;f-ERZAw&YH0fj)?YV{=e zNtS%WAwnt21g|uL37a8FQRJ% zjzBe)GxQ#M9V@BL2yf%lv{)>MM^7BfPYMeX&wUB5(ZUs?*(DrDSKW-UJ8fdu;W~Wq zACb(UWJAOgr7NlN)g-uv-2;ll{G(lzjvUc}t3g<%(pKPpO$*0wxwZ8uGYBRIPosaX z+YIgy)NAKwu?YfA7*2aTL%9hN*p1Bc9ff^=hww%98kR5y;|B0@4XjJ>>+F9Mh_dfL z<_1<*k%gZu#^+aq=^X z2i;T%RmvjTi<3T^9PGg0L8xPp36@8znHgNVfJ-woxIHs-QYVCs`G-hUoYUvUTM=z2H=KK zN%Uyo%+QPgp!+X9`98S&n8F!WC5ODSB@_*0i7vqji(m($BY{;fN*SvFKuNICeljuG z{0|G3Y$r4ee#x68u&94RnEy7K;7CcZGP;zoQNM$`{avNA_>cS91(ft%Twu5(WORuG zgj2`R*okrGwbSgBHdBwlAhO_KWbf(_&=r;^!8r@(NDgH5l=Ev+N6dCb?hBnXl4)AJ zV}d>@N-s!6k;#xF*=HqT2q-S`MbWa8T%=$H=ZuIWOQ@yXiObcqaC(*N*cZfyRbn-m z*2m-;r@t;<>ehy%1rw0B@5_}3&kO=NUY^}^wpv|%6t%4OphU}_%If^(M-T2fJ>wOV zRliHHd=(IAAQ^(DLa=<5T|S3z>Ywt{*Vu%-S^XZaZN*Vd{R@1kJ>rq5XjGS0mr=?N z;HnHhEzV_?X9u4?gB+KaR@JkfV=jsizRCA|ov$ETsBiGob$*g8A>zm&XCo2kVuNcA zBW}F^lF!8^`LA&8yF^-X{n(82X_~odvM9xlqQEzT4L>$=usGx;cEhh6!x!?Cn`fzE zmbJ=GQHF>}H=mY_HE7}S-9C@R`%?CyqxMw?+@mH+%L3T2Whw}4Zc}D)7FzJJRr3Zx z)Ch^JYQPOf;Q^cm)<#HZ?y8l|-6V)%-s_;2K-zwzmW2&S2L?y4i4a}=5!R*FvxXwG zXO_j89BD8F&lI45+%IOkh;qMJS$;oiIRITM;P`!>8}Jx-Sc> zVntO~N$7m5C!mW=z_4i}kRx@E=@U|@243Q52M9b7&#~F0TeFRTOMI*WaAax?fU_l) z;WroL6-F5hG8{(@RF&#YgcSp+ZW2+++fkrlLOLZ_A7Fr=&rJ*$PDqe2bg2t&6jwA& zN=ZnZjfurJ-UB8dj4>I}OOsq*XOPl6mm5o@0g=+^oZ#MvBx7!C5%oH3b2x&(Vw03H z?#+#1w58zL47U)=&&ph76~zk|p)V_PQnPSe^f!%P!zxmhD4bY=CCD#Ll{=b?)+$B# zb88%!-U%U;#h2kmICZih<(K&at=~2!wf_y)IZn!1v&u#Ge%2yD8d00+8@+9Tddu%A zTNQ9r0x?!GQ(a2pzw!;&`1P}BkWqsOsaoAtp62n?KV}bp*4p;h`6+rTr9X32j1aw{ zp+_6Ig!(22|4(fGBbz@$gQuiGXlz_Fn|~g@tyOp>CUudI%T1|e5k1ULxG#C+<*MA@ z$(LW_SbU~GHBRFLS*ZSDQWQh_#Cn_2q>Mw-667#0en9lL=pAWqj&fDTGRyT%zWVQR zDruc7PzIN71{RV*FuLkLe1I=C198&!^K-4y=Vy4mLnld)QJ5(~|5$koC$9c8ul*N3 zl~%*NAPXkd8>??*8c4$`9gW>1$@E`#DD8$ zclATw)zj|kkLatEn7v;!pLq2ZeO1Pd-nQgjjo!BGU5(zh!mDPbFX$f5E~w}JSq(#4 z2vm)Y{35Q1eePB7v(VPJT5db+FLIIi09Oy#AE<|DEU4bO%xuHdQwCWl*%^ ztBY(du@MWxNBHSuY(CEB$Ju;>%}=oTNj4OS)lc!$PqXTZy^-qbc{_cV z|1Gr>l?Aq-a`smIAAS1Jrx$(vZ<+gL%x&kY$(PD)Vmp2R+Wo#JfcKYZ>wCc zCLJ^Hz8Bjs$2(?RLrQ zb3d=K?16faO%6@Hv&brO0LgoKN%+nHKkZ@D&t@;1huIX^oM1D_=6N=VhisYNN|`rE z1)}o2E_S1a+!yKyAH2+lS+mqSn=5P<*}TH$ESueI-p%G+Y{uD~VKdLB%w_@2wCL1y z{d7#^!a=1Hu0EzJv8$p5R8?M;AD~B&tHlFqE%Ew6bs_QkW9lNWOX$q;i6i;qWPU6^ zRLB<(pBx#JTBs)OtzClda+{8V9h=tRCad~9fJ zEI)pfvpcGuV4po^7}sYqkEs=nRvHi3-cPdkZqpn8naqzI#E+HE`N^rG2(ldZgY5XO zhS?n+JzB)Y7alV!qYkj2o#OGrXkKn(%)(Id1QPOMsnlca^I-JS{Lo9q{ZH*L4v&p8 z{|uIjZ~OpzSx5qm#UoG1^~1bw*NN8;k4+$Q#|$oAhSt7XvBL}(;yiKEia>he zx#7YAKqQZw2h{tU-8!hA=B>NU8aOZ^``3|i8I_jN>4)R@kK~U}BtY?f>@3ttyg-kM zkFsUuBn!Sp*=t+Q$pR9{{4!k(XGOb5bqys^F8kIx;jm zRvaDSQm{jD7_e7M>?J?f^fKr+K@gvd4?I3Go>%92wU6%?DjXgHU=boVqQ-bb7Tmj` z$5Tg>?&%+KMBS35H!p$EWg>WA5n8K3=GV<^|JFa>a^=h)4qq(I_1{y49j8bt>+%cjI;j?IVIyu{`-n9%_%l7vzcb|b8P+^oA;opx1U^wY*0^+K~<~|f4|Fnf6V5aZ2lC@ z^tK{T{ljurr+$J*b#t*G-njOnh%vZx0-NmWS%nOw?#>rE+K;js0&c3qY@TKF0XF}T zH$KefSJ+S^BDDe4$N2SCHm|YyD{QW^`2w5YVey(Il+FUQwyF>nK?#YuW z^E?tY+(?=J@y{5?zQz7Ge0%(=y^Gw*J#DB|*#`Ay~Dll@4YLtEweq{ooP$m4QcyEPkT?c L<)h(WU(f#mzg4VL literal 0 HcmV?d00001 diff --git a/gestao_raul/Lib/site-packages/OpenSSL/__pycache__/__init__.cpython-310.pyc b/gestao_raul/Lib/site-packages/OpenSSL/__pycache__/__init__.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..6bcffb9ba8437fdd3a07cad5656bc75887c9ffd7 GIT binary patch literal 568 zcma))&uZK-5XR*{YkTe8w2$Cpd`Nn2O9*MxKo6k_S$YwML9xZIh-3*#Zg3wbw~#mT zwWl6??Wr1e3q4k#ANr)xrC>l(uKUG?G}-rerI~IFA2yro z`lS9)JE4r^^`m9Ra9cC0$DyzNj@N&qq`0@tPUX*#2x;Ou30LQ=vy<_O#a!E_(wg_pRW1B_Pe1HN(VgdPBz(qb=c zidY~rM2;vBO9VF4R){3vOLK%~z3u>Lekf#bgU9sMVe9np%Kw_9DU+d|XJU`=F~slN z%lGY97xHZ%x%9gIq`Oh^!MpbE?&H;EyXDR^4VI0vy%zVa6P}+K);+Lr(jHQI10V(w cx^`-&xj0k0A0b%7 literal 0 HcmV?d00001 diff --git a/gestao_raul/Lib/site-packages/OpenSSL/__pycache__/_util.cpython-310.pyc b/gestao_raul/Lib/site-packages/OpenSSL/__pycache__/_util.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..3176d604a556aea0b6a4e687d265d361c53e1b1c GIT binary patch literal 3851 zcmZ`+TW=f372erht|*F9B*%*H=_F1QQ{8eCIHqo^Ck! z+w8$?v{*3}Wm#?_ljNCRZ~29HFB=v0l_*W4-BcF!^?XyBp~{Nd zlMH)sV&Z<1i6q;5*ka*j-OGomXve9HR6FV#iD#PTaZ!tVks2ruw-kXYMR?k%n9;@K z4~=QZ3i16rbHa|D*X+aw+sZEr(RWwX@9woawIx+J0 zAc_wntn54<$ZTut(dX@`sj=SD#q|R4f%Zunj>$a6Vdm$C#oAI$xJWY00q(;0OCFxK}o@6FR{5M9X zmuLLcoN+{+_7Luf$3P&*K7zm)DgR5JUc`<>bNmhU5NAeQCwmzNQdoUVr&l*O+k4WqtszAa4FDryVG>@XHEb%^+9h_wd7344&QD*WX&9jaDl2QezvZd- zabFSGNnO@g@0h0Y03vt|C7^YM6Ta7Ujn(HnaQI+ zSZA%kA|ol9h#q0GiUS-U8Q=w>S*E$=&i}WdQ^ib034%q?s8Wp|D)PACz}SNI%t9HZ z!p#o~pG;7bP_gjW^Gu#IgQ7^Lz`GS^3N~b_VVplZuc#h@-z~>`N88pI;?1=#U&s#@ z2&|xczO4w$K(QT@bsdMTE7T1d5n;C6^1`20 z6Y4`6SwKylk$o4lnj$_E_!Ej_P%vH0Y#H@f-5(jLHzLz3YP&Q%=i&+}mi0cxxvCt! zWX3%Pr@eC39GK2GwUgjA%G4Iv59nb>|0vN@5m`l416)Lm6!GQ3s45rs-VW~~gUSDP z&tWf#dmylk@0R2-AQuv|(CN3lcyD8kN3kVy6s3rFlT>C=Usk25ENhxdnw5JC?3D<6 zSFV@3nkHM-=Bkd}%Ww}$O%_Y4pg&Qyga8=C&2z1k)IcHOGor=9(<5EX zgJMWGjEzK1!wRY>0{D@Q#_qd(&>+Ry)-&tap{e#XCL8Vy^Ii1|d^r~&XgYV3U}7Ksdy#=uZfL(e4B!b6J@la%U1V=Ao{PfHjW;KeYYXx_N{p7Bp=)a;l* zFyVgdF|3|U2vo>1uKeilFx5f}dEDthey2m~5Z^Cy*-xk`I*e3i+aY2o%#^JefK+N{ zV~b)_778`8;()4n3|5@LH){xwh9>W$$D&F)s$eq46dYpBT;^1?2y|7uWj9E)fF+BR zSgy1^jG!*^K0D=+TbdF=fPYftK8h(3WTX?+;VwE%n-n@9suGPhMO2QSv~Mklb5zjS zoJvc~Pw@PXub?gY>ulGEat?P|o8i#1Go-GubYq!;M0roPAKt#hEBKc7!pT+~!cZoV zL>=dkp{F_o-7mh4lhHEmB3!4sp6<6Z-+Mqr%Ps0LO3q%cMnwbp6d$DI8P%l4x*`@T z^Q%6Nvo3rZ71QnQ)!%KmpWfSCUt9kYd6@(ArnvBc8e)h=|OB- zJ}h~DKnAr#)m$9~w2EsXLeiQB#)MPQN5-%0$dk`BxX| zL6yw*mYAh#eP)&lJZ5cTetf$3=9yWNR!Xq5L8-o-wKkCV%603<4~s?{Z3=#}$aY&% z<|*nV)Gd1a3XdW{*NXs`3R8Koswrxg!^K#Q1}5J_b?%LpdeISFxwKpU-qBTwswUI~ z9k!Z~YDIkmJWv zD9##|8i?u_?eiZvDM literal 0 HcmV?d00001 diff --git a/gestao_raul/Lib/site-packages/OpenSSL/__pycache__/crypto.cpython-310.pyc b/gestao_raul/Lib/site-packages/OpenSSL/__pycache__/crypto.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..451f02e00f92055f8c666d19b6abda480d2ecace GIT binary patch literal 71836 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 literal 0 HcmV?d00001 diff --git a/gestao_raul/Lib/site-packages/OpenSSL/__pycache__/debug.cpython-310.pyc b/gestao_raul/Lib/site-packages/OpenSSL/__pycache__/debug.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..53032786b473ed14b008caf255854cc447556fcb GIT binary patch literal 1131 zcmZ`&&2Q5%6pxcONwaPPHa5Nvy`di1uG54NWAuPD)~Ou`tVotuyIs08iDGvUP)|Ga zKWsM;|B21x2cc#82ZZMlUClKR`RWORvrspurgskA z8oTERcoQk-n5QC$Bf15SBx@%;>UMWF8=sRb23?47;`P!jk?|m<$zcYOSrdZ&exRKo zu4g_Ljb1!Tf{?QY9nc^WvT;@ZvIr^8AVub16~Z7og8l#9r{fcEFO!FH1P5N_CAq7t zU#2wpN8TGtdJyt_M7?bqE0CB5Na28lkjj3Xj&!I{C!WZ}T0-R^I6);^ov11my&zDF z?Y-76;7H!KI^9?8-A`7uPMaRCO;N=w|3&~W-SF!P@xt|SRDJdiR7HcY?8_Wg<`&&6 zw`^ItWuM9=WCS-tNb`ZR;EsW1B6Z-GNNr$vt^jfkX24EiC?kbuU?^KdL8Y1_B|?PY zDjCZF>g1gWnFi57Sz&O1mv2Bp_FM1vmCblBW*l4kfCXTjW@WY9Zf(6U!BftFODbim zysPU=_1jbxjXJIo9vzb)>c@Jph>kcRs+vF#@|%%9)Kh8p`}Ovw|3<+7?tkE+jQy8! zZ#?3W6n>}kqP6W0xR5j^DIJIYPH^ChK=LOE?Hy5w_yr2Z*Zqg~IP6dCcj&rPuR9JHut!SHG8&{v`tiMw-}fHn!9na%d-m%0#UG*P{b?6> zTZa~3QrD+6aPPw7J`W22!l!Sm2$rpj(D%@P)8-*|c$;^AZTTMWVwXo4@g5J-4v+cX zFX2Ux_b^HWzRwS674zWS>wmBv#HVMIZ(zv;Ti_Cf0VPY53)DwovRuGgvDFHd9>(tp zfj8;>;x%m!8l(eYYEe4+h>3^RzL0BFFqb8a2iq^eqES%otykt#a-YH~bdoKwZ1 z=m*N?t+EyUo2Ndc&)+BG(eyh_)iqsXVdV5!CN7Kg^z7`#%kgwUDZ}JUv9g$+gfBBy=O?08K>BUKKCm#w~E;6X)tM%Iv|HNjK)y3rmrCM{Y zK5_()LD~T8TvJuqG9;4r2~V}>sI%o(YDd+b!CtZI)c*}=uI*K#j{2BB{k^I?n{k=U zW>vIiN>KXhi-X-;HKV7kP}aT<6Izq%@VI%ps2;wr�cY*|URX&-uOs!HTCGj_8Y} e4rngB?1;BkE$8j`5g!*rO9Xp+5HMlzCsRZw{W)U}r66{mVdfTfv&$ZiANS3aPRd z6+?G26@p2WO5QdU>4Kp{R#o1}RCd9_-v@-GtuDAEWIrb)lz9SNxIaPIiC>H%5q4!Wm1*AA*A=>^YB?1;pvfN|G3avsEgG~bR2jq zRfSyUt3LYB0h8v)yymn8A^#W9pMC^Y$HIuRTUJ3ysrs`_c0%(UOene~TwIF3#Z9OF z>`J5=yxa_$o}kYIT@;5=f3iM!fZ`~6x{Rav9KBxzMjz$bAT+JO7U{#-q-S7aU~IrP zFf!m8FeCn9$(h+3_`O|UB%c)YOYT^udGeNLZOt03lI!a?@777qlukL3X&{%qwGZDT`wu@z!_@!) literal 0 HcmV?d00001 diff --git a/gestao_raul/Lib/site-packages/OpenSSL/_util.py b/gestao_raul/Lib/site-packages/OpenSSL/_util.py new file mode 100644 index 0000000..046e40c --- /dev/null +++ b/gestao_raul/Lib/site-packages/OpenSSL/_util.py @@ -0,0 +1,126 @@ +from __future__ import annotations + +import os +import sys +import warnings +from typing import Any, Callable, NoReturn, Union + +from cryptography.hazmat.bindings.openssl.binding import Binding + +StrOrBytesPath = Union[str, bytes, os.PathLike] + +binding = Binding() +ffi = binding.ffi +lib = binding.lib + + +# This is a special CFFI allocator that does not bother to zero its memory +# after allocation. This has vastly better performance on large allocations and +# so should be used whenever we don't need the memory zeroed out. +no_zero_allocator = ffi.new_allocator(should_clear_after_alloc=False) + + +def text(charp: Any) -> str: + """ + Get a native string type representing of the given CFFI ``char*`` object. + + :param charp: A C-style string represented using CFFI. + + :return: :class:`str` + """ + if not charp: + return "" + return ffi.string(charp).decode("utf-8") + + +def exception_from_error_queue(exception_type: type[Exception]) -> NoReturn: + """ + Convert an OpenSSL library failure into a Python exception. + + When a call to the native OpenSSL library fails, this is usually signalled + by the return value, and an error code is stored in an error queue + associated with the current thread. The err library provides functions to + obtain these error codes and textual error messages. + """ + errors = [] + + while True: + error = lib.ERR_get_error() + if error == 0: + break + errors.append( + ( + text(lib.ERR_lib_error_string(error)), + text(lib.ERR_func_error_string(error)), + text(lib.ERR_reason_error_string(error)), + ) + ) + + raise exception_type(errors) + + +def make_assert(error: type[Exception]) -> Callable[[bool], Any]: + """ + Create an assert function that uses :func:`exception_from_error_queue` to + raise an exception wrapped by *error*. + """ + + def openssl_assert(ok: bool) -> None: + """ + If *ok* is not True, retrieve the error from OpenSSL and raise it. + """ + if ok is not True: + exception_from_error_queue(error) + + return openssl_assert + + +def path_bytes(s: StrOrBytesPath) -> bytes: + """ + Convert a Python path to a :py:class:`bytes` for the path which can be + passed into an OpenSSL API accepting a filename. + + :param s: A path (valid for os.fspath). + + :return: An instance of :py:class:`bytes`. + """ + b = os.fspath(s) + + if isinstance(b, str): + return b.encode(sys.getfilesystemencoding()) + else: + return b + + +def byte_string(s: str) -> bytes: + return s.encode("charmap") + + +# A marker object to observe whether some optional arguments are passed any +# value or not. +UNSPECIFIED = object() + +_TEXT_WARNING = "str for {0} is no longer accepted, use bytes" + + +def text_to_bytes_and_warn(label: str, obj: Any) -> Any: + """ + If ``obj`` is text, emit a warning that it should be bytes instead and try + to convert it to bytes automatically. + + :param str label: The name of the parameter from which ``obj`` was taken + (so a developer can easily find the source of the problem and correct + it). + + :return: If ``obj`` is the text string type, a ``bytes`` object giving the + UTF-8 encoding of that text is returned. Otherwise, ``obj`` itself is + returned. + """ + if isinstance(obj, str): + warnings.warn( + _TEXT_WARNING.format(label), + category=DeprecationWarning, + stacklevel=3, + ) + return obj.encode("utf-8") + return obj diff --git a/gestao_raul/Lib/site-packages/OpenSSL/crypto.py b/gestao_raul/Lib/site-packages/OpenSSL/crypto.py new file mode 100644 index 0000000..448a19a --- /dev/null +++ b/gestao_raul/Lib/site-packages/OpenSSL/crypto.py @@ -0,0 +1,2479 @@ +from __future__ import annotations + +import calendar +import datetime +import functools +import typing +import warnings +from base64 import b16encode +from collections.abc import Iterable, Sequence +from functools import partial +from os import PathLike +from typing import ( + Any, + Callable, + Union, +) + +from cryptography import utils, x509 +from cryptography.hazmat.primitives.asymmetric import ( + dsa, + ec, + ed448, + ed25519, + rsa, +) + +from OpenSSL._util import ( + byte_string as _byte_string, +) +from OpenSSL._util import ( + exception_from_error_queue as _exception_from_error_queue, +) +from OpenSSL._util import ( + ffi as _ffi, +) +from OpenSSL._util import ( + lib as _lib, +) +from OpenSSL._util import ( + make_assert as _make_assert, +) +from OpenSSL._util import ( + path_bytes as _path_bytes, +) + +__all__ = [ + "FILETYPE_ASN1", + "FILETYPE_PEM", + "FILETYPE_TEXT", + "TYPE_DSA", + "TYPE_RSA", + "X509", + "Error", + "PKey", + "X509Extension", + "X509Name", + "X509Req", + "X509Store", + "X509StoreContext", + "X509StoreContextError", + "X509StoreFlags", + "dump_certificate", + "dump_certificate_request", + "dump_privatekey", + "dump_publickey", + "get_elliptic_curve", + "get_elliptic_curves", + "load_certificate", + "load_certificate_request", + "load_privatekey", + "load_publickey", +] + + +_PrivateKey = Union[ + dsa.DSAPrivateKey, + ec.EllipticCurvePrivateKey, + ed25519.Ed25519PrivateKey, + ed448.Ed448PrivateKey, + rsa.RSAPrivateKey, +] +_PublicKey = Union[ + dsa.DSAPublicKey, + ec.EllipticCurvePublicKey, + ed25519.Ed25519PublicKey, + ed448.Ed448PublicKey, + rsa.RSAPublicKey, +] +_Key = Union[_PrivateKey, _PublicKey] +StrOrBytesPath = Union[str, bytes, PathLike] +PassphraseCallableT = Union[bytes, Callable[..., bytes]] + + +FILETYPE_PEM: int = _lib.SSL_FILETYPE_PEM +FILETYPE_ASN1: int = _lib.SSL_FILETYPE_ASN1 + +# TODO This was an API mistake. OpenSSL has no such constant. +FILETYPE_TEXT = 2**16 - 1 + +TYPE_RSA: int = _lib.EVP_PKEY_RSA +TYPE_DSA: int = _lib.EVP_PKEY_DSA +TYPE_DH: int = _lib.EVP_PKEY_DH +TYPE_EC: int = _lib.EVP_PKEY_EC + + +class Error(Exception): + """ + An error occurred in an `OpenSSL.crypto` API. + """ + + +_raise_current_error = partial(_exception_from_error_queue, Error) +_openssl_assert = _make_assert(Error) + + +def _new_mem_buf(buffer: bytes | None = None) -> Any: + """ + Allocate a new OpenSSL memory BIO. + + Arrange for the garbage collector to clean it up automatically. + + :param buffer: None or some bytes to use to put into the BIO so that they + can be read out. + """ + if buffer is None: + bio = _lib.BIO_new(_lib.BIO_s_mem()) + free = _lib.BIO_free + else: + data = _ffi.new("char[]", buffer) + bio = _lib.BIO_new_mem_buf(data, len(buffer)) + + # Keep the memory alive as long as the bio is alive! + def free(bio: Any, ref: Any = data) -> Any: + return _lib.BIO_free(bio) + + _openssl_assert(bio != _ffi.NULL) + + bio = _ffi.gc(bio, free) + return bio + + +def _bio_to_string(bio: Any) -> bytes: + """ + Copy the contents of an OpenSSL BIO object into a Python byte string. + """ + result_buffer = _ffi.new("char**") + buffer_length = _lib.BIO_get_mem_data(bio, result_buffer) + return _ffi.buffer(result_buffer[0], buffer_length)[:] + + +def _set_asn1_time(boundary: Any, when: bytes) -> None: + """ + The the time value of an ASN1 time object. + + @param boundary: An ASN1_TIME pointer (or an object safely + castable to that type) which will have its value set. + @param when: A string representation of the desired time value. + + @raise TypeError: If C{when} is not a L{bytes} string. + @raise ValueError: If C{when} does not represent a time in the required + format. + @raise RuntimeError: If the time value cannot be set for some other + (unspecified) reason. + """ + if not isinstance(when, bytes): + raise TypeError("when must be a byte string") + # ASN1_TIME_set_string validates the string without writing anything + # when the destination is NULL. + _openssl_assert(boundary != _ffi.NULL) + + set_result = _lib.ASN1_TIME_set_string(boundary, when) + if set_result == 0: + raise ValueError("Invalid string") + + +def _new_asn1_time(when: bytes) -> Any: + """ + Behaves like _set_asn1_time but returns a new ASN1_TIME object. + + @param when: A string representation of the desired time value. + + @raise TypeError: If C{when} is not a L{bytes} string. + @raise ValueError: If C{when} does not represent a time in the required + format. + @raise RuntimeError: If the time value cannot be set for some other + (unspecified) reason. + """ + ret = _lib.ASN1_TIME_new() + _openssl_assert(ret != _ffi.NULL) + ret = _ffi.gc(ret, _lib.ASN1_TIME_free) + _set_asn1_time(ret, when) + return ret + + +def _get_asn1_time(timestamp: Any) -> bytes | None: + """ + Retrieve the time value of an ASN1 time object. + + @param timestamp: An ASN1_GENERALIZEDTIME* (or an object safely castable to + that type) from which the time value will be retrieved. + + @return: The time value from C{timestamp} as a L{bytes} string in a certain + format. Or C{None} if the object contains no time value. + """ + string_timestamp = _ffi.cast("ASN1_STRING*", timestamp) + if _lib.ASN1_STRING_length(string_timestamp) == 0: + return None + elif ( + _lib.ASN1_STRING_type(string_timestamp) == _lib.V_ASN1_GENERALIZEDTIME + ): + return _ffi.string(_lib.ASN1_STRING_get0_data(string_timestamp)) + else: + generalized_timestamp = _ffi.new("ASN1_GENERALIZEDTIME**") + _lib.ASN1_TIME_to_generalizedtime(timestamp, generalized_timestamp) + _openssl_assert(generalized_timestamp[0] != _ffi.NULL) + + string_timestamp = _ffi.cast("ASN1_STRING*", generalized_timestamp[0]) + string_data = _lib.ASN1_STRING_get0_data(string_timestamp) + string_result = _ffi.string(string_data) + _lib.ASN1_GENERALIZEDTIME_free(generalized_timestamp[0]) + return string_result + + +class _X509NameInvalidator: + def __init__(self) -> None: + self._names: list[X509Name] = [] + + def add(self, name: X509Name) -> None: + self._names.append(name) + + def clear(self) -> None: + for name in self._names: + # Breaks the object, but also prevents UAF! + del name._name + + +class PKey: + """ + A class representing an DSA or RSA public key or key pair. + """ + + _only_public = False + _initialized = True + + def __init__(self) -> None: + pkey = _lib.EVP_PKEY_new() + self._pkey = _ffi.gc(pkey, _lib.EVP_PKEY_free) + self._initialized = False + + def to_cryptography_key(self) -> _Key: + """ + Export as a ``cryptography`` key. + + :rtype: One of ``cryptography``'s `key interfaces`_. + + .. _key interfaces: https://cryptography.io/en/latest/hazmat/\ + primitives/asymmetric/rsa/#key-interfaces + + .. versionadded:: 16.1.0 + """ + from cryptography.hazmat.primitives.serialization import ( + load_der_private_key, + load_der_public_key, + ) + + if self._only_public: + der = dump_publickey(FILETYPE_ASN1, self) + return load_der_public_key(der) + else: + der = dump_privatekey(FILETYPE_ASN1, self) + return load_der_private_key(der, None) + + @classmethod + def from_cryptography_key(cls, crypto_key: _Key) -> PKey: + """ + Construct based on a ``cryptography`` *crypto_key*. + + :param crypto_key: A ``cryptography`` key. + :type crypto_key: One of ``cryptography``'s `key interfaces`_. + + :rtype: PKey + + .. versionadded:: 16.1.0 + """ + if not isinstance( + crypto_key, + ( + dsa.DSAPrivateKey, + dsa.DSAPublicKey, + ec.EllipticCurvePrivateKey, + ec.EllipticCurvePublicKey, + ed25519.Ed25519PrivateKey, + ed25519.Ed25519PublicKey, + ed448.Ed448PrivateKey, + ed448.Ed448PublicKey, + rsa.RSAPrivateKey, + rsa.RSAPublicKey, + ), + ): + raise TypeError("Unsupported key type") + + from cryptography.hazmat.primitives.serialization import ( + Encoding, + NoEncryption, + PrivateFormat, + PublicFormat, + ) + + if isinstance( + crypto_key, + ( + dsa.DSAPublicKey, + ec.EllipticCurvePublicKey, + ed25519.Ed25519PublicKey, + ed448.Ed448PublicKey, + rsa.RSAPublicKey, + ), + ): + return load_publickey( + FILETYPE_ASN1, + crypto_key.public_bytes( + Encoding.DER, PublicFormat.SubjectPublicKeyInfo + ), + ) + else: + der = crypto_key.private_bytes( + Encoding.DER, PrivateFormat.PKCS8, NoEncryption() + ) + return load_privatekey(FILETYPE_ASN1, der) + + def generate_key(self, type: int, bits: int) -> None: + """ + Generate a key pair of the given type, with the given number of bits. + + This generates a key "into" the this object. + + :param type: The key type. + :type type: :py:data:`TYPE_RSA` or :py:data:`TYPE_DSA` + :param bits: The number of bits. + :type bits: :py:data:`int` ``>= 0`` + :raises TypeError: If :py:data:`type` or :py:data:`bits` isn't + of the appropriate type. + :raises ValueError: If the number of bits isn't an integer of + the appropriate size. + :return: ``None`` + """ + if not isinstance(type, int): + raise TypeError("type must be an integer") + + if not isinstance(bits, int): + raise TypeError("bits must be an integer") + + if type == TYPE_RSA: + if bits <= 0: + raise ValueError("Invalid number of bits") + + # TODO Check error return + exponent = _lib.BN_new() + exponent = _ffi.gc(exponent, _lib.BN_free) + _lib.BN_set_word(exponent, _lib.RSA_F4) + + rsa = _lib.RSA_new() + + result = _lib.RSA_generate_key_ex(rsa, bits, exponent, _ffi.NULL) + _openssl_assert(result == 1) + + result = _lib.EVP_PKEY_assign_RSA(self._pkey, rsa) + _openssl_assert(result == 1) + + elif type == TYPE_DSA: + dsa = _lib.DSA_new() + _openssl_assert(dsa != _ffi.NULL) + + dsa = _ffi.gc(dsa, _lib.DSA_free) + res = _lib.DSA_generate_parameters_ex( + dsa, bits, _ffi.NULL, 0, _ffi.NULL, _ffi.NULL, _ffi.NULL + ) + _openssl_assert(res == 1) + + _openssl_assert(_lib.DSA_generate_key(dsa) == 1) + _openssl_assert(_lib.EVP_PKEY_set1_DSA(self._pkey, dsa) == 1) + else: + raise Error("No such key type") + + self._initialized = True + + def check(self) -> bool: + """ + Check the consistency of an RSA private key. + + This is the Python equivalent of OpenSSL's ``RSA_check_key``. + + :return: ``True`` if key is consistent. + + :raise OpenSSL.crypto.Error: if the key is inconsistent. + + :raise TypeError: if the key is of a type which cannot be checked. + Only RSA keys can currently be checked. + """ + if self._only_public: + raise TypeError("public key only") + + if _lib.EVP_PKEY_type(self.type()) != _lib.EVP_PKEY_RSA: + raise TypeError("Only RSA keys can currently be checked.") + + rsa = _lib.EVP_PKEY_get1_RSA(self._pkey) + rsa = _ffi.gc(rsa, _lib.RSA_free) + result = _lib.RSA_check_key(rsa) + if result == 1: + return True + _raise_current_error() + + def type(self) -> int: + """ + Returns the type of the key + + :return: The type of the key. + """ + return _lib.EVP_PKEY_id(self._pkey) + + def bits(self) -> int: + """ + Returns the number of bits of the key + + :return: The number of bits of the key. + """ + return _lib.EVP_PKEY_bits(self._pkey) + + +class _EllipticCurve: + """ + A representation of a supported elliptic curve. + + @cvar _curves: :py:obj:`None` until an attempt is made to load the curves. + Thereafter, a :py:type:`set` containing :py:type:`_EllipticCurve` + instances each of which represents one curve supported by the system. + @type _curves: :py:type:`NoneType` or :py:type:`set` + """ + + _curves = None + + def __ne__(self, other: Any) -> bool: + """ + Implement cooperation with the right-hand side argument of ``!=``. + + Python 3 seems to have dropped this cooperation in this very narrow + circumstance. + """ + if isinstance(other, _EllipticCurve): + return super().__ne__(other) + return NotImplemented + + @classmethod + def _load_elliptic_curves(cls, lib: Any) -> set[_EllipticCurve]: + """ + Get the curves supported by OpenSSL. + + :param lib: The OpenSSL library binding object. + + :return: A :py:type:`set` of ``cls`` instances giving the names of the + elliptic curves the underlying library supports. + """ + num_curves = lib.EC_get_builtin_curves(_ffi.NULL, 0) + builtin_curves = _ffi.new("EC_builtin_curve[]", num_curves) + # The return value on this call should be num_curves again. We + # could check it to make sure but if it *isn't* then.. what could + # we do? Abort the whole process, I suppose...? -exarkun + lib.EC_get_builtin_curves(builtin_curves, num_curves) + return set(cls.from_nid(lib, c.nid) for c in builtin_curves) + + @classmethod + def _get_elliptic_curves(cls, lib: Any) -> set[_EllipticCurve]: + """ + Get, cache, and return the curves supported by OpenSSL. + + :param lib: The OpenSSL library binding object. + + :return: A :py:type:`set` of ``cls`` instances giving the names of the + elliptic curves the underlying library supports. + """ + if cls._curves is None: + cls._curves = cls._load_elliptic_curves(lib) + return cls._curves + + @classmethod + def from_nid(cls, lib: Any, nid: int) -> _EllipticCurve: + """ + Instantiate a new :py:class:`_EllipticCurve` associated with the given + OpenSSL NID. + + :param lib: The OpenSSL library binding object. + + :param nid: The OpenSSL NID the resulting curve object will represent. + This must be a curve NID (and not, for example, a hash NID) or + subsequent operations will fail in unpredictable ways. + :type nid: :py:class:`int` + + :return: The curve object. + """ + return cls(lib, nid, _ffi.string(lib.OBJ_nid2sn(nid)).decode("ascii")) + + def __init__(self, lib: Any, nid: int, name: str) -> None: + """ + :param _lib: The :py:mod:`cryptography` binding instance used to + interface with OpenSSL. + + :param _nid: The OpenSSL NID identifying the curve this object + represents. + :type _nid: :py:class:`int` + + :param name: The OpenSSL short name identifying the curve this object + represents. + :type name: :py:class:`unicode` + """ + self._lib = lib + self._nid = nid + self.name = name + + def __repr__(self) -> str: + return f"" + + def _to_EC_KEY(self) -> Any: + """ + Create a new OpenSSL EC_KEY structure initialized to use this curve. + + The structure is automatically garbage collected when the Python object + is garbage collected. + """ + key = self._lib.EC_KEY_new_by_curve_name(self._nid) + return _ffi.gc(key, _lib.EC_KEY_free) + + +def get_elliptic_curves() -> set[_EllipticCurve]: + """ + Return a set of objects representing the elliptic curves supported in the + OpenSSL build in use. + + The curve objects have a :py:class:`unicode` ``name`` attribute by which + they identify themselves. + + The curve objects are useful as values for the argument accepted by + :py:meth:`Context.set_tmp_ecdh` to specify which elliptical curve should be + used for ECDHE key exchange. + """ + return _EllipticCurve._get_elliptic_curves(_lib) + + +_get_elliptic_curves_internal = get_elliptic_curves + +utils.deprecated( + get_elliptic_curves, + __name__, + ( + "get_elliptic_curves is deprecated. You should use the APIs in " + "cryptography instead." + ), + DeprecationWarning, + name="get_elliptic_curves", +) + + +def get_elliptic_curve(name: str) -> _EllipticCurve: + """ + Return a single curve object selected by name. + + See :py:func:`get_elliptic_curves` for information about curve objects. + + :param name: The OpenSSL short name identifying the curve object to + retrieve. + :type name: :py:class:`unicode` + + If the named curve is not supported then :py:class:`ValueError` is raised. + """ + for curve in _get_elliptic_curves_internal(): + if curve.name == name: + return curve + raise ValueError("unknown curve name", name) + + +utils.deprecated( + get_elliptic_curve, + __name__, + ( + "get_elliptic_curve is deprecated. You should use the APIs in " + "cryptography instead." + ), + DeprecationWarning, + name="get_elliptic_curve", +) + + +@functools.total_ordering +class X509Name: + """ + An X.509 Distinguished Name. + + :ivar countryName: The country of the entity. + :ivar C: Alias for :py:attr:`countryName`. + + :ivar stateOrProvinceName: The state or province of the entity. + :ivar ST: Alias for :py:attr:`stateOrProvinceName`. + + :ivar localityName: The locality of the entity. + :ivar L: Alias for :py:attr:`localityName`. + + :ivar organizationName: The organization name of the entity. + :ivar O: Alias for :py:attr:`organizationName`. + + :ivar organizationalUnitName: The organizational unit of the entity. + :ivar OU: Alias for :py:attr:`organizationalUnitName` + + :ivar commonName: The common name of the entity. + :ivar CN: Alias for :py:attr:`commonName`. + + :ivar emailAddress: The e-mail address of the entity. + """ + + def __init__(self, name: X509Name) -> None: + """ + Create a new X509Name, copying the given X509Name instance. + + :param name: The name to copy. + :type name: :py:class:`X509Name` + """ + name = _lib.X509_NAME_dup(name._name) + self._name: Any = _ffi.gc(name, _lib.X509_NAME_free) + + def __setattr__(self, name: str, value: Any) -> None: + if name.startswith("_"): + return super().__setattr__(name, value) + + # Note: we really do not want str subclasses here, so we do not use + # isinstance. + if type(name) is not str: + raise TypeError( + f"attribute name must be string, not " + f"'{type(value).__name__:.200}'" + ) + + nid = _lib.OBJ_txt2nid(_byte_string(name)) + if nid == _lib.NID_undef: + try: + _raise_current_error() + except Error: + pass + raise AttributeError("No such attribute") + + # If there's an old entry for this NID, remove it + for i in range(_lib.X509_NAME_entry_count(self._name)): + ent = _lib.X509_NAME_get_entry(self._name, i) + ent_obj = _lib.X509_NAME_ENTRY_get_object(ent) + ent_nid = _lib.OBJ_obj2nid(ent_obj) + if nid == ent_nid: + ent = _lib.X509_NAME_delete_entry(self._name, i) + _lib.X509_NAME_ENTRY_free(ent) + break + + if isinstance(value, str): + value = value.encode("utf-8") + + add_result = _lib.X509_NAME_add_entry_by_NID( + self._name, nid, _lib.MBSTRING_UTF8, value, -1, -1, 0 + ) + if not add_result: + _raise_current_error() + + def __getattr__(self, name: str) -> str | None: + """ + Find attribute. An X509Name object has the following attributes: + countryName (alias C), stateOrProvince (alias ST), locality (alias L), + organization (alias O), organizationalUnit (alias OU), commonName + (alias CN) and more... + """ + nid = _lib.OBJ_txt2nid(_byte_string(name)) + if nid == _lib.NID_undef: + # This is a bit weird. OBJ_txt2nid indicated failure, but it seems + # a lower level function, a2d_ASN1_OBJECT, also feels the need to + # push something onto the error queue. If we don't clean that up + # now, someone else will bump into it later and be quite confused. + # See lp#314814. + try: + _raise_current_error() + except Error: + pass + raise AttributeError("No such attribute") + + entry_index = _lib.X509_NAME_get_index_by_NID(self._name, nid, -1) + if entry_index == -1: + return None + + entry = _lib.X509_NAME_get_entry(self._name, entry_index) + data = _lib.X509_NAME_ENTRY_get_data(entry) + + result_buffer = _ffi.new("unsigned char**") + data_length = _lib.ASN1_STRING_to_UTF8(result_buffer, data) + _openssl_assert(data_length >= 0) + + try: + result = _ffi.buffer(result_buffer[0], data_length)[:].decode( + "utf-8" + ) + finally: + # XXX untested + _lib.OPENSSL_free(result_buffer[0]) + return result + + def __eq__(self, other: Any) -> bool: + if not isinstance(other, X509Name): + return NotImplemented + + return _lib.X509_NAME_cmp(self._name, other._name) == 0 + + def __lt__(self, other: Any) -> bool: + if not isinstance(other, X509Name): + return NotImplemented + + return _lib.X509_NAME_cmp(self._name, other._name) < 0 + + def __repr__(self) -> str: + """ + String representation of an X509Name + """ + result_buffer = _ffi.new("char[]", 512) + format_result = _lib.X509_NAME_oneline( + self._name, result_buffer, len(result_buffer) + ) + _openssl_assert(format_result != _ffi.NULL) + + return "".format( + _ffi.string(result_buffer).decode("utf-8"), + ) + + def hash(self) -> int: + """ + Return an integer representation of the first four bytes of the + MD5 digest of the DER representation of the name. + + This is the Python equivalent of OpenSSL's ``X509_NAME_hash``. + + :return: The (integer) hash of this name. + :rtype: :py:class:`int` + """ + return _lib.X509_NAME_hash(self._name) + + def der(self) -> bytes: + """ + Return the DER encoding of this name. + + :return: The DER encoded form of this name. + :rtype: :py:class:`bytes` + """ + result_buffer = _ffi.new("unsigned char**") + encode_result = _lib.i2d_X509_NAME(self._name, result_buffer) + _openssl_assert(encode_result >= 0) + + string_result = _ffi.buffer(result_buffer[0], encode_result)[:] + _lib.OPENSSL_free(result_buffer[0]) + return string_result + + def get_components(self) -> list[tuple[bytes, bytes]]: + """ + Returns the components of this name, as a sequence of 2-tuples. + + :return: The components of this name. + :rtype: :py:class:`list` of ``name, value`` tuples. + """ + result = [] + for i in range(_lib.X509_NAME_entry_count(self._name)): + ent = _lib.X509_NAME_get_entry(self._name, i) + + fname = _lib.X509_NAME_ENTRY_get_object(ent) + fval = _lib.X509_NAME_ENTRY_get_data(ent) + + nid = _lib.OBJ_obj2nid(fname) + name = _lib.OBJ_nid2sn(nid) + + # ffi.string does not handle strings containing NULL bytes + # (which may have been generated by old, broken software) + value = _ffi.buffer( + _lib.ASN1_STRING_get0_data(fval), _lib.ASN1_STRING_length(fval) + )[:] + result.append((_ffi.string(name), value)) + + return result + + +class X509Extension: + """ + An X.509 v3 certificate extension. + + .. deprecated:: 23.3.0 + Use cryptography's X509 APIs instead. + """ + + def __init__( + self, + type_name: bytes, + critical: bool, + value: bytes, + subject: X509 | None = None, + issuer: X509 | None = None, + ) -> None: + """ + Initializes an X509 extension. + + :param type_name: The name of the type of extension_ to create. + :type type_name: :py:data:`bytes` + + :param bool critical: A flag indicating whether this is a critical + extension. + + :param value: The OpenSSL textual representation of the extension's + value. + :type value: :py:data:`bytes` + + :param subject: Optional X509 certificate to use as subject. + :type subject: :py:class:`X509` + + :param issuer: Optional X509 certificate to use as issuer. + :type issuer: :py:class:`X509` + + .. _extension: https://www.openssl.org/docs/manmaster/man5/ + x509v3_config.html#STANDARD-EXTENSIONS + """ + ctx = _ffi.new("X509V3_CTX*") + + # A context is necessary for any extension which uses the r2i + # conversion method. That is, X509V3_EXT_nconf may segfault if passed + # a NULL ctx. Start off by initializing most of the fields to NULL. + _lib.X509V3_set_ctx(ctx, _ffi.NULL, _ffi.NULL, _ffi.NULL, _ffi.NULL, 0) + + # We have no configuration database - but perhaps we should (some + # extensions may require it). + _lib.X509V3_set_ctx_nodb(ctx) + + # Initialize the subject and issuer, if appropriate. ctx is a local, + # and as far as I can tell none of the X509V3_* APIs invoked here steal + # any references, so no need to mess with reference counts or + # duplicates. + if issuer is not None: + if not isinstance(issuer, X509): + raise TypeError("issuer must be an X509 instance") + ctx.issuer_cert = issuer._x509 + if subject is not None: + if not isinstance(subject, X509): + raise TypeError("subject must be an X509 instance") + ctx.subject_cert = subject._x509 + + if critical: + # There are other OpenSSL APIs which would let us pass in critical + # separately, but they're harder to use, and since value is already + # a pile of crappy junk smuggling a ton of utterly important + # structured data, what's the point of trying to avoid nasty stuff + # with strings? (However, X509V3_EXT_i2d in particular seems like + # it would be a better API to invoke. I do not know where to get + # the ext_struc it desires for its last parameter, though.) + value = b"critical," + value + + extension = _lib.X509V3_EXT_nconf(_ffi.NULL, ctx, type_name, value) + if extension == _ffi.NULL: + _raise_current_error() + self._extension = _ffi.gc(extension, _lib.X509_EXTENSION_free) + + @property + def _nid(self) -> Any: + return _lib.OBJ_obj2nid( + _lib.X509_EXTENSION_get_object(self._extension) + ) + + _prefixes: typing.ClassVar[dict[int, str]] = { + _lib.GEN_EMAIL: "email", + _lib.GEN_DNS: "DNS", + _lib.GEN_URI: "URI", + } + + def _subjectAltNameString(self) -> str: + names = _ffi.cast( + "GENERAL_NAMES*", _lib.X509V3_EXT_d2i(self._extension) + ) + + names = _ffi.gc(names, _lib.GENERAL_NAMES_free) + parts = [] + for i in range(_lib.sk_GENERAL_NAME_num(names)): + name = _lib.sk_GENERAL_NAME_value(names, i) + try: + label = self._prefixes[name.type] + except KeyError: + bio = _new_mem_buf() + _lib.GENERAL_NAME_print(bio, name) + parts.append(_bio_to_string(bio).decode("utf-8")) + else: + value = _ffi.buffer(name.d.ia5.data, name.d.ia5.length)[ + : + ].decode("utf-8") + parts.append(label + ":" + value) + return ", ".join(parts) + + def __str__(self) -> str: + """ + :return: a nice text representation of the extension + """ + if _lib.NID_subject_alt_name == self._nid: + return self._subjectAltNameString() + + bio = _new_mem_buf() + print_result = _lib.X509V3_EXT_print(bio, self._extension, 0, 0) + _openssl_assert(print_result != 0) + + return _bio_to_string(bio).decode("utf-8") + + def get_critical(self) -> bool: + """ + Returns the critical field of this X.509 extension. + + :return: The critical field. + """ + return _lib.X509_EXTENSION_get_critical(self._extension) + + def get_short_name(self) -> bytes: + """ + Returns the short type name of this X.509 extension. + + The result is a byte string such as :py:const:`b"basicConstraints"`. + + :return: The short type name. + :rtype: :py:data:`bytes` + + .. versionadded:: 0.12 + """ + obj = _lib.X509_EXTENSION_get_object(self._extension) + nid = _lib.OBJ_obj2nid(obj) + # OpenSSL 3.1.0 has a bug where nid2sn returns NULL for NIDs that + # previously returned UNDEF. This is a workaround for that issue. + # https://github.com/openssl/openssl/commit/908ba3ed9adbb3df90f76 + buf = _lib.OBJ_nid2sn(nid) + if buf != _ffi.NULL: + return _ffi.string(buf) + else: + return b"UNDEF" + + def get_data(self) -> bytes: + """ + Returns the data of the X509 extension, encoded as ASN.1. + + :return: The ASN.1 encoded data of this X509 extension. + :rtype: :py:data:`bytes` + + .. versionadded:: 0.12 + """ + octet_result = _lib.X509_EXTENSION_get_data(self._extension) + string_result = _ffi.cast("ASN1_STRING*", octet_result) + char_result = _lib.ASN1_STRING_get0_data(string_result) + result_length = _lib.ASN1_STRING_length(string_result) + return _ffi.buffer(char_result, result_length)[:] + + +_X509ExtensionInternal = X509Extension +utils.deprecated( + X509Extension, + __name__, + ( + "X509Extension support in pyOpenSSL is deprecated. You should use the " + "APIs in cryptography." + ), + DeprecationWarning, + name="X509Extension", +) + + +class X509Req: + """ + An X.509 certificate signing requests. + + .. deprecated:: 24.2.0 + Use `cryptography.x509.CertificateSigningRequest` instead. + """ + + def __init__(self) -> None: + req = _lib.X509_REQ_new() + self._req = _ffi.gc(req, _lib.X509_REQ_free) + # Default to version 0. + self.set_version(0) + + def to_cryptography(self) -> x509.CertificateSigningRequest: + """ + Export as a ``cryptography`` certificate signing request. + + :rtype: ``cryptography.x509.CertificateSigningRequest`` + + .. versionadded:: 17.1.0 + """ + from cryptography.x509 import load_der_x509_csr + + der = _dump_certificate_request_internal(FILETYPE_ASN1, self) + + return load_der_x509_csr(der) + + @classmethod + def from_cryptography( + cls, crypto_req: x509.CertificateSigningRequest + ) -> X509Req: + """ + Construct based on a ``cryptography`` *crypto_req*. + + :param crypto_req: A ``cryptography`` X.509 certificate signing request + :type crypto_req: ``cryptography.x509.CertificateSigningRequest`` + + :rtype: X509Req + + .. versionadded:: 17.1.0 + """ + if not isinstance(crypto_req, x509.CertificateSigningRequest): + raise TypeError("Must be a certificate signing request") + + from cryptography.hazmat.primitives.serialization import Encoding + + der = crypto_req.public_bytes(Encoding.DER) + return _load_certificate_request_internal(FILETYPE_ASN1, der) + + def set_pubkey(self, pkey: PKey) -> None: + """ + Set the public key of the certificate signing request. + + :param pkey: The public key to use. + :type pkey: :py:class:`PKey` + + :return: ``None`` + """ + set_result = _lib.X509_REQ_set_pubkey(self._req, pkey._pkey) + _openssl_assert(set_result == 1) + + def get_pubkey(self) -> PKey: + """ + Get the public key of the certificate signing request. + + :return: The public key. + :rtype: :py:class:`PKey` + """ + pkey = PKey.__new__(PKey) + pkey._pkey = _lib.X509_REQ_get_pubkey(self._req) + _openssl_assert(pkey._pkey != _ffi.NULL) + pkey._pkey = _ffi.gc(pkey._pkey, _lib.EVP_PKEY_free) + pkey._only_public = True + return pkey + + def set_version(self, version: int) -> None: + """ + Set the version subfield (RFC 2986, section 4.1) of the certificate + request. + + :param int version: The version number. + :return: ``None`` + """ + if not isinstance(version, int): + raise TypeError("version must be an int") + if version != 0: + raise ValueError( + "Invalid version. The only valid version for X509Req is 0." + ) + set_result = _lib.X509_REQ_set_version(self._req, version) + _openssl_assert(set_result == 1) + + def get_version(self) -> int: + """ + Get the version subfield (RFC 2459, section 4.1.2.1) of the certificate + request. + + :return: The value of the version subfield. + :rtype: :py:class:`int` + """ + return _lib.X509_REQ_get_version(self._req) + + def get_subject(self) -> X509Name: + """ + Return the subject of this certificate signing request. + + This creates a new :class:`X509Name` that wraps the underlying subject + name field on the certificate signing request. Modifying it will modify + the underlying signing request, and will have the effect of modifying + any other :class:`X509Name` that refers to this subject. + + :return: The subject of this certificate signing request. + :rtype: :class:`X509Name` + """ + name = X509Name.__new__(X509Name) + name._name = _lib.X509_REQ_get_subject_name(self._req) + _openssl_assert(name._name != _ffi.NULL) + + # The name is owned by the X509Req structure. As long as the X509Name + # Python object is alive, keep the X509Req Python object alive. + name._owner = self + + return name + + def add_extensions( + self, extensions: Iterable[_X509ExtensionInternal] + ) -> None: + """ + Add extensions to the certificate signing request. + + :param extensions: The X.509 extensions to add. + :type extensions: iterable of :py:class:`X509Extension` + :return: ``None`` + """ + warnings.warn( + ( + "This API is deprecated and will be removed in a future " + "version of pyOpenSSL. You should use pyca/cryptography's " + "X.509 APIs instead." + ), + DeprecationWarning, + stacklevel=2, + ) + + stack = _lib.sk_X509_EXTENSION_new_null() + _openssl_assert(stack != _ffi.NULL) + + stack = _ffi.gc(stack, _lib.sk_X509_EXTENSION_free) + + for ext in extensions: + if not isinstance(ext, _X509ExtensionInternal): + raise ValueError("One of the elements is not an X509Extension") + + # TODO push can fail (here and elsewhere) + _lib.sk_X509_EXTENSION_push(stack, ext._extension) + + add_result = _lib.X509_REQ_add_extensions(self._req, stack) + _openssl_assert(add_result == 1) + + def get_extensions(self) -> list[_X509ExtensionInternal]: + """ + Get X.509 extensions in the certificate signing request. + + :return: The X.509 extensions in this request. + :rtype: :py:class:`list` of :py:class:`X509Extension` objects. + + .. versionadded:: 0.15 + """ + warnings.warn( + ( + "This API is deprecated and will be removed in a future " + "version of pyOpenSSL. You should use pyca/cryptography's " + "X.509 APIs instead." + ), + DeprecationWarning, + stacklevel=2, + ) + + exts = [] + native_exts_obj = _lib.X509_REQ_get_extensions(self._req) + native_exts_obj = _ffi.gc( + native_exts_obj, + lambda x: _lib.sk_X509_EXTENSION_pop_free( + x, + _ffi.addressof(_lib._original_lib, "X509_EXTENSION_free"), + ), + ) + + for i in range(_lib.sk_X509_EXTENSION_num(native_exts_obj)): + ext = _X509ExtensionInternal.__new__(_X509ExtensionInternal) + extension = _lib.X509_EXTENSION_dup( + _lib.sk_X509_EXTENSION_value(native_exts_obj, i) + ) + ext._extension = _ffi.gc(extension, _lib.X509_EXTENSION_free) + exts.append(ext) + return exts + + def sign(self, pkey: PKey, digest: str) -> None: + """ + Sign the certificate signing request with this key and digest type. + + :param pkey: The key pair to sign with. + :type pkey: :py:class:`PKey` + :param digest: The name of the message digest to use for the signature, + e.g. :py:data:`"sha256"`. + :type digest: :py:class:`str` + :return: ``None`` + """ + if pkey._only_public: + raise ValueError("Key has only public part") + + if not pkey._initialized: + raise ValueError("Key is uninitialized") + + digest_obj = _lib.EVP_get_digestbyname(_byte_string(digest)) + if digest_obj == _ffi.NULL: + raise ValueError("No such digest method") + + sign_result = _lib.X509_REQ_sign(self._req, pkey._pkey, digest_obj) + _openssl_assert(sign_result > 0) + + def verify(self, pkey: PKey) -> bool: + """ + Verifies the signature on this certificate signing request. + + :param PKey key: A public key. + + :return: ``True`` if the signature is correct. + :rtype: bool + + :raises OpenSSL.crypto.Error: If the signature is invalid or there is a + problem verifying the signature. + """ + if not isinstance(pkey, PKey): + raise TypeError("pkey must be a PKey instance") + + result = _lib.X509_REQ_verify(self._req, pkey._pkey) + if result <= 0: + _raise_current_error() + + return result + + +_X509ReqInternal = X509Req + +utils.deprecated( + X509Req, + __name__, + ( + "CSR support in pyOpenSSL is deprecated. You should use the APIs " + "in cryptography." + ), + DeprecationWarning, + name="X509Req", +) + + +class X509: + """ + An X.509 certificate. + """ + + def __init__(self) -> None: + x509 = _lib.X509_new() + _openssl_assert(x509 != _ffi.NULL) + self._x509 = _ffi.gc(x509, _lib.X509_free) + + self._issuer_invalidator = _X509NameInvalidator() + self._subject_invalidator = _X509NameInvalidator() + + @classmethod + def _from_raw_x509_ptr(cls, x509: Any) -> X509: + cert = cls.__new__(cls) + cert._x509 = _ffi.gc(x509, _lib.X509_free) + cert._issuer_invalidator = _X509NameInvalidator() + cert._subject_invalidator = _X509NameInvalidator() + return cert + + def to_cryptography(self) -> x509.Certificate: + """ + Export as a ``cryptography`` certificate. + + :rtype: ``cryptography.x509.Certificate`` + + .. versionadded:: 17.1.0 + """ + from cryptography.x509 import load_der_x509_certificate + + der = dump_certificate(FILETYPE_ASN1, self) + return load_der_x509_certificate(der) + + @classmethod + def from_cryptography(cls, crypto_cert: x509.Certificate) -> X509: + """ + Construct based on a ``cryptography`` *crypto_cert*. + + :param crypto_key: A ``cryptography`` X.509 certificate. + :type crypto_key: ``cryptography.x509.Certificate`` + + :rtype: X509 + + .. versionadded:: 17.1.0 + """ + if not isinstance(crypto_cert, x509.Certificate): + raise TypeError("Must be a certificate") + + from cryptography.hazmat.primitives.serialization import Encoding + + der = crypto_cert.public_bytes(Encoding.DER) + return load_certificate(FILETYPE_ASN1, der) + + def set_version(self, version: int) -> None: + """ + Set the version number of the certificate. Note that the + version value is zero-based, eg. a value of 0 is V1. + + :param version: The version number of the certificate. + :type version: :py:class:`int` + + :return: ``None`` + """ + if not isinstance(version, int): + raise TypeError("version must be an integer") + + _openssl_assert(_lib.X509_set_version(self._x509, version) == 1) + + def get_version(self) -> int: + """ + Return the version number of the certificate. + + :return: The version number of the certificate. + :rtype: :py:class:`int` + """ + return _lib.X509_get_version(self._x509) + + def get_pubkey(self) -> PKey: + """ + Get the public key of the certificate. + + :return: The public key. + :rtype: :py:class:`PKey` + """ + pkey = PKey.__new__(PKey) + pkey._pkey = _lib.X509_get_pubkey(self._x509) + if pkey._pkey == _ffi.NULL: + _raise_current_error() + pkey._pkey = _ffi.gc(pkey._pkey, _lib.EVP_PKEY_free) + pkey._only_public = True + return pkey + + def set_pubkey(self, pkey: PKey) -> None: + """ + Set the public key of the certificate. + + :param pkey: The public key. + :type pkey: :py:class:`PKey` + + :return: :py:data:`None` + """ + if not isinstance(pkey, PKey): + raise TypeError("pkey must be a PKey instance") + + set_result = _lib.X509_set_pubkey(self._x509, pkey._pkey) + _openssl_assert(set_result == 1) + + def sign(self, pkey: PKey, digest: str) -> None: + """ + Sign the certificate with this key and digest type. + + :param pkey: The key to sign with. + :type pkey: :py:class:`PKey` + + :param digest: The name of the message digest to use. + :type digest: :py:class:`str` + + :return: :py:data:`None` + """ + if not isinstance(pkey, PKey): + raise TypeError("pkey must be a PKey instance") + + if pkey._only_public: + raise ValueError("Key only has public part") + + if not pkey._initialized: + raise ValueError("Key is uninitialized") + + evp_md = _lib.EVP_get_digestbyname(_byte_string(digest)) + if evp_md == _ffi.NULL: + raise ValueError("No such digest method") + + sign_result = _lib.X509_sign(self._x509, pkey._pkey, evp_md) + _openssl_assert(sign_result > 0) + + def get_signature_algorithm(self) -> bytes: + """ + Return the signature algorithm used in the certificate. + + :return: The name of the algorithm. + :rtype: :py:class:`bytes` + + :raises ValueError: If the signature algorithm is undefined. + + .. versionadded:: 0.13 + """ + sig_alg = _lib.X509_get0_tbs_sigalg(self._x509) + alg = _ffi.new("ASN1_OBJECT **") + _lib.X509_ALGOR_get0(alg, _ffi.NULL, _ffi.NULL, sig_alg) + nid = _lib.OBJ_obj2nid(alg[0]) + if nid == _lib.NID_undef: + raise ValueError("Undefined signature algorithm") + return _ffi.string(_lib.OBJ_nid2ln(nid)) + + def digest(self, digest_name: str) -> bytes: + """ + Return the digest of the X509 object. + + :param digest_name: The name of the digest algorithm to use. + :type digest_name: :py:class:`str` + + :return: The digest of the object, formatted as + :py:const:`b":"`-delimited hex pairs. + :rtype: :py:class:`bytes` + """ + digest = _lib.EVP_get_digestbyname(_byte_string(digest_name)) + if digest == _ffi.NULL: + raise ValueError("No such digest method") + + result_buffer = _ffi.new("unsigned char[]", _lib.EVP_MAX_MD_SIZE) + result_length = _ffi.new("unsigned int[]", 1) + result_length[0] = len(result_buffer) + + digest_result = _lib.X509_digest( + self._x509, digest, result_buffer, result_length + ) + _openssl_assert(digest_result == 1) + + return b":".join( + [ + b16encode(ch).upper() + for ch in _ffi.buffer(result_buffer, result_length[0]) + ] + ) + + def subject_name_hash(self) -> bytes: + """ + Return the hash of the X509 subject. + + :return: The hash of the subject. + :rtype: :py:class:`bytes` + """ + return _lib.X509_subject_name_hash(self._x509) + + def set_serial_number(self, serial: int) -> None: + """ + Set the serial number of the certificate. + + :param serial: The new serial number. + :type serial: :py:class:`int` + + :return: :py:data`None` + """ + if not isinstance(serial, int): + raise TypeError("serial must be an integer") + + hex_serial = hex(serial)[2:] + hex_serial_bytes = hex_serial.encode("ascii") + + bignum_serial = _ffi.new("BIGNUM**") + + # BN_hex2bn stores the result in &bignum. + result = _lib.BN_hex2bn(bignum_serial, hex_serial_bytes) + _openssl_assert(result != _ffi.NULL) + + asn1_serial = _lib.BN_to_ASN1_INTEGER(bignum_serial[0], _ffi.NULL) + _lib.BN_free(bignum_serial[0]) + _openssl_assert(asn1_serial != _ffi.NULL) + asn1_serial = _ffi.gc(asn1_serial, _lib.ASN1_INTEGER_free) + set_result = _lib.X509_set_serialNumber(self._x509, asn1_serial) + _openssl_assert(set_result == 1) + + def get_serial_number(self) -> int: + """ + Return the serial number of this certificate. + + :return: The serial number. + :rtype: int + """ + asn1_serial = _lib.X509_get_serialNumber(self._x509) + bignum_serial = _lib.ASN1_INTEGER_to_BN(asn1_serial, _ffi.NULL) + try: + hex_serial = _lib.BN_bn2hex(bignum_serial) + try: + hexstring_serial = _ffi.string(hex_serial) + serial = int(hexstring_serial, 16) + return serial + finally: + _lib.OPENSSL_free(hex_serial) + finally: + _lib.BN_free(bignum_serial) + + def gmtime_adj_notAfter(self, amount: int) -> None: + """ + Adjust the time stamp on which the certificate stops being valid. + + :param int amount: The number of seconds by which to adjust the + timestamp. + :return: ``None`` + """ + if not isinstance(amount, int): + raise TypeError("amount must be an integer") + + notAfter = _lib.X509_getm_notAfter(self._x509) + _lib.X509_gmtime_adj(notAfter, amount) + + def gmtime_adj_notBefore(self, amount: int) -> None: + """ + Adjust the timestamp on which the certificate starts being valid. + + :param amount: The number of seconds by which to adjust the timestamp. + :return: ``None`` + """ + if not isinstance(amount, int): + raise TypeError("amount must be an integer") + + notBefore = _lib.X509_getm_notBefore(self._x509) + _lib.X509_gmtime_adj(notBefore, amount) + + def has_expired(self) -> bool: + """ + Check whether the certificate has expired. + + :return: ``True`` if the certificate has expired, ``False`` otherwise. + :rtype: bool + """ + time_bytes = self.get_notAfter() + if time_bytes is None: + raise ValueError("Unable to determine notAfter") + time_string = time_bytes.decode("utf-8") + not_after = datetime.datetime.strptime(time_string, "%Y%m%d%H%M%SZ") + + UTC = datetime.timezone.utc + utcnow = datetime.datetime.now(UTC).replace(tzinfo=None) + return not_after < utcnow + + def _get_boundary_time(self, which: Any) -> bytes | None: + return _get_asn1_time(which(self._x509)) + + def get_notBefore(self) -> bytes | None: + """ + Get the timestamp at which the certificate starts being valid. + + The timestamp is formatted as an ASN.1 TIME:: + + YYYYMMDDhhmmssZ + + :return: A timestamp string, or ``None`` if there is none. + :rtype: bytes or NoneType + """ + return self._get_boundary_time(_lib.X509_getm_notBefore) + + def _set_boundary_time( + self, which: Callable[..., Any], when: bytes + ) -> None: + return _set_asn1_time(which(self._x509), when) + + def set_notBefore(self, when: bytes) -> None: + """ + Set the timestamp at which the certificate starts being valid. + + The timestamp is formatted as an ASN.1 TIME:: + + YYYYMMDDhhmmssZ + + :param bytes when: A timestamp string. + :return: ``None`` + """ + return self._set_boundary_time(_lib.X509_getm_notBefore, when) + + def get_notAfter(self) -> bytes | None: + """ + Get the timestamp at which the certificate stops being valid. + + The timestamp is formatted as an ASN.1 TIME:: + + YYYYMMDDhhmmssZ + + :return: A timestamp string, or ``None`` if there is none. + :rtype: bytes or NoneType + """ + return self._get_boundary_time(_lib.X509_getm_notAfter) + + def set_notAfter(self, when: bytes) -> None: + """ + Set the timestamp at which the certificate stops being valid. + + The timestamp is formatted as an ASN.1 TIME:: + + YYYYMMDDhhmmssZ + + :param bytes when: A timestamp string. + :return: ``None`` + """ + return self._set_boundary_time(_lib.X509_getm_notAfter, when) + + def _get_name(self, which: Any) -> X509Name: + name = X509Name.__new__(X509Name) + name._name = which(self._x509) + _openssl_assert(name._name != _ffi.NULL) + + # The name is owned by the X509 structure. As long as the X509Name + # Python object is alive, keep the X509 Python object alive. + name._owner = self + + return name + + def _set_name(self, which: Any, name: X509Name) -> None: + if not isinstance(name, X509Name): + raise TypeError("name must be an X509Name") + set_result = which(self._x509, name._name) + _openssl_assert(set_result == 1) + + def get_issuer(self) -> X509Name: + """ + Return the issuer of this certificate. + + This creates a new :class:`X509Name` that wraps the underlying issuer + name field on the certificate. Modifying it will modify the underlying + certificate, and will have the effect of modifying any other + :class:`X509Name` that refers to this issuer. + + :return: The issuer of this certificate. + :rtype: :class:`X509Name` + """ + name = self._get_name(_lib.X509_get_issuer_name) + self._issuer_invalidator.add(name) + return name + + def set_issuer(self, issuer: X509Name) -> None: + """ + Set the issuer of this certificate. + + :param issuer: The issuer. + :type issuer: :py:class:`X509Name` + + :return: ``None`` + """ + self._set_name(_lib.X509_set_issuer_name, issuer) + self._issuer_invalidator.clear() + + def get_subject(self) -> X509Name: + """ + Return the subject of this certificate. + + This creates a new :class:`X509Name` that wraps the underlying subject + name field on the certificate. Modifying it will modify the underlying + certificate, and will have the effect of modifying any other + :class:`X509Name` that refers to this subject. + + :return: The subject of this certificate. + :rtype: :class:`X509Name` + """ + name = self._get_name(_lib.X509_get_subject_name) + self._subject_invalidator.add(name) + return name + + def set_subject(self, subject: X509Name) -> None: + """ + Set the subject of this certificate. + + :param subject: The subject. + :type subject: :py:class:`X509Name` + + :return: ``None`` + """ + self._set_name(_lib.X509_set_subject_name, subject) + self._subject_invalidator.clear() + + def get_extension_count(self) -> int: + """ + Get the number of extensions on this certificate. + + :return: The number of extensions. + :rtype: :py:class:`int` + + .. versionadded:: 0.12 + """ + return _lib.X509_get_ext_count(self._x509) + + def add_extensions( + self, extensions: Iterable[_X509ExtensionInternal] + ) -> None: + """ + Add extensions to the certificate. + + :param extensions: The extensions to add. + :type extensions: An iterable of :py:class:`X509Extension` objects. + :return: ``None`` + """ + warnings.warn( + ( + "This API is deprecated and will be removed in a future " + "version of pyOpenSSL. You should use pyca/cryptography's " + "X.509 APIs instead." + ), + DeprecationWarning, + stacklevel=2, + ) + + for ext in extensions: + if not isinstance(ext, _X509ExtensionInternal): + raise ValueError("One of the elements is not an X509Extension") + + add_result = _lib.X509_add_ext(self._x509, ext._extension, -1) + _openssl_assert(add_result == 1) + + def get_extension(self, index: int) -> _X509ExtensionInternal: + """ + Get a specific extension of the certificate by index. + + Extensions on a certificate are kept in order. The index + parameter selects which extension will be returned. + + :param int index: The index of the extension to retrieve. + :return: The extension at the specified index. + :rtype: :py:class:`X509Extension` + :raises IndexError: If the extension index was out of bounds. + + .. versionadded:: 0.12 + """ + warnings.warn( + ( + "This API is deprecated and will be removed in a future " + "version of pyOpenSSL. You should use pyca/cryptography's " + "X.509 APIs instead." + ), + DeprecationWarning, + stacklevel=2, + ) + + ext = _X509ExtensionInternal.__new__(_X509ExtensionInternal) + ext._extension = _lib.X509_get_ext(self._x509, index) + if ext._extension == _ffi.NULL: + raise IndexError("extension index out of bounds") + + extension = _lib.X509_EXTENSION_dup(ext._extension) + ext._extension = _ffi.gc(extension, _lib.X509_EXTENSION_free) + return ext + + +class X509StoreFlags: + """ + Flags for X509 verification, used to change the behavior of + :class:`X509Store`. + + See `OpenSSL Verification Flags`_ for details. + + .. _OpenSSL Verification Flags: + https://www.openssl.org/docs/manmaster/man3/X509_VERIFY_PARAM_set_flags.html + """ + + CRL_CHECK: int = _lib.X509_V_FLAG_CRL_CHECK + CRL_CHECK_ALL: int = _lib.X509_V_FLAG_CRL_CHECK_ALL + IGNORE_CRITICAL: int = _lib.X509_V_FLAG_IGNORE_CRITICAL + X509_STRICT: int = _lib.X509_V_FLAG_X509_STRICT + ALLOW_PROXY_CERTS: int = _lib.X509_V_FLAG_ALLOW_PROXY_CERTS + POLICY_CHECK: int = _lib.X509_V_FLAG_POLICY_CHECK + EXPLICIT_POLICY: int = _lib.X509_V_FLAG_EXPLICIT_POLICY + INHIBIT_MAP: int = _lib.X509_V_FLAG_INHIBIT_MAP + CHECK_SS_SIGNATURE: int = _lib.X509_V_FLAG_CHECK_SS_SIGNATURE + PARTIAL_CHAIN: int = _lib.X509_V_FLAG_PARTIAL_CHAIN + + +class X509Store: + """ + An X.509 store. + + An X.509 store is used to describe a context in which to verify a + certificate. A description of a context may include a set of certificates + to trust, a set of certificate revocation lists, verification flags and + more. + + An X.509 store, being only a description, cannot be used by itself to + verify a certificate. To carry out the actual verification process, see + :class:`X509StoreContext`. + """ + + def __init__(self) -> None: + store = _lib.X509_STORE_new() + self._store = _ffi.gc(store, _lib.X509_STORE_free) + + def add_cert(self, cert: X509) -> None: + """ + Adds a trusted certificate to this store. + + Adding a certificate with this method adds this certificate as a + *trusted* certificate. + + :param X509 cert: The certificate to add to this store. + + :raises TypeError: If the certificate is not an :class:`X509`. + + :raises OpenSSL.crypto.Error: If OpenSSL was unhappy with your + certificate. + + :return: ``None`` if the certificate was added successfully. + """ + if not isinstance(cert, X509): + raise TypeError() + + res = _lib.X509_STORE_add_cert(self._store, cert._x509) + _openssl_assert(res == 1) + + def add_crl(self, crl: x509.CertificateRevocationList) -> None: + """ + Add a certificate revocation list to this store. + + The certificate revocation lists added to a store will only be used if + the associated flags are configured to check certificate revocation + lists. + + .. versionadded:: 16.1.0 + + :param crl: The certificate revocation list to add to this store. + :type crl: ``cryptography.x509.CertificateRevocationList`` + :return: ``None`` if the certificate revocation list was added + successfully. + """ + if isinstance(crl, x509.CertificateRevocationList): + from cryptography.hazmat.primitives.serialization import Encoding + + bio = _new_mem_buf(crl.public_bytes(Encoding.DER)) + openssl_crl = _lib.d2i_X509_CRL_bio(bio, _ffi.NULL) + _openssl_assert(openssl_crl != _ffi.NULL) + crl = _ffi.gc(openssl_crl, _lib.X509_CRL_free) + else: + raise TypeError( + "CRL must be of type " + "cryptography.x509.CertificateRevocationList" + ) + + _openssl_assert(_lib.X509_STORE_add_crl(self._store, crl) != 0) + + def set_flags(self, flags: int) -> None: + """ + Set verification flags to this store. + + Verification flags can be combined by oring them together. + + .. note:: + + Setting a verification flag sometimes requires clients to add + additional information to the store, otherwise a suitable error will + be raised. + + For example, in setting flags to enable CRL checking a + suitable CRL must be added to the store otherwise an error will be + raised. + + .. versionadded:: 16.1.0 + + :param int flags: The verification flags to set on this store. + See :class:`X509StoreFlags` for available constants. + :return: ``None`` if the verification flags were successfully set. + """ + _openssl_assert(_lib.X509_STORE_set_flags(self._store, flags) != 0) + + def set_time(self, vfy_time: datetime.datetime) -> None: + """ + Set the time against which the certificates are verified. + + Normally the current time is used. + + .. note:: + + For example, you can determine if a certificate was valid at a given + time. + + .. versionadded:: 17.0.0 + + :param datetime vfy_time: The verification time to set on this store. + :return: ``None`` if the verification time was successfully set. + """ + param = _lib.X509_VERIFY_PARAM_new() + param = _ffi.gc(param, _lib.X509_VERIFY_PARAM_free) + + _lib.X509_VERIFY_PARAM_set_time( + param, calendar.timegm(vfy_time.timetuple()) + ) + _openssl_assert(_lib.X509_STORE_set1_param(self._store, param) != 0) + + def load_locations( + self, cafile: StrOrBytesPath, capath: StrOrBytesPath | None = None + ) -> None: + """ + Let X509Store know where we can find trusted certificates for the + certificate chain. Note that the certificates have to be in PEM + format. + + If *capath* is passed, it must be a directory prepared using the + ``c_rehash`` tool included with OpenSSL. Either, but not both, of + *cafile* or *capath* may be ``None``. + + .. note:: + + Both *cafile* and *capath* may be set simultaneously. + + Call this method multiple times to add more than one location. + For example, CA certificates, and certificate revocation list bundles + may be passed in *cafile* in subsequent calls to this method. + + .. versionadded:: 20.0 + + :param cafile: In which file we can find the certificates (``bytes`` or + ``unicode``). + :param capath: In which directory we can find the certificates + (``bytes`` or ``unicode``). + + :return: ``None`` if the locations were set successfully. + + :raises OpenSSL.crypto.Error: If both *cafile* and *capath* is ``None`` + or the locations could not be set for any reason. + + """ + if cafile is None: + cafile = _ffi.NULL + else: + cafile = _path_bytes(cafile) + + if capath is None: + capath = _ffi.NULL + else: + capath = _path_bytes(capath) + + load_result = _lib.X509_STORE_load_locations( + self._store, cafile, capath + ) + if not load_result: + _raise_current_error() + + +class X509StoreContextError(Exception): + """ + An exception raised when an error occurred while verifying a certificate + using `OpenSSL.X509StoreContext.verify_certificate`. + + :ivar certificate: The certificate which caused verificate failure. + :type certificate: :class:`X509` + """ + + def __init__( + self, message: str, errors: list[Any], certificate: X509 + ) -> None: + super().__init__(message) + self.errors = errors + self.certificate = certificate + + +class X509StoreContext: + """ + An X.509 store context. + + An X.509 store context is used to carry out the actual verification process + of a certificate in a described context. For describing such a context, see + :class:`X509Store`. + + :param X509Store store: The certificates which will be trusted for the + purposes of any verifications. + :param X509 certificate: The certificate to be verified. + :param chain: List of untrusted certificates that may be used for building + the certificate chain. May be ``None``. + :type chain: :class:`list` of :class:`X509` + """ + + def __init__( + self, + store: X509Store, + certificate: X509, + chain: Sequence[X509] | None = None, + ) -> None: + self._store = store + self._cert = certificate + self._chain = self._build_certificate_stack(chain) + + @staticmethod + def _build_certificate_stack( + certificates: Sequence[X509] | None, + ) -> None: + def cleanup(s: Any) -> None: + # Equivalent to sk_X509_pop_free, but we don't + # currently have a CFFI binding for that available + for i in range(_lib.sk_X509_num(s)): + x = _lib.sk_X509_value(s, i) + _lib.X509_free(x) + _lib.sk_X509_free(s) + + if certificates is None or len(certificates) == 0: + return _ffi.NULL + + stack = _lib.sk_X509_new_null() + _openssl_assert(stack != _ffi.NULL) + stack = _ffi.gc(stack, cleanup) + + for cert in certificates: + if not isinstance(cert, X509): + raise TypeError("One of the elements is not an X509 instance") + + _openssl_assert(_lib.X509_up_ref(cert._x509) > 0) + if _lib.sk_X509_push(stack, cert._x509) <= 0: + _lib.X509_free(cert._x509) + _raise_current_error() + + return stack + + @staticmethod + def _exception_from_context(store_ctx: Any) -> X509StoreContextError: + """ + Convert an OpenSSL native context error failure into a Python + exception. + + When a call to native OpenSSL X509_verify_cert fails, additional + information about the failure can be obtained from the store context. + """ + message = _ffi.string( + _lib.X509_verify_cert_error_string( + _lib.X509_STORE_CTX_get_error(store_ctx) + ) + ).decode("utf-8") + errors = [ + _lib.X509_STORE_CTX_get_error(store_ctx), + _lib.X509_STORE_CTX_get_error_depth(store_ctx), + message, + ] + # A context error should always be associated with a certificate, so we + # expect this call to never return :class:`None`. + _x509 = _lib.X509_STORE_CTX_get_current_cert(store_ctx) + _cert = _lib.X509_dup(_x509) + pycert = X509._from_raw_x509_ptr(_cert) + return X509StoreContextError(message, errors, pycert) + + def _verify_certificate(self) -> Any: + """ + Verifies the certificate and runs an X509_STORE_CTX containing the + results. + + :raises X509StoreContextError: If an error occurred when validating a + certificate in the context. Sets ``certificate`` attribute to + indicate which certificate caused the error. + """ + store_ctx = _lib.X509_STORE_CTX_new() + _openssl_assert(store_ctx != _ffi.NULL) + store_ctx = _ffi.gc(store_ctx, _lib.X509_STORE_CTX_free) + + ret = _lib.X509_STORE_CTX_init( + store_ctx, self._store._store, self._cert._x509, self._chain + ) + _openssl_assert(ret == 1) + + ret = _lib.X509_verify_cert(store_ctx) + if ret <= 0: + raise self._exception_from_context(store_ctx) + + return store_ctx + + def set_store(self, store: X509Store) -> None: + """ + Set the context's X.509 store. + + .. versionadded:: 0.15 + + :param X509Store store: The store description which will be used for + the purposes of any *future* verifications. + """ + self._store = store + + def verify_certificate(self) -> None: + """ + Verify a certificate in a context. + + .. versionadded:: 0.15 + + :raises X509StoreContextError: If an error occurred when validating a + certificate in the context. Sets ``certificate`` attribute to + indicate which certificate caused the error. + """ + self._verify_certificate() + + def get_verified_chain(self) -> list[X509]: + """ + Verify a certificate in a context and return the complete validated + chain. + + :raises X509StoreContextError: If an error occurred when validating a + certificate in the context. Sets ``certificate`` attribute to + indicate which certificate caused the error. + + .. versionadded:: 20.0 + """ + store_ctx = self._verify_certificate() + + # Note: X509_STORE_CTX_get1_chain returns a deep copy of the chain. + cert_stack = _lib.X509_STORE_CTX_get1_chain(store_ctx) + _openssl_assert(cert_stack != _ffi.NULL) + + result = [] + for i in range(_lib.sk_X509_num(cert_stack)): + cert = _lib.sk_X509_value(cert_stack, i) + _openssl_assert(cert != _ffi.NULL) + pycert = X509._from_raw_x509_ptr(cert) + result.append(pycert) + + # Free the stack but not the members which are freed by the X509 class. + _lib.sk_X509_free(cert_stack) + return result + + +def load_certificate(type: int, buffer: bytes) -> X509: + """ + Load a certificate (X509) from the string *buffer* encoded with the + type *type*. + + :param type: The file type (one of FILETYPE_PEM, FILETYPE_ASN1) + + :param bytes buffer: The buffer the certificate is stored in + + :return: The X509 object + """ + if isinstance(buffer, str): + buffer = buffer.encode("ascii") + + bio = _new_mem_buf(buffer) + + if type == FILETYPE_PEM: + x509 = _lib.PEM_read_bio_X509(bio, _ffi.NULL, _ffi.NULL, _ffi.NULL) + elif type == FILETYPE_ASN1: + x509 = _lib.d2i_X509_bio(bio, _ffi.NULL) + else: + raise ValueError("type argument must be FILETYPE_PEM or FILETYPE_ASN1") + + if x509 == _ffi.NULL: + _raise_current_error() + + return X509._from_raw_x509_ptr(x509) + + +def dump_certificate(type: int, cert: X509) -> bytes: + """ + Dump the certificate *cert* into a buffer string encoded with the type + *type*. + + :param type: The file type (one of FILETYPE_PEM, FILETYPE_ASN1, or + FILETYPE_TEXT) + :param cert: The certificate to dump + :return: The buffer with the dumped certificate in + """ + bio = _new_mem_buf() + + if type == FILETYPE_PEM: + result_code = _lib.PEM_write_bio_X509(bio, cert._x509) + elif type == FILETYPE_ASN1: + result_code = _lib.i2d_X509_bio(bio, cert._x509) + elif type == FILETYPE_TEXT: + result_code = _lib.X509_print_ex(bio, cert._x509, 0, 0) + else: + raise ValueError( + "type argument must be FILETYPE_PEM, FILETYPE_ASN1, or " + "FILETYPE_TEXT" + ) + + _openssl_assert(result_code == 1) + return _bio_to_string(bio) + + +def dump_publickey(type: int, pkey: PKey) -> bytes: + """ + Dump a public key to a buffer. + + :param type: The file type (one of :data:`FILETYPE_PEM` or + :data:`FILETYPE_ASN1`). + :param PKey pkey: The public key to dump + :return: The buffer with the dumped key in it. + :rtype: bytes + """ + bio = _new_mem_buf() + if type == FILETYPE_PEM: + write_bio = _lib.PEM_write_bio_PUBKEY + elif type == FILETYPE_ASN1: + write_bio = _lib.i2d_PUBKEY_bio + else: + raise ValueError("type argument must be FILETYPE_PEM or FILETYPE_ASN1") + + result_code = write_bio(bio, pkey._pkey) + if result_code != 1: # pragma: no cover + _raise_current_error() + + return _bio_to_string(bio) + + +def dump_privatekey( + type: int, + pkey: PKey, + cipher: str | None = None, + passphrase: PassphraseCallableT | None = None, +) -> bytes: + """ + Dump the private key *pkey* into a buffer string encoded with the type + *type*. Optionally (if *type* is :const:`FILETYPE_PEM`) encrypting it + using *cipher* and *passphrase*. + + :param type: The file type (one of :const:`FILETYPE_PEM`, + :const:`FILETYPE_ASN1`, or :const:`FILETYPE_TEXT`) + :param PKey pkey: The PKey to dump + :param cipher: (optional) if encrypted PEM format, the cipher to use + :param passphrase: (optional) if encrypted PEM format, this can be either + the passphrase to use, or a callback for providing the passphrase. + + :return: The buffer with the dumped key in + :rtype: bytes + """ + bio = _new_mem_buf() + + if not isinstance(pkey, PKey): + raise TypeError("pkey must be a PKey") + + if cipher is not None: + if passphrase is None: + raise TypeError( + "if a value is given for cipher " + "one must also be given for passphrase" + ) + cipher_obj = _lib.EVP_get_cipherbyname(_byte_string(cipher)) + if cipher_obj == _ffi.NULL: + raise ValueError("Invalid cipher name") + else: + cipher_obj = _ffi.NULL + + helper = _PassphraseHelper(type, passphrase) + if type == FILETYPE_PEM: + result_code = _lib.PEM_write_bio_PrivateKey( + bio, + pkey._pkey, + cipher_obj, + _ffi.NULL, + 0, + helper.callback, + helper.callback_args, + ) + helper.raise_if_problem() + elif type == FILETYPE_ASN1: + result_code = _lib.i2d_PrivateKey_bio(bio, pkey._pkey) + elif type == FILETYPE_TEXT: + if _lib.EVP_PKEY_id(pkey._pkey) != _lib.EVP_PKEY_RSA: + raise TypeError("Only RSA keys are supported for FILETYPE_TEXT") + + rsa = _ffi.gc(_lib.EVP_PKEY_get1_RSA(pkey._pkey), _lib.RSA_free) + result_code = _lib.RSA_print(bio, rsa, 0) + else: + raise ValueError( + "type argument must be FILETYPE_PEM, FILETYPE_ASN1, or " + "FILETYPE_TEXT" + ) + + _openssl_assert(result_code != 0) + + return _bio_to_string(bio) + + +class _PassphraseHelper: + def __init__( + self, + type: int, + passphrase: PassphraseCallableT | None, + more_args: bool = False, + truncate: bool = False, + ) -> None: + if type != FILETYPE_PEM and passphrase is not None: + raise ValueError( + "only FILETYPE_PEM key format supports encryption" + ) + self._passphrase = passphrase + self._more_args = more_args + self._truncate = truncate + self._problems: list[Exception] = [] + + @property + def callback(self) -> Any: + if self._passphrase is None: + return _ffi.NULL + elif isinstance(self._passphrase, bytes) or callable(self._passphrase): + return _ffi.callback("pem_password_cb", self._read_passphrase) + else: + raise TypeError( + "Last argument must be a byte string or a callable." + ) + + @property + def callback_args(self) -> Any: + if self._passphrase is None: + return _ffi.NULL + elif isinstance(self._passphrase, bytes) or callable(self._passphrase): + return _ffi.NULL + else: + raise TypeError( + "Last argument must be a byte string or a callable." + ) + + def raise_if_problem(self, exceptionType: type[Exception] = Error) -> None: + if self._problems: + # Flush the OpenSSL error queue + try: + _exception_from_error_queue(exceptionType) + except exceptionType: + pass + + raise self._problems.pop(0) + + def _read_passphrase( + self, buf: Any, size: int, rwflag: Any, userdata: Any + ) -> int: + try: + if callable(self._passphrase): + if self._more_args: + result = self._passphrase(size, rwflag, userdata) + else: + result = self._passphrase(rwflag) + else: + assert self._passphrase is not None + result = self._passphrase + if not isinstance(result, bytes): + raise ValueError("Bytes expected") + if len(result) > size: + if self._truncate: + result = result[:size] + else: + raise ValueError( + "passphrase returned by callback is too long" + ) + for i in range(len(result)): + buf[i] = result[i : i + 1] + return len(result) + except Exception as e: + self._problems.append(e) + return 0 + + +def load_publickey(type: int, buffer: str | bytes) -> PKey: + """ + Load a public key from a buffer. + + :param type: The file type (one of :data:`FILETYPE_PEM`, + :data:`FILETYPE_ASN1`). + :param buffer: The buffer the key is stored in. + :type buffer: A Python string object, either unicode or bytestring. + :return: The PKey object. + :rtype: :class:`PKey` + """ + if isinstance(buffer, str): + buffer = buffer.encode("ascii") + + bio = _new_mem_buf(buffer) + + if type == FILETYPE_PEM: + evp_pkey = _lib.PEM_read_bio_PUBKEY( + bio, _ffi.NULL, _ffi.NULL, _ffi.NULL + ) + elif type == FILETYPE_ASN1: + evp_pkey = _lib.d2i_PUBKEY_bio(bio, _ffi.NULL) + else: + raise ValueError("type argument must be FILETYPE_PEM or FILETYPE_ASN1") + + if evp_pkey == _ffi.NULL: + _raise_current_error() + + pkey = PKey.__new__(PKey) + pkey._pkey = _ffi.gc(evp_pkey, _lib.EVP_PKEY_free) + pkey._only_public = True + return pkey + + +def load_privatekey( + type: int, + buffer: str | bytes, + passphrase: PassphraseCallableT | None = None, +) -> PKey: + """ + Load a private key (PKey) from the string *buffer* encoded with the type + *type*. + + :param type: The file type (one of FILETYPE_PEM, FILETYPE_ASN1) + :param buffer: The buffer the key is stored in + :param passphrase: (optional) if encrypted PEM format, this can be + either the passphrase to use, or a callback for + providing the passphrase. + + :return: The PKey object + """ + if isinstance(buffer, str): + buffer = buffer.encode("ascii") + + bio = _new_mem_buf(buffer) + + helper = _PassphraseHelper(type, passphrase) + if type == FILETYPE_PEM: + evp_pkey = _lib.PEM_read_bio_PrivateKey( + bio, _ffi.NULL, helper.callback, helper.callback_args + ) + helper.raise_if_problem() + elif type == FILETYPE_ASN1: + evp_pkey = _lib.d2i_PrivateKey_bio(bio, _ffi.NULL) + else: + raise ValueError("type argument must be FILETYPE_PEM or FILETYPE_ASN1") + + if evp_pkey == _ffi.NULL: + _raise_current_error() + + pkey = PKey.__new__(PKey) + pkey._pkey = _ffi.gc(evp_pkey, _lib.EVP_PKEY_free) + return pkey + + +def dump_certificate_request(type: int, req: X509Req) -> bytes: + """ + Dump the certificate request *req* into a buffer string encoded with the + type *type*. + + :param type: The file type (one of FILETYPE_PEM, FILETYPE_ASN1) + :param req: The certificate request to dump + :return: The buffer with the dumped certificate request in + + + .. deprecated:: 24.2.0 + Use `cryptography.x509.CertificateSigningRequest` instead. + """ + bio = _new_mem_buf() + + if type == FILETYPE_PEM: + result_code = _lib.PEM_write_bio_X509_REQ(bio, req._req) + elif type == FILETYPE_ASN1: + result_code = _lib.i2d_X509_REQ_bio(bio, req._req) + elif type == FILETYPE_TEXT: + result_code = _lib.X509_REQ_print_ex(bio, req._req, 0, 0) + else: + raise ValueError( + "type argument must be FILETYPE_PEM, FILETYPE_ASN1, or " + "FILETYPE_TEXT" + ) + + _openssl_assert(result_code != 0) + + return _bio_to_string(bio) + + +_dump_certificate_request_internal = dump_certificate_request + +utils.deprecated( + dump_certificate_request, + __name__, + ( + "CSR support in pyOpenSSL is deprecated. You should use the APIs " + "in cryptography." + ), + DeprecationWarning, + name="dump_certificate_request", +) + + +def load_certificate_request(type: int, buffer: bytes) -> X509Req: + """ + Load a certificate request (X509Req) from the string *buffer* encoded with + the type *type*. + + :param type: The file type (one of FILETYPE_PEM, FILETYPE_ASN1) + :param buffer: The buffer the certificate request is stored in + :return: The X509Req object + + .. deprecated:: 24.2.0 + Use `cryptography.x509.load_der_x509_csr` or + `cryptography.x509.load_pem_x509_csr` instead. + """ + if isinstance(buffer, str): + buffer = buffer.encode("ascii") + + bio = _new_mem_buf(buffer) + + if type == FILETYPE_PEM: + req = _lib.PEM_read_bio_X509_REQ(bio, _ffi.NULL, _ffi.NULL, _ffi.NULL) + elif type == FILETYPE_ASN1: + req = _lib.d2i_X509_REQ_bio(bio, _ffi.NULL) + else: + raise ValueError("type argument must be FILETYPE_PEM or FILETYPE_ASN1") + + _openssl_assert(req != _ffi.NULL) + + x509req = _X509ReqInternal.__new__(_X509ReqInternal) + x509req._req = _ffi.gc(req, _lib.X509_REQ_free) + return x509req + + +_load_certificate_request_internal = load_certificate_request + +utils.deprecated( + load_certificate_request, + __name__, + ( + "CSR support in pyOpenSSL is deprecated. You should use the APIs " + "in cryptography." + ), + DeprecationWarning, + name="load_certificate_request", +) diff --git a/gestao_raul/Lib/site-packages/OpenSSL/debug.py b/gestao_raul/Lib/site-packages/OpenSSL/debug.py new file mode 100644 index 0000000..e0ed3f8 --- /dev/null +++ b/gestao_raul/Lib/site-packages/OpenSSL/debug.py @@ -0,0 +1,40 @@ +import ssl +import sys + +import cffi +import cryptography + +import OpenSSL.SSL + +from . import version + +_env_info = """\ +pyOpenSSL: {pyopenssl} +cryptography: {cryptography} +cffi: {cffi} +cryptography's compiled against OpenSSL: {crypto_openssl_compile} +cryptography's linked OpenSSL: {crypto_openssl_link} +Python's OpenSSL: {python_openssl} +Python executable: {python} +Python version: {python_version} +Platform: {platform} +sys.path: {sys_path}""".format( + pyopenssl=version.__version__, + crypto_openssl_compile=OpenSSL._util.ffi.string( + OpenSSL._util.lib.OPENSSL_VERSION_TEXT, + ).decode("ascii"), + crypto_openssl_link=OpenSSL.SSL.SSLeay_version( + OpenSSL.SSL.SSLEAY_VERSION + ).decode("ascii"), + python_openssl=getattr(ssl, "OPENSSL_VERSION", "n/a"), + cryptography=cryptography.__version__, + cffi=cffi.__version__, + python=sys.executable, + python_version=sys.version, + platform=sys.platform, + sys_path=sys.path, +) + + +if __name__ == "__main__": + print(_env_info) diff --git a/gestao_raul/Lib/site-packages/pip-23.0.1.dist-info/REQUESTED b/gestao_raul/Lib/site-packages/OpenSSL/py.typed similarity index 100% rename from gestao_raul/Lib/site-packages/pip-23.0.1.dist-info/REQUESTED rename to gestao_raul/Lib/site-packages/OpenSSL/py.typed diff --git a/gestao_raul/Lib/site-packages/OpenSSL/rand.py b/gestao_raul/Lib/site-packages/OpenSSL/rand.py new file mode 100644 index 0000000..0a9fac6 --- /dev/null +++ b/gestao_raul/Lib/site-packages/OpenSSL/rand.py @@ -0,0 +1,48 @@ +""" +PRNG management routines, thin wrappers. +""" + +import warnings + +from OpenSSL._util import lib as _lib + +warnings.warn( + "OpenSSL.rand is deprecated - you should use os.urandom instead", + DeprecationWarning, + stacklevel=3, +) + + +def add(buffer: bytes, entropy: int) -> None: + """ + Mix bytes from *string* into the PRNG state. + + The *entropy* argument is (the lower bound of) an estimate of how much + randomness is contained in *string*, measured in bytes. + + For more information, see e.g. :rfc:`1750`. + + This function is only relevant if you are forking Python processes and + need to reseed the CSPRNG after fork. + + :param buffer: Buffer with random data. + :param entropy: The entropy (in bytes) measurement of the buffer. + + :return: :obj:`None` + """ + if not isinstance(buffer, bytes): + raise TypeError("buffer must be a byte string") + + if not isinstance(entropy, int): + raise TypeError("entropy must be an integer") + + _lib.RAND_add(buffer, len(buffer), entropy) + + +def status() -> int: + """ + Check whether the PRNG has been seeded with enough data. + + :return: 1 if the PRNG is seeded enough, 0 otherwise. + """ + return _lib.RAND_status() diff --git a/gestao_raul/Lib/site-packages/OpenSSL/version.py b/gestao_raul/Lib/site-packages/OpenSSL/version.py new file mode 100644 index 0000000..9c80234 --- /dev/null +++ b/gestao_raul/Lib/site-packages/OpenSSL/version.py @@ -0,0 +1,28 @@ +# Copyright (C) AB Strakt +# Copyright (C) Jean-Paul Calderone +# See LICENSE for details. + +""" +pyOpenSSL - A simple wrapper around the OpenSSL library +""" + +__all__ = [ + "__author__", + "__copyright__", + "__email__", + "__license__", + "__summary__", + "__title__", + "__uri__", + "__version__", +] + +__version__ = "24.3.0" + +__title__ = "pyOpenSSL" +__uri__ = "https://pyopenssl.org/" +__summary__ = "Python wrapper module around the OpenSSL library" +__author__ = "The pyOpenSSL developers" +__email__ = "cryptography-dev@python.org" +__license__ = "Apache License, Version 2.0" +__copyright__ = f"Copyright 2001-2024 {__author__}" diff --git a/gestao_raul/Lib/site-packages/PIL/BlpImagePlugin.py b/gestao_raul/Lib/site-packages/PIL/BlpImagePlugin.py index e560563..c932b3b 100644 --- a/gestao_raul/Lib/site-packages/PIL/BlpImagePlugin.py +++ b/gestao_raul/Lib/site-packages/PIL/BlpImagePlugin.py @@ -259,21 +259,36 @@ class BlpImageFile(ImageFile.ImageFile): def _open(self) -> None: self.magic = self.fp.read(4) - - self.fp.seek(5, os.SEEK_CUR) - (self._blp_alpha_depth,) = struct.unpack(" tuple[int, int]: try: - self._read_blp_header() + self._read_header() self._load() except struct.error as e: msg = "Truncated BLP file" @@ -292,25 +307,9 @@ class _BLPBaseDecoder(ImageFile.PyDecoder): def _load(self) -> None: pass - def _read_blp_header(self) -> None: - assert self.fd is not None - self.fd.seek(4) - (self._blp_compression,) = struct.unpack(" None: + self._offsets = struct.unpack("<16I", self._safe_read(16 * 4)) + self._lengths = struct.unpack("<16I", self._safe_read(16 * 4)) def _safe_read(self, length: int) -> bytes: assert self.fd is not None @@ -326,9 +325,11 @@ class _BLPBaseDecoder(ImageFile.PyDecoder): ret.append((b, g, r, a)) return ret - def _read_bgra(self, palette: list[tuple[int, int, int, int]]) -> bytearray: + def _read_bgra( + self, palette: list[tuple[int, int, int, int]], alpha: bool + ) -> bytearray: data = bytearray() - _data = BytesIO(self._safe_read(self._blp_lengths[0])) + _data = BytesIO(self._safe_read(self._lengths[0])) while True: try: (offset,) = struct.unpack(" None: - if self._blp_compression == Format.JPEG: + self._compression, self._encoding, alpha = self.args + + if self._compression == Format.JPEG: self._decode_jpeg_stream() - elif self._blp_compression == 1: - if self._blp_encoding in (4, 5): + elif self._compression == 1: + if self._encoding in (4, 5): palette = self._read_palette() - data = self._read_bgra(palette) + data = self._read_bgra(palette, alpha) self.set_as_raw(data) else: - msg = f"Unsupported BLP encoding {repr(self._blp_encoding)}" + msg = f"Unsupported BLP encoding {repr(self._encoding)}" raise BLPFormatError(msg) else: - msg = f"Unsupported BLP compression {repr(self._blp_encoding)}" + msg = f"Unsupported BLP compression {repr(self._encoding)}" raise BLPFormatError(msg) def _decode_jpeg_stream(self) -> None: @@ -365,8 +368,8 @@ class BLP1Decoder(_BLPBaseDecoder): (jpeg_header_size,) = struct.unpack(" None: + self._compression, self._encoding, alpha, self._alpha_encoding = self.args + palette = self._read_palette() assert self.fd is not None - self.fd.seek(self._blp_offsets[0]) + self.fd.seek(self._offsets[0]) - if self._blp_compression == 1: + if self._compression == 1: # Uncompressed or DirectX compression - if self._blp_encoding == Encoding.UNCOMPRESSED: - data = self._read_bgra(palette) + if self._encoding == Encoding.UNCOMPRESSED: + data = self._read_bgra(palette, alpha) - elif self._blp_encoding == Encoding.DXT: + elif self._encoding == Encoding.DXT: data = bytearray() - if self._blp_alpha_encoding == AlphaEncoding.DXT1: - linesize = (self.size[0] + 3) // 4 * 8 - for yb in range((self.size[1] + 3) // 4): - for d in decode_dxt1( - self._safe_read(linesize), alpha=bool(self._blp_alpha_depth) - ): + if self._alpha_encoding == AlphaEncoding.DXT1: + linesize = (self.state.xsize + 3) // 4 * 8 + for yb in range((self.state.ysize + 3) // 4): + for d in decode_dxt1(self._safe_read(linesize), alpha): data += d - elif self._blp_alpha_encoding == AlphaEncoding.DXT3: - linesize = (self.size[0] + 3) // 4 * 16 - for yb in range((self.size[1] + 3) // 4): + elif self._alpha_encoding == AlphaEncoding.DXT3: + linesize = (self.state.xsize + 3) // 4 * 16 + for yb in range((self.state.ysize + 3) // 4): for d in decode_dxt3(self._safe_read(linesize)): data += d - elif self._blp_alpha_encoding == AlphaEncoding.DXT5: - linesize = (self.size[0] + 3) // 4 * 16 - for yb in range((self.size[1] + 3) // 4): + elif self._alpha_encoding == AlphaEncoding.DXT5: + linesize = (self.state.xsize + 3) // 4 * 16 + for yb in range((self.state.ysize + 3) // 4): for d in decode_dxt5(self._safe_read(linesize)): data += d else: - msg = f"Unsupported alpha encoding {repr(self._blp_alpha_encoding)}" + msg = f"Unsupported alpha encoding {repr(self._alpha_encoding)}" raise BLPFormatError(msg) else: - msg = f"Unknown BLP encoding {repr(self._blp_encoding)}" + msg = f"Unknown BLP encoding {repr(self._encoding)}" raise BLPFormatError(msg) else: - msg = f"Unknown BLP compression {repr(self._blp_compression)}" + msg = f"Unknown BLP compression {repr(self._compression)}" raise BLPFormatError(msg) self.set_as_raw(data) @@ -472,10 +475,15 @@ def _save(im: Image.Image, fp: IO[bytes], filename: str | bytes) -> None: assert im.palette is not None fp.write(struct.pack(" None: + struct.pack("<4I", *rgba_mask) # dwRGBABitMask + struct.pack("<5I", DDSCAPS.TEXTURE, 0, 0, 0, 0) ) - ImageFile._save( - im, fp, [ImageFile._Tile("raw", (0, 0) + im.size, 0, (rawmode, 0, 1))] - ) + ImageFile._save(im, fp, [ImageFile._Tile("raw", (0, 0) + im.size, 0, rawmode)]) def _accept(prefix: bytes) -> bool: diff --git a/gestao_raul/Lib/site-packages/PIL/EpsImagePlugin.py b/gestao_raul/Lib/site-packages/PIL/EpsImagePlugin.py index fb1e301..36ba15e 100644 --- a/gestao_raul/Lib/site-packages/PIL/EpsImagePlugin.py +++ b/gestao_raul/Lib/site-packages/PIL/EpsImagePlugin.py @@ -454,7 +454,7 @@ def _save(im: Image.Image, fp: IO[bytes], filename: str | bytes, eps: int = 1) - if hasattr(fp, "flush"): fp.flush() - ImageFile._save(im, fp, [ImageFile._Tile("eps", (0, 0) + im.size, 0, None)]) + ImageFile._save(im, fp, [ImageFile._Tile("eps", (0, 0) + im.size)]) fp.write(b"\n%%%%EndBinary\n") fp.write(b"grestore end\n") diff --git a/gestao_raul/Lib/site-packages/PIL/ExifTags.py b/gestao_raul/Lib/site-packages/PIL/ExifTags.py index 39b4aa5..2280d5c 100644 --- a/gestao_raul/Lib/site-packages/PIL/ExifTags.py +++ b/gestao_raul/Lib/site-packages/PIL/ExifTags.py @@ -303,38 +303,38 @@ TAGS = { class GPS(IntEnum): - GPSVersionID = 0 - GPSLatitudeRef = 1 - GPSLatitude = 2 - GPSLongitudeRef = 3 - GPSLongitude = 4 - GPSAltitudeRef = 5 - GPSAltitude = 6 - GPSTimeStamp = 7 - GPSSatellites = 8 - GPSStatus = 9 - GPSMeasureMode = 10 - GPSDOP = 11 - GPSSpeedRef = 12 - GPSSpeed = 13 - GPSTrackRef = 14 - GPSTrack = 15 - GPSImgDirectionRef = 16 - GPSImgDirection = 17 - GPSMapDatum = 18 - GPSDestLatitudeRef = 19 - GPSDestLatitude = 20 - GPSDestLongitudeRef = 21 - GPSDestLongitude = 22 - GPSDestBearingRef = 23 - GPSDestBearing = 24 - GPSDestDistanceRef = 25 - GPSDestDistance = 26 - GPSProcessingMethod = 27 - GPSAreaInformation = 28 - GPSDateStamp = 29 - GPSDifferential = 30 - GPSHPositioningError = 31 + GPSVersionID = 0x00 + GPSLatitudeRef = 0x01 + GPSLatitude = 0x02 + GPSLongitudeRef = 0x03 + GPSLongitude = 0x04 + GPSAltitudeRef = 0x05 + GPSAltitude = 0x06 + GPSTimeStamp = 0x07 + GPSSatellites = 0x08 + GPSStatus = 0x09 + GPSMeasureMode = 0x0A + GPSDOP = 0x0B + GPSSpeedRef = 0x0C + GPSSpeed = 0x0D + GPSTrackRef = 0x0E + GPSTrack = 0x0F + GPSImgDirectionRef = 0x10 + GPSImgDirection = 0x11 + GPSMapDatum = 0x12 + GPSDestLatitudeRef = 0x13 + GPSDestLatitude = 0x14 + GPSDestLongitudeRef = 0x15 + GPSDestLongitude = 0x16 + GPSDestBearingRef = 0x17 + GPSDestBearing = 0x18 + GPSDestDistanceRef = 0x19 + GPSDestDistance = 0x1A + GPSProcessingMethod = 0x1B + GPSAreaInformation = 0x1C + GPSDateStamp = 0x1D + GPSDifferential = 0x1E + GPSHPositioningError = 0x1F """Maps EXIF GPS tags to tag names.""" @@ -342,40 +342,41 @@ GPSTAGS = {i.value: i.name for i in GPS} class Interop(IntEnum): - InteropIndex = 1 - InteropVersion = 2 - RelatedImageFileFormat = 4096 - RelatedImageWidth = 4097 - RelatedImageHeight = 4098 + InteropIndex = 0x0001 + InteropVersion = 0x0002 + RelatedImageFileFormat = 0x1000 + RelatedImageWidth = 0x1001 + RelatedImageHeight = 0x1002 class IFD(IntEnum): - Exif = 34665 - GPSInfo = 34853 - Makernote = 37500 - Interop = 40965 + Exif = 0x8769 + GPSInfo = 0x8825 + MakerNote = 0x927C + Makernote = 0x927C # Deprecated + Interop = 0xA005 IFD1 = -1 class LightSource(IntEnum): - Unknown = 0 - Daylight = 1 - Fluorescent = 2 - Tungsten = 3 - Flash = 4 - Fine = 9 - Cloudy = 10 - Shade = 11 - DaylightFluorescent = 12 - DayWhiteFluorescent = 13 - CoolWhiteFluorescent = 14 - WhiteFluorescent = 15 - StandardLightA = 17 - StandardLightB = 18 - StandardLightC = 19 - D55 = 20 - D65 = 21 - D75 = 22 - D50 = 23 - ISO = 24 - Other = 255 + Unknown = 0x00 + Daylight = 0x01 + Fluorescent = 0x02 + Tungsten = 0x03 + Flash = 0x04 + Fine = 0x09 + Cloudy = 0x0A + Shade = 0x0B + DaylightFluorescent = 0x0C + DayWhiteFluorescent = 0x0D + CoolWhiteFluorescent = 0x0E + WhiteFluorescent = 0x0F + StandardLightA = 0x11 + StandardLightB = 0x12 + StandardLightC = 0x13 + D55 = 0x14 + D65 = 0x15 + D75 = 0x16 + D50 = 0x17 + ISO = 0x18 + Other = 0xFF diff --git a/gestao_raul/Lib/site-packages/PIL/FliImagePlugin.py b/gestao_raul/Lib/site-packages/PIL/FliImagePlugin.py index 666390b..b534b30 100644 --- a/gestao_raul/Lib/site-packages/PIL/FliImagePlugin.py +++ b/gestao_raul/Lib/site-packages/PIL/FliImagePlugin.py @@ -159,7 +159,7 @@ class FliImageFile(ImageFile.ImageFile): framesize = i32(s) self.decodermaxblock = framesize - self.tile = [ImageFile._Tile("fli", (0, 0) + self.size, self.__offset, None)] + self.tile = [ImageFile._Tile("fli", (0, 0) + self.size, self.__offset)] self.__offset += framesize diff --git a/gestao_raul/Lib/site-packages/PIL/FpxImagePlugin.py b/gestao_raul/Lib/site-packages/PIL/FpxImagePlugin.py index 8fef510..4cfcb06 100644 --- a/gestao_raul/Lib/site-packages/PIL/FpxImagePlugin.py +++ b/gestao_raul/Lib/site-packages/PIL/FpxImagePlugin.py @@ -170,7 +170,7 @@ class FpxImageFile(ImageFile.ImageFile): "raw", (x, y, x1, y1), i32(s, i) + 28, - (self.rawmode,), + self.rawmode, ) ) diff --git a/gestao_raul/Lib/site-packages/PIL/FtexImagePlugin.py b/gestao_raul/Lib/site-packages/PIL/FtexImagePlugin.py index ddb469b..0516b76 100644 --- a/gestao_raul/Lib/site-packages/PIL/FtexImagePlugin.py +++ b/gestao_raul/Lib/site-packages/PIL/FtexImagePlugin.py @@ -95,7 +95,7 @@ class FtexImageFile(ImageFile.ImageFile): self._mode = "RGBA" self.tile = [ImageFile._Tile("bcn", (0, 0) + self.size, 0, (1,))] elif format == Format.UNCOMPRESSED: - self.tile = [ImageFile._Tile("raw", (0, 0) + self.size, 0, ("RGB", 0, 1))] + self.tile = [ImageFile._Tile("raw", (0, 0) + self.size, 0, "RGB")] else: msg = f"Invalid texture compression format: {repr(format)}" raise ValueError(msg) diff --git a/gestao_raul/Lib/site-packages/PIL/GdImageFile.py b/gestao_raul/Lib/site-packages/PIL/GdImageFile.py index f1b4969..fc4801e 100644 --- a/gestao_raul/Lib/site-packages/PIL/GdImageFile.py +++ b/gestao_raul/Lib/site-packages/PIL/GdImageFile.py @@ -76,7 +76,7 @@ class GdImageFile(ImageFile.ImageFile): "raw", (0, 0) + self.size, 7 + true_color_offset + 4 + 256 * 4, - ("L", 0, 1), + "L", ) ] diff --git a/gestao_raul/Lib/site-packages/PIL/GifImagePlugin.py b/gestao_raul/Lib/site-packages/PIL/GifImagePlugin.py index 57c2917..47022d5 100644 --- a/gestao_raul/Lib/site-packages/PIL/GifImagePlugin.py +++ b/gestao_raul/Lib/site-packages/PIL/GifImagePlugin.py @@ -103,7 +103,6 @@ class GifImageFile(ImageFile.ImageFile): self.info["version"] = s[:6] self._size = i16(s, 6), i16(s, 8) - self.tile = [] flags = s[10] bits = (flags & 7) + 1 @@ -696,8 +695,9 @@ def _write_multiple_frames( ) background = _get_background(im_frame, color) background_im = Image.new("P", im_frame.size, background) - assert im_frames[0].im.palette is not None - background_im.putpalette(im_frames[0].im.palette) + first_palette = im_frames[0].im.palette + assert first_palette is not None + background_im.putpalette(first_palette, first_palette.mode) bbox = _getbbox(background_im, im_frame)[1] elif encoderinfo.get("optimize") and im_frame.mode != "1": if "transparency" not in encoderinfo: diff --git a/gestao_raul/Lib/site-packages/PIL/ImImagePlugin.py b/gestao_raul/Lib/site-packages/PIL/ImImagePlugin.py index f9f4734..b4215a0 100644 --- a/gestao_raul/Lib/site-packages/PIL/ImImagePlugin.py +++ b/gestao_raul/Lib/site-packages/PIL/ImImagePlugin.py @@ -357,7 +357,7 @@ def _save(im: Image.Image, fp: IO[bytes], filename: str | bytes) -> None: name = "".join([name[: 92 - len(ext)], ext]) fp.write(f"Name: {name}\r\n".encode("ascii")) - fp.write(("Image size (x*y): %d*%d\r\n" % im.size).encode("ascii")) + fp.write(f"Image size (x*y): {im.size[0]}*{im.size[1]}\r\n".encode("ascii")) fp.write(f"File size (no of images): {frames}\r\n".encode("ascii")) if im.mode in ["P", "PA"]: fp.write(b"Lut: 1\r\n") diff --git a/gestao_raul/Lib/site-packages/PIL/Image.py b/gestao_raul/Lib/site-packages/PIL/Image.py index 4427039..dff3d06 100644 --- a/gestao_raul/Lib/site-packages/PIL/Image.py +++ b/gestao_raul/Lib/site-packages/PIL/Image.py @@ -692,13 +692,10 @@ class Image: ) def __repr__(self) -> str: - return "<%s.%s image mode=%s size=%dx%d at 0x%X>" % ( - self.__class__.__module__, - self.__class__.__name__, - self.mode, - self.size[0], - self.size[1], - id(self), + return ( + f"<{self.__class__.__module__}.{self.__class__.__name__} " + f"image mode={self.mode} size={self.size[0]}x{self.size[1]} " + f"at 0x{id(self):X}>" ) def _repr_pretty_(self, p: PrettyPrinter, cycle: bool) -> None: @@ -707,14 +704,8 @@ class Image: # Same as __repr__ but without unpredictable id(self), # to keep Jupyter notebook `text/plain` output stable. p.text( - "<%s.%s image mode=%s size=%dx%d>" - % ( - self.__class__.__module__, - self.__class__.__name__, - self.mode, - self.size[0], - self.size[1], - ) + f"<{self.__class__.__module__}.{self.__class__.__name__} " + f"image mode={self.mode} size={self.size[0]}x{self.size[1]}>" ) def _repr_image(self, image_format: str, **kwargs: Any) -> bytes | None: @@ -763,7 +754,7 @@ class Image: def __setstate__(self, state: list[Any]) -> None: Image.__init__(self) - info, mode, size, palette, data = state + info, mode, size, palette, data = state[:5] self.info = info self._mode = mode self._size = size @@ -1574,7 +1565,7 @@ class Image: for subifd_offset in subifd_offsets: ifds.append((exif._get_ifd_dict(subifd_offset), subifd_offset)) ifd1 = exif.get_ifd(ExifTags.IFD.IFD1) - if ifd1 and ifd1.get(513): + if ifd1 and ifd1.get(ExifTags.Base.JpegIFOffset): assert exif._info is not None ifds.append((ifd1, exif._info.next)) @@ -1586,11 +1577,11 @@ class Image: fp = self.fp if ifd is not None: - thumbnail_offset = ifd.get(513) + thumbnail_offset = ifd.get(ExifTags.Base.JpegIFOffset) if thumbnail_offset is not None: thumbnail_offset += getattr(self, "_exif_offset", 0) self.fp.seek(thumbnail_offset) - data = self.fp.read(ifd.get(514)) + data = self.fp.read(ifd.get(ExifTags.Base.JpegIFByteCount)) fp = io.BytesIO(data) with open(fp) as im: @@ -2550,7 +2541,7 @@ class Image: filename: str | bytes = "" open_fp = False if is_path(fp): - filename = os.path.realpath(os.fspath(fp)) + filename = os.fspath(fp) open_fp = True elif fp == sys.stdout: try: @@ -2559,13 +2550,13 @@ class Image: pass if not filename and hasattr(fp, "name") and is_path(fp.name): # only set the name for metadata purposes - filename = os.path.realpath(os.fspath(fp.name)) + filename = os.fspath(fp.name) # may mutate self! self._ensure_mutable() save_all = params.pop("save_all", False) - self.encoderinfo = params + self.encoderinfo = {**getattr(self, "encoderinfo", {}), **params} self.encoderconfig: tuple[Any, ...] = () preinit() @@ -2612,6 +2603,11 @@ class Image: except PermissionError: pass raise + finally: + try: + del self.encoderinfo + except AttributeError: + pass if open_fp: fp.close() @@ -3463,7 +3459,7 @@ def open( exclusive_fp = False filename: str | bytes = "" if is_path(fp): - filename = os.path.realpath(os.fspath(fp)) + filename = os.fspath(fp) if filename: fp = builtins.open(filename, "rb") @@ -3893,7 +3889,7 @@ class Exif(_ExifBase): gps_ifd = exif.get_ifd(ExifTags.IFD.GPSInfo) print(gps_ifd) - Other IFDs include ``ExifTags.IFD.Exif``, ``ExifTags.IFD.Makernote``, + Other IFDs include ``ExifTags.IFD.Exif``, ``ExifTags.IFD.MakerNote``, ``ExifTags.IFD.Interop`` and ``ExifTags.IFD.IFD1``. :py:mod:`~PIL.ExifTags` also has enum classes to provide names for data:: @@ -4027,6 +4023,9 @@ class Exif(_ExifBase): head = self._get_head() ifd = TiffImagePlugin.ImageFileDirectory_v2(ifh=head) + for tag, ifd_dict in self._ifds.items(): + if tag not in self: + ifd[tag] = ifd_dict for tag, value in self.items(): if tag in [ ExifTags.IFD.Exif, @@ -4056,11 +4055,11 @@ class Exif(_ExifBase): ifd = self._get_ifd_dict(offset, tag) if ifd is not None: self._ifds[tag] = ifd - elif tag in [ExifTags.IFD.Interop, ExifTags.IFD.Makernote]: + elif tag in [ExifTags.IFD.Interop, ExifTags.IFD.MakerNote]: if ExifTags.IFD.Exif not in self._ifds: self.get_ifd(ExifTags.IFD.Exif) tag_data = self._ifds[ExifTags.IFD.Exif][tag] - if tag == ExifTags.IFD.Makernote: + if tag == ExifTags.IFD.MakerNote: from .TiffImagePlugin import ImageFileDirectory_v2 if tag_data[:8] == b"FUJIFILM": @@ -4147,7 +4146,7 @@ class Exif(_ExifBase): ifd = { k: v for (k, v) in ifd.items() - if k not in (ExifTags.IFD.Interop, ExifTags.IFD.Makernote) + if k not in (ExifTags.IFD.Interop, ExifTags.IFD.MakerNote) } return ifd diff --git a/gestao_raul/Lib/site-packages/PIL/ImageFile.py b/gestao_raul/Lib/site-packages/PIL/ImageFile.py index d69d845..5d0f87a 100644 --- a/gestao_raul/Lib/site-packages/PIL/ImageFile.py +++ b/gestao_raul/Lib/site-packages/PIL/ImageFile.py @@ -98,8 +98,8 @@ def _tilesort(t: _Tile) -> int: class _Tile(NamedTuple): codec_name: str extents: tuple[int, int, int, int] | None - offset: int - args: tuple[Any, ...] | str | None + offset: int = 0 + args: tuple[Any, ...] | str | None = None # @@ -120,7 +120,7 @@ class ImageFile(Image.Image): self.custom_mimetype: str | None = None self.tile: list[_Tile] = [] - """ A list of tile descriptors, or ``None`` """ + """ A list of tile descriptors """ self.readonly = 1 # until we know better @@ -130,7 +130,7 @@ class ImageFile(Image.Image): if is_path(fp): # filename self.fp = open(fp, "rb") - self.filename = os.path.realpath(os.fspath(fp)) + self.filename = os.fspath(fp) self._exclusive_fp = True else: # stream diff --git a/gestao_raul/Lib/site-packages/PIL/ImageFilter.py b/gestao_raul/Lib/site-packages/PIL/ImageFilter.py index 8b0974b..b350e56 100644 --- a/gestao_raul/Lib/site-packages/PIL/ImageFilter.py +++ b/gestao_raul/Lib/site-packages/PIL/ImageFilter.py @@ -553,7 +553,7 @@ class Color3DLUT(MultibandFilter): ch_out = channels or ch_in size_1d, size_2d, size_3d = self.size - table = [0] * (size_1d * size_2d * size_3d * ch_out) + table: list[float] = [0] * (size_1d * size_2d * size_3d * ch_out) idx_in = 0 idx_out = 0 for b in range(size_3d): diff --git a/gestao_raul/Lib/site-packages/PIL/ImageFont.py b/gestao_raul/Lib/site-packages/PIL/ImageFont.py index b694b81..d8c2655 100644 --- a/gestao_raul/Lib/site-packages/PIL/ImageFont.py +++ b/gestao_raul/Lib/site-packages/PIL/ImageFont.py @@ -270,7 +270,7 @@ class FreeTypeFont: ) if is_path(font): - font = os.path.realpath(os.fspath(font)) + font = os.fspath(font) if sys.platform == "win32": font_bytes_path = font if isinstance(font, bytes) else font.encode() try: diff --git a/gestao_raul/Lib/site-packages/PIL/ImageGrab.py b/gestao_raul/Lib/site-packages/PIL/ImageGrab.py index e27ca7e..fe27bfa 100644 --- a/gestao_raul/Lib/site-packages/PIL/ImageGrab.py +++ b/gestao_raul/Lib/site-packages/PIL/ImageGrab.py @@ -104,28 +104,17 @@ def grab( def grabclipboard() -> Image.Image | list[str] | None: if sys.platform == "darwin": - fh, filepath = tempfile.mkstemp(".png") - os.close(fh) - commands = [ - 'set theFile to (open for access POSIX file "' - + filepath - + '" with write permission)', - "try", - " write (the clipboard as «class PNGf») to theFile", - "end try", - "close access theFile", - ] - script = ["osascript"] - for command in commands: - script += ["-e", command] - subprocess.call(script) + p = subprocess.run( + ["osascript", "-e", "get the clipboard as «class PNGf»"], + capture_output=True, + ) + if p.returncode != 0: + return None - im = None - if os.stat(filepath).st_size != 0: - im = Image.open(filepath) - im.load() - os.unlink(filepath) - return im + import binascii + + data = io.BytesIO(binascii.unhexlify(p.stdout[11:-3])) + return Image.open(data) elif sys.platform == "win32": fmt, data = Image.core.grabclipboard_win32() if fmt == "file": # CF_HDROP diff --git a/gestao_raul/Lib/site-packages/PIL/ImageOps.py b/gestao_raul/Lib/site-packages/PIL/ImageOps.py index 44aad0c..bb29cc0 100644 --- a/gestao_raul/Lib/site-packages/PIL/ImageOps.py +++ b/gestao_raul/Lib/site-packages/PIL/ImageOps.py @@ -698,10 +698,11 @@ def exif_transpose(image: Image.Image, *, in_place: bool = False) -> Image.Image 8: Image.Transpose.ROTATE_90, }.get(orientation) if method is not None: - transposed_image = image.transpose(method) if in_place: - image.im = transposed_image.im - image._size = transposed_image._size + image.im = image.im.transpose(method) + image._size = image.im.size + else: + transposed_image = image.transpose(method) exif_image = image if in_place else transposed_image exif = exif_image.getexif() diff --git a/gestao_raul/Lib/site-packages/PIL/ImageQt.py b/gestao_raul/Lib/site-packages/PIL/ImageQt.py index a3d6471..2cc40f8 100644 --- a/gestao_raul/Lib/site-packages/PIL/ImageQt.py +++ b/gestao_raul/Lib/site-packages/PIL/ImageQt.py @@ -213,4 +213,7 @@ def toqimage(im: Image.Image | str | QByteArray) -> ImageQt: def toqpixmap(im: Image.Image | str | QByteArray) -> QPixmap: qimage = toqimage(im) - return getattr(QPixmap, "fromImage")(qimage) + pixmap = getattr(QPixmap, "fromImage")(qimage) + if qt_version == "6": + pixmap.detach() + return pixmap diff --git a/gestao_raul/Lib/site-packages/PIL/ImtImagePlugin.py b/gestao_raul/Lib/site-packages/PIL/ImtImagePlugin.py index 594c565..068cd5c 100644 --- a/gestao_raul/Lib/site-packages/PIL/ImtImagePlugin.py +++ b/gestao_raul/Lib/site-packages/PIL/ImtImagePlugin.py @@ -62,7 +62,7 @@ class ImtImageFile(ImageFile.ImageFile): "raw", (0, 0) + self.size, self.fp.tell() - len(buffer), - (self.mode, 0, 1), + self.mode, ) ] diff --git a/gestao_raul/Lib/site-packages/PIL/Jpeg2KImagePlugin.py b/gestao_raul/Lib/site-packages/PIL/Jpeg2KImagePlugin.py index b6ebd56..6782835 100644 --- a/gestao_raul/Lib/site-packages/PIL/Jpeg2KImagePlugin.py +++ b/gestao_raul/Lib/site-packages/PIL/Jpeg2KImagePlugin.py @@ -252,6 +252,7 @@ class Jpeg2KImageFile(ImageFile.ImageFile): if sig == b"\xff\x4f\xff\x51": self.codec = "j2k" self._size, self._mode = _parse_codestream(self.fp) + self._parse_comment() else: sig = sig + self.fp.read(8) @@ -262,6 +263,9 @@ class Jpeg2KImageFile(ImageFile.ImageFile): if dpi is not None: self.info["dpi"] = dpi if self.fp.read(12).endswith(b"jp2c\xff\x4f\xff\x51"): + hdr = self.fp.read(2) + length = _binary.i16be(hdr) + self.fp.seek(length - 2, os.SEEK_CUR) self._parse_comment() else: msg = "not a JPEG 2000 file" @@ -296,10 +300,6 @@ class Jpeg2KImageFile(ImageFile.ImageFile): ] def _parse_comment(self) -> None: - hdr = self.fp.read(2) - length = _binary.i16be(hdr) - self.fp.seek(length - 2, os.SEEK_CUR) - while True: marker = self.fp.read(2) if not marker: diff --git a/gestao_raul/Lib/site-packages/PIL/JpegImagePlugin.py b/gestao_raul/Lib/site-packages/PIL/JpegImagePlugin.py index 6510e07..457690a 100644 --- a/gestao_raul/Lib/site-packages/PIL/JpegImagePlugin.py +++ b/gestao_raul/Lib/site-packages/PIL/JpegImagePlugin.py @@ -72,7 +72,7 @@ def APP(self: JpegImageFile, marker: int) -> None: n = i16(self.fp.read(2)) - 2 s = ImageFile._safe_read(self.fp, n) - app = "APP%d" % (marker & 15) + app = f"APP{marker & 15}" self.app[app] = s # compatibility self.applist.append((app, s)) @@ -90,6 +90,9 @@ def APP(self: JpegImageFile, marker: int) -> None: else: if jfif_unit == 1: self.info["dpi"] = jfif_density + elif jfif_unit == 2: # cm + # 1 dpcm = 2.54 dpi + self.info["dpi"] = tuple(d * 2.54 for d in jfif_density) self.info["jfif_unit"] = jfif_unit self.info["jfif_density"] = jfif_density elif marker == 0xFFE1 and s[:6] == b"Exif\0\0": @@ -395,6 +398,13 @@ class JpegImageFile(ImageFile.ImageFile): return getattr(self, "_" + name) raise AttributeError(name) + def __getstate__(self) -> list[Any]: + return super().__getstate__() + [self.layers, self.layer] + + def __setstate__(self, state: list[Any]) -> None: + super().__setstate__(state) + self.layers, self.layer = state[5:] + def load_read(self, read_bytes: int) -> bytes: """ internal: read more image data @@ -751,7 +761,7 @@ def _save(im: Image.Image, fp: IO[bytes], filename: str | bytes) -> None: extra = info.get("extra", b"") MAX_BYTES_IN_MARKER = 65533 - xmp = info.get("xmp", im.info.get("xmp")) + xmp = info.get("xmp") if xmp: overhead_len = 29 # b"http://ns.adobe.com/xap/1.0/\x00" max_data_bytes_in_marker = MAX_BYTES_IN_MARKER - overhead_len diff --git a/gestao_raul/Lib/site-packages/PIL/MspImagePlugin.py b/gestao_raul/Lib/site-packages/PIL/MspImagePlugin.py index f3460a7..ef6ae87 100644 --- a/gestao_raul/Lib/site-packages/PIL/MspImagePlugin.py +++ b/gestao_raul/Lib/site-packages/PIL/MspImagePlugin.py @@ -70,9 +70,9 @@ class MspImageFile(ImageFile.ImageFile): self._size = i16(s, 4), i16(s, 6) if s[:4] == b"DanM": - self.tile = [ImageFile._Tile("raw", (0, 0) + self.size, 32, ("1", 0, 1))] + self.tile = [ImageFile._Tile("raw", (0, 0) + self.size, 32, "1")] else: - self.tile = [ImageFile._Tile("MSP", (0, 0) + self.size, 32, None)] + self.tile = [ImageFile._Tile("MSP", (0, 0) + self.size, 32)] class MspDecoder(ImageFile.PyDecoder): @@ -188,7 +188,7 @@ def _save(im: Image.Image, fp: IO[bytes], filename: str | bytes) -> None: fp.write(o16(h)) # image body - ImageFile._save(im, fp, [ImageFile._Tile("raw", (0, 0) + im.size, 32, ("1", 0, 1))]) + ImageFile._save(im, fp, [ImageFile._Tile("raw", (0, 0) + im.size, 32, "1")]) # diff --git a/gestao_raul/Lib/site-packages/PIL/PcdImagePlugin.py b/gestao_raul/Lib/site-packages/PIL/PcdImagePlugin.py index e8ea800..ac40383 100644 --- a/gestao_raul/Lib/site-packages/PIL/PcdImagePlugin.py +++ b/gestao_raul/Lib/site-packages/PIL/PcdImagePlugin.py @@ -47,7 +47,7 @@ class PcdImageFile(ImageFile.ImageFile): self._mode = "RGB" self._size = 768, 512 # FIXME: not correct for rotated images! - self.tile = [ImageFile._Tile("pcd", (0, 0) + self.size, 96 * 2048, None)] + self.tile = [ImageFile._Tile("pcd", (0, 0) + self.size, 96 * 2048)] def load_end(self) -> None: if self.tile_post_rotate: diff --git a/gestao_raul/Lib/site-packages/PIL/PcxImagePlugin.py b/gestao_raul/Lib/site-packages/PIL/PcxImagePlugin.py index 8445d5c..32436ce 100644 --- a/gestao_raul/Lib/site-packages/PIL/PcxImagePlugin.py +++ b/gestao_raul/Lib/site-packages/PIL/PcxImagePlugin.py @@ -86,7 +86,7 @@ class PcxImageFile(ImageFile.ImageFile): elif bits == 1 and planes in (2, 4): mode = "P" - rawmode = "P;%dL" % planes + rawmode = f"P;{planes}L" self.palette = ImagePalette.raw("RGB", s[16:64]) elif version == 5 and bits == 8 and planes == 1: diff --git a/gestao_raul/Lib/site-packages/PIL/PixarImagePlugin.py b/gestao_raul/Lib/site-packages/PIL/PixarImagePlugin.py index 36f565f..5c465bb 100644 --- a/gestao_raul/Lib/site-packages/PIL/PixarImagePlugin.py +++ b/gestao_raul/Lib/site-packages/PIL/PixarImagePlugin.py @@ -61,9 +61,7 @@ class PixarImageFile(ImageFile.ImageFile): # FIXME: to be continued... # create tile descriptor (assuming "dumped") - self.tile = [ - ImageFile._Tile("raw", (0, 0) + self.size, 1024, (self.mode, 0, 1)) - ] + self.tile = [ImageFile._Tile("raw", (0, 0) + self.size, 1024, self.mode)] # diff --git a/gestao_raul/Lib/site-packages/PIL/PngImagePlugin.py b/gestao_raul/Lib/site-packages/PIL/PngImagePlugin.py index 4e12272..4b97992 100644 --- a/gestao_raul/Lib/site-packages/PIL/PngImagePlugin.py +++ b/gestao_raul/Lib/site-packages/PIL/PngImagePlugin.py @@ -523,7 +523,7 @@ class PngStream(ChunkStream): assert self.fp is not None s = ImageFile._safe_read(self.fp, length) - raw_vals = struct.unpack(">%dI" % (len(s) // 4), s) + raw_vals = struct.unpack(f">{len(s) // 4}I", s) self.im_info["chromaticity"] = tuple(elt / 100000.0 for elt in raw_vals) return s diff --git a/gestao_raul/Lib/site-packages/PIL/QoiImagePlugin.py b/gestao_raul/Lib/site-packages/PIL/QoiImagePlugin.py index 010d3f9..01cc868 100644 --- a/gestao_raul/Lib/site-packages/PIL/QoiImagePlugin.py +++ b/gestao_raul/Lib/site-packages/PIL/QoiImagePlugin.py @@ -32,7 +32,7 @@ class QoiImageFile(ImageFile.ImageFile): self._mode = "RGB" if channels == 3 else "RGBA" self.fp.seek(1, os.SEEK_CUR) # colorspace - self.tile = [ImageFile._Tile("qoi", (0, 0) + self._size, self.fp.tell(), None)] + self.tile = [ImageFile._Tile("qoi", (0, 0) + self._size, self.fp.tell())] class QoiDecoder(ImageFile.PyDecoder): diff --git a/gestao_raul/Lib/site-packages/PIL/SpiderImagePlugin.py b/gestao_raul/Lib/site-packages/PIL/SpiderImagePlugin.py index 075073f..3a87d00 100644 --- a/gestao_raul/Lib/site-packages/PIL/SpiderImagePlugin.py +++ b/gestao_raul/Lib/site-packages/PIL/SpiderImagePlugin.py @@ -154,9 +154,7 @@ class SpiderImageFile(ImageFile.ImageFile): self.rawmode = "F;32F" self._mode = "F" - self.tile = [ - ImageFile._Tile("raw", (0, 0) + self.size, offset, (self.rawmode, 0, 1)) - ] + self.tile = [ImageFile._Tile("raw", (0, 0) + self.size, offset, self.rawmode)] self._fp = self.fp # FIXME: hack @property @@ -211,26 +209,27 @@ class SpiderImageFile(ImageFile.ImageFile): # given a list of filenames, return a list of images -def loadImageSeries(filelist: list[str] | None = None) -> list[SpiderImageFile] | None: +def loadImageSeries(filelist: list[str] | None = None) -> list[Image.Image] | None: """create a list of :py:class:`~PIL.Image.Image` objects for use in a montage""" if filelist is None or len(filelist) < 1: return None - imglist = [] + byte_imgs = [] for img in filelist: if not os.path.exists(img): print(f"unable to find {img}") continue try: with Image.open(img) as im: - im = im.convert2byte() + assert isinstance(im, SpiderImageFile) + byte_im = im.convert2byte() except Exception: if not isSpiderImage(img): print(f"{img} is not a Spider image file") continue - im.info["filename"] = img - imglist.append(im) - return imglist + byte_im.info["filename"] = img + byte_imgs.append(byte_im) + return byte_imgs # -------------------------------------------------------------------- @@ -280,9 +279,7 @@ def _save(im: Image.Image, fp: IO[bytes], filename: str | bytes) -> None: fp.writelines(hdr) rawmode = "F;32NF" # 32-bit native floating point - ImageFile._save( - im, fp, [ImageFile._Tile("raw", (0, 0) + im.size, 0, (rawmode, 0, 1))] - ) + ImageFile._save(im, fp, [ImageFile._Tile("raw", (0, 0) + im.size, 0, rawmode)]) def _save_spider(im: Image.Image, fp: IO[bytes], filename: str | bytes) -> None: diff --git a/gestao_raul/Lib/site-packages/PIL/TiffImagePlugin.py b/gestao_raul/Lib/site-packages/PIL/TiffImagePlugin.py index ff5a6f9..61eb152 100644 --- a/gestao_raul/Lib/site-packages/PIL/TiffImagePlugin.py +++ b/gestao_raul/Lib/site-packages/PIL/TiffImagePlugin.py @@ -294,7 +294,7 @@ def _accept(prefix: bytes) -> bool: def _limit_rational( val: float | Fraction | IFDRational, max_val: int ) -> tuple[IntegralLike, IntegralLike]: - inv = abs(float(val)) > 1 + inv = abs(val) > 1 n_d = IFDRational(1 / val if inv else val).limit_rational(max_val) return n_d[::-1] if inv else n_d @@ -582,7 +582,7 @@ class ImageFileDirectory_v2(_IFDv2Base): def __init__( self, - ifh: bytes = b"II\052\0\0\0\0\0", + ifh: bytes = b"II\x2A\x00\x00\x00\x00\x00", prefix: bytes | None = None, group: int | None = None, ) -> None: @@ -685,22 +685,33 @@ class ImageFileDirectory_v2(_IFDv2Base): else: self.tagtype[tag] = TiffTags.UNDEFINED if all(isinstance(v, IFDRational) for v in values): - self.tagtype[tag] = ( - TiffTags.RATIONAL - if all(v >= 0 for v in values) - else TiffTags.SIGNED_RATIONAL - ) - elif all(isinstance(v, int) for v in values): - if all(0 <= v < 2**16 for v in values): - self.tagtype[tag] = TiffTags.SHORT - elif all(-(2**15) < v < 2**15 for v in values): - self.tagtype[tag] = TiffTags.SIGNED_SHORT + for v in values: + assert isinstance(v, IFDRational) + if v < 0: + self.tagtype[tag] = TiffTags.SIGNED_RATIONAL + break else: - self.tagtype[tag] = ( - TiffTags.LONG - if all(v >= 0 for v in values) - else TiffTags.SIGNED_LONG - ) + self.tagtype[tag] = TiffTags.RATIONAL + elif all(isinstance(v, int) for v in values): + short = True + signed_short = True + long = True + for v in values: + assert isinstance(v, int) + if short and not (0 <= v < 2**16): + short = False + if signed_short and not (-(2**15) < v < 2**15): + signed_short = False + if long and v < 0: + long = False + if short: + self.tagtype[tag] = TiffTags.SHORT + elif signed_short: + self.tagtype[tag] = TiffTags.SIGNED_SHORT + elif long: + self.tagtype[tag] = TiffTags.LONG + else: + self.tagtype[tag] = TiffTags.SIGNED_LONG elif all(isinstance(v, float) for v in values): self.tagtype[tag] = TiffTags.DOUBLE elif all(isinstance(v, str) for v in values): @@ -718,7 +729,10 @@ class ImageFileDirectory_v2(_IFDv2Base): is_ifd = self.tagtype[tag] == TiffTags.LONG and isinstance(values, dict) if not is_ifd: - values = tuple(info.cvt_enum(value) for value in values) + values = tuple( + info.cvt_enum(value) if isinstance(value, str) else value + for value in values + ) dest = self._tags_v1 if legacy_api else self._tags_v2 @@ -921,9 +935,9 @@ class ImageFileDirectory_v2(_IFDv2Base): self._tagdata[tag] = data self.tagtype[tag] = typ - msg += " - value: " + ( - "" % size if size > 32 else repr(data) - ) + msg += " - value: " + msg += f"" if size > 32 else repr(data) + logger.debug(msg) (self.next,) = ( @@ -935,16 +949,26 @@ class ImageFileDirectory_v2(_IFDv2Base): warnings.warn(str(msg)) return + def _get_ifh(self): + ifh = self._prefix + self._pack("H", 43 if self._bigtiff else 42) + if self._bigtiff: + ifh += self._pack("HH", 8, 0) + ifh += self._pack("Q", 16) if self._bigtiff else self._pack("L", 8) + + return ifh + def tobytes(self, offset: int = 0) -> bytes: # FIXME What about tagdata? - result = self._pack("H", len(self._tags_v2)) + result = self._pack("Q" if self._bigtiff else "H", len(self._tags_v2)) entries: list[tuple[int, int, int, bytes, bytes]] = [] - offset = offset + len(result) + len(self._tags_v2) * 12 + 4 + offset += len(result) + len(self._tags_v2) * (20 if self._bigtiff else 12) + 4 stripoffsets = None # pass 1: convert tags to binary format # always write tags in ascending order + fmt = "Q" if self._bigtiff else "L" + fmt_size = 8 if self._bigtiff else 4 for tag, value in sorted(self._tags_v2.items()): if tag == STRIPOFFSETS: stripoffsets = len(entries) @@ -952,11 +976,7 @@ class ImageFileDirectory_v2(_IFDv2Base): logger.debug("Tag %s, Type: %s, Value: %s", tag, typ, repr(value)) is_ifd = typ == TiffTags.LONG and isinstance(value, dict) if is_ifd: - if self._endian == "<": - ifh = b"II\x2A\x00\x08\x00\x00\x00" - else: - ifh = b"MM\x00\x2A\x00\x00\x00\x08" - ifd = ImageFileDirectory_v2(ifh, group=tag) + ifd = ImageFileDirectory_v2(self._get_ifh(), group=tag) values = self._tags_v2[tag] for ifd_tag, ifd_value in values.items(): ifd[ifd_tag] = ifd_value @@ -967,10 +987,8 @@ class ImageFileDirectory_v2(_IFDv2Base): tagname = TiffTags.lookup(tag, self.group).name typname = "ifd" if is_ifd else TYPES.get(typ, "unknown") - msg = f"save: {tagname} ({tag}) - type: {typname} ({typ})" - msg += " - value: " + ( - "" % len(data) if len(data) >= 16 else str(values) - ) + msg = f"save: {tagname} ({tag}) - type: {typname} ({typ}) - value: " + msg += f"" if len(data) >= 16 else str(values) logger.debug(msg) # count is sum of lengths for string and arbitrary data @@ -981,10 +999,10 @@ class ImageFileDirectory_v2(_IFDv2Base): else: count = len(values) # figure out if data fits into the entry - if len(data) <= 4: - entries.append((tag, typ, count, data.ljust(4, b"\0"), b"")) + if len(data) <= fmt_size: + entries.append((tag, typ, count, data.ljust(fmt_size, b"\0"), b"")) else: - entries.append((tag, typ, count, self._pack("L", offset), data)) + entries.append((tag, typ, count, self._pack(fmt, offset), data)) offset += (len(data) + 1) // 2 * 2 # pad to word # update strip offset data to point beyond auxiliary data @@ -995,13 +1013,15 @@ class ImageFileDirectory_v2(_IFDv2Base): values = [val + offset for val in handler(self, data, self.legacy_api)] data = self._write_dispatch[typ](self, *values) else: - value = self._pack("L", self._unpack("L", value)[0] + offset) + value = self._pack(fmt, self._unpack(fmt, value)[0] + offset) entries[stripoffsets] = tag, typ, count, value, data # pass 2: write entries to file for tag, typ, count, value, data in entries: logger.debug("%s %s %s %s %s", tag, typ, count, repr(value), repr(data)) - result += self._pack("HHL4s", tag, typ, count, value) + result += self._pack( + "HHQ8s" if self._bigtiff else "HHL4s", tag, typ, count, value + ) # -- overwrite here for multi-page -- result += b"\0\0\0\0" # end of entries @@ -1016,8 +1036,7 @@ class ImageFileDirectory_v2(_IFDv2Base): def save(self, fp: IO[bytes]) -> int: if fp.tell() == 0: # skip TIFF header on subsequent pages - # tiff header -- PIL always starts the first IFD at offset 8 - fp.write(self._prefix + self._pack("HL", 42, 8)) + fp.write(self._get_ifh()) offset = fp.tell() result = self.tobytes(offset) @@ -1202,10 +1221,6 @@ class TiffImageFile(ImageFile.ImageFile): def _seek(self, frame: int) -> None: self.fp = self._fp - # reset buffered io handle in case fp - # was passed to libtiff, invalidating the buffer - self.fp.tell() - while len(self._frame_pos) <= frame: if not self.__next: msg = "no more images in TIFF file" @@ -1289,10 +1304,6 @@ class TiffImageFile(ImageFile.ImageFile): if not self.is_animated: self._close_exclusive_fp_after_loading = True - # reset buffered io handle in case fp - # was passed to libtiff, invalidating the buffer - self.fp.tell() - # load IFD data from fp before it is closed exif = self.getexif() for key in TiffTags.TAGS_V2_GROUPS: @@ -1367,8 +1378,17 @@ class TiffImageFile(ImageFile.ImageFile): logger.debug("have fileno, calling fileno version of the decoder.") if not close_self_fp: self.fp.seek(0) + # Save and restore the file position, because libtiff will move it + # outside of the Python runtime, and that will confuse + # io.BufferedReader and possible others. + # NOTE: This must use os.lseek(), and not fp.tell()/fp.seek(), + # because the buffer read head already may not equal the actual + # file position, and fp.seek() may just adjust it's internal + # pointer and not actually seek the OS file handle. + pos = os.lseek(fp, 0, os.SEEK_CUR) # 4 bytes, otherwise the trace might error out n, err = decoder.decode(b"fpfp") + os.lseek(fp, pos, os.SEEK_SET) else: # we have something else. logger.debug("don't have fileno or getvalue. just reading") @@ -1419,8 +1439,12 @@ class TiffImageFile(ImageFile.ImageFile): logger.debug("- YCbCr subsampling: %s", self.tag_v2.get(YCBCRSUBSAMPLING)) # size - xsize = self.tag_v2.get(IMAGEWIDTH) - ysize = self.tag_v2.get(IMAGELENGTH) + try: + xsize = self.tag_v2[IMAGEWIDTH] + ysize = self.tag_v2[IMAGELENGTH] + except KeyError as e: + msg = "Missing dimensions" + raise TypeError(msg) from e if not isinstance(xsize, int) or not isinstance(ysize, int): msg = "Invalid dimensions" raise ValueError(msg) @@ -1542,17 +1566,6 @@ class TiffImageFile(ImageFile.ImageFile): # fillorder==2 modes have a corresponding # fillorder=1 mode self._mode, rawmode = OPEN_INFO[key] - # libtiff always returns the bytes in native order. - # we're expecting image byte order. So, if the rawmode - # contains I;16, we need to convert from native to image - # byte order. - if rawmode == "I;16": - rawmode = "I;16N" - if ";16B" in rawmode: - rawmode = rawmode.replace(";16B", ";16N") - if ";16L" in rawmode: - rawmode = rawmode.replace(";16L", ";16N") - # YCbCr images with new jpeg compression with pixels in one plane # unpacked straight into RGB values if ( @@ -1561,6 +1574,14 @@ class TiffImageFile(ImageFile.ImageFile): and self._planar_configuration == 1 ): rawmode = "RGB" + # libtiff always returns the bytes in native order. + # we're expecting image byte order. So, if the rawmode + # contains I;16, we need to convert from native to image + # byte order. + elif rawmode == "I;16": + rawmode = "I;16N" + elif rawmode.endswith(";16B") or rawmode.endswith(";16L"): + rawmode = rawmode[:-1] + "N" # Offset in the tile tuple is 0, we go from 0,0 to # w,h, and we only do this once -- eds @@ -1666,10 +1687,13 @@ def _save(im: Image.Image, fp: IO[bytes], filename: str | bytes) -> None: msg = f"cannot write mode {im.mode} as TIFF" raise OSError(msg) from e - ifd = ImageFileDirectory_v2(prefix=prefix) - encoderinfo = im.encoderinfo encoderconfig = im.encoderconfig + + ifd = ImageFileDirectory_v2(prefix=prefix) + if encoderinfo.get("big_tiff"): + ifd._bigtiff = True + try: compression = encoderinfo["compression"] except KeyError: @@ -1901,7 +1925,9 @@ def _save(im: Image.Image, fp: IO[bytes], filename: str | bytes) -> None: if not getattr(Image.core, "libtiff_support_custom_tags", False): continue - if tag in ifd.tagtype: + if tag in TiffTags.TAGS_V2_GROUPS: + types[tag] = TiffTags.LONG8 + elif tag in ifd.tagtype: types[tag] = ifd.tagtype[tag] elif not (isinstance(value, (int, float, str, bytes))): continue diff --git a/gestao_raul/Lib/site-packages/PIL/WebPImagePlugin.py b/gestao_raul/Lib/site-packages/PIL/WebPImagePlugin.py index 64188f2..c7f8555 100644 --- a/gestao_raul/Lib/site-packages/PIL/WebPImagePlugin.py +++ b/gestao_raul/Lib/site-packages/PIL/WebPImagePlugin.py @@ -60,7 +60,6 @@ class WebPImageFile(ImageFile.ImageFile): self.is_animated = self.n_frames > 1 self._mode = "RGB" if mode == "RGBX" else mode self.rawmode = mode - self.tile = [] # Attempt to read ICC / EXIF / XMP chunks from file icc_profile = self._decoder.get_chunk("ICCP") diff --git a/gestao_raul/Lib/site-packages/PIL/WmfImagePlugin.py b/gestao_raul/Lib/site-packages/PIL/WmfImagePlugin.py index 68f8a74..48e9823 100644 --- a/gestao_raul/Lib/site-packages/PIL/WmfImagePlugin.py +++ b/gestao_raul/Lib/site-packages/PIL/WmfImagePlugin.py @@ -92,6 +92,9 @@ class WmfStubImageFile(ImageFile.StubImageFile): # get units per inch self._inch = word(s, 14) + if self._inch == 0: + msg = "Invalid inch" + raise ValueError(msg) # get bounding box x0 = short(s, 6) @@ -128,7 +131,7 @@ class WmfStubImageFile(ImageFile.StubImageFile): size = x1 - x0, y1 - y0 # calculate dots per inch from bbox and frame - xdpi = 2540.0 * (x1 - y0) / (frame[2] - frame[0]) + xdpi = 2540.0 * (x1 - x0) / (frame[2] - frame[0]) ydpi = 2540.0 * (y1 - y0) / (frame[3] - frame[1]) self.info["wmf_bbox"] = x0, y0, x1, y1 diff --git a/gestao_raul/Lib/site-packages/PIL/XVThumbImagePlugin.py b/gestao_raul/Lib/site-packages/PIL/XVThumbImagePlugin.py index 5d1f201..7533335 100644 --- a/gestao_raul/Lib/site-packages/PIL/XVThumbImagePlugin.py +++ b/gestao_raul/Lib/site-packages/PIL/XVThumbImagePlugin.py @@ -74,9 +74,7 @@ class XVThumbImageFile(ImageFile.ImageFile): self.palette = ImagePalette.raw("RGB", PALETTE) self.tile = [ - ImageFile._Tile( - "raw", (0, 0) + self.size, self.fp.tell(), (self.mode, 0, 1) - ) + ImageFile._Tile("raw", (0, 0) + self.size, self.fp.tell(), self.mode) ] diff --git a/gestao_raul/Lib/site-packages/PIL/XbmImagePlugin.py b/gestao_raul/Lib/site-packages/PIL/XbmImagePlugin.py index f3d490a..943a044 100644 --- a/gestao_raul/Lib/site-packages/PIL/XbmImagePlugin.py +++ b/gestao_raul/Lib/site-packages/PIL/XbmImagePlugin.py @@ -67,7 +67,7 @@ class XbmImageFile(ImageFile.ImageFile): self._mode = "1" self._size = xsize, ysize - self.tile = [ImageFile._Tile("xbm", (0, 0) + self.size, m.end(), None)] + self.tile = [ImageFile._Tile("xbm", (0, 0) + self.size, m.end())] def _save(im: Image.Image, fp: IO[bytes], filename: str | bytes) -> None: @@ -85,7 +85,7 @@ def _save(im: Image.Image, fp: IO[bytes], filename: str | bytes) -> None: fp.write(b"static char im_bits[] = {\n") - ImageFile._save(im, fp, [ImageFile._Tile("xbm", (0, 0) + im.size, 0, None)]) + ImageFile._save(im, fp, [ImageFile._Tile("xbm", (0, 0) + im.size)]) fp.write(b"};\n") diff --git a/gestao_raul/Lib/site-packages/PIL/XpmImagePlugin.py b/gestao_raul/Lib/site-packages/PIL/XpmImagePlugin.py index 1fc6c0c..b985aa5 100644 --- a/gestao_raul/Lib/site-packages/PIL/XpmImagePlugin.py +++ b/gestao_raul/Lib/site-packages/PIL/XpmImagePlugin.py @@ -101,9 +101,7 @@ class XpmImageFile(ImageFile.ImageFile): self._mode = "P" self.palette = ImagePalette.raw("RGB", b"".join(palette)) - self.tile = [ - ImageFile._Tile("raw", (0, 0) + self.size, self.fp.tell(), ("P", 0, 1)) - ] + self.tile = [ImageFile._Tile("raw", (0, 0) + self.size, self.fp.tell(), "P")] def load_read(self, read_bytes: int) -> bytes: # diff --git a/gestao_raul/Lib/site-packages/PIL/__pycache__/BdfFontFile.cpython-310.pyc b/gestao_raul/Lib/site-packages/PIL/__pycache__/BdfFontFile.cpython-310.pyc index a4f2bbbc879da28f2c84af2d1e7305324b26d526..f16048af5a30d219097094571df890df6087e07c 100644 GIT binary patch delta 20 acmcaEdR>$|pO=@50SHX|S8wD#!vz309tAf5 delta 20 acmcaEdR>$|pO=@50SLCGq;BLs!vz32%ms)5 diff --git a/gestao_raul/Lib/site-packages/PIL/__pycache__/BlpImagePlugin.cpython-310.pyc b/gestao_raul/Lib/site-packages/PIL/__pycache__/BlpImagePlugin.cpython-310.pyc index b832f127f69e277b8081fb962b77207baa488055..87fa45e3c642bba59af1675fbc8febaea8c46e8f 100644 GIT binary patch delta 3844 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 Tv60RRYcQ6;OJNvZE=K+Z2?||a diff --git a/gestao_raul/Lib/site-packages/PIL/__pycache__/BmpImagePlugin.cpython-310.pyc b/gestao_raul/Lib/site-packages/PIL/__pycache__/BmpImagePlugin.cpython-310.pyc index d3893418a37f4473a9aaa2478058b07ef061fce6..23c5c5e3f52cf31cb7b58ba75fd84f605f5b49ef 100644 GIT binary patch delta 1708 zcmZ{jU2Kz87{`0scT2a@uIoO!ug-NJNKIrP?h7$lwlNjfZDec{3ZX0OyVBYA?Vff5 zGr%Isg^_?cejwaTjfq2JG7E@+IHMPa-FxvSB-|Mivczy<;+4<;G;xE(CjFh~{GX5a zoacSsjo?PmVK|+|7XEdPeY5JgrioDQrdDnjFU$39U1ja;FdZ{SGEI6W6E{-SD$ATf zv0F|%{}!F{psUL<$}uzs?3b5ad&H!C;Oag*06{QTw8u7H_;Qh=)o*ZYz)Dp} z32m{D$Z_{Ty%+Mayj%%;W{a)Md+vUB4Du|{0lXwjN{>2miC0b0Zi*m9G{~LNZhV*;Y~O`w$+D&hru~I<7~e;b|W4aJR6i1_wN*bv8bkJ#l}BuTd8N){ zS3MJSUj9{ECZznmuF?N7M{{GJu1;53r7M6$@qIZqFQB-c4HQ@9p$2S}KwJUf%L}S^ z6>LAUa1KYPK0=`DGU@ZaqUJ}9ANz4RRbsQ{ZiHgKOlv&(k7I8#64Q4ok|Ec8+xbd= z`UV|05T-`rmh7qzh&#D({hZY~f|}Mx)A0Tz|7h6beVt7_lYbBUMtPppEbLWn2+ARU z+w=YGB6Y%6SSg?xQ1`;|p77rySDn@JhQGaIA8$+%r{{Rh!w)OSxXX8XqOoCJsMnfRh^YI8lg_z}o|-fRWLM4&i-&i@To$FAE85wJ-4=lsP$3edVcL3ZY7&v0+UMp{qNRry`Z+P`U=fT{oh delta 1708 zcmZ{jZERCz6vz9tcT2a@uIpYpwso$1K`x1~O$M8g%#FH^9x~O$LnHXN|jHf<+U}NKX4|ge5QdhQ-<3U7v2>GQ#?tXDF4ekJR@J?ysLT;|BGz zs0$T1q!&_JC6Fx@H35kejn45BDw;AP(Qq`9jnH{`bjYcS1Dn(%cd9+0tQuIIj72-; zZF#R^SiCA*D*c5>Nej8b%1e%hBmdQUp5o7!ff;zpJu5jjO0 zuzeGF8z3CmQyI&7u&=K_yl3P9osnbJem|LDMQ?(D|&R1^}t z=TtotbWZ+NQzjPVFSQN957?U<`*?P`!YX|TEFk&58*E-cawi)|uF^x*9h87y0T9Rw zs&^G^-?woLd#FA_pe30I_;;)MQ8S0J<;$rQYc2P}74v1;&BQ;hy@^Q7*s4frc{{L) zuk>eNkLxSAsgbxT+v{|3D;KUiVRsK9r~UpoPQR0X)c5-LvWay3yVo_u^Q2~BpK8OP z>I?|2BEuy;0r>wzl>2#u6qy#cLixSc8mZzSBdE4f`9_ zHi|>W%@A5j-(&j&-~xU`37ZkM!cp`Sv?V}wOtqm5+j3w;zTVI^|0&Ev!25uj&T>mT z*ge`uXIQbE{l;t`QHtm_-iBO8av~Kq$V^VA=rlr3!b{7TbB3jzNSVp}z@nL<;+T<5 zN8&~{YY;};Djto*XAG6jDmY1IR_&5vx|JPZSUAq=0SDXA**LZIgW@po8GDZ#@;pO=@50SHX|S8wFLzzzU5;{`MT delta 20 acmcc3f195>pO=@50SLCGq;BNCzzzU8kp+bS diff --git a/gestao_raul/Lib/site-packages/PIL/__pycache__/ContainerIO.cpython-310.pyc b/gestao_raul/Lib/site-packages/PIL/__pycache__/ContainerIO.cpython-310.pyc index 484e214140fdd82b52033023fb391758eb523cf7..7f85816ed2fe6d0dc220a5dafa0507cfd7291327 100644 GIT binary patch delta 20 acmdm~y;GYzpO=@50SHX|S8wEACkg;Hkp&b0 delta 20 acmdm~y;GYzpO=@50SLCGq;BM1Ckg;KKLup~ diff --git a/gestao_raul/Lib/site-packages/PIL/__pycache__/CurImagePlugin.cpython-310.pyc b/gestao_raul/Lib/site-packages/PIL/__pycache__/CurImagePlugin.cpython-310.pyc index 6cbb42b8a3ce57dad6a701e4d92d6687f367b689..b07fd276eada632f265b69ae7ce66b0aa5ccdd4d 100644 GIT binary patch delta 20 acmaFG{fe7ApO=@50SHX|S8wFL&k6uIsRdU6 delta 20 acmaFG{fe7ApO=@50SLCGq;BNC&k6uLR|Tj5 diff --git a/gestao_raul/Lib/site-packages/PIL/__pycache__/DcxImagePlugin.cpython-310.pyc b/gestao_raul/Lib/site-packages/PIL/__pycache__/DcxImagePlugin.cpython-310.pyc index 293566cc81ba6ed623dddc3782e7ae8f65e6389b..bd0114723159018a9f65ca428c5729fb0717d748 100644 GIT binary patch delta 20 acmaFH`;3=6pO=@50SHX|S8wFL%?1ECQUy=| delta 20 acmaFH`;3=6pO=@50SLCGq;BNC%?1EF00p4{ diff --git a/gestao_raul/Lib/site-packages/PIL/__pycache__/DdsImagePlugin.cpython-310.pyc b/gestao_raul/Lib/site-packages/PIL/__pycache__/DdsImagePlugin.cpython-310.pyc index 6dac4d4cf2caf744991b4c9db44312abc00ec01b..0c9ec1e766b3a9b565ad4aba340d852dd3a2c322 100644 GIT binary patch delta 83 zcmZ3VyC9c0pO=@50SHX|SEr|M3Ns{b(jNp~-9pm5gSa8w}LgIE@5Yco_K@g%|+>Y!%f2 delta 96 zcmZ3GyFQmUpO=@50SLCGq^8$zsK;bY%VlVW8*XtVBulpV-#Wp0Aei} A>i_@% diff --git a/gestao_raul/Lib/site-packages/PIL/__pycache__/EpsImagePlugin.cpython-310.pyc b/gestao_raul/Lib/site-packages/PIL/__pycache__/EpsImagePlugin.cpython-310.pyc index 06c6feb780b036a227789d6855418288b2ba3615..70bf9b50e07fa9d598a889910b57266cda82c78b 100644 GIT binary patch delta 968 zcmYk5%TE(g6vlh{KwB822#lq*oj!tg;hV$&5)wp2NGt*ssRBYf)Jmb{7Ela{F`&5c z0Xd@RM(cxxZZ!P|*lAe1v58@4q8sDR#0B1O(7+_~%Qxqq`^`CL?mTLlZ&A{U;xNgp zI{Ys2@q-d{P&9wkVJGU~6U8&s$t%VCY&|j|wy?{|wvsOt$*+~{x2Tt7?EAWeAc?MK zVTbO^dv=~PQ#)r$|Ih%ZcCUG3GG4GHM0z442BGbzuE+Gucrra2DiZB{wXA{S{I={h z4RN?UM3;H0{2E>1U*)|N;c!KAd!O7DvdYwzibxgg#9_m8D5$#p*^>#GJ?o?08NQ*;07?nt4?q21xOSi z3y(u-I5o{C%o^;Zd7+$#@Xkq zYCS6lX>|5PM#KZ45%2)Vfj0n(FWCCC1CzR#ms)qKT3V9XhROo#*;kYyN#IV@^`4=}7>K^bLl{Y0PqJ{sX4 zevPKNIN&bBp(<>PrAIQ!lrDy`=N{Jug24{R9v})VOGFi+Cz4rtiu=nZUwd DI`Y%1 delta 958 zcmYk5OH30{6oz~HLI!G-S1ql52kF8G8s8EUMMO;`O`!;gO=*XwrnL38fJ6)!f@0zW zJVr%bP$iPMQPadV3s=U43pX|~BrZ%`8FwZw@cx4aCh3=d{(Jh*Id|^Nwm)dMWGog% zC$D#LHSy`K#jjAQxK}AB3h}XuDeC0qiXEn2SrD7sYGYI77YY|wDjN;fe(C*Kl@KJ+ z*(S=NBSq(ypq_%9t@=X)oT^@N#id^|B}8U8D`L>)C$GfRY(AMu2h1YKmugx_ceol0SqP116P3rf3UfZ^gyBk z*|-Yr2DGfRQ1<~X-v*_j9%_bt^Yi-DbT7ISZJ8Hi>{isN8J7Tr~*? z5dr<$!{&L}ew=Qy!O?7e1m7s;QR4&FcAvW)9lP%0{vj{}AXGd7)|*=ItdBoCeALIk z9XtKgD8gpPj1vDZvlKWYCv-Z>Ju9BxuF|1+b=+AnCa7Q_-8d~6;;sVyQ*NldX`JHr zDZTh8SIq?->Eh0i{P8zulkb8IlT&K@iU;K|dvYk6Pz4SZmiU0nZMnFiE?kVc-jJeo zctiT<*x_l|EH_h|?y+>lJq~)R8(%`A<&r6qi;k#bPHOqOPQiBrFMw&j?eWqQzxK3l z_UaYALJC!qaaAladH2y%-tTQSccQY3C%lfpb4WMf0kn)oD6ON7Z{WSxLuvl*bvIqZ zI%Zqzrz|p%Oh?6-D1+4_Q7VgNhO)_&DpIiS@Ijy7AA-aOC;EUTiC&9P6Um%ByOB&* LO^XGd@Xh@NFSplz diff --git a/gestao_raul/Lib/site-packages/PIL/__pycache__/ExifTags.cpython-310.pyc b/gestao_raul/Lib/site-packages/PIL/__pycache__/ExifTags.cpython-310.pyc index 0baca91a982bc2723d517b0e435091583ec911ca..a22883a1e35d23bdd55d9fd6501de49f09686d72 100644 GIT binary patch delta 536 zcmZXQ-AV#M6vuaTU0uN?up-1yX16WSH6!{mqR5hbEDvuK)y>C6>p8G$Mn@B65h7cah=2CErCT zv|<*QY4gki*#oEfLPr_CiX;(cfMB9z71jFu=-XiHb1+~9zF?$CmRm-Sf6_Q9@+s}6 zM4}JTxdA0zC>il<-3p9!C|S{hj^fHr*bO-mS84Mnof4J5>j|4BA>C2!tJ^-iACCJB z%N@CXS}n~+`{QoI^(DG%AR>}Xes_d08)oEI5iZyUqJ-E+>>w1xE@BU{k0|pG!z5Mj x+aM(Ew-QRcCIMLk?3d>;THq&Uxqv^_3D;Wf&T*|R=4Ch)!_^H;M%)E{(+S}gzo delta 495 zcmZ1x@X?W1XJlab%mfq^V<^%FDUbybav(w;L@0m=nawfslbPiZrhr)> zql$Eagdxz3VyDUe>bjE+l*Rlw7{Q{+Kv6gV*}wwC&I}BUMJhl>5!eV-5K9BjMHmZm zN+{5PBAvW-Q$!>gYDIyxD3BJbVaVdE6|WI3x?dxnA_i1rJ0s)d seO%g-@+tf^JT(I13`|V5+_gMFHeWXD1jZuy%}m^tOpGj>Yk2Ef02)dtF8}}l delta 146 zcmeyV{9BnfpO=@50SLCGq^8$w%;;R*}5iNR9Bc37#RCjlB370z~ t)8su|+L8(>{53o^0^$rzOtsv#JU}*IHtPh&B85%dl}wCmo2z*1SpaA&DDD6N diff --git a/gestao_raul/Lib/site-packages/PIL/__pycache__/FtexImagePlugin.cpython-310.pyc b/gestao_raul/Lib/site-packages/PIL/__pycache__/FtexImagePlugin.cpython-310.pyc index b6177290dd4f341e450221d73bd8cfbb0325b835..e6adbf115d0eb7692fa6f9bcfeb20e101457c459 100644 GIT binary patch delta 51 zcmZ22H%pE;pO=@50SHX|SEpNTUjjE?q|c$^W?`HfL}j GW(ELAK@IN! delta 69 zcmbOww_1)jpO=@50SLCGq^3J<lP`wZD diff --git a/gestao_raul/Lib/site-packages/PIL/__pycache__/GbrImagePlugin.cpython-310.pyc b/gestao_raul/Lib/site-packages/PIL/__pycache__/GbrImagePlugin.cpython-310.pyc index c8e5862ad21986fea8e7f0d9401bddf2dfc85f41..3dacf21d2a8af56cd89715f409aceb997f767f58 100644 GIT binary patch delta 20 acmZ1@uttD8pO=@50SHX|S8wE2}SspO=@50SHX|SEom8Z delta 61 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 delta 4944 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 delta 20 acmew>^H+vDpO=@50SLCGq;BLc;sXFbyakK^ diff --git a/gestao_raul/Lib/site-packages/PIL/__pycache__/GimpPaletteFile.cpython-310.pyc b/gestao_raul/Lib/site-packages/PIL/__pycache__/GimpPaletteFile.cpython-310.pyc index 052be6404a446aa339147ef5709935103845a62f..0cf00f53a132c3db58189bc44ab1ab13f147bcac 100644 GIT binary patch delta 20 acmZ3^vz&)JpO=@50SHX|S8wE&VFLgyRs<0M delta 20 acmZ3^vz&)JpO=@50SLCGq;BMvVFLg#1O#FL diff --git a/gestao_raul/Lib/site-packages/PIL/__pycache__/GribStubImagePlugin.cpython-310.pyc b/gestao_raul/Lib/site-packages/PIL/__pycache__/GribStubImagePlugin.cpython-310.pyc index e63c4ebee43d7e01cb0a456d19b90682bdb61649..7522561e4e2d3eba40715be4fce34c227521dc3e 100644 GIT binary patch delta 20 acmcb?e}kVppO=@50SHX|S8wD#%MJiGYXvI+ delta 20 acmcb?e}kVppO=@50SLCGq;BLs%MJiJ83lX* diff --git a/gestao_raul/Lib/site-packages/PIL/__pycache__/Hdf5StubImagePlugin.cpython-310.pyc b/gestao_raul/Lib/site-packages/PIL/__pycache__/Hdf5StubImagePlugin.cpython-310.pyc index d58610444c7768ed7f84d044ea73b226dbff0900..ff648354547ac3feb1e4375788c379ca427ecc6f 100644 GIT binary patch delta 20 acmX@lf1aN^pO=@50SHX|S8wD#!VUm60|gKO delta 20 acmX@lf1aN^pO=@50SLCGq;BLs!VUm8u?1lO diff --git a/gestao_raul/Lib/site-packages/PIL/__pycache__/IcnsImagePlugin.cpython-310.pyc b/gestao_raul/Lib/site-packages/PIL/__pycache__/IcnsImagePlugin.cpython-310.pyc index 36c620680560f33c2261dc3375f926229a7f7278..97114a687f2a9270be50a6756c7f2db95d36e9e8 100644 GIT binary patch delta 20 acmaD9@F;*gpO=@50SHX|S8wDF*8l)OKm}|7 delta 20 acmaD9@F;*gpO=@50SLCGq;BL6*8l)Q?ghO7 diff --git a/gestao_raul/Lib/site-packages/PIL/__pycache__/IcoImagePlugin.cpython-310.pyc b/gestao_raul/Lib/site-packages/PIL/__pycache__/IcoImagePlugin.cpython-310.pyc index d256a2a6379fdf0b1b5fc35f0a02ed357a7ae2fd..a2039050ee4e27ae3a87333e0a8df890184f5435 100644 GIT binary patch delta 20 acmezG{NI^7pO=@50SHX|S8wG0q6h#(?FJ$M delta 20 acmezG{NI^7pO=@50SLCGq;BN?q6h#+n+9_L diff --git a/gestao_raul/Lib/site-packages/PIL/__pycache__/ImImagePlugin.cpython-310.pyc b/gestao_raul/Lib/site-packages/PIL/__pycache__/ImImagePlugin.cpython-310.pyc index c4ef4c72e4d06f88ca448f038a3b0b02139f10e9..381cea156134a0ec42e9f82fe2e186608785e56a 100644 GIT binary patch delta 302 zcmZ2uzR#RDpO=@50SHX|SEn0nSyICTGO9#ufp`tjSwLDMMJh!aH0FgY>5L1R85vR- zf*CYrCp(G9$O?JpCZ?w<6lYeYDri(_Rccx(6fpwBqR1RbOx_`$u~}8ZgOO2dbDpFf F695MNO1l66 delta 263 zcmdmIzQ&w4pO=@50SLCGq^7HHkj0q7SH@7(30A=mS1XVr2ow=o$RNQW!jK{)&H$EysXkM~kR`l8Bt6SBXFkS2JUZs1!pjcZygoPl;%XX!GQkVru*XDdIKUAS28fYIzFRO_mcESCmMR z1Zo!)XGoE%VM&onkxpY?$db;ukeQJog&~+hQ)Y6Qc#M>!XKrG8szPyQRjPtUg;u4e gm4a%DmTC$w*W~l!8H|jZjU{{-8O1g?NZK(00Fetpx&QzG diff --git a/gestao_raul/Lib/site-packages/PIL/__pycache__/Image.cpython-310.pyc b/gestao_raul/Lib/site-packages/PIL/__pycache__/Image.cpython-310.pyc index fbf50dd39340cfd94ddc64eae76afc4eba03216d..86fc8c30633d276f35ce7e3453cbf8388b7458b2 100644 GIT binary patch delta 13446 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 delta 13464 zcmai42Yggj)}QmHWKs#K5K0n(z|cF2K?(F$%Xj|gB^k`;{=Vdwlk?6!?Y48zJ@37KZ`>Dm z$E8#yCnwnW=YY?@%AEaR${Uj!-TXMkW~0DhMtl^qt+B1KpuxDE{~SJ}t4;pfyV`=z zkgbVIU0JpzHjiU|eZO&i0)zVm^2#cTSNZcQs(k+O{1hmw=l{OiKEAx-VBXN$J{L?- z#QIey1|FBnzabKP%n!1?x~_^cBxgMi;L);133Z#X-N<`x87* zqs`m}pBZCF7iLkmE1&(3vxhwk&o*e1xpHx3{tWc!KTtZA zF^@wX13nkjC&d(xQg<3>rYspjW5Sb{d_%1A?4@3sY~H%G2aPcgEFJBf!0gMyrzJczw~AL_5N3F1)uBEeofXJ1Bb!b4BeHWtHky*6gvXOJQKOIiO+){a~)B zxVujU%oYPI1L%eJ-VCDg<5u}A{k7FxZj{ zCawS(HdN7#>-y3qX1{f_Q$=kFT4V_Q=7x1XZu(^1h)(N3g&ozv*q_24b-&wnEuOD5 z|5|Tmf~xH8qC9stRckg~I;6KBXcNH3_GYmmV>c8kE;rx0bbzy#n|Fp?p)k>p;l~=f z*o{r3tCmuBoTEflRmVBQUtT`jNV}TZJZ@_aM0%4sziFiNDkkTfo0_hqKZH{@UT^1N z-?8at*DbKAv5d`mo87c9ylnGNMBB_ISKnB;4Q)^nja%gpt}L$fc??y>#3+^QHk35W zRL2H6VO)7xAXrjWQ9YsD?0wA@J%wpKWSkX#waTw*SRZd~k=tfIcTKNOcfyPe9hjGe zzqzK7Xq{QJ#Y6XmcWimq=z0%0#7Mg(bsy6%4cA{k*xt30(cKiK)v?)DJDApDK4T8O z@M6a1d*W0l{x8<8F2%2AN2^w;;tB=#R4w`$&;2Z^Dz8!jURvVfPHv0Zt7?Ll?%iM& zU+-sZYk1yGW%fR|Gs+_){QJPr!PQS#_0I5LbswWYSfdGS#a|m#{)%D+-_^^^aE9-Q zfk(~$+h+C>&mQiK$Hd0I-0q1hauo-Is%&M{Sr+tH1fmX1sCo#p2jJ#3V8ZHB z2Y{C|h`LKwmzDdJzcT8yFzo)KM8Un66qncddBMN|8DfhP^F=+)E%df|&z(0I50Sp& z2xa7p?&YvJ2q3~7Jc-?b*DRJn*Y^=%Wr*RnH!ZX!QDP%SyA&8}44tyXdpKD;wv8T+N9-Y9Tcz zWUNW@*=i^-dA4l>h3w6)kPEam$)$!BsvF`$_Nlf%th>-?a5u#Bp_S6ysm0ci5Q<|t zo4P2Jz#L3%NDR55NnIUsTiP3vLZX`~Nx{^R&1d-RP4+RiHQWF-okK}5A$XbyIa=7M zhU8#+b4DncvBY3zD6xsI>)(*#bNXE6Sryq0ylF(OP3;OgLMfq6Yq~TUYF8+J6@^l~ zT|+6&IX=7SO=<3C&c8Re@$vO+1;5MrZ`}fMoYb*aAL4|U_(Y1EUq*c16eY=kd8KYx>lHwIm~;V_im*z2=Aa<~v?w z+|0a>*ULc24KkPAw~(GUcivZ?I0gg>i(Ye4cKW=|pBN^TP9;o?JZF>6GQ;h-e` zbx;E58g9y>6!}dfhmpiIw7U$qV5!WP7QSp}644y{`ip-}U!sk9(YfSi&3G+QpD*{{RiN7+) zM^;@-tNPFHX!?n1Z-!4l=1s`7VNF~L9&tp1d4uUcoS(S~L~%wAOvyuR=JvzgoLFC{ z&BqT{k`eCz{5(glOo6NxnGuA1D{ol~9ao#T9L>#!kSF1c-pFcC$_%6%Us7$SP+~*mS=(kS;byy;jxhT4Y#Y>D}Ga1BoK8kTb<-W>jVL8n9*lGvZZ*hX{J>m%t@`1aR7HC#0?a?-r^&2#B| z^T?a?sKLy7Yf{cBkY&jBLZz&H8K-^by0^O1)8Vae-Gy9WShR;TlXZRG6j8UHYfbhH_>td0tIIE4@;cmxcz_3BR@1zVR-J3 zWM2_PTL54)q_#5fBwFD%HjiRk%*qOraTyOwvOOi+#oV^t2nwa&Waf{~c7mZ(A{8&qtu zt96Hgwy05C8#U_cESJC5%1sk#r4GC4{>DVMF$dT3UzpKH4SWf2a0dBa*hDHL$T#3- zdytwPAwKE(gm?Jt4bIBU5CxrUTx$*GsdoWe6W2iJ+bZK7wxGMNU)$+jN$YJPN1!km zA0nTFPyIsZU6a6?3)?hLfa)~~mU6y)Cbrl(VX!wRaROnq7!9rvR|dSvJ{QB3V5cT- z717iXCm+5z-93TkWx7M|?Y29NhJ;|35Ni*`Z!moE`mzL`1f#h-IFoFg#MqmA_!6L1 z9Srtt&J8(yiEM!?Q(B*rW1}^1x`nGad36it^CF1!1VUc z)Nd|ysLp7%S65XRCHgB%xMHHpDod-1l3O22swzv%R;jyL6PrVp%2$f0v%G4(Us?Nf zBD5^hX=yYp6&X>~y|SjPJXprd`2)QqjV5O-!wT%iO+|54)&5FvX|+0E?@psR{odk| zN&sQnk%v4ejq{%bGFr1CeI?0fScS30c&|d4dg&jjYI`+4k%;?7@5wMV;Qj>Zh!6eG}HYD z@EG-9n?rVI>P5NqOTyonavfK^lsB?GkJiMK89C&kvuJPtDx?_Yl$~yEafAl7001F? zomRjDhIzy6^kh|4Q|a>-2de!g!J~TQ0J<`B3#-Tdw9;clT~>?wTE8-Yvgv>HCj)4n zQDd0JBh$?X5*>QpKpHT4Jrvej%Ikqkw33)6r~jo)dy5_ZivQcX<324eNDvdBgZi<7 z)V<#&+`ii=O0HH_mz42k$1BGI&REXG;dgsOlgxo2|sGBIGu zl3l7~##L+pZpNdWFme`*(~k}!k9E30gSt$g8bo=Lqebm}Dp?7LbfiJ&52ke578x~| zCM9MEpec6N7*@1w(p%1<7$w_~c-jOrh@w`lNpcDFAnI6GQ|$Y_ zbKuL!hOso(K4>I_Mga^17|5W$vnQ{lxU#Y;n77iOR}=922CIH(^yri0smGxHzy|oHAIh?K!bV@1SA~@XMJlC#RgI(i6mg zPZ#S9k$IVe-v8bZEQBVUBI-JT>j7>6xRF7TQ5z^S>H=zs9$H9!X@b6>kn(wh)fduj zMxQw>+qU;aw{$1gC$!(E&z?+^=vrMrnQrU41=c!nZDrcSk%3cqSvzlH{GgsWmFCg) z`j)9QY}O5sxRC)Tc`dvE)kOd%sCO|IjSp6>t1hdpD6UpFgV;g&txS6!!+MKOokq_! z_CeQ*prQa+UtqFWw=u^1!2{~`p!NsGlCA9n__1wapNWq=gMJQhhdLLMz+;*@8%Fl) z(Tk^3w;_nITv)-JFuO!;F)5BnquW}k3!!Ac?))O9>;2QI^U$RbNwO02lkiPakCk96 z0q_BQfrdo@e*MLC%Jld_mE9(@}RV>H!;S8bxXTm4NUY(AJ(x2?wJ(vw(D1CQ1_8ii;E5Sz0g3CXfxx^c10q-3ylu7 zPv^~~oId;cX?JT#c@QnF_~A3~x3qUAb#0VuhK!5o`R5suFwHvUitstpt&V(ghK|#~ zUDlOQhT~hXeb>(W{r}T`#Fonn+*YXi8DcV!$goa1B*u-1-c>Hv^}g<#@t>k^b( zVFKD^KgYV$I;y9juoK#2Qiht1Nlj-edmvFRgK_hC|J)Rp^_&HX<)oXBQAVQ-!%q+? zhqf-i)#g%iB|(Q(4w|~Pw~G&M>-H=15= z8r%6dgI_{^-{0DBsX`DY0*Gd;7)!JGkfJ0vmZK}?gJj8*AtR}>Ox{#H%G#B1Kb;?! zoT13A;-GmcxITqnGT@Tp#CE?-jYF*llWdyU&^r{85p_~O_&jAMS1``YOmc`SyiK7?z{rpWCk|?6KQMj;!&{new@*b6l;_)>JnHKMhOwWd+W7ARBq~^ zQm4+P%xtkc0{qgg)^)Z;kDE(5Y1gqx+m_S7FV;^lrcB*1m$ocpk6?0JUi4e45iwueXG2K3=c78nmkbB!9S# zcpX_m=57%01GpdH6KHq<*dc&70Nw=n2f!x)c>tdR{0rbR0M6KLY7f9q04V7wCqN27 z8bBt%c(kIpP^x<3xil1NAqQZHoZq=!aI2XNXKFzczB&F&T^Jx$H^fe1;6(#Gh7Ess;2cvq=Lh@0HaAzko z=UATy*(nh^;5!KNgUHlSd>&(S8swWO3l@8G11ch7w(5n~I zITn8x{n%pamUIt1yBA;s>CTHNyVFK~IDw<~K2SI6xFxhb`CBF+v$Unz)y~NNCA5p^ z34Os*8awnSG~tD3iW^q|>mty_x(@uJc0maOHNP3an-w)Z^6XLy+p|jH;}8~`FB!J_ z70*|jdtdFMxpqG4zt(uh=+nz-9PQGBi>Pm+4eF(e^n|{c3E9X8xo9RKSHjh9aM<*n zMKp*y>6eOVbSjQ;B~ec{)51vF3hL)b7BWVSL+>sktatY|#_S(htXN{{Gg6;0-B&>5hy+5aUQ)XM@i zD&tXB*g2Vv+ya|;Qd;i_@K9c_4+iMm|0>-nNLl^=4E_$Y@fg#(wQIx^N5Y_95Txv` zLGI3v_E60*CP{@5K$;udn(OW3YKAju1IDJQt$9B;cY`!Hm$fz5J7=9cZ1fV5{~$;? zJmxwKKScK{Q!5O3`!$Td#LcXW8i@dsz+T zv^i0F_8APLM_LTw8X7>4>k~E9i~rd#p7Qh-KDwVt&4z4def-K0m?Qg!3RV8WWj=A>Xkb27e7K(#64P;-L( z0*gyEZZ6Jno#ZO2j0>g)I|tM7sR$QnZ1wy)t2y1rB_t`&WOBtNBWPcfS!&c(T6LG8 zy*Z0{vRhcIrDM5GYEw+(5)g5{t4otj_o$-***il<(8=$~b_SizU0ZBd*@8Ju{G`2g z)NA~{%@m6Bb_>NVv27;xFzf7&!p~-dU%16JxPv{KdxqTbW8DE?4*ULG$Wh7PS!CH7 z?7`f~Q+2e*NeA`XMmp$1Zm*t-48EL7sCO|Brz*v$?E{dvq}KzR1}-@;w(3W&;Ce!f ze)|eKJO3~Qo&u=Gc*d0$mjtU+9oGg*O8nJ9<<`SC&@|rP>o?GLs?zCARNz$1dPq-b zqPdOFK@?>hbqJWKvpmA%^8kZj{{_Z8dHi0KzfQ3VCF0va7QY#gwEVZxvoKIdS8#-NIh0siwJ~tX7j{b z%SK{|^j@Nb^h3Jv8Vn$yM&l~{fdGFfB-@xP6|bY^6@XU(qyz#Vmg+xmqykFQ?{DP8 z@PkO7Khnii=xo!&yWuau-v;Oq5y12pjtBu48+0e&<(`!yoZ5NlO0v(22}+vYLHZq* z{AL-9-p%WsoyH((05y(LOwWM7jL7ils z`qf(~$NiCLum4Fex`T7E$+yzKT;lOR^{CsZPjYp;P@?)Yvg$VKMA_25miwVDKEt)o z^p1m+&NgGP~SE{69YUR3M(cT(rXJDF461W&%wYwo1+_Ad>ao_hx; z3NPGAFInt|+Sn7)T1&-y+NHkHM|O~Z_O~#BB$l0w<%>e?ut?T2(-Up(B~g~4K#97z z){IxU*F@GgQ-F-`3_Y=#vOE94jn9Lf|J$;X)DMx2yEyLY&s(TV(wlJOU)-YpBjrxr zDTmy;=5Bg2?PsRG&&@KBX)g71j3Hj(vosIYSLo~SrYzlf4{c5Tl}RU|?iZ;0)rj=C zml}vujqUf*nnKKy%Er)1S|e92sS~#cB)-bp?3}f@{gsz^@fl3ieMzyBZ)en9dg@ME zNZ;z4cT%C@vg?V9sJs4hC!M6jk#~2|PX<*+-r2)7aXPL~-A{_%)!x0-pQh=n_i|^; z_1?X74V7b8yItPWvf7&Jx%#|)^klC@wy7SKErU6fv6f)=7}L(@I zTi_VDl62*MP8-kDTldqeJ^z9hQk_^6=WcT2l@q2lZ3{g>L(fX##;60`YI~vjA{0SJ zzNb*9%|)Hloo}fPL2dmYU=*lnc5~P{8TgLMyV}n$&vcK6$RjU@OALK6*9LXTL-au-)LUu4bSOh5 zz_~a$?kp+C`&c&!@c`$7_gyH*$))6kk&eG_8Dv@ue8Hz8sxu^BMuRvhWAh#!aaC>e zbc_=e{s4qW0ra4LKTL)6oX&fg-dzcgr2n4um|Lm~6vv!uX}2h@WT7<;K%5dU#AWe9 z{1GqYs(3#%4#0jq{p`{2`H(U&A@A_k04~r3Qa5x{%-Nxq=Bz zMqnXc+~KRy7$3hITqwLrAy+#u-V`SBr@fYpt2voJOyU=N&50Ig3$Z@o8D|Ssxk8SR zbDV8mhR+eQXY-51<`ley%*My4&ej{BwU&$QWu>cCHjjX((-{*fBP!#F&Cqdhaxh?$ z&B)NbqZd6&*=MzWDvSiHjq9-+59Nn=*XnvKonUtw65 zf-C@RI%|HV3$mc(-UTbF2f#aEi7n5Q7HW;rWcd&Ss*H;`YwzkmU^`57wYd0jQMR8@N zJ});%?R?3@HNJ*J{}_GZDVpqrv&SO^PxJQ4h^^iBzU?+2*E#%g+-iRN)cTEAV649D z8LCf}F_AnO+g|n71E1xybE2O4EUilvl5lj@ho0q|`%L}ivvjp3B#jbFd+TeTEy}>r76hynA-n6uA+B1SuTLGK>VhHS3_!2n zOmQ^P>-G8Znzh2~y-;sBOtXA_!FH6{IL`J19`m3pKSmwQt&|5Xy?(2VYhh^fdROvF zQ3IKyK6x5{I5@bCu5RNU&hfTf58-m;yd>yI29V5NFfr^>vfAa0lK}65Az?~oc0NP| zM~cqc#$Xvu)Hkq7j&?hrr`#1##Rm$43Nyr%ohc?mB_?9lx3hrSW=VBu=XwxyJ*4wr zpv=TrW4WHh1eZmSGOKGitmjA}a;=2QW~h}z<_LU!3B8f2mSrxxM)VsCt$`t28~o7J=j zQfD-!iE!&|N||M!?st@O^AEJEk1)m~IuxUU+O1_YqE{cK?&A+KVLq3vx>t~Kqrtb^_c%|tSdLU(anRL+Dh}>PIT`n+!$t^~(7^mxu z;`IY?JE+GVqul9#Yxkv9p``f|23|(f`vAuQK4|A`eV-EJ{JY+9j4}tr2p@y@lm9O8 znFu7t1pcjmJx2MH=Aw^c{2+Wh-BClV{Sex}?$|DcS5M-1pkD)B-|L%S;(+v{e&i(@ z;6je6NPqkiA#_=uLOf;^%YSk*fh+FT}v!Ejka1DP6 z&r!2ZI8N&_SA%2#i0_gh)$8kz(=f`{&mN}{)=i*X|K~V;M)&JaUZH7?C?qS?cGXUR zT>vOTN`X(IaHt*ukb2u=z`_7q!Gg=Sbv?!{*Se9u2TU%39|HRa0Ipf;Qvh6n)aL+l ypZUr-i_vfJj0=RqMS-sY43PSB2G78yUw)MejKfmO%!(wwMm>oZ>;A9PuKxwSF?F{9 diff --git a/gestao_raul/Lib/site-packages/PIL/__pycache__/ImageChops.cpython-310.pyc b/gestao_raul/Lib/site-packages/PIL/__pycache__/ImageChops.cpython-310.pyc index c8d50cf3a4becfac2a67cda64f73143518b59591..d37f122bb722b78690e699701846450bbc1aba02 100644 GIT binary patch delta 20 acmca*dCQVJpO=@50SHX|S8wD#F9QHPxCNR3 delta 20 acmca*dCQVJpO=@50SLCGq;BLsF9QHSW(Dg2 diff --git a/gestao_raul/Lib/site-packages/PIL/__pycache__/ImageCms.cpython-310.pyc b/gestao_raul/Lib/site-packages/PIL/__pycache__/ImageCms.cpython-310.pyc index e4ee66dcf1420a2c5879d95b7de0265bc8e54cf0..30bebc3ab71ef3a978ff0765265216e98e775516 100644 GIT binary patch delta 22 ccmex2lj+|~ChmM*UM>b8F!5i#k^6HG099EBIsgCw delta 22 ccmex2lj+|~ChmM*UM>b8*p`yIk^6HG09XeHivR!s diff --git a/gestao_raul/Lib/site-packages/PIL/__pycache__/ImageColor.cpython-310.pyc b/gestao_raul/Lib/site-packages/PIL/__pycache__/ImageColor.cpython-310.pyc index 674119779a3e2e864cbe19fa9f521a973f150320..0eafff1028bb8b20e7b99d5c4d2d00050d086545 100644 GIT binary patch delta 20 acmexl|H+;^pO=@50SHX|S8wEgE)M`fQw8w= delta 20 acmexl|H+;^pO=@50SLCGq;BMXE)M`i0R}<< diff --git a/gestao_raul/Lib/site-packages/PIL/__pycache__/ImageDraw.cpython-310.pyc b/gestao_raul/Lib/site-packages/PIL/__pycache__/ImageDraw.cpython-310.pyc index d49d39a12c0114c1ea4c855d55a3a1c1504d7b5b..c8eff8a82fbd72f663fa256d698b0dc06ac6671d 100644 GIT binary patch delta 22 ccmaEGmGQwb8F!5i#k^5>E09h;tGynhq delta 22 ccmaEGmGQwb8*p`yIk^5>E09)Dzg#Z8m diff --git a/gestao_raul/Lib/site-packages/PIL/__pycache__/ImageDraw2.cpython-310.pyc b/gestao_raul/Lib/site-packages/PIL/__pycache__/ImageDraw2.cpython-310.pyc index b49137875dd42800a7e39be7c7d03a4d5c384721..2b68b4ea95d505b99bd6a21f870a49bed0ec54fc 100644 GIT binary patch delta 20 acmX?Wan^!6pO=@50SHX|S8wEYk^ulYj0Euj delta 20 acmX?Wan^!6pO=@50SLCGq;BMPk^ulbIt4-i diff --git a/gestao_raul/Lib/site-packages/PIL/__pycache__/ImageEnhance.cpython-310.pyc b/gestao_raul/Lib/site-packages/PIL/__pycache__/ImageEnhance.cpython-310.pyc index 94e3a61dd3f85b2b498cad8aae4792df11241ff0..8f92203bb746b2a845b964dbda40d9ea31c778a4 100644 GIT binary patch delta 20 acmcaAdsUV@pO=@50SHX|S8wD##RmX4@&!cz delta 20 acmcaAdsUV@pO=@50SLCGq;BLs#RmX7paqry diff --git a/gestao_raul/Lib/site-packages/PIL/__pycache__/ImageFile.cpython-310.pyc b/gestao_raul/Lib/site-packages/PIL/__pycache__/ImageFile.cpython-310.pyc index f47671757ab3ee2ca89658bc4db86e12564e2113..12b9dbdafe4129e2ca632f7552cbc757081e00f5 100644 GIT binary patch delta 3365 zcmai0eQ;FO6@Pd4rd`MCS-Ve$O1@bq{*ZUz7R%?H;s9`X1z5r7MUoZFqI(@^IsMpBz}pFgQc!l2yhPDcVX0P^De$z+M2KrW9UZ-<)dbIJ6CJt+uWJEqD(zOnBUAFgmz?EH z6W&-wazKbo2)Sl&zQb}yg`sYBM3rEwmA2m#6~hAMbR!8dBkZ%h);KFOUx^CaCh9Ph zJ|SmE9bsW;Y?(}!gR=&4wLfcE5z2BUoU1C9&&sxPtXwN^ZGK16z$&3^atdWI$ts9C zw~DB93wmnZBzNU0Mga4cmL%y(ZFY2Z)YAX-5rXNiUI63QzekX9kuAe6R$ z&I+VQcgk8~X%2Ci77QYVy;jIFgF)RPTWKdmu#BLDpp>8;=6a&u1tj_jmJpEBtk`co zFD8k#urur3acf5RZ-Q71`+QZR1Pf`U6IE+j9j3EBw^0*+@JNxKQY36X*# zu?(Ip*e-@3Z+sy4=J>vwNX`&_f%{%O(uu7gSHhO@b8r2W=h%iWSVuO`z=z}WCou^l zbX7LNECh`B7VQD3D6A5F)IhnzXt4&*_qtGUDQ=-Uy+RJdD*+$uEvykEvELQ?1=iZQ z;ykRiisDJagqGqL${ry9IRyNT%TbEEfPrCg+E*)+#&h2*E;Yz%lq#Xo92zshrNaQlE_O9!S$fs%V zDFW`WAvike$Ei2gCpH`GEYA=t;Tz?RKJI0~jW}8xmDG=rF?o_W5DQE`FGLu86?1BT zN1Bc?lwNTd_Dm^HrF-q- zJrFxR<+NDPO$yAq@_~xb6i@2t?(6N;)9o7Mto)ozzDl4YVERHEWgRVB2sRVE2Ir^d zP9Iv(beJN*%vwRZDD!-ij3p#un;i|hUY?Ve!n|i{g zJQLeisSEKC9IDDGQ!DItX!{L0zU-ZU##)bBhctC z6Tg9$dLL}{*NF3@tpXSPd-3hSkpsJDJX*+JRr!0m^A7|U2;L>Ijp_sCc9A67_Kz?S zsLp-|4F(+8ks1m#Nzyg>4qmYfpN5v1?bYly!7SO@bM!ruh_$$i4QP!PCG%LB2uY27 zG1DQ$OH9c7kbPGoTCodWyQ@^3fa&9X@ckl}L;eZ0+0S~&C-TusuHU0WC6A-H4`Y)b zpfKoJJa7-bIPI1ADs~u6awv8IAOD%uu{OyelE%LJIumjCvQT%QSubUe)Lr%kL-6%^ zQ^gK=d0st#Xkjh(4tL5W@{&zJV^}8Iia+?o&09B8^JfUvRD0hi1F92Aq01fI6c^!m zO_8{WoEF8d)HH}JJOA;NV5G0Rn+wc--*(2fen@vEkBvL| z4>G?(aEt)>Ep4xFo%Ja#|4P8ze1?+lXyWG?IlUg6?SSI4yq|=Z(fSjFxGN%i zuwktMxs!Ap#6O9ql8) Cm^7RK delta 3334 zcmai04RBP|6@F)Tv)OF2VIi9=`QIQVJg7-9zw#3#l1_dgNl6nG0?U&35*C)-%*~4- zaZ`{?X{{i|GujTenhZaVtBWEp;Awvlb*Y{~6O8rlTPh#i#SBqJ|w?;3@;eHWP; zv47J(2!l#o*^(~|!U7Gl6%DpRzqPViD>1COMjWK-7=>MMhoUL%3b`m8+5_YeSbwIt zpD=YSfZs}~gCcx2Wn_k^xP%^xFoi4KSHOqmsdqysE~?6aW_*F@by%6U0J?Bv z+8EK`3FLHAIz>0boeYHx0R|nHc;enhCMy^^7`n_?Jg1T%g5S-!Ff%;0mvE3Dt? zd~;w8KI$ulc0A+ziE|Z8wBe4-8fe55nZ+Jyq=>kxPjuq@nT3=|5*fjnSw*lD%d?ii zpc%_*2K8>{r!eFYB8~R#wwW%H3U!CEV|c{cm%U^ zZkgN6yPFtvh8_kP-)^QJWOx)~Ir(rW?#;OmM$w;J<-ajrvMVDQTg`#t78O6dz+c zS(GxrjA0SOID<^M^z;%RO8Ls+Y9YgfkXqdX8J15|(_4IqQxv$NRqulSmCmyM?|@j~bzfkP+O% zdN*cM$RMBQ4H@{0Or2ur;A+Bg{K3NFRQ79i@DcMD3s1w2C^M+Y%4G*ZOCqT!GSI(S zO}AQ37ULBb`8I<}KvfHE7j?XBXSkQ)HQq=I>e23)rU#8M-IrYEbEXo$j%fctUtdfZ zy4KpKi;xkHMOCK^Bh9LntoH;4N>=%Q$$GC7eC7^EjX*rm5{v5Mj5%7OLiGr5a?;nP z277hG@+YkRkYP^uM1TDK3y%A6}_V!ShvuUW~Tt?hgYKm<)wFBOi`4}H zC*}FyL*K1GvVw&DIB{zLUdFOqA3mAyvWY)q(&7UiHbcknWNYuTQsDzcK1N}QzYsC( zX&btonxVUdepK{mEn?JsYjNCGEuR^gm~Pg*cG&3zB;1{$$beoiL`%S2sTzw)& zH`W*udzmML_!p=)s5!PuiXyWe`V##Jh~~5 zQx{Vva_$?nJIhWIehD;8WzJRW=liEjTxWdj2Hce6tmdEKiPu! znuW;$@i9H8`R1pM9k7U<36>YKM}A8bzohh8o4#qtpn=gHqj9y3UaNB~WzB=Lh|QJo zy7^l329VxFJ#R{Fr&SL*LnfGe4jWbn;7ts#uB!MqG048;&*Dv44*JbG{UFQIIIR&R zB_{Cf>bX`8zF>{d8LowWmX~kJR=tX)E%|U2SGU}?L-q{6A=W^Zy)Osc&zbin|NNWF zsz>_dWAOhK<@tWaa%UKR%^(lM#?(CLb$;7<@7igba7C*>=W%Arm-9ZRWd7Qix(7vT r(3xQJdw8yOPRT(g4>25PkPm_!#c%WS0>dQ+Zb5OCGU3PCw%-2$Gjcf} diff --git a/gestao_raul/Lib/site-packages/PIL/__pycache__/ImageFilter.cpython-310.pyc b/gestao_raul/Lib/site-packages/PIL/__pycache__/ImageFilter.cpython-310.pyc index 99075969227417b02b7ce5e612fd31e3a1c3ce13..edb57407b416446be393ca08993f3751e91831cf 100644 GIT binary patch delta 24 dcmZqeXKd|fhhR;#n}Wm!%DTKX$@sw-WJrt zG6hF)Z0gNa+?*hrh;GQdY>L~MxD8Q~%{UX6Dw!gNi2kvE^$+L$-iHy*mLpPqNl zx!-%e7}#o6R^IyCvL+3kTN2c}qEBmeJY!EddheM>*PFdaM z0sBSrj@3)E7CGR36F4XeDm+f_bwh|B0uJ-q>XkRm8E(iCqWWPM4RV`**SecXLibT% z6EFyPf%kwyU_e~(e`BQ~(ZA^ct^WkBRv-qv0Bn^=+9P2jXc&y0gsW6yv!gj|Y!9+{ zurchjn$7bd_%X0mwe0Ga3^DYWpQ?{ZUky{?4-pm;KHGwhl$JWdmT)s0LhvJC#LU2% zB&{ko${(mR=nOwq_gksble;c1=3VbfEuXChk1tiVl^ub695@PK3|Kbs6wt$af?gWt zqroEQm~_ads#cHlxu90DJ(b$vX|}Q{Xf1jJZYZ@p8+` z3Hk1`m;;9MW^kBetY*0ouU-6XcsN5{YI7<~{Rz?0An*JH?~klac^irSVm_i%meO#- z@dfZDFvTg_n6p^pJlrbvbKVgxr%Apy>fy$@tH@rZuNYV~J)Z-I97u zPfxw(SmH`$=R{R(B%OAP-=9sRyT6ht@-r$RSt*gU#+ssWId#Y7%Vv8^C=v)o*?+(5 z1i!y^q@W#(I}I}TbtTTdppM~1bT2BP$b3mQCyS(JIA4enmk={Q`DNb!Em1yf*%zND{XOTN z|GDSho^$Wmr0M%flfA`mw`%ek3Wl0D4A^(&(I8Le{k`F|;fiFX3Jq7PC`P^Vjg#Sy zED1Uu)!C?_#mFdrPG{XQikf1S^7LwP>(iE)HB}P4u9rxw*P_eKn&EwFgfzUyQvPFp z#VyCSOAT*>`USO(+IG#LNNJ1`<^(0QgdTKuWhG4hGH9^{#xkSaC>D1V?A2*G|E}=F zf*ckKJhnApY!O{WB}BR6UH2*~>XLuKr?as9u${0itOoXOK3nMGch(mOZ?TeujU*d2qd=2pqAj$u1UMzlCS-dcRo)gNOz&>HCcH6yIl%T&29N@LJ zE3O%Xb>67G-$8x+(#Fnp*GP%H4*(57AK(Sv0hR)X#L2n|Gxdw^h9oUJ0aqM|0G+^A ziL|9TWCRR@v6KAXO{Lk#l%Ps8^-!)zZmJ{a`_i|bxuFPPkW-_}(+~3_-~$O?mMU`E z9C$L+%8v6jjRp<#zQ&7d)NG%bRm!Lbt*s$rTY#yce-lViHE0;gjsvUaHgNdH7v)gu zyWxe+t_OVZ>KS{_Jo^K6F?8| z40vgP9}JY*Ka~zy+F|%d`MH2^9c~MI3Fro123`e1z#~8-a0oaGsAKgBtP$WdKJtf4 z)IYr1lshiRK2xT#XgwRpO`@HAAapcWUD3>u$YdNBt(!eWpY-~(aMFySJC4PHm5xKvWA#&r@NV!%bZH}~rqw=&3ac8`kKIAvV2TOK9 zeF3T^6x|kPEzz_|UL6l^o_6Yw)o3X}ne^bw27yOYN!ey^fw zZkeexe=gm;#(yhso2ghkSG51mhdSE7V&+Y0tKYx5&1hpGzn{rs&8?z#xPzaYIqOCl SGuu`>xqzYC-?Z%e^Zx(>SEaN7 diff --git a/gestao_raul/Lib/site-packages/PIL/__pycache__/ImageGrab.cpython-310.pyc b/gestao_raul/Lib/site-packages/PIL/__pycache__/ImageGrab.cpython-310.pyc index ae1ba3700202686730e4b78971f6cc9287c0a754..ff5dcb2c6a2ff72b00984236ad317f87cc13bd3e 100644 GIT binary patch delta 1166 zcmZ8gO>Epm6rMNsde>gBlQw_5`ERxoY@;Bgg5cby3*nF;1+^$pMaj-&>vY#%#yEoKR)l+ZWdgkg2S1Nkoj8wuKZ>0j3Jbv$e@8_HE?Vc`vKktRL znnUn;YwKaRRe$9DWWaIq(D)q2A2-eG0QuwN(q%Xq!;~_5id9Ju zjV@vI0WgD^-_V#Sa%i&BZ9_~kvQ1ctkzOeVX{BWaX$4W6S*-jeZIBEyh^chas-hWe zkGfW{>kra7bkkZ!KBch{(-UPd8^dAI%!^HBren;(BFah)5|;LQy$+kBZZR_6f3!DUujR5?`@%?0j#k zKOL8WsB$_p;*RJ9qNj*XB3h3th*r|Z2-Ql+*>sLgWgs#(9ovCZ_%rDL%5Kp%j1#&#L-(advhl#*^pvx9w}_Z?+8a9)AC#YcenS{k<;F zOLsdxf6$_$T_jlI1NN3(M&G6 z*Kdd`+Qxqj*>OJ%x*M8j+wXC)UWC^D{a2wm4CNNe!Gk;EHC^|*j!bNZa-%=!@jeeE zXV-)XMe?V+vM-hqZjI$I5Su#tvd%UR`ciCb3&Ol~fTN;f{L6t6k0KOeR~`+xSk+Z; z7gbz{9XG=4K<=U)3h^e!lhayrriX?DCRjkh`r9#0sL)yJB!ASd)+-)H&pc|vG*rN) m4xT0mmbAT_Z*1xI`ck9IXlX}EH?&mf&q5QcY`6e&^^CE1QG`IDBNL~7FlK|ha)<2d!9P5=i%U^FlkEu~12NM*UU zYjp_$4cc3ZqCB)f8-VJem-G?@Ne?{~$fcLw1MtvW`X5@LO=oG>Kq+v*nP+xpI4||p z{MU=NpU;~Ju4mM3e^YsEf2ZKTqDRUBEt#|+s=f98f_dZf~=!k*-#Yq{0C29+OOlYoxLPO}ZP(d^YJw6t?Fev(rR8TxY zi(?#5(h_tWnV$7OG;xAVVNxW_c#2Mru{;QaoDw>pzE9XwJ`MQty>i~ zU8ScVkgzC<-4)o(Ncj@8WpGx*5U=O9%1%BqZncPpYdsc2Jl~?ZSL|!Rsy}re4G(w0K;PV@v3taB- zJMKoO=Q`YXYW~3WoR-g=MziS#fphKZ_U28eC2@6Ft~v)De#bdr9qu{OOc z=Lhb8?T_(};RlVN$vOi*ByYG3Lnl^>t{7h!@DD;;b%kAyemBa-dg^KHgXonphc}`* z^XBCBI!^3nW5D;AyX)`q!5)tS^YK=Vm1UWVG_%soNi#3af;5ZLEP+YXfH!!e2Yff^ z3|*#5;7GG9O;wuJ=#$)yD+%fNiN1Eo-C*-7yCA_uFgw;Yuf5rCw9`GawKTNexqT8! zw6@D#Z=coVk$P0LDn*6ud5Otf7~5<5)QxIZb(ClUr|=H-N%opdeH~1aZTkIw!=nMv zbVrGP9AW1rS6Y3}-j?YfN*DV{MhY6FvmH+pfY_kqE6LaR2}+Km@G- delta 20 acmZn^Y82wm=jG*M0D^5PsT;Y!aR2};?gah- diff --git a/gestao_raul/Lib/site-packages/PIL/__pycache__/ImageMorph.cpython-310.pyc b/gestao_raul/Lib/site-packages/PIL/__pycache__/ImageMorph.cpython-310.pyc index 9d1b14b40b8d4dc41eeed18ec9bc47594ac33122..e54c2c42c5904a09435d2e1dcf654a01214735f8 100644 GIT binary patch delta 20 acmexj_r;DopO=@50SHX|S8wFblm`Gne+6{_ delta 20 acmexj_r;DopO=@50SLCGq;BNSlm`GqEd|B^ diff --git a/gestao_raul/Lib/site-packages/PIL/__pycache__/ImageOps.cpython-310.pyc b/gestao_raul/Lib/site-packages/PIL/__pycache__/ImageOps.cpython-310.pyc index 7d655b6b4a56bffa2183148a1fb5e0c63ff09582..c1426144813983e0127940e956802381d0323065 100644 GIT binary patch delta 751 zcmXYvOH30{6o&5^I_)r0N}*C-Y7jKRh=O1wp%yGHbg+nl8V%9Z$DpBsBA4pMTQ!1F zbiv~qP=PY#B|>7-OmxNCjVrfJbfX(w=*AU^iT41r_;Sww|99?W&Y75pg?X?K+U+V4 zPkraco$qP;-{X+sQuR$3HG8XnN{}(zYsvw}&Hmam5=`)>BSn0(?lMf7uKKhMIRD%j zfLA=n^9`o?FV8m236^p2j=?NXA1mNVZy_Yjk6s6WftEyP_>ZOs<*&t^R6)EE$T(U< z+QmpH&>D_(X>GwUo#kKaT+V?$N(U*EL~I_ji{^53KfqJ&^p&X3gffoSbAH;_n74$1 zN`xD+!XNu8VAWjqT>@C++by2__d>6NjM5j2-0i<{tCz0xp#K2$@Z0|D)hi6BmyxK$ z$YYiiFcNWK7j=p%KPEG>t0!cUYvWt~(nkx-7SD=WqVidyTbMOkaG%g#W;0wVf}L*h zkXWuR?>WP}jhoYTP{{(aCs`QOvS+ zg{i5mm=Z5Kfvr)JB6>DTyGJ}^=;6>k2E$8C?k0LxHxc!Q`1n#Y9jKH_Ch^xe1h!;^ z6=6edng3~0vp(%kLwW~9HE*yx|Hq_9!{7bMlw@2z5pgY66A_832T40@P zS~Gm$FSM(Q1#%$=REhuAPQs>nu)PMirZZG0mSiN<1WVj`zQ6_aoj6=&rHApR3d9;3 z{9h1xy=mgX3yFz|o;-Vj#Kd{D?k2xC@Be>0liBxHmSJ`o>?3x& zLd5ey9k}^<-Tvn|M7UIQ4JM3%nqLw`jLzCBfN5i>?u-PFdGn!C{;~cd%o@&9>sENe zKQ;Pcj^}&6!#w}(*@i{IeH^@#kmBn{i+S2x0!zkwZvj9WEr~wmKb!AXEr>IzjCdxn zS z;s+{~m6gU9ze9o<{-dK5Uh=JuIoQjm0w-PA9l9bAQF_jY&xZZcx`tZ%oPP_{*(f$K zA`K36XRsC4_@!VAyydCjWmy3e$l~RHgC}6asOhZ5;kg>B7qc=KYCf{lt0vq!A5ksf z2KpLf9M`u1 diff --git a/gestao_raul/Lib/site-packages/PIL/__pycache__/ImagePalette.cpython-310.pyc b/gestao_raul/Lib/site-packages/PIL/__pycache__/ImagePalette.cpython-310.pyc index 10925b84074aa0a8b2462cb15892496eb24a0ca4..0df7eb7c295b7c4630ff30ea626e79589483f97b 100644 GIT binary patch delta 20 acmaFu_}Y;>pO=@50SHX|S8wEgpa1|sgazRM delta 20 acmaFu_}Y;>pO=@50SLCGq;BMXpa1|vG6pgL diff --git a/gestao_raul/Lib/site-packages/PIL/__pycache__/ImagePath.cpython-310.pyc b/gestao_raul/Lib/site-packages/PIL/__pycache__/ImagePath.cpython-310.pyc index efe541b4801275473875093d2d343579fa50e290..a4e491b5a3e586b171ec9e4a95a96785695516d9 100644 GIT binary patch delta 20 acmbQvG@Xe%pO=@50SHX|S8wFzVFUmvX#>ar delta 20 acmbQvG@Xe%pO=@50SLCGq;BNqVFUmy7X%pq diff --git a/gestao_raul/Lib/site-packages/PIL/__pycache__/ImageQt.cpython-310.pyc b/gestao_raul/Lib/site-packages/PIL/__pycache__/ImageQt.cpython-310.pyc index 1988c3b495eccfdd3eda861573e30854976bf3be..2facf2e52c6a3a933c26ca796eb869b3b88ad012 100644 GIT binary patch delta 195 zcmaE*Gf$T{pO=@50SHX|SEu)G*qMQWu~-YpC}F5!XlATsEMY8RN?~kf zs$m53m`a#an6jCQglm`T%-o%MzIxUf^5DJ diff --git a/gestao_raul/Lib/site-packages/PIL/__pycache__/ImageTk.cpython-310.pyc b/gestao_raul/Lib/site-packages/PIL/__pycache__/ImageTk.cpython-310.pyc index 824c0b92879964701dfc6e574892c1d064e6a0df..57b30426145c77cc23005b0aed9d68dcafa80734 100644 GIT binary patch delta 20 acmZp(YqR6d=jG*M00I;L)f>5g%K-o}P6a9e delta 20 acmZp(YqR6d=jG*M0D^5PsT;X}%K-p0`~`ae diff --git a/gestao_raul/Lib/site-packages/PIL/__pycache__/ImageTransform.cpython-310.pyc b/gestao_raul/Lib/site-packages/PIL/__pycache__/ImageTransform.cpython-310.pyc index 5bfbcce4a16db335aefd5ab847485be16b095169..f34be893875532630323582cb19a034805ab081b 100644 GIT binary patch delta 20 acmdm^vPXqGpO=@50SHX|S8wDt6aoM=3IvP* delta 20 acmdm^vPXqGpO=@50SLCGq;BLk6aoM?xCGq* diff --git a/gestao_raul/Lib/site-packages/PIL/__pycache__/ImageWin.cpython-310.pyc b/gestao_raul/Lib/site-packages/PIL/__pycache__/ImageWin.cpython-310.pyc index 06f3cf0c3431ce7dbeb3b48c3d62764fe2301a20..f1adbf81745fd4dc68d3797292e1b9e659416b37 100644 GIT binary patch delta 20 acmZ4EvBrZtpO=@50SHX|S8wE2Q~>}stOT|I delta 20 acmZ4EvBrZtpO=@50SLCGq;BL^Q~>}vS_KCH diff --git a/gestao_raul/Lib/site-packages/PIL/__pycache__/ImtImagePlugin.cpython-310.pyc b/gestao_raul/Lib/site-packages/PIL/__pycache__/ImtImagePlugin.cpython-310.pyc index 28dec037a02292eed15dbd60efaf9d2915aed170..c22965b3aa9a7d28578fd0c3206b134201bc992b 100644 GIT binary patch delta 200 zcmcb_eTJJipO=@50SHX|SEpat$ZN*P#SY{-GcYg~S55Y1EMW|oe27s=WFbpBV+}(* zX9`0wLkd$3V;N&n%;bNJwuY4@>@}>-j46!SEJf8I*&5aq7DtP2@y*=yK~dne~GNjoks5v<{CW~^ndVXk3GV*;8ilqXrkk-`hqu@NfAf+WWc cl;Z=+?Wy5R;Rn&1PcR)~WMtXg&En1o00%%dU;qFB delta 206 zcmX@ZeTkblpO=@50SLCGq^954$ZN*P#R23wGcYg~H%#_rEMW|ue27s=DupG5Esc30 zOFCl>Lp)~+Loh=MQw?JoV^RF%AB?t{H6`pdtj&xmjM*$jbs*Uq))W>=h7#Tsu4cw; zrlR&j=@PyL{57l#8Ee^V*o!BC)vzxRNMTFiUdR-~RLfDzS;LXS15~@LM6ialnX#6+ vhPj3%jR|O5+MFB3^1d{*& delta 20 ZcmeCv?$hSZ=jG*M0D^5PsT;YQMFBB~1mpk! diff --git a/gestao_raul/Lib/site-packages/PIL/__pycache__/Jpeg2KImagePlugin.cpython-310.pyc b/gestao_raul/Lib/site-packages/PIL/__pycache__/Jpeg2KImagePlugin.cpython-310.pyc index 1c01f925d1499d750bd20e3fc33d8dc753e9360f..413afd1ab0e4004023a9add9267f638e4babc65a 100644 GIT binary patch delta 1102 zcmZ9L%TE+R5Qn>ZUi+E_Q64*>Kva|vO-ukicrheij0(}jKu9)dFUTSb^o|;^H%lby zLGjWTJt#B26Q2kd!=GWi?7^dFV@x!jteOEeZqna&_15Fp)wQ37eh#@auA5@`={@~& z;^(UCv{aL5rEv`~2IYIem|{g1fPfGxpg`~`E?b46Sf2aHB3pt{j+TkbQY^4T2COus zU^C7Pp_xUI7DkQ>JBoDT$O>0{6r;AH^NDJOQYV!m*kzCdib|w}b975aB7`6P886gskHDbwQ(YLMS#>taGe%$Yg%={5s(MfKkAL7x}iJZz3)$GJdY;#U)V&{jwzp zg#*JZ=_t$UpDfleE5TJ3({DW(w27>!!*n~F8EGqGbBhhQwkt-BQ(xFwI_d+Cq4K4{lTZ%=(Ko1Yz%hN7#+1@o}Mlc^$h)(a1moY-oTK)bj+l@w*96 zQh1U6#$-pJ4Jd0;4m9vD4ne)_Nx zIE~5_yoH50je_0aIm&Gc`zZSpZ^a(IU39`MPQV;=JEzXZjT&j|A6!65|Mj8Uitlbu zkIAWmtQr3N>_0beqKF91w3|m9#D7P*4L2OtzO?<|Frq)Ve}H*?uVdKgi; zW&mjx&aiMszp%p@NSaaPijP>Ev+y4&l44XDCBZI$JfKKACL(>C%SQw7<02M-JgJzU z2pF)uE#gJft5D`5Tn3Rq0ViZqR1__2_Pi6CsSH@r@~Zr5Wd)F{DcWaPeviq#ZFBbk zb%4?Mc{dzes>Q*PFsu^^FO^FN95zf)Pw3yTQ;`6Gp-du_xw9o>53xL4VjJ}8{RZKP zB&xY-M%Hq8QaLh}RF<;Gt-zeX^U5>|cA9lo4#?w7e`+|a^ zs4QeNV>8p!*}SLUx!Wzd5AR5Sbz7lVe|NjuqOuMPWuq`TAxANig3v}aJ}zV>2Ks1Y zOXDC06%Yj*YN3ipxeakhVIGGXeXTKHTETwww{_zl_YFmNPtKWdDlVX&c~;J*bBX;u z)=);Fg?6G0VKlI!sZ3#BWU?!){a@1*^g2##tccqCQ9QuMCfE{hAn}N>``DJiKg*v_ zbw&o{A+$WG7n^$Zid%VX4zo@xJPp~8ak%xeJv}O?va)P=bF(r<dzflU7zxG#IPf?6O#om QD>E~**}S}~3%i$o0nhFDyZ`_I diff --git a/gestao_raul/Lib/site-packages/PIL/__pycache__/JpegImagePlugin.cpython-310.pyc b/gestao_raul/Lib/site-packages/PIL/__pycache__/JpegImagePlugin.cpython-310.pyc index 0a606096c8169fabe91a2626fb0241ad3f6f430c..f415b77f86557870027d98ecb4b8cd13cf4bd764 100644 GIT binary patch delta 5386 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 Q_OXtQUz2vWY*YRJ0j1E>lmGw# delta 4653 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 S?{PB1pYQ#OtmjYkRs9dqg*mSP diff --git a/gestao_raul/Lib/site-packages/PIL/__pycache__/JpegPresets.cpython-310.pyc b/gestao_raul/Lib/site-packages/PIL/__pycache__/JpegPresets.cpython-310.pyc index 76158ed9cd0d74b63152c25feb974349fd37e97d..0d3e14d3f96afb77055cea1fa802e464a44b7678 100644 GIT binary patch delta 20 acmeCM>#*a_=jG*M00I;L)f>70$^if|o&_)f delta 20 acmeCM>#*a_=jG*M0D^5PsT;Zf$^ig0Oa*}e diff --git a/gestao_raul/Lib/site-packages/PIL/__pycache__/McIdasImagePlugin.cpython-310.pyc b/gestao_raul/Lib/site-packages/PIL/__pycache__/McIdasImagePlugin.cpython-310.pyc index cb9d8fb7fdefe2f6aa2848bf339e89554a04eec0..2e4d176cbe0e69074457554e319a6a0b93d6ed8b 100644 GIT binary patch delta 20 acmey*{hymVpO=@50SHX|S8wG0!U_O8@dcIu delta 20 acmey*{hymVpO=@50SLCGq;BN?!U_OBp9SXt diff --git a/gestao_raul/Lib/site-packages/PIL/__pycache__/MicImagePlugin.cpython-310.pyc b/gestao_raul/Lib/site-packages/PIL/__pycache__/MicImagePlugin.cpython-310.pyc index c7d549f135f158a95b5f158798cc64d0c6dd9772..e1806c08170565a733e9d41c66967cbb7abf957c 100644 GIT binary patch delta 20 acmZn{X&2$n=jG*M00I;L)f>70Z~_1;c?84& delta 20 acmZn{X&2$n=jG*M0D^5PsT;ZfZ~_1>Cj}J% diff --git a/gestao_raul/Lib/site-packages/PIL/__pycache__/MpegImagePlugin.cpython-310.pyc b/gestao_raul/Lib/site-packages/PIL/__pycache__/MpegImagePlugin.cpython-310.pyc index cf154f98040327bc319b0f9becba04832c9c7274..c9170b707a3cce8e14bcf6eaf3f44701a641ba16 100644 GIT binary patch delta 20 acmew<^izmCpO=@50SHX|S8wFb;{*UZ0R$pn!A diff --git a/gestao_raul/Lib/site-packages/PIL/__pycache__/MspImagePlugin.cpython-310.pyc b/gestao_raul/Lib/site-packages/PIL/__pycache__/MspImagePlugin.cpython-310.pyc index 51e90e4fd6307a252dcff08449968d66ec61f1ac..5280a531bdbfcf803b2ab7347a1d1f9ef1d8db4f 100644 GIT binary patch delta 483 zcmYL_&r1S96vubmb=#lmB`p;+4P(<#!#Z>cN;*{}?U)UV?1AH4j;RMM9Faldgw(8$ zCvi2}Sxs7XF|XB)ECzbTKh4d>$;oWO|*rEnkdm!;x;uj4fW!sU_IoZrWFMDvc%4qM3ZiKYfA;K zU!b=+;Xm`HpB-e~&~=jx*H0mve+O#QCCgrZ@Q!3v9tQ*@1a#30K%hY%iH%f(v%H>!s8uZ7cOngA4`%C+O;z_Jhx; z&${GKhgbTs#;4Vexnj&yx1zqAd0te%&C8Pt87~Mnp^EUvphWr^VG-e5LGMGS69u~h z*2qlX#{`wn5$m`k17R|~kV?cJJj8mGXm_veTDQ@Z<(QB|_u8rrt>j~#enj(}X`Iot zUPe{yUE?JlfF!jl3x9W>C zYb;a!N)4S-Jx|gkY!fC44-mdpKYT6U(ID~n_!A(T?dU*4ApY6(0^j{_hduco%Bt+{ F-vAFvcsl?9 diff --git a/gestao_raul/Lib/site-packages/PIL/__pycache__/PSDraw.cpython-310.pyc b/gestao_raul/Lib/site-packages/PIL/__pycache__/PSDraw.cpython-310.pyc index 6b3444fe3e9b8a35c50e190a5cd48928a4b6d4aa..4e24352fe850593d57f68cb1f9c191820849c5f0 100644 GIT binary patch delta 20 acmeya|6QLupO=@50SHX|S8wEgBMtyR(*@W7 delta 20 acmeya|6QLupO=@50SLCGq;BMXBMtyUfd(l6 diff --git a/gestao_raul/Lib/site-packages/PIL/__pycache__/PaletteFile.cpython-310.pyc b/gestao_raul/Lib/site-packages/PIL/__pycache__/PaletteFile.cpython-310.pyc index ebc2301b22a620b675456e32e7313bc37b30953e..93886b1f2d19d4893f8aa7c23ea3bca4989a141f 100644 GIT binary patch delta 20 ZcmeC@>F43j=jG*M00I;L)f>54*Z?V(1IYjY delta 20 ZcmeC@>F43j=jG*M0D^5PsT;Xj*Z?d<1R4MU diff --git a/gestao_raul/Lib/site-packages/PIL/__pycache__/PalmImagePlugin.cpython-310.pyc b/gestao_raul/Lib/site-packages/PIL/__pycache__/PalmImagePlugin.cpython-310.pyc index 2c26c704d9635f84005a5677a9e05f68c26254e9..4de406385f5d3a85bba9e6c792377ce80e76c3d4 100644 GIT binary patch delta 20 acmca^cHN9SpO=@50SHX|S8wF@kp=)d(*+6u delta 20 acmca^cHN9SpO=@50SLCGq;BN)kp=)gfdyLt diff --git a/gestao_raul/Lib/site-packages/PIL/__pycache__/PcdImagePlugin.cpython-310.pyc b/gestao_raul/Lib/site-packages/PIL/__pycache__/PcdImagePlugin.cpython-310.pyc index 5d6b3bcf29a6d174e184cc93e38291269ef1fd5b..7685dc816ac0b3d6eae98d0404b0058b5eff90b3 100644 GIT binary patch delta 52 zcmbQh)yKt~&&$ij00buftJ5ns@~Sg(u>yI{3=E9LvnJayPGnlhy!kR?HY20VW_#v~ Fi~t`j3pC`3=E9Lb0*s{PGm`8Sje*ZB4aiqqugd& H=8KE~Lo^J< diff --git a/gestao_raul/Lib/site-packages/PIL/__pycache__/PcfFontFile.cpython-310.pyc b/gestao_raul/Lib/site-packages/PIL/__pycache__/PcfFontFile.cpython-310.pyc index 789d6b03388e72cc8c1bbfba1ca9bb3904a9e034..11ff1f4612fb713c4724129698c91e42a5000d38 100644 GIT binary patch delta 20 acmaE-|4yGfpO=@50SHX|S8wEgEDiuZYX!Xk delta 20 acmaE-|4yGfpO=@50SLCGq;BMXEDiuc83qmj diff --git a/gestao_raul/Lib/site-packages/PIL/__pycache__/PcxImagePlugin.cpython-310.pyc b/gestao_raul/Lib/site-packages/PIL/__pycache__/PcxImagePlugin.cpython-310.pyc index 8b51058dc0112b1b821233a31f2c8d160344de86..0537bf3c8a480fdf3f1d9b0d940a173d5ee11166 100644 GIT binary patch delta 271 zcmX>je^#D1pO=@50SHX|SEu`I|%CML$<={2k=Y}rgjb86U9M9LV7=A?+$ za-@jWu+3&j5ueLk%UQy)fHOs+hA~AlMXHral3^iJ4MRLvUUdyiiZoE)U!Z2hpTM8FMEJb4SUzTV_$IX$fLX50T0oJz|Cl|1ZZth^4&B(|zS%u>V nqw-`~PIGQ$peKuzK!nQXc+L`LZWSOqlYtp1puG7W&pRdnQWHv2 delta 287 zcmX>re@31+pO=@50SLCGq^A3AWLU^l!w}DvS6#!BA_dg*8>p8ROtXQ__?;p> z*^)(<_X|)5rzAs)08sABEw)sBKJ0<{y4@`9c diff --git a/gestao_raul/Lib/site-packages/PIL/__pycache__/PdfImagePlugin.cpython-310.pyc b/gestao_raul/Lib/site-packages/PIL/__pycache__/PdfImagePlugin.cpython-310.pyc index 3dad7be3ffd00ea5d27eba4c29754d5f3da2dacc..77683dd9fd0f6648f5b8c24e0787b9e8bda746e4 100644 GIT binary patch delta 20 acmdm`zDu1upO=@50SHX|S8wEAFAM-RCj|`v delta 20 acmdm`zDu1upO=@50SLCGq;BM1FAM-T)dgMv diff --git a/gestao_raul/Lib/site-packages/PIL/__pycache__/PdfParser.cpython-310.pyc b/gestao_raul/Lib/site-packages/PIL/__pycache__/PdfParser.cpython-310.pyc index d3077cfc3dced8f56c6dd26c35236043bdfe41d6..f86bc3a8e64d31806f3289c37217406eee6d2a64 100644 GIT binary patch delta 22 ccmeBt$=LalkvpH4mx}=iO#D}Gg8L=lFnGe5YL^$5X_*- wJNXt<#AF-hdMPoWDn2G2CJsgxMh->+W-%raW)3DcMg^A5*O`47nH7YX0B?#AG5`Po delta 113 zcmbQjwTz25pO=@50SLCGq^3J=J>@hP2o#pUdWQpSi=y{ zox%{zpvgb^3R46}5hGAx5i`SNE#^iU2_Tz~iHC`Uk%f_iQGi*DNrah$iH%W)mFxfJ Mqs%^x%t}H`0OhX}(*OVf diff --git a/gestao_raul/Lib/site-packages/PIL/__pycache__/PngImagePlugin.cpython-310.pyc b/gestao_raul/Lib/site-packages/PIL/__pycache__/PngImagePlugin.cpython-310.pyc index f76eb21022704677484113ff8a1bbe73b64bc36f..c4d3b531a1bc3f70ff8947552d72540a9ecdf5c1 100644 GIT binary patch delta 2664 zcmai0YjBj+8UD^*zQiOe5nK{NVhDsbo79-iO^|R=LLegHk_5sAv%A^v+hxgScRjl( zi3>>xRi-oEc)@mb=xC>o|w2Zx5^W=415i8_kPLma#)+z5IAviFLQIj*Gv9i@^$k(-Z+3cS$xi-}*8@fXm*~`z)|M&s708WH1^|A*t$@pb z&jGIkRsp^M{0F1ZQ+0XP?Mrvq3NJxh37Dd1mThc8T-Fu}^LJS8Q;qacE)l|g`LSR; z;!mZePfriw_nL(5ZD*bOr^xl0ReMKNhQHTDW$P)*wq<{8TY+eL$7urLBYBZ|=VKkoysQEO& zmZD=Bpc&0pz$!G`04o5iX<)~8vE2I0j$UEY1kD<#5>4bCc%eb#ZjVDALr@c}&w_0R z3xK@@XaqC?Hq#CMmi)$CP&0M;%Xs0U{<@mAh-impDPReM$Cl%p;GX8)bjt4)Ui#Eu zQC*LaZE$yh-3izT*aA=`l+rDMQc+Ip0(F(;ta|LSgaa-y)r9;t2C-kU-?hvux6z?M zhu)7!AH5%_7~95F`Rp9DfSqzXI`3v+p$dZU8sR1gDty{eF(V+3Ll*rYsH{4lbd)0d zkYpZM8K4xfP}6ixe#n&e1uyU&5gptrLVPez&Ng$&)J33f3X>iTCG*!own>w|3ss8% zRT~~1P8p_d<2Du^HcH(F3x-3}QaUHj*9z>{JEXx$Yw5gE_k(?|*(Xd&m~O^jnvb=p zoma>KyvQn}8Z?O9&!E%@m|EYfiyWZ!;hBV)aH$@JX_qQuh-u<~ig3yyE~1>yg)2lG ziO67Mj6E6l$Uk8Ov~pW<7%cZ#V5FLM^7~@Fv(+IgV%5_i z<1p0FE3p;bD#K}b*F*dbv#cW)<-6{05WN80ys`nHjzbaH?Qq`#Xa~H_TGkPgiKJXk zn}%z2RdSH_4Oa?-emh*-j;B`hcJ)DW&j4*V6~*gCoR-BK zYi@&}Ms*ryEFH`(1@0tYL0ATdO}`OjwcR=r?-F8yK1ytxJ;J@b3)MrY(f8Aaq_6KiD$dap_f-{~=aO!Avg2cV{l3O|=eT)XWSyz#sF{)vAXJ^| z^HjV?3Q3cDj)_O9cEo4Ee0~fwrqia{1M2pX8Tw{)>DUBZxwkPG{uM}`5KS6rzRN6| zw=M{CkY>hZhE#v+CR(@=J&e$JW_7vwV>KLjmbSJX?=z&C* z3G}K>oj_CV?0dk}4G)dqdTKxZU&j3~J&I`MT+e$@^A!Dr^=cWDv}wX!b~Ukjq`aAQ zf1t66l2UA{Y+fu8iSRsT`R0`Oz+tE7CXN(lP=FilAa(8ciZUAC-@A4`)N;V%fDl0K l0(H98nOD2z06H+I@;HOfCCvz5DW>!%l4e}?Sml$|;(O}#XHx(G delta 2912 zcmZuzYiwLs5x(c{!;T-pN@A~_+O?h7t=GoE>(p+Xq+t6NN%sakm zKH|){BaVpkk}>b>HZH1*YTh_g5OM8h>yY7f56n6DG)DS$BZskHQdLsup>q39 z`-rLDvbfPH{>0q@aZ$7Z{yYt$@$2kX6noAmu%N4LW#XHG=`Q?za%<@AkHbCzW#1)dK@&nW7u5RiwIK-}X9;Zvg%Y_&4A` zfIEQy0vw8ABVZGGdVZ=Z=yyGhT$*1+HrWNeB@Pxh_5Veg_FMf9v%CSsj{|A|BZy$y z&clOB)sp{6O8MxeBd={0V+%8KF3q`H`p+PO?RDqN=Cgl4u;g%;Aj*1r@>41IJrFlj z@la!JEyQYoY|sp82@$-In&{|IhiarphiZ#uBPnGY-545EbyPNdu-Lcau!|;!A5blH zb@*MgM$xfS4?Q>XJ$4@SZ&XcW`S+;<_I3Z1^2qj2V-rZ;LM=%=OsyxpX1Ag{rSInYG z^8vHHPJJCtZJ_=D(g3|5tW*P39_rZo3Dz=0irNih7vK=!SqAQ?j}oDlrfztz5_Z65 z=E+A8Vp%>$OCjH>ZLG-^PU+N?r8Bd70nz3F(s7KAK91!9NPU3AfTMr`Kslft6oD5Y zZ3k4*;jtD~MKfbHYM7oJ>&>13^*Dpqp{tp4n?<8cf1QyvwQw3{m8c!8se{H3r$FAR z9ts4wtGE{m3A@awSy8}`V{E;vxUINFhMTVv4^$(FQUz%rz6PZafcsy!0px_0K-vTLUci39A6S=jPVju|o#an6-6tta*>K=< zu24GsSxe)!rd5DLl16|v%(aK3Li&Viz+4kxToB+T0V_EX6LrLuG@b$r7#TX~A*@nrV}8k*Wt z5=E#B483~MUYuHRt0bAzPpenxnd$nXS2?9tei;2X`t5Xk)hoRGj>@^xlXF&DUxKSl z$E#E^qtz6Be&)LR61B|+%uz*;&+gvyCOf3L$HvsblWBd6g&2SN^YUIfpkf<8)YmP- z>HeW%joVA#2Y8>{bItyIBe4}Ow45Vt@!Jy1G@uN`45TkYl444?hOw0XZilrOa6jNt zz)iY5*Vz|@=mAI~-<8cG zj9mOE^qMKaan*l9)PmFDbU4G=e}z@vrnRjAM@D`T5(XjXN~9uOWSNKa(9Q!^9xzal zI+p<@=blK#Q|okEUjd<&etrHIji|d+GO#W^nT*A)&}1Tiq%VUcO`Eo_&-W=cZU5tu zpep|~^iqai_(lO^6wc06UxP)uAS2|;=lv~cuhDzi9`!u!S~!)hfI>!IUM7ztz;mqg zmgODfSj*sj5~hzl;0Un@s~m*{mh${5ND>x0ev``-e<)(s&y~bM}xL_svvqS_p8@V>*nvwCk0E3Lz^DG5QwH4!A%+eu# NIE|Z diff --git a/gestao_raul/Lib/site-packages/PIL/__pycache__/PsdImagePlugin.cpython-310.pyc b/gestao_raul/Lib/site-packages/PIL/__pycache__/PsdImagePlugin.cpython-310.pyc index 65a0f1d3e71f2b8671974c0099ab795acd5f0ad8..2f870be15f2be20f35544cac50d5364f9c0db116 100644 GIT binary patch delta 20 acmaE&|3sfVpO=@50SHX|S8wFLDGmTU+XbHh delta 20 acmaE&|3sfVpO=@50SLCGq;BNCDGmTXi3RWg diff --git a/gestao_raul/Lib/site-packages/PIL/__pycache__/QoiImagePlugin.cpython-310.pyc b/gestao_raul/Lib/site-packages/PIL/__pycache__/QoiImagePlugin.cpython-310.pyc index e0a40bf237dbfad14e7575970f5eb45ac2f52bc0..4a2f47167a2e73825bdc83c14c88a36f44e89627 100644 GIT binary patch delta 42 xcmew&^+}31pO=@50SHX|SErxa$m_wxIB9YiQzz3x=E;wl-Z3g|zQnwU695k)4T}H( delta 44 zcmew)^+k#|pO=@50SLCGq^4ik$m_wxIAwAeQzuIb!$OwH51HOEs%*Z%yoeJ3Fn$h6 diff --git a/gestao_raul/Lib/site-packages/PIL/__pycache__/SgiImagePlugin.cpython-310.pyc b/gestao_raul/Lib/site-packages/PIL/__pycache__/SgiImagePlugin.cpython-310.pyc index 7792f5fbe5211d28fdea1b0744e4957c149c6b67..2cf78aa978bb49322bbf5da94a9c3f602fe561e1 100644 GIT binary patch delta 37 ncmaE%^g@X{pO=@50SHX|S8wDl=i(LtvWvt(g!txOuG?$?rA7#O delta 37 ncmaE%^g@X{pO=@50SLCGq;BLc=i(LvvWvt)gvjPzuG?$?t!@a) diff --git a/gestao_raul/Lib/site-packages/PIL/__pycache__/SpiderImagePlugin.cpython-310.pyc b/gestao_raul/Lib/site-packages/PIL/__pycache__/SpiderImagePlugin.cpython-310.pyc index 5e7e1f15bf9e60ad8720c6594994274daadecec4..8d7e689ae3c272afaad64195278d6dff570c5f9b 100644 GIT binary patch delta 493 zcmXX@&ubG=5Psj=m+a$oXB!gQv}Tu*G$Z?mMd9kuU*?c3p0_S1y@3ukhR=p*9?7?6(Syq zrlV6+EJ80E30mIs2#SO|Nk`p@l5DS-d1tN0Vm(ngD@?M(Y27_Av26;$A+xw#LUJ1l zd2r(j4k|;rp?Lh!-2t-nwDcH1s5;to)PMDDdO14hYG`|2^kp4=BSo`mHkqNZ@)_Q? w=z4i=f8P9FP%?M&hG}yJ2^)@(=0y+okOt);ym&CS&8-z@uQTox=~HFuFMoo1H2?qr diff --git a/gestao_raul/Lib/site-packages/PIL/__pycache__/SunImagePlugin.cpython-310.pyc b/gestao_raul/Lib/site-packages/PIL/__pycache__/SunImagePlugin.cpython-310.pyc index 6d121ae07d951c534db86c5582b4fc7123d0c19c..affd00d5a47a016a514c6e92336959750072ef0a 100644 GIT binary patch delta 20 acmZ1{uugzGpO=@50SHX|S8wE2<^TXM00b}q delta 20 acmZ1{uugzGpO=@50SLCGq;BL^<^TXOt^|Pq diff --git a/gestao_raul/Lib/site-packages/PIL/__pycache__/TarIO.cpython-310.pyc b/gestao_raul/Lib/site-packages/PIL/__pycache__/TarIO.cpython-310.pyc index 24c49ad6f90e011a9164448d534844834345ed8b..43c8a519d60715cba2d1098abf8b488808f7bc1e 100644 GIT binary patch delta 20 acmZ3&wS`F- delta 20 acmZ3&wS702mk;rcm(GF delta 20 acmZoyYFFaU=jG*M0D^5PsT;Zf2mk;uCIvVE diff --git a/gestao_raul/Lib/site-packages/PIL/__pycache__/TiffImagePlugin.cpython-310.pyc b/gestao_raul/Lib/site-packages/PIL/__pycache__/TiffImagePlugin.cpython-310.pyc index 7d92e1f952a22d318383b59bf8ce0d3bc0255235..4298af8eadd2291d6d40df76c4f8e9643b6d4e44 100644 GIT binary patch delta 17759 zcmaib33!y%)&IQjteGYIzK1|U0t5)Fg2-Zmkr0-IEr3JForEk*k~=S3e8)k83ZjT! zYpqK=5trKjpIS_+eXsb(8vcB~^eG)BJr#4cA$3p1X_Q|+rOQJt)oAj# zN?(yb_S}?X8boQCDgvBumr-h9NS&QJ2>LnG&g5~vLyl1XEd=&h6#ts`IZ&Lgx={3p z-Xb+**7&WmlM|#vV|Q2Ip`(G>wfU|%W#6ba)*jB6PXbT4_jE)$3`0sMm3$3AZFnnN zmwU$Et39r1Ppj)^&d7X`%1QvBx#tN#r@lF}bq;5Lo6_wB7^??XV^301?)M2$uKb>A zm^EGdfeO#+(_U1GS*zz-YDlC756B)P6cjy?!49Ky4>UupAJHr}TzMh$QXA_Q&){Z% zL}_l8F>W>~++>TdsmJT4Yp<&}>z>t~Q}@pvtm78-ggdw|JlN6MCpS_%c6lvvyFlO# z%Fq+`uDu3&xqQyIp>f`<-9N~_=A^8hRbJu>RHr3D5{-Tc8muTzN!}W9QQE{zG)K|u0B3I-cb&P23 zzL2liFAj^s@wB*36p7-aj`n~!B1%OWuv9T3D#R3EY2v7uDy9KT7uSpFq6S!oxIxSi zGl6A_8^tV92P{h*6LZ8|VA0%vL=B=VlY+@m6LRDfj@^o>FI3>1-txQ)7y3L@wO|*;cOg95`JH*Zr zJ!L&8Zx=zaiz#PlH*AcN*7&BSO-D@!aLNd`8h#i(JT76WDZJt zm_@(X%Pi)KPlzEQ(TRF-r-%px*gUaM>_2L2pD#Ws?h=Q@@KI;`0`VzvjWAKVP`F!d zHFrxI=8l+K?b??=mc8JlTYE*FURtTWI(Ba9e*5KrM`^-sbaWes215y_3`IhQe2X$2 z;m|=N;S2VMx;r`#1v>_NFb8;s{f)+aD}lc&bNS8V+ray@4QPK*H7nL)wjEeenf3?J z4CtV9VNJ{J>Ton$)tv}rJT8fqn+ zL6SqdEmB=It_o=bWB+f}KFvk4%ePf^!$0$rI}5FYgq^zJqZYkXDObI+%AwXbK3&X2 z9^|5k%c%j$Q~V88ySgyFfYP*n5_YHq3#V=M=>lu5P1eHZ!CEL#*R^J;$}0y-EsBIE zh=#EN?B&&m-6Ki%#VczZ<>0IyZ7r-#k_3ZH)agKD?H40@ZQV3-O?0x)8&AO zu|7>660Sa5#0*1?!X0&+9(h7|tYV08Or)UnM6%Rlrbv|(PJudQNSJPUAB0Mq5b8>B zcnCS^6FHZo)}zSDn8=}SWFocG(#34_!~2nbJP(4b3Gyyg+Hvj(={PhmUB9~^1AxW`l+$$sBs`W{kj)PP(+Tb5T?6p3eP7FcjXmSNqpUt%PwAQB8$O&#-(blxCWkqwlXB?9>lIm+4mZb-XsM|!%$Ara(M!qGnv?oPORBEg<6 zk#LAm#IQ6_LmXKR6~G=KHQWI%UM*G6*1Wn)OV#{(=1$E6#H0B&ho*nvcj$*Rfzf}; zFT`K^ap_?Pa>jqDdL~lV&#$F}ovwR6$aJJ?#lZbm%Bf!2_zCOKaq#hxun!IlTD|Av zrxcTG0qcqmey?5qtgS}-y{cH5t;#l4HD1ik z!RF?F@ZwSW7_VP}SAeBOKZc9cnby2qs-4iTl$TJ~E(L+S6qx$jrbQXFLK2!txWvG| z-Tfi?Z)M*+&qr-r1Nu|7VsnXBp@N%lt+dp1kqg1w1x?}c!})^B*ix!ZQ**Z5W-U@Z z;R%IB8m2C&Qpu))xBE_Q>u|>hU(0fd8vNO zy2k|T33ty^zufvytwCMbwxgb;fss$X45+selLo4(@noJ{kO_C^z~0?G;m}Ie+a86D z^V{~)>>!a(4gjs$235FyLk08Uei1WXMwVgTPP`rREp_wu!UYq?e!{W8qd&r&AOv%z zrNm1h5rDfWg0jQt83=duFI7L;J|EuPncQp@pW{%|cTCfM$*J8tu5!_^$$s_Nj!Lab zy^4(AP{!|6)y^r}YSpx}HT^1*=i-4OEuP((=37gn-Hg)VsTl2C_4dwPRTDae@yJ^V zyL{X)-fc+7aue^C$F5G-HmFZsy|sEPGHcRWByEs#HBo#_8|S!I;`Mn)Aa3h}YSfia&nY+K9et_7X19ieKVdFYUZK-}70+D?(6qKP3(WgG#-Ck~B zyEAQZ+bE6?Q;Tb(NCjat43ptw$M(??Dp0p~7HdBqd$jY2ws?_^3=}gU^7|a}pQ6AF z;E*r8&mOiL1*UsMqjDoHo^E>S*dLlsTwp__gU=<}CF-8gY)4TGR_u2}d0ImKI`nw# z5F{N=t1EBq>lqxxdMSs8Q9kS~pH+@&x-WETxm<~Eyz5zNbYQVxTK=xPeD@(E6j@eN zB6ZYFIE)Yu7dLenov^V>BBNB|lpW#jko?#&^)~6SgjLfWGIaThD(=1{wuq`OCNOF5 zze|*M%DaXD&BB^=>lh;awx>YUVCTTTupuKvT0m5V012m+%MJp$OymH=cRDo4p0JZE z?+f=B!AQ?=NET@@li@?W)?MY=hw+abRQ5fcE{|T0lShU3)Ts?Sa$>8<*x!YApi>$% zgouFY5=L!U6ZTO(&la_E3Qhb)xkEUGYt)W0fq}rZFddQa7M@Yv%5Akcr3mL_PK~!k zUO`>?7aIFrEkL_|<(2bf9WV~L$bS=d83EdvaaO!fIL}ZTg7K~OZ`d_+%AsT&xqH4s z9V3IHSaab#%+(xv>IV*exRkd0Sdz$MufU@d6LaEUE-){CV4+2}0@9R4hcxLH8al5V zWDVO#v{5~(ciW=&V>aaIBieXA)0PN3XdT(MJezRl*%sN3!xD`;s4OODFe4XCY+_q4 z+#q$rt)XIj+&K!@2Ts%*JM^eK>M`Aht527!!5)n=3%BVmutif0Pdo*ljoVByyru^N zIk2u$48$_}^nsueFg*sGBw9oAhyi~lo{kmg7O|9DblCD}irM&0KQ)O4J!mixO*KVw*|qdDw?<%xW_U^%AE zB>%H~#7=JT|E1_~Do;(!qId-y9IP`@P+&WTDF+Snyg-LMBr1up)MkR)&gvbp2}v+k zG=&PSzFU(B5d9fNXvD-kw`M+sJtB%QNsE(O@{BsMq_K6wUDibj;mka5vX|&2v_vJA zrbX6ra_~ND>T^YQvhwYw4tJ~+doB?RswKqhm$8!8UsBxz3} zgpWqcjz2{tw-KOYMczt)4t_dSk~Ybw2xF`LK49OVjTqtndA4HRp-(4I1>Q(5{1}hs z)w1#5p``<(pI^(?bK$jQYo*$Bq}4CNRUQ|Jy&rmz|{pV zEy$X{WYtHpSz+RG38thij;jm4z@TzFm+9DLv5)4F^ZFUEfdP0U1Wh>Ej^+`OBsq_E zjbrizmWulvC+nurK~paPc_I`Z^TX@%=w9xFI=m;pmP&C_{S{>`Ej1qbHz1ZT%kjzo zq9jdb`Hs4JaB0I+Kx=f%j!vhxzm5zT(>zLo=-LU;sWhH@_e3tm#vgG>I9`KgGbU^B z;8G3C+@Fk~pFke^RiJ8yDtKC0bBaxNcDK2$H;Kw+xo|w^XkxGgmMl#9M~i5(>KjBf z*%T3>DK1}2{bJUf>*8FurIa_+D?^2g+Wt3+B*91dZUH6uvPgSWh0Iy>AKb}ik_QR! z{G3!`QYNch?UgfPlcX#jk=87dPg9d;34DXVGX!X5;XWnU5e^R+?6ySU=JJ9)N#)NH z;1MRPf)$@|A!I;qGntPvl|VLuJOaf8Vr2xU5U3!qjKB&4w0wE{K|G-+V$dzwp!^GE z@`h4JG_${`8cZYhBXyArv4F`qg}14 zjkZkBD!(Unt$dl9{SJYb#!eW^?3plECVc-G<$qEA9Ka8#BuRcJhXt@C?YF?jCrV@;M41jAb9X zMk}5)zRB*c!R2NreAO=jmv^!2_w=wwyL{~2@VB%o-mZCQdH0^IN@07f-D^qyyVM!8 z0M6n|<{Yg+y>C|Ml@K%TivE!Z3+@!sXxw*`*yTWmr>GT&^OX^;$-5}zVjVeF#6`_% zEKcQl6QWA_sHAo^=BmM{L;Wi{^&{1mQ?rxR)Vgb(u031}>MK(FuH7)3<{H)z%RPA- z@B(Jva?-)1soAIAx%TPeuTUM&MIFIro4l#0Q0HTXIn0QcJ0C07(V#wvl{;yw52(t+ z&Ds~$;NhGYYnheGi|$e4oZJC9_aWl^byDhQ3455pgG7}1zpl)QSWl3UVw0iqkk@m3i9k0ji zNy%?2|4sS3pCy!ay^t_cp!_s}X9(~%NPCB*F-iCk@9hZp?CpSQn6PhMyI$5JyWNiv z2uHd?2Yb3C%_nOP@?yb8b5oY7*~&`p1$d{{w(ivPLkuVW3dza z^?*SYXra}l$Y+#(a+8bK+64|B4xY@>-cdK4j3by=ee0~LJWE;DQ#4mTHZ!Tf>r@AC z9ky;vz4ANi-CL*Tei!)(N9TaV^NeulfILr4zO3e-n&JE<&@?4ZHO2%OLcO*~Aq5D6 zNh1vR2KHVDoDDyWFwC6&n#>*|BMmc(X2ejyaN*Vv#+%S@!NF*FdQ*D6;N!zom_vW9 zoXhz3hVN|bEeQU$dwRmb!TyfU5FTQD4??JUw^gcLx2??j5ee&CCwoF+>tKdf9>1+F zkmH0Vb0MV5?$XrXZd;T__8OT*Y)9JkvBkGHXls|64*8;y6VDZ?JYzkPGmyd^FF>dR z@*0KlBKUK5qp-Jl)DGX-70(lCqZ%By6ojC-)bydWWE8VOeNI&@DJ4_XD(|MLi`sx? zFiFcf`~{nkTd1Ivz!VL-O)uY(zB}f+S2dUumNVfZeh;$@_%JRHA|A~^=%S1*~xjhgJ9qjDi7wOp_3U&>$HZO8pHWJ<2 z1Zc`9^nnPx3)+qnp4NtjHNjPzHYPDRJ(9Mugogrs1L6Kd@(+}BcJ>cMXq@X%&rOmwM>VW~Ya4IMjdLxlX%Q zt@`9wW5cwq*o*+8A+%rEj8tIGEw*qL?hDfnL9VDvvkkjN08=vE#D%iyI--lzsOwtS z0quaz$S@rS1vRb*<|Hg~LeRBW7SZC`+JXB>>^VV-P{Nxqa(Z)n^Wae+0wdD*$87R` zINlB>$;ak3PM&Xg<32&x!v&+5-^t2_B9k0*+*cx4gRyqVmyKe=jS_-%e~oSJMU?3B zuGjP35fhhzgD4(j%H~rKf#!}2cHifNN3^UM2!P*s~Xo4M`Ft*;Q z*fBf^SfrTVE>|>_HCb$?Qq#jJ#xxT{yn}|MDw-C zKQ`(#IAvxUv1Dq}M0IkY=meTBDiAHP)Lz57pi6erSuLkB%yfvJFk>0~$10kEX@S6% zn8LmNf|+h+(7XV%O1zGki4wjbmuJm%F*Vy}W)QrHq6ieJd~N=NkJh~?H4U8Hlj)d1 zhHyA+QOtLWA@No-)0lNi8~i<*c8aP#+IH%I*PViSW!hOhU8b9(?kuI%@nmrXCtmQTR=mn^vGhy zXA&-#gDzFfVlnE_Gy-GHcs8J|cTSfhnhR`Ze6CR+pNGd(4&mT6Mt^fh9Wff^@K=rb zM2^|3N4ks!N!%_yllk%*$~ER=a^?|+kz8mZ3LVWi9npgDG%j6mQRyNKW?_@l38F}LQ5>$ChCi9(PAt?M-;kS~XMy6RzJ3^N|S_;Z!e}Op>z{|$&kYyHNkQ^gA@N6?5xN}7Ba+pPC z>8OL0KosiF_xfUXy#8=lG`fyxV>WPSpYs&w(?mf|j-W7o&MAH9{;-c1z&zq{@k%r< zrOrd8c3DA~aVbT4F_-7_!l)Jtxa=~qP%Oe*6rxyCfEe-=>@Q`;()eX!vA86@%q$y4 zm>e_ka*^7KI4`1omyX?ipF_)9+Y^b<1&rv~i+dtm07hEWy`O$YUHzGdU9;!}Yf@Ug z(BCY(kVt4Pjq=ZGcKkuyZIU5Nj}->gpW;gczeI7(a?2dMMlBpYyW}Q1P*U1(P2V8p zfV2)pvQzlnlVsM&G)j`qAb(5Lu(auF;kn_1OJ$=hK;+@NaBb zaYeAXX=PheW25{jRoy^<9euV4Ge}Tpu&oET#P_Pa)7x`@OF8brj(&;&)RZSrLUrtP zrBnV3mDT4@hXTJR?rzy}U@snMs3{LrrfuV#fvzq@4kEHqwLMT@S_z-pIu<8giXVXP zdO8~ys|Oya$kgq4MS%YfgrPi#^$)V`>ZJ!}YQ^eb5A>%w{0OhPbg$E;1ql|NKi`a|T5yJ~L|o_(=LrnWv*E`CLo z*d=>`Fb<1+n=rPY*=u2&`VGos!;~!?vK!>j2vFDL*9mZU8BDrlPodzby6{k0+Dxw_ zHOK4py1W^gLHU&OK736HnK*!>S#|%zwVI(`et2CBlh(o4AkL^C z529e8-J;>l^TFA{l9HDQrx^%(hFzvlxUgJPan|JGtkDl`q6bKPsHcF|h1~&%l$lD8 z-DE2+c~ZCG`SbzWQ}GH)?!>FI)NlYP4^CzwQjl^X74st5D}1Qz9~?l2yU!j?!?j4j z2=E$96)B9X>94_ z%)p&YI`0%2sG;}RVjv@fH{HlH(-H9Jvk=wtQSAvcJzjun>1H~N_}S4+W|-NVg|hGB zZl`DeKV?h$XgJCJ>#G1-is&;h2&rIcyOioVUjZzkTO z(dErju+C)Gw1wANy`jEL))?;{nlItmL(lwZW@ORchXX7Ze1c{!hH}ga*k;`}<;8c+hI9n6|&Jl%xb43wgy(sR|yS(T{I=qTZ9AkMj=3spiw{>}> zWD*NP#8?OzKsem;QT|y`il(PRe zTe(&WB@007NnUH6gOL_679z)$qnL^%Z3kL~Xc(IV-8UG^K98RGG*w_4hL*0r~=)Z zs4>g(Q9?NoW0^_Av3zNa*S58$3-AUmS`nR+RCEOf1Zy8wL@jO=XA}a9RvIf{0HNicSrm6S_@MXSsy77hXZ`P3EULrc|Wm6!!{Lzk~%6Wk`MsQJs{ME?65?f2E@WYr0 z7)@YE!&ZlW*=2!om6&a;5p#O;ZCqSMVld@c5f>9n<-vLoiuVyrXP8ymVE z(Hb)?cFG}-i@Cgr>~cM}&bin+Yq8VS(oPP>OUzp61XUx1)x({!!(EvNhkqk^RPYW- zwRYq-i}@Gj)-Q_GJAt$v5lZNkuN}5cbhpV$1acZCxPuU zXPP-!$JJ0M#+374;GGYqY_hBXx~nsMh`;PMGP+=_g4Yj;7Xl=mX3nVAE26W_+0>#r z+l(s zCUH2bvmmTPR%30=GAaw8er#8$7sJzL&frZESaQTJ!#K^F94DS=%b3L_;_|2+r)9D< zI>($7?;a&fz>X&qGvKz)F=xVMor^VMsj`H0SZ8bl@TTN^>5bM69~c zj>%`Yret`ES%Xn_;dBh}ndlfgfjO|3zvEh9^v1&`u1E2AU@2baB&9JIpa+%0-(??l zbZZpC5?AoLaLBJ1gE)S%jz=gLccvVSYf!~!rUu$QyL-BWMo(8)n|x2LJTrH}?_hcj zXS5-Q-u#xY2_1@DT0Sje-D5sO<{YB4h|}RcY^UrQq<4Svztv~YY}4LX`eRemHL`M> z$n3NeR?S!REsvG@^a=Bq-a2P_$^M_=2Fcy(j>j(7>eLS(tD<|O$4=#PG;9laG|DP! z@jS6xuSUnFrG7x^KNDDsO!cF&%L;}PDXl9uHw2qn8rNA7PI4a*VN-LyRCXCf=B;aY zjIxcRxs&chBCus+Q(MD?Pe9jR)@7rQFuywTrONdbhqFSyPY}lUcE2XYXo5%lSUlV0F$XjNSmq3N`!jWx44@#4+ql z!ZHYWbT#sL?JP2j+r0<~CjAjPg$hdm5?+455NvH~Z;%J5%X3uX@xs`>sFBECwQlYD zjSa1>ctFis3T|xJES*%>OLen0HZ(SDY-m~4u(El@sx@1#gi5Su5ni}2BGlEfuiucR zL|;arm@1{VH8nTTW#y`Mn_BQ@f&!8W-&N}yR&Us}qPeMUo4iM}d6MqJAJsKq?wa~@ z>f{#)(2HE_$~uFRGYC`@*mL_6d9l9`My^=9XYGouE1TD?S|jhLywd>W=;3Bw7LgEc z$VcDi)hv{x8_P@JtD9*gDBtx>C2S^9J9hUNh=I~KKOOA6SuY?K6Tu|}?jj!VWfSBn zR!bNy2>E;UxhJff`F49xXQzCdI`BS9+I>A?NQ2t~T-LPfg9l|bajH^(f1=!1OK2n2 zpP|aWvU}MAN`DJ!d^1T;(AymlK4QI2XB|9Aw3hFfeC?lbBdp3#iZ7_MU&*iD3>FH{ z>LcWH>Ucv=?xN)^x*RS%KlkFboUW^Pzp_hnjBWpFhQ@BA>VI;(wt4J@C;z6o*iZb0 z`o`CvE23^BJRIdk06F2H3o7{u>f1Fc{?uI8E)w_`?5>k5_#5^1Qy=>NN#&ae{6qcw z>Dp9!c_;r$lK&k*EjT+<8&oQ8IgWBD*Nb*Js^?^#WKC z=w`gUmmyX4OsQ)xl{nQ^&rH|TJj!_HU@E)3xH+N%q4QT*>EHBf)vD;5Yh6?*>+!W% zo;iu^^jz-PkDhJPd=s6PU8?4}vV#4@deYnFyGQEjLe=ryH|mHw8E|iCxx%`U z;%UwAFi08WH<0gwQmuQw$k~s~Rche*2epGL=Uh#}!T+U!9^|c6Th5Jb4O1zrmt_x8 zlA2GXP*}f}zHzX|>A#RU-qsMP5*~c(5u{7kk4xW&(pJ^|!X?@THTuH5aUF6aEPD%0 zjsT%olYY`j^0&|Cs^S;>w12B(FD}TWVI6PmS`vxh7P}llJY?!nzkM-ceRAsJZwll} zFp%8M7}0V=G({#k(2IE$|F#Ry%pd;t)%sx`Av{#G*}^2jT^OO^67|=!*=og0mHz99 z%MO|qBTVQdB@L;YUs{OkwP#;CGA`axqPv~|i>G?OlZzO`b>I2I93EuSn6(G}iFmD| z#`XZUUy9}hg4Cv7Z0Uz>h{NLU*;PZHm9 zKHYbGg19nC>{I8?H&qd9JRzDK@5$~D69{JX0b3OG2#ALeO5^LcTPcGF zo*P$`uayDrdaW|Xz2ecklaHoU!XKea?9Swa z6<#Mi3wV{@LUm6P;0Zue-a3+K3P~DOc^3e^$8t#;loyrpdXp9$d;0ZyEyiKkR8m%| zTuij92(Sgiw(4<`_FL4`%~ZhMASRM4^3vdGcn8r@pE1>6CY-OL*?eNQ%<*oNx4S#{ z$zYE-n9z-`b~TXjYR}`FscdyJk)r)j-IZ9P-K&0>Xiwimjdl{?@!PAG{bWYh^AqWh zJ>z=;1sLzia-K3jv~qt;wGsp-CK8@4v6!=|FD$DS5GK**sPjLmsN}(FMRCI2KhTZG zV%_pJD&+;o+rc80b>U9mtCUGk3gnN~moBu#o+k7JWfl_eO9`wd@F5laH-Yt(w7des z(h0B$?IA3Mz%l}4aZ9$`$u5^y60q!k!q~wmAZ!DH%Ly#kag{Dt0Bui!nSMpns-SPQJZ zxM}T*)eTn#*EY1>{^qn^2bE@#@J)o}5I95~&mwFmVMhr3oJfL%^%J;;0KKWSo>1OM z7|#MWYIr4noAUU*;_HO{Mcw*lP9eKxJo0Z-=6M2JsHI2M({JY2)AfK{L}{AB3HM6+ zf~RR6uLXH8vf2YO)Qty~_(+kB)|q3Tw>H>|vR$|t@xv@G#N*_2hhs;k+ZLn$`XSZ) Y)0OJWKTpe8OzHGMdKsC{xq7z#KNz&5j{pDw delta 17432 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 O8U8W~t@HI<{eJ+oJ0$1; diff --git a/gestao_raul/Lib/site-packages/PIL/__pycache__/TiffTags.cpython-310.pyc b/gestao_raul/Lib/site-packages/PIL/__pycache__/TiffTags.cpython-310.pyc index 07b1a9771d789e6fbdc678eff7e9b544ca216ef0..cc957ac423889926a64bfbfbe26ca4b14d098b11 100644 GIT binary patch delta 27 hcmbP`Ga-jNpO=@50SHX|S8wEYGGL6_>}PO@6#!#;2Sxw@ delta 27 hcmbP`Ga-jNpO=@50SLCGq;BMPGGM&5+0Wn*D*$U>2p0eV diff --git a/gestao_raul/Lib/site-packages/PIL/__pycache__/WalImageFile.cpython-310.pyc b/gestao_raul/Lib/site-packages/PIL/__pycache__/WalImageFile.cpython-310.pyc index 4e2b69e7a8ba72deadedcdc50dc2bd9b6c311927..5748f63881269a3076d1a8d00f774155b6103e5f 100644 GIT binary patch delta 20 acmX>naZZ9epO=@50SHX|S8wEY<^cdTBm|@Y delta 20 acmX>naZZ9epO=@50SLCGq;BMP<^cdV(ggJY diff --git a/gestao_raul/Lib/site-packages/PIL/__pycache__/WebPImagePlugin.cpython-310.pyc b/gestao_raul/Lib/site-packages/PIL/__pycache__/WebPImagePlugin.cpython-310.pyc index 6966e4aad18ad7d140549b698c9f597efa71057e..51e743390647199ed7c564306e0e03ca78b20e66 100644 GIT binary patch delta 1215 zcmZ9LU1(Eh7{~LrCm%h@If>euE~#3rR5Dm8+I@7*R-LwNv$mquZh?^=lQ%InO}ghC zyH3-U?gIvb7N0>uL>$a32UBw8m6zV?g$UyH?c@A--VTKG6uw88>4^^JlRf-Oy2`V;efAwAF~xd;`&N z(aHuIG4dLShl{qdEV|gRv=vuYV9w&@;00mxU%|6n3jHJo`R~v!?g`%#1H2m9W=8U5 z>B*%^X_B9YuZIRyPc)(;-Qpx)i#*+_9ewa_{|`y1w-j>C^^UmMefVFS4l3nG#-_%{ zi0VXR%FKjlfFGD235U(-_2dU|wbSO2W6D9J=!G9fLt>GiME?vOg>!-*#d;D)AU^~q zfn)qnY_vaTc$KR3gYNkSNxo67JH?Day4O#UwQ=6D(!ptEf5WR*ZYxUbDKc%X)EQL0 zYMWw>qxQ#^ZcVgm4XaRR(390F^VjzN{`b^bRbd2IWC0sU!7HX!KyT;}KeD^t7>Bd1 zl`sWu&9$C#m5h94)rcV?*j(`Y?bs%^t5Q6J_A1I%kdrJ6#p9U6Mg(J{)5=h zrxX2RR&Q=C5#O?|(%g`O+14oxL51d>M4KTdn$6Cj5Ks7C*YB$OFWaY+C-j91evq76 zS++_SIG%j7YZkG+fCL&qnJ1I`Rwf|RKn0is&H+^gKfEaEOx=|<4_6IX00`&>b_08W zPk&@rgNzscI##=qqakp;dOQ>GJ<#eh~5Rax(D;Jd`W4Fd!LGW83415QC zui%@m=aA=qRq@VJ0p1RUoH--U93QI{>P1PHkQOYdcj(cN$hfSKv1k^0bDOX2rZ=GG z|KDEpuCC#Te#ClBul?&*RW!|3`jA-Vsr2BWF5uvZevnX^NUN;&>e@xb_0L)2-_lv( u@{9D)EdUH20S@U7BR) z-kCB|tJ6IU2L3q{2M*>RaEQK0LGZ~3pM28?QSQscM_&fw;}Cz}-|ZS)3m?v(?>)cs zJLi{Qr~jO`TefXQ)Zcfmtlj$7ZWtoP7mcr%YLRZlNp&Nu#;3MxeI_>gx9xsq-;1Y| zZFl>r-9OZ(^F^W-(Y$gCahl}stvRvGcdZ+_rxA)#?~~K`?iv0$K4jvE z4*%5u&(wB;6RPGd_BoNp^AxlLBjspw8X}*&>UZjVW9hlyQwxqylw90P5Abq8i z5bad`N(4#AsWi%-=Q!a+a7lVuVUvBkG=MgBLY=J(Eb$-qi1>j2wVywz?;yg{pS&mR zl~JRYjm9-@q^CBgRa*6+CwdIhG_V&@v8WOgaOeJ?h=!u)AlkOiz&2D-bR0 zQtNb@kL%{{n@y;B}o1kB=q7=s@)H=J)9Ib zIXC=+xW4t7r3ktSe{=d-|N)<6>U}z&rcB3Ka~@FKDpbxr2Ks!=4Ztvp35IPq$@5%lLlZF`oeQ`RG%f0(krd; z=lL1o^X>eRQQbNo4xwhrCRwX{z9gsBmQ8w{r}n+S+p`kZMt0l~Y5hMSjJy8<-MlBO diff --git a/gestao_raul/Lib/site-packages/PIL/__pycache__/WmfImagePlugin.cpython-310.pyc b/gestao_raul/Lib/site-packages/PIL/__pycache__/WmfImagePlugin.cpython-310.pyc index 970c4a45768c81a824e48c689fdc4d21ce991926..14fb9918b9878df936b0eafeed3c362c100fcfcf 100644 GIT binary patch delta 900 zcmZvZ%WG3X6vk)fK60N)8vDqj_C-OvGo^H;tD+)kTiP0EE7sCUVw#%BB$ldk2^jnf z#)TkA>rPyhu3Wis*Ogn%%58TdC`ds(XA%{}3-g=roHKLoH#4UrN26gq3_Swh%)*=U z@lkka)9>n?J=v-@4N1A#W|C|WNwx{Ms!U99J7P^!vNnA}n-;8KZ5A0?#Xy-_IiM`9 zTu?UmV86}%i$q$|NMkpMGNfPk%@S!#^WSVMOG+$?Nkf{j$u60CQvfX}4|)74%MhNZ z8e*F#!BDJgsP-7Dg!k!c3haJ{_zdsY@c_n62Qp~X&9(W?em_e0 z_tn+npuG}2NB1ggHXr+Yay|~vfUAdxS9@k9Fifg}f%5>A%&n3|YBS%mi% zdBil}B#w##9tGEGyPG=|K2|YmTX)r4=eb&O&(lyvZrb+>n>!DRmxZVc^~{~i821|G z4%@rXVGm*K vl)a9ziCa)N(u@}8dqs3($FCx(J-^NK!TI*+kfVtInC_tmwru!TVd!Ccs}sB zzP=y6x9NfUXwP)+wGBzR*=3ScN!tX?x-4N@S)dH9Y*40FDNq)7Bza_U_X3foWO*`( z3S<-&DH3T(K?BHpP=05!An*kJlr%yl}AacZOc@bzM#$L;1ZtJ zZf28-uMm&$td5Uh+)hCT2W48}c!pM^dSrBSII_--bq7`B!!zIQ3=)MdtC@*2+(u82 z)AAx@U=!HO;S&Yq(E`bn36i+r={oIAYHw=jdH-$+OS;m7algPhyt!tCxz!q6{NO5^ zHZT3%oKM3Kaik4|mOZaW5?}h_yY%;bNqUqLPL}msJ~n@N6aK8IAkF~}BY-+^b}3bD z_cRSu&&{h(?&Sj8IooH?;N7XfSrI3oux~tW)z!3jKDYsqO#>st0#h}-H`W3qc2(N{ zab_M1t=5z6Scp@g%eI(=LtI2GB9;)#h!s@{O7yi_46co@LZWOA%GS^f5bNq)P_gfz zTu|SFehDL6jgO8y^*?|2_ibi Fegi~8x&{CM diff --git a/gestao_raul/Lib/site-packages/PIL/__pycache__/XVThumbImagePlugin.cpython-310.pyc b/gestao_raul/Lib/site-packages/PIL/__pycache__/XVThumbImagePlugin.cpython-310.pyc index 08e21530138e8cbce61c41a0e15b9f0b5f6476f6..f28a8e3bfc928866a226f1f4f3fd62437ace95d3 100644 GIT binary patch delta 58 zcmX@dbA*RCpO=@50SHX|SEo2MpO=@50SLCGq^9rO$h(D!iv!4WW?*0}J~sI@({{EL))bC3=FLsari_eQ XlXtMFvavABFf#q$e4izSkx>%>Z4VKp diff --git a/gestao_raul/Lib/site-packages/PIL/__pycache__/XbmImagePlugin.cpython-310.pyc b/gestao_raul/Lib/site-packages/PIL/__pycache__/XbmImagePlugin.cpython-310.pyc index 671a66f90385e50e8acd69c5144af00196882d95..be9e3de9b125dcf94a86cf7527b103915d7b5ba0 100644 GIT binary patch delta 71 zcmaDR^gxI=pO=@50SHX|SErxa$m`F{xMFfF^L(a-%$rz57#S5Ni?TlB;sh#iW?*0} azBQSZ?Ksmyrp=ewQWzQKHk)(kGXemj&JsBQ delta 78 zcmaDL^h}61pO=@50SLCGq^958$m`F{xN34N^L&;RhJ`Gf|1pa&GAd0LW_`v5Qsm6Q bz*u~5GBew8wiH&df-`I>Kn0r(IrJF;T;mkZ diff --git a/gestao_raul/Lib/site-packages/PIL/__pycache__/XpmImagePlugin.cpython-310.pyc b/gestao_raul/Lib/site-packages/PIL/__pycache__/XpmImagePlugin.cpython-310.pyc index 9a2185879a3feb51205c5cec6f652e964289215a..3827f4e048ab8da1e6fab8b4cf264bb012e29002 100644 GIT binary patch delta 84 zcmeAd`6JAm&&$ij00buftJB3d@;0;Zi!WqJXRKj}mrP*@X3&(GJfG#vP&soFxn1q-Bwlxh@;0;Z%PeF`XRKj}mrP*@X3&(KJfGzZFLRMBP)!jd zh+y8F&dS8d7&keKEtW-!nd|@NlWc5^j75_#u-7r>O!ntE!00+zfb%(P1Rs+S69C%l B7{>qr diff --git a/gestao_raul/Lib/site-packages/PIL/__pycache__/__init__.cpython-310.pyc b/gestao_raul/Lib/site-packages/PIL/__pycache__/__init__.cpython-310.pyc index 72b014a8a09610507d3f64857dbe91a0da706941..b58869fa0d3c333a7396d1b04beb1ba6fa29af95 100644 GIT binary patch delta 20 acmbQvKb@aDpO=@50SHX|S8wF*VFv&#Lj-65 delta 20 acmbQvKb@aDpO=@50SLCGq;BNyVFv&%@dUX5 diff --git a/gestao_raul/Lib/site-packages/PIL/__pycache__/__main__.cpython-310.pyc b/gestao_raul/Lib/site-packages/PIL/__pycache__/__main__.cpython-310.pyc index 9a861bd87cb71f02a7698235ee7b64099d8749bf..4eb78b21e550c55e67cb675a6eb9383816c167ba 100644 GIT binary patch delta 20 acmX@bbc%^PpO=@50SHX|S8wFDX9NH-VFY0S delta 20 acmX@bbc%^PpO=@50SLCGq;BN4X9NH=4+OFR diff --git a/gestao_raul/Lib/site-packages/PIL/__pycache__/_binary.cpython-310.pyc b/gestao_raul/Lib/site-packages/PIL/__pycache__/_binary.cpython-310.pyc index 95f329292ba49df44aeb7c153ae1b8f0f0c28c9c..95e0f92410b541d17fd37c0fafeae260b4f821e2 100644 GIT binary patch delta 20 acmX>ken^}ken^}_;X diff --git a/gestao_raul/Lib/site-packages/PIL/__pycache__/_deprecate.cpython-310.pyc b/gestao_raul/Lib/site-packages/PIL/__pycache__/_deprecate.cpython-310.pyc index 3057c76381503bc31bbc98d6dd0c928db060f115..46246cd57f41fca21dbdb0be5af681e0a607586a 100644 GIT binary patch delta 75 zcmeAa=oH}2=jG*M00I;L)f>4tvk6797p3Orm!+oMV$Lm2U&&CUJoy6KG)C3Q>FnvE Qsz8NB%BY0OpO=@50SHX}S8wDtWMsTG*_JVmjTb0V#5;K*V>pO=@50SLCGq;BLkWMqt*Y|9wO#sd^7;+edVu^j-IMhH3p diff --git a/gestao_raul/Lib/site-packages/PIL/__pycache__/_typing.cpython-310.pyc b/gestao_raul/Lib/site-packages/PIL/__pycache__/_typing.cpython-310.pyc index 9737b2928686c60e49ff53f5ae4109a652c416e8..c1b1af9e40fd9a726fcd8f2500ed1e13a445cbcb 100644 GIT binary patch delta 138 zcmaFPdxDoYpO=@50SHX}SEmb3NM-^OOq2at4o)^>HDFYo ioX&cc@z!KpHgm39907?X89tfWsgq0C@>yh9c$fjsWFhMS delta 150 zcmX@X`<$0IpO=@50SLCGq^65Z)VlHw6GqEe2Nr delta 24 ecmeyw_=%A_pO=@50SLCGq)y}xVlspo5-eR{b~J|E zDKzw<(U3rHVoXr8YkV-;+J}uXn)vf%qDCK$;lURZ<5PVw>08xvFNHWabMl?<`_8>* zGWXmY`|7#&<%R~0;L~;ClZCk~A-{{{|BsHzvxGpoZKu5yI!Arff6GyD(;N-b5F!s9 z-1#(uLMx49>PNw#2}A)D_F`9Q$Gch~M6>f@+Ig1HA$pRYLN$WE$LSM@8tEWCO}h{^ zq1sK)AZkXnhdzlYit1Ce7g3B3(-GQF2X56DTBtHbGWps?_}UfHNBXA+i-ocL!1(Z< zXKiWmaicL#3s9bXnEYTx*JK%Kx(G)MVEe=}U< zje+CvA@2`_V3J=B{2U)eaj$;Sn!jE)1HxzsLY-Y%nJ-aug6D!MtXd2Xz-RnUFb&gu zBOI*#5xfAZC`Cta_(b$Ogk>)Vr_%`sD+~@W3$=}K3nZm?QWU%(LhE6O3)F|TH7**@k(rRKTLGq{ z-^Ek{x9#BeZTy1+x0iBQ_-&2at71rO|lo zfRchUgyl5mK&u<#-aGu{aqA<+AH*P~WpGQ3jn)nKL46@q6iGaE1Sp&ifT`KhWG-O!MLLYhJJZ EAJL9T9smFU delta 1263 zcmY+DOKcle6o&7a*dxb}@!N6yi0#-;<2a!}82`DisMN5Nr_}gyfw*=IQg(P2A#a7z1aL-yQsh{ zKkVIwEBssU5EPq#c}GDl;uGkze8?Yxc|POshfn#2KL`u_ivP#NESfFrno)kMuKPt| zQUGn^sx6&~{cf$O>rMYTG?DcYRne}>03FQQJo zCdKzKnj_su!F%bPVp>eA;bWE^xBxf}=QbSeL0WC)2t~Bg$O+0OSU295P~<72g5Oc^7?c zkC<+zA?w*fU!P}gF|1gNN*uYvbQ>1tZr>Dp%FHz!H`7Sacq3_S#}00^1N(SBN?j$U zN48GMf-UB0L}^wGB5ALr?@8L%rfEs9OM0kHGm?HFX@8q$CH;hX#;|ctV4P{-U?%2y zd=%vE*M@K57=_bBT)BL+6}#U7ll*Qn1=IXqG9RD8@BWTwX>uajzm%-$RipZPbv>sa zL99>lbm}S$^UqRGz!`oom2lx7LUM{;5bjAn(0dE!_|LuT>XHBpd^&wxeOZL3_|^2h z&8wdiiwpdIdWPpSY1~D{OjP{`Vf`krWzK+&|CE`6YrL2Z^1!cmwbN delta 20 acmZ3&w1kN}pO=@50SLCGq;BMvWCQ>%9|S-E diff --git a/gestao_raul/Lib/site-packages/PIL/_imaging.cp310-win_amd64.pyd b/gestao_raul/Lib/site-packages/PIL/_imaging.cp310-win_amd64.pyd index da85f2606a5543459132024964ca516f2c601f1f..0f412e6144c825fe32fa343f6f13a1254e37fe96 100644 GIT binary patch delta 600721 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 z zKFVs{G8Di%8_B@DS$GYTAK`pOrOy~?qt(8M*X%P!usIR>8ycF-id*Tp<)?sDaRFdn zv*bMZi#1Cb^TO4(o=hYv#qc|808iNzB8DJ*e(Kl@NCXfsF%Y9vsau66mPg(p9AJo% z#0uZs0K}(x3~A`53L=KgV3{x_C%VW7eo@zh0yU_zYr0e>>kQR!)K;ppDu9zgbe4K$ z6v^l)n$lth_XaBh5=asLF+mXwMcELPT0e|-@2pBvPa3s-yZAgn#F}x;(x9`V41{BJ z`4osxCXinz8~Knx7)P6v6a@+Wz|8R3l=%z9n$s3w#Qb|nItKQ*%?Gxg$Y}?K4k%ob zK1XK|X9DOGr3t8<4{8Ra1t|xcO(N?HFxXt(Ff>wZsrzSNoCzap+z;QEdgs zsl4;gzS`nJLZ5EqboOk{NkV^5x3>VQ7ms42pdA<_1f0{b+r26GYJ)M`aYFM95&SYy z@xO~oglbV+n_>>GevfE=oV{+RkDpMilW27!_6NV4*RTym{UJhg{ zidItg3CIpm1dZ80ZMIgOC-l!KVsnOO@torXgHhVw@`RhfD{XWQp3JRhzJT<{F&jDf|j zmojFc1tXDJbhpLr@Jm3V5nqMhx(6TCR;c60x5kmihwI(z2pwfhr&w5C!PO~LExJGxBDMrCtRH6qBy68BRxA@d zNSw226k7%vIm#$IZ3MBqMc;^xNNyPj&^jmKgY}MC%I)Vf`*LZEW(#`Y7$|r(ZST-} z0L<@hLn&D>JBf}P4X1GSsDG3($jKq54S~)ZQVF7ZI=O2Nx>;7RDZn9=3tBOtU8iS=E z5tBM&V&f1N-QX1^ke~vedn$JM=Bc?EqIpSfKheBYhco&6CuG)K*8BB?=V&1quof)1u2X^MB#CR`@u$>jkN?gY?B zKlz5Rp`Ns`z5}p@GQiud2RnePXr+^)+7h>~2cJiFFEh?jX@QPCs;(mhZsca;~ z@108oQ_iJ=>G=VI3Cpu-Q?6h-g5S=8g6Zx-f@ukU(~)-$t12 z`58=z6P%1kfhjn_5Z(ku2yQ}SRClM;X5n!5O|5`w{@!3JuJQCHra+TC1qzok3Tj_n zE)0=T`gJHiPd$wa;F*o9osE@STvl)eS9c4A!l!0%byE>S?V*e$#PV=wBFY~@j{o7U z1{zM1@hA^qYugwi7U6N6$;Z2wuI7XUH4cALrQSf{;(`!td|V~dk3)GrrC_6sl@7P7 z90eIlKy-AJviBk{{4>}-f$rqY!2nTp0i_B{a~3wd-WIQe_Iq92a~3Wh!PQb>R0SOL zA_P6KF4vk(FNIl9xgl_lTx+6PrgT+#b%_U@;l#JxYU0~O^_vrahr<4wrX#lS7JE1` zVyQL!6$f0(h?JZRpG@Ue_G0BvXP|W!R*wkc#tR12fKu&M?sF>DBhU~u=?ipEZ_<8* zI-0bDUZ_cOGeYOI=`|xA`Z-ck7LC!%`4wXIa!6XyQ4aBuC-yU-$LVR|H5#D1n_ zY%udMp#GK`S~JjpQ%g;ffr#7RqnQKEF^H9nLw_{vo4D9;T z`YfbDHt^o3wg%MZjU=3Ot9zIf^E4t1DdsnNkffOZq@Zd@G5666NilaJ&;=~q z%6E)p*z5-sFM#VE6S%Ta#3((DFM&c4h(oM=M^RyV!Mv*OQq016+Qch_+=~tPbp>A% zc33^MUtdA{)e8b^v&be9Qf+1d)@O1&n>B4Z&g-$Memy|;ov21}gfsw1mSgITf?l1; ztJ}X28FNyqPVkC}YoX#V_6A^-f|HY^THjrk@LInSx#k+JSLuHUOYxE8(CO3CIrD7!o>xirYgI&MJa|W z3$!P{k+@uMvdMaj84~ESY;xI4^a&ocV6F*2N2OA@@dtS6p(D<~t$X0s;xxAJt?ZIp zziNg?g`DHe72iw92_S&qVK|3bqlTR%r&iO$jYFGGTGh!}@C>y431G6MzCqrI+-;Kk z4VqD+dIAnY9dHYTD??hiqNASgxRUQgIO!RHo6FO~2^(l5^2Hr=dTc5}l+*);m=1K| zbI6Hf!YQ)nTZoo7A<6_#OZoq#KLGWcwicE0K8D`?I9NdvSsBc==vjMSLW9 z1uO-?)J$^1MVhFdiBA8w-BfCZlU4K59H06Ae!d~dG34I7ki(B_fyrMxOm~9C0F>l8 z?w_@mAR=)k$NknR5UN12R_YYhvr!Jkz^1@&UgX3>8ZsB-W0lNv`$=XUh;I2f%E_g2 zDA#0XbnGw&f4rGR%B1H(7NEc)3>e0Xob1f?)%}yJtpG(q8soxZq8fPt6~pbGjf*bn zJ{fh2 ztWj}KEqGTYOy8nK$B>$pK_&UD;Hjr8Tq_`^Dn(&W^g7sUJvPAT0dN}=7+1E#qcSd3 zKG8yKOK>nDFElQpi#@EAP%mS?pO>7#HfM%gK2$i{v0#Q;EU79DqNjC9nY$HOt~M(y zf`Lx&KX$t2sQ0@I!oWI5QW=m6Sq}gP_C#aUc@B8%84vID!7KDG(NF_VqSJ(^q z%qACF0pK6yN{&WsSLg*KVQT*!k^Si4 zDowRp;>6{_1j-s-1kg1AzLKQ69c0@h7)Zxy^ZkVoI?Tt1pM(SB&#hw5*;6hDq`7e=CRhQwv zKe8BYEuQOBdxI=gi0uc&$OMbb)q^+`2c-OFX+ZIkz<@R|db2UUGqI9NO4(d!Vr@m0 zMT%`QQu)+WZ1DX9T2aDGu0cS$xd_g#loZ^0us4{emf;%3#TBBOS`(w@!mC}=!k*OR zKMev3hlyFx8=^A4AuOLlBWZO~)qg`vCoYRY6&Q{p2r*V_rQ{Aji7YVKZj)Bo%#}Xt zRy9ls6OEOiVhRhRMS2#ZbH>;6zDTPw%n9}hTfru%!}I30Kwz1ul_5rjXqniOO6*2a zQDapa6v%mVTVW%e0oMSj>}?wz%xUtee?^|~ItY{0@JTeIP;USm3RUkC_gJ&LNntS_ z^+hzETlp~lv(czSAR;DoI3#Fl$e6Rm7#E$+ObL_@*ds~fRzAu@@)L{0hLze z{`{EWlYHUv!bs}F1#qw3gc`bn8~1BA!#NGrn}B&kD%<8i%MuZ_s%u=7shr*u+bw7+=Sh@Uv=vgNeNR@zbc3F$oS|{e3R4=7Qh9x04~7#2g>AEr{}=CJJ!Fg zv~UHEVBs<^#rjvBBjNsbX$Ue5S-{pmI1r$_A+V4Y&Vgno6j%Vlb)? z#Pqqsh#0JK18Q$|yFtPre$42gVG76@o5G;zDkD3J`aD{ogjdu5H`si@M*1dwT31a~ zIa*`f+b)xd)ImO8EMm8TzCC(LlGfpxmhegY!lB`}*P#q^FpF+E?xzo%PTIzj&UHaI zy?E4&iAj}W_YA^FHq$;&6Sr~;0{Vn9z#@SXgH}rFuK+?KB5cmVH|H6jb$=zuCbhXz zOtcc&1XXL*r<1ytFu_P&2~p#!42%Bdyjh!JUQdgUF$pCrC}VvSWN)2yAKgu6h5+EAsa2BtHj&hbcvcA$2-ZkyZ)Td@8^`As zPBzGszT(hI77*JH(h|ni%S3dDKyH@?lz~7_0f8)=3*V4|0gbeNO`!El?4XmWL?cmn zm{pSqJ*m7*yEh-)fEpyy7;MjpP;tkc>6nOq^}|l0Qg}56Mm}#Ex`5l5hGZOHyBj5A zDtxg8h9@wqIE}e)456A@$m)f%9cdzdFs;QEY&m92p)nxdRl^KYXpFx;(&t3Won!hR z31{f)3-<;jG=CfVM7Vo5WM?XbK1q@?;bPX8M5<14(Wg*8?Y-!p1#s0fiRILW?@8z6 zL}LrPRvV~l(i1DG)a3+NP`#(YTSc`y^)j*T|J2X_&`srKnT?^EB6(mfQ*=~$<3ABo zeGEH^={+Nf8l6i_{r!`p=;a>Y67gALXR)&=e3{YGq7F!=;EFx#oC--c78*E3+!5`6 zf$~oEW91Pkr$S$D3&)n1c^^t#~{-PgtBc3f>91yw_2 z(U)FGWYIGXL;zdXi1<pN69|?i$Itz)d47-Zsd>SSnp01M7;|-Bf_)Lg zKiavKpCRNA%P`M^6v69PZ_R`43*y4E!xT*OhsU9%zruUXVh3dn;c|l?v4vg5l4LP4 znxFR571%^;XGRL$E`11tuTJs8@v}0^TUeDB#JQW@(H|lBDO{Kpx~Zkus|~zL$TKh0 zCSD~Bzmdo3h_S5bzJ&|1J(~#Rfybc-ZiVriQj)`juJKjjlS8?>e0(ab8WzfEDR#_5 zEitl|z&XsOgBdk3(;_sQ(O3(1XiI_TuV^1#C0rxZkOuAQb}_wmeVwz&apEBG&*|R2 zCuZH=6tg9oq&ZF5*cwAyrtgZ4jWoPRLlg$u30WYvbj5jvZ0!zC#*$Go5gH0C%P8n) z@{p*s*qLZn5t3`UV#ZD#5StC$*(cU6_ojc|Z$Vl!MeLL_dmI1l2XlU)TZix#R8?9}WAYADr9=%H?XeDli-3>4#J6&{< z(di`k&M;}KrCwAh(t4}y;GTz$JKjnt88f(h_+uiI_1LAsT5t7cTUSY z8;;&sw7-rLoHA?tPuq}z>;zb9n*msV;aq3%a|=D0v3FQRG<^a7(m*$d~6 z2@-GPR3`i~?tz)TqP618q$zWJ<_!{go5UCu5UUHwoNoL&HrXH6(XBIw2WuhwB zUsG*V70hFzrw`bXO^2Az+VXQ1Qhm4T^$`%{Vn-=D9`6=DS<2PD*$IOjuJ+e>V-10u zw>6TdI4d-osy4dOWOM@_*!O^&c1F`W=34X-tSW4hJpySmZciZYuMC|7bX9K-ty9?k zVE!t_GQ|=OP}7ZpuH75@<$tQ^w;=i*V|b&{`Ww$_J;caeTF=zQ7w&+Jf#~SL1ifGy zgxxNq2fJaac76|V61uYo|A!8I0n&{Q00ZxosrmNs$vZ>yl3lLA*yE-dzp$3Vm8xki@mcvlH7Ym63iROb{TL4Su}b+88x`ZZ{cS>8Y@FMPZUpooB(O zba(VH%%8AgaVr|F!-Cx}3=xVp#DJpjr=M0}V_4sPY2kVeMQ z8Vulb2qyKmYY`5g>Bg;m2mv-9S1zNF=VYimyz_B&^YQi`_+kuWnO9t&MUotNQ^6q4 zNKC;}LJDg18L7~~JQdcTbBE#34)(CV{NvD0i;;4e{yRWfOrp%pEZ{5{?lAq5;+G(S zODN;PMYgmbP{s!nt;+Z%>tBB9rI(b6i^5Ho69@MkQl3~wSsAH?l756bUD6L8KrRI| zA{{g0f*o-)jX2bsA}RGGLKoY=64yf-YLX@8-J@6*SqH|?PUe1s;!vD3l0g*5q)f~T z6fUR;-iZG*aT`J5g4w}I=q8K{tj)?_7#q0VudEecyBDQOl6|~up z-iwi?EhIxvAQ+8!Sf<+r$%8xex-H`wF-Cq&Z^)$ljmguV5pz5(Baq@9apzDma5WLM`@w7%MtX37kkeJM{l$v zAyLY8@S7Yyd6uhv7ZJ3r3kkZ^&CLXiR<`F2rm>Ay>^Y>-nP8k}s9laX8M8hl!f4T z9AM5&rf^KyiuzJR!v@bmajFlm8q0peJT_VwjL zFWJiujWOE;5hPAMl$AR4?%3Zz8Wep4Ck?>o z`tpz9y6It_Drr6p!H$Otx?;Gb3_BOa<;LjO?bymFFF%G#@F1lE9wd5lSJ6(QO2Vlh zNtGQSU;%Zove4mIhDQg(q*rAc3?}AXOD)W%ytIi~OJzmoo%Ka-uvD(W=vU~XPbSwS zB^+0uVf96BglIyZn^X<8lH^mDcqX-WhSak|LnrtlO$~2Ng#OHkF{`G931DelqjY~| zXPd$yV5C{sN--LtYZ#z{QeGyA;sLz53i`%-a%bq;?Q?NN$CiLHn3#qNNs%37wlNc~ zHil^rjE9N2cM94c8bp?o?Tu*y{x255EJGk`@S{1P_i z=L=$2=tb*-(?KXx-~L>Tkg>)mA0S7>flgy=JFsbnKk^jKCgP=M1|pZO4yGf#1ebxS z@)sag`A5{1gk59FZhqkiS}-33anmFH>M=bYswtS2jKT+hq=AYfPHq(@jq)n-tPr6v z2D6O1b*dggCkzS4U)499@btT`MRgk1n;8MkZTAOG;~SL>kH( zw(}o7!R&_~A|(28bF11sIxRE`uZRr|j}%!(Pq2grM~bYYCs;$-ks{mZ3ARx0NRfT? z1Us1GaB~XFVK4RUnO`r$bULz(O4hq0DJxlPVUOJnLBc;0Iz^tN9)aP7x{0m-kI-<5 z%c9s_tR&7&{SY!bv$~R^Aqizq(zvsaq=xvJPb54|u+)G7)G+n7Jm`Q{lDeI%x7%e5 z1-&y}`Xf3Vt?EjqRA;$#;6l|qIH?@SRNs{ej4gL=ex$q~MwV$Rt zs|`)jHUSXohh5u1ie^@O0-81}S;e=3MO0T3sZQ!L}H!uym#B z0!+YN(JhGfsny9zE_a#bxZa+`Vld*4F8hFNtZsph`4-q%Rl~*#InJBqsZ6oN7%F}A zVji?gd9`CE12PwCp_x#3;g;|UW(M;bbqQA0`kEL}zf>2`aI+O1h9>UQHBF~M>8u}k_HfI8iyt4?jbLe5s7=t5Vk(+RuF|L3oHtJ6-|L)1_l-2xF$w2D!6QU8Ilq+ zT6(rTQhJtzS2(tSO9i=NT&|*+;o371I)FSdkZD5}uYM-#e@G8sj}b;`p;!w}w2aAcbU?Snpb8Ch1aPl`3Cm>p9l77Mbw;_5EN7^=Dr*WwwT zJ9k&zp|U04$|Pf+T~&kKXVqQniIUOnz9)4Px)z*fFWYX%)qSIsFzsIBmqk{vG_6$w z+^5{%8gDH)q1l<^BIGc?P04i=hOhlXzbRi3mAfyi@cuk*{QY?_e1y*Gx*WKbgH6Xx zbX(#U^>5K%Z=>axCg!a<=KJ~$xi4!7*-qj+nLm~wX$i7GdP9q?U&}n&Yk=mw)8>#R zRUsUd)K4V!(H9U3sNec$J@q_7WOAx*V9dC>M-?S^n_qpPqNbSuRIc7Pv($>KQE?3h zuEvY3B2<@fnM-}p1G(xj4=gLc@JBT2GER^*ePaEKqOgVXwJB#2c+ zh?6&sVu2}iGr|@lJQ-oD5eDLjbQKe&DTHobv>Pv%;X{fMz69Y^BkV%hfx;ceyFK7( zp07#n=F(Y>Vq_I{Fo1){BRo5*FZLpca>XLj;VS4#QD4%uo|r6=d$mp7?oSLH0G}0jham3EA2K?xlJTjHF$WrwWXQm0 zZ40P-MI6`T8n%^^^xz7vzNd9h&FOCwm=uxa91arV9@J(~HOE+ri>#t3uBf%?pc7hK zwP`cNlc5yG^KC{6&Z-ieHVIy&BQY=qHCy}^@HXuOI?Nv zn#2K1H|syOK`Mq*WstX zNqEKZNa;A^-qZy@&L4i9F?b|V`ULrJ^Wc({O)LJ_-lApc@Yq&36JgPl3YxN zWq`XWf4UR0ls`NdPsmb!wN1*ebV&L4W#o6q6+HsZ3#jm^w-1-si0a>fc`aN$-Zw34 z{5^c}tE*SBCs+TzPklj;${v?&=!>J_H@qK(4+GvuPNr zE>dfkHOha^Cb3R`yq7k`vc&w_HI09Q$Kw3jRgJIFr%Vez<--u6xw9||;4H1fPnzSKRPh}kJ9+-QUA?b z{zRLYzdN9g$^Gy0$UiMUe1H&AO*pj) z)nFz9oe^!haJ2Qp(HMXW6=J_&v^+iKg7MQ+(E)`dZK;nAf7z*1ck)7T0!#OS)srx+J7xeK*e7IQ8 zYtn8D2tv>8qWT?6!xeu^Cp1D~ZACyhJTssUpi@R8kqb8zOQ5Sb+kZw2rijB4lNXN_M55gEr-9d zk2G$gkZXQR8#z(P=~IvkqFVEQD;lr!Rkz-Vb7T>F<1N~K6NTR9TeKAuh3vAap!N$_ zW5Vag$EoFEy&h6OsUM;Z8k)(PqJG@sTPdKdcd2z^q$C0AkV~FE;to)O9CaUjqaK|o zWbrW3@HAItY=tJrR0(CzrE$0Bm?T_mPSr+F68>loYhO&lsr#@tu0qJNOtos)R|t0x zQA1&LhOG+l=dAi#lo4>_b}Kg1Fn)#l_-2HnJ1@m%;j=$D`^xk3bf>!_Xpra(N9}&K zP%X{!!+=FyFvg7ochz3?7QduU4@i-x5};n{#JT0x{Q$3@;Pk;} zI@R$b{peDT`eFMQ>cn7TJ6uwboJbvCpnl)}WnvfkvUgzUNj@UuBQd{wxT=e} z`czyT!_ILytoxz;H@6?K?uS!iaBs~{_>kNTGiNMQ!fM=)z8ZnRYIA!Whw7p39do?d z87ev6?B(i;Fc?U@rTqYGP>nndqJ?f(KPRu8%p7_jA4H3|$^?!*b`&@Yj{AB`_zNzW zCwcZ(^+-0%pJ=h}M_U|v@rl*}n^C`YzvRXp8~;TQHiMxa&>DzjM9^)MTyFgU6_?T_ z06ox)_Bi#SSf5&~Cx1dyF5Hu385b%dxEZ_sdDMJr{NQBcsoj7kd|w$|f>i>5&7wN{ zgs$k_vK|%HMz}A^!BM3Z_hHVdyWFjw)ojET-~RjY8*C?Qg5xXFqa zJR7Zk_XnYmAf({ffm+G}Pu7I}A|#eTH_7w20BuUR6-y~nFNZ$F=c-#vA(uqglPyMO zkXsZD@g}?!)r)7TN<0(E+Nj+N_mfOyP}iEeRiri8fUI=w{piPaB$3@Am;rkK^|-mf-^HJh1Tiuqs0Mn`NPpasAt zh!sG2;CBuP{4d;^p%gh19}I{~%JhJ8AFj(fWa}#jP=N0LTA|afFeIqNd10<$Sq9!J z)7!$QGOMS;sX6@7d7YJ_vWDUzKGl7k`(e|C!C00_S(S=B82@Z=qHZdH6&GfYV?$fT zgg4KpuA#_Eu{{>&q{w94W-B*r_bDtEl%ZSoH61nilvPv{9pL)es;Ep+ui*s5lJRs% zzfwhoRSBGcw<1;s^J$peneL3ap-k#{gUJu`mVn&=WH{vSp7c0&4_I<2 zo}zOGK4psEA6e^#RU0W#Mxj@DongG@;T3uoKfOlSNh(TYfhHQUSmF`;GKt`2(t#fC z!BWjdbo8hVT5Kdkg3Q_*$R}}gz}=)z>COozS}Mbv!hcAkHkZ*v>3kiH8P)j)vMMGz zUwJ={E{6}8W(K1ku}wphOxEUbQ<^#aBjj|F zx)%+nkQi=E1L}+5ULl=b&`US}#tCW~e!t!57p%ddio)%xjSKsdXVhM>kHm4VQkdod z4xa&%F>;uu%4-QD0}+*w4a?a@C{x`YS|UM@6+WF=T?UD-6WH8_SpfsbN-@11lb{DC zK! zo8eQJyfvV5+y5VxgZGhl82I1=;a1lYzQDpY(HuRDX^c%m7vvdA7)D40jXBdX)*UCB z9J?0RdA9#PnjWM!VXCYlq;E&YM+<+r-hOrTQ{w+ik(x0M}{=8S#?It_ zL_rLdfY41=RJI*8e8ou~sbX_sQ--RrhhJ1G&a7o&r#$VxV{m3om1 zt3xlvyK0P?YuL?jkR3Rfl4qRi@^bYQeH^B@#s?hr(vw!6=!`T{tFmE-PJ5Off}63h#CSG z9sI|nz_Oc{4@ZA2GbRtqwHcOnOD#K>^xd(p4Xn4CtN&=USPfmt%_1Z zVM$s2=qtcHan&=97w{fW!5OogR#?PD6PS^JXUme!l3MeO_U$~F6H|uBb!N!3;n|%l zZXl2ER-GAS%@m0~>LT z>;`OgKRiw>=_i4KhlKecW=dj*==uB7uOWhE386-V+JWjsJJiQ&UZmDXya|Q%1L{ZQ z)B6@>^K90m&!ft~EY?h7^JaY*DM~0c6stV*=nJgzEKNtWq}1y1>PN8adbYC2YFh!Y z$hIdS>#9vBIAI`ayHP+I-3X~{qj6oV!p@jVY)DwTVlwJ3k0rY5#Tv(S}f zU&-1zG74KWG>h5+qXE_h_M)ewPndM4b}w4 zvQM^vV3Z8s*JLP2B1mr_@+eyju;P!v#p+~=0y|%4fR1K0y+dq`RQMX{MY-AqOl(Oe z7Lop!uf!2Qa1R9?3}`@IMjCY5#6hIlFW0YZk{L5w0u!DT-0e(X=7Lcd=%wik2ja(2 z5b{;7?qO6^0#(K)i~6Ccrit!$yk%_S8lEIf_H3^X;CdO57D(>N3drvS0ox2@VjLT^ z?`hzQB-IOquYj;=6=Tg-$r(=d15xdXZ{g;n;?OkFiiHe(SO)$dEQ$yhp_Cmcg>g)Q z$c#Ku>FJLwa>njw`@H&BvgrV*7>N+C2^Qo zDisC*te5ZA#o?mUQl!55(%kLj+&MURynEA22iiy+i`{F(K3c6ms7(LFz01fYOP(g; zE^%6cTh)(R{r3yEfSg%%3`BAt$N0kD03*00!-9s4%n;rC&~C}oTwSI^ZYx2q zT#Xa(&Kq34)c{(@&>AC)56O{5_rH$!CTZi`;)qaC+5Tlf#)wv?gF{{9tW?%9dK<}n zuonGLdWz~Z8Al0@*nKTS+kEcT88i1lFuOg8Wq_rWzST|m!LW>Ep^H3ws>|Wv4;stA z`Qi7CHfv}vA)sH)fESnE5I(79qnR>|FMnEM7nrpB%_b0q{Z#5 zc+9L%!*QrS*Rd(L{4dyL5!;bR{VD+5-psXNs<9R&%Ix+Om(uq1c6nMg-GSZBra z!wQJ49vmP|{6yp?HdiV)U5+D{ZIWlVJRW-G{JpTG5vi#@&(0<3KKIVjS&(c_t)l_S zxI7};c<2zD%r*Ktmk9R6h)KgOR%{8#=(%Of}b=uhnM zw8%JrA*?`003c6eus2SJ!e)ePus~gEew4Zj7QYB&ZCgH0%0Yfcippn+rK$jeI3X%! zw_@qshk+?rj-daw4>Whz`YaOuAusX)Ns2KDss-%92;9t+iw4>zBQP0@pt({pgS%2& z6WhZF&ElSDdXu#geLAuyT3M{vRQSs*#|(Iv=3b6Je`gf8KoDPE(4|s?H{W*&vnN0P2;)Vcy2PDjmGnRFLOSp~I>FI{LQjDdQ0JcA+8F zHB9hSr0C5f+|9Zbye1U2PUKQHvE&`m_?k?L4a2#A-YG!bYb`)$^cNEuexHk4q^DEJ zVQV9|>L0Ab(2!MP#xrY-cgX#>xc(vb0pb^l^I=2!U`l>tX{1VqS0GsCJ>CfEp+OAL zWyoH9u(;tG;5?#rsa^E!4bDd|mZn!q=GBi9%EU)t8ugMqp9UQuSuCnD!NxM)3*I-< zVcg^fubn zRqA`y|GYglq!79Q;`^bkw3%eG4lIFj$RZ}&D@D2eABr9)rSJDe7A4f};nV5WH&7+0 zmAEKy04+(m$N#n3w~4Dpwb8h%5+@-e52EV!16YRT%?kS_MJE1;JChO_)zgitNeHP| z+xEZj?Z40MZ4AA=&PFT0(OInjpc~kxWAhIO%@334-5(hn^`)CSC0wa6cZt}-B!;;S z*=ZS<2X%K53Jh(V-(BTq`Uu0AuMQ#A= zc>v57jQ)N_V1ph)Z!0E(+ODJ2OrVs6b88UB7~+}eWvmNpNr=LBbUTbq54I_^>0$Hh z5a<%KkmefhwqQrYj39^s0g)-FgJu)v5F2R5(Pk)1+(;7?6EzUIJ%t%(=xC2Q*hDf> zNB%al)2KUA9+_k29*0wAYo}Eq&{|Tz7iG9vP|pC9aB&ajU^mJ0JucrQCJpv%5d!;! z$e48#A|uxU!p{+eH_|RkT}3^|z6Y^S(3I`m`b^WeJ}`3nZ?-?i3-m(tp73zNLK$oK#x``)P5yuFG1~qtFbp@o5!vHyV^k(;_+^b z=`E~G|GZQMR~?R7l^)^K-LW@in+8;Z*2xDtwx|DN|F{O~;Lz=2*!mr^#$xRNFTDJS zO1iq8dK#mXKLDr!Z|V-i7NXhQBl`e+bp4QyEkwTE`#kdhtL`d&SeMJ8bw{r=&+T<* zr{(`muSrN8i~Sw_h)l3{_IkVCv9I-x(Q<^2{g?fcD?rA77K<)4j(W$^S;uHG=vFQL z6kADd-4$C|9VBh&#MYtd7|cp|^p9aYPsF>^07fQ2H-mK;Vg_I<2oFrEaBpnp1|m{A zaf$Z_iRg%7OKSQC&5sXhE}A;sBAoBW>4yZ)W2{o&ujV7WIPrBin#Tqy`7Tu%1dy0M$hMCNKaH^Si2 zMsct#fV$#v!3NBIq&xXnI~|KmWqPv@hCowte0q0Nl#Usb#;w4w*#CAN3`pRH4PH4L zarDc6FTJbwt@KdrqmUdaWi(c?dl1)R?|~?)x5b{05K2Ov%LuVktNuBSC^0jWvbNah z9#&IlyqXz0mPzfj5^+|PVI8HtPmEN@XVPFSOJ|LBjl<9i`T?xFX_ftHU@TUmFy zqmpO{HBfi*(8lknR&*!N=uREItM)4`*OhZ)7T|6Lw=al5h=a*M5IoxXN;RulCt-p?|*} zdnw%;lrBGk6qI--1bqqDhP|5W1X4b=nAN_keegAT;9a&$Q(OsK#QW%%<1Wuxfi9HFs z4>3=l6vq1OGrFSyIa45|=lp}i2U!fJM*7f@a;LQ{f9+9NZ}aYw?ndY|_6 zDdBckmL4DM9#FUD?=2+&xb|s1P74G3d=4c`M;1shx56NjzJK&lL&a&~Su<|+%`_zj z9vzq9{4Mr-k7R0Re-K9XesyYh=+|0dG-Q7P!8nd=*?%>)yB7FSD74;+z^WgGasI~- zXPVxo$>|RtINM@>2(S8R*CIrC36z+JAh+==p{g$uebZw9MdzpK2rB(=I-IF-XN0Td zT)e)1Al&M}96*qWfnw(n5|20K1aA(v=Cs&P#xqUOKH7k2u9fcIl|I_ZK&W3 zYHXu7&$iH&e$|(AY4hmj&?QK-5wYRS_wXM>bKp~@|7!>$^>6Wj_Fc8RoizUNmmug1H` zZT!Mj1%D#A1d!W!fUoL?$5nk%RPk9@7(ag~Q@j7H(0AA`cM$UWoPNc3G~rr;Hyp;g zg2J=)aHKp-f1j~at3N9g_UwNMEoLHv6R;k#Pee)PguqJ)4|ejQl!Pl48JU?hkPr9r z0=3_njD{x$9^Y;U_lNgC<30BJYSau@W6^|m1jpSSxzRtY(Pkusk=8|%yK9dmgh9O; zEXQzLeRMfeg1*_VY>cNy7q8ZK;M?#4Z`(0JLKN9E+Dm^)jb@ z3)GK8cfu%t;oZ?8dQ>c%jeuJrYTYpz}LrGuP5o_NWuM4K5_}%yhK!e{MZwjVI z@f-1$piRnl{l?mFTc&m_+jYD3M4xnRMvg0FN!+dN&T);kG~V6N{Sw#JI8L!OQ!BaD zHPX5#E4`umQrAX{Rp^!8;2G#jGdsTNjkB9dahmqpAQ!LA9OUYo@fxBO=$GxU^iFSB zImmUp+4B9YhWKFDV9v5}YJ)J!)yu;Dc6dC26YWm|AT{2-f>v1Qnr^ zAnn7`4m*c9X(XQit?{CA!DEOuA(SNN7Pe-_MkI>-uxQfiy-llYI?ig2&)rP>@ zF|N7RKPA$%l(DV?>wO4_V_j>lGx2HPSl3IvUrwZffS%&mgR|Np+<`#sO+W4JSOW<7J}%$e;Ro}6yZk$!crP6saJ zc8x3f3mN7jO<@MVucvuQgP0Sr_JZFFzTepIK)v{F`99ozv!{8Wta;k%?$;aCC;Pn^ z%vamZN%cOuZ195>D)5#B$7KWGVK+CHpS)~v|7&g)j zB3wH!8aU5J^@jd#aDS3*PLbqipAB|j?Q0&Zk?;B0z=sbocayJH8u+sV%vtj5a8wL1 zm&%@}g89aQD0wYbN@~e1hW}#V=LVwW85az0;~;Z^6#7CXO0Ft4cokBwA8byNdjto$ z_YO7(NOJKL!TiV&GaknAn4#uwQmlLQQ1e8oo}h= zeS7n^U@y?t3bThc`G5^(Q5}88UM=pPXSBKcq}p)fAOVchhU<}=NQ`eyQy#>4+$aJ6 zkG-$PW}phJm{2xSB^E$m%sVJz#klE{#cHNqtX55x8-Rk4gA3U z=JoQv?+tu>hbGxxy4r{8r-k9DZ-&_c?yw;CBwcKk<9CquCEU({B!blkwB}oBiI?n*FxncLYBVemAuI z-VNrDq!I2b8_dOl0nb2Jfz2WF)Njp^?r+{P_mBeG52Zy^kqF|Q-!spW=JU<(nXQ`L zTlw$rncHj1dbyjuZ@wkrvUk%>=5Y-l$uRq+^fdd8z;8Kzui;mM-(~#T^y05?GRH(b zFr4-~@yhOiSb|aCjj0%bKz{F9e+$35$*f4-dA-f%f_lP$KJ&q|Wf9lFz;p_N~EV_57lw~?pA;o4)KBnQB8Z4ZX# z<}C)Ez1Q4V9s|evz2-CW+>Z@>**^1Y@}Z9myv2U=!}7R~4DNON&Clp1#yfs%ZV@#K zf`n;VDTp?sa0yLBu zX^{5>#@80DzPY6k>bOgB0F9$8h%2L?Ft{6C#>muK3)9>17QdN2(s?(#Vt!827`gj{ z-_0{LT~>rq*FeqWVb87l656a3~ib8|_@6R(4D_2OHun~SAy`0N|znbKJP%MI|&?|A>4 z<}&FlkGy4GqG`UGue)VF4BjyPHkxZ##Xq`j-lOT};*0N?`!zZdL`C!+OI7VF+;wWy zgM&EBJQmqI0-YeVrS%tSd|@CNs4lZ1~6HxDO$u?5St;-m}THAgV-)Pd6vOF%*a|w@}qeM?g(aE znzw_89*V zCXZr|77|)(fUz04bYN6<*jftXY4zDrg@D*RTznU}Q~=wAvG`~KEVv=%MNpLX)#=qJ z)5BQDAd&eNHQ=K#Hd9_Z=mJj;XAx1e2VL-DueXO5$*^zI-Uda((0}o6D3v`noITN{ z2xa5Mc-fnH=2O|hx|p^w7R^vl@A`ZK@vM%!i z-x|XPh!9gO>nD%4UEue}GP?-b9P6W-y|HY#%zItniE*r*0Nod-){rlVWAo&%dS2i+ z$w4ig(}*2yFgXJ_pGlXkwY@q;TpaAK1O2F-wq4 zS9??;btxg0e-n?MdZWh$Zb<-HQ^>dkHcIxUUEoCtEJcLeNnjDe5!r<03diy$EKWGy z#-HdJ5$*%ea_w?3mrzDq#7~Eakvi_1h)nst5 zX~*t?EEsHX@9Mz9G;(Z^!Tm!=HcgV>3pBU~bY_wyzoo~_+lAec~U$b`%G_kN{Ze+gr+5< z9%guOoddT>dxc=jG?q@nJp1_%cA(`=uFGO=z{fh$C!ObJv9>7Ug)DYZ6Y{$I;cONw zh3zlL9?yz05VMW0?)7Qy`HpYs%UVG&Deudyt=>+-Oz+%ocYHPsJ5IRF4fDJqp0AD| zzVuFO5rlc^z)spM_VbM5)_%;=;K@U@>5$jBAVqd|hq@e9-vzD^dK`RaKek$Wi);I{ zBT^%NqCab`xxAkT4`AIjm%iiK15j~98o+X;7=Cg9+aoYuU6l<=@ZpEjKVz;C< z{GrjTX(P|mmq4se!iMKNa=V;k$-N%x|LCrE+0%T>X!fSo?y!#M_ut3nYHSPm$@^H- z{5!zV6;nv2)-<%p)C#61enEh#RdB!pEiBiZf~Q~(Orov?ZV_w^H?7z!!u0;86(w-N zyqdR+)RCO1Zj8^*O)1HrP%tM|nl+|iPI|zs;RSPS@~nXcbL``1WszpN`MnC}wD+5D zEtu13{H&CM&eE)V3g(O&KdW`Y9HVwYvw}JOq*?I=a|TJX8WzkMCe5-G%o!`qs$Vc? zyfn*LFlUl93rYooQJGRmQ0fhZr^m9GdRc1)E{T zd+ujjr6_*+erD0+JkEo1SdO%xPtC!wwe#W}*1q1XHFxVVc@3Axvu%dQUc3zH-8$A| z<$K4oRiPiW!R|jg+OHJ5T)6oDGM_wwHPg7eaz24Il1sya`R5Z@3)uK0wvzCUFSv)<(D_4)M72yc!qVdJU(>>fWi8TqD7#gfrvEmh;If-?Y zKIe-ku^w?mtMsZ>=+Jb$5FZOaG$pxK#;+&JeYP9_X%b6_pT3B;o`T=;;FF^J8a~WP z!SI=ulBPzdZkfl(Tjnw)JHQ{WCt$uS>GSv^$Wy z1FI>qOypo1zSHw(9KVvwGMi01Z-k^ph}6B7k0v;DE$KswM5+<@Zgce9az61v);w?; zBHLi`cr1VZLH3ILbiH71oy;0W2nNct4kTAIf5rmzF}WIV*)mL~B_4?$j=#FHLo z9qXw*gfk1TxpPo3fB0e6KpMs$dzhUJ8*~O8;0{j{<>1Lm`WYjiHx+Wh?9)cxdKxo# zzjWH@S9~o17wk2exMPsKG=349X4;~+K}k#@|W+aJw_{40+*;Z z?oF2oe&l;2ub9D-%@)8BtS!W!L4{g?o(3psCS-}RaEzIW0n`ePH8WYbjL7_rnXI*W z@OO1n9sbV9f1b&b<=5bd%wsWf0UTZPSYLU=2_s*X$D$3PNCg_7d&21cIFCIcp{cf6 zY)r8ExX~|D-h*Z|Xl~#i&0;pW^)bxRv)Ckg`%xo*a5n2@2|9MSA?@sVtvHsjzOjs_ z&Sp{kr`aqdc;``HJ_#+5N;8LjEa!b|bZ?!*o};n`&ttO#X;2cSP2)%Av8K{derFzw z4*m4D(XXN(KsH=6G{17&$eYh+opjhIe^lbzC$nb!$@%OCXk^s_7As%9Y2=$1FqR)J z$aZafk?14cxx+@kc2}Xobya7P)eC~2F>p726yFcK@pk7=c4uWep4um$w)CP?9Q_VB>uRa`KTWWo`r!q=EjliJ+3Szsn7ItpW|KA{vNBVv&)WLz;%NNb2h{ zK0>ra*;r7od;dhmR3iVI+EwRQGb5aCm*~|iutD6C&tmhJ>VTM>{UGtx$c@G`lwfze zQeK4z=T0n5)1lwsdZ2ajDQY;>{~+(xp!D?BSSuE#VzYs zmlv^)J#HPSJ<7lhh~>Jbr^=UrD5O%8Amj8%xHlFN`a+=!Hv@AT*!ISKeDPvTk}D5@ zU>7rHt=NnTi+Vt3 zcs#LjZ*hfb@o6tE$2rUKMTyB!R&yZ`AilnU1@YVhX3>e5e0c$D8%kM8A`dVe%7E`G zUH@9!A@cK5C_!3B|8XzIYj)3KGtck0M4_C`s5jXr&hTw-(KD5CYfm*2`E)CDJAA#ctzr_M)VpaT0Pm%*pe(l>uS=s}-!hw3J_8!Q!O*d4oc>E-L4H zShASzv40C=*+nxyqq};uJ=q;3KaV4Ve^bah$tx}yd5D8u!20E;gGHFHeIueiNl~YH zZnQ(x4i=vD7;7sp{>8}edyIXikx%djPWGsT6BsAEUz+Xy!^yHFd217cJHy3r_7s?4 z;A}N(W-;EDAyEz2g?9)P=dh&^uXOHs10S}UWymYwSihQWlYZf2*RVdC#y8#Xtzpkf zfe%R_y*-{WD|p{0*weis-Hk)UCDX|zI-6?G2k69~(oi%G&<1kzxv(hCpbkxjH8@4aY_VOKTSxnn^Bnr|&!$M_9 zJ3RJ>2Tu?7d0v8MX}GbmywCID9^r<5wtXJH(yctj9*|;T6oCBhUHH0O)FkIo&+vRT z^z`UUeBINmLnKTDVB^uZBTg6pVYGV8=!)NF}JN8%5?#}1>s-${K8uT2S zTyOarRIHB?OrR?w@!cwQK8F=bCR-oy;lDF8v`ttCXm{od%4|$2Lm;CvkFR>RjlO7{bXMSKk z8-;Dm<{Q{btn@$K0AXe`x4+Dul%n~mm)Qns9$)ebTP6L>LtkZM<+COOpZO{qDz)Kz zUu9eKcPz%ritd*Hu#5;|8?>M*YLwE@7K|mE6TlRQ<{GB)ZkTqyH z27roZ5h(JejQ^NH1bLX8TirPyVs}r|>s#*lh}jzVd4xbmaq?qY%7L$)_!07S&v`LN zqPd<-{`*HP*088Oi43~a?Tx(Q$1L`qRqKQw4?bx>z$T!$=Y)Hvcu%8SPkvYMr$0d= za0K5^aUHtGNIUamHbh#&_k4_ff%m^O@<+C?k2D<(ys4WtmZyI$^Wy&IaQ8SjyRAuV z*oF3|`ttH@l~N#>Qf8=-&4^8z4ywc{ z-CTVVJvqF~K9;S~cIS`nV+*7Vw|+mv{gC_LHu9_kz|Xs{8Qn7uus$gLyu0Wic5pR0 zhq&_)8=A1Sy$1J+!Je=h_!=8oUh^iXG_{kSknL)SC&0r44zt-B*LlA9Fe}!)eUPVr z%?6nL+ucq24QRw`zV)h+zwAfcH&kV!KU;hp3VH{Z?JW^mIofe_8E4wkFdy)$A1X) zTO(#eitB01Cm&&%nxkF#mLnk25BP~AtiPrxg}3~cMP{XU(GXMU<|FI`Nt zKs$L`1mI?Es%I>RT2O+OGfI zm{{z7w1yjwvR?IX*<&d`2qG^8_+`cVdAjf%gq!QHsqosMB5P$b4l30gS9jstjg9&(&@(k$Q1dmm@7wRJ^Q3Dm9WYKV;#tj|Fhy>3kP zO!c|?c{+3=^55rq?+TAQ!5);a9}ncKPOvniy*F^a$L74|(RAeBoxoY_*?V})yV3VZTJmD113f|jW=917RthC!NJ| zp*z3tEbG|de8?p)@b1}oMBVsTz&?qK9|*a`H=Si2!rVPY&qw)&PTxe&Yy8?-Hdxa= zk@x)(yEiiL{S$jiv*2@n`X{z!=r?KT4KbI{F#EFycJ{Beg63%IBwS1+R+8vBh2Uym zx@(%`*-s%frU>quBzeA|0J$o`M*izL))gE-`8-e_8+?h6InSDeDTo9*tud~3{F(Et zx9075_mAfxU`l0tSp|DIHW#a2dWBWcDQLdgll-FUvlYxvgtb>spHFz$1(u*0)QESv z!1fv*4MevH{>sO?wGlk2l64+oxEB>t8%A`U++DORZ=SCm6s92Tu9sS&qY$-Oh(Ha! zLfNS8LI_M-c+k(4EU!^zXQ~uU4|)D-;pzmjGgT{w*q(Ae@MqRnb0gCI>d)Ax)VQK} z`7i8^UiAKWSf=wzrfK6t&c5&RqTV7;+ z0*1XH`*}7fe9=XyEZ=mI9h6q`#h0)gyv~2T#9os&@y9NM5Wm-4;vZaQKg;*5F!Bw* z;piZGh0(qHHyl*SJC+%F#P95JO(V|V{hiH~{g)fvNq?{}rKUfvm9a3Uht4#CbPqtfnl^^?)?UUZ)Z(L(r!eV|W+Rg6dyqFBFfv0c};WnRk z9j7Nh^T)5V2H^*G~*4t_ibQh;(Sc3w^VW=_qFK%R1k<;eHW zL$mL&k(x6r-FNQb{7$;@RE}bo-g|13GC&%^Wl5PTUEnh$rGvEI{g$LGl%x(kQC9j% zKk_-U(iaSTm#j=+EiZ_LIc)d^pG6Dk`kSZOI-agohQ*$O!AiUxKZ<>bBetB~Hu*Af zujA*Tfce_86Zv2BmcOz_{G?X-M%HZ( z&)*1U7ND$&H7!LqApDzm>8_WmWs;PfIj@-ag4}6A%A2zM@ypdlFQR3wdaIjFNu{;@$uH@(d$NixI^@PI_swBw%0?J~h(FO%0R=L5F++TSpq*9U3T!vOKjnD%ViStJm=v zG`?!p@-{!)5MBEg4|La$Q3^Eq>ak9hQY@#nxy=c!_}4M@7Sb+O!L{)Vag7M*tc=Mm zqwgm%%PRZ-Sy6mL=PW7q#K;Hn+r-H-?xt?k>KLr)+wsbCeb*zR<9Pt z#)_=b9Gt-KBq#$k;ji-nO_Wxeo3FVGnkZf6h*!4-`RPn6Hvl`C&O@f8_VKtr+d)|! z=sudH)RW|=U4gu!nNqAdw2r@-bN}%0% zA&wb(ulWx+u2Jm=5xw=48=#y zz2+8F-g@MSUICzIH6UDMi8qB*I=wHX_TlybmVLvw2Dyi{QWojtmP-TqvG(9w*1|x3 zr@b;=URw~zhrPr)@pn2X56Typ1iCHvD5tn#7a3mRt$VwdEWFYE0W?x(7AFSF(rCrreS`we~ZHEw-MX&Pydmz=v1tZ$Ft zYkFve%`FOxAUA)co6^*1kJngp%OV#eGP*qdAD*srMi0pr>NOC~UIzSguwrtPwW)^rQ)5<2`8zj3Iq6RRp zi)|90zE#&k$qrd%Y?doMKER&5-Ts~8~jQSY?17V62c0Gd6`*XN+OL(m}ISyGF# z=I#`0ZocgtviGBkAwp`=D3K{nZ%ySoM*@QwWx{~k!DH7$J(1JSg_1XWcHZO*9p zo-Sh(U;7TJg{oCKYOQJ=rX;;}N4n*<*Vo1<5RwIrwAN~6%?cRp7H{nuw8U#=i`7|d z+S1q8wmQY20MSNZ0LRJ#m!cdD4b((n^SVB{7`cjuUgy#Pr7>SWSVosX}vqvmgBqf zfEN-FqQy|cP=~r%)3TF5BMu=!hoI-{=(8k@>L;WQ>UbJx%Q^a&k$rbKiC#_Hk>2>0 zuUp3sQW7H?->%!KHAZ(ry|hAm<2$v+cVc#9sNctUrb9?np(9m+7>gZkr4bL}9q})t zx~dvsHL8)s=k`#7g8#x@5_oI7qUE3UPy#`|VW6`}pIFf+D(+x(grU ztRTi|cV6(ZOfXO4mEHq_TaK^EEl>NnB_EZpw32S{mFY^f=9->A-cN~%1>+)43pPgt zP*~5o+sF2*hScSIA+%*nz=~j%D%~)_^$N2!S!BZW1Z6y{Dq& zXSx#j>FEk@0&E=>Z43bOpte;NsW!20sjl(6^U+w1hBe`1`h(Hb zEH}XziMEkB0AJQ<z9C0xP)~3v46&;v;8JCLcaD<8 zU_l4BR?uytn~DB~P_ej=lF*>g-cIlxF~t66cp2^Oi0jlCUtvfBdrBBv9#jU4kMvgF zI)e*2clGg*s-cRpr1B6$jqGms0UsGH_y|5@Mh7vTVOI*ZqIwviU5vzts%ebIBk!Ii zSP;#&{NXGmU5$(qoAU3ol(4^~Xd2WPL%6E%T4pQn@Xq%t5&XAoB|E&+KT&$*Unsp6 z9o8iE)-B2et%K+e`^bC;^!EWTovMhVF2Tj|d;2K?VKpVWT11ZdyQ;!8mT3O&9#m&A z3ZnJrG5wKI*gw#%(H=$<@!etBw4E^w(=bQ?^m?pnaKOsYj`T39ay2>Et#PBsFpVJM z-G4{Kn2Uo%DTV1_G!@gx^tXp;kt-iHKzX^kj}mxlA50_31FPqlTJ#}+QwE9-ra6(X z8>pmJC+-w_>n}6FU9!4;mr9ZJL(L66Up-PW8({uyVwu+q(&n2-DlL6vSv9(mz6oFR zfD$ZS>;jkhkU6tK)4-yv@ zeD#{%y0}Qx;|6~`x4IfNTHl06=PCgK*YrB#xIAtY>h3PUj z>$LG;Fuo!{WvwM&IcVblvXB7YW4IFGFH1cN?J~cAxY8=cTO63mEylVDP+N&3H)S89%xzm->N4V0!lXpj;b3OT5b z0CabDfzVQwr&#=`LQBwSp_5p=YvIoiQfB{eXPrY6mHz)NJB#68JfQskPYk+>h6RJJ zJEJt@4IfnM^O3nq^8Y@4zkfcO~8yZrr4Q)YL<%@Qktc88N)38YBIT6QfzHbq^{Tgoyj%j=ld$A zroJ3Wc10RZ84BY zdw0@L%~!P*;b36oj38)NvN_Fj;jpEYn3jG(>q3|AZQMu3O{V9y;(F7RKZWmO;nRJ2 zPWT>Bef{m=V1Uo#%1(i&rQcgdVi%L3H6j=UIR-RC)*eHiwzx^Qi^(UUuS>SbU)C z6sNVjWaQ)|gGF>zOMNlu`^y*3QUdcwQ);JqA$@AJ{Qa**EnlMKuHb1`h3`}0)0K#8 zUb@MuZ_r)=dk8+X{75PJf`_WGvhRd%j_?I<{YAvgp_mSxodO*_gR@lcMBxp7fIhWa z{*<}8<;NfKwR|zcQ0d+9qvg*(62$GZl?H}9@;lAz;D2Pc5}w~wL$%ixVKW20m;@ir z{TkuErrlu<6TaY&aIeAc2sR6!ZaMIVs+mN(VCc(3y5K;eHH{>EyOov%3KEXQi z(fLypM{odr?p8h#ee`j7b?tA!29W5t4G2RuFTju5e>g3OH=mPOUu?97p}+Ynpw4O{YWv^$S20^sI|@5`TQP5)%Sr=_M%Er_R2;m(MLSNAV$Zl@?KLOI~|FUP$q+V{RsGYAQe)>tQ#yZYZMnz#W<^L|nUh|dv zBI&@P3-Dr4mq#^^eXs;=&MW6DfxgAjuDiQNtstPbS)jBDIA}GLSqlg9+y%-AYA@PK zRaAHIe9chXdujpNyKk-%;A1#-*TDYzD$MdWE79Ir3zgw9w8_}Es)~{Sxr$XATM!AU zisSN?CkSW%ceQ$BkL8~ba)K_)IaDmAl7~5?NS3$RFlY;y-rj-fsz`%gb zTV|6F!UkG_J>}r6z|54xrUC;%rX;9)HzjqYv*U!TJp%FWbT^zWZo--AJV7VQ2jRpw z+H+BSyImqs&Ouv&`OLLy`!iQeQ-cbM^)}Z?-eY#lrHEqaZLsfU7~ak(Ad012yqWxq8!zPLaDl3R(>7FC2e3M40v~^ zE>q4+`S0B?IK`LrNhz5*7hGccb-|t9`3*rX-PcgkiqZa*>YJ$gW~shwHw0{)>bpR< z)f~DU^4%T#82X|9)kA*>$`M2VwoVLvLr*H$VQzYV5Z|-{o7y_HJ`L6SRL?&Rje_Si zRZ9w?(?0Mq_`t`~LRCH{e8EfoRX!$sI(m~vd`zSZo`gGZ#K(jWQklxfC?@!r`1B0c ziLcI|;((FSr&eP+pyIyyXYM#(W8&1tJP1G9(qmi@UsOh=3w9bN|HXqsv=gwm;Z7MKdg?8s%v;)~x7u2kaZv#o42Gm*OahK98{2#Gx$dqyq z__jZ3$2bo70HS-)$Vx%38XrU3Da0%>4I#s(mQ0yicXv-bcc<@|gO*kGd{b9prk185 zzIwINsJG6CW&avjUM%i~f_7?R`7;uAM3XeAKv-3iN@~@ht&c@lNy8`>lvC#@ikCg5 zBxM!+tS5Ye9s2NT5oCO<1~OF|ra9TsH6AS|T++1D$=7-@Dc(hASPgX6+^;IbPTkK@(nMyYimmYq~|JZ&??ex`s_xtD%VYU7^Q5Q=+YW^u@pBUqi0=%b~h{ zaS820gNs1M=*Xu%p=eWK@fzKY%i2QL@|KEj$ws%JH=uH4=>b950so=Y|DsiV^pi?x zZn=Pg8v;0f&H&7DOKblq|a)>vw8i$AL}Z~i=nA9)S3*0gf^&x z5W?(E!DMR4v0xxIhEc7XIyK~2!9Xgvk{lcRzhNOn@xCg68P}>q^RRzr&csN3jRJF4 z_%1M#-v2!TzvLs}f2Xhi+|yzw%g|Kp2lWTp2L7K>EyT{2=`gQOX4(t;%XNr$++CvG z{(nKV*g@(rst%Q^Bzl)CtHMQ1uKaY>6sKMTRM|3AI#o?`s_b4(qRql;+_$M_o-{EC zwp@co|H_tO!EH;G>|TdbRknOrTB&CEaSN4}0fH^7^x4?{Z;ZLlB=?n%DWhBqNVIC2 z6^p97EefyEqFN)wH`n>vguO7vpID=`bl-kXnW>dOI~eGm`4Vo38kY5fBJ`Kn zZ@~IF=3Dq(x`S9FL+%VzeM?k1Ia&3k(~}s7?x!On<~^!ptf;WrvtQV-v)H4trR>f!^(xMy=R%JY2!?1)OIE;D(Ct&Gyw}WMXmeR_^>%3&Ww}P&>g$RU zD=eKo<=BkznFXgVVd)ecJ|~*iPBBZ7jNYJ6l`wnooo^^T+GnMdP2Y?{W+d5@%d4X} zB~zKz0kei!&;vOABHk{PXF7LR%s8X*E9Kd5Dm$?HE6;KsYX=P^V*Pg+Ib;2Y%AJP` zOFp~H=EbrPIzpUS_bsuf9Gw*iyKJTcdK_YNMA4GZe5C;vbFPt4@jEqoC*11tFQGZq zIMS*S_0NJ0#x+;cOjFZ?E)|qO0n12e$1M(-$Y;EzgzH2&U-_2Oz~_ATu5<5ON?g4% z)5?V4Df+1hmH zu8elsdTZlseVTJnM{Q51wq2I%Q7xUsmseQZ^}J;cPOLXL3j`Z+gk^FI>OtjhL0XX z-RaUBrrl9w>;o4|swjsydq=@DKntJyj`F^yz3)57!jHeJoXSTtY|b0Pui_%SrS}fX89If1Asr{*$Ifr1Q2|EZ2M%t3Eqn?l3 zlA%CHbQeGUzB0z$eWNl&BR#>N-mElhkKTfj!lE>%Jq%V12WUxWj32B?QK$C4rS?MO z-nXbH)m}so^4~Tq&5bYlgdUV$%A0?nyp{iyk8ohV{X}CFEVd~uWok*GP}St;MDP5KOqOn<7C0;L ztYO)DIIYe=J1m7QK25|Zq-ihe(N0Q$*RLJy$!B{V0rs3@u+lvu(;0j$GntyFvJrmj zL!}3}fcgdy4CrHI==UXv%g-*CL5&gJ>$Az%oLO3{>poR^NS5>5;ZyQahx#h#a3$pR z_;go4uXD%YYo?8*>8N_FEeAJwGD4j1#;>QWT+Iu`-EJ7ta`i&y_T&R}vm5q{so;DF z@indtLQ_XdYG+i-^Kag*L&L2%?%C1aPFTAcgWLioa`?i7`nA7INRnRT1MNmFw z+!-|EqTkloT?4^W!k-{Ui5a(i#&BD~88PE(4481&s55O5(A&um`dRX21X!zmJwnJE zTLtV9OWxL)+)}H9;44kFr<6?p7}YWr43XPVnw0NH3Q;B z`&FWmw)~XKGlpgsoEEKY7#Qf2CQ7SYrK#1%wAyV<`)eE1(8iL~tdwKZKUUd0WRVD( zH-td0Hc-eRsQ2_s)_l>2R%dy|IY@tXdKm;3kB2TI)N77_6BD5N;GO6YkDzOi;%}c- z$2|Y3DxRriTDoL_;`a=Gr|`RqU!#GF-^oFWUqcXf{`&|BLBLJ?en+6)`5gv=4d;Qo zlPMST9{SLkSUnv5WI9G-Q#$xhoC#$*CPRABHJ?Fmm2~f+a(E;6{%>AyrelT$fWztz z>k9(V!HoBknT~na0NAYpoC1*F?Oi~!966T&DOMqK0l{zwS5!vmEnaD_Pe|0J9F%%i4Us%v+%X}L;YM;KYzL@Nx=PuRv0et9-$=S#T z-zoH=`3*7FQ;b?mrRC@d-)8=vMBh?rI>JEnpTUo%(!2D58E_sF7-`|dzEmE!9N0xK zA#j}@_F!SB(@O92_IpPE#HDRYn8x-KXWQ_6VbjM!yyG_IqP*p!Af8mD^p(fMF|SCO zrP+Fk|6Zgtl^%CT6)Q2Yt`ir;@7=C!4vBsf^OdWA2nm?MskilR?{?*kMt0(6z>j6h zWm$;|;zxHWgXO;0^}O|NrH#Jb+t6jYE#o5Juv=;1UbC~SRf9Ix1%*_DKCBDE;g>H%w+hO?+iUf!VV~7a7FG?~Ru>dr4Jxe*GFO9k)&;RD zQ2tqT~Ks2 z=zLueG%AaF@a_ARxRByFsNz}t)g=lXHF9(*zqwy|W$1;Bc317m6uNsb zAb3%iSAw|fpb{fnUI}tB*(I zvE7Px`Zc)NDr4Ekzdxo}!qbxv^eRkmNju(Yk`)ib)8#TAcw9*fPsejiJo@uXPcACH z8IoH(FB>M_TYaxY@;S$qBx7NAY*iUCqKx_|qcA&;GK#HP1j;^;Uf8n{0pffmxOFF# z=^9gEZ#Sh$8q69%h)asu6 zUTI!GqYzeUbC0fk4BeP}O;k4Oq>^PU91!CQCsf$m#`3I_N`p|!dqAuRi9_CUG2d`f z8K-$Wlxu&$EsECd!W+7~|Da5l+I~jEG?Uh4SA?Voq0LG?eZUj`22@%U?2OHXHSs)8 zrfV4<)1edh@H40Iws68BJ*Xrdq!Nl5Gd0#$P$A`A$#i`YLb2#UOd72coqyP!H)&;7 zEi0o^424h$Prj~}fL$Eygk6;K&fgFtb2$&%qg> zI?uzYSDhX>u^CShD&RB-XMW!ca0jWuxLe)Rs5*a!Ggx*00%twd`74|z)p^mLQfgY+ z85=&8vuuR(RJ3z25G62D@S2Jdo9iK%4+P%NR`$mVQ1|R9Jy2h&3gf2G09#kI-&Wue zD9<32&5W*LXcqlp3h_6Erk)bJ6c;Olt9uEX7FT%rAyc#lY@qLk0CQ7l5+86Ay7=)m zScQ_FiKej!Z7>IK8g~%t&EbO<;X}Omta8uOKPnOVYQIF!eTe$yXqIcamPA5V)}6Zj z9GXQH!E?hbSEe^pK1>+E!&`JzhUh4`(Nh_sr{G3cWr(hV`)p>x1u5?{oCs3X!N5@# z-ei}#(xig?5{(PWS+`_qurEsnPVtP-YAqBg~Vy%wldej`BMD=4+Ka=o5!CBDUyCvf`{tUi}-yL|oD8-sD7rC_k3QDMW)0U## zG710i+|G)%HsETg)v?NmY^s61)v6#qAkC{G@Yvz$;WGBe=9>oZudz5ZZ7EjM0Xjvk zOU7-~;1=q1Gu@QGCF>4QLG_}$siR@A6)4KXZ-I)K(S!qQ;qqxn3q3rNOPgku@yvGRajf~L#qmxc9vBx_3l)&YNrC~3&1>ihZ-6NFB+Cbts6|P4B&nNk-=@N%PN8X zMpK1-Jv3S__n_i~)vUtl1BA#sMd%PU)Qk^yt>jV>I8+T}6o|_YzEFj{X+V}$?JDFs zQv?x`QmJQsNX#!>J_rEd#n-8bnTG&@$HL|9;Y5m|wQ%+*!3&pnz{jPXhsxtDPHpTg z6><-KT-uS)Wi9%lBmC5I5W@m+r@;~-L?(o2^YM2ynAhk4(eYV$yAQ&~OJ0r3I0l7S zL{_O1va9aaPHHI;0%Rpnn%eC&K9FXZ3h%6bBJuf4x6f8#!~L<>hZJ2@Zv%YL+A+1d zeU1tnp?*^E5sfaz)f*HCH3Nmq=c=%g_<-WAg{$VlMeRg0)rQ|~Fi@aFzoW(eGIT@a zqvfI>qbOrclyZ^qj#9IXrVpqd_!q&W)!>FA7)_T;MDTrTa11__2fDawh;$V(Rs5-J zMa9v4HAT04e0`lyI8=cPRN%e%{H603s<7_()am>&1gX*Mlr^dgQOk6mNnv5$X`B)gEx*3J5&Lf6g497V*%00x#3YXJeI+ZE_ z_(=c|`YIgwET@l39Dx2<1^r5ezAm8Jej?8u@K8NnxENEoe3<|lZAd(Uir%S4wOZv} zqB$xN)7}VZ`3><|{+jw(L7y>Dyj*?Mh$F|;Aw#XCTm?5|APD1jj1Bw4oxWHEu?Ocx zke#`=Ldo=}{m+?w_@$qfdt)Haf*k4bp0;vaMh(v(Qm11Vk&@C~+6=Lzq*!t~^hth7 zUfbegKgjjiucJBIifM?4S1NJ&P)0=Nt!-QBOpN~F>heq_(^)=oO{No9mnEAk6LJQo z;!BkcU{zyc4I#r3ssc#}q229NWEO(Vu&BVkrQVL~RoD$%J05!xTNnHOp{Ay#FG4WH zVj#;|%wN5zw9khgC%PO-x2BiUVFfNecwzU%o_xvfJW`{?G)R65i4>^6oGBl{rKl>2 z0wFyxJcM|0nmpi}!gGc^)j|b%v_8m>#rwT7GlUnZ>uY74bkCb-)^1O}rDzt58RK zCa7NBe*61E>y(*A+w8p{l#&8;0||rp4$$&jKPzqgzab*D3Hll+d#rK=>QmWX{>A5N zhH6zEM%AhuO2$D3nkhQ_irtB=MJJIVdfvCdOf_xU&ON^>(fOdF6QpPaCoh5|QKOkr zcOzyxVFpo9V{u+A~sS-8%2$8m#TMKMn18VHf5}cD)RTMo8sWeq8 zlnSl*ui=+|g^nwiicDw`S>dBYd-ACaT>9=vq>eP2Ecq*&cL!0TUt#}K2uYKC9wNIm zjn6}5mnQo>XURkM_$UpLT^bI_g@>pv&EMxaXT{aDoIV{mGRR;S~WQrA=-HBleW)5|AAZr`zVo|cljM588hGYa<&2#4 zi^1LUPvw}Ld>bZxVS(vavg|9a9(xADI-yhd#Sq%{%)9p!QaXYIulEK9@wPXWWk%QGJ6a{vo!tTak)VNAR1EBG93W5HQ`1!y@KQ3Uuj4slNAA-}{FI zjH|woy~5XD^_8gaiC$5CTI}xTBU6{^ZQ{FfuKGHuo5bT(-($4@?$9+*eO=W8m#Mz@ z)yFvxsJ>IDYZf>_-DyuzVPDhkzeD#&o~ZV@a`*;2bU&!x+2qCUGWndk$2_DAJNOmy z;T}6ZOFD>egePug^-l6c#1VJggAs-_Lqr+Fcx}^+C@ZX6AXmXj!-3A6Fu4d-+ z&|+o&%0!QMSU z0@pEYDJS#yrGxq>Wi0z;CT>?A@FZ98f&P}I^*Vf}$9_D`W8D(J(7S)~w`6MMle_i2 zO`v79Y*!tYr$a0{_o+b3Vp)Fjke-hZwtOg`F4yzOdY1R(4sh(QhmaKq^?Z@ZGC^+o zl}K;d5@HFLG?Pw3DWzp)qY;PDj&@(!a3$Mq^F9DD|H2DCFfztMoT-#(K7*T>A%Ap)wd)>E*!fRdii{TQN+D6tkvWh&arSB6>QU{2!wFiS)O zoycV-qbPcjgC3EP&Qrv@ZCOO#Z=d*c%{Q9)0+?9jD5g+CH*Q8d~U{IPJ$ zAUS)Ro}Ui4tdhU@QqQNGEluSQOZ5B&v!#_;V#0Dpi1Ub*PU3)qeV%>%l-bhJ(m@4< zfdLPe??M;yR?IR+x|gqJmPlzHf16pN8!a=77P+!hJ#*p2uBi>~f`zeo1AfHxQi*3g zuV9vjaTx&mRP`ciNBA(J9=RI=&G3pPLAuDZ6-z5=8(*kcT1)HrM#W;5Jbb%iiO*i$oI4#5tPV+PA@$EBG6bJDDqt_ z0z+yCPT}PiOZYuQ1wDY6rGJpjurh6>kt>X%F4o{UR)%%a?XRr+%d6pfro0 zinRO)6Q0`}SRM$^yW_3YeIgjWGwTu=waGrrQ==?x8$D-4PA58#>AElux}tFP!sarj z!i2IGC-c)_``t5#uZ^-alkeSW;Kfmv@1&W0U9_cKn!%?v#9%Ds%NklzVMTgJLrYW8 z>8}kflg!iafXC&9WVG|Dx|=~mA5Q0!V=N6c{s(zsj3rhY&)=fYbiO;rGE!1_lUPfu z`rkev;Z8?ZB8}wMUh|v%gZKln78@zCkF|7=o5JrwJo%4)K|C_f(o+5kjy`b+c><0F zah4&l>iKmXUSC}78^mK9S=!5=z%jIuscpbx8(Sje4>JRK*T$9%<(E&A_NZ1={Wqf&ws+{=QC31Mpo)PyQa(bM~0rkjjF;TL+$& zV6k+Yaj(YgeHgrsH}s!))pVDkb4E>89)%W zK@Dq$)Co;2JLJxv>iMrtEO}BAOxapqmag)EL`ypa1!FCT}0I|;d zK%W$@Yj>!?3(F+?O>0X$?*mwo?t}Ojcn!ooo<*R_F2_)U07~FbfJHp3nI$4}A|<+o zF<9UYw0`m$9F*IOC7vw4sF@{vbSHxEM=&u`oC6hj!xqF~P{$%1L4oP6S$}M!;fi|> z?LXFIs8!xq;BCAh8gXtxUh>8HWt(7;t`^~lQ`u3lEf~SQ+{_XgfB7Q>nUT>K+em&# zM&}VCqM*t}#I)D(R>?3kJR2F7LnwPl$~%QAbr>`lzxJk{KbUNZj@}L!G+&0yj7K6& z8rGC4@d7jJN<2yY)#U$&xHpe)s`&cHo7|S9C2$M0bgmSL8n6(AB0FViXaYBoK#^Ux zY7tOW5Q?A{0;Gk;O8^xe5EtAx{D6KQDQ?)Zv}J1x6+v(*u7N5bey~NBeBWnoS}Kpv z^Spk4{r+e(`<*#+=A1J#XU<{SFkcM^^Br4Wn@np5Mqsga;0vEPn0z8%VHD0~O52vyb?aa75`9q#s2KT6hKNX?DVv5&VL0sXq zq`fqmIhXZf9l6t83x+FOp40D-&Fh+;BP1Xj^nS{ zv81SaeQ^3sAHQQ8?xRD|pVUKV|66gqR~mCQH9|X=~ zRS0mDm(4#;W7$31XXwI)q36WSl1#1KOA>mrPu#Ct@WJMeDnY|*m&gw z{?q`L(ro@m^*!kOW?W(E02X6N%Y4|3RT5OEL`4bZi}PJ$VIOfq5zSFzk5}|L>Tt(K zqnNeZ?_O>afwpFt>NgDnIgH{<2C+6RoIQc9U~31V1cm#(P!4~45F0Sy^f25-1%pvE zX&Rmt<5T2kEOZW=3u4!L&gcsuOlJ*`!mjv%kdwAA_`Sk!9?X~lSU8xu27fk~Mz0qy z#yJY6Hnl$fJGSOH{EFoMafv`6=h1iS)7tZ$gV_hhuZQya>FirWCLir!Ui`e|V2g~8 zyvNxPHe7n{oxGf7hLS7TVJoiXSL}mB)(RJO3@iT^aAEu4=vy)T&!cWEnP@@`VX8K zK7qQ;hO$)Ym>qaG6kH^h=M81IvjcWol~9lcv8;F=R2M>H+x^d*`M#lSkkkyNWrKVeF}B`|@gW0u^)Y0C;ZkwzAz$rvmork`HtZ@bw@ zqpO-w9l7TvTlzL`$nZ1yr=K9Y56w&KltTvnfn z<8vq;H;#iO~J$B6A!F}SQ!j1Lq{AR zQE4pOG2yE`cM@|ASWs`YFXgQa_pF@#oqW zM=f*-F$114N#7q}5lAG&yG%OuFxNONe+AsS;&l9vv{Mw;EgsdQd_7YJVxzjPP7)wp0i zZ#S9U!rN{&H{-)6v!t#k%dbH=TAPX?hBM=#3$wp*LW+K3sjamlKXmSC*lc88V^%r; zb~5X#^u888m`>W>RvZb0hB%1Sf-!FF$U98Iyw)7zW2UfaM(q&)_Y~HlNv~_+P}U*- z?G$!z3vYHAe7pP(r}R;Bo(4Gb%&CkGhL z{T|I+xDt9BH81lMQ`x;d)891OH`Xyh4L)EytuFs{2YLdDDcJ zFEEa)+PFn7XeR~66}q#3cLtVhQUk8fbCUf_X2ttjml{Eh-~$a97A1Crr@upj8u-*k zXZ0Twt?~r6*y!xn@tM$W1CJZ-!|nl2n8YI7Oy#q^T!l0E5EaAgBoCDLw;@cs{D60> z3l|n^Uco0+EH}IjLkC`R0|~ToFCqA*O8$lCAls{5@oL|C?YN)%z0sA$FfAcX+r9h; zdcdH+aq(&UVQDV%?m>U>;j|yXBMIElgyBjTHk9eD!#;<0qT%5KG{n!MOI}cdSXWvr zIj z25@WMtps|y9g@B${TG@9Ie#(oo!XL3VettyIJFcZd_dJ|5x`jRA7jA(Wd2?ji}lHo z$1@)j_7H9Ufn299FCln<)<}5X1`9e+X!}<4&Xp(p2qHDEw8x+LnR-A@*#!@=u4CFb zF3_&3I=o-1lv55M)q9e%D#B$|XW*6^N9R=`UGJUpswnR}tSg64J5C8d;8RYU6|K5{ zL44OAs@%C+bIqc16~XAem}T^4qU#*WxmL+3d&sx!t|uYb$&)&KFMcPML2ai@4 znp~7FKU3lYPxF`Hi9-voA1!-p&;oVMRf~VrhZe52J_`PUe+Q|UMuZx)3>49|%JDe> z73Hzld4e;qQUdt?PGC~hM*t1d&pSQ=|Gciwg->`AtiU?Co5zBCfhvzYv{IFa9j0e_ z@=z%6!hvqQGr=l%b2jroVsQmkgVz@v12Q-|`g+c)M_S^6kc|5xP#Z;Tb&NKzD`S6?7L}g}7Vjvjiu=+PKg4StQkDA`Ysi6AWj- z>?kD{HXtKWy!}0_Jx{-fCC^b-pVc2)33odvLSGI^^{Mm%>^xFDkdTNx0jn@XwFmh@>BO^alHH<=1uDUS-ohnu%)2EB!&NaJHI2F zy&{#xHs!~%*;M0mH}l>z*iPv!b5mYBgS{OE*U14mz3vf~c2(6>g+3;vQc;qaokOdYw;p$CweS%_TRxnEzlChg z@KHbfAhv~mrogTA(LzXN2R?M3YX+jScW^ zlX5M5dZ(EPv+u{8Q!0dyuOaKrqi>6vpNtYGw58-ofkwGw7Fa{=7BNEdbx5Eg*H~}i zS33dlRU$wj*+v<#jh}w_vbLKXAi+F+p7=Om&{w>lL;N^O;aye=f<6K~z0nH6+=URl ztmqe23Lyh66Hw_>)ri`w;5CF2oLamq|Hux~C3nisN{4?jGdPjA8VT-Ty2WQ9xDmql zOU=O*=z0Ot`ZU_9^xvtAdA{%IlTuK-2D^YN-c1J#|b)J^_*7NuCIbsPE-Sw1$$0>ClYD zp*dPTj}p|~C>(9g1Kmegwun~?cx7Bt6#}p}BU6;1+(_DMNULW!KyiY>GLhs&L;5IO z`G2~!UoZ*P4*xa7!sc$R)~lT(y8H&nE@@5!rx?B*I`A2-mMGXW9uM@M_7{CIo8*+58 z_Ce>ITJMh;+Jj2fb{y!04*r`+8AgH5{~-nsUDR@TlGib`mnHg|QqHTCqg{j)?a=n9 zRn=;&2`nHm%3PB~wZ&DS4`sr`sG=F={FfrhvyrSdr^$jeD8E#s*M^Q(pa~_)YuXVM zK;J7dw8%E2;DxGOh*zuWMhI$nD_vY| z4h*@12dik`A$v;T^HE&hLz@J>+9DwC-+RqJDAKuupHk;MSRu#JV#6BSi?`jGdPjXh zhZMnzKohNaqaCt-)!{mOSv?{klO~>SATt3fnp&D$q1=r~I>N^>LInFFNUIIOR0KEU ziwLG5_?jNHhT4ibJ3uqK7mbDnE=$7k0QydI?$9bc*+qELbBkL$%8$=uZGDR{SNjBs z4;_4;Af{sj4m<^xpzIKOE<}Xit$m}NZzOQzjT3Ye#9M`m&{{~V#0X32S(bk{6P*1U za3BGr_Yg4>!ALCba;HmwKMK0RKQrZc?e6zifM z6sZ6Ym7&QKk9=tzSVKRy)$#RVT0Twi1<_)qYM+2sCNMQ^y=@0-EEq%dzK+^Q8$_(_ zU-?wfV9KngxXyr;a-+~xfYmo6e6sqZLN2kvl8)&=-WsA_DPV0RU zvhu$Xd^9B{1+W%~xs4!*2%f>@e%^(Ii#L`2l0C7H3$QB?XN}hy(se3KNUGDih!`!)+}tO zSA;~;zkwT^b2ZaMvX5}~?MCUCn;K_5G6-}#8+scE0yw>e4|%mc(t05wp`u6oGZaMK znpX9bhLrl=5?*Y})zN@fPv}(n2ELsj@y``61aO#lxsbRt>^JX(yhbWA)i z(f}cRD4QZEAEL<5AM$}Y>}I}Zs$%k`k0TXFGJT+L__txhpGmW%#XLE$e#4K&lV6Rh zv?jF=iB{67WnkPoygSeZ#DHs=kO8s#-v$=x2`t%xzaj{G*vOR4bmD|(9&A1!a-70B z2!uQV?`9tYb)JB$0KYibak0&Q^a{kW$RBs2%&L0Ra}MKssrh`Xs;%TVoNOnGqJ zHk#T^@kF$8@D^dI8N7rrV&Zn97DLT~9BbY(&9yBb8@rLESkx4&PAikW#hSM+5|0;g zHQQGfy7n%ib~V9Uj^KNF=%Zxd=KUUR$p&oGw|x!)AnLk8C8#%$8PuD;{5f9d(MqVL zYY9QU@j~bukLKNsZRs}c8JZ~^E(x%sJV7Ugz&DRVR!=CCMes_WKR8Pdz3?dEzIQ`t zJp$s&17|l#C<^(J;NMw*CUJtX9`9pIk(^4KvPU1i66W0=hm+3gZ;jD>>>}2>-v4G|de7Ht42Wk;y@`#RIkH3JRcqj4$pZr0nP!~iQoeSvYbmZu>XecphU#PQ$& z#CP0{n2OX&{B8uvb<|>}9`|Tv_$I`$DEFL_WOy!ye6`I0rA|1SosDWRNCQZo(#nHF zu3(~rL#{dGXNyEA>Nev1FGBVxTK1ZNW=tv)0;MzKTE>wcBNArCurqtp0O_{MI)BpICsD;D* zk57zRNIN$S5(o^9xdWk2Kak&OIS&_yaMH?*Ic+`gfbP&HOsSV6LT}(~l!|yzWCwv+ z|2CsWZ{!v+6XkK8uU~^)#jL;_Me^Ff-EO6P6z~=3!A|u zP>Q%$pkxUB(_EQ^e^_m}4%1-r=vuU|8U7p7XiUq^}S2mLkHu> zs?HElTEj*See)rF6XQuIkN|AdAVGz`LAxI!OX;-v!44?b1~2M4F#keB4c!~^=`Gw& zo63wVCr$^bx1|}3X!*b>0B4C={tN!&TMVh2pb# z>~LPX;HWz53@#44q^pjqbA(a89MeZL@W~n|8%mlwg*LP65Z6k?4yM&%5Zvl|L?Jei zg)0m*&4SKKwINv!?WhwOz>B^30kASsNXrt(+f*L%NQPDCB$!sgNJ166brhc!jWc9| ziVhMte=e6L*h1>WjK795jo?}m*_Ql|;NAPbfLFj22NV&w`fdO$;F<(QZG!7y(6#Gu{i((j`Rw&E zG(*3{AwgtUlD$RW4uSz-n!zsx9uWIk22guJzA&jp2oh>8rj6722M{B8;q*}7Ia37U zpuVG~NS2o2q%*OJ2xmr+LYUxE=Nw8_CH>4XBDPilN5sgq3=p9QY$>Q?4gCT$BQ&77 zJk!S%9}aKuQQ6-f7~#PS6mWV>$jpiLml*>hx!;1Z6pOBpO`(`s#C#xr&Okn~Q7uCaUKh_V^q zS2dh29iq9P=+qXQLr>tQ9ulu3Ff?l*weHYDSc~9QdzVJLkm%C9mXE-Q!N13u9iM>o zK$snQK+sl)y`rkx5gZ+sD#K-Xf>(8>DkN{M^ez7@1?Rs@`#SVeRYljOamV2zs^E|+ z@uC*?kMYnlQcJJo`xc$?UotK+2~#UICP&%Y!=jx5`{~C-jUp7njnDP= zw2>I{c{;k;j3#jOo{3kIVSk-W5GOn!(50(Er)?~SVEFaf642XJoPJZ6dngM9zN|P2dj75iNI($s1#glAj<&dO4qN(6M6`1HecwIs<92 znZP%%U_%WL@LyK2?!GD5r;V*2D-ARQi)`$(qYN8PjUw4T5BZa`qMDO6)x?>Qa21VFnk-w_&Hsn0QVm+j09i? z`9?qM9{q_!+sn)SxX#(wlXu8tcNjnH!YAdiL&h(k<0<)UR;w4DBV4si7JF^zri4~M z$6v{3~;@p~xr>a4T;)0K=#C$1Uzv6WCeE}9(2+pl6% zTUEXSf|>y_2NQLaj(S3oB8PgOEIQx=B=J!(~T!y;yF*SuIcZ*1k4$M zt!~4{%TzPK|G3WO4}`S;mMzt^y`KHROZ@vM(CR(e+@i6a#uYE}gBlc}roG6|Ypg?3 zpBK@3hM6R}dM=3po<cLz z&w^z@F#pe`*6Xkzioz%a1`*jZM|YKtiTa+~Ar8Xxr}>o~0THee18 z+tUd!{SW^V#-ZB)x^*fN;Dlf$=V!nWtN-zos2pfB;$RaQI!T`szFPm};MtrOjDPVY z%S}G`tiD|-$LjV3U8$ld?GUQ2UF8ov1>76(2Vegb8)STr^Dmx)+S3BgFF(b)C7it) z#+idwN4E(UXfN#urE)&#X)L!^oKJol2ypc(_dU(JCS1J=x|A~)&G$viIHuVVvhd=k zSt6A<{xowL-~XMrUyt~etGxGmc1zq9So)zBw>-`7LEJ)d|DM?np$!(lDE8*=!7a8_ zvPHK1*GljT9LMz^S+C4R55qm6lq%end+_dvgwxO*equel$(O#Kj?ajml9zP}C3WSw ziJ>Oo|3p2vfJoKrdYunh_fg-Wxq|JC2lxxoy4(X&+*1uclZuidAI#xVfg%*3CB7B5 z<0!rjaZr|?j(*d}E*-0tLh?LZ=kaBqC&9O`S1ZB!e;?w(!F9lLhy6=6`-nPcSF(3b z5ni~6w#mnhzxqn3*?Fk9w{K*8#u@mK;oA=THEfRBYEb49K#3YyCifO z*K&}P1D`=Gm_HAFQ)O2j z;UlibOo6p@PO|V;x0b&Qc%=qbiGs+*xgJg`v=UEXuKDy+Joj04bHa01Atv^FU6c%> zS#(C_??20KjrD^C5tPRAZ=PjI6Egys72I!AQhWNO{y8YHpca;cGmyUN~)P~|jdE|^hhEqIi(T1Y5stwHwWMrwqj2X}VCvgm(A!)Qz*WbMaS5kN;-@(~^ z-P6PI1RoW)55I*$&v2jGxsiDNNbjDZi3Cv8zU*Av+#c?%12%{10<)A&4wof>QA-ubY zhg#5>Nr5V@VIkTWks3NOhT4F8`fRk3-8ZxgaaX_B3ovmw9oz$)sL8DFUPsZ~i_|my zl?4F(ifD3oLzC#1Pc(VGTXV;p?V@Ym(a4Q7avTd|Rnc)>_89%RE(MK3tCQC0Ggn$G zeBmb6CTUAv{gf|kAE7xFA%2nHog16LKiS0Mr3azeeM*UL&)Y7FO}JJ26*_~NSm!N= z)gQY9p)Pr`Q^w9sI}!SLHMc#_ev!NXhdQCZsCs7f6<)(`Qh1LS*o)RVD`@SnT-Oxc z!C6ypPcUY)!wk^}hN8+t@3r8+zrgxhGxSp1BBhd1O1)lcTnp}gk+}@*_}UlQBdr(7 z^sY)5x!gF?wD#B+s+!K*yu_X`{xX2S`4W3bx~(FPv&}3gxo%Ly$6`>AE(_MsXF|2! zv;3{i%-YH6B%r{);o~e+=EdvHGcnRRb*CPQyUukZj` z>G3ifV;sMg7re~wly-T}@^4;dx5&*;GHHA)@4YD)}cVN~6$RQK)(2KDAxSTf7QYo~@trZm+Tw!%{x+Rn})nb*?ok zFyspyB0d@oUCmf$8Z3Yn$)k3w8|YzgM%EI_KaRWFlt_^nn6RR3yy?wjsLl_+%GyaN z$1l9f(j-breT}shDVeXayM6j6{_}r)qV9kBM3hv7D{vIB-q44JF5XvmXte<@q2mK_ z{!8X1O-hYeJak{2n$J^TM{lTGnXlu)7j^W(*I9+}gYWpDH&{n0$;f{KfZJQk#Byf$#JJ z)z=GHkMl|tm}$}r&`usLSn(5S`s^|4>C?D{qKx$G8AtVu>3T-i^^8yT44F{4JBdFTT+N&3TU=FWe!vrR8} z%u!k?-bjvtWx_vLJKkkGYjf{*q{7;W0mgA!!s9Q7S%zmu-8SZ zQtK^lY~73+-9BVrG`)GmKXv)1;s4a-ib!gt%SDL(t;<`HaATJ>O8bW{KR!It<%uZp zPhC#GvGqQ~&CeFH7bNaB^UZ}UB&}D?T-(9s`tDF0_jVMJivXM)NhOSP6pV_1y-6e$ zDFm3>VKfGK`6aO9^dRPEkr0`OQG{S$h?H_{8nX0aql`5(k-i1#UVEiOPTFZPLV?<$ zqga`meHc^1hne}hk3f8U2yFX^B__;5d3QEEJ=cF~+AwqBS06EpLFzLUnDjB5d-qXT zeW3z6s*H?`!VF9iOna=3&SJ z5{=}kJ6V#Hie&0)cZOtrDqQwTy`Q4#D5Sfy_v*SaVPBV9X%I=odAn^95 z?0acrhMBMVjCn_o&bU5|2FMSHBf9%UqBscEMA&N_3GN~!&tJrPQVUu_! z=E=^nWxA!S&foyAfxl41%B8Zwk*+Qq{10876G_y&Iu)_TUG<`_=xTceL|4rSP*=O2 zCt*rZhsgZuEqsOK#$7#3ap@Z0T*MAY=LSZ)^5(#Q=*m-(M7^Or#2R-c2X#ePh9V%k z(hULXO6MdL{fDkZi53K=i5aXLVCEzDu$v3#?P1G|#{Oo0p@gl!sUIqX_{C`l?BziV zOo8fTo%h3|xiVUF2o#mF1criYHmpx3#EHYbf&_y{Yc?6Vzm~G@M*OxfW6aoBuh#kJ zzSODfbU&^D%%E8%QgyN)SCC2dOHqDV8SCAKic>cn=*NLZ{g|mY*p3?hy^JL$iWWpS z90g;esf{kksyM)UC4b%Le`w@DpU7bTjX?TAmeBfn6m{#P8B#Ddg_?O1dE57~yNvj4 zxu5O1srNraW?1h?W8DylKLA6tDA)iQi%kcN1(^U$s#M%dKqg7riU2{hGw=0JpjnR8 zzky~k%41l)+fea;0!>n+K`Go*j4Cm)=YJd2H^{pGAR0l|KQ@w!0@SP9XP`u6zP_SK zb`&I-Fk{~9Z35mV0@M&xi8;g`H}){|6^GdD=pJaBTPs+CbO(~e7;mC9=@{6)!w!3| z32_C`q-sVb)$F4po(Zj%W|!|Ub5A+zbJHDq_nK-I_Ct+k|2gDSdnqeWKsqX#yVTI! zgGkin8DJM$yBDRuFUJEr{I;*aF=nK8=TP?>dy|CT96@SBZ)jlqx|{jZ3O2xqU(`>O zvJnu&8S#$|^lIFI5e;-f`8Jj8L1U_!KT*lD=(pks8tQ?7SgUPPsV5aes5noAQ!LFG zq^kAu36@vPm2PG};xHS~rW**wPK${S`t5s2>WZ+$XHb9|v@bykhjb7Px^yX}fcVuc zq`K=Rpy9-?rlP``!z}%OZ1FVD~LLoH%Sl9Irgi65DjsbF(NnE2o(n z^<-S(gWs`VBx751;rJie9R_1ErszjDgMQEd$Zn!v%TJ8?l6BH7=EZ_Yga|tXTranw zK?o5CM?~{73M_*hP$3mE(s#(y*}7!_Mt2<1nkCrWMf)HgwD#DGkoYbV!GmQiMGH3m zyHL6Dq#~C;`4LO*yab`YlXQ}&W+C;u?0|%6ZOr`iPwW%pP3FQkeuljRqXK^czp%+h zX6B9%YtxgFwGymnAR6J-VZLsKxpkCu%-bW=q zVy#j7OSk$yy!hSSzIH9n&XA zG-10QtT!Mw36IpnqrNjI4AWLko4X-l_uMXmi# zE&c^0r}XqB+-=c!;?YrDjc!06)!MJf{#}1h#2XXZT&q%J76aTht+i1NJE*Y5NYO+@ zeYjb2+XWs_65W@n*?5El)$JK5CpW773+-58l3w(w1(iNppRylcwZu}=E+i2ctQeF2 zHUrM7+;*~EZA?2LuWf;Rva)E$4v1oid6ol;_4XPp z6ijJnm^b8GeqG!ud75D0-Q=<#hqYQAgIc2%v~0jV51<lrODAEjZ^Pt9MT&JpU`H-$FH^k9kPgiVf6HMHx8P^dvPi+uTA0I z&*6M+o-l8U4z+U!le-QB?(`fL9MBWpZ5rMOY{VADV`I3n>e8L2_zvjb5mSx3|50^ap?@{ zMWiCu{GS<8fvmH1=R6dvr|yy6EQuMDkletKs85+l5F-S>EY@+Y1VjoC)z&`5-~Syi zJ1c%?{d{#qV5Lj-}c+myempd83NR`MsoD(!{gpG8d=N3DD zL0sv2%4^?+f|e*EjGGb1av0k&Or(_-Q@=))SBT0Ds7&ha0+kyG^W8{MM-o>N>rgxF z)QTfS)RA^bUb|bY%EOWMB$7z62NY#sGcnQAaJ+%5T{2Tj>p3A6x(#%?=5yFX^r#s0 z2Q|4sUsX3Gqr=FM06Tv>J6m8Dk9_sG0mQSjcbzvXCoweOwI)W$Xt985O`9P=Ae z1b1@782~OZ;h?*V4aY)3C^dVsp(l=BK(Uzgn7rC0ckMB+{Sxm~%Lb3K!7m@p4oC+n z?QKR02sI;u2_QX~c(wKjxC$l}(v%vY#MQR9P)6K@Usvw}Pb8=9$%FaZwXBcfb$+TA z`b)ETN*%k$G#F#*ZN|Y_9UEe~WU7aBw2fOYvv#%$q|}3!r1Q@aZy@nRU;kw?^P4ZR zsg^c5`&?9#bOHzd%kSmB)Lb^gI6mfA@O zb->>QMHlag!n7cnQ-_|smRPkY9{U$evRay$`A2`T^qXuT6!dZg6SL1ZJj8$*!Yb4hTL6$VMUWEizORy1gfcXoJHsA``K1>Iqa52|o)w<#0 z`}CNxLX>=0kIg6(v1jzym%0^WpB|fiK;%X0J@H>6X4msR-9a&5%sSKM_}#Ip60d3fP~(NEQ5O-e;9KcoIPKPBSM-j4rpF%A^9uFY zHvJ15=K{V^EBFy;huiOzt__Bzx2>wFcTsrphgj&VA7!|qoAu)XkB#Q@Pn(48Qq~j8ZNz!8sG7(}1iv7(vbhnlC zvBbsHY9R5+?_>E$gVL$Rdw921lj(mnAu7ilPUH{96&4tj%|>7J95fK_5QCq_=Kl_+ zkHZs2PqqVZTffJhxJTP3Z*}yf9Z7Zwm)Y`~eWI&VuwB9Je2P2RGoG&LQ*jMXn%PiR zs{5PzkwbGpa09`qaQGkXV!*C>X%kQjUlVfGuv;tBsvLBcw6zSHxgIhn^fk;eY3?jX zAfdS@?VBZdCH|$u?nrsGxkozY(6DQC*g#xy(m_?_t!^9Yqpn_SNFZUONBRyGbN7>q zCTyybo{XIT2=p{bD+j7M=&Y*o0YjT4@cZXBiSt><>BBvN;o{{Q4cDtx)(=-aYsCO@ zT99jFJ>atvPZ1nD0fc2ZGk`WQp5u{DNUfT7b;)Qc!v+gD(AG-QMx-DgQk&%_d$CI@ zc1tj-4C72QZm

@Z44eqX#2Gj&a@-)Y6A$u4g8gu*=}4)U?Y(3(vtChujfjK{Q%_g z1aRqix!_q~HlEkYc^?3PF4#R>^ER(FE4M{2L!7sdRoEn&1*t@Zi+ChOK}d>rOTy7L zWGS%xfDuFX{h?Jj^6PR;aGjoCw(t^w5DPVE=dDFfxNQm_K+C?(P5=w<&(MF8Ahof4 zO{}8$S^*KnTOLR7E?Cp~OO}H#Vj%PmM<}?E#$EEvbu^O8(qZa3uKhkur%{Lztf9ix z@o@+^f|lMw(^+6u)lb(Y4HrCj-s*wl(X@j(x%8meFvad%oesQd7T%?Xi?Ma`Uy^fc9QGqF?G$Wh(MBc8QT2<{Fu*3@w-#}*cj%1a zzyxAFUmmBl^Ua`hAoy^DV>Jjxj?TM0+1Oka0EVRAQfL_+-Zc}$XadVXq9#gNR2cC< zC3p5QRodkaT2>OsuMY%Ub4XSJ1Bi|94;`9^9QmOfXqhgfk2juy!HuTC835D>P-{=Z zPKuZT9Nu6y5(K$$0*RBQqVR4!OF+8+vMjHe&qp^^S`SLA)S_*&s~A@Iv9$EZ`=lXu z>kpSf;GP#oYe+*3ABV}Hh}}QkZV)ILe+g|!6OP659Zi+n3~hOJQ)RFrfmuedr$oag(_GNSZzxs z>WjYYI>o<6gN9c8vPH4u=eB0b7-P#*Jhz#Wto*0?H&m<${VIMhtNAAv{wVC+@$SFG z+I-@DIAKgWtlWbl8eBb2s@Z2;TF9G?bIikzf+p_ZG(&I+jQY!Kx?<}6VY9rV0|LQe zVQk=r2czML2BIIFf5*D97X7ivQ-jgnMT(mCrR=W-c>LjXdBrOTXcfy(4F<(pVhZo` z`}P%ui?veh#bLP$R`Rf{g2Ut8rA6nlG_d{s8~G-e+ITUzI~@V{@AwDRlb}0&rd&t8 zFi>_8+>3kSwjrsKqV&&w7-?hU;9su}rm*HZs_}31DN(L+rcV?^cC|aLIQJ#3)HZm4 zc|HyvIzZ=-x>)8fs|y$5a;eOn4NOKSY1<5JkHe+-XI*CsEIn4Z2yhLEo^Obuv#}t$70isl1tXlN{N|PL z`a0~Dt~vZyVaJ5lmRmdF3N8dV{=&}3I4YQoJE#NtgAuT@&e$VMp0vG7CcvMe+kU}o zKhf~w5FH+cuA-W=JM0S|gJkY8hV8{9p&O;*x1;zUvXa;~7ET;HmtkL|pq<=LR4^^{ zLR^wR9_IFsTemSx<%8puXMEs1*#8r^wNB7&3lJkygO7!UGoFVDeZ1MficWUZ!2kPEYzP};Q|A9N}Xtw_cd~pY(F=_vw@x`Yj z*8gw#;)B1N8}J3&&ekJ>JqHPFDFJ9nr7^`7oC*=+dvEq-kNxNHp?dR2K!oU?UZ{KG z&~?8jI1-!aa*y<7XG4#D1x*AeNka<`|79%k?i2#Ig>@J}D}F>U+3fM9l`V=@(@x0# z1mt3m74M-GH>DW$npowpVWwR0W4gRrtn)YrUOf5BieTamX9^B`5!p@5uJhn*J~#wN za$l+T6ZIX$oTQ(}0!oLSxVfIF^YoJdj7S%&{11LENiqAR`t_Y&sTadC_l=e6S9p3g zrH+llLic&3%K9mjs@1fL+~?5+vBt;hJrv74(!;uc>R~jjZ|FTtC*yTXEjV<>0>_G{ zZkZ#i-Xqmf>)*N4DwcHf*kS)Hx`oHS->a2+?C{!EKRjA@@tw`sTZ3|?>npy7Txm&v zk`-Y&f3mRSg$az9A|;1RM4WZzqPsAQ5i&BrD?u4=c$mMR0D}U-3L(W$qo1^0avm{M zwKV35yU4Z}t*DrP)7zjx%oL;`cCQ{Aug6yDLVczl>xAq2hhv}^APs8vUpQj@nvu{_^boJ{VxWGa7oh#Ik(6TDFX+WpU?E+b zXoni{8bL1h+I_`%q$LbEK*AtiQ>^ov{W`ty?@9*}-oRe40Ah7=0bk)Bb3Ojm^A{wJ zHP@qGJ%bS?b?g)QK);gQ=e4~)fqrgn?+q;GkR3Pluqg^|u@9V&Sd8E={$1DEiv#?{ z+?c-<=Ym^9vf4}h#Rk%U1AifM;b_cXejVitM#GDnrM+$^i_V4d04O3rVY>iIjf)MP z%U`4E&OQnNw;UNvjuUI$OKbfn9qh(P%5m8bgUC9ICrMc=^;Z|+#1ST(1Vm^;i8UP!O`vi;vLpn~o zELJKN1eI$KzQ1y4TG;WHSn`hEoq_e!N+sX}L=Z(~gp&SSHLV>6XMc&cUd?TT^~ zPEyNa`SF{S!3h&!2LKr{rsUeiek9Eu%M0djKLT_%-gqB z+88e!<^$R)Da~ddhahUN#?HQLNi2W3t#Vt!mpB5}-v(J>oEzHFp*^$tmbOZHLjQO0 z8Avg!ZPovz)tO?_)sf^$?!ua*+zxjGEuwi(tch33(Wk6b;H0e zdyQMWfHNydoZ5w9nxznWq|J46!OKsfSlC|5|FkO0eR!o9OgI7?&1q*;d1wiqF(Uv% zHuR`=hRoH<`A+JHW?AJ3@6OPox%QPK5M7uNuy8m_biq98>Sz=oaeE?Nq+}9WWD$r# z-(fJkVdHQxeGIHOjmI0Y#dv~)$xYq`63Q>$tn}!Jw{W@vWikg+hI0!yo*dvA$giNr zWa@{6{q#eHBX3d4jK)XybJjtbW7yC0Iw+Y+9Td&se!_wGXAW_pMXx*IUZZc}Zyl8O z2E$*x*=>rg>89!QU};2r=+3gj0k>f=cFj5#=A;*&rZq=W6!CD&vjD97~sq0 zY-i=xrk}uLh^R4tPhqlMF&V6H_rcr8?W^PGEwy5^cu%y$Fx=wsKW4#-$%{X~)XFou zD3c`Xb`yW8i{ggN;v4-~+oUsnSbNnF{B1Q%*%oZI+q}$M#fA#vcAmj5s?3=JQoe zn>Pi*G*CG7AW{)uhd3Qt$a)Epb!R4D(_8tXrSZL3fNCQh+`|KS;vA^1<@8Zfq@s7x z<37p?$&P@nui}tQ2+Z!QpfIQ^Nk+qK{Pp3ASGs9qEWbEh`9wO%P5j>@(24sx#_`@BrG475=3oul z8d`MNN5CwSutS&?PQ2D34lu3s1jcQ~`@5W5@uABb=|fclnT~acgkUA;=S zL8)19!n4wZiK+y{VreIGVnJcTiLc)p$KM&LWJ)X6oA}j{$^pYmeBUU=E&cU$EKkf- z7AAgx7er_@kY5Svgo}c3V)e~&{P(d+V$0d|J)9oQqvJf-C=2!BC7H^F#5@Q*c(UB6 z$_G}xN~-}IZm1I5tMKAz|***HZrNH4dE<8O>t)*3eO-V+pu@0rzD*gbH?41*(r20se3CB4pR zdi5+dDC}$EUIIJhGo%IfL|0P#*)>N(J4Z|$R!ur(mm4MR#kJP(zSD@uvVd& z)#B4J{!@~AAKdAp%Q0E>A37~`mF>GOo63a}_PvlF=w_#HIPv+LAl3Ox)5#XMu-y19 zncknL26dY+;lu@0KtDMc2g_fW3{P-nHLwNqq)=8aY-WUte`5a6RS;oZis*LUDnh65 zXpxAZ>KPb(lUA7HGxP}(D{kF!s6mhW-NBUwlti73um%|6vN?iNuQ{c)#Jj!0q5S2E zO0sVyp$E!g&^QFvZLz)60(CK^=_sXw24jo5Uf7lhtfIP3Z7sF#k}NiuuzR#fJ3z)6 zrh>3~Y?)0%rN5ELCd%)c)}6?fY*00JV${tZwvyYWhH=ad-CK|D*A~W^D!%=nPqg@rNYcR3d;F2X?GIrH8^03s(HYp%>ecVSNkG1J074TBwZU0^QQ)% z*VFB%92ykv_o({uY`xqC?WAOUWT_Pd9lwKcq7hDfDJc%eLu&Am^r~uHv|%D}*aMGM zxrgavxSP=DP~e(Fhz{@!4ZCX&8_8 zD0XaLsoA=909Z&ESzzMbCo6-DNpbw)$;v$)TgL&d_t6qc#~W%WDrv{ViLW7*1TxSb z`uf7B`K8H9*PA|E)j$-$s05))g&&)10TXvjQQAwERVJQ2MaeWK#_w^?LHLCq%&{K5)8nkKqvCJY8uW*ZLcXw!vQCNx$%->B?;qal13qmARd>R$9?* z+-`&u%`L$#f&*LlO;H~EHTarK7zBkwRT=}&T%Wdx}C(d~#1 zyhrI0D~rN@MCadwBiIG}xqFo7;_H@yzS8r`gki;JjG@!qnXTMuel`hP7wuOQADyjO z`Oa*mgV`;TzJS*sN@_X-NmpPOQPVzcMoI1X_!-J_0YISNLhZbVw2V_xAM2{Rc;X}hwfFnc1M}0nF0UzSaqR9z_H$b0p7DVp(s!g%U!F+ zk5j7)UHF=JnW@woAHBjm%u*J$NY9Pn2-KP&pv258d~cTWtkKvhpS$i?dim~o^lvys ztRqVe4s3eqXOP}Aw4f)FTAX-4_$kT0p8Iy03E6_tcj5#OB+3N&+`YWW1~CAodwL{X z4$Z(WW_fYhI9*9|o~oxs3w9T*F&l&}VmCrpc_&(g{NZSt!bFdX2-jBoRCEwNHCE{@!dZid`v&*$V zgYNGQK5mc;w+O$9V6QzVnxb$I0EzPv*?Sr4W29jum6O_vs>)koogtyj1Kkf&nuR{( zLIt=4DzqPY@c4nCFQBu@nx>veh}=iR`2^J>mgm&25!2s{pqgDuFj=g^-tXG&M2U#S zTOJ|ie}wX3kQB@uH#ll=KrNY3BFMqHy8~SZJl5YzBgTN8yTHLNUJ`O{4k)7vJHg9|pJ|NEjrStOEaxB3vTJiE?GALDixdFz)mK`)VM$0{avM})Ab41O<5jdbXFnd4LV!Xd zE=-!uy7+S#w2u5X0|9hwB!I@_!~5O9^|V7vx(p2_3xS5=28(<(o+g_~$u)}l5v^Fb zyasMGt&v4NdJ!1y!HBF*i3o2Im@afxN~2Yue|P+lpe4nB2^R{>BBv3VZhtWZz6U@C z!nIAQ0e=^46dZP~PrtV#ZAxCWjNwh=JY}wQ(GbU1%u_l` zMF?!2r?hW74Zh0ZQZ%=zP-i<3D*uX1QsZv@KV4h?Ilk@r1t$L8d9M0 zRE`QCHp`xbX?~ZN)!WpbR$@@T&`yWMf6k z!ZtZLthnV7Xe?m`;dmHZh^4qpI}nm|=ZH8fnK$`#lXLv7h04Ryn7UY={D?AL`n@)m zFMR|@06P(Q{}E-DwC7<{VVgxttR(Gtz*KnKV-O#t<#SAh(;ip$OUAtK3p@LiU513R zbMV=y?fKXWAd4O5=jURdU9NPK#+{4h_bpeFrH%-UUalmHfJmu58_NrpD{o2%943Cp z3gs?~_0-Sd9=}1zxqFt0Z&;zEw(2+&0tRWgLO&l=b{u)vJ-I?jkEi8cgY|D|3GX&X z(oNj%SGr3tA~4;rwC|jo4&daQv9xJv0*?}ttBGObWUj{%K^#GW^IC#q^0!c4qQHK? z(oO_w{7P5p)L;`&&QpAbC;9Vv$^gaoTP(ztGD4!@xJpTT4WV#iliycN%DAj2)Z=_+M@yzfkXCcb$8nOGiNrF4%U)Ht;hQp;B<*NoLCczJ;`Q4FqA zK$$NBF9sBQ^8xu_L5D+f;ioGH7 zr~i|xy+Jqsakb)VFE54rTs#Rl0VCXw@Gb}R1d3g<_c)X|qUF_(@}WT`#bUWfY$oU& zbvMrqDz=Wfv&Ctx+zDhAC?|LN)COJ}<&-<+*|HG8zM|9kSY8rT`uEsbr<-^RW`Y7l zyez)ckOmHpG&5w!XOV_=HSmjU6YsGG=O@duO@+QS%FTw>?Qrov7g+*jE_)tP*38nolF^w4r%uRle*=$J%yTw@o)1)G`3IYn z=Z$Ccc;@p;jx=$csj&2UfQX>>&j~52aoa9Z{YsmyYG0#8#u6yeT?^dQ~6fc_rSTbkiCJ1 z#0Y_PyV4qV3+s>q+c*$c{eLM!R)@`5Y;KoAZpIDDVsnpuu$tH_eK;u9gd#|An8}E} zXGprlxAAivKSBjhhC3$``sud_hZWGc3g@(T!-}jsdl<9{fJ~mCtr%acF?+S2ga;2g zw@USDN5!$dOS?#3+9uM!+4OHQHB}I4asz(zkHGqNAVpkPoE{+VGGQ^5#)S<<5q@FK zk=zne0Uxd#^N%ckz^(lzs433PPxqpdPMBySdq}TA{MJ<~=v2Kdba@Cq@Mlg6nSzIm zTaE8wYZQ%4sVvlP8rewSLgS;lvr!k0J;Hm{v~x>ehb(6$!3>A|7$kWr%xh}&q4kff z)JU+`!=pic?E7g!*_?el$@$IDL9GYgZ8+~M`RvVJ?Ql#0yM5YOs3_Lq&;o{1eq#v# z>8J{2g!4WyM-$I74hcu^5GCW0SDg`dzG8NS^WHIoHu(QCtG$^1C8;PK9 zQ65+0xCVp*cAQ&lF{EG5<#csmbZ3`^^9r)ibWQsqfu75UL_UNp`p^(+KGM3|e zxX$fAZKhk8g&#JIm`-bOV9{$`Cde+91n#g21h{1r+kzB#+Ce%04?w}I4b~MkaqXCY z5D9qTNVAUF|LOE0#Bm%j3HHV%M{T8J`DOCJvcQC=ZkA~^Egf)TM^+5gaMfS_?+roA z5VBR7A6|^-Hv6#BzQ|OezowZnf@0T&bnxhW#U z%z!hZ$iF34q6X3s=r+v(eSg5x=+}F)@we#~e`ymP4q5M^>xmT@f0dcjEiyN58G%1{ zjzCKa`(p=`3xF$__J#b6gDNKQu(B7pxLZFcjUJ)yV19sIls^OC6h|jr3RJyQZqr7# zE$*RZx4A=S$2K8H>T?}kcF?`iIQ3XYdT=ZbcxqmGP#`d&e1I>EhcVv#r8|9fA6ONL z&X#Q_@NRMRUf|pfY*LBq{bk&%%oTw!nb_NXTGopY!sH2}d~xCTF)cg3KU8m)?ZPC8 z2`#Mi�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 ZrW35>1xTQDSYBJN1l+y^{|{vRU?pVt5Y diff --git a/gestao_raul/Lib/site-packages/PIL/_imagingcms.cp310-win_amd64.pyd b/gestao_raul/Lib/site-packages/PIL/_imagingcms.cp310-win_amd64.pyd index 3557c473c59b1663f4a617923f123256ae40acbe..0185aa68bd0be66d7ec0ce1c43665f505cb60570 100644 GIT binary patch delta 15020 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 delta 15269 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 AJOBUy diff --git a/gestao_raul/Lib/site-packages/PIL/_imagingft.cp310-win_amd64.pyd b/gestao_raul/Lib/site-packages/PIL/_imagingft.cp310-win_amd64.pyd index 798891da79253025aa66cb711a7575056b1c61b4..ee259c7f20e0631d4b7580ef1f0d0db6c59a329e 100644 GIT binary patch delta 550932 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 y(OD#n>z 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

M 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 z

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 delta 447961 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�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

ZuefymHf5qxnJlIY!z|wYsRf_XB-({`h7!JiU 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 diff --git a/gestao_raul/Lib/site-packages/PIL/_imagingmath.cp310-win_amd64.pyd b/gestao_raul/Lib/site-packages/PIL/_imagingmath.cp310-win_amd64.pyd index 6ee87428e61cde874740e2745a5e7a275ef3cbd3..cc6a87d494e22984866a80766904ac9c51b4ba4a 100644 GIT binary patch delta 429 zcmZoT!q{+xaY94=rSxmD)7W2L>etZYDmh%_@uq4$MHA&C?x^^EorJ29@MECl-{H7Nt7p=ar;ZlrV6D z#C-Devr7xyO7oISGV}9X^Gb>;85jgWGGUoTC8dcup?T$*c_|DGpC>O2kY?O4d2fKM zt2L8*YKe1cQBi7MNkCD4a%yog!v)rm)S}$Xyu^}Jm=MDzX3t_MC%?!oH4$WcKv8Nj zP#Z(_WcffzaT`pNJX07PCi@49N{cW9Z3(U{E=kP|$;?f4EOyJxNd>VOY$n$SN{dfn f_RPyH$xO`2tV#{`$t*7MNKH&(Shaa$puYeB^zD%8 delta 429 zcmZoT!q{+xaY93V(7E5SV(X{!!La;wHa;OBpG|uTzX*_yy$+$-w5Rclg2gBD%Yo?$ z{8B*r(yb|Aak2GN_*8-XIIX$-;$V6zl+NOV@TY_ML7B-JAiEeKKov?eFa)?VFr>7x zF?6u;rNab2FeoW-Gx2F|R$(k~UiIXj!R%QK<>VK+r6z)G4=744 z25Ms{m@FSCDQ=8ul4lBo`DFhT@7IjJBPgURIjKxy$V gX3xCLlFY=M%&OF2pUmPCkJQ8zh6S592KoyC0J9{Ga{vGU diff --git a/gestao_raul/Lib/site-packages/PIL/_imagingmorph.cp310-win_amd64.pyd b/gestao_raul/Lib/site-packages/PIL/_imagingmorph.cp310-win_amd64.pyd index d8f94fbfd9c9854607171488fedf2b34b2ebcd43..6e5267ba4a9afc933c6841cc94879f1f7bacae48 100644 GIT binary patch delta 426 zcmZq3X~>z-P#?GdGl$f@xzR8zyo@he0?6l%m=gt}GvXmMcf`CXNwE0LC?POCBT5iR z-&;KgEG~6#PP8eIKQm%#lr)&03#F5yA^iDZeo$s|2FNZ32vCL63=9FT3=Ao4Yz#H( zW$7@%4-85Q+)R90i&YrqnSm0U)fLP+of%n!N^+bN3rb3hQl0bjN>VFI7&t*z+DGUyi{k24;MVNuM1XmW9q~?ZX=B7FpyJhC2f>;bTlk2sl#iuZP=4F;- aCgx;Tr3U+C7MFOWCZ;f~+PqQApBn(JPM1^w delta 426 zcmZq3X~>z-P=D|JQ;u1E-O(^S`I|)a3?RRYt1AjbU;GB4ySO@{W`f20qb7mrzNm>n zI_`HDSbSDrSM*jO{}Oj|)NC-_4W&z>A^c7-KPWRf17sHi1gJu328IAv28NV2Hiiy1 zzI2%22L>etZYDm>#VU;Q%s`3F>I&wZ&RVFI82*C9eDd?N zOAFje^O8$4^YdKuN{T8O7+6?=GGUoTC8dcup?T$*c_|DG&n7R_lxAEqd9S9ds}YlX zYKe1cQBi7MNkCD4a%yog!x7ey)S}$Xyu^}Jm=MDXX3t_MC%?!oH4$WcKv8NjP#Z(R zWO*$~abrxAJX09VC;MxON^>y-Z3(U{E=kP|$;?f4EOyJxNd>VOOeWWBNsD(ed*)@9 bWG3chR;32}WEPirq$Z{?EZDqJ%byznp9q`o diff --git a/gestao_raul/Lib/site-packages/PIL/_imagingtk.cp310-win_amd64.pyd b/gestao_raul/Lib/site-packages/PIL/_imagingtk.cp310-win_amd64.pyd index def67aa51218e3e8cfd84646c01269e6be07d54e..04cd15900a920bcca349e3a70350e11a8894a42f 100644 GIT binary patch delta 443 zcmZXOPfG$p7{*6M$ci#DBuof96cR3-lS)KO@F4!_8r$xh4$aKk>=;^t9=n;X=`H9M zo+3X%-=LeHLI}EaYtR5yB{ScEo=cr{UYviEPM;VKV>;EI!+ES#>?|}r-Mux-?^*~n zcW=ux3w@)=_L6%gI@))=MLcpc8t=ej>Ck-&B3a`cn8)bYw%bOP@ zsa8deL(*UZ>H_&}FKZarwQ9P?G=UA4VuCji@>|{5dicj%VilF?1oTv0gQ~rd#zX)| z=-v8^g%7^GMc@=ORlqzNeRwkF3=EzI)lSUG60#n;w^o(SVEljMjE+vMV`U>0@W|$c rhADs+F@=OF1HpcwxMe7zV9%3bSYValJ1AtaDb7IE(Qx#tTrB?qWow@F delta 443 zcmZpuXsDRbP+xFP#?EAYQ7#PIUVoTt2jr`07w4FP>B1ayFkO~o1E$M!EP(WfTM+sB z>%}>SK)%WP;#?jeU87Y6)>ordlw%6!_vS+A0x&-)GdTlf7Xt)L)DWC3z{nxe!N!*k z6=L|nprpXf#HYDghjE1xGf-ypb>&p9P$MSy)Dq{?qN3Eil7OQ8r09oW4hQgg~5EXy}qb47c _T_co: ... + def read(self, length: int = ..., /) -> _T_co: ... -StrOrBytesPath = Union[str, bytes, "os.PathLike[str]", "os.PathLike[bytes]"] +StrOrBytesPath = Union[str, bytes, os.PathLike[str], os.PathLike[bytes]] __all__ = ["Buffer", "IntegralLike", "StrOrBytesPath", "SupportsRead", "TypeGuard"] diff --git a/gestao_raul/Lib/site-packages/PIL/_version.py b/gestao_raul/Lib/site-packages/PIL/_version.py index 963d8c9..9938a0a 100644 --- a/gestao_raul/Lib/site-packages/PIL/_version.py +++ b/gestao_raul/Lib/site-packages/PIL/_version.py @@ -1,4 +1,4 @@ # Master version for Pillow from __future__ import annotations -__version__ = "11.0.0" +__version__ = "11.1.0" diff --git a/gestao_raul/Lib/site-packages/PIL/_webp.cp310-win_amd64.pyd b/gestao_raul/Lib/site-packages/PIL/_webp.cp310-win_amd64.pyd index cdecdab945bec134f93e88c34e3b001f07eebbca..2a8a4bca1af3150911c8f5f73dc55c2d24549350 100644 GIT binary patch delta 142462 zcmbTf30zb+_cuPdGovWrfPx^hsiUHxqPRnq!9nieptx(@MXmbS)&=)vumd{uIxbCZ zw6)eQR=a8+T5+is+`xU`ySTLVB6VrCb*s+*o7@4hzy99${rvl>lbn;2lau5mIXOu# zIl1+6a_TKlA^|I2=;nCO6#wz1SBC#t@$Y2aBY&O%d{7;6?*hV4ZfoH|b=bY11pdW) zr$jj9-dTiE^+()0kMPnfBmR61;UM+JdrL$(;NC?M4)=!d|Ea-41>9#s)_9be_^0k4 z|7E7?bYm7()6Ho*b~X) z%d6=g@G!HQPEF(y?|4lHsC-T}0y)U??HKvn)r*6E5`PS&V}KoCrq#0ltH zsVPaK`=zFIpH!QAq=#=9Y{W^^4OzrQzch3h&??ZVE6W9`tQ?Zv##Pj)lZ&tD<=A4` zZ8t~T6(2e8hXBWO?G8B5Un|)Ef9G{vjYHI0LzO1i!{*~)ubj^ zmsbb)NdU*z@C56CNhp$)CFbS4#Dv3YmqRqi*hKnc8Qo}XD4ktK4;v$;?aSzI#;$>* zcs6(N8_T@8TNfl%Yf1u%NuX1fdeIMQcJ)z`X(>HdJ+@_=T1H)7QFgQKHPG&|J0nU} za}2;tkAxi4kqCxI-QJup(0HFwwX*yZ?h&fKR$DZbC)gq~`M=HscW`V4$3B1)ipsx4VO_PPJ4?KUb)fBQG?8-V(BU

f*gPE9zFa8g!|swLAQ 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

m7 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

;@Rs}*us9v$+lHt$NFM#7IK($2>ft0 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 diff --git a/gestao_raul/Lib/site-packages/PIL/features.py b/gestao_raul/Lib/site-packages/PIL/features.py index 75d59e0..3645e3d 100644 --- a/gestao_raul/Lib/site-packages/PIL/features.py +++ b/gestao_raul/Lib/site-packages/PIL/features.py @@ -127,6 +127,7 @@ features: dict[str, tuple[str, str | bool, str | None]] = { "fribidi": ("PIL._imagingft", "HAVE_FRIBIDI", "fribidi_version"), "harfbuzz": ("PIL._imagingft", "HAVE_HARFBUZZ", "harfbuzz_version"), "libjpeg_turbo": ("PIL._imaging", "HAVE_LIBJPEGTURBO", "libjpeg_turbo_version"), + "zlib_ng": ("PIL._imaging", "HAVE_ZLIBNG", "zlib_ng_version"), "libimagequant": ("PIL._imaging", "HAVE_LIBIMAGEQUANT", "imagequant_version"), "xcb": ("PIL._imaging", "HAVE_XCB", None), } @@ -308,7 +309,11 @@ def pilinfo(out: IO[str] | None = None, supported_formats: bool = True) -> None: # this check is also in src/_imagingcms.c:setup_module() version_static = tuple(int(x) for x in v.split(".")) < (2, 7) t = "compiled for" if version_static else "loaded" - if name == "raqm": + if name == "zlib": + zlib_ng_version = version_feature("zlib_ng") + if zlib_ng_version is not None: + v += ", compiled for zlib-ng " + zlib_ng_version + elif name == "raqm": for f in ("fribidi", "harfbuzz"): v2 = version_feature(f) if v2 is not None: diff --git a/gestao_raul/Lib/site-packages/_cffi_backend.cp310-win_amd64.pyd b/gestao_raul/Lib/site-packages/_cffi_backend.cp310-win_amd64.pyd new file mode 100644 index 0000000000000000000000000000000000000000..92615192ecd17c62ec42ce73368168857d95631e GIT binary patch literal 178176 zcmd?Sd3;pW`NuyY2?S)k0lXRobd;!3L{sAeM%o!j@D9vCP*6}16rs2y%t$~sO`=S% zqkgqk+uGK)w$j#C+gd?vYeJBOMK-IV){0tn($R`bS#0(G-k)=4l7RO6{k?ww{(MR1 zE@yepbDs0;=iK|4eo4^12pR$5L;PB(t9v*nI_w&cEDTqCP z{G_>8F9^+>f8#gjUvYhC))hD0aAP8L)xF~e}jaSV+Js9j$o@=_} zq0Eq9e}4PC{J%$a^Nk*XLHTE2@w*{%shSmRaYdg2n3#3&r{kA zY~c41e!Kk_hOAEaiv?Cq=fw)fP|5E#{C4{<90)X@J}*~LW7JrW-64zN*~p>u#i=a1;PnW`chArE;Tq`~R!|qWfAkNy%PLDpp>S?K#I9P*YyQ zQ=vvrCzY3)r?K)A0_CHhG>`TeZGH~4BVUP3(c=o?wYmPgvtZJvzv@vmnb>w&Q;!}TfN5ACy3FxTJp5+`fjp-CU(;WuXUBe`g1gkfFmJ`f z^zGRW{KBc;rS3L+_BE7PV}JrHm$ia;^XsIpD|ejKlJY4rjX1_t$g|J>aY3NQ-Q(Gx za^a*$76VOfmFJ8YIe;t2%~*}g>0{14Kza&K%xI(T8=ifb8ENqSpHQrNTjF@foyc$^ z3~wr=Hi{wFF`tX{ugqzBEpZYpyhmZr?ya%%7&slt9RkgRxGtlqQRevp5ZxWx?~Pg(1dX2;!b_2cC=l=tkb z41)IvZ&PSIexD$@#Pn^DIXdPx$5QpB^nWxRbIC}yI;pt~roO_n&llbsh8DPcMAU#g z1i+g1)*t4ij`Nxx28?V^&;A?S-f;ml;%e| z!W9%Z_YL)BfrQP79@ku@gS+_g?2p037AE6V8sOak{iN!cF9-5u{!+!IdgKO2@Wc8t zxD{Q2$2?ty4q9s(kCU2KUZNQ))xr&V_O%puhkN!wz;%P^dwK*!X3u>uKdjEl>tp8A zOu|4ncohY^P2R65pSq(>yYT4-%c<|#mw&mNpLQZNaf%!K z{O*Ig8AEw@Twl+w<-)Tc7tG^IQY?Sgqd#97R$bI>hDFqiSH#?%PC8azFYX(PrGqa# z$n$$ z$PxBGyT;Mavn$M0P!F(Z#|@r)@F-T$K#e=PZw+FG4wir~7=M_HimIJY2L?bDya`2~ zmLlTWizptO)eL9@+(}eO2OogQJ$nbE&yHfKwN1^-PP2|%;nP#BJZ!C=6!~IK!)KwJ zd-C`6RTna^JG3H;JgEf5T zrglXam54QU-TCb~O*`ucJJl1*mLBD}(Nd>y)7l*0tbhmiFmxGg&`;Wa%&f8Ap1m1Z zbKU!p`F|yuns&yl=%!e8q%3Al5GRb5#;e<-?)IoPen)KRIy&HnrXK~v-7DwDCwL|s zcqT;MaLK+EtAzPLpd@ijw4uJVAUPmnJrxeA-IYasazL<99~5cBHvuu`hUphD{|eY^ zj7$?6DD;e9s3<>{V)fT z3uQ;f-AHL=ZO`?aoRj-w6DQ%udLXwdI75p^e)RlO#)0ggWn&fWBZV?|$& zR(}z-CVb&kzu~ys9Bce$XXpW^nx%#K@?qShcHQ88K7RjW_NT>v_6sffC7M=nRxcz<}zje_}gTFwZP9WjQ3 zYM9qiz?-^kSU+5J-Kmdwc0W;U!z~qogfFSyd_Vw>3rQpC>olBFkVH~lWuP97I+s^E z9u7nNom2^th3H##dK#kLUDf=h_2agfVn)+x3x}9{I`-QyG6U>dgWcuBt?xIhr2A@g z)*i>T3s}^Sd%&|x{MFr`XCD}tkvgApAc?SEy3;zY|BK$9&PS zzhGhCs^*3-3axK9yW6u%MO^a?J&5tUtuZU!mif*9AThQB-4WDV+H0*=UbbY7*oie^ zd&3vS3u_S#ZEt&C#J%&0KVoS{3){UntD2j3T0c~?Cz(sr!$5O+zn+$w%OB~oc;C*J ze;ntygJ0DEMMX_J9jkWmCkz|8m3uhPv(M9|SLgs)`l0e>An++{0TlN3j8^NoK!Wba z@NXjjrt$Ba{F~3e&dC=)l047p;0Ks0$KB-FZy2;$jSa$&YtJkJ-f(U?{Xy3 z5LK^>jib9XodOE7#i)CWdOC$O%Ib$W)icVL4tCrLrE7&9r;z&7kd#v4VU2gv1*<8j z=F;{#B4sV{$qb6gi@@+ZOSi_{(Iv6!;{Ty9tLbMn76UDHOmGabhnB}uMo;A}fUJC2 z?~zY+{!4d4S+2k@1!}{R^16a#*g-Uh43S(?2Ka&!mfq})m_&Qlc>cz!*TLM^MTc(J z1lq6PF97rKi_adW0i^BnJmlYJB%-?RW!_V*v|UM=c%ESoH3+1X;p>%$DmY9V|38kQq;jla>Ocn`C>{3{FQrgbd{v6^}TYbD>KsV z0dA;TdV`T-R^uK1ecg4wRJ(sn)}7)5w3Q{$WRzS!BfpIa$Zr3f}Hl zTmJiQvThSCW^Z)dOUjr`#QSi`y2^Od-k9a=i&lS#nENnR{V%BdU(uoebgHi_4=2iV z(7dbm+~DH^Ds7i(#R!^b)#M;iM$COKTDUdy>pNAz4B+=vao>o!J_=z*u8&#A^>KbM z8NCQnX!)NaQMEjqmVNEyAZq)KUu+-6I;rhrIy$syPQOdrCjzQxKY9<%!tW24X9ax- zK2xJd-896Ue7df@?BYv|-ecH6+J4_a^pR)(+i$~a+$W?rR1`>eg#!!}YSQ)=Q*Ntg zx2l|PxHa{L+&p`udBQ74LSnxr?)Qdp?4RZ<-PKj8(GZzh9>K$yE0fh~{0$XEJV_in zZU*A9nT}GkzQNXN(9+>jB?MT4@fL&nxg)*r8*&pVFQ0IIcs*i?H($e#R^&jXAHSXpbx^LQR z-L;Y7NB->Lp|p;xkv|?Yc+RN8qR5;`^@fEIv>|`K{x$UkK+S?LJ*n3;TYvprY>^;`% zzBAId1}YHnba$Fl{kNqj*I27-X7q@pR|Lxa$981M*4iN(THfpvIjsHGmOy|pd#$NH z{K4B-Gy86(n-5=0l=&L$(52@7szEef{xW5$gStEP~65zk1cSlF`FE( z85KKP-Lm8z)ZW%DVWaz0c~7&1q5D0K_1j?m>K=ha2}-YY73ev*kOk=3En<3Fq(&TQ z<=&AN*0uf;H&bk`)+zdwgTBzYtP+=C3^PNQnMKUHeD&aU*~%J@u^{v6zFeN^U@fKB z78tg&Q|0LaPj4qPy2~tl)6-?@iPr;Q6c13;vkT1MYC&sk>w|O*(a+P06X35%sf7Kl zr+SDnY^KMEaYt0KC_d*MT%fIZE^qapp$h4X*eg!MfdZ@XVLg@eL1G3_WJ1)(TpYKU zlrgtuZ4ba_DBq!B&+e;H`2Ng`#Gt@l)a6mCxDP#O07F%=0!XGJq%pJAOw~>SvwI~4 zDd98Xb-EKn!G1u+Z(t6x_~A#c`-7Y-HEI+k%<+wZoYmAxPI>!j)(#-seWhyr&LB!I zjATzOHRDQ^zj!p(@#ql$D*1LjC(BSZ;r^2{sdMQb2}Vw z!-^$en-WOwHT(;fu;Tmyf#kmQn1Vvl+Bkr6nxVgohT{%l^4;Js?quX`g+rk$&%X0pn#Xa& zdB8pOd~@@DGY8|!4zh7q_zyz|J-n8O`$pHndIJf<7vm~C`(d+O|GO7-WbW=OVG-Yys6C_A_yCVD-^%H-_r4R`%<*qvxDq+ENU}~Bb>I;W!;DP zJAdS6GfbL(3F;OmZpo8vowjNL^*3)C3V^z~e!auz~^>YUpWuyU`KQcP_|}w#&gM z{zd&z;#3eQo`YxJ*Yw63Dk#2BZ5Y2mN>{m-2m38A%eVXi@EAOHwQRuKVsyevuo`ne zS_Q9v7wm(W!>!xabLBKF3i&KvVU{{SrX)s{3})sZ=bI@HQchg!w%h4Gr`9#{Eb3m4 zv+1?Ocp_R+cWdTK2phjKD={bkU%5jS_KVZ8-nJVpYpEJ(IHSPLNR2~!d>ii9^g;c} zj(eF}Oa9J~o{2yRpgiXbG4M*`UOL?9|81s9t|=cs!vDUAzpSAAXlSkEgK=5;)9@>`;RYY`n;M*NYDvDSLlEA*JuD2` zW5Kfi9}zOZ#PNbNH;GgHHg_0N0(cc)(dNPJH7u$CnBvvKqE%abhZ^l_uf%UJm2Yns zuMZ`P?(H2d_!OGy^%cN9qi1Q`$v5VHMPoVo7yeeTWbsyZj`vA{$atC9yy@~Zd>c$& z={Nj|5&4Yz%!3-v!>9I+%ft80FE@6b-h@5}lAZUCm zbFJgTP&uUbs43enky_%}zvV9bb)&uDkbJ=aV&TU#7rQj* zsyw;hrHYEa8FELu|BOPAJEH!Q3a6nBlHZwp2$IkCa~e7+dj*9UM3=D2n=HaNs)-+} zl5-0sD-7%ae?ZQKun;C^Qli?BVguQb;PDL3neJa>#|M9TnSYIIBzQSlF)GuS>nk-))h&wMk1oYq zUXqJcAxYL~%^7G~yW?w73F2?x9jk;fY?ws9u7Lsd3E;tTm(R>Z(bs_MW~a$Z+~l}- zte~)Fb++^~*qE7O91`6k9R-OXFEe)=cg+4QmS^yp+k{K|k48pA=HoQ}wl+$5-OR`P z4P_a{B!^+DuJEf~ov&JIP^UR)Yxe7R1rp8pOz6W`(A-5O2=;@9SqCkjm^(Aa#zxabgO4*id+q-8ECcZJnN52Wy)(yQe1oZ_!c=`XOkJ15 zl;Qn1AA%{%eF@H=8EtU2%i!v6Km(q8jOGfij#DSO)CPn_PE=eiv?#$rnCOH_a(04W ze|WzB8>VD8gmo(ozbAZIknFXRC5M>irbn`5PO9^+DA}v)2BLCucL3O?4${Fr{IK5X z)R+Glb!oF{TSg}ME>QR~{IOnz&2ySs?>F_1Y3eA`lvy(3e}Gh! zEG3%!v2|(7Csx0LJfJ1X-XB~2au#jc4v0X~!Q=UX53MkZ&hWb&DH#8EI`}jTh`2xR z#lQ{|{>Zcu3CZ1_nu6w{C(0aX3x^;FvvhKfT+^PE1K*#KYq=xp?s;1Fw&Q;0*?SDS z+Zok(tyOoIXAfIudP^MRc)c`dsavRjEgj_4ztn;XzgLv;?vv^3*I{=QqW@K+2wF{w z)%~JWdT*^vD&CA>)Nfy^QN@@0qq3yS*HvvaMs64nuUA-w<)&l^)krzmJq)yAJ@2Ic zEI{22mQgvD9)-SdkJNO?fj12_8397URn5sGSB0#`Gf)YfhQ&@`DUOp%L(1S$Lml@( z{;LWSm%A5+8$KgCYXhSC6H>;o4$kO1gJVo>_Bx=Y_0B{?WaD9+*}uP@?A`% zqX7#ZK*2v3<2G?Z4TwqGHyV{P_^^Ooe&1y;tG}PywAZ|?ZcVy z;gr5iK8k^}Br%#^`_DfDNHc%`kNBKF%oVg_osuZ8WC?ste6rVA5DG_yAJ>&Z(Pvr} zyfwvJR~03&>_)LrG6jhd<}W_E{XMKE@ojt^5yRb|#zyGG-M%IAF619{)Z;Yjx&_Z4 z@*dFoESO8f4f~l2vs$OPks`BTr?5U}auq9|Xp}1;^`Exip-W`|;c!v=Kh)DM=j6G%)#A>((7v31 zB7TFmdr$y{b+U*6N^k3_NQg0F%B1bYC3sb;*GW3t?UVg$q_f?3l7EeKwwvqxYoxQi z9!@~{BwqcArF%!!72(inSR5`$k`NOqvz`+2jE!{PEoLA!45ZUF{xXBkgM6rd?dw1J zh*I%s7r=3<){Dc=qh(3>4NQ>YIDtTCP^i>ud2fZf2$7cIK{Xz^r+wdIi&NMN{MiZU9rzRj*)dw&CsFcfN@AO*M^{>_M^|P~ z=gQ&A$(EaLAf+E2gJEBaiCKh++OR0xL(+6~nFTbbt-#U?Bzr3P zB3qmbK?Qq=z|wZ1j0w@ySSH9?jfxTj!&O@{-@8gL9x9hzm=A_@McB~~Z+-tBy>g51 zsRaVfO=I~A^W>E?H?BlE)quLDCQ+`QdAQjGHZ%X|FiJ&lg)}=-)U%$-)d8vx%)osz zj9jDvt`idMriuQw$Z*7X|5{`?a;mvbV(MJvlOb-$#o;35gN`n91KFXC8@nR_FoFe( z3<8XuA_PQ1h)<2~o&G?;!nbEp=+^Zb=|MSVzW-H}XcDdL^8r{M7vQ`Sc+zIF)+H|H zdI!rz&&P7z6!)*c&UMNtx$C5^2b1+I3yCO&ThsRCOp4Yz)E+XE^J`$uuN3^ErYI{U zOg1CQ8O^cuWmDqr=J?Qd>p0o$LT2eG>#4paLw6*5;X7{HnEU|s@C>@@LsxXsiUma% zFg8Dg8sZNH7@W@oklMPEkKxv)X9(9oJnO+HJhCW zeTAbziVw98d4l=Z&w#`zNDKJjW`QS*Z_y(B1{xDfx0ZptZQd|~j}ykWB0*Bi)Bd+? zR5!Su*PVRKQj2ZA&Te!p(>bM%^|9fZI<$5Ae<@gezh0zJp~zV29HJR?*R3x|a(~6o z2?WGQQn4Oq{*Ne$lbv<6^WEsae@CmElUBUC-?GAZs-F=4|{G z5rD;a+l-JvQ^O64>fjF)jok!_W^|m&?8RUPVNxb;2ejl-fNn_ju#H3$uo zcsP=LT$xc{GH00J=E0>7nr+|y03S^|mkluf_Z8=t6fCr~B&ydf`M7J6A4@_=XUn!gM%uBL~`-qHACXEL`9xp|j6;^ml`XCrP0j`Oc2ZnsJK$hjk4 z@WpVloOv&eR<|YxB37L^vt1N-M^(hE$H#=D?uBI?-!!y=%XCv_+W{1hD?~dD|1L_B zuNE%NmgvPxBwR(^agO}KO5w;OLN?Z07{?t0(00``h-fyI3Hxs}3+ZL*d$tX8a`x>S z*t~C-*WU33n5lKghT`s}BwMtE5=Zj)(6I2%Y!UD|Rj(m0nqIT+lIV>zygA6krXvjp zu#0P~r;7Sy`*BmEo7F{Qvqd#-(YGSE?w7iC^H6h98d!K%F_g?B63h(ef_q=#|UKule^n${;dk&%a zrVp&U-qCZn=x;enDS)^jyveH`q+mSHgX~;a zjKs^MKKp#UNqNn8q0q9z9+zJ0z7!+0oq1s|nTEfKr5AKfi{oBfs)Q}Y6+T#Yj~`DY z!eH$kU0#sDa`Zz4AJO0IIsExkf3j>+(aR5c?4xiZtBSe(!VHtewk0!)#m4mRHqCf# zPW9(Ye$qkS!$H%F|H16wnTZrLlZgWI5#mfH`%F^DI{pf>lzz2B$Vxp@zS8_YRxU+Q z8&ue(g2O@9ZrD0yNqMDlTv&~BnRZ{e3_EqKn8tI7*|GH5%N(@B>J5phvGmAwV|3k? zh{w_=-aJ~@>l2Y!de~wZQIztSf15MGbIlxDjhZaSb?~J=pD2q~Z%qt{vYX}bX!RCC zdezTcO+LSc9LJRs{V`x9`^uZ~xT#5&Eam5uj=-LeX7`f1!`7iV+4E=ex3AUkV+z4s zQK5^^1G(%I_(VU}sP>v6>&R3nO&m!+8iB5QOgdajig|IV?KHusp)=n|C%?f=%dGrpCP>Y}|ly+B}ynH(o$_ZJx`P8TT7* zo9D7YE=#N?A7jtKZ^*U;LVec$dcJ*#OQh4)=h zM{YdXtWLw{1q*8gibE)y7H9Y^vfC)YLwPBChOMWb!`*|A5_ivYxO;F77P-&iQNoRZ zRU@bpe{|B9Oi{PL`4Al77ni6%#^{*A(foM!ACQ7uR+U(de=rlfyZ?gAbL9AaBg39c z5HdLXLku>NBNo}nsv4gh%OJ=1!ag}7tcPWhe~@GHSV^mWVTMu^Nc7_d<&6XwCv|wo zTZYHsyx4br0ekgMFFyBQn2;5F7WYds4~uWeP54t3Gq@-UB##sptP1k3wq_21JMj7t zukj6?!{z^QxvI!&lnLXwW6>cx3KCbCzr#r0=#jiZgTM77GB1iB;9RRQNsMG&DGbGILDnV{@hd`cI!Z_U3-2sJ57kRn3WH4t>*D zwOY+W-xCI9KKec#)rG!Q?9tU~7Wy7z^$UF`L`T$@CI`h(644Rr(P6a1Zfj=9RZ>?v ze#A(PM2ER<&DEK`#Z1RAv@m*M#@SAgCtv9YDSZwvR zITkCQU0A!rkSF4M~>ywCpz@Gm{pr0t;YRlEPaiKXt(ZEYGRa&yOn{h#zKy_DWb*r!duP@Z)^1p zw4Una40%;4%lmdXL)x9gHm|gp9XuidEy+RF>O5HWul%0XH7H8gLwG$zqZc9$(UmK-0vWH^jA zXD>N~ia`|=&s@BiOX7h3Zy52-Pv9g!F9UJSjx;D6OGY`PDLzAYsZkZ# zfu?_yxKV!pZQ)ADk!9R%2i99gLK$#7#}_5@fAK-j^FTW8dU=FbsFjqIZ{sFX;__H9 z8B2#lw@wXm8#Q4?ZOSI|+%JEpZYc7BfFQ_{aGtewLjr8XU9 z_VhzQCy^WupY!bNX(SuuNr)%x*X1_G76SJrSQ(twv;P9|NGKu?&HjHN6caoVo{D@n zAhavxrby%?-gbm}lcri0$2?v1XL#(FH$^q1t^oL4({`iT=wY@`$R|(Qmz-o`rV=;&@z=k$Ru2OfXT6y2Jr+S!PGwr-jk{$+4+$W0a$2!as8H4J-pX;h? z+HcB{Lbx;eL1@e^@b2Tw?@uf~>NL2fA9#5}r0ilcM~xY1QY#b4HETitoUyVsvx~_$ z8fVNMBbnEK!3iHntkO~#Xm0>FhijPKF`3K%1j6t+RA#SN);S6KvE4$U!OUE(e>v)iW&yBC+TjF(cF%@0(&g)6Mr8~NGS+6)%tbzrvw zoM4s8gI`U8pM`k1X`MO0(`=klnCtgZT1t0rM9gh-Wg}vqv-!VYqF+$`8Hj=37)lUk zeBwgbZfKI-=XZJJ^`bhM-!gZ!K;|eAe*Vz!tnYK6EXAft_ zi6trKwdfpkt&HA?Z=oUb2{Iyb@(;p+L@_tG|JzJ-qH9oU4?MneE^TOEL9?uu;*)4n z(StKOTkxBlNRy-dK4_BdA4rsRq?FAH_4qMcAbsf_0k;mnaH;eQS&89r>)v&t#9n_B z%FacArgk`O#Cm)pM9waTuK)b_^p4C`DD$`{p~>LXPGm8kW>eJ5mvzcrU*CzDLp@$m zECPDA7hoSUdZ`_r{gy#HlteJZs1|rUb4l=K0WPL7MF|+TmFtO4Yj9~XJNPT~`XJ)j zVH%W-71fndH6K^Fw@8yjHWMy0-EXV z=KM>Piq9}6y5Ymfdto(P5+%D`!%+V6A92!A_<0Iz>v%}-W8gF~kp6r(G|_J@yWjaG ze@e-?vOzu!zjtBj#i z(oqh1Sd_HfL!XssH5~j9Y@8?^EFB!r5BsU7G2&Gv3CHjvg6AX*C>g4>1ZP6~;@-*p zISOk4O-QV0HF2Y8S?2mzG43zfNV%59ZzkW!X-u@!XTh~*023L2@;`bIk*Rb?DgOg@ zrtnN>>J}*=e*QJDUiE_l<2l5hrdG>7n*0STM@oRQ}5iGG&O+X1x_EmN-3TgOGjmm`M4e+vzA$IS zEbvG9Z8ORZQyC=$gU%_bE;H4$4>0tcsN$prh83VxUR24e4&OCJj3NM+rIz4ql~4N6 zXCUeoumXB};M_+S|gr6GC!na4jEDoHREV0Keh*? zc%_4DjAr-`y7kBAWAy|Bb8wsw%|rOTI-$9n0UiVm^ryJ~cb)P6su3~w& z`cqP3L1orxktTG)#m;0xboOgQRuhRLM#>sKFJ4%KcX{?t%?Sg)m~=Uf7H;(3j8<>A zzTKJ~rr-NpvnT5J-q!43{eGu4YwP!c)@)F}_qAq=b6cT{6QH5#HHYN*doRIEaOg{( z=Mn1DD~NjJVkQ(2`9wr9&p!l*lW;2X`4PN#Km&SPn1hOCYSsLxa1R~jMzxkd>Rr9MAdr`2&r>4b=XDaG)&_+5Yt@W?lcr47$5MHAr~#cZB)oJ1Riu-eOOq)kzCx*$WIr z>&F+d?uXhtRk@Nr?fRsqI%lC0_SDtd=#m_+~8C!FB6RZDEw5) z5h&}}-l*!ZTjin5HrKoI4$!Y_9HQr=p=YyoUTme5bRz$7fYVR+M|~<7m@gv$EaAUe zUKX&Ld`lp>*(aF30N1fWJeF8*j)H>|e8AiB5_bHOcM2C7;^r6(#BlHo|9!xCWpVi} z1W)i6u!JDc-qJiedV;-*Y@tR`{mPON!Vp^C1!#G}ENBEdTj;|e2X-FHyAa=?{X^T6 zRyZZBGdOa@nd^$Crua=gO;ZRxwZ{2l24Vm8IEpU+v!BmwM1!B-;J6)eT%+z-sFbAU zLPH>X4Casb?DZlE%)cX93;|t_xS%vSj)Bag_w1RX7SG;h=*FKdGVbrm)qyyQw+OBg z7nG5bl(r`rh=aQ?G=O`y@QUO2TSnv+|JW}YLSIhXHER9^r}~p+y1Q6+@P=AB+4i=C z5=op3i}dC?ysz0`q4A;XZRE@nHxB+er3m~lJ6Vs|M;sUauT`g<^Fd3pP35_r3m&nl z&>X@cXXxLesdJ*K%S$w^5am~;OzdqbO=8&xU!Eui7FHDdEc!Q%4fGpp$q{%LedqEE z4`ddZK)wtkQr}!uRRqI8r){0_*JDy{JPWGSPF41dQRXB}4CX#2GO2-;S&uuAgTFX^ zTIjfBhd9VrPP*Yg%3nVyUT;FX2Mk1+f1rNTkJZ@MtSRy>kbhb`aAIH>2O_R3uZX+f z43kmyshmmmPT@kbGTIa5h7>9Eh&okGaofju~sFW>IAC1$6|#{s#()HvA`-K(p`G zRowGmiSkJ=3T4TtvJYcUw85s2XV-BF0%zc}DaGMU(-jJV*bXtV7=9Z%h#{A%n8~zi zac+%q;X)FVx$pF~&-H!nd70pc{I_Q6qXxFu4TqgXgVP;)%-7vNf|pz67{%P3Hk?Hv?&HlUH9Oms)+a@KeVR+&`Ub zhS8nUO(tGIaR$?@pS1ln`Zz;0RN2HMg%V=SQ@&|3*zS&6LF3t0s?)AUeJI(BTuXV=;P=r8xbLOJ-R z|L+h$?CO8Nh6U=r+`s8S{d9J6ojU3EUw3(4yp4wZrDTSUIW09=^0K4R^i5WO<`~oW z1h^{9RcC6l2ZeKDd>C+ovFQ_2Iq1d#Ds7);9Me$XzzM=94Rn%WPEH%HC3-P$yLB1) z8=wk4@(WnHd9E&%_3S^eGNZG08Bh5~Qdp-WAp<9CiMHU*Ltik1fz&P>l&L9E^4=;}QR56~ILi<=->KGkHsLp=+G#8CRxKj9A!!fdSFybVS`^ZLo|uTS=0KL(xni60$Fc)X#SJblVbHTVn=jZT4YhIlSR>tr;03g?6XlMyR;@w*2@$05?esQ0d5CG43R{05wMPZ zEIfQs27)V%V4Ecv;&d^b1QMU6e zJ4HFOpUEkC9K*iO$4Xq5m}KS>?z>iQyIGMaiT8_&-Qb^L+u-m${O?gVjCbPk3y_zu zro@(X+n}yfGujIgghY+G!9&RU&tAN+@2~J}1)f zZ_Zsq3m}1bW5(NvBf5cddj5sgIKZ?OF2&31I^n&ooYEm3iSTQ(XWaU80h_Hz{^0W2 z0ybNbp;#QBRgf)FdSYGNEg+~r>V(MCG(v{JjWW z)p9vpFYnAEs z1Lhr{@3u@4Nixx)&C2MkKZaD%GUvO_zD41vORk#|K{KP<$*(&v>RuEQX5V4sY4$Xx z>If5~K>%Za?iQ6ANt`^~2sa~zuaVS}W;pF2^-o+Kt0hOT`Tc+g>Cd8~kuK2+b_bHa zfkJ&KA!&3zArXY!oUz{U32BxH2`zTyKNSp_CGsJpMjjz9DW8iGbU9fr;uwLS!g$%7 zhI(?m`=B9ae)T#d!ziyS&4hPxiAovtv^vuE3KKYC0d3>na0sDbWIrC$4m~)^iRe!! z?k+5p!{dr72{oBHNUtxW0JfQD^Zw%H@0ZpuT#9fD=T@8`f60FB(pHA}6C&kwFfC4} z`-lDe=a0?Z-{ape9hkdck-I-BcR!DNKOHpYUXD}j&4CN1?Hf}UD8+S1Ht*=VLaPxz z0K2&*jCvR`)yHzS3OlrFrQk1qgrdDSvCCjBqh|K^PId+8;; znAs%fUtXih+PBLY*nB9rf>R#CztkC=Tq#q_u3&wlCU25JgH!L9NI0FzA1k6s+s_zV zjLF}r`>!6PaZTaI=7_}h&Mg*QI53(9M6xaO?u%LzWA}5FOPuteT~W7a5R0~+MT%w3 znVlQa1=7KGwjtoELSb4@m1Vg2!HRlzs*`!9C;&_w! zp(uw@Vh4uR)>5`$u|V_soJ`DdOQxC$xgIkT_%=_ zRu)g4c3!M{_V6V|PP*v4m^)myH5)|z^9y&xmCms(Q*JCa-%6F$Evj4jq%KAVSa!>g zGvBJHZe56z1=lU#tT=NR2oU*Tvt*BkC`(v3nk(k1-bq!)((|A}1Y>K}PE_^G4fv!P zA{>A%8(ZV4WFWJAi?BHzWv{-jYb05a(PBzHpP6nrcm0{#G&-HLvevV80=k?XUV0ID za%is(KhKnyJGru>KzOi!^$pG7bh1hDa_rTa7Z@lwr)C+@_9j0xEPApbD(I|j+_axMZI1feR;@%Pk)KKNhHSJMXY7Jug`A=8>~QpPttD3 z+gK~qK5~IPX~&2^{WY2%U*Xv&nc=ka^e-?6#_HJ@0kx*|WF1r%OI-`IyCtN=8}<~B z!%c(=@v@T|SC*MNToC_Tqw2UVZw__Z>r+d+bR&0k9T~-61A@cn5B1d}vVt~e_Pl6z ziz%yG20tnpDJi%

-=l8vbalY1> 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 literal 0 HcmV?d00001 diff --git a/gestao_raul/Lib/site-packages/pip-23.0.1.dist-info/INSTALLER b/gestao_raul/Lib/site-packages/cffi-1.17.1.dist-info/INSTALLER similarity index 100% rename from gestao_raul/Lib/site-packages/pip-23.0.1.dist-info/INSTALLER rename to gestao_raul/Lib/site-packages/cffi-1.17.1.dist-info/INSTALLER diff --git a/gestao_raul/Lib/site-packages/cffi-1.17.1.dist-info/LICENSE b/gestao_raul/Lib/site-packages/cffi-1.17.1.dist-info/LICENSE new file mode 100644 index 0000000..29225ee --- /dev/null +++ b/gestao_raul/Lib/site-packages/cffi-1.17.1.dist-info/LICENSE @@ -0,0 +1,26 @@ + +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. + diff --git a/gestao_raul/Lib/site-packages/cffi-1.17.1.dist-info/METADATA b/gestao_raul/Lib/site-packages/cffi-1.17.1.dist-info/METADATA new file mode 100644 index 0000000..60b0779 --- /dev/null +++ b/gestao_raul/Lib/site-packages/cffi-1.17.1.dist-info/METADATA @@ -0,0 +1,40 @@ +Metadata-Version: 2.1 +Name: cffi +Version: 1.17.1 +Summary: Foreign Function Interface for Python calling C code. +Home-page: http://cffi.readthedocs.org +Author: Armin Rigo, Maciej Fijalkowski +Author-email: python-cffi@googlegroups.com +License: MIT +Project-URL: Documentation, http://cffi.readthedocs.org/ +Project-URL: Source Code, https://github.com/python-cffi/cffi +Project-URL: Issue Tracker, https://github.com/python-cffi/cffi/issues +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 +Classifier: Programming Language :: Python +Classifier: Programming Language :: Python :: 3 +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 :: Implementation :: CPython +Classifier: Programming Language :: Python :: Implementation :: PyPy +Classifier: License :: OSI Approved :: MIT License +Requires-Python: >=3.8 +License-File: LICENSE +Requires-Dist: pycparser + + +CFFI +==== + +Foreign Function Interface for Python calling C code. +Please see the `Documentation `_. + +Contact +------- + +`Mailing list `_ diff --git a/gestao_raul/Lib/site-packages/cffi-1.17.1.dist-info/RECORD b/gestao_raul/Lib/site-packages/cffi-1.17.1.dist-info/RECORD new file mode 100644 index 0000000..3035f9e --- /dev/null +++ b/gestao_raul/Lib/site-packages/cffi-1.17.1.dist-info/RECORD @@ -0,0 +1,49 @@ +_cffi_backend.cp310-win_amd64.pyd,sha256=TxziBcK-mGydOLlRtry2BF6zY-BtrMBppBlB-AvpBow,178176 +cffi-1.17.1.dist-info/INSTALLER,sha256=zuuue4knoyJ-UwPPXg8fezS7VCrXJQrAP7zeNuwvFQg,4 +cffi-1.17.1.dist-info/LICENSE,sha256=BLgPWwd7vtaICM_rreteNSPyqMmpZJXFh72W3x6sKjM,1294 +cffi-1.17.1.dist-info/METADATA,sha256=avJrvo-kUNx6iXJEaZVjGXNy42QS-YfjNHdJdeiBlFc,1571 +cffi-1.17.1.dist-info/RECORD,, +cffi-1.17.1.dist-info/REQUESTED,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +cffi-1.17.1.dist-info/WHEEL,sha256=n0FEMMLy9qHhhtyJmRgiYJmIbJZhb9lSgyWMxwuCQPQ,101 +cffi-1.17.1.dist-info/entry_points.txt,sha256=y6jTxnyeuLnL-XJcDv8uML3n6wyYiGRg8MTp_QGJ9Ho,75 +cffi-1.17.1.dist-info/top_level.txt,sha256=rE7WR3rZfNKxWI9-jn6hsHCAl7MDkB-FmuQbxWjFehQ,19 +cffi/__init__.py,sha256=H6t_ebva6EeHpUuItFLW1gbRp94eZRNJODLaWKdbx1I,513 +cffi/__pycache__/__init__.cpython-310.pyc,, +cffi/__pycache__/_imp_emulation.cpython-310.pyc,, +cffi/__pycache__/_shimmed_dist_utils.cpython-310.pyc,, +cffi/__pycache__/api.cpython-310.pyc,, +cffi/__pycache__/backend_ctypes.cpython-310.pyc,, +cffi/__pycache__/cffi_opcode.cpython-310.pyc,, +cffi/__pycache__/commontypes.cpython-310.pyc,, +cffi/__pycache__/cparser.cpython-310.pyc,, +cffi/__pycache__/error.cpython-310.pyc,, +cffi/__pycache__/ffiplatform.cpython-310.pyc,, +cffi/__pycache__/lock.cpython-310.pyc,, +cffi/__pycache__/model.cpython-310.pyc,, +cffi/__pycache__/pkgconfig.cpython-310.pyc,, +cffi/__pycache__/recompiler.cpython-310.pyc,, +cffi/__pycache__/setuptools_ext.cpython-310.pyc,, +cffi/__pycache__/vengine_cpy.cpython-310.pyc,, +cffi/__pycache__/vengine_gen.cpython-310.pyc,, +cffi/__pycache__/verifier.cpython-310.pyc,, +cffi/_cffi_errors.h,sha256=zQXt7uR_m8gUW-fI2hJg0KoSkJFwXv8RGUkEDZ177dQ,3908 +cffi/_cffi_include.h,sha256=Exhmgm9qzHWzWivjfTe0D7Xp4rPUkVxdNuwGhMTMzbw,15055 +cffi/_embedding.h,sha256=EDKw5QrLvQoe3uosXB3H1xPVTYxsn33eV3A43zsA_Fw,18787 +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=0qI3mEzZSNVcCangoyXOoAcL-RhpQL08eG8798T024s,44789 +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=sim4Tm7lamt2Jn8uzKN0wMYp6ODByk3g7of47-h9LD4,65367 +cffi/setuptools_ext.py,sha256=-ebj79lO2_AUH-kRcaja2pKY1Z_5tloGwsJgzK8P3Cc,8871 +cffi/vengine_cpy.py,sha256=8UagT6ZEOZf6Dju7_CfNulue8CnsHLEzJYhnqUhoF04,43752 +cffi/vengine_gen.py,sha256=DUlEIrDiVin1Pnhn1sfoamnS5NLqfJcOdhRoeSNeJRg,26939 +cffi/verifier.py,sha256=oX8jpaohg2Qm3aHcznidAdvrVm5N4sQYG0a3Eo5mIl4,11182 diff --git a/gestao_raul/Lib/site-packages/pip/_vendor/chardet/cli/__init__.py b/gestao_raul/Lib/site-packages/cffi-1.17.1.dist-info/REQUESTED similarity index 100% rename from gestao_raul/Lib/site-packages/pip/_vendor/chardet/cli/__init__.py rename to gestao_raul/Lib/site-packages/cffi-1.17.1.dist-info/REQUESTED diff --git a/gestao_raul/Lib/site-packages/cffi-1.17.1.dist-info/WHEEL b/gestao_raul/Lib/site-packages/cffi-1.17.1.dist-info/WHEEL new file mode 100644 index 0000000..47c0033 --- /dev/null +++ b/gestao_raul/Lib/site-packages/cffi-1.17.1.dist-info/WHEEL @@ -0,0 +1,5 @@ +Wheel-Version: 1.0 +Generator: setuptools (74.1.1) +Root-Is-Purelib: false +Tag: cp310-cp310-win_amd64 + diff --git a/gestao_raul/Lib/site-packages/cffi-1.17.1.dist-info/entry_points.txt b/gestao_raul/Lib/site-packages/cffi-1.17.1.dist-info/entry_points.txt new file mode 100644 index 0000000..4b0274f --- /dev/null +++ b/gestao_raul/Lib/site-packages/cffi-1.17.1.dist-info/entry_points.txt @@ -0,0 +1,2 @@ +[distutils.setup_keywords] +cffi_modules = cffi.setuptools_ext:cffi_modules diff --git a/gestao_raul/Lib/site-packages/cffi-1.17.1.dist-info/top_level.txt b/gestao_raul/Lib/site-packages/cffi-1.17.1.dist-info/top_level.txt new file mode 100644 index 0000000..f645779 --- /dev/null +++ b/gestao_raul/Lib/site-packages/cffi-1.17.1.dist-info/top_level.txt @@ -0,0 +1,2 @@ +_cffi_backend +cffi diff --git a/gestao_raul/Lib/site-packages/cffi/__init__.py b/gestao_raul/Lib/site-packages/cffi/__init__.py new file mode 100644 index 0000000..2e35a38 --- /dev/null +++ b/gestao_raul/Lib/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__ = "1.17.1" +__version_info__ = (1, 17, 1) + +# 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/gestao_raul/Lib/site-packages/cffi/__pycache__/__init__.cpython-310.pyc b/gestao_raul/Lib/site-packages/cffi/__pycache__/__init__.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..3c97e5d8f10bb0004383d4081a9927f9da7dceaf GIT binary patch literal 511 zcmZuty-ve05VrH*(jqDr23{Zofi4swgb<|_NEA>J3|1s7G)`oZ#Fd?b;BnXxZ{(G! zufW7P9m;?upYOiA@9sN`Znur#3~s-2Y$5b*g1-kabOu*lg2_>eJ}^NkPOSo$7O}AL z?ZPe{;*>6NOOJS^Py7aV01rq2zDruEN7|`RHqzi8g{{!l_IP}ydyh==jL(vqi)tjL zkb3(sG~r6|D%Y*y1Ek(L0n4J-RXm-ZkA`v1 zRGkPalSL6<^QTzxn(fV#*>eJ!c$Q^+pHg1&n$l?grh}8!m{apd%1j7Q$KJsm>{t#C F++X=2g{A-i literal 0 HcmV?d00001 diff --git a/gestao_raul/Lib/site-packages/cffi/__pycache__/_imp_emulation.cpython-310.pyc b/gestao_raul/Lib/site-packages/cffi/__pycache__/_imp_emulation.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..ac4669b542ef3fa9ed3d18cc35ef88a82fd6d933 GIT binary patch literal 2486 zcmaJC%W@mXab|X~SOCj6MN)o5h+it$4&ziFu5xI_76@7_O8^Z}WpfLvEfBMym)Zw7 zJBSQsaWQqYE6yKCN0l!=q*9e%nQKlu`<9E`Js?O~RrYR8@APAOx_kSP&drqxJny%@ zKl-jh$o~*|{&4{L2v+t3fYYKNf<|PYd`?86LpTZO_;X6|1rCc?Yg!T;)+-j%MYn{6?Q9P6?QKj80#L8+S*gFn$)PKZ`ZhXd;OD9 zC<8xA`}egggDB`_=U6$+{KHWgsW8zc*biiS8YFPC0Mb1Hn^N5Ce;Fo$95|@#Tmx`Ka&oUYp*a|Dby}3uM-P5JW2NZm0cG93(31w%a!w_3lxSsb1>K z-YDwc4iCFosDj@Od;R-8;B@B($|I*%p-)Y@#*BcTeV0@W^ zmk@m!!0WJn#8|D7U)L#DKnUXmI_s@Fd%L$A+rOyw4Um<;!2?|4zt_tbvGqH5cXoEa zXms?#)U->&(#?bYM!mJ&xFFRmT@JodL6SktGHqw+NcIEm9FA4cPet&8N7{WpZdJHA za{<_tQ~TK>Tcj?PZvml?4$mHxKpRaKeg`R}AW;-OW7)i7fg>X4Jq)XEtFEgM~H!Y9Rv19gPDN*8yQUeNUoB?&uGCm+MtR;wUSMDbhp zHF!EH3nwrBoyz~JE4eL7XY8MglZskUWM0h6qWrBjspJ*FIN;~;s#Th&uUt=had5pFk1|y~4640qrsTWTBvsXaOitgt zKJ2M4FS*S$396|CDJ+;XeZSQ{Fe$7n zyYVoUYHA5jhe4tpmEI4M@HEg1B7g!>{>%~W$e<@8XxKGZ)AX|< z0_H(qrE(0FW}43>3+?btoJwYEZ00f4pe~^MzMj%iM81Q{Im*3Qpp`+G2p^7(qTo76 zWw!v7=`y^Wl_`JbSPosJxNPRId7wLV9_n_3GN|C`p2MD5oVtty#RZvHp3Osb%TGXA z-vTguF#fnqZDUhXWwRW3WRcJUrxj3Ihqe-C(O z7`P@9@($oN+N`~-EtnzluSN@w6N#=$oVO;?Om=yzz<|7n!oyAfFijQYY;R}`f>AzW zO>^vhJo#q?9|G{)PUGWt{g&Tow_9!bD$=hZxPnY<`|Za0F!=z_0yNIJ!~M literal 0 HcmV?d00001 diff --git a/gestao_raul/Lib/site-packages/cffi/__pycache__/_shimmed_dist_utils.cpython-310.pyc b/gestao_raul/Lib/site-packages/cffi/__pycache__/_shimmed_dist_utils.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..45441f215a3143c7a33f6e5ab5c24e12bb25a990 GIT binary patch literal 1735 zcmbVMUvC>l5WidhznmSXNl76E?OU)!T+u!tDyR@{B2_A-YEnWjmX7n?+FrbW%gBsQ1O7zw>Nt;J2SuE%#Ca|JqLd8eEj3+r@G_( zY&YvatNj3OecyGQ#0i|lO%QVfcTvqH6rfW_+%7w$G=I}|g0kx@+Qj|5l9VPD^#&;= zZ`>D z#AveD_+GH*I;U`*1FB;OP~4t>={oj;9QV!&&8(1eq~Bj7-7JuP2S{5>q#$iBr4`Oj zJDLN5-U;DTsUkJUdQ3UyGD#W1Mq(-wsz_|G852C9Mq@d|3DqVwlxaL8SP+unp^_YH zV$!LRlIc5Z7GnyYrb=GWgo+VPH5sPNBT7kyIng>A5se3AE=7Vrdm{giEg}wn_X|h+ zSPJ}fZpQF<@IJoRef#cP7+lQ8M65;L#}`B-Qo-5cD5elV$q5l%&pR2z4*n62C5N;) z)j81ULed1@jw6*EBxGvCtpMR6g!*T6O+`#FkHp-fQW_^x?3*PaDiwxuk_VwIGSs?D zr$Dkk0jfjV?Zc60N0t zT|~eN7$Mh@rAtV0Fib^k6N*^3gR&BnqpYFlI+kKcM;$k7^m;%Ilug;qAf+q`$)y2X z{~=Uf(E$`+imY*XX^7Auf?btQrjZ$UO4+tG%G=}EHpHQ=bmm{XT<#i=shH#x;C}sV}bkK+X zAqUq5)%|!lq<2C)-e9nVHiI0M?oQ`f{k`SK@&IO`qmN)IJM}6;eyQbpu7~_T>R+Qj qQ4OIs@?GC;!@UEmhmhMwRnLD>cdK>u0{vcXwtj&Vu2+H+zx@UNk{Ub! literal 0 HcmV?d00001 diff --git a/gestao_raul/Lib/site-packages/cffi/__pycache__/api.cpython-310.pyc b/gestao_raul/Lib/site-packages/cffi/__pycache__/api.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..87ccdf4923199ace20a805c1e6152f696248ee03 GIT binary patch literal 34378 zcmb__3vgW5dEVZ;cb`~*;6o%u)AEWE1%LuTJ^WB8T9yQovLp&pL`t$&l-G+r7vO@6 zUFh5kLf9-F)l^HUZLB1drk%#kfQkFiIBAMxD;| z;c4o~w%G6c&wcFzP}DXc_w0S0bIXYrZC$0O+cOh4mW*X;|LcdYp- zJ1DojR>$)jou;evxQ~{s*Wbx#KKtHh=T2RE!E?2DY29u6-AiY>&9xP`<9nB$fBx~a zbC;G})a=%EW37GZd~4y7*Ye$&)kgD519vVp7Z+P68>_9^)s3Kdy4_e=P>n}M(C#;F z6y=Pr;H!zxz+Vn$kK*I~D*EnbFl(8bt*lyBEvu|@-n43tx}x%`fTNshtD-95D6dvj zS&iVRpgICot5yu5T2gz}K0vpOXZEWDcxFW1rViptMIBOy@ja?;S4Z$Yraq#M;(HI? z^-*;Po*XaPrH`qus;WD2wpSffcj5j%wW^M*dvImHnoyIta=^V!OOTpj&4W)9#9YB=!p8b`UIZ(i1O4Y)u(XfsCr0!53YPvol+0u z`wsVG?nm7_fUBpkJGCm_`f2qDp1V_hMm>uA$JAr$aeUvU=F}N{->uH7bND{4o=~5~ z_dV)K^%TA*)YIxbz9-c)Y98NH>RI(1zE7y{RnO!5UgfKc>IJksUAlnd7u8ERo>6P+ zWmUt`ta?RV!gD9ptLpRkzE53MUr-I)xnC`)Cayf7lydR?pjuQ*`2M)MtXlZ~gaW2b ztq0k2=bmi*FlMw|#oxutZgr*6>Qw#i>P*|c>b9%RcEj_k{^f>W-RQ1W4Nm$kpnbIq z+?=j$6Vuh%+1aUw<3~|#DtW^k+Q(aFRlB?Db|&Y$ z9d`qGH{u1k{qKyk{_9RCUF=W^F=eYfwZeBbtSa?e`MEjkA?*R3yExL$~^FJ{d(v{gh~`Dljmud%Jlng(C-zCXU&;eg-lo{%L8*U8jt@(D zyMJWsBYo>8?;e$YkD%WheQWEZ{mf0v%J_Gn?|ZIWXELvjUvv7-*2h%krlr5^SNoa1 z}QrsZy!YOGh4^}Bg=P5t9OTI$K~vvmmr3mjFVxFPVxSX_qBDr zh5ug0$Din1{^;@;`tUFOtUswnuiM@?(83hjzFXNhZGWKUX66!)r}3HTjHjQ# zNa81OJdMu`#xRTTSrI8?z3-dTE{UnpAxVVv)pTbKF-|OiX}cXYQEliYVe!N;Afp0_ z#t7@VkS;#(v(xR&fQrEO{c2cq8bs;&?TzXp2-SyN@MhzB^O|Bv6U`uAM(TCowAbo( z>h+*luP*}6>-F9ryl5^~S6bdm!*5jOfDvYUm zTw_2lU3NRwb4*+FGOiFxZFNyh2W<4X7cSee`#>_nUue!@MZa>G-Z*)hVNmc~ zzYh48=uhdYqWFmv@WN zBrj95uC~o|o%M z*T?INYn>+hU>fv-a^0}^mg@zTI>m~I`EKHDtlsK0+iMDM#bCW)yuRM*sP4K~U+c7* zP}p##)oJ;4iZ;_6Ud>L66DX znhnp_``NLwG#UbT?o7jP)N*qI*ZjiT;-agka)ATZu^1FWs*~9@ljw9BE3PP;rl5Mr z`4H&Tr*P(7LQ!;z*@{)R%C=)WR?#ZH@8nS4s^s%HD_ePM4FB>&|D*=4m#ux4{YKFq zv&OBX?^m*AdmKmh8{^q=t77#kV2HEPE6+6v?dXrk)QUwK9>f87G9{JW&-NW<{eVN` z0SZpG@d~(`pq}uXrPfvOpt-6+2%#%bns%2kN8nslsOlok8yXxo!Ygk&=9mJ_X)tS5 zU21n18tv-UhHg>2_d+6#EA9ADwb|$-jgcRMH8q;RO|tZ>twz-ahJa^G06!!BWom*- zmRtc(5S3&iVdBE`NY8AW&53j%gJBa?Fi@Wz?n=XP|B@D-T&zxzf4dMffQGl~Hd~7= z^rzufFX}bucmxa3YOU#e33#9iwiNg+*j+p%k_tqXEAqfq)7922L|MDh!t2+3;eq^a zbRdsfE;w_e-CF9Fon9!^AKY*ZnO&?zW}?vks`jA-z9 z3OI_oxJStgmPF7(2wn!9M4@Fz@%k<&dy)|N^!)??nrU5awArbYkTnqcGyyV|^l~a2 z6ruNN4NwGm^Gx9IdmfB8C%j`Sryl@{f(;wA)1Snd{uGOcSkRg2#?@UZ3KHUHd#5GsQX#OO0ne@}zxa4VH7Ox0gd0c&16=5d9T! zz~`UF$NO~@u!b#K!`^;5vT-!#XO%^T6)Kkl^~<^jMR7Uz_Gh80RXFY zhWmEQ>Sw=deHkhpu9vq)s9NF}W5am`N@QM?$kCfn_Fj8H>W*E@^>ccjYU*;aKGx5P zs+sTSx1iqkb2p({zjhXCBa}v?HWHe{=TIaYX+<)Gc(2MSgf$Usaw}`FXGs5~Ey$A~ z*YKLHmY~PfxG?n~i(5f?q2U3s<(U#WxHuVtyxXD7(uV=CAm3eBh7zdn!HGV?D>)-* zkICJ}Dl8$Tt8$~+b{o1jQr9lcnKqP^VE-aGyLUMf-6CG53aP0l&IX092zxKciL46B zrj|%J+g}~RWI>{J)bl1$5ECd8ARes4VDFCLMiJkXL7B|5^Y%x9C^<|cq{Q{?CHqE3z(*gqVJAjWj+TiMHV}^!4MleCGsd{3f3LdZ8?o`RBMxOzu==)ea%0dWcZ+)e4 z#ibq?s*4*!9r_HPxD!Rlw)Mwx9OM?;jU_M00wlGu2-Zep8^Zb^Z^rQ!s(B>Da)D@X z-zwTg=rPYl@$WcJuS`@oj}I98Wc*ot1kI^M63wq$Ti|^}Pca?s-rt{Vcf~Cc z&QrC!;KO+XFo>;@)*zsqJhn(%L`=6PL}#MY81;jbAC1eSz7Z=n)kWQ1;Z#TXfaW23 z7aOg1Jo%HWU7+Uzrad%sJa>swU5qO{3WGEyH0j@ThzL-~je*hRNa}S69!g6642vPL zSWsc?g52n4-nSLI8!JgNj#v6fq zAH$bHz(;uW7z<)Vtt_lrm~3rN%Y&nKJ+@+M`x{<-QeW*-#nE~i)k1y@=1YfDkiFt= z=x1>~I0zbOw>RpIq@F-GC#F@9*RF>N7zXH=yuZ6B_L-}G0xb!?IyPB#8D+)J3wt(< z+p&84gf+A6xY_`FranSTLGaecL60&Sz`q@UgYW)M2LRugG)@-WvELpQ7Y&?L1a?}I zibLkkG}ASH`#xE>BXatozU@5(_Z6ma(K3#!z9SRRdxYr9e!}xWm97!vwp^Vi_rt{y zx-))vCc=HW57Ot{1;wY`4Ux6NGW1Khrm1&LDBI~@s z;v$P-qz>oc=Wx$Eio%95RDnFKSVwO;Z-8kyl#q^BESUw(`p*+<(e1L(GC) z^iybIeloGj=FC(X;|xYeBUFge zay2b#nq3W)UhQ^hg;!5EInj@R`%wW(WaE=?7K?=Ny0KXV&(uUy!4!t26Gm6a_~=(^ z!Ei7gNt&1s_CyX4uqVDI)XTI;lo}vy#L6KY1$jdln)4X!f1HkvG6u7=xAxvy{I6>wb$@VkqD$eEO>FO;o=q3bQWIUwRW z?-YS^_;TMxUO21qQ>gM-7%m4_Pna*1&#o3W4mK?8BKAIo69+{;23Bli zg@T*lZ26(*E%950H6vsQU1|w?iE0yjLSUb&e&GxBl}&sO*2B~nzCd4;1ot70I@Qmm zBvIn*iuDK64dS2+P0Wj%dZqK~_O{I2b{FG8q4^1*N@7FGE6rmXo*)e~pKP$@S0@dY zBTRTD=|&je5%VnW5~43O*ML@YQ-IF^qQXHKzdRcCE3ZyKDdNBZ(rD~4bVvp!x+Fo^ zMki%Dx}7BiHacO@w~D`u;QA}>N>^`C^`ghP1uoJfU3URhxZIaysx@N8A`z(0!i`E+ zA9rlXy(%L)MMD^V0f}z`9B94g>Mo)w@hhegU`aZMse@aq-D>jT_#s4Oa03Fza0vs` z@X~N-4Q3}9beo)pmT|4z00`G>y6<`rs zKFZx zQ~3t?r3r>58`27`(-xR?wfeY=w*d9m5(5*_b<~zlgUZ01yQ>=!9!2CFa*z=9JVf1u zAmhHcZ4bS0XP0Jy3`BGEgTD5dvnR}UXHBB!fJLkh=n)RlYDky{Sv>YX!5R%mJyeFt z-z(5`!u5*-PF%8F`n1SZMbX-{mNQ!x>`cbDp=dFpaWnf?MmaY!H!LKw*ed&GiRKUZ zYOe85p@W376!ht?N2J?@OI%#QucZdT7F^D)tm==R=tGas?b`7#6 zy6a&!$b_&4IFR7*njoT1#D*2bV%$vh7*K+~1~egV0pgLUIMngOcs3Dzk%(w;+p9A2 z2!DRu)-%FM#0n$9>qZNq64VM`zr!nxxl4=>`w_P__}<4c{Si8cGUB-n|1xZZ*cb$I zsutX&44}`&%|y2u^I`DB00KRsb56**0|QeCIcX~HXo6*^yTCp~;7UQ29=f=-gy)&q ze+trky$N#H#j9Iy(9Kg1rwQ+*ZUtOF2Nfmi8mD21?Zk|Qp2DOue2&m(#4$+y-1yp% z5(M`#u1*3vh@{h-n1BZUCo|bg4ZVQGpQ(op7hA`)Rp&qi#(N}fPP2h&|5-I|e1 zv1FiTNPe6yZ(1M>B!pbcY~mU$N~jo`4xe|jL&^~pUeR?g^QK)Z$-o*utj7m%#ZavY zY=(E-k3lyzR4d-;-d!Qp8i2Cu>}l!+ZSRrUsE)iFOo6tB3Brzo5|bLCv!Irf3V}mx zsU6;J(rT43#YjTbx*d1)3Xj-Zy@CRMlZ?kaz4D%-Wh2BgZo{7_VU~fH@2b1$B~*r~ z_Vo*`l@^`7WQZ`d7(YH06C>ngY$t=Bh&e_>Pl$o)XG*xHNZp9n2@~|10Iggk{Yxl5 zEh6|vVAF!@ue;#vVMq_c1QOSHzeGu3%#iO&FlJ{atxs}bX)8G&hTR5zFY?^+c)npM zgG-xG8#?svE&S~Yyl*nr4x1OOI;G_PlQc69IZ0^Al2pPJgV47zmAF+yk3=#s5_ROI z0H=(=5L-KBZA=A#SDis?v@OQz>c}vvPOLOuN6Zu<+PG)J9^=lWhZLJQl;v^FP_?5r z0@eT_CA#GhxBHU-vo1*zehdu2FNA#DlW?$u+Nj5PgQ%n*@Ir=Q5Qm6|7{OkqraJuU z_=ON}6g`n!Ya24`{zfRUFe#J4a4Hgo4kx?~>lK_yUJ<|2j8SH2V*Z6^9zXj$TwaEP zO?}9QP#e{a&QhAJY++?V-ZT-C61~n)|AM@k<{_0wYY@aNiHVGRY}|O3Oar@8k$#Po zYBkQI&I=vJ%m)mPIiqieY{xJYgAqyW!r-r14%GpQI~mUTNya932X9PTz_zs#K!mmcUi=?OB{&sN4iztxgEJ{mg|#NAKK06} zR}(F2H#We&hNw2s-9ZME^mxKFF3BCx>ODA4Bq=XygRwj@rZ^-HWxx&f;eZG33=06J zfKjp&7!v;ASMku3&d~9Z0u?k>3Ie?w%w7>lz0!JBf{HE33Fv}A+{qAhug0%{*f)N^ zH9@LK7I?t6Aa9-?M&C8udo)JhJqCSE^#OgIo)7BlbNG0tP#|-b2^J#|1`q|deGSg@ zPT7a%?$gnJ8{DPh7B$HVTlq+%7q7@~;f>EnVPhGdm}!^+gY6<(MFtYGn08K%7-5De z;t`w2Ljo{H*nmgOTU(7&E)Cv^nAM97WSYjU%*VlGG3J22L9}M6s>m4u{P^8iTLFc(_0xp>^KgNOHkxgGdA!FEV3+712d35vCTv z09|FttsaDfWRWV1xTeWc}IKdjJuj`i2oU>spejSxQPb{W-QXFA|9sf~1?Cqf@n|jf%X#LG` zR8DjonxBHKb#Q6&Em#gK$atDmaEne?J>8_=i1s+=BIV`}&2R}G<0+yqtE3=&o*pWq z(p+LCMXgVzy(6?RAU{{&6J@SdyRn*N{x`%c6NadbOJl&s-QIq46*>K>ZcLzeNn#na zOhbtX-icJFE7mAFxD}FENJGOBrwI=5Lp4>6rf{&u7=Oc-LzS5k6o8LD4O<^ zNQKhP!0HSmeGllm8nN#2F%z{28yLtLrLTqjJByFUfIK}aH|!hPMTC%*{buo6&WB0K zv@?C%W_H=$%qXm>_yPMZaCwyjm;VU8E{OWu*SQ=l-*|g~e*=olqm7(kRLFqwaBqup zhGY|RFK-RW-HCI9-jP%#h(l<};-3@eHEk`llA@2;*EL`Xkyph{wK`Y3S3(y~%zcnQ zX?O`ABk!1qoXMc7c!I#K{oj4MAXojSZ&Y7XXj~r#BAYqEDloGDn#FWH;Jm##66X6&R=tQ_~ zc|{*Lol4op(S6U2EFh-D^a)M%XY~r+{eaJP=E%HG3 z3<3WgM;sGD4w)TYjkG$rY;iE`mN*oFu^!_Qcz)|{jAq_Q_{B=Fp+5O+R^XF3(+ zbIy=FZ^uf|tCpVOVx~i^9o7g#P{jtVlUUg@mI>7?(X2!UiMADzU#vZac;_=uJ|>e! z%8+Xe=N}lCpmtZ=P_D4Pz`rbtx2R}f+`i~`iM|AjTQ{&U=XKGsOq!;6*5G$>5pSS> z9HA7@H&ZoRTyLtvc(?~4Nd}+lSCq6BX3C-N1d`z(JDA~MlJG!$Mkbo^h75%%FoyFa zv=mq;diFi9yl36hb0&{_Q<9F^vtOBf&#EF9X)x3tyhH?3e>1n5jJk+x# zSp<-P${-*Rrvm{)KR^soD%;?4=K*zi)FtvD;&WR=5Xhm!6A}&{Z+K=@Vy22>z?gMc zPj=f1S>b56Zg?ZI^Ch1S?2Uv2-*#dFUPOOljdOx#*@QtK8p@D~EvU5;qn3{2_Vl*3 zVVIO9WXQ{$hdl%;Ne{VBOHj*&pH{awFwhI|TEiD8>NmqPF(B~ha~sd`ktczuSjcEX z1WzE;N)Yn>#^wWdhCKg@>#kC_KT5RzjT6wp-NE8 zE;U!9RCF40STv0B8<1iZ3x+<7OZHOpuM>-)wr0l5y*&BjQga}Wf!YAEcn%-$3n+}* zOQyrMm0tO&%$ML3#8udHNMW;If+lbQN`#-?IBAmDmY5M}!N$u#QO4TKeikX?MOb?l zG6>}wQpWFkS?aA*x|{>EmHg8}qbb_F{s>;IKZl|=4y+zn1*Fg6ax`pa|L6r4PqGl6 zEQRo7X6gJ4$IHeKz!F7ZoZ6P2TO zX2rVZU~wr{&zT_?{a7!a~r%wln;+&khgpU)o@8t7mP((`j%k^``P5KSr*e7LE3vk*;j0R+P77frjl~F zTqaI^XY8v4Qy5F`#Xpqm{g+U=CLT1DLJ(eDbJUN;WjSHQHFsKobFkZ)cqHK)^mK1a zR-=Hv5Y zKsMHLLDU}XOR-gk8B4{9$AHK(_Rk2<%E}3kD_cml=P?#VEwdDjDlja64N>dQXH#@a;MVk;DuV!jTP)UfxT4FvMkz{@PFKm zG|ficFuq`L07j3I2nTBj9fA6j4sG!L(q3x+8RHzqsxihqsxJJJ*iQqBW}N9W4JAm% zhlZ(V?xq07jsvckLr@GpS~{-cCEl?+EplPSddbPOAP?e3Qf>B zR^j>GXm^HTLjGwyngdyScjKU3!irJbzLmdK%+miwp8yxt@pH$w$8Ooyv0KIo9KL%S zaXV;5h?{C($gaf1W3qB2=jp?%jlj-dt(&!kdIneC2~+6FABK7vl$m&Ao;`}r>aXA# zqs%2Yw)G{8hu9bW*I3Z@0!+kzXre;lyZ;XF4zhRsGr0CKzGw>vsrZhmviqC<3foG* zsi3ic43gdTPH*{HJbf%4jx4wfAK#?_gvC$BWXsj)QX)IyUtYLy3 z2n;N|Gi;Ar|DYCFRIWjt`z5nG$0=qmOt>BTt&tXmm6+mE<5GO&bIN5=KVO)Ca_-qP zXGx$janz%WhI>h7|D3TE>1d~lL7js15N1VQocru!&kK>Cf9~Skg^SO}Z9&TgEk~lA z9;2x!=L0;3O3b!Cn!LNXh14sN4rgAvQ>${e7@w%@wluNKBs@Ht)I5qq*UW?`Fw1LI{6Fa1E+H`xr5{igu#MO(BzkKoR z!`rSBdhu0ZnsJR2=bxLq2!QT(d+2VMpHM}$fm-qP!OPO0>WSwD`(T=&JFR1 zU?erS$H_s-zqugUECwr=%0Om6FmaUuj!nS9``2TA*FH=UYv*nMo0~p1QIwf z*RWFo77iCef)1?vr|eoWqHq24gh?*Q!VWZ|Y7!T)s}QS+#EKG`oGa@Jn;+qYsU8@> zi6`v`QEx7S6{QNHWn%><7R((H+k8hC#Q@mIUTJg^d|n5f>_!HgQkW_mX`tjfXMx>x159GvA~+&O;U$EKEuMxH=`18a_{N8(-y`>g@s*t6^ipH$^5 z8U3Idx#o0iRY}!4J5+1b)QVeuap?Y-+H(^*D`@wbxIdQ_GMl7#_2wK4PxR zW9r~%pk?Fx&}TC0@S~YU26xQ(Z^wJTirw8Z%X?@+pwCCR%Nxx12xfl|*RVY#uMx!r z%|1GqO&npd1Oo5DoNQ*cAo-Uv;<5!6BXYDC@g~S7s@zdCp_IhtO|B1g;j$Csb;{}s zXe7vqGX$Fgcs^V_zko{#8gX|HW?DT%Od=|9Rqq%hb(1L^O14BA_-*?|D_q}=z<^8W-!_G5UF420uRta5T_KWL z@;0z|rL)*t>WxH?&mLE`(wVc5zwku;?B_1NOYQGns#fpbLJ<@j3oY3^p;j`TL!L-& zkA%J8&+A;lepX9fuXOU6$L60rclN@?sc}U5H@x6Lv{cq?j3#=f7ua1dC_*~=h>NWR zd6o@7sK8Ap8`rfuxWe_b+=B;OZ8^&@!}UMJ1^uhMI%4A0qNWCiMgOg1t;`CN+yOEV zau68|*e495ubW}k;oA+$m)+OHSLk0uJCT7ZQ~nRw`oBa`D;bDjm_ZTF2X@ny_ZqbL zB|be zE8H>*-hJjT+jz#g#ijfFC)jp)H*9;)o^3YC+M_?(_dFNJzrq3dRR%jt=D_B$n-=JB zG;#*fvE+jay@RlN9V&PI92`mDY2IBpD(DH8Jl7MblN0q%mX@0xx)$L|s+U56V32#f z&J9kMU|-fvx_0jrWs*5IY6*kxiBb}++T@xcPj(-L5fNHYy*nmSSd*3}3{rNMdN1#A zUt;7J=}o5MtMe zOb5^~5s66xMe7K@i$tAU#wtm`JCG(rUKOLkJWk^H4;VUSI};n>3JIk>m^l(+Ag&PC zL4-cnFWdwprqcti9&E-Yv7nsUhe;;fnKzCf@RHRlOCc|Lm^yfTN0h ztzxI6OV~o=TK-z$TCty(Ey8B~k}AqwaUf#~8O(#MUc@>66}VCMSDb#4QwgtL=~@{M znqhivlza%pNz{{~0>`zV5P0t)>Hyh`aN010I0$++8M9~f{w z%16F|f;s%ym_$Q$K+33#ohQvkm{TJL-`VA$0Liw1?RVsT<{hMiA-oT=cvDbVTZJ>< zRl}ISe+LNv2oaxTMHyve5;Pz%BK*td>43iFu(X`-+F5Ri9)NC0!+jcHwQBO3f4-V`J>7Bg(Lv}quB9Tr)UytI(J7%}HpvaxJDD8Gdh2hB`Nsa1nW75A#4Ukh#g_qM! zg$2|6zHOJ^H|A!l#-H+(TK_*&s{cEB-ut}t&ggRC%neM{pUe&t*0BR$Ij8>z-lG2} zi*K?RlH%jTum45BRR0lsc7S9td^@ma2Lw2qqYxLepgtLs1(G**B@2-S*BH{nE>``5 zaQ$q*2(o}7|CL<7L{gC0!7sy{y$EqVfgNq3Co@bJI+>Z{X2J=u<>9W5_iPK7HNfS;l&vPp)YcbdbjMf9261vv`k%FsU7+&@inO!q@&Y${MP>m9k+w++Py^ zz;g2Mn`l7z1;#%E5Od&3zA@QlN`fvi>pN9j55+ou`IgCcHn61cA! zLV4et4*khqXSw-vVn4}@UW68MoZ$N$i?6fDqQD#w&{%nly{Lk$-&oQTzj%=k3^AV) z_cM^~uYa2$y&I3%NbjvcG-KZ=1Y97P%C71u$DUN^3DVo@ETz4B!C!pCC z@86-|0CgeC!N!gT^nn4e2m?UZBv|`d=&djxww#*)!k;AoC8O?UW)-QwON=)2Y3#p8 zpx(5p-@;BUs5~|>gRsADBMa{c^7ft04C-&3-Q?5eE_o*|b;N|}WpQk1a}{uEg3-o*mo$#I-2R-YotuL%emR| znqRTLXP2S;iXlkKhF9tQJ1Dq_u)fmn{&|EXWO;kuWWmWVyvH z*5Sk^@zBhBtt@vz8gx|4-Q2dj$obR{fuLEpFmTr*k%N$s?JwU#^g>ujrd{OPvtsWT zOm30UEuh#U8o>B9wN$TqrNc-+WVmEz19uVM4>J*B$t>|Q6IO>~!Nd|6(T^4t!t`{R zpUK_B5gnI?ljXXTVbI9+Di#JLjj6_YfPEN1K#qkz-96g2a_f~iw|mj-<= zFV9!sl_dhbOywn$8O@5CdcA2 zZbh4jQy}y7w|L9ezlSf1sBht0s^ZyC>aXDp8Hn{zrKw}pWSzg&L69=H3cmr-ZNdfq z3D#oZOP^-(JuK*+(%;MCB^EUnGz4{nMU%xMix!I&7AIL~7HcflS-j4o$ASx6^jj?c z0*h%DBn$nQS^O9ZIG;84ZqojS{;Rz9<1BuX#ouC~So|~#Y7-Ko*FVdnpJVZZEPj&( zolg2cviNT-{uhh?&4LV1zt3V1nb=+yhgl?YI;MEpY~&E0^*Eqn2Clum<(#D907{sZ<{`Bu4HJW?DjkD|@P#Um9*-anvEQLSM2=Gdw4pn&N?7jibBx=DU2|T_ybOVOE%(J-2ST3T>kLA%Cq=3POu%BC2Oi6U_yArCb)G(!MRcA164jGhBa`>F&NSy4h&MZeHD&NKE6E0AQ{yK?yZI=>7+1Xfe< z{ypoY{zo|PeJ->jxyg?N-RTD6#%`1YVcvt78=-0QV0F?1i@NOltEWz$gl6sG=i9hh z(QH>Qoor#F9`}IRq0zb z`*(*9HDm+bcAV?;AH#2*(6J3i7FM5P8BoPIxXI4UPMhE0(Z6ExLo9w9MNoM5f&^J= zBdOj54*OKAq&ua59gkzLhns~~HtiNUkGZx8N_%=)S!t3ru_f&(jaS56liM&t~=`f0qOcinzrtf+$7nC_Xm)6i#?v zvGm=by8-le&<;@?Z6bpgcQ?z+2D#}YwXbL2D%~jEDBl=a#7@#&QTmpRHKw?Nb2y=J z?%XJZ=Q)+fdC~l6;air}vgOAJi*I51#9KKvvShuL$5FwoQoZ5a$lb`xb468Aqo_TK z)^ogaV{|d65WmH>$`f4In!8anJ-JcAy`madd*3Xoz1Zm*dx=HS8~uH~y>d*C@f8U6 zyxK?oR_*V@gS&}e{X%TF1Oh8=^o$8)%$?25^~_r%oA|d}l3dOM^8;E1g&9F5sw$Z^ zf8Og5Gz)HS#%&UA&%l8UHD7jeV(b8FIyD3A>Vy?0{oJO#jN{Wrt%mkgiqi0^p^VhG zktLEn2ct6M(F2-t4Y3qKqzgFKPw^qEZWhk`BJXDTdkTUez>gpc%`7N{$e+@U_nMSF z?4234eTJw+?p6fiaBEnsMVsEXiF~3YZ);!xNCXf`NPt9{r2rlQQho?Xc^aKJVUuj; zma}i!D4n;mes0s*wER5g8f%z=Ur@;2EXo;_CdB4(W_}AzY?Ivld!=ZRN_C(g0Holv z^n;_@#JcBASWsaqoB_#?;s!L(1$+r?gHdj~&)BH^_)P*g`R&N(0VzF-XM2x)82Ci3 zB%q6alybn1q;egjRRt%er!bwNB#L$--3aqyw3+Kvm&e2hzFVI!aCZ5M3Jne_VhNJz zX`d3pXrSi}FV*k>WHfSs`E(4sRBMK5#fTCC;%W9}AKqjz zjX$46S1R^%c>lv;T-4COOp`46LYe6;9Q1Nr`FuMZ4I)M}8_yal2l-iVKS1ZjW(J87 zr(*K8m+fV6x|n>SvP<^l3h_n!37;Vd8Tg63=Y*)y-k?)Mws=32c4?UY zm?a8WEtj3w_X2qMT@)ttLr92U<1o5DJVAeh*J#b?n=FnK7TqM0F{@!Wpn=(j2*`;U5)AB6YmCI@B+ zy%t&|*wG#*$>*h~rn0j7Pw2 z|9sa+E=1equQa$yWc53iL1}V<6buqh2!n}+m9Gc~;qnlt`CA_jC!@+cj#zN=Al|zv zMklcn!UC=^BLqU*!`Mgs5jV-skiK}r^7SV;00E`?FCP{O^F^0o+?XaiMLHbbwVyhs8 zX)PbA6A-|UK(ED`8?JE2J^nZi*f_M(X>3gZ0y~{~Z4a(6N$eAw+0>Ohu6!CSJA8&a z_%D~_M>6-K9Y(s4oUv%%C?ElizmQy_-ixR6XmRefJ<_wXELwFo#l?k<5a2+0t;YUy zB%vHGh1%>53{ZSjh!ll;+haLjCk{0Nx#;mNM; zmEUTt1E=}pf80a3R^~zkNxCxA4v{2G_$l@&OBAq%XMZ%Feb)UVXI(@uY~J4EA29DG z&{>aadx>z0F4fr}wBdXB@>pO5IoZ+MBqER_)rx2F+(q~+utc8jub{+=5(2J`M2B7N z=}!@Fzm6(MM<5Fj-NkUN@A6cJ%26W9j237h>xVh$qW&bSo?!71i<2m@{3k?RFNjIl zi+;y&M@ktV9(0%B;`oqCWF3Z{%q94e#UQNDeq$eWlRzLYWE0T+r8r-FtdrmvrS*a zcnw>mHUsGnhbUr@mW09e@R7Z$RhczjzGz9Ux=#G0T-$g9VjY z*#|(_XM#sL8C_7qFCFoxwBgBmoI^W-SJAn}$Xgxi;R84~6i&reR7`z#8w~KYfx(Xu z22AD#7K!Qs*WLT$&WDFa+|urJ_z;?>$@Vr}QJXd?3uc;i6Ew7Kx$JE_(~xbpI&kny zMV=0Ah=g8-NQIt0EE2DOg+n7VV3;Xy-Ti)V=EF|0)ZZNmse&V10@i}W#4^9B%z}L& zgd*4WgH-@UFM#P7RE?j$bBCu-L{Br6mHY+~)wENLibU#Gw5%)=m)urtczb&?b8L?X zJq}t7d5*ynIJRgz2&3WeW*8nbNE@<(bc;YE!!oI#CXm77=;woa4}Mr6CMs`z8*b1* zO6h8$5C^qv*%apq)@KnIlHc^AWi8`5%RvbaSVq;3nWTOWw|*)iY6y~#f7s4S^eO!H zuz3i=ukkIn6H7+78C5)K?5+N=~2EE)*KcIu-J8o6j%Cb6pwOrvpC3uv5ec} zh4FH6&zR#tR5{iW`@o@N*r0|M5HpPFP{Ue0q&7<30feDW%r4I1<58%G-eCNW7<5z! zT5Z$-BGYzETNU$f$M<*G3#uOD!{wPM4{9F^v z&hPNTH&7t0QBn!b1RmU_rKk9~5Q7vl51+@iuX7$q(#5O|IFlDv;KD@aoCM{XD>TcZUpm^Gh_7R|2#-kV?m(;%s{HpvxvkLS_`@1$$+hHo(_WOBf+{t`@@()3W IBbDC&0khZuB>(^b literal 0 HcmV?d00001 diff --git a/gestao_raul/Lib/site-packages/cffi/__pycache__/backend_ctypes.cpython-310.pyc b/gestao_raul/Lib/site-packages/cffi/__pycache__/backend_ctypes.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..37b421ce5d5a0038968c7702adddd9c1c49b538f GIT binary patch literal 39594 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 literal 0 HcmV?d00001 diff --git a/gestao_raul/Lib/site-packages/cffi/__pycache__/commontypes.cpython-310.pyc b/gestao_raul/Lib/site-packages/cffi/__pycache__/commontypes.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..29eace7a7c12fd17d316ba8d25d80f48344f9d92 GIT binary patch literal 1998 zcmZ7%+in|0bY}MAjW3Ctw514vRzipxHI7ssDyj&zaUE)!i%DFnF0NLaopHR$de@zq zjcd!55aBa;i2H_+_yRtGFW6U}D)EYhkRY7dP1__h+H+>koH=vu8&@ht1mn*3FZ+MN z>JPO!KP=eXgHQYpfFg=R-FW zKB>_88Rm}|oU-yNdVcS_GQ2!b7ijfI5y>BjFUxHJw`LogyP-o zt6hB!7NM=z7+?*j#vrCFgoU-f-fD6lb68(-_nCD4crb_~SB{5Fr22Ymqv=>~Yun9M zhPxKWVXE%|bgsF6uNSzzF!r)*!;rmjQykjJ; z^odgQY#4x5L>lmk-vCSuiKh5{@b50tk;LO?xql@&(WZEcXXGW3`jklHn1~OjgknNo zYA^NZ7SPOt!hv;!_$_Ik6sBZ`-<~Q?0-n1g=P1bO;p^xa{{Zr)in<0={TvmY6xHo+ zCK+DSKynG*`{ru|ceJVABTCCvl&?*Q{w^A!nz6-|^Z!{COfDx;;6ntKBgQDBll4xY z*-wIq#v@@X&)c7HI}mmpg=5=0@`BI<-`QSIGH#FK#P+=~w88mx5aylgdYRjvf3?&!61;H4B|-GUPSF)pp=S0Q;{$`=w+(Oeh?kn0M9HD{WuA!4ex|t z%pSAfYFMw8Q`2qSZ#-cerm1nxhPv?y)Q9R^Nehsep@Ld>X*kv`f1q+Ez zpc3|>v%SKwhF&*2kF|`Z&+rWIYrti^!ZTfUF=}0!b3c`KQLVV;EVz%iT8-@oO?S7m z)7tu~ra9&Yi}q#Tscd>Lfd>=95SS`w`?UBny{LVdVEc?#i0>`V|h#B~N^*@{2EkDo&{#2N9HSMp2oQrB4p7!Zxjr zg6Kl?{Q{`sCIFofY+_5Z@H{5}nHu?<%t5q)dVZRJ@*7Hy0dhXSU0Z@m8H*I;Ch%$|KC7eDf?Hw~$UdI~ zYL;jD^VSghM=$1s)J%pHTFE&(GqW>etyTB|B_aD#wM20nfQ3}bLIRU=mb^M9r&Tan W%`zzhB;P}V6N^|M6>n6re)>OVFdv@) literal 0 HcmV?d00001 diff --git a/gestao_raul/Lib/site-packages/cffi/__pycache__/cparser.cpython-310.pyc b/gestao_raul/Lib/site-packages/cffi/__pycache__/cparser.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..d53ec07b3812e1c182be6805f96b3236c3128f2c GIT binary patch literal 23940 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 Uot@1-jzQ042eY~CbK^7r4?UiGlK=n! literal 0 HcmV?d00001 diff --git a/gestao_raul/Lib/site-packages/cffi/__pycache__/error.cpython-310.pyc b/gestao_raul/Lib/site-packages/cffi/__pycache__/error.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..935a7b51dfbb8b6065515e25544273b6e56bb501 GIT binary patch literal 1478 zcma)6K~K~`6rO3PyWJJZf`}3|X<|5RB6uVr#()bLjIIVz<7Shlbf(Kdw_Rsifz9qo z{|xaT_3DW;H!u3$EZ`y-on~J9&Ad*(?|m;#Z{DmD7)!6eb-Feo-w})t24DrI-iGj; zaKhdK-;1VwbE*s1MySxIpVz9%jZ%O?|2q#|}6wnGx zU4tMHaut0Tm;e=_b zc)=nWi-N^65yj+cmMOWDXJTYhW&5ai_E_CaxHvS+pp#1fjT(rjM2@h2+1kBL5=@LdKs9C#W?RmqV&OqXrwO|1>tqsLw#ngMDWF*5N zlWAfq&|mOY6Hj0pc`A@vaPMGOB;Mz-L@x?ttg9Xj(+$nzKj~u~cpCctwGyz`reL0) zOK>fPYk!rX?!Ye4y){nvmDE}$oql{hVVQ(!w-<{{c;HALX1NmD3zYDBfks&}$x@>s zUo-oF}-RI_*^UPK5U?M7w)*W!nJ=&n|!n1X{1RcJ0lyG zuBeK@k?u&dH~N`q(BSp!Zehz#E>^> a*U2s1CnF|LvDq~K1ZuQq*CuMtOz9T^r9v$L literal 0 HcmV?d00001 diff --git a/gestao_raul/Lib/site-packages/cffi/__pycache__/ffiplatform.cpython-310.pyc b/gestao_raul/Lib/site-packages/cffi/__pycache__/ffiplatform.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..d6a40fd8c8ac3406c99e8cd7f88aaa6718f039a1 GIT binary patch literal 3307 zcmai0TW{RP6`tW`$>m;jvEn+3(`+wtvjyU$eMnHlEqqg2Bd%OTPJ^;4h!uysro<)J zGhE5Lsq3q%V&Z|*}!JM+iQu*unHEbllh31%N~Mz83I?h_U^f5UQq#KekN#i%t8 zl6KM=T4C3$zY?xMZUu6yvj??Y(q7K3g)2+hHL(uab#Xy#;Cn&v9oGNWS2zRP{)&V4 zxnBEqBGX|S56ZO2x1=m&-_@QfrZP@c*iQ2}n~Ee7sl+Ht_vAp%>QN_oT*^UI?CmFU zsX|XAlOz}FOBUO-!t(L(ZJ>ROrfz`<7%XFBzHm6J*oZIO%DTgT*IG0x_rxmgedolj z8mIh}bM~lJIl`%US|b$fS| zsB%z5axl$y@1=XYDlL@TY)}rdtE-cl?u?Q$g4ydMQ&cJn+%|7; zpKsumYZ%64g0qL1i03w%`V&aW_W6l*$`;Q2N@-UN)`ew{orQ}Tvb}o>pM1tD=cIAU z;F+~uYtdMEM$RM8RNjFt`<3}qHLkNqmnwJX|MA~^f&cv@MBe<}+r@YS`}PLC+r9Hc z^3rmibwqdTm zuN&ofg80=o7SXG5y{e236S-HYM7tu{n~uVc8XO`W9F)b(4@;m_SgJh=N!$CGp zp1WACnq`+NS1?eQK?2+2UA(K#Di65zxx-igQ}?W=^4nl|$wMS|?xC+Sc%C6+YvGRV zMPuwNys^9Rkui?2D?Z{WKjw>O)g&L`Z}Y?x4*V8WwqR2xuay3Nb3a(v!maF~RRscm z5+1%jzHY_Lzvc`5;5wWCpz;LtPHqXlXwBcO{K`5;7D9WAw3}YrtkbUAC!JHa%NHF) zidVIW54{fJU^zNs4y%yKLu>YX&K6zH=0VvNt*X1fvcFn&ht@@Q%>T#*=Kjz<0@U@} z%e;1V`wkp0(>?eeu5K?Q#lVwp-b?d?y4z96hw`CJ)WaeZ+6-&ArsXVb!QW9GPAY7g zIHBaxtrxONz6pc(E%|+X9%vVd7AI%CK)W!g#Sl)Dd1F&u>usw3nxv$XZxiVe`3{lq z68RoTxIP(3l|*ro57SXZ5v0Nu%G_c?#{mq*C9qljj%MGZeU{>#gT(-KFk6`!lwoPku%R)mxz}x159wY@AFKThMa$P@h1|fEJyo2Ca&n@?{U@;lSEqU-Ip~ZGgcbfP4+Ss07yV zM`%BOB~j&7%>EQjk^W2EjAN=KXAhMP@~v6-2|CZ$Rer?~+-$)|Y+*G4n+w~_+Le9E z0g)(ZfKvOwQg2mUy=}Oy6Q?qXGrv%}745xoY{?HQ>%^n9CHZ|M*%wHi9kjgZu(CP3 zQP=ajhCk}a_pp(E@cfk8O%;$%yK0i9rEFr_97Q+csU)EDBz%Yv)Xsj9=Gwczvn=d2 zOxncbl2=i+C*Z|cQk{OqUi!j#FxyKanVlF%<;8c{3IYHD#_#5{j*v9ZU;Q0yc z$O!ZRf0p6Lm4RTY<~3J|EoD2YXzuYi3&pSn-Eot>4(5yPHC7s=2)>1d)tLI{&bInDkIh zjtVJMuPl1-RXUu#)9(Q>%0Zf|-ZWR!$)u2FB6{`xs<$coZ5^bjinui7aRLA-;l(3~ zQm1X)QYe{$E67(8!xbd~!1xgmro??gI~k?ATTUlgqFZSWG?GzPLVbY1=a>Yz(>!>yp(E` zf`nrx3<#=9cEWKh;iW})5;8iBY@fpUbpklL8SkJbM literal 0 HcmV?d00001 diff --git a/gestao_raul/Lib/site-packages/cffi/__pycache__/lock.cpython-310.pyc b/gestao_raul/Lib/site-packages/cffi/__pycache__/lock.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..cc624e53fb5b094b76902584497292338e8a93ae GIT binary patch literal 415 zcmZXO&r8EF6vtoExz%mGc=D{L9@L{CL&UkmKolk-jzEcRI_uJ9B&nnOkHr5dS5L$L zz>B_a4l2IK`}yJf5)}k(Ks&vCpL|k)k7}r!kHZCqSz<~cAri(Q;Dsb~3i@!li#t!! z+#7oY9+2Nb14N@dAW-?5?riAenl9j1)BLCD)ikZYny|6L_u(caD-UZ(T)?GNF}EVZ zG7Wv_nbNrKtI#G>vnZRT$~En?7Ch0F#C3-GTxmPdT4~o!iaal)4R@_=6GZj>8|V%y z*Xe86KV$a>ud{`aR8v0O!(7m{6PPt0Ui9L;$=#sB~S literal 0 HcmV?d00001 diff --git a/gestao_raul/Lib/site-packages/cffi/__pycache__/model.cpython-310.pyc b/gestao_raul/Lib/site-packages/cffi/__pycache__/model.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..8610aa00d189615acd6ef1e3db6b011d4a49a9f2 GIT binary patch literal 19860 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 literal 0 HcmV?d00001 diff --git a/gestao_raul/Lib/site-packages/cffi/__pycache__/recompiler.cpython-310.pyc b/gestao_raul/Lib/site-packages/cffi/__pycache__/recompiler.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..e701bda5ff8de2c8e3e873481d36a1fb00475392 GIT binary patch literal 46900 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 P(-YBQ(gDzqeDMDPSW&Wk literal 0 HcmV?d00001 diff --git a/gestao_raul/Lib/site-packages/cffi/__pycache__/setuptools_ext.cpython-310.pyc b/gestao_raul/Lib/site-packages/cffi/__pycache__/setuptools_ext.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..e170e5b51bab14a26fbf4fb2b16b5868047197be GIT binary patch literal 7220 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 GUj9F`;{lWa literal 0 HcmV?d00001 diff --git a/gestao_raul/Lib/site-packages/cffi/__pycache__/vengine_cpy.cpython-310.pyc b/gestao_raul/Lib/site-packages/cffi/__pycache__/vengine_cpy.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..d26e22269cfe81dffaa4906f9b0a7b07071cbd98 GIT binary patch literal 35741 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 sg-?tRb)Vs-zvHq)$ literal 0 HcmV?d00001 diff --git a/gestao_raul/Lib/site-packages/cffi/__pycache__/vengine_gen.cpython-310.pyc b/gestao_raul/Lib/site-packages/cffi/__pycache__/vengine_gen.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..6eab88436ceb62e752396cab27a0c30374e50f32 GIT binary patch literal 21198 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 literal 0 HcmV?d00001 diff --git a/gestao_raul/Lib/site-packages/cffi/__pycache__/verifier.cpython-310.pyc b/gestao_raul/Lib/site-packages/cffi/__pycache__/verifier.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..d4f3eb29fe2bc4855bdf5a4baa640e3add285ec1 GIT binary patch literal 9342 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 literal 0 HcmV?d00001 diff --git a/gestao_raul/Lib/site-packages/cffi/_cffi_errors.h b/gestao_raul/Lib/site-packages/cffi/_cffi_errors.h new file mode 100644 index 0000000..158e059 --- /dev/null +++ b/gestao_raul/Lib/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/gestao_raul/Lib/site-packages/cffi/_cffi_include.h b/gestao_raul/Lib/site-packages/cffi/_cffi_include.h new file mode 100644 index 0000000..908a1d7 --- /dev/null +++ b/gestao_raul/Lib/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/gestao_raul/Lib/site-packages/cffi/_embedding.h b/gestao_raul/Lib/site-packages/cffi/_embedding.h new file mode 100644 index 0000000..94d8b30 --- /dev/null +++ b/gestao_raul/Lib/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: 1.17.1" + "\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/gestao_raul/Lib/site-packages/cffi/_imp_emulation.py b/gestao_raul/Lib/site-packages/cffi/_imp_emulation.py new file mode 100644 index 0000000..136abdd --- /dev/null +++ b/gestao_raul/Lib/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/gestao_raul/Lib/site-packages/cffi/_shimmed_dist_utils.py b/gestao_raul/Lib/site-packages/cffi/_shimmed_dist_utils.py new file mode 100644 index 0000000..c3d2312 --- /dev/null +++ b/gestao_raul/Lib/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/gestao_raul/Lib/site-packages/cffi/api.py b/gestao_raul/Lib/site-packages/cffi/api.py new file mode 100644 index 0000000..5a474f3 --- /dev/null +++ b/gestao_raul/Lib/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/gestao_raul/Lib/site-packages/cffi/backend_ctypes.py b/gestao_raul/Lib/site-packages/cffi/backend_ctypes.py new file mode 100644 index 0000000..e7956a7 --- /dev/null +++ b/gestao_raul/Lib/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/gestao_raul/Lib/site-packages/cffi/cffi_opcode.py b/gestao_raul/Lib/site-packages/cffi/cffi_opcode.py new file mode 100644 index 0000000..6421df6 --- /dev/null +++ b/gestao_raul/Lib/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/gestao_raul/Lib/site-packages/cffi/commontypes.py b/gestao_raul/Lib/site-packages/cffi/commontypes.py new file mode 100644 index 0000000..d4dae35 --- /dev/null +++ b/gestao_raul/Lib/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/gestao_raul/Lib/site-packages/cffi/cparser.py b/gestao_raul/Lib/site-packages/cffi/cparser.py new file mode 100644 index 0000000..eee83ca --- /dev/null +++ b/gestao_raul/Lib/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 inbetween, 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/gestao_raul/Lib/site-packages/cffi/error.py b/gestao_raul/Lib/site-packages/cffi/error.py new file mode 100644 index 0000000..0a27247 --- /dev/null +++ b/gestao_raul/Lib/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/gestao_raul/Lib/site-packages/cffi/ffiplatform.py b/gestao_raul/Lib/site-packages/cffi/ffiplatform.py new file mode 100644 index 0000000..adca28f --- /dev/null +++ b/gestao_raul/Lib/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/gestao_raul/Lib/site-packages/cffi/lock.py b/gestao_raul/Lib/site-packages/cffi/lock.py new file mode 100644 index 0000000..db91b71 --- /dev/null +++ b/gestao_raul/Lib/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/gestao_raul/Lib/site-packages/cffi/model.py b/gestao_raul/Lib/site-packages/cffi/model.py new file mode 100644 index 0000000..e5f4cae --- /dev/null +++ b/gestao_raul/Lib/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/gestao_raul/Lib/site-packages/cffi/parse_c_type.h b/gestao_raul/Lib/site-packages/cffi/parse_c_type.h new file mode 100644 index 0000000..84e4ef8 --- /dev/null +++ b/gestao_raul/Lib/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/gestao_raul/Lib/site-packages/cffi/pkgconfig.py b/gestao_raul/Lib/site-packages/cffi/pkgconfig.py new file mode 100644 index 0000000..5c93f15 --- /dev/null +++ b/gestao_raul/Lib/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/gestao_raul/Lib/site-packages/cffi/recompiler.py b/gestao_raul/Lib/site-packages/cffi/recompiler.py new file mode 100644 index 0000000..57781a3 --- /dev/null +++ b/gestao_raul/Lib/site-packages/cffi/recompiler.py @@ -0,0 +1,1598 @@ +import os, sys, io +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)) + + +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 = '((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/gestao_raul/Lib/site-packages/cffi/setuptools_ext.py b/gestao_raul/Lib/site-packages/cffi/setuptools_ext.py new file mode 100644 index 0000000..681b49d --- /dev/null +++ b/gestao_raul/Lib/site-packages/cffi/setuptools_ext.py @@ -0,0 +1,216 @@ +import os +import sys + +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 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 + 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/gestao_raul/Lib/site-packages/cffi/vengine_cpy.py b/gestao_raul/Lib/site-packages/cffi/vengine_cpy.py new file mode 100644 index 0000000..eb0b6f7 --- /dev/null +++ b/gestao_raul/Lib/site-packages/cffi/vengine_cpy.py @@ -0,0 +1,1084 @@ +# +# 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(' 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/gestao_raul/Lib/site-packages/cffi/vengine_gen.py b/gestao_raul/Lib/site-packages/cffi/vengine_gen.py new file mode 100644 index 0000000..bffc821 --- /dev/null +++ b/gestao_raul/Lib/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/gestao_raul/Lib/site-packages/cffi/verifier.py b/gestao_raul/Lib/site-packages/cffi/verifier.py new file mode 100644 index 0000000..e392a2b --- /dev/null +++ b/gestao_raul/Lib/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/gestao_raul/Lib/site-packages/pip-23.0.1.dist-info/top_level.txt b/gestao_raul/Lib/site-packages/cryptography-44.0.0.dist-info/INSTALLER similarity index 100% rename from gestao_raul/Lib/site-packages/pip-23.0.1.dist-info/top_level.txt rename to gestao_raul/Lib/site-packages/cryptography-44.0.0.dist-info/INSTALLER diff --git a/gestao_raul/Lib/site-packages/cryptography-44.0.0.dist-info/METADATA b/gestao_raul/Lib/site-packages/cryptography-44.0.0.dist-info/METADATA new file mode 100644 index 0000000..6798c61 --- /dev/null +++ b/gestao_raul/Lib/site-packages/cryptography-44.0.0.dist-info/METADATA @@ -0,0 +1,140 @@ +Metadata-Version: 2.3 +Name: cryptography +Version: 44.0.0 +Classifier: Development Status :: 5 - Production/Stable +Classifier: Intended Audience :: Developers +Classifier: License :: OSI Approved :: Apache Software License +Classifier: License :: OSI Approved :: BSD License +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.7 +Classifier: Programming Language :: Python :: 3.8 +Classifier: Programming Language :: Python :: 3.9 +Classifier: Programming Language :: Python :: 3.10 +Classifier: Programming Language :: Python :: 3.11 +Classifier: Programming Language :: Python :: 3.12 +Classifier: Programming Language :: Python :: 3.13 +Classifier: Programming Language :: Python :: Implementation :: CPython +Classifier: Programming Language :: Python :: Implementation :: PyPy +Classifier: Topic :: Security :: Cryptography +Requires-Dist: cffi >=1.12 ; platform_python_implementation != 'PyPy' +Requires-Dist: bcrypt >=3.1.5 ; extra == 'ssh' +Requires-Dist: nox >=2024.4.15 ; extra == 'nox' +Requires-Dist: nox[uv] >=2024.3.2 ; python_version >= '3.8' and extra == 'nox' +Requires-Dist: cryptography-vectors ==44.0.0 ; extra == 'test' +Requires-Dist: pytest >=7.4.0 ; extra == 'test' +Requires-Dist: pytest-benchmark >=4.0 ; extra == 'test' +Requires-Dist: pytest-cov >=2.10.1 ; extra == 'test' +Requires-Dist: pytest-xdist >=3.5.0 ; extra == 'test' +Requires-Dist: pretend >=0.7 ; extra == 'test' +Requires-Dist: certifi >=2024 ; extra == 'test' +Requires-Dist: pytest-randomly ; extra == 'test-randomorder' +Requires-Dist: sphinx >=5.3.0 ; extra == 'docs' +Requires-Dist: sphinx-rtd-theme >=3.0.0 ; python_version >= '3.8' and extra == 'docs' +Requires-Dist: pyenchant >=3 ; extra == 'docstest' +Requires-Dist: readme-renderer >=30.0 ; extra == 'docstest' +Requires-Dist: sphinxcontrib-spelling >=7.3.1 ; extra == 'docstest' +Requires-Dist: build >=1.0.0 ; extra == 'sdist' +Requires-Dist: ruff >=0.3.6 ; extra == 'pep8test' +Requires-Dist: mypy >=1.4 ; extra == 'pep8test' +Requires-Dist: check-sdist ; python_version >= '3.8' and extra == 'pep8test' +Requires-Dist: click >=8.0.1 ; extra == 'pep8test' +Provides-Extra: ssh +Provides-Extra: nox +Provides-Extra: test +Provides-Extra: test-randomorder +Provides-Extra: docs +Provides-Extra: docstest +Provides-Extra: sdist +Provides-Extra: pep8test +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: The cryptography developers +Author-email: The Python Cryptographic Authority and individual contributors +License: Apache-2.0 OR BSD-3-Clause +Requires-Python: >=3.7, !=3.9.0, !=3.9.1 +Description-Content-Type: text/x-rst; charset=UTF-8 +Project-URL: homepage, https://github.com/pyca/cryptography +Project-URL: documentation, https://cryptography.io/ +Project-URL: source, https://github.com/pyca/cryptography/ +Project-URL: issues, https://github.com/pyca/cryptography/issues +Project-URL: changelog, https://cryptography.io/en/latest/changelog/ + +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/workflows/CI/badge.svg?branch=main + :target: https://github.com/pyca/cryptography/actions?query=workflow%3ACI+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.7+ 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/gestao_raul/Lib/site-packages/cryptography-44.0.0.dist-info/RECORD b/gestao_raul/Lib/site-packages/cryptography-44.0.0.dist-info/RECORD new file mode 100644 index 0000000..ed15c6f --- /dev/null +++ b/gestao_raul/Lib/site-packages/cryptography-44.0.0.dist-info/RECORD @@ -0,0 +1,183 @@ +cryptography-44.0.0.dist-info/INSTALLER,sha256=zuuue4knoyJ-UwPPXg8fezS7VCrXJQrAP7zeNuwvFQg,4 +cryptography-44.0.0.dist-info/METADATA,sha256=2V9JHtQY3DAtsDgE2vkzXOIbLfRwRYfmhR7wPh-E2JU,5724 +cryptography-44.0.0.dist-info/RECORD,, +cryptography-44.0.0.dist-info/REQUESTED,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +cryptography-44.0.0.dist-info/WHEEL,sha256=Hn9bytZpOGoR6M4U5xUTHC1AJpPD9B1xPrM4STxljEU,94 +cryptography-44.0.0.dist-info/licenses/LICENSE,sha256=Pgx8CRqUi4JTO6mP18u0BDLW8amsv4X1ki0vmak65rs,197 +cryptography-44.0.0.dist-info/licenses/LICENSE.APACHE,sha256=qsc7MUj20dcRHbyjIJn2jSbGRMaBOuHk8F9leaomY_4,11360 +cryptography-44.0.0.dist-info/licenses/LICENSE.BSD,sha256=YCxMdILeZHndLpeTzaJ15eY9dz2s0eymiSMqtwCPtPs,1532 +cryptography/__about__.py,sha256=fcUqF1IcadxBSH0us1vCvob0OJOrPV3h30yZD8wsHo4,445 +cryptography/__init__.py,sha256=XsRL_PxbU6UgoyoglAgJQSrJCP97ovBA8YIEQ2-uI68,762 +cryptography/__pycache__/__about__.cpython-310.pyc,, +cryptography/__pycache__/__init__.cpython-310.pyc,, +cryptography/__pycache__/exceptions.cpython-310.pyc,, +cryptography/__pycache__/fernet.cpython-310.pyc,, +cryptography/__pycache__/utils.cpython-310.pyc,, +cryptography/exceptions.py,sha256=835EWILc2fwxw-gyFMriciC2SqhViETB10LBSytnDIc,1087 +cryptography/fernet.py,sha256=aMU2HyDJ5oRGjg8AkFvHwE7BSmHY4fVUCaioxZcd8gA,6933 +cryptography/hazmat/__init__.py,sha256=5IwrLWrVp0AjEr_4FdWG_V057NSJGY_W4egNNsuct0g,455 +cryptography/hazmat/__pycache__/__init__.cpython-310.pyc,, +cryptography/hazmat/__pycache__/_oid.cpython-310.pyc,, +cryptography/hazmat/_oid.py,sha256=xcGtygUQX1p2ozVjhqKk016E5--BC7ituI1EGuoiWds,15294 +cryptography/hazmat/backends/__init__.py,sha256=O5jvKFQdZnXhKeqJ-HtulaEL9Ni7mr1mDzZY5kHlYhI,361 +cryptography/hazmat/backends/__pycache__/__init__.cpython-310.pyc,, +cryptography/hazmat/backends/openssl/__init__.py,sha256=p3jmJfnCag9iE5sdMrN6VvVEu55u46xaS_IjoI0SrmA,305 +cryptography/hazmat/backends/openssl/__pycache__/__init__.cpython-310.pyc,, +cryptography/hazmat/backends/openssl/__pycache__/backend.cpython-310.pyc,, +cryptography/hazmat/backends/openssl/backend.py,sha256=Bk_inezh7fBN3jsxMu1YIkf10zryfup6opBDLVFiNms,9413 +cryptography/hazmat/bindings/__init__.py,sha256=s9oKCQ2ycFdXoERdS1imafueSkBsL9kvbyfghaauZ9Y,180 +cryptography/hazmat/bindings/__pycache__/__init__.cpython-310.pyc,, +cryptography/hazmat/bindings/_rust.pyd,sha256=oihcPy9-Y7qKF6tdCjAnQOat9-YI4HB6dzfB7DvYzsw,8292864 +cryptography/hazmat/bindings/_rust/__init__.pyi,sha256=s73-NWxZs-5r2vAzDT9Eqo9mRiWE__A4VJKyFBkjHdM,879 +cryptography/hazmat/bindings/_rust/_openssl.pyi,sha256=mpNJLuYLbCVrd5i33FBTmWwL_55Dw7JPkSLlSX9Q7oI,230 +cryptography/hazmat/bindings/_rust/asn1.pyi,sha256=BrGjC8J6nwuS-r3EVcdXJB8ndotfY9mbQYOfpbPG0HA,354 +cryptography/hazmat/bindings/_rust/exceptions.pyi,sha256=exXr2xw_0pB1kk93cYbM3MohbzoUkjOms1ZMUi0uQZE,640 +cryptography/hazmat/bindings/_rust/ocsp.pyi,sha256=mNrMO5sYEnftD_b2-NvvR6M8QdYGZ1jpTdazpgzXgl0,4004 +cryptography/hazmat/bindings/_rust/openssl/__init__.pyi,sha256=FS2gi2eALVzqTTic8an8enD431pkwKbRxeAZaNMV4Ts,1410 +cryptography/hazmat/bindings/_rust/openssl/aead.pyi,sha256=i0gA3jUQ4rkJXTGGZrq-AuY-VQLN31lyDeWuDZ0zJYw,2553 +cryptography/hazmat/bindings/_rust/openssl/ciphers.pyi,sha256=iK0ZhQ-WyCQbjaraaFgK6q4PpD-7Rf5RDHkFD3YEW_g,1301 +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=OJsrblS2nHptZctva-pAKFL5q8yPEAkhmjPZpJ6TA94,493 +cryptography/hazmat/bindings/_rust/openssl/ed448.pyi,sha256=SkPHK2HdbYN02TVQEUOgW3iTdiEY7HBE4DijpdkAzmk,475 +cryptography/hazmat/bindings/_rust/openssl/hashes.pyi,sha256=p8sdf41mPBlV_W9v_18JItuMoHE8UkBxj9Tuqi0WiTE,639 +cryptography/hazmat/bindings/_rust/openssl/hmac.pyi,sha256=ZmLJ73pmxcZFC1XosWEiXMRYtvJJor3ZLdCQOJu85Cw,662 +cryptography/hazmat/bindings/_rust/openssl/kdf.pyi,sha256=hvZSV2C3MQd9jC1Tuh5Lsb0iGBgcLVF2xFYdTo7USO4,1129 +cryptography/hazmat/bindings/_rust/openssl/keys.pyi,sha256=JSrlGNaW49ZCZ1hcb-YJdS1EAbsMwRbVEcLL0P9OApA,872 +cryptography/hazmat/bindings/_rust/openssl/poly1305.pyi,sha256=9iogF7Q4i81IkOS-IMXp6HvxFF_3cNy_ucrAjVQnn14,540 +cryptography/hazmat/bindings/_rust/openssl/rsa.pyi,sha256=2OQCNSXkxgc-3uw1xiCCloIQTV6p9_kK79Yu0rhZgPc,1364 +cryptography/hazmat/bindings/_rust/openssl/x25519.pyi,sha256=2BKdbrddM_9SMUpdvHKGhb9MNjURCarPxccbUDzHeoA,484 +cryptography/hazmat/bindings/_rust/openssl/x448.pyi,sha256=AoRMWNvCJTiH5L-lkIkCdPlrPLUdJvvfXpIvf1GmxpM,466 +cryptography/hazmat/bindings/_rust/pkcs12.pyi,sha256=afhB_6M8xI1MIE5vxkaDF1jSxA48ib1--NiOxtf6boM,1394 +cryptography/hazmat/bindings/_rust/pkcs7.pyi,sha256=Ag9coB8kRwrUJEg1do6BJABs9DqxZiY8WJIFUVa7StE,1545 +cryptography/hazmat/bindings/_rust/test_support.pyi,sha256=FXe7t_tqI3e9ULirYcr5Zlw5szGY7TiZyb7W83ak0Nk,718 +cryptography/hazmat/bindings/_rust/x509.pyi,sha256=0p-Ak_zj-9WfyZKPo08YT6cOx1c-lhjeYd0jJ8c4oT0,8318 +cryptography/hazmat/bindings/openssl/__init__.py,sha256=s9oKCQ2ycFdXoERdS1imafueSkBsL9kvbyfghaauZ9Y,180 +cryptography/hazmat/bindings/openssl/__pycache__/__init__.cpython-310.pyc,, +cryptography/hazmat/bindings/openssl/__pycache__/_conditional.cpython-310.pyc,, +cryptography/hazmat/bindings/openssl/__pycache__/binding.cpython-310.pyc,, +cryptography/hazmat/bindings/openssl/_conditional.py,sha256=dkGKGU-22uR2ZKeOOwaSxEJCGaafgUjb2romWcu03QE,5163 +cryptography/hazmat/bindings/openssl/binding.py,sha256=e1gnFAZBPrkJ3CsiZV-ug6kaPdNTAEROaUFiFrUh71M,4042 +cryptography/hazmat/decrepit/__init__.py,sha256=wHCbWfaefa-fk6THSw9th9fJUsStJo7245wfFBqmduA,216 +cryptography/hazmat/decrepit/__pycache__/__init__.cpython-310.pyc,, +cryptography/hazmat/decrepit/ciphers/__init__.py,sha256=wHCbWfaefa-fk6THSw9th9fJUsStJo7245wfFBqmduA,216 +cryptography/hazmat/decrepit/ciphers/__pycache__/__init__.cpython-310.pyc,, +cryptography/hazmat/decrepit/ciphers/__pycache__/algorithms.cpython-310.pyc,, +cryptography/hazmat/decrepit/ciphers/algorithms.py,sha256=HWA4PKDS2w4D2dQoRerpLRU7Kntt5vJeJC7j--AlZVU,2520 +cryptography/hazmat/primitives/__init__.py,sha256=s9oKCQ2ycFdXoERdS1imafueSkBsL9kvbyfghaauZ9Y,180 +cryptography/hazmat/primitives/__pycache__/__init__.cpython-310.pyc,, +cryptography/hazmat/primitives/__pycache__/_asymmetric.cpython-310.pyc,, +cryptography/hazmat/primitives/__pycache__/_cipheralgorithm.cpython-310.pyc,, +cryptography/hazmat/primitives/__pycache__/_serialization.cpython-310.pyc,, +cryptography/hazmat/primitives/__pycache__/cmac.cpython-310.pyc,, +cryptography/hazmat/primitives/__pycache__/constant_time.cpython-310.pyc,, +cryptography/hazmat/primitives/__pycache__/hashes.cpython-310.pyc,, +cryptography/hazmat/primitives/__pycache__/hmac.cpython-310.pyc,, +cryptography/hazmat/primitives/__pycache__/keywrap.cpython-310.pyc,, +cryptography/hazmat/primitives/__pycache__/padding.cpython-310.pyc,, +cryptography/hazmat/primitives/__pycache__/poly1305.cpython-310.pyc,, +cryptography/hazmat/primitives/_asymmetric.py,sha256=RhgcouUB6HTiFDBrR1LxqkMjpUxIiNvQ1r_zJjRG6qQ,532 +cryptography/hazmat/primitives/_cipheralgorithm.py,sha256=gKa0WrLz6K4fqhnGbfBYKDSxgLxsPU0uj_EK2UT47W4,1495 +cryptography/hazmat/primitives/_serialization.py,sha256=qrozc8fw2WZSbjk3DAlSl3ResxpauwJ74ZgGoUL-mj0,5142 +cryptography/hazmat/primitives/asymmetric/__init__.py,sha256=s9oKCQ2ycFdXoERdS1imafueSkBsL9kvbyfghaauZ9Y,180 +cryptography/hazmat/primitives/asymmetric/__pycache__/__init__.cpython-310.pyc,, +cryptography/hazmat/primitives/asymmetric/__pycache__/dh.cpython-310.pyc,, +cryptography/hazmat/primitives/asymmetric/__pycache__/dsa.cpython-310.pyc,, +cryptography/hazmat/primitives/asymmetric/__pycache__/ec.cpython-310.pyc,, +cryptography/hazmat/primitives/asymmetric/__pycache__/ed25519.cpython-310.pyc,, +cryptography/hazmat/primitives/asymmetric/__pycache__/ed448.cpython-310.pyc,, +cryptography/hazmat/primitives/asymmetric/__pycache__/padding.cpython-310.pyc,, +cryptography/hazmat/primitives/asymmetric/__pycache__/rsa.cpython-310.pyc,, +cryptography/hazmat/primitives/asymmetric/__pycache__/types.cpython-310.pyc,, +cryptography/hazmat/primitives/asymmetric/__pycache__/utils.cpython-310.pyc,, +cryptography/hazmat/primitives/asymmetric/__pycache__/x25519.cpython-310.pyc,, +cryptography/hazmat/primitives/asymmetric/__pycache__/x448.cpython-310.pyc,, +cryptography/hazmat/primitives/asymmetric/dh.py,sha256=OOCjMClH1Bf14Sy7jAdwzEeCxFPb8XUe2qePbExvXwc,3420 +cryptography/hazmat/primitives/asymmetric/dsa.py,sha256=xBwdf0pZOgvqjUKcO7Q0L3NxwalYj0SJDUqThemhSmI,3945 +cryptography/hazmat/primitives/asymmetric/ec.py,sha256=lwZmtAwi3PM8lsY1MsNaby_bVi--49OCxwE_1yqKC-A,10428 +cryptography/hazmat/primitives/asymmetric/ed25519.py,sha256=kl63fg7myuMjNTmMoVFeH6iVr0x5FkjNmggxIRTloJk,3423 +cryptography/hazmat/primitives/asymmetric/ed448.py,sha256=2UzEDzzfkPn83UFVFlMZfIMbAixxY09WmQyrwinWTn8,3456 +cryptography/hazmat/primitives/asymmetric/padding.py,sha256=eZcvUqVLbe3u48SunLdeniaPlV4-k6pwBl67OW4jSy8,2885 +cryptography/hazmat/primitives/asymmetric/rsa.py,sha256=dvj4i2js78qpgotEKn3SU5Eh2unDSMiZpTVo2kx_NWU,7668 +cryptography/hazmat/primitives/asymmetric/types.py,sha256=LnsOJym-wmPUJ7Knu_7bCNU3kIiELCd6krOaW_JU08I,2996 +cryptography/hazmat/primitives/asymmetric/utils.py,sha256=DPTs6T4F-UhwzFQTh-1fSEpQzazH2jf2xpIro3ItF4o,790 +cryptography/hazmat/primitives/asymmetric/x25519.py,sha256=VGYuRdIYuVBtizpFdNWd2bTrT10JRa1admQdBr08xz8,3341 +cryptography/hazmat/primitives/asymmetric/x448.py,sha256=GKKJBqYLr03VewMF18bXIM941aaWcZIQ4rC02GLLEmw,3374 +cryptography/hazmat/primitives/ciphers/__init__.py,sha256=eyEXmjk6_CZXaOPYDr7vAYGXr29QvzgWL2-4CSolLFs,680 +cryptography/hazmat/primitives/ciphers/__pycache__/__init__.cpython-310.pyc,, +cryptography/hazmat/primitives/ciphers/__pycache__/aead.cpython-310.pyc,, +cryptography/hazmat/primitives/ciphers/__pycache__/algorithms.cpython-310.pyc,, +cryptography/hazmat/primitives/ciphers/__pycache__/base.cpython-310.pyc,, +cryptography/hazmat/primitives/ciphers/__pycache__/modes.cpython-310.pyc,, +cryptography/hazmat/primitives/ciphers/aead.py,sha256=Fzlyx7w8KYQakzDp1zWgJnIr62zgZrgVh1u2h4exB54,634 +cryptography/hazmat/primitives/ciphers/algorithms.py,sha256=cPzrUizm_RfUi7DDqf3WNezkFy2IxfllsJv6s16bWS8,4493 +cryptography/hazmat/primitives/ciphers/base.py,sha256=tg-XNaKUyETBi7ounGDEL1_ICn-s4FF9LR7moV58blI,4211 +cryptography/hazmat/primitives/ciphers/modes.py,sha256=BFpxEGSaxoeZjrQ4sqpyPDvKClrqfDKIBv7kYtFURhE,8192 +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=EvDIJBhj83Z7f-oHbsA0TzZLFSDV_Yv8hQRdM4o8FD0,5091 +cryptography/hazmat/primitives/hmac.py,sha256=RpB3z9z5skirCQrm7zQbtnp9pLMnAjrlTUvKqF5aDDc,423 +cryptography/hazmat/primitives/kdf/__init__.py,sha256=4XibZnrYq4hh5xBjWiIXzaYW6FKx8hPbVaa_cB9zS64,750 +cryptography/hazmat/primitives/kdf/__pycache__/__init__.cpython-310.pyc,, +cryptography/hazmat/primitives/kdf/__pycache__/argon2.cpython-310.pyc,, +cryptography/hazmat/primitives/kdf/__pycache__/concatkdf.cpython-310.pyc,, +cryptography/hazmat/primitives/kdf/__pycache__/hkdf.cpython-310.pyc,, +cryptography/hazmat/primitives/kdf/__pycache__/kbkdf.cpython-310.pyc,, +cryptography/hazmat/primitives/kdf/__pycache__/pbkdf2.cpython-310.pyc,, +cryptography/hazmat/primitives/kdf/__pycache__/scrypt.cpython-310.pyc,, +cryptography/hazmat/primitives/kdf/__pycache__/x963kdf.cpython-310.pyc,, +cryptography/hazmat/primitives/kdf/argon2.py,sha256=UFDNXG0v-rw3DqAQTB1UQAsQC2M5Ejg0k_6OCyhLKus,460 +cryptography/hazmat/primitives/kdf/concatkdf.py,sha256=bcn4NGXse-EsFl7nlU83e5ilop7TSHcX-CJJS107W80,3686 +cryptography/hazmat/primitives/kdf/hkdf.py,sha256=uhN5L87w4JvtAqQcPh_Ji2TPSc18IDThpaYJiHOWy3A,3015 +cryptography/hazmat/primitives/kdf/kbkdf.py,sha256=eSuLK1sATkamgCAit794jLr7sDNlu5X0USdcWhwJdmk,9146 +cryptography/hazmat/primitives/kdf/pbkdf2.py,sha256=Xj3YIeX30h2BUaoJAtOo1RMXV_em0-eCG0PU_0FHJzM,1950 +cryptography/hazmat/primitives/kdf/scrypt.py,sha256=XyWUdUUmhuI9V6TqAPOvujCSMGv1XQdg0a21IWCmO-U,590 +cryptography/hazmat/primitives/kdf/x963kdf.py,sha256=wCpWmwQjZ2vAu2rlk3R_PX0nINl8WGXYBmlyMOC5iPw,1992 +cryptography/hazmat/primitives/keywrap.py,sha256=XV4Pj2fqSeD-RqZVvY2cA3j5_7RwJSFygYuLfk2ujCo,5650 +cryptography/hazmat/primitives/padding.py,sha256=Qu1VVsCiqfQMPPqU0qU6ig9Y802jZlXVOUDLIxN5KeQ,4932 +cryptography/hazmat/primitives/poly1305.py,sha256=P5EPQV-RB_FJPahpg01u0Ts4S_PnAmsroxIGXbGeRRo,355 +cryptography/hazmat/primitives/serialization/__init__.py,sha256=jyNx_7NcOEbVRBY4nP9ks0IVXBafbcYnTK27vafPLW8,1653 +cryptography/hazmat/primitives/serialization/__pycache__/__init__.cpython-310.pyc,, +cryptography/hazmat/primitives/serialization/__pycache__/base.cpython-310.pyc,, +cryptography/hazmat/primitives/serialization/__pycache__/pkcs12.cpython-310.pyc,, +cryptography/hazmat/primitives/serialization/__pycache__/pkcs7.cpython-310.pyc,, +cryptography/hazmat/primitives/serialization/__pycache__/ssh.cpython-310.pyc,, +cryptography/hazmat/primitives/serialization/base.py,sha256=ikq5MJIwp_oUnjiaBco_PmQwOTYuGi-XkYUYHKy8Vo0,615 +cryptography/hazmat/primitives/serialization/pkcs12.py,sha256=7vVXbiP7qhhvKAHJT_M8-LBZdbpOwrpWRHWxNrNqzXE,4492 +cryptography/hazmat/primitives/serialization/pkcs7.py,sha256=n25jEw__vkZWSlumwgYnqJ0lzyPh5xljMsJDyp2QomM,12346 +cryptography/hazmat/primitives/serialization/ssh.py,sha256=VKscMrVdYK5B9PQISjjdRMglRvqa_L3sDNm5vdjVHJY,51915 +cryptography/hazmat/primitives/twofactor/__init__.py,sha256=tmMZGB-g4IU1r7lIFqASU019zr0uPp_wEBYcwdDCKCA,258 +cryptography/hazmat/primitives/twofactor/__pycache__/__init__.cpython-310.pyc,, +cryptography/hazmat/primitives/twofactor/__pycache__/hotp.cpython-310.pyc,, +cryptography/hazmat/primitives/twofactor/__pycache__/totp.cpython-310.pyc,, +cryptography/hazmat/primitives/twofactor/hotp.py,sha256=rv507uNznUs22XlaqGBbZKkkGjmiTUAcwghTYMem6uM,3219 +cryptography/hazmat/primitives/twofactor/totp.py,sha256=BQ0oPTp2JW1SMZqdgv95NBG3u_ODiDtzVJENHWYhvXY,1613 +cryptography/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +cryptography/utils.py,sha256=Rp7ppg4XIBVVzNQ6XngGndwkICJoYp6FoFOOgTWLJ7g,3925 +cryptography/x509/__init__.py,sha256=Q8P-MnUGrgFxRt5423bE-gzSvgZLAdddWuPheHnuA_c,8132 +cryptography/x509/__pycache__/__init__.cpython-310.pyc,, +cryptography/x509/__pycache__/base.cpython-310.pyc,, +cryptography/x509/__pycache__/certificate_transparency.cpython-310.pyc,, +cryptography/x509/__pycache__/extensions.cpython-310.pyc,, +cryptography/x509/__pycache__/general_name.cpython-310.pyc,, +cryptography/x509/__pycache__/name.cpython-310.pyc,, +cryptography/x509/__pycache__/ocsp.cpython-310.pyc,, +cryptography/x509/__pycache__/oid.cpython-310.pyc,, +cryptography/x509/__pycache__/verification.cpython-310.pyc,, +cryptography/x509/base.py,sha256=-F5KWjxbyjSqluUSr7LRC_sqN_s-qHP5K0rW-41PI4E,26909 +cryptography/x509/certificate_transparency.py,sha256=JqoOIDhlwInrYMFW6IFn77WJ0viF-PB_rlZV3vs9MYc,797 +cryptography/x509/extensions.py,sha256=iX-3WFm4yFjstFIs1F30f3tixIp6i0WgGdc6GwJ-QiQ,76158 +cryptography/x509/general_name.py,sha256=sP_rV11Qlpsk4x3XXGJY_Mv0Q_s9dtjeLckHsjpLQoQ,7836 +cryptography/x509/name.py,sha256=MYCxCSTQTpzhjxFPZaANqJ9fGrhESH73vPkoay8HSWM,14830 +cryptography/x509/ocsp.py,sha256=vbrg3p1hBJQEEFIZ35GHcjbGwTrsxPhlot-OVpyP-C8,11390 +cryptography/x509/oid.py,sha256=X8EbhkRTLrGuv9vHZSGqPd9zpvRVsonU_joWAL5LLY8,885 +cryptography/x509/verification.py,sha256=alfx3VaTSb2bMz7_7s788oL90vzgHwBjVINssdz0Gv0,796 +rust/Cargo.toml,sha256=gaBJTn9TwBCG7U3JgETYbTmK8DNUxl4gKKS65nDWuwM,1320 +rust/cryptography-cffi/Cargo.toml,sha256=CjVBJTYW1TwzXgLgY8TZ92NP_9XSmHzSfRIzVaZh9Bk,386 +rust/cryptography-keepalive/Cargo.toml,sha256=_ABt1o-uFnxDqhb7YzNynb6YEQ2eW2QpnPD1RXBUsrI,210 +rust/cryptography-key-parsing/Cargo.toml,sha256=yLWh172kspq6BJVZA2PjFw17Rt0xTYKn_TTzp3IVhxg,455 +rust/cryptography-openssl/Cargo.toml,sha256=mI0cIDv-kQTl24C-bLvDCqiWn6QobBdqCMYSi_UWPE0,545 +rust/cryptography-x509-verification/Cargo.toml,sha256=vECbxPiNu-dQhW4baTuSPzgqaBnBgwZYnJCSaJQbIUA,426 +rust/cryptography-x509/Cargo.toml,sha256=wAuwnc1eKnSUNFjf4GpQM__FTig-hqF2ZPXJPmqb6cA,248 diff --git a/gestao_raul/Lib/site-packages/pip/_vendor/chardet/metadata/__init__.py b/gestao_raul/Lib/site-packages/cryptography-44.0.0.dist-info/REQUESTED similarity index 100% rename from gestao_raul/Lib/site-packages/pip/_vendor/chardet/metadata/__init__.py rename to gestao_raul/Lib/site-packages/cryptography-44.0.0.dist-info/REQUESTED diff --git a/gestao_raul/Lib/site-packages/cryptography-44.0.0.dist-info/WHEEL b/gestao_raul/Lib/site-packages/cryptography-44.0.0.dist-info/WHEEL new file mode 100644 index 0000000..3e276aa --- /dev/null +++ b/gestao_raul/Lib/site-packages/cryptography-44.0.0.dist-info/WHEEL @@ -0,0 +1,4 @@ +Wheel-Version: 1.0 +Generator: maturin (1.7.5) +Root-Is-Purelib: false +Tag: cp39-abi3-win_amd64 diff --git a/gestao_raul/Lib/site-packages/cryptography-44.0.0.dist-info/licenses/LICENSE b/gestao_raul/Lib/site-packages/cryptography-44.0.0.dist-info/licenses/LICENSE new file mode 100644 index 0000000..b11f379 --- /dev/null +++ b/gestao_raul/Lib/site-packages/cryptography-44.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/gestao_raul/Lib/site-packages/cryptography-44.0.0.dist-info/licenses/LICENSE.APACHE b/gestao_raul/Lib/site-packages/cryptography-44.0.0.dist-info/licenses/LICENSE.APACHE new file mode 100644 index 0000000..62589ed --- /dev/null +++ b/gestao_raul/Lib/site-packages/cryptography-44.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/gestao_raul/Lib/site-packages/cryptography-44.0.0.dist-info/licenses/LICENSE.BSD b/gestao_raul/Lib/site-packages/cryptography-44.0.0.dist-info/licenses/LICENSE.BSD new file mode 100644 index 0000000..ec1a29d --- /dev/null +++ b/gestao_raul/Lib/site-packages/cryptography-44.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/gestao_raul/Lib/site-packages/cryptography/__about__.py b/gestao_raul/Lib/site-packages/cryptography/__about__.py new file mode 100644 index 0000000..99fc2d1 --- /dev/null +++ b/gestao_raul/Lib/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__ = "44.0.0" + + +__author__ = "The Python Cryptographic Authority and individual contributors" +__copyright__ = f"Copyright 2013-2024 {__author__}" diff --git a/gestao_raul/Lib/site-packages/cryptography/__init__.py b/gestao_raul/Lib/site-packages/cryptography/__init__.py new file mode 100644 index 0000000..f37370e --- /dev/null +++ b/gestao_raul/Lib/site-packages/cryptography/__init__.py @@ -0,0 +1,26 @@ +# 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 sys +import warnings + +from cryptography import utils +from cryptography.__about__ import __author__, __copyright__, __version__ + +__all__ = [ + "__author__", + "__copyright__", + "__version__", +] + +if sys.version_info[:2] == (3, 7): + warnings.warn( + "Python 3.7 is no longer supported by the Python core team " + "and support for it is deprecated in cryptography. A future " + "release of cryptography will remove support for Python 3.7.", + utils.CryptographyDeprecationWarning, + stacklevel=2, + ) diff --git a/gestao_raul/Lib/site-packages/cryptography/__pycache__/__about__.cpython-310.pyc b/gestao_raul/Lib/site-packages/cryptography/__pycache__/__about__.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..4d9b42487612800fdffccf083e879580bb283b3c GIT binary patch literal 419 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 literal 0 HcmV?d00001 diff --git a/gestao_raul/Lib/site-packages/cryptography/__pycache__/utils.cpython-310.pyc b/gestao_raul/Lib/site-packages/cryptography/__pycache__/utils.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..0f920f42c24c617c25875e5eaa9313e43f067fcc GIT binary patch literal 4688 zcmaJ_&2t;K6<_QJxuPgp*0nbdO0 zV3&5qQazNOv2w^?;PFh|o2LH}t~u$Pn|erp58zT1WoJ3SJ^*ilhxhTr16xy51q;v3 zPyW06*#*n`mKvjvi^d(xVu=F5EzTmV$*PPIZAW(1)^Dfk=(k&S_1mj@`kkxhKDM~S z-KQ3JMZWJ;ec@LpPzorMC`FVhlxhAppX9}-ZuJ7FDLxHqhQGt#<#T-gsaL&-c^3F0 z=2;Z8m}d^{CBBUIa^J4bqqV|U(OMO5V*%rf6E?oS%74Otim#XW8h?{t!JNzBe2bUC zSr&F<1)M9~eqfca9n-GMOik9}xRut@dMi#UA$5*E42?Tb$9F{#!m2WEK?MvG*y@c9 zx!+D(yRz1PwEv-KOA+d69@b=Bk9R9aj`D*bt~Esvs6r4lTf7qyT?~S+IH7X&k`Y%ttTQ%TU#Ht!cJ4fX|i?y{s)^ITe~7jYpp=mI?>jj>f2jMJr!5m zwQ#S7k*#n0&^P!cJq(w#0fJ4ssF79~A( z*-?dhQjf8RI201@XQ_!#_uFDq%9cE`B`H}>Q#DkHBzJ|z!bc+93-mOX(39j)71%U$ zzn2Rj&&lbdQ_J}-h;E)F?Zb;7!jB(Vu9dR=1!mDNWuuZm(Q?n7mHTQ`-xDx+p(&az zx&OE>p2#^&E9a>i6Ln@(RQm8|U`l8gHpDHW*x$<~G*!MHr(#z~<$zGRNW{D8qmu#} zrC#Zk$|nozOF$_Vm9t&nC98c-4x+83{Iq4vpbFddG%$0OZMh77 zxk}ZTLWkbU$H7_>5c<};Tqll?BEFGM->WPv9gbVK(`ccCn~Qwv3n-@V0!`mm70XrO?huS98Opryl;93*fM^&!1 z-4J1_@=cK>2tYZ7NkXzw_7F`$vym;)gOviShhPa<&p{11ePA82O4%`fe+ArX>WM*+ zAdG5BQg)S_h-l}OL6*TavSl42fSP&?g9N|Epbn25%drCMu8d2+mT^|fu9@^rnva&& zTR<;Gmn2`1ce{aC^HbDxXKx%J()>? zEyQp{blQa`ipU?=b6 z^YVoJ4PIj=k~FjYEmb>o18@T-$~L>^M0 zwFly>j=)*}1=5T!L&EgzA(~92%|jl|*)B5*=(GPI!IIa|3FA1tZoKY@8N-Z8o2ST= zLGUTqwJBy;_tNX#M)M*_DL&;IE#XRSY69=m&?@IfdUZxZ0cXa^)y{vVdu_vkO_4PS z8OBlcHuc@1>I14iLZzk#AQ6fv%78-eQlDNLGAN6oPZLU!2xtp#AzyH2^O8n18mP%Z zf=P+psjW|@2nD|wB&A=TAg*PWUl3ko525`qUdXRgjUFr3fd};P2tAUy)aiMBhV)5~ zt<#v>qw~z^I|sQQE(0AVFQ;D5>$$xg#aSua0mo>|Y>GkXVj9qv6X9v}~< z3{$6BRX+%8NLYEG{9(4M0edt8$opvxWRff)SS9a2vlo2cQvmkQ+P*Izq9;T-^N`x^kjhFRhPi~V^9V}WvgFMjBya9!+-aJyq!2%2 zW-mg6j_o+Z`($E-OAyJTU*dX`^1~p!lSa*tK#941f&WT7{)*{Y>7z#+DLckXe#Ih^0 ziZPsBLviF5I$kLP5EB>>1pfqsmSCQBivtPtKm}$aNH*D^H;!X}qoIJR)4gd*BNYW< z7bPL|^XZP}Na_Qk5_XvsMk6ZS|I9jsoyMDU<{q&^9jjFRXvjqD<>E-fs!@V$YM??> zWoq7~N-st@W|km~fwiH!Pg6BX zck}_G>f3a6I!izWzZ>6pf2@7;Z2P_IW9?szwSPI*zM=29`qrp#OKM{C@1bbZe-`?d zV{);=X`*XRg?qG53L>jsW*Qz#^BsEV#{)8&kQGoG7w5&q^^a0*^AKjTlk Pvw8bc@qdMjix>Y7a4XuR literal 0 HcmV?d00001 diff --git a/gestao_raul/Lib/site-packages/cryptography/exceptions.py b/gestao_raul/Lib/site-packages/cryptography/exceptions.py new file mode 100644 index 0000000..fe125ea --- /dev/null +++ b/gestao_raul/Lib/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/gestao_raul/Lib/site-packages/cryptography/fernet.py b/gestao_raul/Lib/site-packages/cryptography/fernet.py new file mode 100644 index 0000000..868ecb2 --- /dev/null +++ b/gestao_raul/Lib/site-packages/cryptography/fernet.py @@ -0,0 +1,223 @@ +# 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 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: typing.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/gestao_raul/Lib/site-packages/cryptography/hazmat/__init__.py b/gestao_raul/Lib/site-packages/cryptography/hazmat/__init__.py new file mode 100644 index 0000000..b9f1187 --- /dev/null +++ b/gestao_raul/Lib/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/gestao_raul/Lib/site-packages/cryptography/hazmat/__pycache__/__init__.cpython-310.pyc b/gestao_raul/Lib/site-packages/cryptography/hazmat/__pycache__/__init__.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..a920650bd5bc4f8d640b087b1934408289b624e0 GIT binary patch literal 233 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 Any: + from cryptography.hazmat.backends.openssl.backend import backend + + return backend diff --git a/gestao_raul/Lib/site-packages/cryptography/hazmat/backends/__pycache__/__init__.cpython-310.pyc b/gestao_raul/Lib/site-packages/cryptography/hazmat/backends/__pycache__/__init__.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..30dad1ab970d4378b95c4e82970a955d0b2c89bd GIT binary patch literal 489 zcmYjNT}#6-6iwQ$`*2f#g;3D$Q4kSz`X&=5zLY@7nyf3fNl8+qL*M)};y>!EPyPj; zyr~=PLXvZH?>&cm)MPS35a*9yS&k9_t0o+ClJ z56`cdU65xZv>~seu!`KNv@V6ThAbAh_cM|SW0|6w)dhLTm&D{&oK>LCphEVwr~lg1 zo%WQ{T;`V2xN6!XE>=Kc>9*=jHvwE@9C&&NU>>+Dss^V7rP|rjhPJ74 gnRWGUqFZ3^8n~{(WvO^wh%4umaqEtQv3KbI0d3NFQUCw| literal 0 HcmV?d00001 diff --git a/gestao_raul/Lib/site-packages/cryptography/hazmat/backends/openssl/__init__.py b/gestao_raul/Lib/site-packages/cryptography/hazmat/backends/openssl/__init__.py new file mode 100644 index 0000000..51b0447 --- /dev/null +++ b/gestao_raul/Lib/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/gestao_raul/Lib/site-packages/cryptography/hazmat/backends/openssl/__pycache__/__init__.cpython-310.pyc b/gestao_raul/Lib/site-packages/cryptography/hazmat/backends/openssl/__pycache__/__init__.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..bfe708e56aef8101a0c1070b766eff417604c732 GIT binary patch literal 346 zcmYk2&q~8U5XN^msg>BigtveucoIZJtlq>z#YT{$~S2$7lrmyIvEmx*UooN0=V%=aaOv%^|p4R-SpW; zd}!gb-4tfFl?GAm3)?lr6hJ5i@JZZJSg}pNdU3^HP&(xAQhCeoZP{sQJo44*?qR`e ziC$Q6qEq~_S#xZ>JZ}S?2pxV1k^e*Fdx(4okpncQ@c>!d569QqR-KYJ;d=x}j9ENm G3Ht+GO=AxL literal 0 HcmV?d00001 diff --git a/gestao_raul/Lib/site-packages/cryptography/hazmat/backends/openssl/__pycache__/backend.cpython-310.pyc b/gestao_raul/Lib/site-packages/cryptography/hazmat/backends/openssl/__pycache__/backend.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..d82780470260672268e40d4e4b8b671ad2c95f38 GIT binary patch literal 8592 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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 + + 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): + # SHA1 is permissible in MGF1 in FIPS even when SHA1 is blocked + # as signature algorithm. + if self._fips_enabled and isinstance( + padding._mgf._algorithm, hashes.SHA1 + ): + return True + else: + 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 + + def dh_x942_serialization_supported(self) -> bool: + return self._lib.Cryptography_HAS_EVP_PKEY_DHX == 1 + + def x25519_supported(self) -> bool: + if self._fips_enabled: + return False + return True + + 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 + ) + + def ed25519_supported(self) -> bool: + if self._fips_enabled: + return False + return True + + def ed448_supported(self) -> bool: + if self._fips_enabled: + return False + return ( + not rust_openssl.CRYPTOGRAPHY_IS_LIBRESSL + and not rust_openssl.CRYPTOGRAPHY_IS_BORINGSSL + ) + + 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 self._fips_enabled: + return False + return True + + def pkcs7_supported(self) -> bool: + return not rust_openssl.CRYPTOGRAPHY_IS_BORINGSSL + + +backend = Backend() diff --git a/gestao_raul/Lib/site-packages/cryptography/hazmat/bindings/__init__.py b/gestao_raul/Lib/site-packages/cryptography/hazmat/bindings/__init__.py new file mode 100644 index 0000000..b509336 --- /dev/null +++ b/gestao_raul/Lib/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/gestao_raul/Lib/site-packages/cryptography/hazmat/bindings/__pycache__/__init__.cpython-310.pyc b/gestao_raul/Lib/site-packages/cryptography/hazmat/bindings/__pycache__/__init__.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..a2e2f77ff316f1d3a6b6de44c12d64ed10da94ef GIT binary patch literal 194 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 ry`PWO|LD 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ÊTl& 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� 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

h%cALbG1itB@M5lO!%OGN0@d$mi3mRsqHiTJ( zIXQ-jD+Jp2cVopTP@V_N!Z{z{7ERW*!cBOYVZ9Z+6tC{Y2^H}~ueDw!_HiXHvsS3Y zzDV4O&)>s-J8OwbOGVl)q(M{PVO6WNemGJ0b3-fq2)pvFuuAKXw0|J&Q^RbrN>tha ze7hUpe*ZEqOJPgAuF}&|knx=FtL9oGkqA8~15&pES1+!OxPk@1;%ZK7hGGYs$qblO zu7{p9A7z%MtsV&ASZDD|dJOF%s3M^>b{kjJ6=GaiOa|t+K`q8ahm(-&n_zxvz+|K` zND$WLzGm&zFOBbq=Yb9H^O-gs>{a3U$D8@gwNlwH-(;=jGgr#wxy^c<&;6Wd>=fcN zT~+1#X6xsC<~fvjM&({>Arq*gs)P*dCM2MV&^dM>hGon!=Vu_gs}Tv+TJJz}L~k;z z5zHg*M8pYYeVoRInE}or0*ScPL8kHS#vkcO(DeBKv)gZ9{S0_Yqw58kwL_dMR-`R71;qRuvs6B zj78jB_&)5g2H-UZ7WmK%PysK>+E#OXtdsDD6RsZyO$0^3*fRF)P$b&n4q6y9HLg^)1sS|z3EnlmIY;kJq&wdPwaMU zPo$xlqLuu=Yps3GoH;WfkNc0$M`xdN_FjAM?_O)|wby?61_AT0PG-#Q@^0>WJ})#f z1GUMZ#+o#YR;2wHfj5opkbd7@q^AMoI$Zh|nZMas2uM?FS9pdo&Sf2$<6D>GTTPRo zzID8nSiR&Hyr+;X`DYZEm{;M0al`~+yqF>q#=Fp9(4K8sP%bev5~B|N4E{R86asK5V?q_}bF9s+XfAv$1|Y zAwsTJ9{GWP4d#u*@TxV-pBuNv-5#Sp+e{;Ta;{)V=l8fg{@g@WhnEbL8*?#*Nzg^8 z-&Ku3g!+_bVc`O*gRn55W)@az5?*RJHxdhH(zCEIo?BHKCDJT>8Q^Uu7XH^h8s4wZ zqOSxm-ydV%I|g9a>~ACFkJ2mk(b!2;ewytIFTW`Qw)UPw?OhP1 zy*-J#!EvlO8vMUMOM_>lv&r&LOv&<3OI3~XvKd!xafe11`r#hGT0mK=%ICo0l@1nf_@DqvlYC z_-(*5Oy9glKEd3FZs}Hq}JWV(M-I@2LiQ z7E>3`&8mi;#ni=fn_5QCV(M-|!BW+|c!82FBNq1O)j$|h(P6=|tyXC?Tg{42C49Uc!T*NiFhw1T^u(_bU6ytJzQgoM>f6()1#(i>sc%o?`n%L;5=c}Z zNFYhAmOzSn4T0#;Ebg3NavbU=Arhyqmw-!MC4oeBsRWYL1rkV6lM#rTk*U%;vA@Og z&he+iJwbLs`zW#twx}KW6?^;$$_G6R>~Zu(raj)KT=)<&AX}A#B2upcdt4ig8`Rtw z7RXlhEC`Ch7;cZtPzy47rvoziUCN&9@k@ygnQa#!Kpj9g?eXL&$!z_z-9DpL3o@F_ zz=9AI5at$sGhB4xGPGzjUvs2(r87{@ihEdt7DHo_=De(tv?(-b1D!<38uK&6WaQww zAPu;No~eK4=VrB>o@F65zPG6-=vkK0;<;7*6VHZyR)S#+U;)B@x}YS$utS7@(OmS9qCJdl>W7oN zTHjR0XL&??v%bbq8%CmKp^jCS?`kJiMK@s;9~r({4>$1Q7B zAOlu6W9t1~b6o9-gg9Y3511P3vqG{^$h`3YVp08Q&>ZqroBR=79%x2erfAoy$6*&k z+JzMsP@Z4~oHrM88=*RFY7V|w`5~W6r~O7y3hXypyGxh7FMp-7Tcri-DguKx?F1)e z9ImA$s=W}Zqvrn;LUj}c6W;#z__uU3{#3*Vn5`-&A|U~(|8)D?bqhp>6pQ-$Vj578 zvl1#6Xz*~qW~T<^*EFLs2@qQGfykr}?PY%#5xd=uJ5TmAbsY)j<;ZDmcrmw#!s5XZijW? z7ky&`DronMK1DC#l)*?9b{Eh4w8CVA3UfDUKUafVx`1@KW_-iX_2za?*{XIOXD~jQ zQBl_Ouu`SIu>hJ|{E*sDk)&2pV*i8`^)dnmM}daLKM~?Rq=yLK79KM~zl6tE>U_kv z_^m7|v~zpHoEwQ#*PTw151IGtiIJ_xSybu>ssng%qS3puIvt9)R&_dnVj115A(S`% zrkU=Qkp_qn>h$4lV7e^_o9eVH_Q!0HGtlgce4f(H`2DE3)EIvrYtP8SpnH;Up3xxH zig8tD={)R7gD>{vCq{}d_T)+gXpD6?^2qUDnhfz5mmZCq#I5%{KH0>-O+A8_A@Ofj zcha*d{>|zpN@N%R)?al?9K&CuivN&b(Gr&*B;wz(Kf{p!YkMjG$5^0^F8}0u5O%ls zS=PBd%;n|AsW(4G1%-!QnA}TL&*Oz@7F>qRB6&CuZ>>D+rdW0!UcOZ$x8-R1O2|d< z@E2Qv+{gokhog+ALNY7%z!Mk&7!?B4;tdiCh5yzw!|7Q&B*~$90G>lL>une(K<$zLu}0n8s(EHriorAU(0O1xQD|EIiC@4oJF#GL zkMm=NJpP_p*i(5EJNpC_#pF4&AQpD$bo?ncVm4Mpj>oLDIouvZ^%MI{+`u&4-aVWu zE%uo?+`i@)4aw8|)hI|=!uJZ=<51Oha7sK+S3^uT;4zBYfn^5Pi zSXgPDf41w3>yf@Y^&KA(ztj4fV?bK*`p;u5?K_eRZg1aVTpL^a-nmKF_1z;otm{iZ zqptn9uAR56MxL*s}XExS`?n(ZBI3iSs zuGnA8BjTI>V*`M zw2^gv$VN=6atC=Ze{Dsl9`27e*N3zRfyrd754FmtQE2klWPpxRpB#={sK08x3QId&$siTJD1Btb)ZW0S<)%)xk!)hj%Ud=QLLKo9V` zG)l5g@WT2cV~Qh*43=@5eySjPgwH<^=m9?Cq9h9&uay0K9~n}i`>0)dKHKE0agevH!+2yEhj3lcrFKDg z!^p;|MR-h9E%FG{XN#vUn54dx=T>=6QSZsK%BtI(O4MHC=NZ+o>}a|=4u)k7enB#) z7QbX@Vy>CyS#lcjOQUvJf|yt#t4lq4D7Tce;#soMu(1V}ACi?|#U)Ly&?E~Pjo1cC zD=+6GHa8#N?V!{Z^emGr8)*7@Iz7we$_BFbvgnztKaSs~M$t1_fBf94M&Oy6-=Bx# z&%o94$S!A@y6*>OfH?K>FkyhQ)r70v*jw>mwEjRW{DW*n86SlCS7d$>-dJ_e?5HMR z6#j`e{~4#opiIO&!F^GcY6&r=CF| zvQ4Nvl>R>iMZPg35}E_jJ{$5EW^Q-HV06@0l#=P6&{yTMRj?Xj(3ZJoB)s5gMH|T30189YV5YE!C_tbf!?bje{E@~Qqr<2Q(3BQm zBvy^$rPh-0MK-HG^lUmKTGiHrNG!w_F@2Gj{D+06O+CzCTfw6FVJr$??XBNIV!qhB z1AS?2Uz#z2qMS^$h-n@5atP%dZj`IJ%1EUq2 z8AJaUroZWYem!Gm@P{!y4Zvx=Xa@8vw&h{{kxOOL7Fb-;;lBzEOY78Si8CVT1!Uup zyKY>=(XQ0Vcp2&fo7Iu@ERD-kY6+A`H?HZ3zh$Ft+`6IkHEQEN-HgWlGmh2a9`&Ja zpKFO6HS`q-^q_rDh?=bH?YntawDyf?9~pDlef`v@(R>v-YH1K1gE?g~;t5REkSN$= z&MJIR`3gR0{AtNkt6EAi32+)^!a{?ydV@-6);35ke9MxG|FEPt*5M*?EfSjz#VI?|r$I_feV!f~0=U%5T8qzfE{Iay!~OOb;cZB! zTh%0rWtZW%zScnenLuCdK=3r^4_^U@QCMgf#eZeTV>!r#b3*5M+|teXQ>mE5uQ?G3 zEdtsh|3n*2UGpX&u=Sp}y`)PbPArPLC6<^+(oN9=sW%C>PmChWhrf*t9~)|JL}DDf72yMqL`M<5v2Xx}v0q&@$pW37oDa}R z{nYcAw-t>BwxwB2b+BaGs!laC-7~)XbW%T=jVb%t#pf{?Tjsrs(22?5@jV_qQb&hc z&%tIwT4s`g&lqUNZhDyxOmd@rV*9+p!SprWTk$Ohrx~QuQA#O%>l7V0j}sMsc;Ffw zqZm7U*p7CbrnuQnM=)Y(?+xQ!j`9+mfl!Ru)|za8oY0_;Fm1Nd%HwT6^`Y@$TX{*V ztYE=eTRAQqZ$;-LL|ws>Xmkbcd1|V30`pW%yfjtWYN{{Ur{vQ!4_?SApf!Ll9NOi= z!3!hua-Ab`GBAgcYE}v>bmy;aYq#r1J*5R4c%)aliZE~#?}OgP*yM@I%u$;z@8f9s zDS|(YDKR5GxN@G#a|u@(1XwV5zif1VoNFlfgORX1{P?p|D*#|2@|HpJ9y-BFn>jnk z%pv#rldwEZw!{vDS`3>r)T5j6mI4of9s)|;O##*c8KMI+@E9h48I*t*M#ZYjbTL>8 z!^g9xzTo)kbR&Zk5HJ>EiSCHH9!6{l=kgi3x&l9-nJd1esoOy+T1Tz)-2-8jbMn?0gE;#z2`CM4}up^>V7@ZUq?@Rf0%)SL)umuq zsazEOWjk+zn+%t>!6iyb)ITR<$=H@q|8KOHv8-CDMaak6QqkMjh~KR85uXrb`j#$% z+c&zOOIn%MSJEFeQhq$`hQLmUKZdVkQR9{~y4@Hj~DXndIQ$Q;ag zeEXipqi#$O@mK;1D~Yz6Nqa8s{4qVK@tCrAH}Dva$i2j4**ByCSzcC2(1yoA!K3v& z#^cf7wo@ZAD?u9` z`wAY_WsFDNq0ApYtkrltI=Y8=ECq#?L|dIn8#C?vG3rN+$4PPBz@tAR_ZE*cOnLE2 z(1wTBr>>=p$Ho}OLp5kT?mDA~csv0LqEC;5dnp2s5kF`=lKXc9j~)GbkHrWN_sMmOu(F(nu=+mX3z`N$uFxuE@=Z~TP)p!g+6{T;~`L3Nwn4OzESYl`JKjN+g{zk zqaKlasXuD|F!|#H3EJ=&DtJ^)6n!fF%f{6jk4fo0#N!cASV^?iX1HG>_#?PcgRM}o*p?%9mTMaisBx72Ao4m-Jrc)S1#D~YyxgZ3TT@mTSV z#^dGo+^*}>TM@aJcvKy4^2aL@wBe!c(>Xc9AA=Z=?X?<@c-m{!V?rz|510welkE9b!d+cNh+VIf*%i{YPk4F{jkF9TNJYsN;OONoV1_kL~ z9;W@4c0BI?O5<_QpWVRYazySW9=Rbr-0N9%Y*`QrY}AHTh!@z|2qLp)vr z1wNlk-9Z~O?RfaU)Ob|<(G5JNA#yMANNhLdWuydccxZXay_5N)>=4Fd(<+U}Ml8|m z5q~@b3L-BHX)C53kNIC{Jc@qr1|DZ4axd|4JZ$2TAVC`*nm=008ILsSUxKe|Jk}rI zLp+`Y1>ujYX&a>-k1IB4JTBeU4LnXoNc|e*!Y^p zqYfL2dc+@(fC4YmQZs35rX7#zO&X6WJG+6$a76AU9?c(`c>E?o8y>V|jn0L>h4Hv6 zmF4A=l^Ty1NA?hp{{scygrFwujDknj=NgZ3ZQa1*07UL39<@iC{mZ8kwBcd+gYIHH zUOa;Fcz1=y<53*K(j)#@1PY=*&TNZ<$EeRV9w+VS1|IzpxtDlUU4oj)`1TbE+VJ3; zXaWgUr!gLf9n5&FsnK}cg+=&1!lMEdRuXM>9Buft%gcyQH6F>^yMf1!-+GNl>j$R1 z#IEC@4UfJeFNGB%FYT;9*1W3mC_B2Rcz^;g>r}&NL#G{&p`U0xhMMI(Li*R5}kL0Bo6a@L|d(+J&tz%Si4T+ zvHF*8;BhY^_Y#j(zJQbGqudg-;i3E6{4vZQFCNMAa{r4OkHfI|xkq?R0|n`C-=GbS zc05*mpz(Nlb2sp~6_I<1N9kQAe^g4)hKKgAm)^j5)a_zFRe9!ocM1CJXJxtDmf-He)vJvOMEgEl<0K5aaS@z}VV@p#|`jYkZQ zd+8B>@(|FwTb2sp~9Fcp8M@GJhN1g<2cxd~>bv)y7*k;D#j^{NV zTX2X zTJ)60yJtaM#p2$35>^j zu|LY5(0I&E>>(awKtb>rOuG;4{4wAyjYnTpvCDXT{#~!}$n~0dTqZ#q9(sJ6`Ztl6 z&sbhc9@ltWbU+XBI2{yZe7pO*D0u9w)p%^%*bO}D5xJN8qj3L_{UJdc9@;)llJWjw zI~b4amTEjE?cYN@(m+A%)6KMx(as;iH#HvLH+KV%R}s0Fc(~$C{y0*CHaxU_s*Yp+ z*eL$O!pAfonF&3_<2XDQ2ZZ@ zuVXy!TFw0Nw|{9o(r718Pv-YWfWk_mt=8cr+6X+>uF`m{{-zsv+>6M)#KW<#DK7~U zwBe!s9|iLnk4ME`FMd?xaoB!6#N$Lz(EbnFH)H3I6|ZYNUjDipc-)G}y~LyTWs^TX zm7om|V}4HbY2Dk*AH`J~k9fWium|h;PXqin<@DZ3N>{_bJOu!9yC4^@Dnf2PnvR?&=Lu@VMetjmM=;-N55i zMD8UXbJjBmv>&KMf;K#i{SC>YKR#qUW@o)?<`6EGsHaztBHeJSZFUtDlf(JAnFYePrJcfaSjBh7=9tDrAS2P~uKI;Y^ z2Ox4U@o2izP!N0l%+I3WG3sTF$4Q@d z1CRcQ+)F%K<4k)jb^r%$cxeA=VIkwOaTVin;e8s9y9V?Sj{`wL{HMq9fw;E$mk}>% zJd!`@1|B;;?lm5T&zkb$m7om|W4)#L*Dv~n@tAS1#-l8*hj<(W3bLMV*e6l=W9Yv% z9z#&YE|2$r{HWJ>WZ>#4!~T$<4G*nP^ABhKcvSpjdH>XS%%#mdJsH332MVH32Y(y| zj{z@gJo=)FUB=_{^}WU;@iP;TkrK4wq3w^xIgH07u}`PbQg=EP;G%v##3KO|#QxZg zb6z9tv7IkyJhnA<1CM${?xp@%7MibIB|#e=dc2=;py-cgmX~SwXgnsx_7o3Lkn#TJ z#wd6MpVxSN|6w=qcomU*iAPc&Q=gtJK^q>rf62Il@u(AhI{9vmM`qt1;^6`X>0iG2 zFbWSQ0cWFEh>(f&_Kw%|c7XHQu zQSeytjK<^T_q&0|t%%%9JW4}&R7S-^&(CFC$nvs9{6U_@8jpC|+|-l)r5`BB{M_^J zN5SK%r!^i+-|Ge*Hz0BpJhFU^9)Aq(1C7HS$gbd~mr@+&SqBu5lMxC$zRx`VQJ%ns z$w@fN6YEjbW7nV*zMZ&0hR$)nY>tbm7vQ{(uoH!B^bdK}M&IKf5L{I4G&99{D;=FS zu?|N~G=l>j_*FPfhJIW5+204JK&&J`%O!owJTVRJ&7ShNaB?3m=?u8}1V0S9ZeIRp zJFEpdsKQBIp3hwk0yUaYBNGbHok+N^v)mit8X7paRd|aB?|ey zrtC#DiF^}TT$(%`P6u)wkw4i=zLdx>rv#Cu|0GoU`CTvlX8}v;4+Hs@^P|w7hl7W7 z(MNWj_KjBB?<`4iRN!I(AC*23yFXP6$9^QCU2aA^99wYSo%G|bUU@2_s8^nyOozYK zBZ>f>)0|mzCcb3yokci%_A&Qlk{$)mR;$w$`vCe7XZ*Oh;}9;@;Ut7F)nOOH9uD`# zF)4Lt;@I0(B*)<+J4 z_NEi0!o)+Lmz8TABdO2pTIca+x&Udj(-p%v8`9<6X}p-r-RfLEAyI8xMUt%#FWjdA zf{c^Uj^$%_>6Aj;(W`#1&y|zVU{TR&yDfMoa}w99(IGH&wFBUN3{b1>%bk3LTm~Y9 zo%fSV@Tq@LN;)9uS_DW5=p%n3&*zf(=USt6rM@_EcmS%4#-a<>amCzk^;A8a#7OVv z=_}@vsTio{F(Z?1G%OV=Y8q(a`>3bX60YQ z^=(o&BVauRXZGSqeDpZWplC`if zod;F^a{ z=Q)D$_n|KqJW|8Y8}z4n{PW{H{@8!6o(%3p4+=(3r9!cvTCL`lO@cvaqydyQ9bjRQ6fKs3`UH z0t+g3egH5D8_`(I7Nv-3<%Y=fzpkY6G|~BPmczoPV_RX%7A*sOo}Gu_&H&te zo1)pDA(JG&OfHb{*ex38u_%s#9!0Jo{RTFs{?d$(y!dpy13Z40HUd0x+6XASNsNFb zs}0b({ERn2ZB?yrqAnsopVxLrel~iw{FL5k;S{qyNuQ;5Aita6G#a&46^8Pk)~)<6 zGV*tHGylM#e)(unA2|)R5@~tE1mUAMqky2>BTRp6tT5_7KU)1!{b>CBrCIehRZO`? z;pazq`O+Tv`C`ewO~vT!!}ys_8ckveir4%y!QhukC4-Uc1X9Ywhz4}R%;4+uLSr3j z!qD|eNgk+O^cOpt<__`rv-q$-J}@(LR`8VU<3Ng3@^rA}mqq``4&0EM^(GB2@K@Th zuX!IqR{5F?Py2gC({T?WZv36vx+Vsy@1vr9G!wtRU@$Hdo6zR*t}WU>%fG+v^Ai3% zwK03tt_3esx)%_+NvAEv$CigZ-t9$6p1L3UW!A92nZ|&mF!{0;oKPK{j%eIf>(Yl= z%p__yZbeCO`z=hO^15`jV37+orH9q2GlFluF2+GB32Z6VHB4SpDW+PYBe7f(eP|); zX`1Du9L@?qr)^+hk>OZUZD<%T{DLaw24YY=`#mnan@jJ8gx)0*Ruk|cpPY!e2 z`}LFpv3Zn{!CjBX&wWfkDpPwS*MY6y+&IEwA~1Hk@qYJL_m?}Q{(NP+T&E=SQ| zmJ1e$3-FSQD1HNrJd}^>@ASUR?e?L^Ki383M?t?VT9_TU-pc$5*7Gy>$p7;@=YRg( z5&z>O_}@Q`Tl5f5-FK!8Y_SSJKH_neq6mPce&ly4Z`C<&M1$r}G2Bfj5=f3uFS z=1U++68;TOQSzH2k>b?35^$-p5=c~|B#@+1C6FS74#$%w6op=2i5sVWf0ZllQd=dE zsDctmQq2-bQJ+g7RS2)eQv@C_OBCFHA_15Bmjn{k{Sru0izSevZk0f)S}1{ZAzX+j zYl*G+O_7+WzXVW!384NGK>a0F{}%kq&_U3AbZA+>kIv{l(CVWShF% zU=JqYHx9q4P`XgXIT^6^ofS7zs`9p&;xQQR7SLJR&J;vV$-(K>?m}mLpp+u;z}mZ5 zawt$auy9+lJpNb6Q=n*s>e(rW6Is+@o{`)x(p-j8k`5*;2cp|ikPrZ3sH^& z6t+P10jad@QWF$EK($aKQ6U+y6C^amAZ;FTKDA;0@OV}=-8OG5A@PL_)F^D9^s`Y z@jXVp^*7?BDug|LbkY;zviXuX*k}Iu96xRkrt&qnL%o92G=rhJ+t{NbOojmnm<-lH zv8Q}zO!3KJESzxd&PR3y7Ur4*r^`I9>~0vCE#tvX#9&}2ZX38W$n*2>NhUj$;%hiN z<$;fIIQj^8F4I{KI>bv<6XK;R{HTqnknj@WLB1dJzE6_s6z$Jc_g6CeSjRio?;d}E z5+)$mF%&M`um1Ms-df>@z$X=^uoBm~@0c$5Q^%Ra|RkpA7XZ zq>B1hN*2Ao20U+FN$kUIuj7;6%d;H)F1Mes%OT6RZbe^0q4eKS)v$NYhpQmR-!IF* z5VwNNbmjQ3hi0KW(Jn&-!)-urggkm?FF$!{o0OZLB%%#v4=Gr8p+&p;5A^uYjq{v7 zXv2$>9Yq*gBs3zRyf5ZDNKGC{vVK8s!LF;P_0*1* zt0FR8eO)M1#*8z?y?>PH7Z1@`#EpIkevZnstFgZkBGzjqztX0e^*eiUgrNVNRUkNI#^Pbs-yn~OCpa-b+JgMlNQ7|Yw^U4S4 z)Eso27`KqOe97P2+TV}XAD#z|kZ#V?5Wq&FSI}!Rcb#!0DS(!!AFU#g*UhkkcTshh&9E4s^{v6R4l2Y1S}Yp1cN&9 z0kEmCTrh{=@o5q;*#Z)!l;$G>?xgMRL}gmmDQ;*6h= z2v!e?aDY%y70*J7HxevS3VwS;!G*hZ!E=&~Qr&nz%NNO$N6Qy7W%)wJB40+uijbL6 zR$WGv6a9Ejq1hIO4BmVhaYR^KT+^ktFa+1{E@VUZ71WhR=T7fl)LRE~3f0uN`Z|KY zvD}f^OLw$O9e;u;_QAE(KBvc4&_ry-t@J>KjON)uUcUM_x~9@q)OL=dt5MKeiIame z5*LGOtN5p~nttM849CM5j?ZfVA=t>{qqYng#!vmy-X6@S!r|5x_z+^|q9a^-8C2(4 zc$rq)GQhb!KoiN;F)*rNSiz`{pOC~@`zxtsJ-(@Ni^iuenve!8@QfF9qXr2vE3qi{ zH0ck+BJ%i!KQ4V*R0v(|X|r$8saoPwsej!p9k3ZW%$^F5uj%*g4*k19-zeC7PlXk% zBYkME&pqMEEdFrOhxYiFhQ$|^DEA}sRl{XJR}r+K+iep`C1&yEG}->cJ>@sXIf~B5 z{gw{ga~YQvfLnxS>h><`1HLY)-j2!6qHIVFdZwHP*b7bJs?FNtI#km#s4G7fYxq4$ z>ODNPT<7tR{^2PwEHvxO^a2KZ3I1IM|K%)PKzy0P)MG39-?kOR-)ap}faQkknPrlP zuF`xJFWFkdb-HA&JxR|bf&AR0?!|Mq?|RZ4c&YiQ3L$dcTqxIaQ|(}{opue_G;nWp zdu>|gRLgzVG7TBPg!`Xp)iv$|U|EG-W^K23`990g{mz`ewB!H>I{*cfSDzG~U^lBS zS@?aNw)BuLhbluV2uMg{3rr39VD_PC`6Hj4f|s zo5Y3SeGBA~yx^J17twsr zG-Q=cZ{Q@g_G|oy~b$=ZFMD__Ak)bg^HnBMvtGm&o7TP@nTEjml_F1;TIS2 zK_H=h3@@n5Siu7V)uh>=c0=d<(uf5K%vhIGGk29=`cS38FNe=E`Q?{?X&eUQ-Cxcx zS(CcXFJBM--||DIo*)GQ>?u{9Fxm|q_Gf%QvL1M^GX=b8-` zV|Pzy`laeI9r09Z=C1O~N3_2c{Ic~zlV9GXS0p#z;N4%&FDqtuonM|C_`lxmerqWCb*dP`UFb2lPQ{|dn2uwt1;3}Ri*R#IQVk1qdfkzQ`y9I z^>?}^Vt6tQ=4oggBHhT|M1w}(wl0K+*-U^u*C7HU^31WYl%4v6Tx#10{m=f=R6QIn zCFM`k#k>#)3NTgu(}8ObH<8K~|9dl|WDIZJ+_`s(=YJbn`dT4QR$FKayY+JoRx4hskj*hnF*+ z`>fY^zV*?b@N6#r%kf+_rAK&fH}UlN)}zD!6Yjyx8XABHPcI2uAAF-F`47t&(wYwm((L3p>T2v)DqoO12PUYv z?Z#mh8aWx^zJrr-fSUCXIajb?3kv^ugyE-yIJaDB^(aUQrpzLV8JC>SMdW;a3z9vQ zPoXC;B{@~4`Otv=isULPK8=rE$j#}xJ-HMwoUVJ4d01^%Bc}C9AYgGlRS;z)S6X&* zL7441B{|nQB0D+5If9FnjXV!I5B@akUnh8`#YqhaPqz-+@ze&|ao@7Yzfj9~esAJA z4Evor#nbs<2+waH=nT*H3$1u^zBW8J-ul<$nKP^Fc#g;p;W=7|?RaVr_#6LWJZC-4 zcrIOM@F(pLVmyoHd;E6ZeEa?omUknpd2>uSZ_Yt$R?Lu+6cTUF6A$w1%y#0Tn*vd| z`xd8z`>ozF+*eb>0qTU`?s`8YzmMy%9Uskan@?o0Pl!Hz z*Wk~=@9hE4_R0{RA0pf_p0(4hc!~^%_b=;j{_FAFG`Z_|rZt4{bnCDkPxiqF64rdj z{Hf)=X{~|h8*BG~=L`3Q@Vp7(j`93tniWs+{fFaOR`%E9`J7FCb|&vJ?}YG7&|y2C z+5y*3`j>0ugr?^k3_P!H*aM!k?hfI3Ji;C0Ibwn-`+#x&S$AsSa%Xgp;p?ka>e4Jw;TFliV$?q`YpKqxkq zPW@PH-*5UKX4gi|FUCAK zhCvBeA)wB`GsLtHiqK;i4Ok2uX${;A$ z>EfZx6by$t9R5%lQFe>{!{xP%2Uld6OcMKn4%_8d_tz7exPSTOVV2*M-Zu2%%(wR- zzZ35WL2)R;9qU8aWUKr}>#q;PhLpcren+2cliyD8EK3dP!%7{t4$lYSKM`2$L+USU}o{RvVElHDfP{b;t&VW0P*$zfT%CtUUJ{EnyML#wbrM_Hc9o zA7eaa*C$t;5z;3mI&9~EtxtA;%=+Y!2gLq=!{mSLaq4jVzL%w@AN$OjMj5}a&XJOI zHh%vYyEd$qEnD3qhta`jhcmP}-{->AXvihcYj#L>+-hioOk@hfg)$cLm)8vKK$pb_%8()Q#@~gmjdln+kO~Hv-ib^z<*t(w(r~@ zqMTO+5Bf4P4R&mBmR-=73P7vCy``Xut$%9P&uv&UK|5ryq7s{^%S)PLoZhoQnB4A| z*N08AFcEY6ND6wq;#)mXeyk%Hi)=^ljn@k=9K8>IoE0OeOk+4$Nx=*XdN(6TzP}?6 zLGh3|uO*;`1mB-Qs~p^FyPLAS1<`^};J@;=enmy)Z3h>f6?}=P+=sFhoys{my^m^Q zO$XbE-P+emY!nfjuH!yykNf5R*0_Tx?nsI&>*F)A0(Jf_Mx~iHwPHnQtkZj^M5yA@ zs}-qCVcB+f6^i}_S`|Plth2d}ZnS8QLd+^mvNWp)4+xd6Xe#FUt1-`Ci{&GYEyq(!Ja~`| zyj>GR*%lp%1g%H_e=25E;-_MEU#}dh?}w&fzG%TFUS2CEDvVYR5p(OAedqGnjqhIL zz!{>&MFu`TFsclyXXhMU>5vv04m! zF5}0i)Q?Z6k1dN(&H`urEv0xsFc;t83dYP<{CN0u-6-~WSVfkqxMpC6X(ql~s^sgJ zjfwbFzK6kdcIB`A9wwzqDR$4t}u|YkWR_+ki|QkV$m9W?=2wOnje;Zxawk zVSW2EF1`t_Ag|5#x#xMb%*-x5mfJGh_X?Fb+qacuz%c>~Td*C28O>M6QtHKLYV~Z0 z=i;$(w(oPVkZ7T-_}lOw{=2sLo>KbGn}(*|g% zoS{NhT#h{Tp38w}4R!>l;dwWoS$d@cJnDr@vQ7=`magt=AB=SX>2bxFx5eURD3RrRL5a{_>{Yp}gLY;5 zYSmmQh~VpZ#u~G9j_IG_$@X8ByT&^UZ|PitW!b)6w5b1wEl>&6H=CV$Knjc&GBu^@osWfoJ7~zmwFoQnJ zp1o??HTsNY&+hy9*z!Pjpaexl;kXy~<2VqX*MkgE2h31=2?SKMmdpGeYJ=sT{4P+K z>Uj-XkN!$qTv%^rmUk&$bx_`XE>MSij7RD6dPaS*Afmhnb9p^ptUddoD8W8q{Gm?3?Jh3$G?d#{5LHL|ILE7UgAJ3XMANVa>UlM zX8z%24Zn&YhtrfOwFhx*e+$VerrbmNt12yMh3%uR7OmL9W5)p?xRZ^4Q$g5w!uw4|1kvjX!Iv;2H&$7x86Z4y)i_24M< z2)>>Ai_`L@3|~YoS0SPvE|^h^KW+IAE0YmphD%z2>Z<-eoesL|X#H)Hv7@QH1g9eG zXV_mkz%I|FT*%OB0EPBDMzNRTRNCn6ky`|Lzbv(trL8l_MDpO!#PZtRghpl!l&vG% zIkuJ=e$#-3(5nPLVhe|5HYYNoRQ&2bTqMTs)2}PfKy2>zYMvzctC0pk#d=&9v4zY7>^Bllzrtqp3Ojn4q&)| zV|5^aEjTY}EJl#y(W+=&*@{I>g|Rg;ABG+lt&~4?vcn=GS$J%5%8MjKR_S;FnX&F) zvF^r!Xpogl=QAd1q5a`xkrdfX9JyZJx?h<@%bxxTOZqT%iTx24)25?+w(Hc%XTkT3 zm8sc&>?Ogza!*}zzw8*&jcp!ZOZMr-ZO)2M!9$C)0t+*8{0ozEyzS0KU*b)s|N8VC z|LjD#E|$k$zVaGJ<|@23Hm&Sbzn{d7Uc66`H1A^V;&bO>wk_KSjZ@;u!BBkTt+@`j zf8iORl#=89z9=20c`A0Q!?iNUx#(apUeU>*-#?tbdRP-57R1_b2k95=_-#4TvffnZ zM|oxWR+F1S6(cX~t;zBaw&+_ND~APh^WX!>^251;y=2%jjZGBAt#b#4T-z7)Mf*3NY@#jr;1ZkfhGOWQ|XeyO~j;?cMLHkU?)|EW`!>NrUQ0zc#|1(Kvj7v^} zbiO^Bk5An;>O5qsRvrQ(>V|2Mm@ANNI_NY*6F{NnK=krbKnThd{<0Am;{{?jBe6l~ zT_N-g2=O_r+&zsXN{3280qq?1&}6(AY?OSfx*g9^`Y(%6SjQjk+%>3Ud5Oo`ndO48 zN1b(o7SS+>7I!ut0igm%(P5}(fsmbJC5tvkd4EoeMmD0qjb2`Cl6n7?(6&Bo_|n6y zE~Y2GIP}`kUOfu|n|~vE{{EZ{_3hlAr>9L+`$VmPsl-@+$r%CE8(XXZ^T-T7J-J~# zIK@0Y87E)D2vq9oCy2XCYGKMXKvWxE3F}M?QgweciVOi9gs3~yTJDefk;GDGf*&v; zbYdX(2QXhS5g(X(^^qi7bc*f7IG_7_wU|%zbGNQ>x0AD_iuUjS{5Z=Oq!hc_UG6F{ zHcG=*XA??v3Y91c8AuPg?s#3I4aftVylSz@tI_Nsqm}6IENbYt*gu<8KR%U<8_4-y zm8CdgS(d1*@-cm#?I}m&3q0%P7jpl%^}-)UmMIi(;1G=30~> z%YPHxm+j7q>-k}p%TxY#YStTMSm3X;WdNRW{@aH|)3H}vdHm-^od0$l5b~ef#^=9z z{QIp5KOSxge?AZAzirj$zag@D{u@5FJe;M^zd9+)KN0<$aR!#Un7$qgI{->)Jd~To z%8Q>0Gi3tI6ups-IFaq=%vp4f@eF9(l2(gFaOwmop_C{ehS3MBsW1pHqU?_dowAjp zEo|@S&^He$c$e>qBvLK0WXPpxBXHv} zV8DaY+UcEf+~Eg!mr((E84oGM86&Tqrc1K|UN;AhbNS;JnrSR)@c7#382*G*##Pi8$YJnq9uXI+`4s6GgtW{0G?N zdli442KoNZJl}DmA>UQ_Nas5Ot^leX;e0Kn@7Gty_}tsl+5u(}v^h8J3R;{1FkjeA zVCFOki0^uKd@=Vhn!hKu!DI@J?aAt(s-^&tSOi<(lh13y1CJJbn7ZeQm#K-RCEJLW zDvnj@JK<5{BXkPHcwo-A3@G}aLt4NxUa;+_z7mX?)1VeVYdJ$lZ=nv!k7fV%l?9Z0 zF^(?;yRU2;85)J_RA%@3KAksNNNisiVtX<{^Aya-W^{QMaD8ziLV!+1fN?1VLp<^4LETf*-+{Nup!lM>NV#g8QQj`W=C`ycf zY++&nRSIJtNKo9KfhxpNMb~35k(YuoMd=>Dw+SIM4SaEY92-u5sKFbYS<*m1mQ`D5 zN-#f0%-{*|0dnycvV1UIPhb^4p=bZUxV<5ftCk_M&dBNg9#RR9y7<@OM{giGiuaPP zKpFVQ=f&POdLoAth_~^#B@{E;|4Ji2Vd4^Uc~2eAw^(`wSmU0z;@-t_wt6plXX!7v z8UNW!R!JpOzxUtUQNF4Q-)UYSKbRg!MbrX(G>e7+cKnT~%*9LRh(HGa@T`F+5a414 z5)Mx%LpzX4>G-5nxxV&5`SD=X!VeS=GA&-WD%Zc%p#?Z8I0UsPe8U>kIcZ3Q% zo=sF*ktEyyxS;Y}BhmNs5p__G&UzioS_j*J(UqF#5dhrtUG`a zqwnB20j^Sj^PWO4;{&AFG4V1LKPHmi+4R)G5hVTqRg~W`4e&w&i4J1<$FgZBbv81+o!U8 ze`>bJDig{YQ{_HJTYYsIus&=_vhKrL;YURu_UB1v zA9fN^sdqP%gB8ETqx9Q~ALI|e2F9r;Q*2x~KwX_XuHKy}A9n^%rLss_)rgz=p*WRX zJf4N~^La-W({VVJ!q3tPuFH0gYX&t>|SB)RguEuxBR~0=89JwdN zf$2G6wm&eBzWe^3oRaOklt$7LGf+wCl)KLk3~aod*k4J6VQ|D2CqfH1dwg70H{2?_ zzray7mm&e!If;Ja;kt0~G$4Yx2s-3#27-hP-oo_d11`a^we-eS*~mXjn&~H=)^X6% z6f9AR=V1);%Y&tEaHZ2b5F~^2A2CV|6475NScVV*>K`3LsC%h?fQclDI#Q1>u!z62 z8q3BccU`VCq&Bq1VjX2_EY@EZ{RWU~m`1`?Ct8#j_3rAdA>eY+!Kh#}qCrJbT^l8s zgkY@%T@XFE6IpqMqzm)pe*n#=@t>f)3kYLcl=wnbZlGaafW!BHPAeh|JRqg7Uu=`o zXXHgIvQv*pn5Fb?3A2>miZIrL#bRePOxd)xEqM^aDgp|tjEuR~ooX4}I+~eixcNaV zmBULsg8C2`^LoCJRK-fjj<-in{?$y=s*#fFQ8sI%Ui-=9|-vSqp!FVL$jHZXbr- zg)q%o(6MY5cSzUhX=PQEsJTYHRlt|HUkS`6}-7iUw+S zQnW-qqbm*#wZ$N7IWD_Z`q(_4Rl^RJdL=f70K zod10Y_aJ`~I7iVTpw2o_Yw6ISJ}^uMoVModGJmi@H+(Gf|286adp!~#tq>MPO)ob1 z|JMF~_$e77bZCF)KtMvqKSKXY`@8Wt8czl8Be~voCE4E;6#JX{5HS(GRS2SUp>7bJ zOD+9GvA>6-QwX=eiI~Oy-uKS|WPexTtx)vH6pqp z;zS&5NHJl5H{l1lhV1X;nPg_}!Ty$#iT(YLKL)`5=8E^w{-$0Cj)#98YtfZ)sHG|$ z#JZ9z>l%M>qraH$ADluO<6i<8&^4_w#xqWL||Q^ix%!W#f|$>~D=&H4F<_RE0>c z?e7T#88HUMCEVbuY$o#Y(d}C8qpo2n_v#p~E?(%=?f-7*(EkccnZCXJI|65h6f9^SeT zR1ze9p>l&?YWPRS^{ypN{C!3%jMiottuSujf2X?*eR*(6vcV=zdBAjAQ}&Y=+?2cW z`6D;wW(jjseupqlXc8l>MjL5d=|Em}$Vl7kZ%D3fQy6I}KeCZVK%v;ooFm*B2$HzL zUdu(0nG{EF+KjXe7-_jM(h9m@q;+6^pO@4%^Lwnj2j(|b2D)qWaEtC@^Luq1o8Men zv>LZ1o8L_mOhTO-B-oMp{Ro-g&)~mqTc5gA+166A^?4jhW#HZ&jd~lT%{sqton*J3 z^UH$(_4-ui9_E;8grnFwJ+v<`7Rt<{QzgtidX6Q>Go$9%Mf;L-`O$ppAws@WQYK-((*nHk1lSQ6a-AX#3G9+1$#lbX z?im-+8B7^5xXY8wAoiGIABHO@AJg-5q8Vzp6Is6|%d3!y5W4vcd{BS?bpQyLc!;Lc zI|11lM~1}*79#>W;!+{NKR&}&TSPB?+H<;uV!}GRkAGIp!4IuJxu-V!^wH(G)q?F1 zoHbg{Dg-rhw4`DZft*_l@R^StB3$lZX4p6YqE zJb7UNN8F{g4$_Kkw2emac%00&;`jpns| zxDP0$gy^p6M_e$}t_UXK?IH=<`hZ%zRmGFI6&U#|5DxCk%K+KCO<9MPlFJ20k(83l zj8>qmQM9wHMdOa(NE8jZFJ>}uQR2xmZHRa3pq-llz%E0;|GqvIrQUSLf-)OJo+hb+uK>OoeERlhKuVM8mD&< zeX5y!US?8m-q>uu{ zhUui`cZN+TP1svcC%sAt1qOX~Fag3#i)R5UOdl1JOyYMQ(v!|A#Si@f#6|QIh~2s$ zgSZ$^Jg>xq;CddNazt-?QM_I#k9C?b34#MiJXb9ujB&#T{dm80RwR==2X2UK8EWlc zuzxKP_hULMV(}Tf=CDxWqoSX%mQ^nzc?iT>zOZ!2hK7;}-z2KGy;szYGZGd72K)|0 zkrnmI`THc2%m%_A6TaLGGT}>wlwOfr&ekiQhq7VDtO~I(pCwWxn)-t^tcr*);a(ys zfr!RAE1sp0KakIK1F1-ld_A0@H%Xq-<;f*aDe~lyCxzrFp$K1P9DQ>wN#rO?TKT6^ zSc`=SnuJ&iO;(K`I6kNjHjP&CVKgB+?ShaHortb#jrVdC0E_(?HLWIs@1TyD-(#YA zHJLTU7^)o(oAOlzZd@^TWj;>Yw|o^v!nVeTm~{eF4z==Po^Iqa(KUso^bOVnkqbGt zU+#}~o)apxv>NABiJYLrxNd%~TRCgy{>8^3K4Gq=N*;{Ap3)=;E%c{=epdNz=(=QN zjD^c;EJi`J*UWnxVgfV|YEJKu#(PpXSYb_@7+V_1zzxt>b?58k(%~MI*mPgKF9bEs zs$2R+;d?EhMI)H?_g<{|y=bVx>zhNoUJU{*-#~km5;j~nWz0c#Kf@m3qyXM zgUDs1TONX)@hRK-)DYliYEU?LG7NzdKTngq?S`MH6(zMSBZ3m!a$A@Z^Th&JOhfB_ zui_78u0dBMn!4;rdeaqMb`+mnF88I-9Jx)GQS(2u5*t;A|4!0^#Xx>fAuI%u-;4qz z5aG?pMNlL+BLhJZTcDz^QF7&{Vh?I7VG$oiQn6!}xmhGtgpPog77!EU>2NC+BVz0s2Q%l+k8nW1>T_XtoOaA zsuFN=h!{e2y<|1V!{SwJBUXQV32Pd$NG=J65oAWr7D`e}$w<^o9Qg7fN`#};^nGGA ztlP|ySqdKY$P5DDnMibRRb3l z-xr0+q_p-REmilA_jm#`U6>}}a=b!ipsV#Bdv$*lPL`#ZFNf98OX`X}KJ%pyF`+-j z>EeV^bB=4oo}64v8RTO$Ds;Krz~c33*eD9~oeCY$ z0-;*OCgTrd1WqUQL+^wqb=hnuNY&#E2{kMOSL}GH1*w$Odg|;p^dOjfDqBr_fX;?4 zjKLCEe`OnD!K5Q=L%sMlneN!1W7RvDtmQhkOy-o&ix;3fu`s!vZ-A+26Wz#H%+^0aT5^@!Xmb=qRE@O!tAMt=aG`sF3Y1Q{( z(fLF*Xypd9auYl$=(hFwM6^s=^hpc!8Fp4+ON2V^Wrz|2zB+Xl?JzWMslxIq41=&% zdZ&71G?`d*h!GWvFEWelPx%zMB(r120%czQcnQ){cbr7YL=ASoeh2oVe&3LCmHJ&W zHhTTuJfr9JD@WR1*YC7Dy4!wdn(epn->eEr1BTQgHEiAw&=65tbN%VjY8zo6bZ6+-5-jO z*DqxIpR2+vtdx~qvse_!Di=PvR(gLrcYYYq!y3T;*;yIb1eHX)6c)umi@W_dV6*ED zvVV5?P1sAyTSfUK0FsZ_b`GN62>WM0gYmYQ6fza5k$fvg$}fOFgq9fac?>U z^in+7f-x48AhL@#KuXWKs0t*C&cKl2jfG(usXU#_k-<_#v9uTMr%kau>-;6-HRuY6 zusR$WXZc#Q{7(CpT4%-WR8rbjdp6{q`@J0hP1sq>>wD)qLw=~1%WysqMq}C12|5?i z*$BMF))ih_8l^35V_0x`DNw~-$1SmR$u2@$&`UKTL=HPYd53(j&||i*4Ta^-)gPc2 z=+RTqF)Wi{Dolwa*dPKc_N8Kd5P!jzXrJ4IN2(_x<&N_e=le=7M1NL=!C#WP;F}mQ zLh-WgZaR%_JH?_kxPi)M1hL2&V;4%Q_UZ>#!Xzn$pGnWfBwI7$(?nF3?^}aMykFy_ zESzFgbR%*k=JC)8MsK2u^jF%lH>88lTcZ7O6VM?~weO#KXa{id>$8hI{{7d4?~g0t z&r`A4d6&6AZi2CYrT`zYf5y*!x7hin!vRI7@~ATq2hN3Ngwt>;vbPq2;4nasjsfdT z<)k~?b@HfC@kqW`7(l^Bz_D<2si+GJud$T_zt}hIEd?Pyzi9yi(Q7}D?hD*g{kL~s zfBxK2{qb>+^=AS+_olu-B^R!0)P!#MOp)bLf`~Id7d@jV$r+#FV#O(^gTN8Fnlw(> z+ERDg_p~n@{(|NN3|9}=&thw-_vsz>GgBPeiTygByS|^9`I+|~^XW~FqM_RJ=odTG z&&y=g<-ZMLy&HbOk$rq)u5UE1j;_?iKWAOmhRaIVS6LeD_Gn zp8BsP``h|2Itd~P$DF9QZz0p8PCa-gby2)t9pyo=l?)>DknB$LKXi}zAJSp|=jr_4 zJE`aSKeAwt^#{9~SW&xKNf4%gd$J;YXiJ-*I|76=*OET&?2ti!OmhRTdT3@9lWTC9OYc$v`L5999u zZkWGw3@z5cwf3}Fqd+g#NQD;8fO!s=Tj)kNZJGzmDBpV4+MEM91_mIM9T+rMQ$^QB zxn>7AmiqD_HXr2zdMpINVVtfU{N{xpW)(93b*BKEMUEwdh;UaL@T9Ame_{Z*g{jAG zjg?wtuAs3jc3-Bw0*?0685c9q9n*1~b3LB&n{coY+IV83+VbW|l>KZPe*=?Qi44K9 ztdEgM66^;im`k@rg9*l@J}0#8}N= zg0YRe7QIp{esK^5dMLV;9v8D}y9XP<7t&^lR_J`_e%l$X+J^y8^ug9z&-nu)qVH6$ zPBjc@$GWWEuH46>bPZNVO5=b~pR z7R`q7<}p5*1sv<~U6`E8EfRc?7&>t4BIXI4wdSGY;v96`5lmyX`JDvl2&eZFBIEBz z#qf-3a#qmcaJXhUd(^MkUIQP<6BpBQc;n;N^i6bl+A-)xJYNy*x}t;ea9DYgI%{M+ zlS(8~boAyIDkIZDuPU}dbb}6lzko`B%*_(~U6+8aakm0-7nP8KsHafiEC4YOK;WFO zv+FP?76PJ`f#9>335X*odK4fAnFOz=5GoNE=zK?dAu{zqi%uc5lJS(+7n+ST;G!svgNq@ys)?`eZm+1t1Gx|kAJeu(_Sz3OZ$fz&U@Ar9pnj|59sG+s0WVP zjUf>+9D2KEw9R(z;@MWib$aD>I1%nG{F5UuX9jPazuR(UUT9@%p16>>7*6j!1Q@C4 zDu!Q*GDlKH!$${a|1(;&8z_c7!RLGi&2Wl zj&&{{cg)1IP8)aJ#Nw0rA(tLp^c&hZaCMs0u> zC(E}9xctjfyBVSVSK*bkd8|3NL|o-S#XX6uk4SsJB=MqQFUb;gR(hCt!A+*c zE5#JAC3#xBh)0+?&xUAm88mb5R6A!7bDkYiRyak4_+yv4^C@OcCwf29PgQ3SYZeW( zvL!mit)khreh)j@r$DrP`KZ|95-TYGkGOAvkE*!--vGg&gu79LvAz~bHBrQ%Vgsn` zLN?sRU5H2!l}D_K)T&V3ReS)!WFhN%mA0U^7EOJ$*!oC)V6;XPu>{oC_{Mj9)ZR5% zBPs?J^8bF%+`D@>31r*f@BjJb^U20KBU!uoXRkN|M>m4-6sjn-9t|m>M;ALuu z292NLe#-C6?pNICs^?7H>IJ&^BvHbWV_(8X=rikK-S7JRuW>js3OcOQF)T0!a zR?92#pEv+NY|mdkt@@)wrh!?wo&Ym5+}8HKPbmyBxt>k_Ej~ozx|GdY^l_vM8UmJd z6r6Cfs_o(Ds{V7<7TO*bcm8%&oLqdUaBd!_aF#q4aWe;u1 zo{@Z%96udN-l?mvXeHP*B(FZFH#KCP(d9 zKJg>21IQEN*Wn7{nyvv6oPEaNA)N*fNk(3vB5@-!ngHe@U?gq9;&!cOC8-N4mExD> zN!|t8WzGIE@8Gd6|ClXfUcuFWW18i~h#(4qrf+5;mP@#yH;7x1XY<0|Dy_J-uua;P zPdXuF2}7C@@|Cu%woru4_>G0D5x{qEZ{xRkjogh}rfv9L;d%tbpDMf`AMmk}a1up0 zJsns69~2sj{R@wx2C;I%dkdH=W)*PPCK#Jmq7~gJ6@|Yv7@MWj-wagYuUMeHQC@{x zZx(7r>e^qJ;4LnzyQ3QMXgCjAYh-NY3ix6-De;S&I9>27;($T(#!%K#0qQ1-Tea)g za5y!B)8Y^PGos7E-p6gme3z1&$s%M3vDYz^QMdhZco!CEoJdh{340AUR(B1+ohvAj zb;7>+m@T4;6k@TmT{3*P%EoRiVK=rjJz#kC*o}pq^Z-owbR8Yae$!(&RpY};jHO@Y zVGGsgXn-n$!Rl8i1<%g%LgOX4(3p#D7`C8AVa85S0vPWvu<_ank9Ug31}EOYShF`y z?AwIwOWRt@b)sO!XE< z<;q6I_ckNOxyreQDP>N5kgk4LIkFwYRgUb__p!IB;41MsMNV6>M|3j3wtcZRQ^1QB$0x)xFkxS%6&6?GiGbv zm^DSoCO0s@n%q7+ljLDs0=A#LD@~;B_>Zt~$T4qy4Td0i zR|S**lSe?`fejJ!t2c*cb%+fxf8)RjAW;A^+6xK;f>p0no?| zd;@o3H%wdiOWto_Rm!6q7h_cjQwQuX4@JIg=G*)h^X2c{3B3~TcrzQ}r(VS)O#`ce z-umkv@MOQ5@P1r)rpsK?BfoQsOwErq+bo?+%{XwmUvvCnC{FQcD~5njWh{EN>SG6j zVxEA|mee?W_oy0+8e*Jd@wZ5%#^N`0^*a_{Vk(ZsQFPct!l8P>Lr&p%o)1M(WH zd~B;DTT18B1{|HT`U#LKdJ&|hbE!}ZH4S`_B72#XB-Huh@oHFfVpt>uGsTEx;A}T{ zJz{f%{gKDHO!*OcfGktGGU5iWC~lzD%A{adKgAIezhaTX+wMiue%A}tOq7YjrN{V= zPf2nYxxF*RT~fjpbuEbo{OpNMbeUx-Fr1RTP#g9G-AC;rnb#F z{2cRNm74$LqDAxGzoxM%~+n|@E?YH4Jb?Qzv?4mAF-RGZj>~~FwqN$C{J09+-0A|pQkTQ z9%zu9ukUqXvV>EMbL|wlS2V2?4p&{O_eRW`_ul`tn)fb;Olb90$FV|A(fJ61oPG{I z&JJ?QC-HH5{Dd9*WQCWfOCwzmr4-QLV%ViROpB6ts!{tMUHvMcxl$D_$hB`@TyO=$ z(-`2@j^dXfyR-Ox2~L>CJi7WVzLcrRggLPKDxNp|?RmgWo1A1GO52hYO>6-nCn+G@ z1wo=0KNbO@;41bK)vR2`sD4ULufF+-(qs09!}F8uK|gAJXMC(7cDbXXe(;9j66;a-Uc z7@nrp2;Z-oVT0t@i{fPh_>i{=xiqO+ zUNQ)Rdrd2JZ8HmX%8~mwyUFxQtxov$(d>jsF%+Pds-rJndzjbawUPZ(+|kXIbqsVIZLY#B_Lx_K`4HaJ2c_w2i9D z2V)m`H#r_Lw{gv>*IZrT3SVilRZ;^W9f=yLg`VhVdOG&sq`r7|` zw+*R85l=l;vT%oldkex9KuWk!K66VkIPS}!Hswo%5Alg&Kcr3GEsFjBPQvXn?>i+q zN%fF$ZPAq7s@49OBvgc-J}@QX_lYKe2d*NqI2#nR(lv+^*`S)ZN{UGy!84HYYBDgl_}u4B=ea-8T$KhnJAX zhK=cl0^+0&I0S)1%`y(s&$Ai0Zi&Q+wHtbB2{!#o$eHf-u*0WeUvpVOD7Gsw;%|Bj zF2#jrc!5^cyj@$|jM^^l1d3{L)&Tqf;lHSC;}Htpxmof1t*fa z5(mIxw`;s|J>HjTusX`De}5OI9_jLQd;>Mz10v^X8w}ZCf;RV8&9#_4rE|2}{Xj@C zL7p&Uk?XHVp!_HJBdZpX1WytQum$njyM6)cNj zb(E*>)8SK3G3!EH)y^?R7qMu&lqn4W6JvJZrsyjC^5v2BoG)i=qbc!@@Ub8&cC4+^ zy5XRiF7umBP-(>t_A<0mS25@#2I0y8!2L>FXj=aUOPc(NUhAwLjqUI<~4c%glk-&=Qs64jE z>o(E#i2MoR}P|Z={daYf+iL$Ep!Bo@RY;qOBP%gNYQQxoZH<6mJ%< zqWb9b004EEwxRAl1Xs80(l)$Y{awiuCGcsJp0D0HEKGu`**PLISC3az1>;_P$({s?VSAIAH+p!0r2=h!_ z=1$cK<)aI0EUiQ4lQ|v{cAY%)_wNDCy|XI z47w++SXTA8uv&;0r}mLk%bS8difE~FVwWUZq@38HugOk9Z^?CRLktw%EWyvny)`AU?pTKN=% z~avl=p8$FbJrXC661`d@}R&OpP`G*sf~{E;lcIyKVj zQl06|Ap-I$D9&28dJDwcT3v@w{w135Vw6btPcp{*;GbuxyS|=e$D3{NV!z@y?_m$( z(a-HDN%#q>o-t0fD-(Cmk^5-(E z-T$C|$vJhT8*}PS&kTcHxd`ovUv@&7wy4h*?QtG9 z9h4C=ee7pt+P~FJltEmP5&ibBjoj%tLEiCla+Sip=M~%90Rv_szUs#301gWUj@ls4 zE58~r>L@4#jMbbx%%Ka_y6YR}h_B-8r^jy=s#aEaG#2RI0@LDrt>zHMLbqOo_pfCE zUrTJkEFPKyW&y3Z#j>Y7YcY$%Ft37BT=$M}ibLVNP&wUjP8BCO+_1V>b8- z1^(Y}3-%s>e^oh&eWN&`T)5<-MVJ39yztVF06_gA9n@(ysBCNQdMgR)ZRI4WXT%9m zC7wm+hc66Yff;SIqgjZWjkma4SK1s9Vq!aDAtu7;dZ#(hbYu2d;>LO|hT!UF8qk2y zJHHQ)_V}uY;miJM7tW8@be*rQqI?CMxBF53li*hK?G4RV>r!d}cGFVTKQUGP0#*H1 zZ^_J`U3#GdSpu?=r8_YV%U+anBTFetmQrY!!VLwKl9g(XPq(s>&>UBL0#{rSx$tr{ zhsRL@f!HO`o!G_&(c`xgeXL+sQ5i}qEj8zZ{9tTdx(^MYZe{KHwC9Qz3R8OQ1@nkm zF4rmDxQ=5*t7KC5Ney9WR%AS6Y07}hfsU`S5Cxgj&pKDy|KlTqbz%lNF@l#)X;W8*5_n{=MMZZ9OsfFy+yItB%yQTJgnAYEklz&R4 zaNLRJ3S9rDzo=EuSb^i~nOT{&>ZLqP1N0*1y`QifRoW-wp?MA9$c z%tlzb2LVM4$X$Fw7t{>XN)S+rfYx#^T8ioQEUe;kSDYx(6$qF;APdn|R`f!g=`?a@ zjF#xdh+cwdBlp8m3=r$31!{yzDd!w7!IZHOd>cLpj;*X$e)fG9%3j$32mg?!5g!(~ zvKbEkA#5`~EG4_63dag!E8A4?R(yzT_RM(_+^&L6d?fYKb0nCe+NPCV_$4edZlacb z^SKi1md5IYoWYYSKDh}K9l2$T>d4#K{#IWaYdQWYVJ+b* z4ES$fPqM;ym6NQnMVzkw*$P^>j?IBT)EnpZtTCrNYS78RdEp&3a4eKDIWiwi9rZYB zcLuEVeV$;fwy+wZ(6e0tJ`}{vw>W56VemkknVk)W$B5Z*-)tqSVC(7N5eWp)UCI=Y zqG@&qb6(Omh#N{&+d+Z`@#Vij2uAKh`1l%!Fbqc#z3(55cE%A``0XY}^J0NxA&XVr z%)%;UzXd#r?h10CDjSOrY%GxC9?P9V#=EbDjAxL-;r9xMdj*I6EF4~ZmpIfsx6ncW z&jSg#ul^h>h~|C(K&tNS&&AS~J^FLSw#@`$cd4R3 zBTy1F&hQ3fYYLkY8#MAS5tNioY|yZR5xrhTUt>j+9U=AMmX}N_hz1}9fxOO?;9%hr zxZin$bqs>AErK2^ktAq@CMlVaEJ|koA_|nO3@7sdl(_wV?mDE#U7 z6os=1to}>UH_EC)uPp>2O|z&soxU%#LQ9cisO7d%#28ajB$fx5^*P3hkpviw#YgFI z*eBcG>P6o$Tpr@nHux?a1f5dzDYi;!v$mlHq;S=CG|2gbR_IxqyW81RUNGK&3w@v{ zxCclv2v?UrCa%q9AE#Hk8*Gz-B2KyIMb2t4oA8>K}v~Z9g)9BM(!1}u*XtB zxQbEG@l0mMrnpJJffn4IE>EMeppN8}NX$n#O1#Ql!QR}f$q|0&!ZGi;cq(27E= z4j>XIJF>mti2Mx;fQ)vOJ&A~2iX;KU=as#4w8uXInQm|* z*{Y&_vyuIf70MR-7;c}~vFovy_1LrKH9~_m&*`vh%r=0CuaT6K=zxfB<2THKUn$%P zn*7<3J_k~jY>=}7XsQ4L>aN6HNQ;o8Bt+!E)sEbcU_jW-`5r;@`Z^o*Esn^C5oxsx zd0%3rBi&_=bT`7CsC1NYh9mMLM&9X&JjoF`n~{e&A`fyzp2f%$9DVj3re+)Q{TV4o zGA%-X&k=bxYjvyxY_lVB5pxc6M2>XO-cM4b0J;XrARSurV&>rq6uX%gIRM@Xcj5-5 zM#33Pc$g#M(~g9%Fku1-Z79W#$n)Utm}19hj+nnQ+g!i|{Bz(|v?S+H?BwmQrCO#4 zNvvMWVHGZQVAJSG_hX_u*b#ZVBl0LlI#FGKCbiq1tUobPA#^!P>p0%VqZ--lRBPb2 z@IWKF68}^!G)!tBoLoi&W_mrb`PHM7jq;QOMq3JojF8_u8gJXHsj_wfb*n6j5gpgr z2(>yA6%f_4?3f1}G5e*O3|d%M$EkLrI!B^gn7zP`xy%uBZ>n?(9o8s+ZmZ(+`bIm? zk&c>8Ox29SSI6^7fwpgXYeO4r+f&|p-wNe?6t>)s`AE%|V2|8CK$2e~3Ff1<`1l%a zd20^ZK26?Qv5ixFntV_cGy)z@>-C5MgdzfhS7v*|3Qo=XD_>@`n)Sz8?!}zRF|+2* zM*!W>G3Is&&Y1iu5>V_p(TYTca{p>YqCz75)D~8wbaH5sY;9rE%PwPxEmeL@!teP#^swPj`!!Pdfh_cwjxBAlY9$-S7rIsZpKD(FV1f!O%Z?{(5AlT!H31h$_>!) zzio1V3C0Lxq!wI8@~>Kt4d#vs7Uv<;y8HK=2h}|=i!Bp+!0)6^M6O%N8{F}6kM*6y zo_?_a?*Z>#3!cY8QeHq z7I@Vxt3&craDwMmBrP+%yM5JN`)I3p*}^1a=-&t^5Zf7eHBnXD}dg!(Q- z|6N6Y7kKrvvbvdt#~|+j?RpMKK>8t--%fC>uX^Wz%P%Q2^zVD;9>v_3Pe;!0dgnY& za-M*kJA3CGEjjZoboE!i@YY>dcsz4laV3r=ZVp1kEP`2{Y5pqT)#2ulgl#~14w4O^ zO;wFt3k<0;_n=MKaT@Td>^@DPd&eu{mhjKu#+sAiL8#f{f0w8^Og3F*DW!WL+(^c7 zb@MXC33Dz|C&wlo@kuAGcWcpazCYTv-lIj={cyA^v3XEYGEpD*7sa!m=|GurER~_$ zIlE)J%RK5(UPAP&a1m4kM{?5nhbVcd7&7ut1VUg$o#ys?ty4Tsb&%W-R7F-^l{(rK zYTxAlmKwIlYcIonzAoP8!op4S-Or|zHMVQeSo1FHVmvU1M|Qyuo6Wn9gd$aNGSReE zyu!DPYo2$ zeO_L_hx(u!mEyPyxZ!6doY@;oin1@JKy_YVBDd!V;bjy+hmQpyAFKz{6w zIcH+uSH?S~v2p&byb((Ar})q|z57{tG#yr2m;7G6*TGYf9MQx8SCF@SG|+m(AbE^2 z(Q>aE5B9M}2S2e7WqQ>4#kpH~(IRX~aidjd7=dFi1VWM?H?Dk3>#(ou@xDX%CSGi^ z4Q*r3%NBk1fM+8I;WC97n`*R$lARsVG1v>^X01|d63GG2!u*KX_rXA7^?wMo#8>A0PF=fKN#SR6)R z<`L;qM;lPD4d5$JQrNdTfpwj950wA$NLNPz?D=tju?V!&+!pgKWNgjTbtHiBI0fvc zdU$NJyT3kzNpabomcXM;diIoK(1K>T1YoP6i>~P^4j)$2H6k*Zn^owh z32b0f|I0VsPjZK}<52VdKY!ERQK-jb)zYDe{q19jT?n6J>}{&&t+Np`P;;6qd|m)o z#spx<%{#=$;o<}v#nbzs zFDHKo(L_w*HRcbv*3_8hF&COJH^n`>47}v-Z@Puz?1j3>uW9+ED;=G6aF6nB)-2yX z_=}7=>}BTP_9UqF+~0C2hB~XS_6&>+M)ko%$nnLMIQ5Hs+)llx@lwL^QoY185O0BU zyds;qA97ejh6tq2k9v3`8%$iU7z)s80>dd-Ocn@>9EAE~g8$MHmG}i8xrr}xvCb0VBOCg=ygBydlEgXEttHY z8Hw%tnVS*G`-x@t(Q5q^ev_tqTqmdMkywMYtnZ%3FBi>yj^9oY`-&EB((h>qn`ZQZ z)DTYm(Hg=OJ~{r)H#xx5hOlW41VR|Xoic>yIfw8GGK4itUg~H3KJ~kP#_#P&5U5$^ zaj^?h;}iLTHFObqCB%ziC(~x%duLKy?u7llNdx z?33&HwECx)-)Ro%Q9g%d@~>}xXhvb=20dq|w&8j|y0tgyV4EO(3WjMrCQ56Vjr%72`OU3hW3TG*gD4*y;^g9-a+IM`q78|NfpyiVU?G;l z)=N_qF0|T@Pz#*N13tl@e>6Lg^`dUf;n78_e%#uah$Pkotxlw`ymx1}y10{^1ScCK z2+%f6nFuwgN3Cci;%##dBH~jjxP7ne1FY~em7%g%hGSL4OxegwD>M%=!T43)U>pbO zc^O(->{s{fgu0ApDfx24Kk2J!ogEzaFD+WiiOy;Ub!|tgLsFK~*8Qezl1EcbVw{Hy z1U{QR=5uM41*=2GNuy-Dr&pU?jv|w7!b8F5App0T9zVTT9j90^6}@7PLrgG!((yQv zeSA*uN)AJGs**1HYW_AmFz$0)QEXSzala`vIO;tcFGp(XY4--yPgGy(j#DH1%7>|8 z!D~{j{@Ln9u7{8$%e=|pi(KpBRy#D`b-w`-shtuZ4)Q@)ig z`n1~XnX9HND>4zQ*($t(fs5d*Q*3!W<7QMdLEP`vWAZ!~N~kjbj#n-^0yz31hCT6U zJ=0hR(pFqSjhTO|mEJa8$5rB+dpsB+psoj~F*`OzSrfpJmpaS`P$6FKwBk87iTzqo zFaDACzKl8haVVYB)=O#ey7er8?*ZT!lP3=K*jj~o_88SI^1@K+{kXLJX4i(j!pHMa zpWfdGXt@dwBAe7AIbMYyrNOUmk|vPnp(@Ou5787`l5Ey`AT7P!Rx57g^G`wu7(Lb- zNtw~pQ4M|5(`oVlo}N~*8~;;!S~_UY^fcxd{}DZ%08o1CCiEwsZA~Mp*{D?yqUy08 zPitQ@=dr!^w@pu9{;7{n&xD@VKe|`=pr>2<0{!37(;@q0N>5{M=#!pc!C0Ekp2%+$ zd%_!p*>67}wB!YE(iLy|BjU5n?RBK3dboAo5;iR-2n{;6^&tP|h2pLd&09n5-B@l> z#i|$<*hd%mhIRIt@5X>>K~|1Hk(U)23q}Q70RL>T!YT)|TBzlPmH=1<_NPHk9#y9-RqP;obh^GJ<<2@dLbWT3U;J0&GuQdgi;YE2ARvzrkbh#9`RGbsF<6RKZ}%IU{1e%WrRL2jf(FP0NA`$7kWOV0=DHGd zz@^f^5RCm>(Ye^O3tO?P#yvHJ5Y zB>}4r?P}QTcm)CL<|lt(Z{mPvtP)aY_D>ztN+0rdI={JX@9=@!%5><1dO+{ppHBRx z>1Lum(T=>p-kR&u=+l|Ldg(+y$zg;F%=a;#L`G(7i%`~=JkIw_XX3R0Q$xQpxop2U z;oIv8^MQxZl+M3B!K=*$JRFPe2j1LF;SIvsFmqAA@NzSSSDO!bNAwG?>A?)^dmxUI znJ?kw?cUq((oEq!rvcvbe&HRKF+AdTe82Gi4jIeYy?yN$#Yit@KLWfDpmE!KeV1km z?*d$OW!~H`yyG&3SB66?=EQ#Cy$8WBqxwFIhgZ!na2$B=^))hu_X)?_o&CZ)HB)$B zb9_wi7vAT8&al4He%(9!tM9r@;a!ji{2uBTUMN#|YY1%@p1R2Laxqe&OZ*NAQm57hcnS8MfbZ*e^0)`nJFNUYaSqdkzM? z<^94tEK_)2liwfTFTB4)^2&%_o+Cf~U`K!TU79JpM~UCf{lYsgV|Y0CYEJAI-g|${ zu)Z^4OKyJgO@H+@GKF^mZV)%`>=)jtnZld7AK*>z7vAR(#4_sNFvoBA*ZtLZU8e9( zqCE6azwknt!n=p_$NYZb?YcL^`qpLxp4KnC2Qr0MNdElHSN*l$+)UwpLi`r>3okcQ zc(vsBNAwG?>7ESRuMGEanJ;bcufCUN3hxuP-|~Lp9hND)d$3<<9^Ws#zu(=nzSh!` z_rJ9!?d!~sTc%@4mwOthkZbcdzEl-gi&HF^dg^DefS^5{2m96O1=vgP9`I`v{P(jI z{3|ntKQuG=BNhC47X0BE!@vKojPT#sEbTLTABF#h&P>}Um>K-@75vMr_Meq8{B6I_ z2>*c!{?px5ZfrMqe32>sH)aO^?q{TZc7rPt{w*29AC(#W$qN4Am=y^Bqvmos}{CZFgjZ|3C%*X-GXn|G2A>I znZci|;NO9VHiiB(hX3NajN0epzY6~I1}XS&bY$8-mt+RNM!|m{vlj8cGGq8dGlM@; z!GF+#KRjdj_x~=V_SyKPqJK!?#DBwQnYK?bGx+B#_;>75{CQT!@VDV*7N-EbhxvD) zf`1xJ5QP2{nc{zAX7KNRLeY-}|CWs5kID@GWCee;)xRfa4FAR7X4F0(Hwyj_TI2T( zGt>6DBs2Im3jX1Ek3i@@WB5ZegFjNiKh5IL!!w3||8FvCpN)@8``Gi>hJR(+KEcf3 zpReFgv-)>d#_+e@mJ$8~75vM-v*e#oGsXYL%;4X>LE7hz?-l%8GKN1YGx(D&_&8Zd z`Z+mc_%Gg?QTu%SnBc$LqMtYZnQ8l6k{SFO1^?gH{Cj1_@P}pwf24wc)3>U9hGz`_ z{#!C?pN)@7`;4~alMSC_+CIU|;GeJH-_fP;pOrEEZEG{af1rZDd#8fGOiE$0K^LCoW%QPOU-5<8oIp%eDVH3EO7bCbj zPQq<%<`WMClh|Aw`8d}@|9#@0hoerslK@dW%>n?xCSjNPYl-WGAjpfbXhVm1**_K} zxWc84PM3Kx5{kSi$O8W?em(kSb7uolm`{uE$Ub`fumiBW&UX2b;py%2ngp>q zXijeJhssv&p6d5I$$=;CjOjk}`kveO&{X+e z^Nc>q&&sI$cOKef`MuinKBPr^dhGVxh|O)b=Pwza-k!A*^q;h6P=HS_u;|5OK5%yL zHa#v0HdA`}{=q%g&vBjrMwp>!^O9Mx#0(!3h`ovX3PbtTqTj+UftB81h4QOKKeR&m1Q^rut3_Y1LL046ezoXh68iWmcC(;IhZem9 z!4`VFpi^S#(4w^#7!n78^Q%QKvqGP-LiyFAv#ro(E0kX?I>`!cu|oOPqNA+PXRT0v zwJ09J?M9n=*rpyc=b-PUt!bo%&?<)FJOeI=V-N5#BXnyuGP0NXg^86``y|4Jiul9{ z2%-)VBnW=B=%WZUHE4bKu*DzYVSBDd6f4KC7X2kc0r)m}2$)~mZcP@Tc-@yk>k&wx z{A$tp1o|XYB?LOd0=gbi1j?@#Jq4j1uy}t(i;jU4w}g6OWH>-u^K3xg_{BZ>KActd z<+S1OYR#7e^qS5A`VhP?JdhblXkJ#|YreXyTN!be)ngX8wqL73QZp={Qe<^^RF254)WeT~rf zxqRBBW{k-1-80AS z$S`BrAZD}Da_&N`f`ncihTP-rSd9`PK}}w+2|g)!%RjE%kKc7G*pxsF`hTgArF@@{UF&#jx~bLUo-)`NIcIdOULDy*c?r?i$| zm4n*E9%pUvd#hcLaXFl(+>$7gsrr1yDod%Ym( z(@xPCte6?OFm<%Vd0ohh_IR;|;njB~IQAJoX`je`aO8}il)P8M zhS&3aM{wNpk!$6+%c}ug6m4AX4jEN$ykO`b^SRjPcfa7(*0hGtKHV64{OQJlqtuZO zGYo|b1e8gWaiU}N^hx9K6B#R>3VJFcMbqPDqjRQBz)$4RfN|;Usqq6xpB^7N+8l?h zf!OB|Tnub}T zeB$^i6C-85czMNyDHV|k45}PIr7|*xu9@Sf%#0iz!ZE|(geiIi=bO*MOxHRa=R>^^ z;%1w_5=i0Ofa4CFkg#SJYZ;QnuSfspUZ3jU5pehD-_vgB*}ur|oSz=B^6z1OdQd>- zK824D@3bqTxw_UdKgsf>$a?k&2bn7n4fTxaypJz;jk;JGJjs;NCc}H(_UM# zQYwEi?kfmRm{bsf=qwKi#%I88Jm5B$LJx!H_29|zB7H)6QDnHbVKASJJ!pMacwdC( zAT%eOn*_W*D}q}yrX#~Fk5%w}m{^nT=fu~%88N{03M}6i;zg8&7Omx|Lg!%OC*K&q zlE0CVZrr?{O`v$HIYVVW8KNs$!GZ}Z`QaE@3ELmsea~N4_y`oRKOpfPuJJ4R3vtGl z9ncadWp#X$#E$2E9Zxk_ck!hRt38~Qv<;IkEHk{j{5Us=E2Bz$@&=J#o3t4rEf6Pi z*3EED$Ca_6tj)gec5TCex~xsU3kN2S2m7~uqZ1<>zM{kd^tlIUc}#jjVvr;9sKgFT z+jhpI6Q;v=c;apPkkLKWt+{7_X=Z780r1u{JOK3L#9tkW4@f-V@ExDH)8WfY{1QIB zX1q(Q-G?rWx!B9*Tv(uC)s@(R)eXdyNfS>Q5I!szpE@@f3pHu(NnVs&Vb6Jxm8LFm z;^IE%crEX2{GS25h*VZtoo`}t(#rFB5nKTa^CmrZ#@ssJg$v4JfdvVc59Eg>cB53g z-uomv>2rg{xu@cc1MXl)O?^3lP=Lh8CSFD~99m+tatuv8q42_Jk)4FVD7rcWTkECf9&5$34*6k+^O zia>rD#e_J?XoTv`rI4yI%fUYvi}1-+n7=!K5Xx@QPl(|uwC%v@Bc~V-Al=gR#mheCniyM|KE(FQZXBFqOibMDGDvlTV zCwo(m9gh3=b2gPl-9Gs zxsINl!MyQG$lz$}yX5)N<{ik%jUEyxMPmbnA5c?E&kG*2LQWswh!e_Y~q zP?p_>KT5PZd`BeswzeJTN&MO2D^9F)_zp|lOrPC!V-nTyg0IKOkqSE^W${T_W$~$l z%3`4d%5csDTmVOoCgD2+*QApiClx{R1!+zypaiUKnBna}3YDrZEADrf#VZep`LfDl zXABC)0yy94b32$p0furBh#y7zO6$&GKe!>?k>^83^H~pa&fTb_JPsyv*mZbOBL}W0 z#oK)?Uv)~;&nW$`lc|fPlalM0DS7cmj#+`>e0D1xgDLdqWn}YO4l;r6Iu8RpQ3#DNX*J|HKc;Z8jz3Q$(TJ1~pzM{Nt zt+tuojmmq7R{Ixvc_1B$alhzY^xmtynpXR3dT&wQ0a|S>y{nYh6TZ4*IWip=xf<_r zX5oKdyg<7dFVMD}+6_HU$9zN{6`t8~4!#4!!HyaD?jJ7en2PT~;Zr&$;d@NvlvF3R z!Tc6s2Zuc!N8wu#F6cNM-$TRhj^X%@4CizV!}r(-=7p^B?1W@qsH$;Kz}wK!c=eiR z@o(Qz@YE6Cr#DUV z+~aW#FhtzXWneow&5CW+=o_v0DN#LZ#gEDZCGr?C=C|>f-XIk~LuOueV?JoOtPnFD z9$lk8kPj#!hR6E%HIk7Rs7Nh(ADSGO^+1Mb3l_I)HFu&Mz7}5mvfRAScY^(6-tmul z#Xn}tm{;)JF(|MDd4edURF6Y{sJZd-Mi45;*_s;5JzmsP&;!hRck8s?SFcMCp$V(GCuKYhJG!*+6E^!XV zmSN80HJ7t6*G=;T@ph3`bfZ)he$1k?bo!fFo4jci3$!=Ns~}+E;sEIDC9r&PS=}Ag zaH8QnXswa4l`G(j-9*aYw2}h@f-zJqs&BO-)z_Ft+4YWTbYmz!8cY09f!MGB_XCSJ zYS%AD66t2#Xc35QHQl>^fG`R&5RGtDv@~w$mQe_MgN#FSTb)pRqdaoM&Zw4nD0C%$ z4*IY7cZF0DX>JgV=EhZ^nmb%rp}DVPM?Y2QW*n%|CExoCmE!H5!gd16D_@MZsM7Lg zRcLwhAg?Whkand<%e&02sMu|Eh&#GYOapB}q|1QCoqU5}4?9_;@B?COr5i9nWnh9P>LtM%>1r9EBxj6DGIos0W8oyD zhqI{T>i?T^_dZ62m>pwO=(*<@6+#BVrp9Oy+U!{87*+QquxHg^nJq_Tea)= z=VGuCS_b@~f$=PQP1kU(mZG_yy7eAUf=8PfWZWpj5K{~8;Wp==ysNwBDG7nh#6^J~ zuT>jGv062}&{?z5NgTISWOBSNk?-%+Mihps8h&LMs>Rqd(TefxfmS>R7dqn-o5hX5 z+?BWH`Wn^X-)X*m7xsUR?61Sr%3-^RrQ*dR9beI& zVGhGXOI8G~?O9fBjTVx1sXfKeqtnxd66u*uPrKz2>Sr72=-VZHZpvj0XYte zdS)Q|f_t@cWB6EuC9fQM4=XEl#f!<}o0-U-4~o{P5{v8(K@V7cA-#hBAp(ohs+cs` zTSW{nVs8~OZQeXEoLOKv)4*`R;lXg0bGdIkRmc@{@5WpAduhBEuTYIgY}k04@s+16 z?8cJ_G@frc8;^TyU;~)N!7Nz4^+=Bbg)hkP&*OfHnzIou^ZODwz*NXe^2$q96X%r| zsfN!h$NHGE1ZT=&iRU5wfJ;tZ2rl_x#IbcR@{P5BBm|Js)5-N2P$s<;jPXW7UKWgd zE!y$zqE_p|n`kD0XBc2NaW>sppW{ge)BMMY8mcsR{SJS9Ru~9!H5+P%vZW18iFs!l z<{eW5vMFQThz@s7h0gp~I z@;9R1P#JWZ*DKhMD1VoEIsNfSJJQ_AFxW=SXK~}8hQl=*aaI+r$Q#3A)6kN*bdirI z#+DVKVaks|B{&R``#iR6p+F0n@Sj2df$;Mx2sW(jko36!helmR);r0_bC`|QyHnJy zU)HwD>K^u2*8WTW=NCz>y3G4CN^q$yr9qn+G>zD=(qYo0RQG#iIc4SjnKh> z_4qeqx2~EU9S?2QV+I)!rj+c+S&PusND4k50@0|OsBry@Dg@Y8dVP&R1@yHO zZ`5iY=L(K(T$-<2+kRiW1u`p*s8C6+Eo2pndql zv10XA;s9jbZ;HFnR%~MrB)dj?{C-(AVQ@VqGiE3bdFxB_M>iz%bwS`?oz?!KV>4tQ$S-xuux61c-g{GwG z*>S{Ex-B^YIeJZcimfP{eUx;p@u2qn>k#7@4V*>QXo$9>EMePgJK>6FU$yBnD2xa4 zJ)OfQz}<1&rYJ2j@TNrmvG8LMbOjB6gE{Q}3J^N)2cIicu0^T3(Bs*mS1-jUcN#wN z{Mq=e`EFnscM?}N=&`lzD(qs*(1;nFvy$L*3z^Z7B&PS3=@5Cd^AMCw05)U@mgXx# zVN0$Z{;sU>Xs8?fIrs?`;HR?aD{c9#68uc_;Kwn8Ov_O(b4|$oz7D#}TAWt^Dh3-H zA3+Rtvk^ERHzX0fR{H@H;8q@NB7DT6AaySaxmgqoh~9;0e2s_IckQzRFG?i~CV^5! z%_2(EfZTG-GS+++mvYU}DqPev1A`W`v^|bFPjej4#+O4}$G3t7r`2)MT!NnGC46UX zV}oU`j2rDh!2EnAhm66lH9w?V=!De3fhe!nj_K}jW28mCTL23#q-A@Uk0EWc-BtG8 z#hMkwkrx(rh zgqjzi3G0y`U%5*P`P=lElDKQGEkHk&v!9I9J?I%GG$U*F1)c{4y+XrRM)g*Vh~KyBCc3KK4QQ#jmud zK5*3iE7tvl&5`#5S#N|U%xa6guK#=^rPu)=AQ=;ucrS zI!+trN*srZSobfBy*cNfo-&10Q&&B2M*qZH^vJ`&rz~9{A68zS+F$6EUj|G=jWVTG zcbYOwdVTklzq&~Z3qy~fM&U)h0Hq;fxBs5t0gMUcO%K4>gVI@%4Dxdb*ll3szcUw& zdB>@|8|--Cuwxh$VhX4*V9;zheNX8;6?FnUf&9 z_}62%3i61*K{uAJ?>K3}>gJCJ`>H?9@-=^&?aO)JpYt`wzNf4Xi=1wl1V@SjKY!i2 z3ZIhMWj^lq?KH2<+YQ^!=5S>IriWzMcxUwb2eVO%pQUty$z(<52jfd!{`f@|zM3Bn zziMePerXr9_VZ_AqvWbeNb)eSh!kkiYgh$d4tB<4`??ae=LHn(i=k57FLV2`oXdh_ z&Z;ZPWv=z)cdNgdb<~aQTNZFZ02Lu#keW)jQQ3*7>zZ-Z*|obWTpeEB$UO()=G^nn zaCP7U@$7pf2iRh(f3wwKZ8-p@oz;xy*$Qgkmm)MDX1Wh~wEfc71I|uytPA3m*x^juv3Xk}Qogj|lxfX#`0!BjMpX3xR5hK)<)X(|yl z;*&fOD`2Ut2%;c3u31~zt~~B(@lnkI7@Xmu2bXpeccLMZ1ma7*Fph7-#_wOB!^W?U zCQ@7aX99^ptXcNhxz`+sE%9Q_xfviJ$A>&2+@t5$9-mu+p9@bwpD#VhAIFu8RIcy) zCj*n67+cCEEABsDS}5;!?X{Rd!()OG3vPYh#^L8W3G^!hgU{rlxB@t>!^QKd~GpQ`+4vT1~wq&OPWVuEI~j zQ$B}X0B7+0lWOAG7k>@un4^N$3*Zbh;16bf6;$h;W0pb&jzzF8g;7}SE#7@SWEtj0 zr9nZEzXYSe{F_gN;S$q@^r(}lJha-kQ7)*ZVXs=1@*H_xH|8(X4gAOa9$>NN*GHr6 z!3T}(-<(h825nAj@>NiPC9X(GX4?u8S^T2aX*ZXQJsK7e+55K8j2IDWz}__hyqly> zMhcG7fG4)dUhB0yOczSS(^}4z61)~o#h{upvWo(O%gzzumUn9AyS_q;8o6(6=h7n7j+IN9S@?srlexp+4i0c5dJm{{qMguQl^8{R zXrIb+I)1N=A6O}Kz_}z+i#}8D0a%=~vfk#z>n%?F@OZ^FJr-hV@=LG$p%QcKwbm&f zD}&>GBwN}+Pg&)m`q@3wtND8tR@O^|vhFXe2HtvWl!A>#uGQDLE4An@u*2$W@($CY zU%>^lv;Awh@%{#~)pQkTwKx?DN4^$)4bhN2Cmn#FsUsI?9oXLe0^+mU<{e8Fx)yy% zC7ODo9sX?_t!tyS8_;X6nT#Yi!dY|8>2O^SSM@d1LHU;p($4vUH% zejNhIvyv#P_`ZOvCpc>rgFRF8$CGz=C%!_merrqn0k%fZ+TO=DSGB!^?I^Wf1DC4p z4UA6KR;K_n;wP*vmU?cOjKiRZQ#;Z@s+Fazy*aaBP^v<;ZD>0n;m4X_ zQD`A37)!~t6``#`#aKTA0Q;>KH;enK)vKf+RjbV;3aQo8aH(2xd#OjQZvO{2H668z zhpHekHmKTtjtq|4L6ruM;!XDNzg<#GNB{-ueV9<%y4x|K)? zzg$bFqn9W8(95}`J1`zZkq^l#L{`WgH9XX69apf|=IVTdEYG9$$YZV0tJw65ahjo; zVeWOSC2C#;I>O6U80O=0PsdC>Zm{97ZBZxb)Gn{6@1yG_3$^$Dg@m>Q&{V2*w<&0t z<7Z*La{tx(GfbTYZXQC?p`&pl-K$tH=T6q@=$uiXB zB-W&mh#!cCSBOu`!8SzVT0lkzwzDoqe#7ThFKeq)y&Q(ZBO`)GixW=ArI}E~aTBqy zu%^#&F-vG5=FPyoZI45$1G7MC1#2zTu8K@|B_82Am47|t5$FBX7JgH;2t6%t=&z%$?mB#;;uQU)HogZz(gJHA{NHk!lkQs?v+_x--hV)OIL9vfU~>lfS< zzb`2;Ide7)NzR;@N0-3IKiv?gECA&lXD|-ZZO$C7;EWuQwz&pM4LGx>JSiXx*xw< zkzmI&P|8QN;Pb%ekL~ug{2MktcvtKTH&PNi#FeO&L<>Hz@(Du4(F*$93ZcB{9Qc3) ze+?oL^Ebpok0i2W0$E#)5H#Oyz!7a;fxU5GVkD!GCmb84g@ym<0!554@(5?an z&Ag~7flYX^kSPVfyeMWhq`cRS4*~_vyeKAgRJlln39@<7QS>E|Erk!HL#*neIy`BZ zM*|3n89^qBt!qYsdQH<3Gy&A7pV5c&dia<>x_(!8Ym`lk)ro6NH;!BT$8^(F>=T?x z0$H=|`S({$j4sT`@z5hN<4y#|qQAqhbki8LLab>L8>Zz8Y;rc0!-={`%jXHPpn^gr zMXCexq9m5M6da2RtrV%w$cqZexTP~dD1ON z2>>Adq8_Al{-McOC9r=tLdxodqRZ+Y^D&uf6m&9Eo2Tt2`;W4n(CpH^#nE<>kvqDT zfyL2I_`tH+uX@aI0kF2gkfRbC)_#e=vUqemKe6aNh{IYx%Cj7aA4pM#;i9k+vk0s5 zaf_UOy@HDo8%xR^sTzWBu!gHupoitUwWzItHIq z>oUr0z^!6vX;uX>(%|b5RK4*aZ*}WIU`pxjUV)Yl#+#T9_^|KL{8emz!w`6FH*+sn z*#8mTB&Qi7jf$GHRs2tjIicaw+_F zC%c8#z^97@5rcF9e1teQ7+wZ$SWA)u0dQP62!LY)ikRqnG`(63b_~R}A#^8{8_-b# zq)35;y#wtYfDLI22}ySFR{UlO>R&0>G0h9fSKH-SN#CdptC;Oz6)j4T% z>|t1JTO-nKNawoOattbS8@yW@kCMl7N=^I?in`wV@Ra@tD=2H#EWOW#`u^x`7H+N8 z2Oq1}>b%w_b*Lcqo>IF0H3`q6%Thy09qGB1jMGED(52o<`Jx%@iZV~owxo$?|M^o< z4?zN&9T|#SI&>p@HG(=up`BL20mViYKIn<6pb>or08G7uUEyE2!(WvZxddA9*_JZt zy^A?*eQCafZ)n`^@PYB{>lApL&or_Z67FS$WZAbJu_fP?pnel&ovz9%>`~UcpQXwQ zkA}#PrG-(AELgj!B~YK5l*GYUXE`vNY+>fJFdOH43;lXrU|N?zqMxk`Ie=L2p*73skD`+i0o^xX~@e_&B@eF9}Ce zjm@~JboIVY;vw|1^}@1{GI3Rx_P=MrJggkvSZ@4Z}EUddQq8jDXk#iG}b$f4&7pR+;f@?MAI! zh$Gc#RBZ+I`LU%zJ+^keWQ&#}AQ)fl4n=WO3r~;faWC51-wd@fSRa_f+?H3({%T)W&C<4%}>ao}Ai=udPQM zIH6X%01QY`IL1na`TdV`U5Oc7kM|ro*4VR%WHQlWV|;hF)UqmtLs@)oP+RdP3g89} zHsec>Hh@EY@ks?BXS6zSBc;LMi718#1>#fPWwAMhp!PDD!^2?H!-Z7|B2^({!I{vM zsI{U%o=d^7R$Iu}82D#Bkx*~&4aqu=ZWdskI&u`<95v?a7jitx?G5JNmZ5^gWA1Fs zB*ahIC?rJR6tBctPPMP*wg&$vg&6$Sy=h~6G>tlQFs-2DPz*R)a)6*y90y%tmJ521 z5hWYT^IgCay!rMcQy88o7|LjpC+jhfN)9h*E6SFFluH==(~Yqu?{IrTT@o=);=@Nm zv5260CWsGh)4QL=AeCZa%vXN|%okznZWVxcL0-`=LjI## zDSV(FUksYuY2I`Jnh}VvlH}L`+&st9>;^ zo_x_16nZxCi|tH2ftb~O?H55;Y|ZzI2ueqc5>1PqhF+RJ-f<|M7YHQt6C3k)=POOh zf03V^W-i(N- zKlHPX?S+L3M^JDaE?$rV!iQtL16*3=dBYNo$mv^F4i5qPMH zb{nP6SW^{i0#F;XTm@2sNuU`?HTOQ6d%9b5 zpXI^2s(~TJYQY5^o&v=)vk*+*nIh{d2KpK);hFDgvaVu0Rgm&oTf&dnmCCxx%giDn zijo_dVSvT3xa<#LIII?gq`|qvyQW2-kbV1nKwk4~&hz1Y#%xKPNIal`QRq}Ny|I=) z^ZQ*nshYhefc}e`4eC|1fv6c~EmgB955IsG+E5~w@ZvMt#kaOp>KC0&U!E*Fp)sfu z-`Z+P5?v@hY(~c=nXDY*k_JvULhF#gqL3vjE$%%V43{f0fPSls@>CP&30fG%y|Du< zVu!XOc33&j7M~&56{!j+?2u9=QHy6Aov6+XhTKLaSFe%2u^RcOKS|$MC-MxoSzVbT z^JNx6xe#Gvs|c!-_!q0jQZ1;6!Ew|@)fDv+WXa3TC3A$Q5E=6l&GhK~DYW9NMMqG#@#4I_yF_a0*uj zoo-Y%`x=GJ5&6lbr~?#OfFbr6pHXSpL@)JJ{NUYHI6cZ)1*Z%t91v&(PRIns&oU@} zkjlOq%u@Ssk16pk*qBb9!@ug}u*se_5?vUJ7O-BeQ4c;)ETOthMGR5niO84g!_xau z*g%pg2#av=4^)LngFkGV?BEa74x3H;IY$vk3dGqGRH#TfJ#ZE%C;BhRA5>4kT-;zM zm=|5q-JN)k#;49&N>xR~#v|+Nx?r3J{JQYci!)mQnUv0W=S%Lr`KLOjxnHo^_P{ zPBdAw0%cY6#Yv88=CGP??E7C;GjYNm_V+m7DtpqTZYXXj`afHVGol+3((h}3aL@TY z|84%7CJs(l7(7gdsrkn2)ChfExdp?g;id$ThG8G_WRLn;U47jz(96Bby4X?HJV#kG zdX<%u7t`Tu8)R_TMK41wa5lfBcOlu1LUx|jvl8hw>bE}CO)SV2=IIq_mOu7_sO)P* zw6e|{F`;9(kR(lsBxn(!oH>GF)R(vO3L8W!!>HJBtY4zdAk)nx(^wOkgjPF&GK5iA zC1H)~BLmqi9iV}Eafh>>b|YJ!!%5Jk_1HW+lxcCCE*OtAU{Qr5N$MIwbt=hCux>mi z46UznnsAmVXBV7a<;;PzLOH1+mXc`^i(MOpV%kw?MjPmBjn?DCK?LV|I9V?}uFy8} zA20s;(6$M7W7y+)x;x>wnf1_>#R_CO>GIC6c$Y-aKs>E$7y;08D-i4#w}TW^BBv4j&NDqrU<1 zc#uyKPw+q?9X8-zyh)?zLmOS+FOpSevYnQIA%*7GRP0~nNs4DBiR#?w3tQZ?m zhtAv5ECcHfkUE6V(R)}0VnS&xFCx;G%^#{HlSABSCJK-=vdv*LIn-A?$HAu-^h%;I za=qvav*Scqm5vq_-;)J^WKLzkVb~C3Ct&hqWmU9?(Z?bhcN+DvzO<~PJ+?N$qUalD zszsQ`QFx#0yPo-Lq-ffp8u_8o=#98Rl*}Q+)RD$CfEnOZ)5JzmEQ>Dl>lum(Isv8l zt8MLV*GG{f=Il^|`RUGGI4(i*ln1sQHQRH3Fl08RD}1oM+Lr1-*kZ8xNM3G|;%nr> zd2FmCC%``VaZmivJOb#3vv$b})mf`d+Pk_*h8t8{>BVFG-9`krcl80+sSoJce}=J| z`JOCQHpu@eJ~CQDGkOzGYOxL1|E@jE?q&U~x8FOV=XzVMwe|FwjpWs9tqm6EMR>{# zM);qR|CjNgZ6oA0SI@Gu>UZfGEI|CG@#30)2vT8b^kNC5N*k62@k?CH*5gOYT`hI z%4%XiI7}1yxSIH};J?#+lyEQ*tbMS9u%TG9v>`ikIS_9IvnOZ9RN9P%VzqL@I!sB~ zJbRm`rU=v-QaRI_-{6E7^6E89y;#6UF-(vhYXn>j?B-R+q7sMn>LE02(Bkt1{&8uN zZr}t2&P}G49~YiSRp2C%A*t!qU3GHsvD+J?(|5vVpRJ7uBoGhDU=+^(?efo5|N;^(wMn?Hg7!Ji>a(|NC8gpL5Th z0P*$v`}xQ@cb`41z1G@mt-bczd#BQi>1}sK!xsEfz>m$@+c@nE9P~$ z1fYW4#o!CYesPg>cul92tzj2HO|lVS+3z4nzu+87P~*4usb9epFg_#p=i76UK-wn< zhWdQxK&@|R@Q0nPOhNR&l|NTuvlZtSapUpkjEa;$)>LTGX3k$6)^!Uo7AAwpx!!;< zdz1|N_YvqX1U4}`Xg1v*eAV8)^`wCI?k&M9{6kCSQAZYtC6ykbW$qW_)2eg-A5*M4 zT{ZW}_f@P6KC%WpU~XmrIxdIa)|@|n>{a=eOiF>-Otr>;ZCN-RnL_R|d=}w!Azsu8 zCurgHGO9Jk8SU0oBy+fpB~x0?%tBNHXHUl&;9%WdbGFn;XEStGdX0e~{Y2Ow8pbc_ zu9-lm>JZ^fEi6p@eER5ujWwS5Gn zw6bTZvh5k63<;;wQ*WSFW|GG;9GRnwp` z)F_X-WmJQHqPQgI27W8c2UkXcE!sLReHPcOwGkv#UHN#3`{w)=3L*9S119EZhwf-Wig*`(D z8u`%9y$1d2M(Sey>QtG*M?|$muJ48WYwXzo9VqKjiJEs@q)R3|o+_ezAV3_e&B^+B z*N`_V%sj?@76=$Gw*tnsLhvW*J){p2fqvYgQKm5IyyE(>iStfL94pPGxb!Rw$Zz%f zr^1mx-A#EgsOr~#Wuvh@G8riuuGAdlC`@(@$GUsf%jIJJlyLyJdjl!|gmtT~-5+zx zqtK8^O?m}-92xAnK1kb~O!}SN44JVWjCAn9)JT|Xy@s;f-s{At*&lFj339Zm>``Wy zqqHpdtLf8#@ZH|U*lF)#RB9d0$)=j+R)TPJ^{mgwr;=5B8DIaz#XacrzyXo^yr=m7 zyZ76M_DA*9e#$ntf6AC`X#WX#JG-@K0w8V}1$wlnemiO#+8@*ri(VtlLeK{2MeScn0^<5BEpZHVFR$c7B zaM*m<0Jofy2^JHjlD7Ti_Jlyv{(H%IL!eD=`d%1kYin*omP9pSOA5l)d2BBHs?C%K zhzrLr{)336h{trK8Nbv%m~5K4V~0#+6HBMT`&Ni7*a9S$1?1s;{4_HvsKs)Y_vr;? zzkc|%;}XH>I;S+@+Zvn($qpGq^KJ8@y-KfM7j{P|i_Uo)N3e3fL@bKHy^w1eQJw7v172AFnEAxd?I zfy}@~>8&1Q_`;(B@rd~Ds@Z>Dm4eg zVDEkH8vw#p{S*G;wi51Mz^M}Xf#t+`en99wH85aQ-njNFFEi&S6pU-FI1h_t7S{4# zq< zf(KcCBc33V;zK(Tz;>PZg<7ec;bNhwxkdSpA)o#d?BsS_GtO*oXhs2*bb`$dHvJ<8 z7h06j#lwKytUYXa1vluVN_pU;;Y!S?e7s~t?+^Y7ZH?X#+=9n8)s72#aQkT(w_0Pq zd$7O>(m&q>U_cMPU=~xoci6D`+dEZDZI3 zM}oq^z`@&$&8cI5!3qHf@j77}0H46?0~4_0h;kIPU1`vMg(v2uJIoAf+~}m_l^Xt39%sypk}<_%HUH*!Ql(@431MVCnmAx&vJloJLd<06G8#&AUMxTCE`j8ufL$FBeyZJbboOqr53bcw6-#8 ziJR8oK7gYDHm(VbKL=Ncz<8vpF2sn#q#Ac?Vp^Tsu_m!>7Ct~3HJ1-S%Hj6vG>)bw zc_3~ULaM=O5^?NH6Tg}Ri@1Mh7nO1Zt&euFg-p!@N#5OAF#hD5-nT&7GUnn0JZ~30 z0k1^GC>K7z=DD{bIUXLX-4_vaYTj3kdmdQQ-X?DCTbFZ?fkvupHnkLJRO-2fL}Nu` z2bRPIjZF}G>w!ji2%Tue_9lbI3vgc>@LJKXhJ8=<%lo$rmI@B?aQ2VyHPnuMx>Di6 zpi9gO#bw5&9IR~jM1oE^l~LY)(bs?4_?acwidp5#IfMyR%GY& z*Kv<`#QwIpK6_mD{FYIvXbIRcPAkiit$84=jH(l%MaZJ2=g@D@SM9eKsjmI@+ESGh z^5Co`+s5+S|H6rluL3h)@opoRRW}HerAC&MF!ijj~f=5Rg1`kfhI_)NubtR6L@uU`MLq%a3cs@2~gjs>y((s#Z0 zXTdSX^3cdB$ih@WFmv5%dQU5|K>KWH%vLdP4Hir{ zq~&_{&@>7}q^k9+lL3%knewk9KD4ucFtcl7aK5zQ@HF00_n=}1|0+U)pcQ7vQ39=a z>xoZA2HeKdv`@le z2pDm8D)y|PTXw`VdZ&YiGIiu`rl>BnX1G`YF31Lw8{{>uO}lT4@hhhZ8(0(6$D70g z$p+4fwfht6va(#5>(TPej%ws_Z#CRz9ef;r(AQQ}!1)0&fL-97c=+o$`S8ighQIE= z^8ONXgM%pP#imKs;Y*nX9;CW;Dy$!Icp^hFUOhUs1h2H#;Ek@7%A4^68;n^aHWa^( zhfl&Qtb?V8>+E!e57(7sz=+C#F_kf=(3NpEy7*ugD;!=g4G)(fY~)QqBBpLaJ)h~= z)zYzA-7j(C`s<|0fbJuE2a|z>hd{Eqamx!maiiB?M=>s|Id-rJnNbD49|~SFLjvk~ zbQbM3aI|%gZ6*#g%fxvsnKN5N6NF-E8>kAO8I#dq=gnp#e!7I2h*oYr&L+%2jN)KcW`{`u^PI$FSmfSl{(KVjbvSGm2r)h5*3^ z*nMPg8HRe!15XP{&J>*6BeD_0_p)PVFtwc@9gNV9%OkoMOCiwn2LW_f2y|EV2Q>8z z_#G3l5qT{VAdef-3YM*8SRkfB|MH-___kR85)Q}NBl?#c-zW(&+6pktW@3EJ!SFDP zd3tGYxGeP9T{29q$Ahy=du~IQ7AB)hM=P5eICa?3rG43@pWrYFU!QcuS4G+Dz*YnL zqIK`Chics`3nTU{W^uRWt0c748KI>$fbfMHzImu<^Y9wCVZH@w6$3uCK3}_iBPw#9 zUl+E&&a$VYxVCG2S{#UC#fwGbtNZ?rZ2KSecjF2FqyDg;w}RWTNwLwYGp=WJ06 zGcBD%RM3zP^DoG)bMBBmU989Su_zVGp4KsVqGrq_17?pn2aO3G!fz{5C?WX|{qvxI zt?Kv-5@D{Cc_sLcD25oMnSsbNhbfCNY1@>&0-7?``pmFHPn7an{NfRgW)F^h?pW?vHE$ zEWo)7XSc(fXv$YGmme$2RlIZe1U+yFFoqHP!3nX=y6W{z7wV*!3;*?jt3~$=VG<0g zq(c!uk5>;y4P)=%dbCCl1M=bDT$fvf1_%ykmmc-s&kkUhu?3)_5nBP8u<(7&d12Ak zyL|;^&tOMx$j4C$`955%QI2V0QL6Ufk_MO|;V=K8W~C0$QxSGt{q+F&z2MpXWuEJj zt;ycNghzJ7ZRtD%1`TUM)imG-&R~O2mX%@fG+V|R@8pA;y%b~iDmN^{+(IPM?w zIN#i(X>%Qe`n6-W1!WP~O}@8dH^@3bv_P^mA#r`*0T}iN3^-9ox8HV0zOMq2@XKpa zfg|#}Fo_fWc=|Rx{=oQZs#dWM=MLg*uV3Fzu?b6@;f@tMnmMMwCT9JHWv1*;ma%p# zHKN5BHAm>r?&|w>zewMtz-Gq-T0wPDzDUH7OMmwO*<01bi9BZC>EhH~jFl9&UL3c6 zL%BZ#zW-5wi7YKWlTc}xD^GxRDkt%Goy@yt)^k+a4jXZ4+cLCnJ*!+-lTDW9YXCFI zfTXJ5aS}L0h^HerTPrIsBxw;ODZ`huLOw9tc_T+FQ&~ON%BuQfdhc7sno;Xg_11B} zAh39863z#K184NBZD)7`bI{mK92(4#!|BVVa6H*%%rf3b>b55(V2Yr^?&U~X^rRrbp`WLNW;{&oHekFVOUYZCs_S8Ny7BL8kFbqO-{XwMvUGpNQ?AAF8(nIkP zU4$yA(=wzq{Ege{FS~x;w))HdM0{(vW33l(d;Ng1*iHb#=rP&aFHKSsizi@)@IvMIn6gB|8v(*DdV9bJC=!m80KKgIv5e`$+|1Q%rdOkc5 z(eO3EEC}3ajEq9skTGq%Orz)$tmz>RSiVsD~pC)C$e( znPK^7L-oW`O56KiODw-dhB+)MeCB?*+oBBdDGX%%vp}-*-h+U2UihtRZzsPkj+wto z4s8mX2T7*{dNl~JLO5wiwM@3zH+24coV|YfVlf(FL^=L>1IBia@N5pDW)EoeU3LgP zo5ZB{Y__tT_G}WLZ~`^UL%e+uG#Pq#zU`O_9tPV0GNK4=qUjd9X{jEviyu_ZndGo~ z)@U_G|0Yp~7PKUh6OzM4S;)WnDy#ReV$Y0!^DQh~N&v|#cv1K7rTv?{j)4Q~Li`5P zHA{Z+Zvxa{&==%Y}PpUu_uD5Verb{aF)mPrkJ1g zrUjj%5B$)!F8~lWll2fmDK^qCMM0baRigemCka^5p^jJViH=L?EiR7EZGxZOFIZ?h z(;G0>qjN*YZFErS8~~ft18#(t@UlMos0e!g1hEJp#;OOeCHfVnybiy%0&eXc9mtgd zherk+9${krL-p|<*0{1Z%`vi&o#VesAR=3UNc!MQSrqi}mtOJJ-dWj~kG=>cERglN z6(CvDAgrl552b)?(GE-m*Dgj2#y#7>SM4*f`<-@J64$&7O3dLyN54t;tnRnHfg=lj zE@$`kwvPGw6++M+5#p*Hj#+1LXZ#Vpr}s-9@*ARcheYZxYqvH`ZcBp+8APHyzPpwv za&Mi{fD!s3M)@WHr7lKMK;KOK!KcJW)yq~rPJ7Pm7I(DYz|8)-B~nIC`b;PrLyxIB z%toE@5yez)2`c8eKr{02)v#qpGjTtNWu*1702oqN*{C6;u3AC*ETr%s$kiYZ%qoAF zOL-#v+)=~S#8S!=@^ikgIIrrt4M^>WvpxM2hNhF3aAWf>Y+G1Sy^D8* zy)9b9LsWpzR<(6G2b*Tp6?0nEQ^?Wr5<;_t8m^iG`tdjew=8I!V&e3cMd+DJ*q9vl zk`9cC{f6u`Hr?Jp(w2VoZO|+Vr2OXxxg_YAANk02>#(SVUoG~Hl-H5-je>H`z5UQ& zXtEL7Ul5t!^goTbkkdp!vhvU*#W80z{I3K*DCMgt5^5C+wdN>srO|B} zl5vjkDXIf=bR~|RnM+=R(N=``SVb6(u+ZY;hMkBnMslVdn;^0y%gBx|H&S+F zL3VJ}9I^ukn-+L*hNYY2Fg-0-^*>T@pqHZo!+aw+Fe58~5Sv*9PimOp*q6=urE7?o zK?ohIf;aIwM1W}D0tfN9r$l3xtDkqo=!Kir6e&G!yQNK6S!UZ|ti=`pkWFy~z!r5e zAkYGU93XCR9irgI_+QvX<~HO1TRr~23mg9(@y9==e<5S3phUA@e>6w-%aTdF!@d%I z=g42KHV!8$H3oeU*`|=;*LIKmM*We<0TMfEh?+s+q% zkWDka649y_JxRLds;Y|C#Im@t<<9e+6glxm@$9U@W|Tl3-YcpkI<@DlP9 ze{N>gLeR*+_0nS-A)e6aO$9=-3_@CfkW}^INrI4#9l0%f^tOVZA)2s~630h&A8WUK zHi6S%LljKJ$-5c;lRdmQc)GW$*@LkGtAJ}p;`w%C*nyx0Ef~Z||47Y{aXd%2O6-MN z&72AQtbn#!gBFG<=63HlU9#LwcZA5r2FOL|S!9opi_4Hv^Dz;j71`dE(rXkH~JzY64Pdi#UkzxH5$kN zbjWmGdl7_*wHKioxnYyH$fK^6j~HHrM((2^H?ET?f8;_F+O@(E^~4#ZYkf14t!8NN z6Cfl=2|E78#pi_ zJ~xjOZShlkG2g~VzgY1IixE4dk{|ks;rI3Bo|i+Odc-;Y4^DyeO@wk?*}>c^Q@>4ReJ?Jdm~1 zRlP`R#7XwLug}sBqO{`;GO*0-sR~>4ejGx-V zC*45oPUhB#P`7h)b9I1>Kmd?9GW7#Dsmw{nlaSKTcy*b3>F3;R5T^j*CYEU zv=yQj0_pV~pADO?7_tkKOtb&_WVi^YrMre7kHfF1upJea{oRYp5<^7Y@NW#gx>xAH ztthrEG3@LqwzGspz^Cik4dEqgfO)$agpL8{7=}4oh3)9|Pq>uF3xX3T51xkIAg|{0 zFcK`C_@<`%W~EQ|9k&OV2gWKk*<+Ou-5@g|X4vd--x;N}RHhh(R1RI$fGNc_FfY`% zL2W`r`fFmwpIBsQ8k{0hdt2jItn%uOpJi9*wwK3J>lNSs7Q1jYXiaJ}9@nWvLTh-~ zb4@PRx0;6b1GlS{;1{Z)aDW{4QJnhx%gKS*f!N6hx6)j200TMn?>^Kgp@dpBo}8>z zV>nFkuah+9JiQW1iI7`Lfy&g5yahv|hf63e1vGPv9F0lX*cnWRz+CxX5tyy`rFKfA zcI2zpj+~K_o4}(AiO^u|B%+6t@gbIWBkK zDB>>|fvN$|!!tPlNLs(;=Ppb`296IwH}hz0{|c-kBvlf9iHSprs7ry)>&Jz?IJaor zJEbXV{6MWHx$TWdpAN)t>=`36^8ESxafj&<$wsdpiWfE56o9`D1wL2r?=THHwcpJf zm{N>+Wh)w1CD^X(d#M_s0oULsqAWI=0uQ3V+M2KNi${7gFOE-Zk&m0yx#_=jRSL}5 ziuno>T`Qy?Kx_~>p;emkx<$XX;FU@csjZM-nh3ey=ez(-hEC`fu>%oV+LCi#p#B<- z{h6Pu41mDSy78=r(}Oa^)3FX{`b|{Hg#H7u^QnXH)D8Ss8KTYL9fVRs8%;t|1U+1W zYD|}~OhTfmUoj;EXsyTqU^O?0ViW$*9%td0aNQPs3~d{ng@MqFilCNnc$1<|N4e`* zN_Gx-+$i5=4>CpJ6=*(ODHlR17egtRXr)|JDFv(pDVA^Hl&PRFr)eHNMnKF}^|xE- zbd|7H^h>&@BY5zOM1p9xsk(?YPp42}fVSv`6Tl?A58J;ezO_+>81Db_lK!ng9(+((xMz>>KpCVRkPKlN658X_`w=6(WaR|ee`liSIqrg=Da*lXibG2rRD-kDkG1h*+~ChNC{MJw#!GK zFG$oFoT(YBhZ-5h#gDMcqy678>kkoYmuO=B+^mB|ofU`ti?Qp|L+ZlBzV)|q6$NfW z=^g+^#?t;VDvIptVuyVYjen`;(*#SHM3cd=0i(UyrHD*LSU+zFH7^tT~A5p?hGB5z%qHJ;qht zCUZYMjls_J>L7n>pa?N`S?4_2Po=}yrqj<=t+(-V+9|iB$q-Eipynu|;dKoth20s8 zrPlBg_`mn+=dC(%zoWu}-``sL(@yWfgWBg(w zs4~>m0UWxj1Ja0|t>_3a@#OeTNJ)X4LL7N8d4oGqx(NfJ9ehP#+SP%FaRYboUl4bQ z{{yym@cPSP5z&M})Z&UN?wziDk$>gDi?QF~&^+2P4?()QR$RwZe2=Q)-_pZ_w;-*u zVxbJIv9BOw@JiH+Bc;=Uhvob&W~YDblYB3xhz(3D_6BAYt7$w|%|CXrsa+1m^bhoo z$1bO%Q7iVMm(T)0J4Tmb8dr+5IOpxt*&}|tDvHliT-IGl<@EvgVNnuY8Rl)gM1$KzT_+0HMo-1@MicY_`>_r zA7s(MO|9~{l@GO~Si^BWe&qYFD+DDN}0OX__V7iN|xp3CPtS zb2f_NQ&Bv;5!$wsf5YIzAUpz3M#7H4Gx+tdWI!xJ`|H@5eC^&+UoH{f%SMb5j2*jF>FPEh~x6vU#E(amRJRI zPH)fU$@%Ik6h-h$NkSws=;wvwm$)NNCHV&5MyC zG?&j!rXk_=@8i3%Lm{|8vTj(B!#k1CW?jL z(fOCE)xT&H*UB#oKs>JuBO>a&u#;fWsnho9>3pvM&iBv@N#<|7`gX=_SiOij5T^$5 z&mWr*Ri8%PqRl0g;vrvAEATEX21ijKX@?Co;1G4NE;mD4sh{C{qT1_m%S!e7%H|ti zExwTcCEmcy`Ra{gF(b=6a!V3RvF0j^uaHoA4}|aUSJm1 z5X4iBN;j%Dh+>GxjR`ni%uZ%o8&xGtJFmY?w{^5>3ytX7xw>x-ZUqNx2+*h0rxRhI zmF?U%YIMiwkNG;NZC`mQ-6JnB6&Fm3U8rtt7R!txUVZ#CM6`HQ%^VSRXHaJZ2t8Cs zN%hC2WAc0*7;Ts*R?xo;-?H`9gRT|=0vXai9&ZFOU$wtJWQT|a`m_oE#AB8TPx9E~ z04t|@%?8@63E9;yw}>`tL4S%dxEi3%8llaaq0Q+1K!dqpLbS3cT4`Gny}u%YpHIe#$$DO1<<_3apZ-z71S+1YBQn7 z{DvR?x{SI)#-0PiP65%)c_h|3BwI4M4mq=_r*lYVC7TE;+-dBellbm~VXLy1=@pgnyp?SAD;!gOu9QLn{ zCj)54a>hNC*L|;v#`O#Vwc*jx+Z|haO%X#oBf{_Z{I4?4TtBk@j7ay1;O!mJE zcNy@V9(#*kW`9TqdwfNlUt{83{`svDUm=q9DPHa2Y(a_mnq&*JC*)^}9j|r^_|c#A z*||~iYA++nj#pcW9~hyF@c_znyxMse(4*d~cs0>yVexAJ+Dr^dyxJ9;WY{BK?R+3h zjd{w7S4#qDapTp#eSKTv)h=OkCSGk642DXw8FwpHt@)Giz>R(|Fs^i0dC2+yH&kt1 zo5eh-KmZv6a)qbqxM32!@HyoYR~G{*Q`T`-pK_}_tWedNZ)=+#xoBTU#+#Y=v@_8L z1$!^z)3OQ9|0F(b@DbZOUjG7bm8Ow3R=>KQbjtl7hNcyLW1-s~t6}mrW_;SdC`9~i zUwqn@F@lhdy^l}3Q}`A#EN~k9I#z6&o3UvHG{ME287D67iq#yi+ZLBLHaL~L<$8`w z+YuSHN?Q*QMe~UGkCOj!;?p)LjZm{WlllsX$86;M{Ys#AI`s?+$9?%`D%{=PilJ}{ zanalJ!Ef9}+d6UY`?%n>$oZkHKbWID7Hv)+=u}KKixGEZW_7g8GHco~4aK7s4{ty} z><~GmAu+9AD+OJk5)N!N4Bp0$8oufv0A7L%vw=YXwRlAkz!G`XE#)Idh}?J=3gF-; zwx`cfeq9ynEpTh_qVD~gMv|*~DB!_;?$mG5Han`ZKT zs`GV*^37nr-M#*_Da?1E$(Ij<0qyF1^=uw)MyVYp*{5G=zvBCN(iD4(PmLM4N(y}K zc}TpwrK1a%E&dw_IQsCiX^=sUc*Tsig}!t+=LJE5#qy|Y;A42rdd%LjOu=|F?5R&TnfMSWMU1aUqt^~n9Vh-tza1kr-Mlaict{U{-|9}j<8 z9sZKkaEZqvHHdp2vy-?}aIh1IdkTId@CEq=o-ZGcBqiNWA z+43Eh#i8WHQQ!~({sknN430jy(Fer%P|_N9bk$5lC0H|Ka0YYw>jXFQ-3TX9Gw8(e2P8JCG#3Ije5=(3Pw$LX*H{ z1H=Z^y~BUw(uBrb9UJia2V?XVq8iuADarG2{Wfcqqt=cf7&uv)3Ap@|4X>=>=Xp52 z6~BPR4-OG5Zp6c%wh4bp^20({x zmc#JoAvB0RW5f1Hq)|a44xD$)1F1)nDNV?cGvHbC_@4wKkUsD6DPVQYKFf#vOwIqm2jhK}8SSQY{n zgpvV6!+^Qq%|u@e42|0cs2<0BaXT^e1LD~=RP+d`gKwg%SR@fDZUJpgfLpVEbt9GX ziJ?y7r8B2xECO>u=uv~Hk3SKiFN*7JzT>bL@*e)-)q_`~`@L4GKWX<&8QXi{;ZHjN ze>t|X0&K*2ObO{jW6oPSfKHu-L!uz%-$T;cn(%yKDtz;OQDeXQP3U&? zvd?N9hwVR|7~G2r79x|lN=lG1$#C3ujoKq$6tb^@-4 z00bBwG#89I3%-w$)F;$X2kClPYw$*nNL-yIDj_Eetq7+%@zgt`cajDufg~GVL#Yk$ zenhqS^(Xynlm4}j{>6Jv@NGx^>lXe>4csq}I&AF2ulhBTrM@4t46pkUV8d|RB#)X6 zx)WMU1=uAR#9B)QTKEkyJ9q?_f!F(lD1-2}vn|Q$7xXksKSOK;o17`(>ZNxR1<>PL8XVg zRy0?2W|oeu>Ks{C;Pn>(j#o=3!*mcM>B*%(cRiO5EVu3L^##?A5B%KKb|7-Otqci| zBg1@DXRZ+R>vEZB8nNca>S+dC)?rgy)F8T@j6H$q-cf%MBa#ve%p!IJ9PM~*VhUoo z@w#5WwwrYkbGQ@_e=BIkUb^<^m{U&bxwvMZS_+<8Li9i$?kiIEeLVbWt@zsuDSI7| z2q}9lACR*5vkGI5Zp8sjkg_)+X>Cn-zA!0!?LCoFw)D8|868@}He%4DYm0T)b|YN= zl-=?0r|plwz35tv?pn3!+SmJpy0)+G+Pg?vTN9oytZR?n{YP}|Rfr&TtrlIw9RnK5 z8#R==b>BB?Hl2WT|Jd+E}M>N*FCx)b9vcn991CN0hu z5Jau}vRHCjoglNQfk~lx2}0Ecfq@cyfh?!i$GoH*zx2Fh1qL|K%+H`mJE31$!_SzP zbmCVCL8O*?bU=){DLF%R7vYz#o6-e!^E2vh)pheT>Q?-Q9Y?4X(Kx^Aocx8H^YOs= zq5K0Xi|}Z|cbqCIauRPr-o=g_|JQm^W69Es8cR;S2xQ4b?7cgG?ut#_=N|%fpJku_ z@1fUpu%Op;hz0$waiRbH!JoTCI6;{SJG5+|Rt+o$iPX#beF@*2@Q$4rbQRRr(*Xs{ zWb=c+@#ijIJr$Qvv|jLDT#jxjT&e}qzYsYg&5z$pM4lH9f7*%o8!;c|BpkV0NKS~=J1tWao=()A3@St# z#_UK1UM-xC~ z@H~Kty?9#P)KgZ&f^9-mjPIR`iW%2C3s0J@Q>CHnr6J#`+;{XKCsp~rv$)VGEn^$A z@yl1e+0kV=aS?;z)Mzcl%{EU>0PQVAOoV4mwnPyz^3C{oXTm4YiXN(9E5!vuzI-($ zLKrzRvRJ=*s6F*7XpH^#8Mq}o1Gi;o)_a(oS(habJ?8}V@e5Y+Vzh)nuqC>|LOie) zSRH%%&Qve_3H9=$WYy>M;ranR0p>SqYMNQLJ==hs8d#!u9N-1Ju_dsnTOJyU3=Pxp znqrxn1xn;mS1FJB#e8Jw-VCp4(7&XcI3x_esBj4qW>fs7g$FN1Ia+gx2taJ?2jzL9 zVY!1#3}w|*KW>GJA@y0FNKme}tzDx(Mz8g}V1#{!CfNd*VzN5-hN0X6S$#a*YGKl; zww}_-%fkpezS-Ip9KpzOzi3~;nNCnJYv)7rmdXMI5CrlCppU)`A{E!yF^5lXUf;V6 zHDKF4Qk;in>Z zxnEwp5qw&r!LfvI;4PW*;MfTLOJ+T(HSPKrCq4$1)_h~wg-Ft#+A5h~C6*l!TPtN^ zVw8yq5~fqZH2?sI+BFl7K+1D#5Fg)|Y!B5m6t`*B^>{{~qiM5;wET@a1ww|7dsA14se4~DrNByh}^)Ke= zn5yficc!+UPMqzjpXE_MD?|OFN4|SS;HQthw!U_I>KA8QxG(LK>ew=|SMm$^AUuGV zz=2ytuN?&Q9Qbz3ykan5uj-HC`#W@d;1wA&q&B9|>J5K&?-9MFYAB=#O`O`AMX|`# zv;H${+W&n?M>T~D>!|%%(fYGTXYY5{5Jp-PwKbRGuLW;eAK~rJ6@87PEgCsiTQqf| zhe+@6ujjS@TGLnj=;N*LL3zEp9}P%%`WE*S0rrH_y)ZP1Lp38NAkm$Rif4`^&&{&H ze^>Xpe>Ak!Kl)x?mLRS~`G~ljs3F`NdO<$W^8)!mVF3Byro0?{ugC|oL~VU+X6Plp zP(RC~eu*S8%O2lA%R>H;y=&`ZGWIsedzSBzp^{j-FM1&6_k7rEwe>N_c%0ST;P0gSbA@?^djj{9EGj5xB26w3%Q+-0|wqLv&}_ycb|?`!1(z3Gw&-sfhMW zJCSK+O!NJ~is#M=9=Rj1ws&R7KCL)}iqNsSfPv;sB)+ZwA#N_W z)9;aLc6RjjQdTt`Rat$Fupb@e(TDOi|CRX(kz(SdffejkIk!;Y%?7+yMRDns!*lwQ z%dnpZ7!P<;RloQ8p_ehi``~+k_f$E0Dp<&}uz)7hp69pQ`OPM8Q7Xynw0|x5HGO@n z4GMtCJd*k{)^Q^0u%M2IzfgG#hCIS>B+KvUC?DDp6}SJwuPdGhoj>HfJ;ZnSGwl^g z6CQSR(GXL~G#@`a#t(K+FGM(Ncl6fq`n`4?xvXP8>acnmPCqNZ@ISLoaAei|&z%_9 z1R?{#>%S^p-Sx{sfM|=lMV=gD8K=z+zKakP7U-e>&!LSEFSYw`!&%P{&GJEzkYORA znjaqK2OA0Jps6_gYW2siHlIx0_32{%lA7?)&rAv&cS3z_#Vc2B!U|jD0lp z45Yolw9lDl_u>IW*V^;ZaDLVD=z5lU9Azxf9rjdYemB_V&&*%p$gk;V$*-z~sk}oS zqC_R<9RlE{W~nYOUaGEg>kk>~d;S&(A>aA|z@F&&RTJ7ABz=`povseS0UVBwzrqZv z)YdpNv50dKnc^0eP=nG;{Wh3Jj`v#AO+W#P-wfB$sE7PY{$SF+nBI5s3F z-FWK2)(ARWUk-U|b$bZFlal%mA#;=ct5&C~(+-BTwlZ!)c+(qi1V5ICUBb>!eewM| z4iyd&;PWZT==h$l-aZui#E;EnfwX&80{Ry(u@Hs)*GT@j{I@6rQ(+OQsamAgGC^J0 zqNS?WUzrt|feGpq$w1D$km%f6<2q6UfoeiU_8~dQL9OYn_ zfW4|#r>mn-*5Zbk?N=_$=vR6qdBUIPR{nO5agp>K$L~H3h<>?9Lqutdv}UG#!89AB z2N6=!jXYsjh?lnMc3;iD+Nz4^uqvF*(gj&*Wdq=|Ok)M0%u@bYFa~vPSq7-3&f0inoI^l$ zS6@k-`igYA$7;uG+VMEssnYF)>X(^E+24WRCFeQtdrB;L#Mr}u%{kB@qPq5$3wL_Dw&@754qK*$(}-39f7-AG?u9r>>4Ij|#aM=dbn3nq1lu7oc0K z&o%N$HIfd|^WV?Gr1vnBh*8R;xhUQjd2}hOnvSY0HjcyZS{@ZW)4e>(2E0~9-Rr9r zkE5R-o`Wu+d!il8T(6!Vn)$(25!XOe+xy|od^^kNXqv<`=_%0h|Bcd)HFP;J>99x7HAfk1sdcxRz}^ zGT-2<>MDB*lRL)ZXDaxUQDIDZr}0%)j&j=ZfT@)lgt8X8-mv*w{5!L)S^*_kOZb}; zU>IZC0cCdBLiMLy^8|Qk{Nr217<^mQ)ku6K0hN_u z@^u}fUvQM5Z_9I2P`#SZ;xIJbAbVE}v$sFS3RCt+<(M{b<9YBCCIwR3mT_N2(vU}S zI^F&({P_)BWfu02nopVY6V3$!0NCBS(w4^o@lAMV@6DdYG%fy^@}m`cd#*8}lU69>h6_^3M1 zMtW6+N+^X0rrqvM26!lN(`XHzhu6zH{Z%r_44muHrO2vMO3gI|-1Z42`Xm$Z%iCW6 zXz%l6Qv8D!{IrY*SF(H4HGn+hCwKut@lV5?_hfg3D&24ni8xJMA1Hcqq$+-j-^YD= zq`{)5>;0M^|Y0oURu(#o?l!V&c zUw}Lu>B3KU;*0h>kpbQkk=c?5Pfq#8==a}-|!XHbDDKBNzMaVAj+31Tw z-;Tt@(j$a3NJfV_<_2QHK4yZs?;2xI?ncGomDzdA?k=^1$d@LJ`F5{dxVdg;Ew+~5|v*rYc zAYYXK+0X;h$FRRqS1V9VeRzgeSCRc+fr*sqKe7d%LN?eJsH)JK?%3lIBYL)sIvIVd zRmW3eWnd)cwt|E$#-iTXEF`qN>@8=Z^;1wS$k3v$SxWvdXvbWi^X9$K@zXv;6wg4s z3}g2QOV!JTbAlNL;6nR8Ceyz{a;KX8s5TGKpLvV*{5teKw;lI=v3^dEwI~Rr{en~R z)P~b-G{nOnIu1ZTeAtXKa&avBQThl0={275AUb&|>UOj@5otoc;2eC2;SY(TS0HT& z>lqb-(I{-KFZ>Q=AsqI}-=qaF;cvxI7LYeNwzv=j^sKXiZ7`~Tx@ZkxBhP3J0ES|d z@jYB}>jq=Z@APQEC5ad+yS(?Vuj9QzZJ6!Wc(4{F?G zprsh}*BTB7n-sK*tb#a!&VK;9fh^!?-D1CTwmt)`Yxb8(KcG!3MtV~^h72Rw(gvfu zO)`-DL*=BsKzfd+74C3lL1d5@W(j(LtuL-)lZx5@BA zC0@$trrdv z%UQl2p9xzf&<=Ubcvu_0kWRdt6~2Isq6KIm$Is8k zWQlYh3;9BY-gv`XH4bMQtiZasu_ca0mf$>O(Or%)--LmhesurRKONn#Y#`tTFJqM( zN{d{CMVw_H(JsN!k!hXvXl-{?B}0Tpso1TbBUzUVZk?^wYft<@9k7hGy@>)A8wr3h z;B)Zvfhcz|%hjQr9?6EE@nJSUT!|0SY<)}!#8U*s9{82;4Q6$RI^gTZUrql0=pN+% zy(pqTUT_mI)xqsEm3dqnq^bV|@&?~Q-kAPO zo*QTV1VgQ`NBjBqhhpo;@KuAwvq9nA0hQ>-N%c|sac_Vv`thy1D0Cpi#C}$@bVuUo z$4BnnR{gm0O`zu%Q!CBx$nj?63px(_`ObTs`VpTz#D@p-1es6ta{f2tDPtl|G1YlO z^S?Vq0APZ@b!P1GZ{R`0Fy{t^!9!LE*I$(jv-*{esa%*ITORH9z9o<5qg~}kli~7c zx(0^~d|@1T!uZeFq`R@U2`FGOtjMFvh1s~IVXeqhj@+M@VC3$KTt16zLhVU@+ZFo|3%wdDWX<;}y@p%fHOuQZ5+KF$x((9lvAu4a zPd3bN95k`?z3si)mEar&aHL;V*$Jiat%>sr6a5W)9U`m&<3Aogvg~pp7uMaT7*Il% zA?LZZbWTTSBArqb0505lmQyNfeP~blzDxM>&j`!kXiYg~M)~8c@Sbaijn{wjcKYq; z{`eDRJhfLYbZaLR`fD6eK*F96YX?+>{xtNJ{#TZ}wGXPD#Z=ovVLqtt+Fw$K_Me~b z7#zmTxtbsD4}B2+84if&;RBc)fK}rw2d+@3d-`zHnTii!#d)SESv}l;q3OwRB$L16 zHsl`>%HN$oB9OM8x!Vfu{)i+X*nh_d4fdP(YJu(0k4}6F2b%UTWsP^5GQv^BXM}ze z88HZ=La9$1V(YbLN+&z|vgt(BdMx3jx;XdtFuewcG(;He=yl?e$8>LmX&>q=0$+vX z{}>bQfhemsO|xY~Jo=zKfF5*be0@j&U#&BY-Mv33kmkJ={W=fL8ZpIgj6s@4{fYPx z0l!6WW*ox8qe3tnc^?|TQSxcgjF5bSF*7yHzjGEolF)9;QEcjq<=+v@yZbY@)7Vz8 zTs!CCo<~u;x7;RlwOl(mOh)K>-YY^^dUQNfHHGNW3HQ%i`qBeT#`5PJfJ#)NDK1mO zc;#sTBm)xSf*Iq<1MPO!uAGgJ(DIGRS&zSrhHDE*VtO*gGA75;YjQKbX;S|M8O$h) zG5=zCtazwW4N8hw>EWgfr9wP@)%+3_UYpMHKjqu(Zb&VUc>P@z=8$Oj25QA2@wn-_ z(}4gmp+y6=;*Yq&&QNQd1Sc-GIJ^WP#O$xLHrul?2{j3a_N3qZR!iz843Qz>{fyT? z>X#1tLv!KLg#0-UJ8)5jbo~nnX`3(_Z&(|y<-4gST)1mYIWh#H%Ph953RiS~g zX9Fn7e?nlurSOfdWBcuSDG7O9YxA%+hxMqi3rZsFhlu)ZfOm}sSnX!Osz6$J@6yPPdSU+jUo>C&tlqjp|n)wD`eUwp)?A^qnUPEC=HZM%V63Gp|lL7?aZ_z zLunWrX$eTvsMrf1$nJ6Gn_3=f7ys*iRP^2PHY#Gx2dw-A`flcbp?CS&q4Svk#@^*; zXU8-D+}`CUB8D*ksNUr#l0Lp3`L`Zt_t&B)RcGY5s{@#JU?`2G zYWG?EFbp4h$q&z?koq*&#!ndh5%w+{@iYGuq5SdjNk5sjPECWMQ(g7|4F)@a3gj^n zD#tt$?kY2(#7>vh^LY#<7LOE6B+SHMNB%<$31WUv1CaKJ+49kee_#&sV1pe`?5un) zDyJwhCQ{7uvHW3cpNBfe=5kcPVTio%rRfM@z&V$g>XMu?QtN@PJl+{ z3rAfabH1<>Kt@k7UkDzn;qLu>;e+SU-KR`3F~B19h2fV%nJ=7kL-+HAJAKCVmia>T zcqISO+f)kd={RP!;w8(+G~hb&KR|JetoCc!|4^En)59IXC?DX18KOT=(w!!wM9WJj zzi_-t4Kz0DSap*rOG0b=Eiykx=DExoaAcJc;`BEcf6D_^s5y>7-r(uT3xD&;xIahc zf1&$xvh^JWGc)LzSeHvf1GG(2d!ReA1d{Z-e(hYFdn67Sg29Gc3vlbvZGcU)uf*bJ)c|y zEd3=%=!b9KWb^=_r5(cbX-IEF>XpOWSEc|ESwey-FhI9c{Yv{H!Hym-Qqw$9@P zw7>?gKw5_wX}FR3xHgtYPSpCG8 z0~7mH0~5KP6y2_=#YkIOUtF|#J)m-2x8yPGg5EmWWlJp$Q}9M0X_!x5!7dXc*kw1V zDs9dP-V~HH_grC@O|PY%q%r>j)ir?(_5qy03dzL(L}ms zj~O8#=&r1om=Id{^5fFJ@_z$+-)R(Je%{;uFF4Td|F!xxM*rbRCi`8GBK?12vGl*p z?thc%|G~Qd$#_62;TmQS7*|lCF5ezB6lgR=+Hc+CWBo@?eBf%9MVmKPxyre>w#jZG^pQL+g6 zJRR#2OK0G=Hjm*Hh>-Rwll8iZGTyZa8Ph8fQs7ZJ*wERAm9x3YSP=6Ucpwi_qXs-X zj)_MvM?8B7<~#BbJ>o<9UhcPnStuOH#?(t42Z7sh_m19r53S*te}&)QR#`EP(X>`Z zG?AsA*$5hKHsh63MaOt8*5egE^+|3FP)Ii|&dF0VrYlt_B(XQ7Q7uV3ib zjJ3I^kxVFPNqlS&B$<|N5i;G4!;v8I-+0F0e*6lHOkXiyRYg0FLwk^~dPL&^tnzXb z>k`ib9Jq%1{b^a(m^#)?aM17KUePbtZI()T{oTVj%@hO2YzHf#4OjgXOp4RSry$+K z^oc-vHu}b%%;&db@vSWr&~>(@12#7fgu}=aE(ocCNbyfZhx0;Vxb(*nbGmyPjezZn zd=W&^{xORiA^?B=NdWiIQDN3Z)cngieoY7AfwVh#9qTv)bx4Qx5`UQe?JTd60!UBa zO!Wf{=>lQ=s3$c>exBx#pJexy zT9H5L-Y3b9HO+|f#jhvzFCJsIwgxu|^0-6&&1TJEQZ8-R7Gce19DNGb93!k5$YvY$ zPlG#G@f9WsBm65X8vDzp{3Z_dpte%XA&sDjl=9++4g=$zivgoQ?b@r!sd7zBp088w z3f{q4b%YG3wBc`J+2uG!4f{c12?Sc@QP<8#m<4kcZ3)1DvT|~ta4@XE0K>A>Q+1rg z)D+>}{=gsVPWcev4j_#OfRc9VmC)i>XM=}F;?{Xgpz7F31NHYe0cxK#Czut}g*4HE z%ygI5OF*D>8ZdPNer7;AlPUPNu`dWvBaZCeo{8CscW=|)Mt!whls?~|R2JOy1vT|u+s>@*;SxKf~^muZ%U%86R<}|Tr+1~mgO)SfQw`g;Vu-;?) zRr0wm*K2H~Y;7YoBb7XS==UOE8}T|xzc#JSJ)Q!#F(hEI`Isc#@{@4!ujdOFuWc0J zsMJS|6tD{X+sS+w<$A?=x%|p)ht-si2vPsSWdH0`@ajibnt}_!9guJBQn=;@WT*D@ zRb)ZHcEZL^hK-GD!DHIkI0h7VD`%*{wK74(L;-#V$7bYaY1|4l{!2Cp^y64G7r=VX zh%1KzU{C+DqtI1$tn)EIL__OsWNCw`my_Iv9lbNNVTD6Cz~qL4qSYNKZi!>#^#jJ* zjlta-E^=FVw+=K)qed)9<@FemYwKUj-w4lu$S?tKX9M1B3%o3VCuv|4)9hkxe@B*= zT%d%y;7iI(^fFW=mVYF&d}YP)31veZg-BMFumLRgO>fF0dxmsT}BwUsIv~2vM>eU9Jy{US$5zoC{-p{ zfwVo4PfbK7@}o!dBffXfkL3DZ+k!+4l;hn8#nS&yd1KH28o%o6{O_yxD4e>R{}Bz9 zd+J3LBRnh78{jHxehHL2G4*2^FqQVF?Vm5^4Yk>4u6_mkM9vqDd*Sz0!al=r))O>( zoy9(HJ!-L!u`shL%d`8HCBePWc2$UjKDf+q(1n@{Gza~u7aSy$E{dv`;Y*>b0M?x2 z_r>IkpNMC^klC^&Ue#4M&IoDZlC6N z`!BQSzDMa-&@ys4HMEQgs2I%Z) z`JAkYazm;Rhh2=k#j~{!i7Y9z9G@{ijC-)mJ=h zu-EV59{K+gll9?I4n+5!|G)a9`2T~WBJm&X-}vI++sFUwEdK8keg4CJ4ca$3n0r@b zC`8I9+Ly!ZfnMvI>`C?@y8te=*!l)1_|XWsVWkYRRk-H^`sU{Q3|)S|&m!nc znxGKXnBR8wO)yxdKE-=Mz2NCQ62Nzsy&Eq6z4OYe~GPw14TC)1(*Mm`f znp=Ixm#V9AT*5f~PFJ7eciSklK;#C2Vf|^}X=q_68z7;t5%g|G;ca zjMo=t3VACn^6u53$s2QhC+Ap#&sDWPn92io7u=coxznE+y}q;L^)UXXzGsUe2W76T zaOL|D#q>|Tp3#W)j3zid=z&1SqzPvVt2g8IME$zn;G#LokMraTtxs?cE?7OUL3p-P z?RYP7(Fs4!ZmRNZ1(1f-<=^t!^%cY!)o#`k5Fd}%G zNV3*GP@k-JwujqhxF7;+wVAoi8XE=8>d_sAFcJRlF#Etj(yY3s|7Oo%q#=8~E-b%L zG;IB&QSC>L-W)r>-BX^|AU~|76Y_uj^>A6s^7n%r%W$ongxi&K#{jED4O!rR?(xwk z#Y+7e!@4$8p0ApO1zxNX7O1}4h%HyWCGE%p^QtPwh@8vK2y!ro)Yh)&m;z7i=a6%r z-pIMCij0KP$;QcXAZyLo+u z?kFB;24LGN*E)AKEZ~?QIqY++5dlVc-(+F_*0T+aPmK(BF@)(ar@w^qt#mKJUMch# zD}(<#ZHiUVIjBhD_XxMK?_-U3SSS$z5MA7Wqe*-Zt~AjKEmGnc2iFX((Dpb}Nc{JE z48;z)+amE(nxs%@Kyo=Ol#fGBF5jGXjM+{M`a}L=3cdsq*(&X1EObKk^hT}W9I!yz zRGjp{aekqjIOI4_8_y(a_dg?z%bXbQL%qHt4*6(v#W~cQ%utU%4I@h6+FHDCeEr1< zS(wLy1+IQK@lI#w%P;jb-qZ3ZnAzj`dmAi-hQ0VYw^9H7z|AI_8+O1>nb_Qb zleUTNq-SKnPrXdIq2^9Q)V=QPM*odGk}|iC`mc1S-s`_);?DN>#L<4y_WFnOZ2kY8 zevP63ch~(t^cU&>U*}2x55B|d{}R*xZsHq0f zgpW_-;=|1OEA(Rd)@s4W*d+!Z!|t%8!_8VcWWhyI>NS#IMy@|?#F-{{<6aJtklCF$ zXyTNmElWJv@MqI$nZvt|hvUlZk*?I)qocf*(DkF6y*>#3J~CjH#5lyZzqI>>eG~T! z;1c)C($nC6d42cL(za!fa1fA8jxH=b?^?!Tvl6uq85e)g_COM7gt2&ZiI`fh*J{PD?MY;hd5zUmkcU=NSV z4MDb}1=(mo)~ETScSWDZ)6K5~xmvzHq+esm7ZX2Kalg=Wl$I~cZ#86j;Z}>De>LOD z%Uzr^LZ;Lkrf-2?&C27&VvHI>*#?*@zIWT{YLCl3vgo?PS?8MOkX!GR71Y zGInTxSUcJ3$IBT@jzw$4dSmq(kwT&Ks4v|eLFBo`%nW~dK@mDntDq}@IGm4m!GOp5 zJOYgnWR#nQKqCZ0%`8N|Vwm0Gi%F5ZL&}8nPI34I%!)zPyApHs%6}jYXe3rBSCX7A!IL+8M z8fM(>CX2EAld)xSHQRZT;b+FzC36&u+0%A9#gtzL{^1yqu{7 zE$6SL4^6-)z2zL=BhNuxhVR~SpIv!8m*poRr?tx*S8(2lZ}g89Wc0Ku8p+7bfZN1W zKq~Y+#W1VqpTxHBqT(AkMYy?{{DeuRBNoHhCz1KZMHUf%k)akp4!-&(j9vP=J~Wn_ zceHNfz8t)QZz9(pjBE6qrNTFxE)~8R<~MZTbc4k=i-5aW>!a;OChK)OhghVn*Xs{C zZ~S5F4?AlSHyK5I@D`lMZJkbcIsJ<+G+ zM3Z&ku)fgezW-ve?GM?1amSFJ$IrfKeLLh^^}`l@dcFRglVSTWX6e@$G#LP0kD0@& zPlYC*&K8>NQDYGOR<%WwdzsI%{#~`DU+JZ?_{~Ld+lqX%(3CuDsDngfdovxXs>ntQ z1)kD_)CWI-QkeTjta-2VxB&&^K*YKc-8tctmiVq@v-Z8e(MYIF)-xUUKc<41(sQG) zM@ zW0gg_c=nuon#sCyu!C5=w&xbC`J?3BKv&P>=_hQ#v`Etjd*RCmtnt(*`pjHp)8}0M z8lOHtC@t^wJnci-+JVsIix>4opUMJ5pIry_g+A{z|55bW_4ogXyQn*Rdj?wH4*E>y z80x#doifd)&p!G!27SzYXwhdvpEIV&_&Mn+gY*qo_e7u86HM022KI$MqhI`^==1dt zJ=5pu7q*K&e`_%GvHTm1TyXf*3aRzgzXFw`%{eLZuZSWm!l>L zT}D+1vXwgOD$=F*`%{jZVhX;KBvjh2{V8vr7<+$8_yGp%lCbb_Vt+Kp{V5A^C_~u( zlp=08;KJcy$nt-%KSk|8aq9G6MfxYg_NP3%(15qNA3bbgn@!^QH|+f>zr)oVQKUEf zOJeU&Y2cip_xn>;PuaHpDW4x7dw)v2c%A4KqRS@QR`0*)MiH+|+8f_nhRiqWzWL zkhD2jyfftlhl}mtBp$CZ14j^UD8;7L6Rf*tc0#&@ruAw4K{Rr&9B*a?;@ttlqlUl2 z=le2NzGw`sKJ=*Xu>#?U-{DaE+h4=VQNCap(4exRt;4D?Jqv zhaeV?r#Sg)>v)O>5i+UPZzYMjWWnPpBw8cD^hTt&9YE|_-qldlVHN;G-yO)k7lb4O`6@d^i}lMsDeHLnodcN^au9k0-N z7siS;f7v$uo-|%0BK7-j`Zb1rH!&=EHwsP$j}x5yqIY?;t3O{#oU|iuaaf{AM6>_& zbuuJYwd6P#gwM`So{UQ%u?#nRl8l;m)ef36hm@|l5BVqi$~-2t2}^PXsfcOBc`Gq@ zpmq#QEZxKFKOTWo&0KH89_RB~imdxz6Hv3Sf*Wt!lL-fcAH4$4@gB2zx(Y|QAR_A2 z+1ORhMWd>m2(5p{#Q>A6I_@_NyFTwqMG%(+Mz)5p%ONN-Vpr<@-*MQ*-cK5)?_cG% z0s_|XE62n(>HGRe|A+d%aTBhC{GdY0ekLfrLPem~wN*zPXACR%=H*E!^O@6Q*? zxyaUMv-E2We3&Z~HR?ixnyQNoYOZD| z{w$1t*jX{r}_bTi}~2 zvj0<{ScH;PtXp?i2okkb!~#BA5lxlgtt3#zLRAVC74d}?+7;A7v5gW#5Ea(Pg5n!o z1r%Y6S}CBk_&~rH$chEl^~SnbL2D~&|KD?FZtl%((uCUIzaQn!y_v_E@0@ey%$Zj_ zrW@=&bc>;*#IV{1U1WxfWENEms<;17pxxGfXe;lCZUGHUk0$QAzceg(&tOUM+&)UGx06wAAN{^Pjq0#0_-jZ4&zZw}}R_Rz~xeHfGDH_y1&QrMUg2 zIhX!l`FqY|sc3(GX!FQF*Ox>v0>4UKo3fL!xwju<^T{oe35VPg zi(j4R$*7+n>IlC+^wR$ozkU;k|F{oI{{#NxZu2F-9^Lrmr~d*n;h#MA8xB^%A~yLa z%dR@ z0qf^pJBZ@QKe_vC(@3T222ex;f(H?$<0F;EctX6KY5}?UgQ6cdc5*Vj~_eF zKUu#3JQlxy@{aS4&OezmH2V04raTSa_L%1*eyy)%|0U{LcDa5c< zxmw*cC6>O~K14>nkyuOfO~&0n_J863O5fc14QcuI`^RUW|3ms_(fwNg7}dUP>p%YL z<4_OzqXDqU&w#_vG|@ze&xydF7GN=-^BNZ%jLTEV#PPF9Q0Xj z7Z>3~E|76?9-c*bVx6)x&$trYc6HmcaN;p??cqi)3|w(6B^$ZqM_BQb;0_`L%D=6D zl6B!`464G6Tcf@T_g9oiV@X5ZS*l2Kp$*1#Ka%kQ<%{9noMG5cf7?}4ZPkoGK$H|7uuR| zKKS2SNlp*QF}k+Y{bx$FW(5ss-5QT11yYmGAjxl0&-{kdQdda_#x$J{*Yt_{H@^7c zJpAw_et;LH7+Xw(E&ru77mG8*kTU8SVj?~r58lRqK>J(mxNM^snt=)r-7rx?6g-L& zXf?Z?cC<#CzvJ@)WO_)@H%nT@Z7K1@=klnsJ*cRG#-iYXXaCJ(gtC5oxJ@=f`CayI zG;Pu)xR@e{(`KPN#BPxcPb0>z^=KJoAh*mi^(%qo@`|!$38f>@GOOVPu7MMHdlV-y zB)uM#-JSu;9{#!)PVcmI#pU&6B~_e%yrtm`Y^bQmh6+IDLHpsj27SgP3pC-IK4UWX z9jb>wFv9)@92NIcIU;ZwI7A&~^g|ii@%?S~GidPnK0kRI>0_u}>^;wi?*jXR{i$hZFkZ_&zB=_~W-iz2in8SirK1r6CpWsP09zek z+Z7Eq-2ag-7<$5gz?^~9GwGGCN^s*nwCIlg5(Qzqf#<$Mr1FGboBr8QV^y62Ck|ty zP5!m@KkD&QUpY;d|G@#l%ITa;+mBDU8{jcYxjYNx;-uii6iLW>Q-(lD4S*>iG6J5f zFeRYI1CJ(Sfz(vcrDlO9tTIzACBvooCE-vCqKU-&y_IxW2&tHG!LD_tBZi5?WFk6z zB^(bS-^^g5DE-F3n@~VVy0!k!7~c<(J{x1)P$Z4H1b;=>k0o;?UR%N1_YqCr`*BZ(+fkq{^8MD@G{RAkP>QpYMmUN{F&j1@Q;JCwH@p3n zj_o8=0gA#CYig(8L*(GR z-tjr(a;_9!p?c2xWk)$ZYh4A@k7;z$u^$TQa-9CGxCYm#55IW~4rjqlR{p}qCRcqz z=?yp$HxK_iWh|$<>b+!+Qc+f)P*UXaHgWNab;K@A{VQZo^mNeq(Jm*S#_SsjH}J$X zx9@LuL)Gg+43uHcgq(>vlL`Sr8KzWkK#g(i3!jtjf`WEsHk?9)MEezun5RBBU^K|_ z)*wTWxg5-fV{FQ*+`b!X_=NKmR~=}{L~gqTa2~|@MVe2$BD@%S3m zy*st08H1)FR8TRRZgxA0Oj40YQUTFmBq1N_q0fG5jRXHR4junm88+iD9c<0wkc(NF zjQ^$({#oN<;GfZ7$G^qiA^cbNH{#C(negAA-1+!V+|hCTPyReU{0A8Dmtiyh@)DIa zf&Yn#jDMH0A^yj0(e3kpKOO&B2zP-0Uk$^b2{Pe789NL*o&P`TIQ~Q8iFL- z!)E;DKt4&he0rSC`2U%AzmWdP8XE)ujJ`VlEhlvd|MyQa@;?(~!hb&|UOF59iQ77k z|8XA~`JWUj+XH`QwLC0&K;Jw|NgwKc{i%OKSnUR2G$sAXU)z908R$yd(nd+!(SKC` z2O^>M8kvb)ZwKGkFg^PIZu%}GzfqsAnRa3J#w{LQ-si}$ z8Gq?`e@y7xtHef;>qGb}V`AW+{bwEj9td{;|4;sGly@e`B=3j1cRv2p-s?F2&xFZ) zRQ&hQUN*=R@&ETSY{p+sLhqU&`2RxY{{vf4Ru2ehTBCdnw~T&#mFFxMSd-{U;s&9td{; ze{UH6OppoxLs)R%+4xVZ?Ku7q?l&rpxN=+ix(kOvZS!&mP$(G8R(wk^ZbOV0O^>?S0wpni9TG3Z8r7??w+nAU< zB}@IGo)*Ce=v~c53dPS+++7pjY_^%2no!_gn=Vj;pW!wrt%f1S;T6WCsQaIY zDftFDr)cX!8jCk$ES{v8GfyC{KD% zLILznnu^}j&L}TTkg5L~g543F-G8mD(Hi6E z<>j>vM*E>Xc_}|mZ-PZKY;FQMgn9QFZi110SzaC-p*2C`h)@$mmY1g9y1Z;bI3zC{ z=%vH*a--EGFJfd9NnRf2T>+ggFFiMCO?33~^3gj-FE3|Ys4KUNWH?G=S%kgaA{OE< za%zoLaB--yBFjr|vMw(tBHRIa*_~{Zmq_EyF4zsz+43^GT5F7>mzT-h7@EFnPhOgx zy1ewt5n*!^NEg%d;w-Qi`m?s0kv=%a)$Hy!;*Eki0xdFCCVbD|?#c zMR=Yf$;;$snyKn^dD-)()>#L)hF{av`wlVdeIC3OANL z)L7}bj<{X_%!$Y9@)GRPA$hryZ&1_xGfa@Ff7#j8`SLRQ4XrVbUS3Y-#)wB=W@hUu zYrYJdn?Uw2p7El88OBYpkGE}*ygZK^h1<2q{+^`E%M^q|@-m5DIxH{8^)Sgx^!{ZC zZ(8VddHH9R)@l9tT@DjabEaXQln!*IH2}ks|9cFaxOwp4eu;p3@iBxc z&5vUKiHy#4^~bax--1PrG<)5KgBY*x(dYNkCX#V|6lh+~hy zMDq9=^5+&H!c;`Ws8Y_n`ExKZtaL2HH*M>+?Q**{W07MaeaaC2W13up(JiK&i)oB` z;lDJnvtazLCtBYis#WjTV=RoL#_uY=Y7mC`BYU2wGkZT7HZwbAiMfAEJ~Mj{G5@(T z#OzhL>A78fvm#N~H?t7#K>s}b7(u3(|73zp`ergVHFS3WymzgJ@6qdBY(>hj$_xl?=AODH3 zcO3u8VfsEQ{sVs1``hzm*o^;)g8!4oF#Z`o@px|Pxte`ibzThoS9HfqzDV zj(>}#L--%t)rfy2{j(ptPdZ!wOnkND_&@wgT=@4KA}WRsGqIlxoAH;Nx&8-;4|Y8H;rN zbH5Cm@t69iU?k(8{WI&IGeh`i4UK_+#_u}*Ex&aL|9-z4@sFf`_G6PkXX8I{WykUF z!ur2``|*X}#t8dyDFSL2Kx48WJ=Gnv9|z@x*^gV^47VQ#&LE+S*M78f?Eee<@%NWC zd`|E$A`p=mQnSXsJu>PLSJC8_z%)~vu?b?qw9ntwW8{rP< zk57*n`IiYY^`9rJozK5d{!_#E=?iM5dk^0YPu+yNk^+(^AI*$LzVg9wK_TwnpiGzV2^`Dbu z*o?nC38F}0{$J6P`M>^54gZ25@k2HQg89OC98~-Pt?>PR)#b>|!i$ujp|2!qbX8xD!$)=vi{2x4x@gEq% zzd1by{=vgK{_7F$0RAWZXv9C#da`G*1*Eg_@B3WG@!!w(yV$>xukGM?3=TfSsu~+! zX;qDfe1n%Hk&A6xuJ6-a-v>A^NKyQEr6~bk*5USTQv1J>4CJbL=_szYxmxj8my==S zUpfyDEMr-ShifqJfC%jmyex41Fn9K$83SoI#~d40qGVUkL#fuvw~wK;fpWZD=Ihpy z+ggjCDD%?yv4BKTpZO<>8|I}i*86YnhREI~YvmbOm5QIS@#2u`T#6XA-g*>Ee+W`9 zhgwjukv`#%c5BhHAS`oPj{P7-SQ0Ze*I#J!_)G1%e9I5*E^#F(foiIT66p35Cku4L zXD?0iyZua7?#6GrxdW~mw}!~`b@Zd}6*0kIib7pAoYb%^33pVf>wh5bvsUhb)&w=h zN^709e1CVm&}t<=4r!B%gg6p?_j}8c5q>U!(-yVG|BLC1wemypa}EE@vDB*@c!v{m z@#JAigw?xElv9Unw^YThf&5wNzDX!pXk= z+@#WAuD{p0Zr`^aU%mPsJAX<)Q@Sz?)_ZSb8WvM4D%qbafzqkgifNK;`c`p4GpgVz zP<*|bt(AT8DR?1TP3|wR;9O9ZQTTyL`D@sIUZ%&EoBgx3G6ON(+1C#RJ&M2AP)X1E z8a>0xlB^XEf$A+@y7CMza?ygm7RA4q8b$8qQ59HG;D~a3LcCCPFyyp+>HiH>vLT0W4{*P`KMUjdx_m%^3ra$0T2SZ!l$R@->E z@$<1;%!8-PR*qAvOL~GO>(n7vVuyLEv$6@d2m3vB@UJHk-DjXgXao${E=ey?EIirr(muy3=lh0BJm&bUJ^KQqUgg4q@P>vp8!-w}?a z+}dsqYK7n`Dm@UGhcFl}*H@$Zo+enlRrn$@vU%xOt1a*tKNc^?qv2(ZkGxGK<8ysY zxf}o6jgE!es1CDw7qCb!B@!_?vt#gWmJLY=^W==%_k%j+WjVgSks?<7o?!J}2s&JY zw+3h9>0Fl(90@(Gv1aWtbd_GL+V`hSNs|`5kc{~`kD_F6bPLY>o5!8K!+QVrE+~y4 z+qkc*rVp|=mSloMB(KuppH7m$5F%g}`px6pq1slDu>|*nF1)zU2vECO@6AS@C@fv6 zLccapLLx;9$wH6f=^>;zQSQ`d&SW0d|sD1ou* z?tn85kcROaPUffw2RO0s`Ql~@H0M@q?4nd`%FL~(vAeUkmVSv9okXd#X-h)Maiapg za?#7bpOm|CU$={`Dc#U<$R3iIMe=$s+Vo_M9neUtL7)&QZ#jbCnuYvWyo??O(Golh zbVw1S1*lB5@TH!X;48n9cuO6}g-H?i_*9Q?pPKgU7)yh_y%QItq`(KCs~5sa}EPo%CTb zehhlWhmG{15+54wM2>4jj?5dro$AZjK@+N3^11j?UB4aGb<2-PkxeO}%pbz$hlaE9 zVIDrXk+xn>i?654Xg5=|SM+0+~yl_O*`w15XqB+%j$ID9@{`_->|lU_++El_LCSi7*|8xne)aqC38V&isIlWTQC$zT}VH8^Jj>&x@&!_L{D;~2dC=|p!d zXuk)6D&i8H@LPf9?{u_;?^1d;el5&~hn?DN^7z6=HG!ys20brf95fnDf8mh*$v6v3AdI#S>JFIR7wdM)?_ z)f1<$+=J?^4xPS|kq=d_o!8<*D)b7eEeF6{e_ck2=#zdXO+Ee4RsR8Z6>Kem-I-cT zKYaTX#*y+^7T79SQ>>rwEs(-ac9=4TP5mk3ad68RJCL#|wU;_UyM?xAhY*|l&N6%= z%ob{RiSrxeM)YvhT`K5fz3NG@<<< z+>eI#gSgUVlcBNP{^>a6ytU*Wu%-S@a6qL>-U!_M4>l;F^YH#dkN#pOH4WCfBzYrxa)mJNF$To|mG_)Oe{-KK{EMZsC5#!E+C!|8F`O+B0Hi6SC8RPTqe}cA;XJ7FyZU!2 zO$3+?w}R~(f#Amnq*ULGmJCVt(CAXl=YYUpkeUF>RR^fnwo|OP4yeTG5&(gDgg>UAX*Fedv4^WF8VW1M|!J%>6DZ^Ft@! zm84WOcd=HoHRW?*fK+Bj`}Gl(T&BK+mI$e>QBk?SqAX3^5@%P_y=OrA%}xqu`H|Qy zG#d3Amnm@Q3oV4gSXWcqra|@C!RMTms?N$<@IEV%Fnw**ABLh|sXRkhJA_1(_AI|E zUGnP;*{B2d$wqwx91&{NA<-L^_?6W36??%(rB7(=O3JnIXq2mD+c0~}%&%0=w_l>1 zWRw%u(x{)jI^ z>@5e8LeXo0(3vE|k|*xPyf@9cO=jDf(^N0Tv#ZtiOJE};P~?n=j6 zLpqXX5`KU?EUU?tnNZRntO3dOie zgE(X+a6==UKv>I(6&-fDp4N35yQu&BKc1pF<2dN>Kp~3Xt&YVV#$tcr*Oax`Ux<+} zAF-0Gj{H*8fj0cPeYeeY^c;IpKvxn6?X!2A5*H;1^plG%F=2wdzy7eWvKOXMWpOm* zO}GtM)YK8FrW5`xYD)X$P}5?nsRQ3cO_2iR{Gz_T7;We;ly+{%^hh)NmjJ^~bhHu74fr4>}_bN8_c8M3;p< zk|`s}Zm7Z2Mkg;d6tENyOMd0w&^rFYnKF^jKB%)$GBMZy98VE24}FP^I^zXMRPZ+7nl67{7F4|9{u1i zjG-rqql1Gfr8e;qNc29yjI$a-#uvTwo?={&2nTGKo;>MfRvmAvtU9_TBNeHRK{$g* zsE*UbBnI{z+q842lGXmQ0_-9470x8R8vGo1hbhTf4;iSBsw9beO-T-*N|;6K$z8e( zv{904-+_`mhm@q~ke=TqfnI`uItw(B{M#vludtZt%n8w{skj{r4Rq3YGGcFJq;opu zXQp%O=Q^EYw*>F~MrRIXo(wvLLE}o3$}CALv*wU8gAvNTYW?T35}zZWzW$l01Wn+e z66sWld+<$wt?8^@TnU%d)AvDF7%LK7M#_Vg940zg$sL&xQgXr9>6^JemprN0N9Z0y zeTHw2U7z47q9@89VdMRVZKDP8IIj6h{?~W%cO+hoe_U`FKJO;8pjHP6Lg0 z*@Fb9lj9hbS9s`$m~rHGFj%v3K7OBjWoV)aj2{NC}zPglSBShmz&5kUWs0NJL(zBSqBruwI= zFKX$Z)Y2~wOD~O9b|2A%4;$#`>w9GaiBJDiUrDuAhS9aq(vpz+V<`xv_MOb?@1ieR z{gowwU9ggEsyYZ~0%0Z3RB)*{5|}p3kOqXw&nNNq15L2<&r||q?5gugI)Z|x<3=Z` zkASTj#*nq~`A*`{kdfbzW8_adjVX}0^d( zF&Mv+GCD#a9J>QM7&}}l)S|9II0i-^?J!~__HCLmTKRToV3ajS$EY2At{tx9Q!2w| zeB?@*3y)`fHgw~aGF?LWY{Qv5QSsTlUB~AUgk#{-Ees#ABF2o*g6ht|C++dL@YyG~ zm=OQ`6xwbQE`Pn5#Z&**pYfTqf%)got{VTW?A8uG&wixiGXvom_}sMJ$Uj`L&y3Hs zw>kr#nRDa9rw3ojAXd7aB*SL@k@zgQj`4Xa$oMSkrs1;yX9h*(pNefdK4TG%flt?u zV&gOV&CbAQ-h*-BGxvN!5b@7q88+i%6Z|tfh4E=U#Q2=uMZ;$rj@pTe&vhT__zXoj z20q&1c0xyU!EN|w&>NkBPu)Xt;j`~|9iN|M*o=?V&!?Uw@Dcp;PAj?QsDB%cdw`?j zbIAufK7A05fzN3l8u=%(e(t@#Gw_*uPh9xibghn0nGBopkvm~V_hEd_dWZREKnR~f zI0GmuJ_Fv@@j3inOnlCK--wUc@nY6L2mjR>_!Ri!!YAPw-9Ac{VKY8F&ZOE{BvappM$@(gU^9F9iKG_$B?f*TaEaL758R*R<7+7eD015 zpOzY3zLGbJuo)lehMgwtAM0<7Pxs$7{@M1c#3!14y`h#dBKtZ`t%n;VWM2=3s0jP| zPQ;0U-H)|K?8Kh3 z^pkL3{r!lB&orE|6BVE9-qrCLif{~kdc14op(y?TYn_2lbA0wu|DSaEJ4c4i_(=I{ zI*#%AzKQwgfuA*eMz^$s&n55Z`1C=?Y9j{r|?8_}JpWXWPooz^B>Z18GP9skcQ97!|mYn?Atm%GZ2n}&j%Zf`bXUOVa8|LKRW{- zWky{1{LrZ5llX%OoAHt3*Fj?Zv1&8p^TiJuJ_`=DgHJ`Zj?Y+xW8hQ!wh^Dmb->CZMy0>(Eh9VpTpVzC6_(Ybk zK`S}~pXQRd@LB)5uAe`YVKY8*eE;MzEMFU5VSIi+sPWHeoG}y?pG)4<@#%wb417*_ z(}+*x@qKS>l=Nx@ac_< zh@;}u6_|wVpQ@PnET}T_Ph|i7Hf;6y9Qc=x&l-ed$k(tid?M@TmCtnsKFznph0hN`9iPM~_(=ZgEAaVhKjZUl zh<~Tb$n(Z90Q-Eb+Pf8_DpBslU@`TKG`b;K{UVNkzq4F(!V%6f%Wr6 zFEc&^RSlm7!FKSecwNV5EW$DHX;^E-C$fKWH1?|easHV)IWBxsRGoiLkzq4F(*N_M zI7#m*vGP$3;WJHb2cPTK==cmpI0in8))?`L;{T!D4S!g^lsNnM13Led%CH$9DPJQ6 z|E#KJ{^`OSgn0f37Z^v?KbO3w82D6&;S;(4>itw_;1j3*=`U~3BKbN;hRyiM z`PCP?uzZc#&G>BQ9Y(zV17`?D#b>~)IzES2$HZsFYexQwJpX)<_6GcM{<%3W`SQ_i z4_I_U_$-xSGd`)pKD_YfTd?Xnag12s@fmOCA$)q{j334)n*Y9a6=OvH`#jZtx50lu z1FRtY_y0ni7`%1&t48dYs5Z9aYqZbc4`VmbFm{dQzrRn{Px&%z#!uSUvo8?#wHSXK z&s%v2zikKF;jhgrb^dw;;TRa*y4r|QWczx-KRN@W=F+(MYsI}fe^tw{86T;i4hsHy z>T#C8^LVQa;j?moJNP{NijL0=gk#`y#VR8{k@eFwYzO({Jk%VYeKfa1=byzgY{p0H z-?ByjzlZTD3E{I~Upx3zysYCh7U3B9TqsSD_SQFye!MgAnK>>l{>k}L=bwBTHsd4h zqj5)AKRxv}2hQGy1D`@VVqA9iKi3$H2$_vJs!i_EGOgI|HAYlj6eXp}o3% zEu|qT`Z_Z{bm|BEAEQUIe0?wcug`s@@z0>W?cg(Dg^thR!KW)Q3Hd)>jEPV43L`#| z`Dfdr&cLVc%DC{!FsvUQ9%cQoJjwXUVT{il;s3bf3k{!xd)mS0zzaG)YY>hhUst|p z#7CT1Z1&%;e55n*Ng5p&KKpp1gU~-e$#4|@>E6WpXVSl!f2N1<+4e;{_-uY&$LA4* zW8iZic1r4Ns3Y^wf`>Z;pY$qt1d6qGv@kf@rY?@*GaTu&1#vkV)P7Lhkgz;A7_4z{D zj$fe+oAHx3t*<)(enKCSB*A6p2YL7%mQ&w!_Od=4**iO=q3MtmasuMY+~ z1D~l^#D&k(eRO=*%CH$9IX;`6#`xSW`u}AgYy8vu({}Lb3QR)%|5GvX$>u$-+8&t5 z>h*E)Pk*_gg8geUY{p00N8=81|NoKTpCdRhO!RNtcD94h=A}A5 zk02ZapR1P|@ri67EqI_a@KNF$pRJ$^6{LTyT87Q|$o_5ie;6ORzH@#EpOrf#KGFKO zr}UR(Z7vHoEX^ceA0+rU`Up>R}HzkDMwC(Ni*LDBU`D-Y`F)(^9jK89+f0)-97}a@njM`bB_UblW zKfNo%(eM%d|5Fu=&krAI@;CaUcJR662_2t42*<$Zf+vhT6d9l1_jd+9N%74eZIl}d zNI!il!)AP>e%hik|D3gz@tKBm3Wa_ew5=U{20X6gbNI2C_*DGEh)-nwbkN%w`0TnS zF8A&uMD)(<2W-~t9_*6;u|KnhqsPiLTfk~+Ue>5gO)5G{Dvj2Kp zWoO{Cd}3Vq?08?t=W7`@<0I#frVV9$E_#UZ8TX#XKL_7$2cH9f*YR0{a18nC{-}|E zBF`VKtmq7U9=kLyd^Tq3_!4&SHsZ+9Y24D9~;m=U|kyfyva&cN=k@%L}*1A-{hPan##89%vxf6zW*KMDP` zCB$C~w#LA3&Y}>0*grGLfZrOZ8ae(&oEZ4ME-#X5Z|(7rxt)RE1;cgTi)A0&s`FpI z44d(j{@uMNGyk2ni21Kzi^hMWaUxH<^OqMr62dQCT{h8x-wdcCf#1&$$HecM#YX;% z?E5`5r!(;Tw>xh9e5dLBw^WAB_-XUMyP5ySi1G1fwHkiCar98T__aP1!Y@xPDm36X z6sk(#_b1pLs$~2ohxl*w<{0>0v>=3^Q(bnI0lyhgS5p54V&Yf5 z(1>3Y{dZSq;J0La-1u!hSrA42@0T)c#!u?M1)s3~yZsHu@7hfo|MlJ!1Hab!A^a4z zsK9{VP^c@Z{}3kz|9Nr7p+2_}MgPs}4E!b-#-6eIU%oOz%>U%euo*w8|K9#H^WRsC z8NZV@YWQudiGkk+e+WOjY9DXF?=Zwo>OaJZf!|H@jrc{;e=|D+zkwIU&3`_-&VNf~ zI0}9fcMASn!uZ|#wuaw=4KeVW^FRnc=)ZgeerxX5@H-E2V&L~$9QX~nvor8}c}V>D z^)=up!)E-Xe}B++#_xNf|L(8W@EiSh4E!$gh49N%mtASVZwAzr)PM70;urKA`7g5X z|4?aX;P=7VapO1lT0{RK!)E+6`%n1)zZd(@&kW($yE+Dbt@j)7D;jISZz$B2)PIN* zga6j?F^1aQKotE~(i!-@H7aiW_Q@+KssH#XbRA{*`9{af`GHpEzo+~xzxTeS@!z&L zW8k;pz7T$Cs{INBeup7$QvV@N4E*}uXXHO7s?FTN^ckIj--JOX{FJ%hl@ka!KiRiq z@J@A~7u3Qn)RT_(8(b57l@W3~oNCI%UX~_Y#+*=+PKSjlhpo5cj#|afr<%drWX*6p z?EWhqGjT+FCZ6{+jK$?W$G>;0Wj)RI^W{D2%Om*ao|2nzcJeTmI-Dx$Oga-0tmA8} z88{jkN33Py)iOn~POF(>oza{m&hrft(%x^_C^<6Opc(39yKndKXI zfjs-SJ8rlsMR{r=M(^KNe8T#9@=xjJF&`cuuj-dEJqR zfEx$5Io-56DcAQIo#K|M_!l|q@e3WjY@sL4IWe>p?nHlKv1uJC_l`x5P*KTB8Tw zk--L=cHZG~T)lM7v8ZW)#K<1OK z<-5dD&Qa%F=_m$n5H^9{JhVQ3fb=PlwNbvYU41>R>+o|$%Nf?npYT&fOTN`R0S9B2 z-{ZLUB&+vw1S!Vkij9XVTK;6c-${pN22!u0jV0IhdO%6o(YlX?`a1mUcFdS!ZK#`K zE!j53`uWzmKeV=@y53$$gI_Bh6--sh7W`QE^NuNWkzOMmjSRdW!B2>~53hLphj^oN zlgr<7JcTzLH2y9{g(?OUK!T}NAW_8GZb)*L8?|z(mtzi9@xR6RD;2HBSiS#AvRGCp zfIo;kHQ5TzMP8xyX8NxM)wNuQJMix!$6Q25*-M#{MH@w(_MmQ`@0fdt>$PYTK7KZ3 zg!S`HIddE7Q;u~}4OQkLN`#k@vLRWZzCv z&15eOC;JGbJe=$W_`+zD`U|0b2J(u9cIz+Eh2a2xGm!lWUUjm!;7upHilUmyE)FMq zL>sa{$6>!r_HrZHCCDol*@}o05$%CQi_Rn`;Z-NwiZ`9?1d3`VdtNx%0T3CEwp}Be z4>OkiW3ajWRvY+5XpXR$bJpyL^0Xa_lL+HgS?t5 z9i&|nN-xQ=uIrADcUT4VSmiZD0x6IusriIb&Xf8EW1b^Lp6T)D zd7sFWgk0uHn!%XoA-tpRS@GvNMC3`VEb}D(H|F`I$Ww_w&%H>2x)YztJc&7td0r;+ zEQmkP2SlF41Ts(J9AlnM_z88N8h@VWiabgC$UI498S{KbA@qzuS--9=A)tJl6EoCkX8?`^1Y5CtQTo?O$wC|qf=46o`EcJvHw z=oc-*-5g<<;@f3S7efAK zFCnVie?^kVyVL5u7cW7-mYCjhthO8*{>ioDpUZK5tnI3ctSMJrYE8KuEtHEE%E3Ld z>vF~@wF#n`QXB4~X1W~Blw%{BgAa%dOZv8@q)TZJNlA%AQc=9 zN5;fJ{JOaV&=u{tm1880-DSXcq^1y-OM8;>x9ugCpj-9T^vNwcbk{HX@+> zhMzwaKmU^Z@wX%9UFkR-X}ehO^>GB}uX=hd!WlW`EnTMHiquEirXEPCr;h;*zqCzx zCZ`;Nlr3#j4&s!ll3eBE@167RahyddX8a9;Qs+kRj0*>TP?f**u{78e2o~->8<~V? zU0QL$SH(M-xMKz9!6$z+6PHF!zJ|O^$vtNwJWho9`(+4YFE4#}WlwTvruHO#unGsi09U8f3bx3rv}hh(%O- z5pF#ZrTaXpKk@a~ZnfabsgmQjxPHb>T*I(X&?l)w!KpKVHPY9so6f{Np01x+CD3J< z#`A@_~`c2X?sY=vIf5?!RL8 zqN~^v_e|HS-mI2V(SCB-(N%HX(SG%4zk2m4+HS}=G^1LI;l52|nvUDkoM^z;{>IgB zRug3L>3Z!y!2KL`;GW^U{zXZub=qviq_xg8JD#;pJGB}jOe;esJ|!IvCsMi^dRqFv zOZaDFddf#nKdAlm2YLOH08zyD#JZ++ffWPMNUOaqV@iTC=EJ)1Vi=yvncAiZgZ7{ zy4HHdKm0&3+6gy2?6{rSBXkRfxUz+^<=gJuK5qf?RD6r4(xcW(1{wV+fj|vE_y_fW z?~r;~T8B?fUitwl{~bK6HZNH`xXrtsAB!95kwQ1!;>Oz)lIOB2+?rDbCR$BdEB=#m znX=vLc}yAKK7=2_3J2Xs`odPg&7G~#x7NzXF&Lo>4n1_8(0qE)=*w@+d9{oB%GvN? zYlM-rMhSR{SaCmxXR6f(8Wr@?d3I1&0P0{>y0U^RDUNR`)taxb!ypz)I(hUQfQehV zl)z$w#~tu)z(c)rDxm=7NmMN3?1$fdyTJLTY2i2rJk2s=H4{~#KG^#sG6~*=2E={n zOr6hLhfj*n%jo0wCKO0Pwal6f+5_~fnu?t1rao)s6I`TgDqQ$kxVZ=aqZ&4<&N!G} zqtoCqmp*l0_uz3kO<}hQ=${PXcCZHji9>cRKgI|C#%Bwdb z$QPXsfAv;e1b+<3T84mzgGBK0TZqCI)z42|ix4-T3gHaC%&xiQlcvLTsk<6#Kaf0Y zHY}V#;scd=mN#fQx>`I6rY$aiZ+ri{uwv08yi|^eXf|d62MW_K(}W9n1T|~e{nlE1 zZss3v29Xuj#Oan2JISpYNTcjD>8c?lE9B*zQ9j2|oT%-4eWKxL!=rmrB7S^AJ_lJF{Q;yW1 z%Kk{DX3}q;F48-r+o-3~I-_y4XT#7Ljk{Se{D_+b!$Uxj5#l#ufJ=GG&IlKH`SP9U zD+>5$+|~s#b*i^NM`BZ0MHi}DD_7w+Xule0KUj^_)#O9_d7%AVN$75nYayiG)lBSw z?&gb|sO;Tp-Bc>u(A~&Fz}*jmTY|T1ea)l9Ex!CL?rX@y0*)d&vPesgfGsS@c#yIW zxT<6q1FZzALR}2H84oTBc3FZP&sSJr>|YL&@hWq52V73I>}skZE(oNag+|B_$No%s zi)v-Ub=jl)Cy}4J`%j2Qf=KSP;A-wxKn{)5+`wJbCJeH&Q>+oKP|u zC1uJ!1T=$ATR!NG(1%>ZeF)tUOc~?;IsYg!_Ml4gY-(^wqQ$qFv!0HuEBBN@RSmyx zDzwQ7ktGkK>%&2kTw~P=wUX=ZZ#91g5S~Xk$8VTd3DMksl_H&}VNcsh+J&LGGMOmYz zS%>QKz$0}j-~RbbF5rVk6F=67jW(bC%2bdJ5f8>=Ho0oGnelo=GDZtPPJkJYvD z+uOr4LdK%C@{ilwd+C_>2=?|U){0^Fc2BNNi`p_d9A|^QU4uh{j?&&v?v@Ox7WVe@ z$oc<+z5UB+AqYFc-u}G;_>yW+udvYh*+c}_y?d?n=OO8AIV#Jcc6t<{;k(6qNlG)yVWeR%1 zf-&3+_JHu97kn+$3tF5`iJoTrSB~qp{+kDKW7{bR_1<33&(T|m`5185&VtOBQuwbZ9@-n`6R)G z7lE=c>xX&>%9d{Gh7SxrnLIW@7t@Fa@PJ9P)#G?v|iivy%^!8%FcV?4uWrKH-x&aR4be zN!SaZK?(3sJeE&p9YysmrGkw%^BXYyWFJBBz$dc`4|TxxghD?02)K!sQ&Ru%Zwdv{ zpH2uzTJ#Z=v5G@0#k@!vo4C8xRfrobW+Pfq>ErHE^PmXd3^jC5@KR~Re&O$2D zSI{II?85kbGf7+y4D^b-?MRhlM}4c1pW@?e;f^c78x~VyW*sXk$J*Ti#1ZhScl01- zM7UxxmIv{y>#Emt=^_t7T0<83V@i4ejyha5%?hWM?wm$DR$n7<5r*~MWLTr1Zi8DJ zx;p;_ul-n?o4oR(JR0?k?jLGOSoOwc3_L~z7>7R68zOuoDeNg}7!D;+LnQj7kH)J| zZ36-3@W5hvQ+>ZOuFELg9~3sR?<%2WFdQ6HxfCxsN2G&emIylG;P8ncIXH-#hFi+3 zuf-D%uC)xR0K{5Ja*!Jsmj*D&lR^lpjwBt-N_J(gTUvu3knKi#2zS#C5v0QQi69k5 zzD^7SCWV)y-f%V0t!2iCP{8X{L-7Iu%Fp0+x)07Dw{I=8c?bxmX_?C1-$K+ujM5kg zxSNXc1@c@@55sUxx|`gXq6%IGE`Eu8GXCK^u12$;=B#AqU`D8=FXZW2hk#^ZNxZrW zDTz0p=4WWMNtrI9O!I}K=jb&t(wxMg#{U>8EB_F5%q}xf*B<#ldBmR?>H*#OVUK#eE zd^wJ4816sWhs6=Z(I1Tq2Tk*zJWd=C+kbNCXHrY>1O$*zXZlZ8^bh$@h9GO{KN$e3 z4gQl}^h*Adu2dW8Klv>`yhdo9MtsuzC-vh*#XpnL!u%&QCP0Aux>$fen#uy4hlxNT zz+29V&wp|+a@IYd?fOr~6A=dg$zige{(%4Fn6RQl{u7#yc52g=Vm=y5<~rZ@iu$ft z09SgI61W(CcuY|G`H6|(i;uxOTw7p*nv(8lVwIM_(Tp^G&BIc;oh3bJl0^NgPfyDm zX%MrVsw5I%OglqaI17VY@B`uC6xwUbltB^apPlAxlc@~Oy0UH7YO%~UG#QOr=F`gL) znI-?ch4fn>^%HysFj*4|gZ=R%frRj8lm4Vi!TW!6rkSYQs8~M?q`4cZXtfYr!wiQ! z4E;+eeR$#HiKds5MX_R9nfL>}ka4vH7DrGMAEyKoPbF%7J1}Rh&OkEIe>{D`;s?;3 zSs0v%k33+B+`h;-^}u+MKpi5>HMXAc?^SF}YJ!pO<((v0&vU^Qp3wRp_CHm8S3o4@ zg=XAolE6n3cA<3=_4tkK4$yc`dR-n=h3s$ru3a#!5&e+5x)-$uOyXhr^(BK8-*#nV zeIlXh4s^rr4Mc3+M20)I_#~uJJL2t-dKXePQ~^i`fQ^9pi?VTlVu<5uCcl8Xncxna zV0wN-Ym_rN;r`Q`^AvwsJ@i$hl6{1@tK<|je!G>8`x2FeAJi0gSBuiR84*i^C?uWx zGL!$5@(U5xC!8?VDG3rOjrK=qeu>iyfC8zFTfiRvo{~MdI9|_U;*W}KOUV!t8_d%% zOvLWL<|FMGqy;_r0e}ZmReTeCa<0rYvweM#X-ND}%JBDNCjam6^?X4?6X@7xeJ1_4b$uXoNeW$X%TO<=fIwIJ6dU^(zYT>^U zwbUhXkLhBR*iIa&iny9LEDOez3+2VZ>|0bx@yY;eQn250A zN3T3O2`dya9vz*g_)|Q7i-#ca)VJCIbUic+*ot_?)r=`Y8m`&#w9&AQ04POAm{58S zx~)9uy#f?hWKBnubWbMc=B8qfZYDCzQ&*Nj_l;EiYpM5gV;D)L2RzG3FHZh;G)dJi zj9ts|8QCw#oLLp-%<8Ne`Nh@@PZ5gC<9wzdpTSL{CdeSL3<=bSP$4nXNqBGv=EMh{ zZvsQ0|Kr(gHFppjUzJFM(%by5z(q*e4RMfl=jDFZw^&e`m_x8acZx1npD#D&A3U?& z{0DDUKOYbw>;ICkLS}8YZ)E?=^p{st`;o^X;Bl%GaLk9^VMnU32G8`aSidLQUKT?v z1bZh2|D1ezWd0e_rCt7U{a^6UG}_c3g?~;~&!7TA>IOQXS*n^ORyBSPx=xQ12Di2HUP?tnj*Fmn zilBC;8dOd(Et;YTekeXE!~su{dM544&xHaad4>X7MscJ9+V^#cfk^1X70}{x`jp{; z9&!~SMUlE6=V=fRQB6n(Q7zPDi^f9)39U0_bF7U#j~6|ZP)Jo7+~DP$k+km&zk{Kw zDDS8HF+;H?@-1G5Ptfjzg+k&bt;X@8A-!7Ae*R#nk&&|gOeiGI+SI?|)K0cQq(Wi{ zSRv)9??beRp+qv-pM}NOu-f-~Pbeg21T8-72PkT63h3((+x5OK5yKRW9urA(8F!?A zcnY91{^jc%(#ImNa62C>O~5|&C6g52=WgE?W#fOlDG8rp#G2$9+$8K-ch^koy%u8U ziW*yPYhCF?-!t5aw`b)K5(lghZZS{y)NXoJ5dm4t=vUT;@b@Vs&%Od!#n9} zq^Ni{^E-{Sh`)U>1!)BAOTwd(RuZ6MWasBh$SKU3m@}zx^P7~=?JGqj822&**Wgxn zpj2&054Fc-fnLMhzHdFgdUYurN1lXl+`cl5A!=<(_Rl2?-2SuN{u@yW%)*RjcXs`Z zZS3o(%yW2G1Zsf2;gtS|jl}Ai z9CY-wG!DpDX>@}@uBTBBa$CC!OO^%@dQFYZN9~_QBPl*5AdtLv6e$jzivSB~E5dGE z%Yo&D#}cT%jp~!9pTf+R6ki-{3s2A3I2!a(BS5Y~>e7m5ekf`_Zssv0@ZO3oS4Gp&-5$RTI%6;YZ zuz8o!BV}YUf~>PrMiwDhF23f00w-)JJoE9n5K3{P6Ao?IWH|aEh1QdI$0-m=m=+_v zCkQeuo~4Sz6;gVchyYqgPz%v7i))Y~*SE{<4-nmI zuj7sfnlg>=J>};wtaA_G2RPiZ+Pgcg0}kE;9oFeJ>&+!pRM(*dOUVQ%QKskD<)>R3 zMuR!+itq2-Ea@;~Q%252=RrtPC(?*#0iLU2zt&jO^S4{m3+sU$mNJja0(MvhHxm6& zcQ@6+hkZVn_&^~B7=w#Z3<`nK-5pbvs4Y2$2=H-f!2mchB)_KdH!D=k!w~LGn-fY- zfj3>$pqEyI^O5zurNoY;47t%vuWjWsG(PA2n*=k%tt1Fnzj^U=VFYk)Ve%;FV=KNZ zra@9MDI$X))w&2&NJu^;w#7BL2K!spS$P>$_w7o+vrGM;0Q;iYXOdqJiB*2yeaAIm zbXuoQ>e4cJ5B$oo`CA6>q_o44*6lCd1*KauMr>{I>>|ZeX~>6#L1bo~TTA8p^6Q`~ zYZ~leH8q4ewaz$TJ~}P<1!7SQ6w4I510JH73awG=#t4G9xSEL9cd38k!aVR}kgg`C zz2kiRh;js<tB~s@XWSce^n!X$@M=*{h@mMVVHle3xN4@=obL0 ze)%R%$+?yz_tm5eOD=&9gS<(7=c1+ePWHHTrMrw(dv7u1~ER?U(0 zbw@E5sJAx3lHldAL?ZKh1pi35yl}#yNXUkAxQqyU<4Un+VRd+|)2Y^OUoC9lT>pvc z+(T5`Ug*!8X`W}h`~wg$J0^h8*ab27OFVJHPY!KWvl)@@?vgpBzWK z2EEMr{(OwtOYQFLL#6lRR{Y*-t)$J=I2$KnRG`TRrYN+bfI|+Fn+*O12NgfdwM-S>>rw%WC716lw6K9b%>G% z!vWR?6OfzzSt*T3ZR*vK=v|1OL_mRL|j z=9a|W7xN&G*p`y&>>DV9f-kd$*cyzb_`X%2KI|Yy*^cBS$~7>B@?d`!D;00fLvlD_ z4^u9IM;79-#Wg2^PKo;NOLoU4HMuMaB_oi`2FbTW@?q2%44c~Sv?PGlus=UfW32+o zT6eZkvlJEwNeiKPMG2s2a@YqF|8WA<%g+!VBQqFT#-HxY-yBr6FT+ z0@zEG9AlvZw=dJ}n+eS}6VQtKVlT8nexy(&KG-RN#AP|uFeB}BKp4*YsvVhy%3!gk347q0ikt@ZLw6aIwft4#oALJUlMe)T1%3Vd#m~$m{_Z1i)B6+Q0|rzYlsfKsE=Y0@LSe z-)}_$#WWjNj+AIM@@I*@=|7Jl`YU5^M<>rjO1P=v=QLgDq01#Cua!loSeuyYn%qz`UB{8#3J){ zCbGbLpphT>Md~jH9q6Ff(!1MV%^JhMlsaRG=ACziiKg`@7ENpA_f&UZZAd~3Yz(^=+%cAt;}w7EI|!&xpF^i3S}T79x#VfM4ezqX z_x6TuQPJ9^B(b73v9v5ycTbV;iyU;;l}X22(2oy;YMm<YK@#qEB;Rk*v`)g`N88y;&s-?{ZgNvPMXlzo&@WyY4Cyey<>fqfJWnJR5Sz-Q~ z?mtQ(5(N-If7ozB{}`qA(xksoCUjU~TRc1$QLjcuQK(xr z3?2wSa~auANz^7^4F!(1t|C;Fo>P$pJ&W-G8D%pujxR^hn$DHQCQgzUKl6Z3&VT5< z)_W7LNF!dufS7oVKt_-hG=enH+~^SNV^Z-)9_wM zkX>XuhY4~iK9Dn1c44svaPz;liU$-!+t;Y*4l806Chx=^zWl zXK6LH1-O>B#Z<%K3R(wOh3NEGE_6iVqrZ>~6x+{WDf1R$Unx2`&s5Sa5BKXu%o<)B z%t3K&FcR047kc_o#imn(a>b58DQZ7K7~^j9+6m~Ck(r>+CW3YZS@PL;!VV1lUPY={C_M?on4b=D|D`8csN1(~%A0+Gr;XtBZxkJ?o}0BFT8sKC zy?+mtUr{acJ5e)mS^8w=>ZjkE^O9C-D67b8{M%l&&)uzkYOTke!$HKFyErv?yx)p2XHoRvH3?%?jAthnqxUR=#O8t7oUr7O z0Lg{(0xl+u&L-Ni7!f0u*)aJ2mIc!T7VXy3jNtK9kRR5x=3US|9x{@(l5`0yJQWX( zF@k5DMN4AKve1EUaZTh(DZVdA|Nk$KfWX+B?Nj!Aj6xL9BRn63kmB(*y5aX!Gk-Tn zw$7#F9+`OI+tbMK&O&$9a3fOd#Of|FI3}`CY-t{%D<#lcA0gmW^A?|uyjpOcQ?xpY z6zXXl@dton_1aL7slM1d8M#;iq}BUx$Zx}Yrtw&~JqZ%?c$GJ1vA;W0UzI0~#t8oK z@bqxPOe7}^JiMqYyHBv+b`d#YCWTp$=Jy!-0EUh5>47;*$b+P)CnDEyt2C^Du;E@O z+pE*QieayQ*xO{UYJ<&m?zOjZ$4kR>oCO3v&}>pR*8-{cpG!9Bd7&e!Ul$-m>E zH00;TxqaLt`tQL->+quBgwtWeyI{JXjZ$9NpP~52kRjI%U)hj5g4tqq*BQc)d!8w5 zQJ=#*75Esxe*uBQ=}oE~T^^1vq>qWEH@f9XfEr=?q?7vSZnDxuC6Pdqx{#|}DbCeJ z)kSZ*$dQKptQm_O%joxv`FwP)6-Vfn^jV$vW^%UQ*1p;;2PM=Vx8h(mX|A=M<^F?Q$O`ZFEJ_#_Virnz( zg?mOL2daS04Z>|#f?z(+V_Z5_4#wKZtl*clPs3n&RPqtiuqRJEMAirD0hs83I^vx~ zWUJt;@rCpag%O_+lr!rAS?;I!sp8iTGLFeeLqb3k`=ku@IlZWQPaSI7w4{Q;`kM$vL+gEGeoh9p#_oB!C#E z5JoB2Gs8=aiMQoQguxZDB;L5z8Qx{$jljWgtMLZIaTngSy-+*{x|x1X7a64oIEVDb zoHU&`idi$37EwlG=w{6bIQfmoQ&>(>gE!1r7IW^^Q|SSN2_)0pPEHdl;a{9dUorGL z4&`SdEPZkZzQ*{?zcdeD^dXi!C^2w%QbQl%f6c9^P0MZFX00ScBiBE^nX>ve*Kd{C zEI~F6U!dCcR1+HytYvQb&Ox90T6v z9Q2l>jJ7%-k<+ncCS8=>M%Byh`oe}%0%ADqSJ3hEhP5zV&ny;VI37%cQlbf}K6el) z#{jXG)bv+=N}68KY?GVk7Bj6OeebQJ#H8`RH;*-)5X3XS_j5yx9~$jZW#z7$eV9dLBxMMhVB`D^o#@hI)de~>a|S9?7E&rf6YFJ;}#{R{dx z*m7a(dEdiYmJwJoqK?@uvct;U@cB*YPt8=%j5oh-f2IC?SFHTL>>4M1&)JdRs+jo& zBIVa^e}2n=qriLR$1(6uZc{!DbLM_0q~c{qIarLGGvGy7ez+1Pe>Gl{@D)OX^K_tX z)Z81XA1JG7a#i6f6pW4QFd*KA0Wl_S4O2K``yKIYu!55N$Jo?qf5%KcE#fM(l%9lt zlPFVl-a|AF#hL;d%$EbtT3^xT&B zG1BzoI3r(S67=w+r(lxFI1t~hHur;OKiFoHuci4SCwzOazi2MNA?G7g4@A36S&T{CFvx74K-Lo`PQF-RKT* z;i@IoP()T7MZi4Z+{q8oAEgE9AMK<6a+~4@0Aj5Wkh$ZUB$zs-#CY%|H)7h_I+uDd z+M~`i?xsGt=Vzy54q(plgymBU`Ut1K#X8r)F@Xh}wd#MIecEJ3lOlt+!n31JJPF)O zGYM4~T(M|i@!S~tNUIYz4&F&?FRp`Eh*(KxDJRAMahst3h2I6&K-0Ur=A zO|ssbhtDOWpk!C2Q=4OQU2uaBCnJ9Wsq?_P{m+c!K-eHOm{DLA}>Dcbh{`Q_# zl=LNvze}cn4?j0NMrL8EvhjeNtiXVQ+I1y<6N4qP|7yL<@Gt%4Y(SG(gjW(v`Lr>S zw+3G|RCnfpV*;n_IXMs05zFv{4+mYQixEW%-5FFyCJ#)}LJT6yu-4-S`v~7{aI}O; z5b+C~@A)gpQlw=#SntR_bF6=4TLp6#WT?o693+k*A;B!v(|-ofi47M7PolbzKCqr8 z)kA)O(27`+fDf^Th9&-VYEwuKWD2zTZ-C^($BID@Dgr&@;~I_d-*!R6c(nRQ6T@2l z#@({j*CMuP_3!(ITK!CXj07scYC^2`QN0IpD9{hS08I%@&_|GN0ybFni9X_LbO=H| zaQ-RsgYG#Ek6fQBx`?ZP8*OPA1Zm1eMD-pEW(n+uS%N*y_}MsZ@E$(U+DUMd%(e|97GZ`4jMg`WklM8$fR_zqLY{uC1YxrL^945v0{8KACef+NTld zLj%9{Z-adqqQcx?8apXt{m_+)iC72#30FY_Rjm(U4{(y?!cLNwo8h=~lbV zptZkCiCVY+dCsch2o_CWgyP)3=WD3cTCNOY(9AqKQ4zVChFMrXE*5xB;Cuy1bdtkaO&39kmp4lUp$EhSF?OaQNJ<3BoCr=8LCi4- zr!H0t0*ogwrW#XtWaYWLrSJ*I=(ixqN$aNR&Cn4 zVA~|P&`valxTAH6T9vroDK5A)lDOpmJm=hZ-gkx}5VigO^GkTQyPSLOx#ym9?z!iR zpdc>8;Tj~Y3&K@61S3foQ?Bcp9B z$8D!;?a`)2yYyRxFk3*}1}lVan+5b#v!esZmjXkYoOCcD?(vgzKn@y>%1HpOZF`MOJvx=`cN?2g|L^YjnKTS{$ts7b%eav6r zHC};$)hqD#NCfzVY%Kl4f!Hk&^247}zZ|W%J^&=5FfSqA2_unak-XHHI22jyF zT*P#@8(y2>Hfp*%ANZn){GVHciE^I+MId*GV_v=%+943G1K^G^DH-S>B}0jT7bJv{ zD_B}Pk3}0Me~DLO2G-7}b2=%lBt=upqfa7h&R@_KMSaDXTGT{kwuS{W`QrZ(c_s7M zoc{y5PPPFT{}&Yl?W9T5UntWm3EnKjy&P3%hrDt^9r;L43ag4et8&i*NxRC-$F(N* z4#u0A+{=+6!xh~>3#lQV2^Z36Pk2h8wQwn^*KghWBn%-8<6KyYB&=*GtW2q}vy7<= zJ4kWZC08sL;jd6UgkodL-($j-Fb3L?B%)Cx`Q6OC@iS~-xS(Lje6cG*fzoK6G+rgMUYnSu3$>u1F5IWdwpVDL_s-&v;7M)817E) zoRwmpqmpkIVQ38yj};vf7!a6iFZ+CRFuUwSFoVwm*E$Mis7-z;c>@|z9lK*8n-3A0 z7x4o1X7bD1K3iu?cV}{}aj&19r&j|ykn$muaYJ}+5oEslN4PQ08`eYHc*FW&d`qfc zBi436w6Z#O-T+FKa$*c2AofARx;**>pmw>mAmq{6BS1cU!$9_dhP@K^C9rnh;-V=f z<*YP^UyxZ*VD8PNiVeb#wm{jN*;??xcAEVkh7)*P?7!xeEoIEf_^Z`>8GlptegQiU zD)}{uyp{KXvt~?wb}A0corSpYN&W#oX99`yvUIqE$nsYHaXWn0hBe6T@Oa%!6Zks? zL2bl!1zscKdM}Nbt@jBw`Xby*3z7%p1UiUa(lm?nxR|%GR4~)LeI}ulS+l*DLv}*T z(7f3B2jxx(K9) z@rVhxALsizIk>l{C7-)AS&r2JdBW+b)Q-Z;2qOTUsO< zhwJd+DNyUv4^#C!MbV(w=}$f6?RfFD@KOCyJbf-zo^8+l6TS9y>%Fw+7QL7DEYN#t zPub$HsXdmra;V*M-@0{{myATt2zzY0ewb?rLQ)IVbXMv5tp1gSSg15Au9<+d zs9+HgK;yC`QH8w*f#_x|FxDC2#lM-MqnvNl8=0E@F47J9R!cU2<0*;pPAyWJjHLuw z_y`D;2on^SAhq;G{op|+ZlHYCCXi}MhGGCi!WzR`b0^IHNCJ(bwbU)?b$+)#(eK^0 zCrvGlC>+v~4-=^k4_n+NG6PZ3E=`5feG8I9Zb;x=Mh}!=AAJe-)5D^aJVaV63l$Ja zXb43f=`IQx)&WIb_J{bfgb@MMeY`}10t8u&nzTZC%MwcUHaHkYsRRLSA*#);Xv<&$ zUe3eI!A)TQF4I*H+d#L?YwtvxW7=)*N|HheUn2rCVq?2iDxCp-EfgsyP}rG6Kx8w# zy1&c*cy)@GE%O3t3abq8)WLo=M_nyT0khDSHWsMXxA}Toi?>~R+bH2DA~D&hkBZ7+ z*rv1|P`HTHh@ad2;uj%D zbi|M5{y!0$;wT0l=N6q}7dzc4?1II&x6T5uScyB(be5L*c!f}Ul96t(4g}{j(I9Xe z!mZJ_pm1aIpHIBxN^_ooo1ySbIaCRE%_go~be36kJ zG-$s6fDBtw4SFwydF-=l+0^K;?6}A&*7Dwul~1v? z_u`p-- zkHig!lk&V$HoLDfA)VJ(xdMgpxgQrK;r8F$(>G>nhyvV}U1@BHrz8)3jyTqNR*q!E zoL`HVG?$(OU|^B0$778{@9tCRY;oD7(DJF1%5w0h6vjT-HyriI)p+;jgp;{Cqua#3 z&E_DC0|Yq+MS(4L#pH*R;!Q#-;;#(@M0(!IeL*(dscBKEMu;FLrfl2osEnyip@G(> ztQQ%iM@MLe{4!x?lrCjSrOkSo*y37@FfU7-oR z4WYBT^%es%AF>q-|>(-d$YR>mOOLg#ce~)3KzmxmU-(*q7U>pu9f%BM1#G`Xs z7eewFU;+PnoowRBQgsE~ED)R#3 zUXx=YNJz0j!VsorXS9E;{VzL!V=IFmhkx?r3&-%6effEGmH)^3p#hBWPj1cwrQLP= zSpLM$c+1|4!-4_sPd8@m) zhH&cvZDChfn6zJ>0+pp`=LJRglktwUC9>SP=x2Ma*=Eo zP7=xX2*efz2TtId$;Bap?P5iNWP6Z!Rj3=JU$Xu11C?w~WRqdEl8Z>9t3R}o?Yp=! zkJxm-BogDj^SpFVxal5Zx|?k}#`cNl{`4FxvHn;vntL{$t;AY~gpgRJAaK}fK3a+O z*#puf*7Lfp#JY&satazIq$JiuiG%e^tal9yd(V_uj}(AxJ49loVwf1>i0GV!kJZi* zm^)NTEv1wicBNF(38WOF%1jpbFFDW3V28OYr6viNN~t3xnE6t3ZuJKu!ARFC1xSa+ zWO>1MA*58MHs`#|=_krw#k_5J(b;^Z-f}iyp|}3oJoy~nfkZz3p$M&y<6;Yj&?*J* z+9X0N^IAF%%soYgR!aS_a}3DE+Sf)ES`$cxxzZ=JE`u=!l}TeEv?g0cXyqedWuvXo zDiVqctv&j7Ttcg|ExQ*BVoDDH;I9p1rxxX4Bwafw2(IT-pQxu+e4Q!Z)$3h#4m0te zB8CYLgK2}dB-(~z;kzV4d`U+ap3oIK(#0T$R!S#2MfqQlJBqez#n%xcqJ?ekzs3*S z`7eDPu(f>dgN@>=dF!_#B1&Jta15kaqUzRL5>*#&lefv?%9eGA94Lv? z!1>5#JKx-RYnmL`{}?9Qtn0CAzbNyh!C5H9?EkLL7WD9S55Q1=R=a-DBz2{@ItPbx zb#CN=P$zKXB><`kfkurvBrJ1vcy(n+_wtm&VpR@{Rqbe&yjz9o!IF3L_gqUJheyjK zC_|(f7Ht+c$c!DrxQBYn9X)|LQD*G3ft67=sFOq1+t@SVvoOdBA6UY1o3Mn25X|H# zL01l{*gPAsje(Tmsub_kGG0*c)W3Zi#(F_(2u}advJ)u2`H1Dww{a!I3L)}``E+Bi zVA=5Kmj1se-P+xemxIWbKDe1{jjuVd6!HH(+x@3-pIpc#yg6K(E(@%oA|mK^qJp9|BYC z#+A%5fol-g{tO+y8#;VK0{o^eIjk`g|HZkB(j12bl_zVM*ChvpGiI!2h82t9-pM^) z%p@w;{p5X->yDL6Wk{`>(Z_X-0i}+&>?6>(^ilfa!sz+2+Di&zkdeLI zPLSQ6Bt^4HEu#jLlA#p&t@>GCX7#tvSbtcp(r?;Kk$X}tb>&iRtPTpdz0m>Wv;C1g2=%j<-0o3BV#*_) z9{bW`3G=Uyl@gXm8KesHm=LnruOii17&#t69EwDdm|95v1g5@JT-UFq?!Vi<{~`T zMBhL-D;A?osE)m6_IZ~>(NgLiQtA3g4lQMmSVw!z&#XK!cM@w6fBUNi%Juu(>#Xk- zotT8+iM?wm!rc1X&AEXhsi8z zZBY16O!-gD2Gi^%?}PNGoDach9APhJ!i8Utn>p!c%4_a~PL8h=x;dbqu90**jq8!@%6z z3FjD?O|Jwvk;1Jf{HJeXzs>aD(Cg0~a0aj30k=QCV8B(yUdEgG0LmOcfG)OpJqq`B z5RhwhB*YoHV(#*EOb4Q?==1#s{s5M4X&SA*4Fh=8mZrJWTgD@eZm*?}wNSDv1f02n z4W?J+WmmIqZNW9KdM%iz_k_t@hI@7U{$h;;nj}Z{U|DINKTQ0+*|F`t9AXn%ezc*m z6#e`S!7j@-&;6Q45{2rES3Iab)O&&IE!@afhTXxyh)rc{LQ0ZcMb}IycOid^Xm@b(e>-*xc2aKDM#cI&ab%8!?9Aq`lg&SIJ{y1g%N|C%^jhARYN7D3^&qGcYO40MajGy zMQL3ht&WQx0G~i(nRxU?!bhR?OTyRID`8o)`74*8YUs-57 z5*?Ga$Av$1>^x#iG~gq%0`(YHO6R<@P}rV^a6w2%Jb~PD@6P9109;6L|B$_h36U@G zR$YMXLdnnekcE=jo6ADU_FI5X5p;2;c?D-Ow_i4CCKgH5MufP8KIfl&^W;idN#30@ z*^Rj8^*Vd);MHAKyF733hkiLn!TSCSs0qN7(I2T?jr^BQib&-V2T?rDmDsexn20kO zcX2)%riR$LliKti`lZH7431c;Css~770dJjG>x;>lNtkl)9i7R;QEVzn1K=j2S<^a zE#`l`E^WOt+xjxBeRTsxJgdp`9Qv=fvP0H)HcOy!3 zo{e~t{0%iqFMLr|{L~;6oCFJvy#RHZkr9u4lPbErgeJ^NS)rN#?pBauTSKsq!s0nB ze)97PvbB0zQ#P{nBMV|p1|{x7Wk^jmAG|?h_L(qdztMb1nicysbAYdC4QS$4a11Jd zS9iAnC@%W6U+c5i3@ptgB!#tNM^Tq;f!~n*#5*Hf@C@=aEAUzZORK5) zncp#SGZ+_DFs%$47P*ZwB_W+9KLnbKUu4~4!Dl8W1z z#mbHFJ7HM3!Gs!M<#uU8t=#7HufxjyftmCVGT>3H-0A*BzVnVSJ^ZnaC|R$)`I;&J zNqaMi#Y{#O(9=i`uwTfi0c-Oa>pg!6Z_tbPjlhqNkUTP5e&gx&*^AZZVc5ql0ws$Y z`Pe6W?>(kbiZ`YBz#lZUF1gf|nxdV_Hx@0#^Xe$ys>zt63@S`QE*)%%-(>7(BaQSq z=&LM65{&fA!9(gm8}5;No30WYUnwYswcDD_jD5r;*M&Sl6f38lG!WgMY3$-|UzDHu zL*@uRC?BEyw+k6 z`dJR?EvDIV8Ozk*y9Ak}A#l82*hT3`?xN}5myOj=mO3S&t!j3vo%Lt~%> zj`SsPs4szIJywR$DQq;9&stoPlfkVsz)#0kDihNyA|F0MF7bj{jcb)U zU~lJU*peAO#Ro<$`3Y*FiLnpQygnou*O*?pVu=q6c3@}a=|oCGHrt*}hAVNJ+k3mv zg;;?UQC6K>fyjjRYZq=UC3SP>HVJ?l{?fAo*txwGTK^yEy|~0VhG1=xjzDE^KTZ>q z5)T@?l8>=$QUTJTl{pxU!k-Y_R=o2 z57WJjszMo6DeQ6Kv4h{u%9GVlT8c%Fa;(22JbO*oM}Z4!>Lo6RyXYygI3V>F1Dr0v z&<)WTz)nZUd|-+JKjwl!SozwVW#o3`rLxmXP>i+Dd$3d_W4{OW^4A7Y3~=OrbPWY_ z#CPngEVquIkjkY)rGx){55@BA+#%uhX+Ma7<(t@J04IfYi)Uc{LVeG%YR<&Hn#F!b zBWWf`jTs9JpBqNyPb zm?wJ1jV1zPzV|55zE_Jo5XH}MusoWw^;1ZMzXPA-d>ICcl~#&iD#CtK{iYC*W8+~;tgq&F~T zHC`~|mGa^g-7l`V1s%9pG(sRH0?fVB#LtqLORY9NPsG^+(=t3TxStsNiVG{tDRDuj zK_!)C$wJE0z9~a}ZJgW#t|Et4r9$<8PGSS-$B7d{I z_DuWpxZC3to%M{{5Rhq(d9me7H3S@kZ7{!B#<4DBklX}qv-g;_q=~vk?+hja-oJ-y z^^{L!Z{A>Dnx}Jn`$PQ5HIe_#);|8pF^xgaSWgmvIu01g)Qr>SuR%r*>`qZUQL?WY5>JvFNo)Y?0uTTB@ zG*h1jaEY|9LHy0b^$u-5mSDy@iscd|(8=9>nF?KB87Z(Z+J$BUNU5yQ^|8s53>xhz zs6p<6HsoDr8#5Gg%O1Aw74pd68fYXq8;~*~1zDv#OKap@6CNPvN}4rGL2!<&tx}%# zHWY@RAthRVkUBVH8WxAqM;34M2$BYcSfIBFfW1&}v1d`wxW>*g223@jJz9r)WKgZr^pBvyXG5dXpagy(4Yo{0U*t$%IC;E)SOGH)X=nX% zD_r|zeBBRDT7|u1nAezyQOp@3gx)Yav57Vc>3^{EAVZJnJd7ohQF0>wz$`#&gI?B6 z0)Uf?K6UAnP^qOK7!dd^>(MubS?Gs{{I#HZ>hREh(H!2qNY4jy(s`Rc8JsO5sR z-+{AL#h$@eMevJeYkZYYKOxhL38_Ji5cc4P9Ft>gFjbPqVUrEAe6QPaOG?8(zMao2 zZ|@26!lcTZ%nNmTe*Crk8kb!Wvb|d}>RybB9zIlv=4gIByctTd#kEDItY|q6*k$>V zgG46bRIXb%PW=!`HFDnaO>m^&Iz*S(l*)5l5Pr6H3!VeNoy|v*`c;HS!Mh;>m5bU_ zg4imB$n>^?tEXYvb~GAdX;csj?oNRHaoB$R18uR{S>g{huce?%TLa|{BnIOQ z($~8NY!ycn`+T{ReMp-wTl)6V&i@TUsfQsOQ13Ha-GHa<@$?5iZNewebwN9yRwHHR z`RAU0fN!6L$c182?z>Md%IV?Mefne8{6v|#5?Rr8GQ-D2+;Jv=btmidhFxZZ|HjP$v`0H z*74Q<-q~Z+Uo)b9nhEB-6XCe<^!x-W&Cv6sU3eGKMUfHO{xsUIc%t&>%b@C4Hcn{% z9}M6H%prPyCEO8e5D}|m9$sbB@I_+RvjweD{x4X$7Nh(habvDqq8c@qKp}2Y!=pTS z3SMJ4FXSVuziPM7*74}}mP^oGGw}*@Q!PXj9O~`&W2h^Ib{fJA0ez+DC@?tap}~rt zEm4fwVJ6i#!~x>g89m8kNDRe#vPY2Y))iTuqPqLhaJ#$brVC;E+!c8dJXaQRAr{r5 z>*^y;9j+fRrd#LJF!YN6ON>K+P2X>bBlVoz-(QY0V>s~+n^CEJW6fX%nu6vajMVMF zqgjyn#QIKQWie+vq`_?%xAXNDLOq*?);mRKKjAhH73P?Oe=zRmC6AS;2;8reZc9R` z4flEN{zKE|DL(3Mt4ocs40}>NID?PQ`T>(iXOP-f0!IEoXuS0ZjliSc8ng!Ueh`o5 z>IZ06;;rtO78+KwQZZh_=o6MpM;R|!%t|}Z1`=xxqTYo_!k;Z0s1BOb5o8FHIm>dZ z;V~5LnYc zAIE2*`enE=H~m$qep>-lgY-i*I18^i2#`4vzqB|KKcP6%{s1~$@v`OuS!*R?EcjLJ zUqHLOhA(2B18in{U(kzBoYfpoYL2nT_b<5%}B=_UKiXc#TNrJT|blxVZY`Vp9 zv7Q?-XCAUGgcDXGl|9w7aShhfe7=`Ay~-Vt2LqU014AkN#o1siy{!JT81YCcw#_Mj ziOmid2VDZ*-b-v?`R-m6lbu>hpn#V^0mlk(@?4e{?+wYt4Zq%vCoCnG;(`*&cqx&k zRy6^~tmkjETEDabi%55hJ_!p5Mp-a&b?LXu^r>5)uGFUlp5jpkc~^U%Z7Tf6+4j`V zi7)PEyOkFd>DtkmC%xngATuMd3n$J1(Hc)I<@Ewy}QbmU8Lnl8XexglZ~{ zDRiV2g&hKZVW+?y7BvA$2)Ft>!~|@Z{j@i5Y=k4mWAivX!NDG}^bFQ0OYGo_vLzgc zJB>4l5$zrMXteTaa;$Vi!~ZAUl{}ir=S;|78(97jCXbd`GI`LC#Ds#;fQD+$r&~ z?v#+>iin%&fQr9ioM+_amW$|8reB6XfyIfyVrOThUAih5SkghGQ2rzF-fyt`mcAB_ zEPXpKlK*@pA4f6Tr4e7rgVXFuGv+lO8|f50^$?(p5s?YX_Tp`R7wbdS&)3mQ)K*%4oFW!#OzJ7qVK=#cctJ-=IwJ+YP z_C+yOm3>_`vj>jYC8#Xg*QugaXb|*13FD(x+jB+qSl7=BC@gg5p>Ve{>R>@UL%$2j zr9pskgtAo`p^y^?`k^H4}uqu2O9jqKTW~bjP<;w|YHlh-wr`K*1 z9jptPBk^Nh{Yx-&$@fJ6;=Ki3^{+y{h;`1F_fg3yYSa?Epc*Ba_x|ET>R=->SE3!u zqfF}d0MsZJ#gl9MB*2?4T*Z5dEH`ROBarN6qp--ehKo-ZEvRLiFox2yX}Uw$ycIq;w4!gMcvv7%6!N{Xyd+x3~%n2fZpV;;#1J zKsYcxAFVYPAR@{LzCVo`Q@S_VkQ+E^WOs+M9QDvAN51l|KD0{t)Q=k7@FHMtP7nh1E&G8s3>n zH;c5{g?p$IGPcu;OWzNgS)QKYr_N+A+%($$fwA_34IaD!^5yj7$B^&NYtNLgvegd? zsx#FHJq?9(+q7x~IGpmLFY;{Y zh@Jj@>kO^A6DUspo_OYT!(SW5{xGf>3;UeKqD82KaXJrWa{U1aAb&%TmjVGyYQ7a0 zDYz7EEyL2oFs>0?^Kh-_sssiOj8V#douaGNa5SWA-R7R@UyAQ0;{rs%Q9Uzq?wv>| zY7ulM5_=H*k)(lhEx3i`!@`ij^$ zzr(BKAO;3TDw_^+37c;=^SJsjEb)Kls|^??$=8u#YGCoAdwkfu=r`3lm2+1I=613k zCwJpp1am!1;^a>L^CVJlLZ6OZ%x{QL2Ui#lS6m~w;9Wx*?g=7c1ew-_&9=uOYrJ6y z9=*eWl7sPvS1}likw^#Q{wK*`49s03O)RdCHNgfqD>%O4ciZn~`RIeZ_|K|MozDzyFWku>MaL14F>WHLs*GrM*u~XG+(xU!8*P8`%c&F5L$>8y{8{ zGLs!B3x3T2SL>PsAgdg_CrhtAj_uX6PMo5D{T7ZWhv1cxBx)^s9xlmSsZP{5adeY&jN>q;BL@j58iSLz-=NT(@9-77ll`xW2ezQA#7kJkX!Gkm-$z$ zeKTnf3dk9phzS>|rXdVHV#Fse!b+{rv1iG}aNgO=_u@9b*dDHWE9~ghZzON?b9|$3 z&s;nZHa9+_uK7l+EffMnGXf#F8yvQE{gx2oJ1)AA+4Y2pIXDnmQZ0*6|#c;2HL+}aa?Sr2MC?{47Qnr!lK{)(2c2W3j>rQsso6(I+;LFD2G z^A|%i%U7_3HLw=zYw23Trgivb~t<_sdw%Lq~K@n}RhdP91(jb;g zS=dlolb-ygpd$z6z@kJM8fF?y6M9fQOi3Zwf`WWqsP@Z3YroW@!*V{FKtT(XYf^$r zQE2T+IFv_?Nh1&^1Y~VW%R(}v@fDh~fEPsvo)+rUfPUj7h;Ku<2&&S~J=4v`VZ~?I zhHm#PO)1Cx7p`Wj8A^d8YouRO6XdfOPsEssRn7v9x1ln1ZR(weTkI?#qA)iteIA7<}jP%&!jdtp~AMecd$OPd)#!$?^?l;n(Dw{n6 zhKf{to%<$lfIa1lsbknPcKT5kdq!!N^IP^ud(8XOw7AjZ>pXs8MtR4>`7k7X{{*8L z)tjTYr!UadN%htE)2PR@UU-On6Q*Fc-+~+g-wWP7y*B4W1Z@BQ_IV{Oh6jf>@BZ8h>Uoz!3=Z%1MT=5k9HjI6HCJ%#}BcpdnD{-#}F^DTgYG(RnzRXM{Huuaw39AQFf%svf zfG&K)GSxy};PIs=4#(=6;vM(nRq|IvcpUzr2zMnG6a?3R29UsWH~8hMFSyAFT7#2& zl>|7IHlr_CC9+aj=)#3RWa~yd=kpeeX}Cy&SQ6qx8=lPmm6KpnYoS>U_-P12v%9xH zO~d`}(N@D1uws4HF$6}K1w_^d#c)R-9u|dCR#dewFRl7JP|si6;MShJhA-ujb&ocm z2s4|hiXT6;d;&Ls63Bwm-`m#rglC?88-+th9#y%}Fc@2qU>t85}*Zg(CW_qwwb_cV|7!8|scCxa8} z>!yg6Aiayp@1;oWn;fkS7XjLtj&aQ?cUm}J*#shv9e=P6VGfs+mIIF|D4X1TVo5Q0 z0{qUrFe?!Udy1W+n@|s?C!B3UPGs&n2;vt#)q*u)EZ&4c3@C*Ir3Px|bgG)gc1#TZ z9Dy6kVZB;`j6Ut{u^&=<^YEXkzoq7=b~z~^r`glo%AvWjG&8fx=Z~*S+o@TJ*=hABD`=wRADK@bM^!KXvW#v`to@_p?3X?Jz#Bq}{ImC<8$RVmH z35(dSD!$F63?6ZhBsgvon8d#>yNj&gk4*1!iR-~~_!56$ESTxta`DEIRMl8LUdx34F?KK=t1AC0DY_k8^D})JXwPw?Iiz!^+TU!=dm+K8~-j5 zx4)Abv!th!kMfPV)P5?@Uw&142RNcH8?R>yD;B#tzfwe*o z=h5ZM^Tu1={#ZdUhmBd@PT9(X%y=#YM;utIyZ}aIZ$0tR4Ove-^uRIj(|J}Ve*9a} z=Df3jz2V7h6j%LrjLHyc9Ku0p1dDnQCTXyWQk+*$7F9Z-d2i6zOv|4*1w}xA_1XB- zeHhV@GKN?-e%L}WfX6)4Esu69rMccLQ79z>Bx!>NG(fEH{WA* zE4Fm<)3g#VgZaf*D*S$`APisj`>j-jMSMkpGce~TgjOU8F2td4rVPXPz=v8#LVTO2 z7D`ribWYyMYU2&%gNO64Ei8o}&2b}gaEBA(n2nm|Qlt^-M&;)ira9MvUnE^%iFWzc za@yu0)6`Cloq2Amo|*x4a;e!gNHq*+8V7Nfk)C5TjB5hVdARng+{VLEAta3wG=OgW zhtCn|gcPHG3X}Ol>=Yb187vz_aNdcWZA-CW#ZE-0qNM;8%et5dLA#i^5!L~pFjQ2n zm>LK8iuz=(V!jlTxM7vr31Q5i(;rHkKi@jc&Y$80j!t%Rce@fq9@{w5cSPO}%uABI z>w4LKEMGU!G5T9J1YN0rgXOZu-wO8rrv({{w8a=*u3O?({n2xWL zZW$e4nEzdG6`DYOGusLfj4OG^>K0&3O0GT1J(WUajbI>>4OpgKV#Sd7BH)iOdiC{5Onh%1Mfno9_nc_@)DCtnEh7h4 z4tszs1X2ggWfRGXD;J__Y!AYo(;&F8J;*W$vjq-lLM~(=vgpta4)*XpM|4w*f(6-h5{ySi&sdL~H{L;QGWDCwp z@0sPt)mKF-;L+XUB2M09M5F(`=gZ1Seh@c5@)`i-kv<6uZ7lioX z==e(>JF*pm9YiJV$Xc%>8*N9*#5#z;HySNhDL#VZu+S9KI0^z1HwxraeRL=V6x`?DlHut<#X3y%m;>c0R~R z56?%y@24JuYujOdSSHjXgES@`mnzQ3kD4g-dXlyQsO<5o*mH=47eUY_ywJ(Gk+jh# zt2L}O;>h}vCxCMzgyQ$h1(a%?d3eI%m$aDj7IBe5$q6PALy&Ii4oU}LyD@?Ei{#1a z=x9Ij2Uu2!)e-us$u6Cw+lISads< zOe|P|J2r=HQ@{$${S0sewE4^w4~iGvl&6{t%x4$tvLKgWvA!s+*Uij1m)PaQPiA5H z@EMzq8%~jKrd(vx^GbY{WyU9&?sl6_LW#tCo4j=0Zo1zy-CUb)u5^r+=g8^HzbQ&+Z%yR3z+PIp z0_>?S;s`D-6_`=8y($%&9?2cnUL%Up~dA^?gViR!y~(PgkMy$#_l+mjq- zUVmk6QdsV_Ka$Gk@kv7~+10xR@?CcHqB5p76H%Eh54LZq!P2cdMPkM(MY=$VxQ(QU zT~=NJw=@XnA48f%=Y){bo_{>z@M{a(TG_6n;gZLK?fmb39k8{`^})s%JjoGfGh5hB z-2m90KK<)}?bUW4Y})`fbJXs#21>l5Tl#s?&QItqJD==>%D7KoRxOEK&(5RZV?y&{ z)pDd9zhSFGiYt-h05O?#p+q|@%*vf`Mo5~!vdr(7Nru}3r`<9$nF<$%DvOLni!x-|&FG|0RJW_DsSCL1aZ2GG5$P3?IpFE=dU7s$E za5Sp?`45#wYB``0yHjIVV(1D(N-a|$H%4dC1y_p*k|3KnqLm^DZ&d^t#+?;GR^S$_ ze5G7O(M%ITwkIroGUAZ}<>tOkzhJCJ3J=I#qfa_j*f4Fb2to@V0NFMnBFHbU5)tIS zn?(dk;G4Pf7K$Leg-vD;6+sA(oT`Ma1R{c5a)F8y8T2jRcqC6FOvU3)m z%xOa+PRRWdWF8?-uwCim#7fv~z&8bT5GOwW>{E&pd<2^&3avOH>|Di(9(_A5abob| zwCUaU(7N-azgWEONa+{X9Y=K|_@Uvu+3RGHB?vhnGQ8+?BIKd2vO+M~rW2B_$mwZN z)U#grZ=WqtG%6G`aj`;1lYH0Ht(^|0Hn*N6lVujlw7O}DMj0vT=mLbmppvu5K0vRu z)G4~1_yayKtMF z16F_`ufv4S#1hOVZ5gVgn|Vq^Y^CalCrfqas1nT98TKdDr#!okGYc8a8|Nsiqs_~8 zR9esZYEM~XAEv+DH|;%kgEq$-K!2bG7RGmeBS?~JSrR34$m7fmXag6#qv1?(3{IuTs|Ad9Yao7L19mc4Crwy)u zuMJxN8>{}#qq4L=tNgen2IK`hk0n3WWGipI_&gd)#JKT!{`O-X*QqL6sDp<=L|qVI8G2HdC2gqk5DfjLZQ-is`tNyQ^^ z4y>L89sjsVjefyMy=hO1#EU**&^;Exb-bVNrW~YPi`tdGi&$!f?;}f?>9DHe*{-OKV>?3&%FvQR4IGTOmw6<>OwCN0kw+k9#p*@Q0~_ zx1NED@6qrV;%s7|%?Ds2UC57OnyQ=yp>Q4^VV7FKOBPQ)k)U{to3}ZU zMMCB&H4}bKdwuIHDVk9o+N3OVQkXqkz{uiihTEq>Kag3QfD*u@lPVdHdi@BJC4{LLbL zN9L6fFp;KnP#{jAz+e7oy?pfyzeAZA?~yrr?u?wlGpEj5bQqFi?_ZdJu;H;6VVDi! z$=tl@1S~Z+L9D$RkMtUBW07iM17-!KCE^Va|6+WKNua&BqeqL^&BDe|DHh&t;JE;% zZWesjv=ns(#L6oHhQBxqiwoRp*^Nml0IU?>0T@_HU6c96ho7#)j*LpIfy;V&1YV0l zK&A&Ng7FQV6fW_v?k#A%(C zf=T!J-_M;KX(vly8KMS?O zMlB2aEFQ8mcM83};TEzkUiqWIl7=5gmcAZ}R z4_&XLNo~Fw0-_6zfXE->VP9>yr|+U3_H{l6vpgZ1zz=YrPHf&%X^P$|xMJ$9Z;p`Z zNR_LjB-jZEceoiE28e{hbZaXZjjV2pquyxy#e6cNke1l!?>pTS6m?fvYEHNNaTW?0 zrg#-WN#j){WB$Oacsqhubz*fJWE?V=0WESkDZN?hEu(_-New8VE|QH!^~s1A6%$;_ zV~RB)STqx;)6^r%1C~z0QZ5}?Kt(uFFNhQMd<%;aAAh=tWyU4C2mD5ayArq?AN>^J zX+v1eV@F3E>`v7{<2Fj|K$?t>P~Jl6T+6X#6kQLdq|}{H$j&bmm0$(#!9Rz1QI%jo zZ$aj|gCj#3;~w-r;4%3Kkr{6YN7`q@m^b%1W?P)wbxRs^EZf;K$3HQ(Q}FN{4qY%~ z_b3t1_Xpv+rF&d>4>*%av7>)`(bw|u5gyv5WTu6cSgxu^g%HXsL&CwZeG>^#MQ-H} zggca{T5fgFx{&$TyP^^&kPxktrehBdZddXRk36($DF%>mtmNPDp>1~YgqCjxmdw~5 zgLTLF2|K}axEO;qlD{I7-+vYoa^Fi}$qBoj6>|t?Bo>{B%UQ9Gt>mdwDqJE>Ju7CF zD@lTskFe?`QKrPVr|}ezZi9zd^cmcz8sU-D?yEWSE5oFQmYvf`%D1sd=YPN@Gra_S z8A|OW@-3>85uI?V%Xc}JRLOP&CClQe#}UkRhmaNc;%krK1wyhicGop{V|TRuEO9xR z4^9wD=|zWqAH8Rza>a{jq|-0TKwMQ(c!0(Sw(+S3h-q()tsakQT%Zgu_yZTV)FjGq37aiAxsk#kcAOy|l zWfYF^7vTsNY}tkks;HIrO5tRdX5Du;M?{E5@Q15W6u2*^ZA_9F#+5U{b0BbO1Z^LU zM4ZlHNo7kb`rxO+BCzkD=Ou9PMGDZ}!HomKql1Cqu_27S9&D9ZfsKnl!Xb7EEID#}gdMne$M_7eh*iZEOWz7s&Ehb1_k=(9X}6#h<_I`7t_am6Go z;4F~_f=5W7#iMfePb|6?^#>M9j(O3I2-@N(v(1ZcjK6USjvI?|%_G%Zk0f9CKzPYa z34FeL7LqK%L{)+b3rNVqQA)v4%H??2433hEM(HXL$0a4XQ*`pSF!&hCv?q-l5l+k0bE>GUW(dav$KB>Wj+UK}v8W;5Sxj zry+=BWLga#e`Fl0Bz7HEd=qSKFx z%|JaQztu+;PiVfpf>cA9Z%6z&VJB!BM}8B3PS}|`M`-d($%9zO;@n7Q+L#&G&W@R# zxri@HN8%?WY*9M)Bu!B1sO&}{csyX@KVYB6899HMP&xTskRhU-B!xjZ4jXJ%Z4QMZ z%3J6ZKWFa6od!=J*WM(r@mv2Tk4x@&4_Az^Azm<-$y4tzE(|?~R&uQHg1V8c7`GUR z3EUC|$U&4tLp-4Y(8A9X8O`su+B~Of>6@XN{5KKVn?+XKk5oCyli2np(bw<>ad6*| zOUIkI0Iuj;dhK{yuZsvTz$Um5sLQD0pb(&O#;*8t+HT85zSt-b%zgio8R)iX0H5*n zG@nYM3VZHf^@+{Hw`=u@h*=)p8R_#-)at6GZ zONa-7#SbH7ZzTUINdJkd{1sLCD{1-Y!?u*BY*sB#w z-_NUwnX1^!RZHIu0_8!#-nVohuR7lZ7C%arLpQy3BR#xth@~#Q9m4H=z3s-RPhiyd zV@L7;4&iO%>%xvExrk2$(h>lKtPA4;sxOr%JB7KdPMCBCT?jd1!el;k5RMB1;Sl@P zh_;Lih)W0$^09QDqogL9E=c6=C$Et65$HK*3O zY>Lc6*_7Rd5!Wtoi2RtN9l@^Qk_-B8CT=Tw*a_zJA5`Z|ohQAA2D7E$*wRZe?IjK0 z1Kv)Yh|6)I9DR< z_rdBo$Unw4y<{KjeRMyv-VA%af0KZ3|3}=Bfh!z%kK;VK&WmL{-^ahRobR%T{Q+st z9sei##{ZTg=gAkVD5hLaQ`#Q=sSuCMbv2#yjNYp*yaxsA8$uUe0Pvv zGSbl8MoN4LMMk}^(dvDe^D(ulo)*@fG^zan$>|KI71Ki%p!cC>t%za1>`@DAO#_Zr zMuDYLG*v&Sk*SRlrS2XEpAjMX2^Ou$A*DMz1!xU<_TjPCLY2ggS^izMP^kd$g83z$ zL2`MTO>-a3d8heQ480t@HWwht>LZH5+-U&!WA$)X_kc@>#XB`we(bt|Kik&b|BEv}viT&`wMH(v&z}d+2a@$7?L8ZBZ?NZYjl| z^CrhD{|9Y3^M9+Bz7eX*Uj~aHeC}~tsjV*F8Ufnrs#wZ~Frpf(i&vfzlcpuFBT4os z06A@#r}`sK?)l#!%!uj-7gt?Hgo`W9TnIeRMnIwF#i{EzCml+AEak)X#xh$WWM4Y!Lu+q9W z@v~20apk^lr&fO3?bOOr?Nof7JTH10k&*lC!`i)bcOkEEihA)3XTEE3A@Z?nCV}eB z<^2q-cczeYAi4;zYT}b7RmWDDt!hDk2rnYYc>z4I7I)RL*Gw)xv=2{cu4^BLE>Mds z(wkGmZe*{U@QP(_aK|lUS#gIInP1Of^|{M$0KD;nK3w8OPvLL-+Kmwa6TZpl%wf2> zqVj^fnFwJ(O%q~9RmXF0l4ps|NAOMlHkJG5qPUn(VPuy!awCz7J$y#x4!ZZ*7E;*1XC!O~~+Gr8yJLnB$e`RjDT zdn+rVV1rl5#{iv+gARN~*KGxNOhNI5Ght1b8oNV!!tJ!VcS`OJ8zY0Xct85fv{C;3 zf{AMJK9LJ%PQiP}W{z^|ZEE!{1*rZ}eh3p++z&`_%q94v_TjTNFtW$qtXTRkTGtXjyLJ{f5FRI_+<39&v<%7?p9Z)b=)5}myWYo56tc1gyR(L`(5@QxJ!yl zuc!Z*IMshioL+++JFCn#Y(qTv^k0Jj;|1TtC0=wc{$dbT#=fYGy$|*z)Hq^D9?C2n zk}r42kla_Ey&?JIpnpgn!c9Or4pSrZHS_0(sI1*eJ_|o2`~{Lafg}tS_72*sgVAXO zg0qi5IVL#fkWk`|j6cUW{*ou5Ubb`ZqpNewuQnkN1(yrj{F7TT>dZ#=im!-s$PbYP zWS=g^-Wxs11YbV zhmYv{ZGVBjUx4Oo6v8|6weMq5GKIk0J5h2~ECB*0Q>ls(O9D?U0(L%iR77S|E93EG}69yljigBHyDV1AvmtsG_d5DEz!>vn^Y|wD6P0B2d@W@ zF_jlc#m!q*#h$8~vnnTtL5v5F287L5rBUY=3SnUG|FF?c!S|05wsH?`QAzeK1lr2U z56AOiTnSd^FRh;NaAe(5yr~Q-YJ%%iAAes?!83_GLLfrsZ7V6_hF z&ieolPeTYo4UVq-J@;vSQU;OxSA8ORE{{@t0_BKCcpNoC5I(RODIM>Rs9M6qP;g zXfrQOLzLHR5#H0Mm+kj0>{zVzz1Wp64g(f{cs}O2Tlh5D_jzN!@Naqi5PsWfTOL>8 z1vI^^`tKdb!G`AO*J{x6?j>c8yE=C?G~ zv(FkY%t%Tp9moE~b{VKSEeJK^kimkb3PQJA{Y91n$AeG7$L&+UBtD&@H>*I|Dpi@u z>qgz)nYn*z)czG-6JNy9#6=ojoT4^VV*c?3#=d zuy!DQvKumxF@!w-O~pr>G}v8^cjH_T9|rhf>BPrE;KP`cbVW=zHWD8_Xv_*U2C+-B z<72nL;$O^Dd<>aC9SBjx^~$7A(;9PSh1(9ok$pcPytaJp8PfI~i;S7=@ss|Xcfw+g z(1ry{7R{%Sf`D4McxERR{&EOlrndoT5ig5QgA{-XtQbkm=F?$#lI5fc3Y?5O-;KDvrzC$2+ob^Ag6 z4BI+LU#KIZbujwz^bm=}zoB%|M3m}!C3LbLw-Jl~03)r_OMu&D=^o-ko5D~=sN_6A zc>`Y@G-*aK5Ii9SVr`;^)Cg*=h4D&DEL!(Nv5nN)AXkqJL2HjkSq|W(NNQ~(0U$e2w~Aqfingq`s55;tK%0y-aaou zrzHwqx+sBw2sG(d$KFRwqTI10F<0;P{#MdA_Rlui-UhnI`PD^U-DPwoEAig6f8rq3ZxF>(p-+3CATvx2$Npmgw;pK4}ObHWIeAOf<2b8 z3$RUIQdh-h4_5>V53E|Ztg5{)R5RtxmZy-PH30W{C|Ut&A%2R{bRv^6v|8LjIj-l6DW5d&W*3(()3v z%d>bWh@Zm9jaWA>GEC=g1vza}8;Gu-7Vy-_lradkhmBN=P9&yl>a-ir{T&m>V2BM% z5}04=kyj>8;0^nS|9FOsL2XH0t@-nFTcD~oU}U4f+^AF~oD8dj;_t|nldP5&0vqv$ z#y}9>uR(b3YI@|Jha`AndOR)ArvZH;!QFE14;^#xqN>;{ z>q7|YB0{_d&eA8_zv<*OuLrM2Tg zwxd|}nRNJjCA$m1%n?5LNyyb>!#@j!2>k0A4$rIx{Aoble8-F&#M7~J!4z>t0N;o` zfL9Sg@fQ6N4`aYnko7!4iHD!6(%X)Mc#`H6b37w+Z2YZwJqaPp~A(%Vd ze`CsYAd?6&*wprX3YF3h>6bO$5U4dJNKse;9hS;Pj)kFgPbr@rhqtgsmD9hM^BC0@p?!5| zU&p%V>WleDB=WOfe>E$^^q3?L)b?*BdkI^y`UQA^FuUx*)AxG4F z2E&@~q>2=%>HNv_*GjGTr^9P!w0Orby4LKt>Wk5e9o7DkULGgeACFqf*!WW?2J?gc zM(c_VY@dUmm_J+n!6>a78=m%Fvf-TOom_^TV#1a$o4gP6N1>YR@xjvZm69lu2ZC-7 zeit#{vUlsa@t0nzV!y0jT{?{9guMA=|#^g(OB+nlkKRC&hgE`(Qll+uVBk=6Pi{|afrc4WnZ2U%^OLdZZ{GW(A#GgrCoXtt?O`vcwP*33UuS#9qOYF!zEXQS z!vG(`H2bG|%14;}BWzDe#5v&5TOnhl@sFe8TVUz-L$fRiF<{;DswuCuypz4hMz<$t z(BJy#`{j2>Yufnf+Y>l(PR%Xg8F_$x6qv_D&*HQPspyCMp{)DOsAY|l|M&z-r|5A+ zp*1r{EmPyaV7uVx@pd=JKKumu9u0(}+K2ZEd}aIaBd2VreR$@*6u}}Jp8(%RYaxE< zQL>P)%|Z;L#esW^9OW|(`}%7X`|!rdlW9*y(mC(6Q7lcl?XBNFeDBGEj}5R7?*Vfi zoNwpN7vZyY$Xv0@2pjRtz1-#y7O@epr#;p_ydN@Uw&%;*hx;K7!9FaP%(yCVA1|hm zJPJ&MVu$3d9)>|VS*(pXUL(`_j)S+>xAQ;dtPVQ51lXb9@ngN9B_C!ZvC zVV1R8mX6iOy;#c*YuQv-(yj5{3F&{!BdK+0LpoUn%n$;4*RRAX%%a~uasX_$D3d>ofX2P(bjX)5>s%mOvmtR$TjC?nu1&3hI*@dg=}wr zA9grvU8J=)c1I&hfmw`&wd_53fomO}#lo=z3K#xHq;0MQAd<+bx0Yd@|6m_}+qDn> zZ4WpD#m=F9nAJpLmktLC_k(#j(*B^Bhp~_^RRF?z&;{UNkqKE;vvG23ore za4Cr51#=e4g;JV>v}!93O6i?>yr{w2vlR>BqAb!3&8~_(jybfi8<(6M+KN-YN+1~) z3{vGs^H~!N#jRnn5{pynJir7>g~l44h1#PZKokRLpGl09@*_wnAGn6K`p*x{2k+Q10M$ z78~ZAiy0G1;6UBQHX)6u`GCosg2Z?)UFj69-V?8?_zLkfk(9rPbI5f#OwhAWNoCf) zwv%MiHhZQfU(?iCh0K3yndM%S4K16)i4Woxf z*5lH{DE7+xSD_v(V-Qs_u{;3NPwwGOMLVF73h61`Jp<2mdS|lA{XN!I#9R$)3{|n2Bj@U31VUog*GP#J;A@UXD2~0K*7tGdVxhWu1 z4Azu%b4O4^Sh%Qc-G+~v?AxZBe`T--Fd!c`{hZ3^!9!VhJi9&*jk|~(IJSAPJ%E=C!5$L@RxtS@KyC& zN5cpI>akG~2LQeGp)u*l$IzUjP8=X+%0`EAJoLSYGZW?*nfS#1K@R4#=d3YrVIYfr z>Z7m2KE-KN?S(R-`t60nJIy~wGkT2AKE?Jxx?)+?Q$9hi#_Kf+H*dB z-r94%`0Dl?PT!-j>w;06Hhz1~B4zfA$SlC@U)#mwCi|iluvhX+b~Z8|dJq8+QV8d9 zbMV8XlC4j__AAZp@1)tc+IlIg=3r$G=c@xT=I5i9m>uMF``b9iuL`7`@SUPoL^L(U z&y6~U$Agb?jF06-|IP8S;)Vaz_?V8v$I|f)d#8+#XP)`5jE{F$j@Gnsj}ND)|C^qm zxg+2ng|5a&zaXMEUwM!Hpc(ll}E;~cOJ5~Cc__=LtA4E z4^s^DjC?q73*Pqjfb_~*e8gA!{lW4g@$y7$bBg{<4>_kMXg08ZJNxe;jaS_6^!1YO3N`6OL6P)>d#@ z9{x-(#vg11FR2@X;bs7GW53ie(tu`nWuYFf8cXo1n)v1LB5TFgG8D$F4E;41CRYfr za@^sKCu1K(1kbwd=D_D5bVn1YzdkVcP_#1=uNlAwh@k9TC>^N!4{9e zPqrJ2`aRf$mLMw7s%~@hwHwoL0DBV_$AerPZ-CkBSeUww#@^&3pjkKcN8&|~ZilU; z$iq;9r-4`^@z!EuF);TpfCmL2GuF$4^a1v{*E%)*rt$A<*NO0)yb4KCem{KBR>CgS ze^T1Ej+xI&a{_bcFqy=ixZ`kin#P^jfiDr*1g9syZk;928+14;M?NvQObho-D?>79 zV$<@Z+xw;kOmdux48OFl5$Z^HY2mXR%+JT@YK zV@`8{yNg09lfquw=d*Q#2EyxHA^^>HYXT^W-U7Jy{^*>LLrcy&KT82m8Xmbkg zteBB=?`|mGoKnQCDg|f4eE}2f0;zE=j51+l!A>w!{Si#%*aU`0Gj$tm7}vvq15xUE zK>QV{lD5*4b{MUsjeI4o-P%_YgM^`^##BiwWW#O2Qw+724W^zCJ(#-vCGoUTlr)7U z6|;4hYe}<5E9rb+NoRQ_wM;`Po3oT}u#_?_Wy)x!gngxiyi%GEg6WhAC&Wwa0Hw$y=p zG(o-QHzb7)43|=SzzX)cuC6S{p#L*IE{`6FDi~}$Gyxth^enV^uDEAA77Sa`{u_U~ zE_nw_Qrl!PatO01)Tl>6IzQJ8fp6e7j(;wcs8LYh4f7OgaQ8wDr{)6-p+odLu>iW7 z&kN#7%SFReInyC{NdQnYqYFU14$AdG47Q#dJ1h&tKi%k4*yKsU6Phc&4CbAha#M3W zYMhm-5qP1I7KlQvd-`jI>$~9TcCXez6er1BP!a$BnO%|Kc^uBPjY5wn1aDkxCf@(W zy2;q>XzqTp1a`f?NMPEqp4>RZ7rJ#J`7t(w26iq-CXRnuPb;-N>xUl=rM zQeVOP2#T6$Hrz-S@e!m|FtrsUs6Bc z@llOhb=IH;tq|~$|Mz=l?(W^qCPeW6`Q-yU_s*TinKNh3oH=vmO!Bk7^CvXX`}z3f z=W}%Kh2GEmBtMty&*#NvCF>sE1{Johdw>1;#6NpJfA~b=vnaQm(4*emE0Uk%=xacJ zqc`_G$*&I z&g=mLsDZ2IaUI>CyW?Tt^H!CyS9q5PZ+$!RRqn5VH5~~4wgggU5iUN3G!0e`88kR0 z&s(3l@3wnfr5!2ZR0Qd?2mf($3w#lX1Tt`pivo79dfTL+Tz1>w1 zci%fHMclpoMJ>JKbKM*W3NJuVpg$WpvN;I#P@*jicbQ{t#{Tw_Uej+*&Wn<~+)snm zAn=}tX}b&i(*?L}5o?;*)Coz2^&7w-n~s&n^!W4JR%Uqw+r2-bVC&8gr{Vw`$V}gE zXh(Y0ACQ{13Hlzp1V*R2))pXz*sCyOosV>0R6R^ofm}<}!|%&jEy4AIq)Q8!D$9pN zQJG&&%B%?#R_5p7!u7eBqKXh+*?lUI_1NSTWL3T($f`RJh-#&vk%lOc5Xh(qmAa=EFlZGr!YcrO6P}HZ=R->y{S@tOV_`?>%LBYkN^RpJ`1){s{nx7R9 z=jH2lYx4Uei0Aj8?S}8sz59K?IArqgg72X{`+qn2cVm9vSob@RL&sL5n)TV)b-3?2 z^c@;m+7=|*=|SPS;}UJluXHN>@Q%Q;N>J`%Q!eUY1Y$u!ITw3s zyBp8CqVA*9GSAMK`EXC>`I0%;K)KWB8cGXtZRj%jgewM2o2~e1D%objwln8i)8+$^ znr$vAZKFvB+x*q1ZfOb1)(@__p>ZvERd%HfcL{SLPXb|TJ|Mut92>aK;h}jb-no+K z#eIGr{dr}q4#Gp<3e8I@Vm)fpKlg#9-YfMV>QWB)x30Owto~g``38;(_HDLhpN!sH z7Jm>`rUHnLkI%i+pNPdE1U`;Ens|nskQM*>{gf=8_Eg$n!IzuHJcdqZV~#>&EcCIr zG2Z=v{_Xj3YJ1N3*P!hIJ=JJ>vK+PvcM<^J6`berJjHStfhP;G|2472cs|fPV`d>) zVT_l+?g+da16T;x3Ehq)P}SUtptMasqGQkeSc6kz@ap0dx{xXU_-E@HqGeobxwxx<^`ZQqbNut4147LNe;&>5m0bvZSNm*vzj^r(G^T$S9M`x z=&{DXS%0O~_%-xATGlur8=9Kkt?|pOz(fq=-chAAgvzQ6oX``At`9WFm>Fsioc*VJ zTqt;A)7J>6$C2y~M6AZ-v;;oDR*DCW2q>@Xkdd$zS(04`rW=OxC#+!pfTMo~fY(I* z(51!~j|5m@wPN^a*<^_UI$X6&vylrA$pPe4gGKQErg|Bw^rjA835xG+fQWw$+#AJd zmH=i!RVpBD7Rj><`;NOPA^L{=f83+rs~w{%JjM zNd2?%umSt$cF)> zB?sf--q+O5_du;oi^B6H?#)VjGPuH|zRK}01RA-{tF)m9k1Z>0c%dQOygj5@tWwAw z!1$WJL+Dt24IB3gTz4kYcD%Pu!^V<8V;P4`l9(PeRU3{c|29IS)n7js0^TEIC64T5oZ`48UPQ|?EyVSQlX(8hqfLA=R%otEu8ek9%n zzvlA@{VegDK8#@6^D(|M_M-Y@mn7TcFeE!mC+lUFo$!ogjMow^XA^Y+QYUyP9}=pe z^C8Q08p~-L3?71l?fa;YCb5{dvBGNjZW4$AiuX%S8JT$zrt)ln zAZxndliEQ{9y1sy2CsjHr~a&D{U3k#ed?bNbV&URpi|+JX6W_b{jI0{-zMAtz3R_) z>knqC9|962qVpjIx!8|Ix>kfYKpe>V(M_|m)Ga%1XZk>?Z@vKx-0QJRvGjwND(u6+ zgBGUe4z)M$apLJyhzE_&RddN)#^Fo-A1YyQprX(vhYB{7x(1pS)Pt46b9w3O>qL4x z+|@8|1C23kAy~}umfy_r%l>M3exfslo{$&9-1%4#bn10B1tr^e#y2i1d)49646a^z zQN{=^cPU}0v-WnI&9J<*lD zYU$TRWB>Z!rCqXGR_T&#^_M$XFh^?MjOCv1^Ue3z0N=-+ zr}LlZ{cgopa%s69-VpVPdaOsz-!v(~R9s08Oa5`Jbiu`GJ^X3z@w~r#2N_Rz99_}3s&4-Z8xCNhBKoYt24T-$Jh~-Eq zqfh!J0R>qNMyVeDz1%dUo?-%L5UrAkC^c;lSgVjt+0-17HP`KK*%d)Fzbo1N#^*|= z$ETZGN~SOO+T#h4lN}^VsoRa^^eaW}VG00?6Abl-&uSbG$0Rl?CT-i$aKKRfc(Nvp zweUfhN~b-70mKE2Y^R6DF|I5bCyo#%Bk^c_0D=Jae)1KY?`*bMsk^PM8$mexR%>V( zi*0&H0z1Hvb`)XnJb4c%&87Dnb1xe(4^V(CG#g*G5bKY;;M%Y z2jK+J02BZRp810KWviuyG^aj-nJSW*s1L(T1lkSsSbhHbUD3zEcmcF5KqPkFLq24P zk46TUKoax`vZ&uSK~B)ba^MERCQ#X1bq5Q%ZZ~tY^g3awrdN2O0Td4nLa;j`rO^kc z&rpryht<&sXRmS~aH7#r^foU5HdN%Hueg2MyS@ZBqKyK$7Ra5;*=AzPvKyKOXPCdB z0>C5i7wJjCKYMF@xT|io)z<-{QkL^DO_kM78?%vkT{ql?pgOx`F5$loLx5jhpAZ~0 zy2|*ekHOdh=Od(lwA8L=M0;Kr6bh*1UCXZT!AyPLODuxNdLQaV9p+fCLA552boxjs zFA2^r{lHPH9!(DWBz>mmH`oh2_?6ffXdSXg9!W_b!DPFvR_*w$_KK(z8+Hc&{9^r+ z&QvO5FRw4n%dR`8!oIYq!oI4Q{uyxeWrn|dmsI+1Tn@~?!qf04^b*CNS@w1we)r8I zq#rQD0)B*d9WRGQ|ERZ+prY|uoZEorq^E+r%Q5h<8-L{GVX$lIsoSN3Ya%ZXQ@0^= z>H6}L?E3A1{}N%9)0d+*i?yvqhABx{k}2Xdk_mlP`Jshbc09+C2zEsB9I$^YlNl!k;AAXpm;pHDi z%&wkXY5*V$c3V==@T8t|&*#W*yc~1x*_M6T6kKC8jSOI@^VI}Y%K1vqvV%=nI|_L2 z{N?f^&IcLWKSiB<-}h|)k^$QPn792Yo&fUF<&_)2LMX2UQ{|Pqd6C)Q)g0e&<+11Z z>eq^ta$Hv32M|(5Q%E@qLP}7Clu?_NPqqV;sq%^R=pW=-p%m&@T@OJ%xgsf_j0LUM z3@DsDg47fUyb{ZD@u%4zzp83y4j)ct*&GR+{{1OKN0ZbHQzl3+)BFVb;`}80PwxDm zT8!Gmh02}(HS0-Rp^&V#Lw}4cSz7fFEKnqLp&Q;37VXsP>-%ut>mJ-9*j=dknN5ZO zdzX7DBSg9^XZUvH^w=e7T#*MoZZ@5hBi@FNw4-jdOq2g6V;P2{kKLF*IhbW_wR_TC z5=xR42q&BPPao8X)l(0-Tfg}|g`eVb0(*Lwo)3EK_DxTpaQd+B(+smihWRA{;7+Lk zs*VRVU|x=$+;7NZ-_ljvHLuIO__DZdqXrDdMuDbh8EIb?wCow9MX^K)tkSuxsNxyS zUi@q5*7JXf1$ng=yi!%zQ+rkbXvj<3nMLRXz<^I+?Jtl4?~?X;Px(A`b>;X?S3bsk z46@vR-R~iIL@b%5BoJhsN*%Zlhd_{~-q|9M;7)zFG((hA558nqzQ zY&dP28?oVfk;Z~ueLxtgsUBh0Q77-KmR^!I(`opbQ{gg@=iK4n{ z>=I+An4XQ`RWLU)7llnx55m=FcR4(QP}qSZJh9)SBUPM8IQ!RJu*1=9EZTstD1I@v zxZzB-3ftUOwb<&eMs-u9oS7(R+Pe9q-cNqB~rGF|`4cb4Jw(?VlKFdxD*TR??#Ou4%)ARlLp{IXT{G~z5Xa6rt zDSG#0(HY>yffAxe`a4gZKV}I1EqJ`)azjlwAg*em(7!Q<90fbs>BzY2x zUa#o>p#BaO7NbIUjOh8IN}HdsAu!mc@jHb>ObrE;1!q;-mj-8+2Ih>I8F;;8!|I50 zRj|8IkM}PFPp`B#ykX6Lp~k7{8~c1^HUM6>P#t#ehQ65M%yHn%Xa}s$jXgAr8OdTQ z=C5dg2Y>h|4Ib0ihyMIdMq4dZ|uy40XnfT%((9QH`&Zf-$S)=t_11w|nsZtU-ltf1;x;?)MuLkv+$dS;2b3VdFoT6KKQ&Wg6;*?Mv$e(~3Uv+(>Vyw=v!Rt#rK#;*)S|Hb$M zIc!`F9z8|4TNL|cYw-ai36WJb5GXtFpPn~ajukUT_Hw%~=EGJ-iZ6KiP9wVBrgdZj ztw1J*MqvI&NCL~MpB1K9R()|N$b_}sB($X6M%r?Fq!j}7B z(rX|NRivK4i2s?D1*3}@U~9s(uNBQf`yxxw#x__N0Je3iqXx#(qgcDglpxxQoSp`$ zTab!5O4}%;FkjhvD9w4R9-)7Mk#?lUH8xKQDZ%M$0=Y9vyj=@;*(#sp(Z=JZzY15v z|MfQ3Q{#X0K{5YXfrnNDy5oV(E#v5nnp zKo<*{4r>6cRD@oPuAxKo3w7}w=nrVj=RZec6E%~^6s-=kU(!EhLf#h%$8rq)6@TGT zx1`8JFoH}kVDM-Ok42psPm3yAVB!>vq%YBWL(qFlT&xYW0gVHh3DN2P5Spufl)++J)3~B_(a1@Ymzgn0BJ?)&QIQ z!($g7{rXYtb@*ueo*X|5LC#YM?9g-g63!0saao51)PR=b%?o`#P z`S9L^>)w7X?;@kpL}vH9!G<+atdA~17Mv!)c<8_r4sWcMprwm}hvgW$B&2YrK-f45 zM!&}Jix+`cVw|sLBxX;*#Yc5&<90|}rA52~h+f!9Gj}$m6pU3&=Li-YZ$W7|%ceNE zDxGs`E1e6vDxIZ^S#YeShlP&0o`ptQA&hK1{~5feADE`lzOe}SsZdRku{HT#ummMspPKp}p5 z`EEcNf!s2GiR(b3Ks$^r5dX1oDqAZF&h%r6bDBRdkXz};v6A8bioQ;`oFQl!cWkVB z`d#cb#oj~tSpZWN+S2G+-RPUxDoD1{XfZ+8msM59;#lWLU{)0e`#_2=?-l03Gm3Dk zri2g_YOo45ScMv_;0cg~jbEKfQ$S1$2oD#+(T%7OZgU7=<ikR`pve1GwVRZwnEiXvN^@b`FGkXz}IVGW9`VBvW=F za+0(C)dm?>Z0D7DlwxA1t@PuWg`f{s1~npC7$A`zy+j}p(jigBpT?mRl;40Bac4SM z5ex)RMo%Q?Ru7@apOIvk{(=!KN2;oE_@@Yk2isuy4)TB#+^|8AoXRVick-{SUiA zUxhkLo^_Xi!{dOdzMm(dAyqft3hr*uHbLj?VJSuWc{QK&<=GwnyuD))y9eH>{8R`w z08qXRs?R;hKv5nT z8mURVqIJ4QE}_qY+;p!6GsGeE{@0-B&GSX~qOrs^9BA1R;sjHF^d=M$zXw14#B5<* zX3rTN#sRB}ZW(3D1)1m#^F+Ds`bW>V1C(zl`_?zN7(c=m&fLQM4egvZvg!^?c5}sIPp+zdW(n9pN18#?CML18p#5U{O?5-?&~49P0AZYJLnJV09W3CJTMOOft_O` zutP2Qg*XwAo8BNS%;QH#UtTNGc9xjMv4u;wC1}ZG;N_u4EQc%` zr-2+Mfo2A_?+{&ekyL$@t{NMgn#Vzs!NfylAQl!*&Q1aeE~0p9ZxLg*k#`N5)4~GP zl>X2ij3GN@=(?{2XbUuiJ?K~n8)UYCN8TXG-}dshxRZmC+4UC#5#-!}u^hEflmrfh zvj+`luQ~#n%l)9i+(r0wDsP4aK@Q9M)SIsh>ylQy%xB?r?7S3C2dlihb|;eB zzK0J+pJAN|g`RH_p1TjnO7%uOV5NEi0@HtR%tyf0Q>Sxf>FvWn^xq(gO1qdB$yA_B zI2d@aFiWc;^v=&j3jJ%Q*~gxvA{9PjZlM3>uPGB*K-B37GIt~j222#kn^!xL2e zKF+tcZy_Q;aW^BdLwDj=ZYjogrMJHunF!tt)Qfr2-Tra}i7+VtJSW27ejob4Jgf;Z$xbegAIrj>(D?@mUc(5| z@Ot*t{&>9#4K{dP_pcPZD!dY}JKMgKQ5O4;i_~NA++9}b9P==o`IWYh0;b_e&I#?S ztNrf4e${qY^{;khvf5vzR(la%$916Mz>OW1&iM_)StqJOjfXM_l=Y&6o?z?joHhh@ z=vn-_9n=eA2XRLH7?5``kyF*H3gMXwtl|cFPjt}oo44&pW^-^MFFL4!G-LZNVg@_s zVgz>RO8l~x0=PfpXhX7I2^dL)Eoam%bf7&#(BZ)`pY!!7#R|Un*)X39S5E@ z9C+-%^O}r(LLUDTcVN0iXowGD_yR&*=(Hj*45Pa!nW`Ej3e|OnRH`vqw7N{5eG^DQ zcFr*f?9fE~66uEk=`v1IhVF{!p8%8Cbqd*O$@Azv1^2@dl}M22^q2p@PH$n)x%0#K z;J{P;-Lq56R1b_A28K(5$f~PGhZc|+V$qNBj_zbV=uST(;Q)9vgWMMG-a*9flpy*9 zf`OQ?BN`PIe+y#SRk#WjC9cyYX6q7jC0I0;f!sw#54TmT1BKJO%9`&Y#!|sGjL>Y? z-98g0=;n$iTigX;0X3|C7DRpN(E{mFbSxlU2V*`x@B3wXbYl`|jWJ z{32nTpD}+%`H|^8@*}B9%a8Dti~GfJqAc14l<^Ob3V~lgl9>4i#@R))|I;qo4uip{ zeE=dLwO5)%g0Jwx_0 zwUAaZ`;{70Uqa7+b(CT zT>TSvW$VQ`j@;hL^6A$ywTTxI7CIWXtboBF&2Sh9*$Cq7M{% z?e79j$Ka!}fjSyCP^u#P-HJxoK)vhQK$RzKph8~$u~~bluYaA<9*Xwb!BlHNwHisq zUVG^J2I=j}m$r~UIhq<)W@MW~Sl=4rS@q(U){o8F?ZQbteEQc zHtdZR&@gzDf|%TmXUs3tucS}$&c^@_R%pCQ@Im7t}W!2m1jJG7p= z3rTF>4krL0vlQHPJeCp@Rz&;o1wvft6TD+ZxEz67KdxT@fNF7tEFr3q(7+Ig&IUHj z%H_xxF!&*f9L{jO+$dW2BipxWPhHoQmgD;f&++>)5XrSs4DiL06O~JI4U*JPmnWJG zz922ts%E$HrkgpWgWAJ#(9x}*43=G<2T=|_jb#N9FZR|D`UOBh^ClojYu*c1|K?o} zAWie8t<=q%%Fr~g-uC@<4{2T?`W~C*`0m7eoB|=**25;+R|Ku2kA_zwc+@Z7I06xq zuq+yWHKqso9@}}DffQ2=oE!9E%Df^NXhQ2HEp~L5`Ozl-it-D#iLaC*H;=qMp3Q)~ zT7Z>6p4rgUq>~AGOpSVjkl)bBFx5cSiJl7mb$7wzjR?~4IDcY)Jn}@O!DFyf<8cRu zNjz?ohR1Fc92Xye8SwbshJo;?f%f8Y0T#!^xfhSa;uNqFjnSjbF<9NC=KL2klq2_K zT28q?fwBXT2`&tZAURNB>D2}o%5DMXWDaFax+H5WHU-2;uQ6EcLB=MtXd8{k zw|DD@$MNOqc&r=e4ul~M`8&~T2I+r%UL*Zxh8pRCrU&sofrHSdT@w(f8Shdb(e54T zO+RMC%sAX!^_B2K*uB4tpA@7RWPq4`W(k5hl)ONF`<%?7iqGr#tfzj^9;bfo3DEX^ zz=3P${1<^8`V7CaFddAsCYqS@1d^*eb`bu0AD$Cm5^VPH*tRIWC8gms*%@lXv9R&S z4-n1iMs*+>kwA7w3bI>{Ng{jQe<%+vN~x14i-%t441fFyOi8KDQ8#bO#+sNDNLHYU zYf~`Y1$YBvI#>54tHkV4D?v*GgWQ(W`7IarLJY(s9@oY3MqNOcE`aiFYIW!VMyfm8 zfkDSRQ3aaLlDrnijchBqIte;d$~11`J25@jW%sk7g7J$;5rHN`nW!?fc9$dqm%L2` zrc&!_<{2Wj(r0G;QV3$m@Ked>oF_rc%jKh)fOHhDYIrK-#8c_hsiUi#PVxLgeP>cNVFXBczvipSdrRw8DH}*BQ zll9?(Xu9hFVtQGc*;WfWO3LOEg=RA_t<=jC@J%g~N4tO$Oov5GSD%TDFZ;6K{H zB!!|pKyS3l+oB~1*bNL~<&^AMAf_)$_8s~WlD*DcpfeZf%mtD;T~`vH0UaB(kH05d zv~zAmV25tQFZs=n6a0o2KUm4Z0w{rwoLb?eRjuks_>h9_Hl(@fh)N{TyLCrB#_~l1 zTrblFyaZ^ql5AdMT=uZpL78geqoH>q?$Ti9OdwfP#H2S}lcE-tDqS&moMDM~QKsg74-D4)!gILwvJ}E2yD|p&Nj=^|e7E8;-tkcI0>KJ7v_V~dlH$f~p zm-}GNx$`3WB2GsBl97G4iV>K1eVg3RO|uEZCO+X_{dAHJ%?_zZ2>thiQ}Z{plXkh) zY^09sP>{A?O$Zs^r#uuR0!vB1V$hn5>*-W@5|{`L8!;K=s9X29OKDTBN0}Fzbo*rL zM+YkJ5n$FW@4^Af)4DwVihaHe^2ACv>E$3+wFWDjH|`S;++BFQHkVume6KUS1Y{02 z6JCh`1BmA;UBwgCUGP9@v5TdujL5z=mfd|E_DK0(>aa6;}4q7YCN(Hc&tgrE>1oY zeI`L$GIl}oabYq+s~ZbFp*rBq?a;kOQ3`eY0CsY&GHj~%vZU2_7q*_5}nw*0Kg~-4@R0R-E_u#f;j8B0{i_h3Af&F5No^&qS6-c$zq$1jSBb-GPYe@LKZ|9=-k=(#Y96F8gSCL%_C|qd z&gbCw^SYp{T!hM@Lmi%vpUQk{Tu;lV%Jocm9W4yEf;BJUlm`9hY5?~{t^n7D0Q;Z# z9SU$aARU3*O#|1+GBj{)R}#3e;^`LnSJZeQKJgtbCe>hbp0r^ucvMqA1#IuJ;niIf!Gm(%gmg_jDrvOE{UWDlOTw)jik zM~tY5HRbb`NXSxM2ucIFP5Hmo@4BGeviz&@ae>6?dJA;D1*YEIGxO&l-)Z@0;kPpX zB>a};9|yH-D|G8ipj+>NZhbZI-NmU;>zSwH$e7$ySb6jV9AAOxEQ${15}>Q%&@2Cx z5zxott9tlx5}=GZ&{6|4VD@BS?#t{Ha}U7Cq3Op5{NrPgAs;=i?ppX!Z5z?vy85U{ zgZ&obu;^fVYkY5@=}OVB;i~C(#THSrJOQu_X|EVwj3et%?dTkij1zRKr2G8nO?^!; z{Q5J?aP-&!g%mIClW0dr6G~GtSJv7r)7Zi{T!%EkdI{2q&c zozYU#>fsC*Orq-Fw%=%5$MNSxPuGn>mCWBe_+}H zq%V3o-fVr?J(z<;8Fmk3Sm@n@E~!k`7$kmRo@@0mR`dhMID#q|1T+#%?t*TYcd zmeA`rD>hHB(*#VpJl0FEbN^51^`#4kOs}m->e4G&KZq*ObdH{V34DB_JnMr&F)i7} z2)j)4 z_(CnIF?WQ$Q%@IoJYtmGv2^X{2eYrnE){0^$C z#L3LP4=NKr1{rUU=JgwICFlJA9&a=DW_~ZaxP_{Yz4@Qrt)MUcNp#5o9eQO@vLU_!K(LDOw4Cf<;M9*Y&s&a9r@u2la za-NgZ3eHw=d?&PO(N<8a))mp!y4t560tQYxkcQzd5lXc{a3a<-xO~Hzx7fnDMwqP4 zg+_)cy#2dT6BMZiR^K(4t^)-3n!o43VyY4V9XMM^thZYbtvdMZr3y z2{picV>$v0%0=iysEklK`*W{6+#~HcFs10s_AsVc-o9SU^~JC5=3>jJz2?n@4XpHt z1D7C9)!Z=7KQnOkQV|oi4m3gg zP7w#uJ{Jr9=W&qO(8a>xVGLe;ptO+=pVtGOq;v&^%+IL_f#+0oiQ05;Z(rlQ9_%!> z`&k*O33Nv#GWL~&(+&ybPJb85BPfz+jvZctQ!(d6N*lhx3E+FEEqOeAWTic?7*3^1 z%IpiQl3&+Xu8>}b-Xi?2SqKGkOADZxf>z3yRp*|(Yaq8`6yi5F%QbF*hnmHgN+EvI zFuKEUwyl zs)C3TeJ(xC;u3Ux4aBmU^J|cxwBg%r0!{bgduibD z=No(X2sE{$a~gZcKxKtk7=3YR|CfmLnp5G?-u90GKcOH5re-?fi|~$*X&Cfy=z!K=dJ$hcn>C zf^mn4S8YhpJ#pp&)4mYe*F6sF34jEpGgtFB+^|m)i*f2`t}I+YoHZM^z34p zyWB2it8Cv_|0CN!<|722f%Ce=x&!Agc$4#Euv{XqO%(WdOj;E-bW3lj-?x&@FA|*F zGEf1UkfNi@S3hba$KTS zkLv1?9(NZPiXI+U@)rD+@SsDKiEY)?*r^21`)4!5wmBE(kh4zM4ywh>sQ$L z)Fu$cY%R76b$PsVtY>E6lJESb&!9M@Jv{us$yrjxxV|{8`vwBT?bDy$CjCoZ8UIp4 zMp8qzr9vt8QjK6^LT{SU-oe_;5Z*->QOqJ}3OGoWLLnb5N|03iWTZ#mn&OK17As}% z5(xBes|0$tCHG{AR27ih-~&>3Yg{@|_XYAX8pGcOEMAJ@0>RC;L(o+bdj;wXc1m{* z*fXoQ?Bk0-5|{u>ivq!6f#8Yg%TqvBC*wanCgf_S70lSpK#q*8jkiwH{b5Q+JaMhw zLp;WkdIMqiv>`z0VtX+%;F;J~x9VppaDjei3se)HrBy(!#wl*Cp395qYJ*m+HV-QO zAkqbLOA4&m++x_)OhJ3II!kI8tPo$xtb~I?9VrDH112r^%zuvJP>R-O+*`QnbbT09 zw-dLGjfmq^VI#U3WpdCR@gN|FJ@L;-&6v_a*;nHkgTCOWle3e&j*mx#{KvswH3_V`^$4S^ZVg&A3O93*oe7U*ujzD=c19LJLn6@9E zs_)4R-$%Fnu;tzK!<8o_TmA!=xBliIw!L?wydScEr=mR24yRCc;(%ojo&HAr!0ml} z;SYvCY2!?k_XFWixX>;?9DKsbR{Y@ygHO2Or6}(Q8o$C2_ZtvC?+Q};zY<0K{Iz0a zoYa`m>W!<$3c1xZ@c6IJaZdUU(xcV);<%26jeaX|{IgJU_$dlg1ct)iwa_SIFvY4WY3{26S zU|`fq(#oJWsEl0-|G2stn2b=v1o#wwFbA?i!4AmrxbOToQ-q)4RYv&Xgn-8G@o7T% zDI$1-+JEjPiPP;rOB(u6=TWTlG5kPs2EK5qcHi(iTx`&XD?%T_O4Rnf_p!*OSOanq z;rL#_dwgens<46Kv;4NNFK$vyLu--ZW4y+4rwGA; zK$uvY)=UI^HV*z7Ozk*QFf|?T@!$GAbvC*wzR-2fW{SN)APGVYH6se*!OszxiYuM4 zrPl2v3j$V&d*Ja)#RON5xC9h(M#JwZS}oNgobQ*PBD0-y4gxzg2ftkJ9SDVsg*Cfw zi!nivoiaH!rsohv+3`$ud-!j!>6Bd`ivE#zv}?#W@r zXx^oU#aqo4SiC=<(&S^dms3c)An-Q%yB+&C`6ocMX|i*Jx5>X-D^0!ufgQRPzng9H z9Of`hKJ{&B@|hBq(&YG5Pm{S=*n%e4{|Zfp8IGryFaAh+c@hF|lef#zF{vuxYig&=}^UkvgGw zj#BK_s%L!+LA1}}>`N=4ql*O~@o5I0yi(p|6EmYSnyh)L%rG3|*MRHAe~%%$1>Jhv zTv6$e^3{k1)BtdSkzIEp$|4esd<9ntMR+9I=vxNuli3638(of;Je~)=J$2;CZdv@V$AzOLmS>prJ>G1`mm{+h?+8BDYH_&Kkxh>ri1u}0*)}7oqj81 z$cBUG3_9f3(7o;R=MquE(Hq5b4!lcu)6nKqIofkFfWXA%$Cb385e@ zR^aJ>l(v=VG|!ecc9bB7Uplf^9@Bv6K=jwBI40+5V5+qcy~yQud|#p?wp7@j6WZnj z>58|}Bi`XW0jJaqVI|n+Jt%?eVj@pFVS3IXI@>im+lfvT%!(ib$rKY?#Li3Qrce|y z3HLNcTn6^?1yP|3fnw=V&;%xt>(fZ%{+xdBG?6a94|$N31$L2d;tL3wj#AlZi0!*) zgqc^H&=QR7-{L(!7T_h(Ri?q)GY!0)4B%C4DR?r*y_d!eiVe&DkxPTkW9!)jnS{rMu*dmFEEs|l9kTdy)36b4*WEJ(0GR_mD;}czb zo-}^5(&o&hyd!<1=CbCb;kwd>>0s`eJQSsS&!`$=ZfTgcAdD-?q%KwHxZX;$bEK!}eg}UGH((U}P|HMgsbw zfoTr{{vjK5VbLx=Y6mV%keE^Q4g$_>AyO3`zYkX`&;C8-u*c7=QCdwqTMlG9tt?8; zd}!?@4@e7RLa*|X{L27A9>zZaumq2QH}vl0toSlMr;MA&nuj!Q`cCdomye+Q??aa^ z=bDHr)91bVtHp=M74UaD@O_07CXzluynYhzA?d`q zQSHtIxV}`A=d$ZK5zK^2SG+oD8&NK!wL(uHje6X7$f}gZV`sT^N&Qi#A3a*cw`WGO z;tDerI&$MnDY<^9b73~cXDk42M_(9ydw`uZ^j_?ITd1xL{V0ce#Co_>4nwlLZQoUI zh!j{qs?yna7M{C*xgt6dt)icbpWz)G`6mc4zmf1{wX@Agp7{_5KR8y2SX>l>e(k~& zR^KFN9;sxFh1xA|p?1rww+P~N#}ly+%je2y=CwpBZi#>ObFc$0;#L%4FH2jm2HomKMQL-D~5nX7U zopU4tJ5-8a%IW*-)mYU^j9thpku@u#Q#DRn4ckBk-R1s*l(@Ev!UU zp15rqn&2>B03Ir;KzdSAIY2Gt0Z>3H;}`2%T#j@Arfohn{S9B_W~5ya1LSdBt7G6n z%d)jU=IB2HP2VCv3KU@_aW9cNvJ4FHeS89HI2R&dkFJQ8>-HM1qbEr0K<|I`wprNa z*H#>MyX?qd0fH>0>pQdSPV%ljJboL^_7G0V$=P5X4weTsI5?rkGe*r=X5 z1}$0kL0;vk53Ja`ZkyIz!!~KkTZQL}*f;FkK=f+Z9LFC=xhtY!O&y_{e+h>uMSw0$ zaESNh;8hBTfTOW!7w|9y4gsnq?qEy`w9kbp30{oxdvhtsRSurm8oze^+=x8^ykw)= z4X{E|Z$RqG*gQ<7LbQ-;*RZgd_{sv13-|`k0vVm~lDnL8VuHJ@mzgrVF7kc2i_?ID zRO|dC-fqORA@3-@nZX6DO3F)_(g}TuO?rbhbhNlLaR^sLRU`@|cyL!OL zNq~V)G*c+H+8Rh3#&oPeQwpue3S2jY)p!)zq79kZnJdsEw?K3B0@>eBU&2?$j*uBL zDcqh;3-nj<1GxzDP!jpD3;+oc`Twd&Am3%}$9*s43ya*Rfyf7&pAR**OT9a|k;ego z{uA&SXJKD&7Ffc)|CUKI2((~o9gP70_{gE?XD{$PtoC^6goeM4)OxL;3aU}W{(4d$ zjf83>%iN`ZU7ybwR^MI4 zVmNlOL{BLudEc1q7aD7Q4?F}*{cX$hOZ`_Nzhzfpv7pZcyQBJ%W9WUHGi*9s1MH9X zgD=vB@$}lG;LaZv^ISJ)uk^A!`(YM`|z895ItUVtRiE9$!QRfQ$s~Bj-)ZYFJ(*5Tu}t;|1TEAx-p%KYzKzIFY1 z+ZN}?dgSMlSued(hkgI^M+4B~m@TZop`F!c)fKwLtoPK^tY0Ul%{0n#6Q%+>bbca& zfVyz*7UP@zNFBVD`9HgCi|ePBO1*f@IwMx#y4vqCpEk(uxvzfIdSUa~aFCIj9SlY) zI1d$ce_%H8)9$Y#2XyVfA*ys>LP^+tzpM@^gJ=&Q;+$r9=0PtTq3h5`AEKOp;H-Cv zB_|-{H9_exGG?r0F_-mfGx6(dh#<$YKl%MylW&{!KDP_sSEn-{}e z{4?aKu*1{w-N7UF`^7JMgLy77>l4QFW2)cXft`TCo;);RTfN>5JQ2Yu+ZGmY#abKy z?h3Y8?dUgI0@01{pw6zQSHpsR3M|+GRk)}*+Jek8V-8p9&`{8g#PWA!U%8brc62cU zIqz|be10G2J(d6n_381lER^S#dTux|1C~v^ofzwOJ>$dV^f8f8b=M?)2*mG1GRVDo zD9e@26Ar#>@gYk-@NkEA0ww1=v=L;`>5$B#8w>;&b@46pS�Y02I9-5)a~R4VGkW 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

xK<=$)It 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

gY^H>Jlwa7W&k$J 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ù|uoQKO$O7~zTI80Z7sRbLZzopR_;gwhzV|w< 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 z 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�QStknyBAN;Sa;IvMGxDCxQ{z0$9E{Ojc}^ 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

O`yGw z<+f2aiIL9eN~aHNmi$O=a^YySK6Fn6+VRhll-NLOehpJ;Z8>iafx{N)4kXyJsvFp9 zRL~-C!XmH^5VK&IHwCU+oqiz5Qtc%|ZV5W8%nRL7Dvi1jJfKk5t7ZBJ$vD7!%!9$BYiEHZjv5u|yE z%mP;dX}%=Ye+gavEuh3cU0*RQR}8wrMSWQQ?VD{_{<|Ogu$GHO@6?q zz|HLC{AgBku0r<5Y&xUG-f4VgSHyotbT59qbtWF}SMRp_Ja1n2F;-A^l<&UoLagB= z-%k$U)Y*?U@T)A*z;ES@27ZOpT2@yUt5(OPTZJ+3uVUb5@L$Q`--TtDM*ZkM!gCW$ z1gduDRql@1z}LkiJMPl$i*E}@-&j_?jRM&9_3BV5-{CSdXqoqFck8G6tmf#%?$lzE z+~Rgdlj}dA>6O^AasjlH^^g$edQ}~Rpx;b`%1+Z*l=;;xxLifdDLlAxxLC8G`DL%| z)@eTu;iHusyK&b?=4O0PQ@IKvdTxbS(Q_g^6Ge=zLaWOh%QJ?P;^mg=azCr_m0ifa z1Cq!+pZ{cexlq>m`6?H8Pkg2Lb-1Yljwn>um-N$`q$Ucx1Cp#>On#4h zd8m(y6C|Sw6C`5~#&PrqgtM%_SW`waPC77}eo)jQP_>uf8v-}MH>_&pgM~JI(Q1$2 z8zo$VZvsg7z@Ci3fOtE=m*?F|U(_1|#~sXu*mfUG2F+szFBCC<=>`18uHMwHCSQ}k zG$)jpyMTk2UL=gBF`1=4&+}%5**&agDQP};PLVgPP=^Kcee*|+j~G_Law;SKrMuWY zd5iUFTkACS>5X%TuIG02p7wO*nk7DxrzM5$Py{x;^1E&>jjYG6``~`b$m$yD$PoOi zs26>fV?+Mn1Gb*&q{D!ylU~j2scb%hcatZ}zMbXzPdlnc#;e7*f@{7JOzHoI}9f2&*E_}f0IL~jAxASe+P<0C;) zzSk8cId0w{sCcN?Nocrua_`5KOoO4%EBC_T}GmT)85B zNc07Z+c4AU*!r6md0x;Koc}z3%hG~IE>mx*SR=R7Zwu^}r3tl`n}UP(E|{<-XkVh) zrbfI=ZS-`Xdpzfr%$9Gsj_}|kz5F`P5LJ{063s2=1mPmm7FFmwUXT2cGX~$mS5QPp{l{P&_w6S*_XAQAcWi+p%lg98AD| zUwjxKBlB(@IddQpZs9(R*0+4}H7D<7`Y zsGf=~eck@ahzltozWJcVTMKo;&Tmh|Hy6Ggabl_TTwL)q$$;>%g9`Bb`Hg2V- z`JXqt#QWM>692cFX3yTC)rAKBq-BBj=%l6CMROKS71E)T*U`bKo9PBiV7ajO?xf2i8c zAT?L(26+FmXvuM6L9HQSq?CZe?(~RHTX~(H+w!Sck)q&Zl`?sJ5Axw~Mt)WB*sdlI~O8o^HO^-=}()4gT(N^t+6s zN*61st`&ZIsNGQcp1Xxg+e4)B%aOP4Ag$Git)?DAMB+h{>OZLZ(@?8bd{ZtCxOE~C z-y9x>Z`M{`sc+2ZW~p_vMnOaZAI604?XQs}5Ied#J@fR2Q>km-9fU3)G$!#=!t>`N2zZFfO)Y zuwisDv~@?b?1jbrNH2lG$j|uAk6dT|34V91cs2?jw896i@IfnlP=)j2Oj|Ih&ftCA zr8xANc8b|0%;GR{seV!u!d*uw8&|>yrf1?N$hhDFg%1Kpfr4kgYU>N9EP|?(4^_z^{4*gzZYRI#@Zg=JMouC%$Vu$*a##b_iK!7>6GSwq zO5dY5ys}JEn4i`W;c2FrOfZ$+8r5-uOI>Sx)4l0gTfvBt8P|1F1Ge%+SWw&8!E(Y0 za|R~m)Z6L_odz2l?OpD0)B?Lc2P1$+i~z9Isc%oo2%xhf&f-avBiQsxs<6RtLI&4_ z4vQkmqT1cxya|YOc<3A1WsQU;CvQ4V-4?&T|1f56BP?9p-4wxiW_FbRVm&z3keTL= z*PQMVC?Pl)sH3--7)D3_yY}v#yfHzebwfoowLI6lL&Zg3Io3pz1?2~IrMDAJN1F7o z2USX<>8w|kqrzpCs8=XzeqhpSKW2)ASE#4=u14LgRF0}O+4~}W!6`0Vx7^2i>qyhx zn5_IOIgdxLjqQ0f74)>_!zEO-jVE73+A|7)w)}vY4|ySeg!M%0ZGm0WUd&>}N|w4| zo<`fP=ZUZr2)UwdXGt+R&A9@pc!bBUJ5Sh~G6ZHJFCALwxAfs^OEEBHDF$rQdDF-+ z5Qi2v$O&?fJLn4zn!>R|3(s@~@`EZr7*z53L6sg1s&IE`!8kgw?%~ivf|eq7Ow!kz zY(`ME5D4iD3mCjgL}##nb%DYHft^4)w9thM{de0(zx8hKdva(YOCSeRREtn`334VF zLv;AgJTyHrJ+5Vt>Nu+FE?3ap?Nzp0QZ{+gmCFR1h4kKCsMt?dTbmViJ zgs~uZr7E;J_Z6VUL2d;Q-wLWMPvTjfogDena;T4|zHOP*?#FJ}>T?qw;oH28pNiEN)7_>H~3I=9_yO{Cc(3x~NP7WC2 z>j&nlqee5x#^a;@oZ6u4SIrqwYbkwFl`YSG zjQ-xnxJVV$nbfjQ4#V@ZrPHGQpc0Kir4%im6PB=pvW%s%A46jgk@-8{zFt}bNL!*I z^k{ku{uAir)PZZz|H^8(VLTXACGvh+tty}sV{CUUHE<^ZP}rmt1`Kqz+PKzTaawP; zpfbKSf;JE;%pmNfG+erSX@8uXH6fCRM(G?Gpdu1iE?6`Sz zb``&)xxM4OnWp~BbSZ)pkNYAZ_97iBQ-85yW$Hf)RGIpV7b_xb+SK19S1@2A>qnZm zq5u7y^uNzD{qLin#eWX|y}zg0{bVOXtaEJK-8BoxvbM|Vo6o<%bj@}2%3d~{ z?mI%F0R_6>aAN4GzC`De2LIV_IBCO8*FkBEI8{nvx`?A`P6=|5BRrU*e+IG@LcE!*_+fH9hkf~pNaG?u| z@3h}>dGQh0TGSHLyWF-*y!S!U?4LsV0(2a@fIqr2qMbyKR6yINqba>4n z)w@IYOh3=D@KA8&_0tSpW4w_@V&r3}XV#c?=;b%&8G2^Tj&=MP?930g{pW#*QqFMH zA!ak7y$|Q_N9KsXrOb6%%3>z?Y4p7p+00XsIft2$V~U|qlUXLPD3=~yj)L5*M0t!T z%sN%R*@=wCuYb3eR{78s6Y7Q8jsxyO58%sH)Q)BpSij>-_VELkp3GDWF+HsMG~Y2l ze&#k(t9Gn{yK$m)3)B47xk5TVZ#<2qP~Yvg03Jz_0V@q9WE8O!46zot(H`(~52Z4g zDKOglF6q7Oz0^`G!?1zI#uEpyOz$L96f#K*Xl)>*%R<(sT!_x7^r+yxdn`E7nkFPm zNLzlS$Hn2w#Ex#(ni;CZ#}p2t=+=I|=3B20a$hDO-+EP$(?fXf?99J|Eu93Wh8!kQ zd(*)ancx9`awfFP&fNi;)npT${n|Iv!O^_nFCD=Hnc!y~!JpH?qqNH<9ofR9kZGt| zqZ2CGOt5y$1*tg-TFvMxm919aK4=&;x;dCNNU=uSf?FHtTxNM{je>M)Mop6cM{Rv} z0e{|_k`L7~5Pd2sf^!biQHPDvEHkfBPv|uq+Q|`=_N?$iko>FhcY6OY{x0ty#oy!o zKl*)Z{E7vULMVb+adAhZ0|p$_?;vH(w;=~9bD&`l zks(k_P9mr5nX4a)lb<(~pa1C~yaPY$OMd-ZpJ8b8!SKA#M4L~rvaL{bJuXKp6y33d ztWXX(ImilacF(q=b5?2WH_1s@p_Kg^Am)?$b!CTl<45_RSR8L6BXHeA^W*gg5@6-j zpV@%d3aLL669rd7{h4XDJ;xMS;dMFJ#q$H}CR3=j!0htLU^Y;WQZO#({FO z1`Vz@Xk-`%su-2iw=vSUFjRu*C965_#H5uTkG^zsq&p+Tl^wgb!-bvYa#VW`YEip_(D*snhP`5~0E_3&Fx8m7Fqz)2S$C{>Gt)B~C^jxLuj!?k z!5QN=4_K2po@6XKuux9(c|*S=Lbs)|S3bGdVYz)7Oi`Kmrhz^n=7fP9l*0r9t#Z&m z02MzYvVP`D9&jZOxRM84$pb1m6WqJw1TE{gb~N8*W<8kVjcKp%n{)1)AB@hq3-Kng zJEs6j95%iBYD8)ktt_=dL*Y8)z;KcR4s$t0fYqMbNEHNNGvgcNhatIVzJRC9MIa4)u}#2XVhts z8POM;+v7qcjX3B}=gO%M3y3Uj5IShgLDs4D;e>;_-M2{xS+{aGgNQ3{-O8|;0HTO6 zNmSuuHF0V3Ivk0ZVS&5`LOU>;;TQ}RixuzT2P}0eUnj(bGY55&AyAKlx*U{sP>+L* zuu5X=3X`fTTJok^iU#wBg884`q2-bxZ)9 zOb6VZI*4Z#Rd07F(7g%QPgb}3T!SzjtWCN=t75&W8W;~!F3@U<-WI4W7+L58sUUe? zD5xwRyA`GH*5x?)c}_~&HAXpIU~dC*c{LJ*N+f-|`#9XTe4Z zd})6aKj{XP{g&-D(wtnZa3|^6J5ttpD<{|};ZA8)(w*9gB1tvoI#dJ+G~poa6aq~; z$WgtQ@%E~5m6*@{fw+`sqTWghHXcqo%B#omG!I7bvROgJNBAj;?VsY`Zd+k2wj~(q6w`Ud@7}A9 z_Fi?b{*3^aap8`Z}!E>UBovhr8lo&UKkO-CY_6j=CwW;*}5Pw8!h zZkRE>QySD1%}W4uPxbl(%)0f5EMTT!bx0;gAXOV@>Id=_7=7YBvVc(tS^^dq+KHO5 z?={hO&8v!5Pqe;48(KEGJ5n}>KPL?w`Y;Y#o)6-%_=s>)A0E*T5bV40QQY|E!9NPj zul+4fCV%S`PM>X9u}69rRq7kKm*2%f_zkOcI4l|oLJe$eBaY)RrFp=j4E|V9u=e{n zyke#?uQFU&^FDagUv^>Qaw~b9Mg#we!qV=oBavQZr}3YUvHgk8Ayd%We0Y0KBGDcD z3^l*@gsPp!)B&Q^oI=qKdQ3E0OYS9KN<0q08Pyz%&l%Og!dq0~{My+{$b3r(MB%iZ!Ea}KRe6zNvw?5pMA8ggf z%1cZLb)ba`WQOaYZU@CwgUb794(fB?8i6EcfGD^{-}Z72pRCPVrFq5&w$>`Mc=K8< zXUJ2Tk*8^v8ME!1om6MnwaXwgogqQi#q5`}a%2>TS?j++|5{=y5WTI7QUEi&*A(x4 zyST$Cely{6|321s-pBezy!Q=!E1jwNW$l@ozHdIZYsdYS?dfrj{q+v0zdiB;0YA8EmbTu#C9l!njcpC6oqKRxSi z=s=R4j3Tltdw$Tiu$%o}yt^Ec`G+Pb!30)9Eq(1rIA0_7zAtVI7V`q`r2BB3^XbE} zZNZhZ*_L-7PH{ecI5}7}hZ-nDYS3?vD=g`X=E4w6g*YU2K8HgVbraVrt&0Kk{z8Wv z`si9zcXg>gJ=Ar1LtEd1MpSsow!RfD6&oWBIM7|qfP;9G^k6R4CnpG7gr>Z6u+A_( zvDrA1)~F+4_9slT2ZikV@G@1oKG%gqa?v7mAp+{N-T1yx@)<)vQ4$hXLOUOdl7dho zo3cbqI^R;v}lb#T;)m0SVY*W2To#>j&qm^!fo^qDA*Kn3Jo+>C0WiFYR}R z8zX*buA`czp?Sxy18Ijz16JwkZ`);lH&Sj=gi&6Y*+_R;%!VXoP#yauFkyLXqj@U6 z@Nw75XklR#}Z24R|C z5G|@BlMGNk7Xh&4>td_Y#9j#0);HK~5k{#b8X10ra0wwn?tT2G!-JzwP8aq~6=6@` zTKz*C45F#2au=&*BJEAKtm@18d4!lZ$lb!1w)o}|@ohdQh9$b@5>&gvL4FdU9xG2G z#J7Pn9oal0js?f!RZ^)-l?RTd9u69IIjV2?CLv8%trhQ9c+Nj_W3(%84P`KDowdC~vlgp6u$#oRZha`x zHtT1cJZ&tE`~`_&ZSsOk5y+4)-L z10Pd&`7^e^OxK*TUB2zHT@;2Uo`QFLgIWyJ9x_d^hLB+SJ(*b;<-b>#cg*@xCU_jJWF1<` zQRUACe9E~r=~_oo(S1jt(awlH%N(%5Oz%7vDxDg+rkd!wqG{)Cve3795lkw7*k5a3XO3y|ZhfwXD_D$N^n4*+y*{Z%8!2-p4?|F+z3_{}cfp8GYf zR3JrjY3Sfie5L7QjzJoJ-_f`@82k%fwb2?k*+bMT@yX1Imn@wo>dWaPehN?<*?cvy;ocu?682b|fTDL^RmHo-v4#)oF zW%lK;PxYZP`9s7B#^*2Ye-eF(I68{9|MaQ87i)t^lr;^k<+Wz!y!Q3}F3V%#jCnZy z%e3=>b&_J7{=`6lGi3Jek!|z-9`4Vu2e#=zl>FhPI&kK0F3{ONSwQGi8Ly#TtrMX; z*(TIB@8lmfFE9&_OLb;gCL9~ch#2YM2hnwZDu2$DKEIS+C|P)9n%Ug_hy`5Dxzq#5 zHly1C?1qd#rklSOzdnyftTp?@flE(H2ao9VUQ+dJ-j<1<`876@br5tRA<>mDEbr(} zrgMLa_iba2TTh;A37+sQTmvzO!jsLu@^x4kVxzB%R z1Ax0~#I~jj@#}wRVeT3dXI#C?7s)F`BDGVa_>HQI%p$7Zt{JT{b%^JhU`8Fd)P_m) z{hNd%2e_hV>oX_tlqFlA-!SIkUNGSrq^N(=y9)8%Zc3UT{Gwy)Bgr&p|5Cz$@FNTu z=7OJt9qV5XNXlw}SjpnWv!0_vP$ zec;Ic7K`AYN%aS|WoUC3;cZ-?G9edOMh=31hFg?%#4}%s(knVQ`AU?Y4!+4MF+aFx z$7^TY3HyfM3Ddb%p

HYuqzKFo@(=Cb*@E#f`RmxFHpfE?{VI0jum9SDE4nmvJsy zkTA8IXK)oRTq-;b%*GgGjVD9aT|Pq0N9YFbyQyh84j7*RX&~}vIKjRYQhZHY1X0~Ir z+{Pm`bjv7;5-YZ3>Zh4($<#gchY+wAQ?d!+r_2z&o*_8rs~blgH?%dKR2(9jtm2Fx zpYe)#Q!*^cTD&0{-jf&%cDzj1ea&}oLHgLqcxHE)N&S$EV%QQ6HaNlxZu9pl^)_We zLW!7l9$JJKuRq(aH*oZOwj|M=1nXj&Q6GJR>_rG;z`Agx1)+43ZX0=!0E&4?@g=Bs zbgEP(-$GYaSBb}sj}t>K=bPOyVXk|W4b&C@h4%?u%c)$u#B+5HdcsKKY;1I>h4W*b zLptZjE(hUeey%`KUQmQ;D{|HKI{My%t8P?nRrw!ML&0i<;BmDQPPej%KcxJCtvuj< z4_leQSr1#ez&*fXlPuh=be0~h^#M!NXu7Cy%ZKnG3t!cwT>^z$euQtaaCp&&D__Gt za6t8Zu$rS_JDCYPSu=qr`HuY2SV`m5DCCdYO4Xi2AXyw>eB_5E;62J8H6>G$KOc{( zD#VF~bH$Q0h(ZZ~I{P|YcH&4z2q*$vExGDIV| z)q*R<+-!1$Sk?FAanStP_V-vb5&R z(-jz9$>kTQ-{#@ZK7LZ%7Paheh>wY)n3esF8|rL-PN_)&$|*H12J^XB1E9^?cp`4c)?cu)$Br=9;u5ST z3JK=A1VfhKjR5h@gQqKolt1V&SmG;?rKH%Z{Kn0ggSy-|V>w<^agZ2{m{|vj&w%8o$sg(9I``)>`>K5v+j@`8nQ!=>`=%?G2^g2 z;IM25?iOR3O1k`juuQiM2+hv~e$g@vStUl+$_Yj`N=gNTlA{o75{Kd)*4Yc5t6~92SJ$v?nMmZS?joHsm24E1IOe?{h2TPx(}pgbj+K9=*`rDm zh9Z9GSAE;MMdL>_=Q#+K@{!F65>SHL?zyR0w3H)rokUWrDiY}r2bn}_xpBHgdYO|* z!^EzVNH;%d5=o&HxkXN3&yP`L0f-`dC^?_I9Y7Lk8*W7+SsQ|!uj80Y5Ltrz0O-N{ zaVipNT!Eh9F->uh@jW&x4l?$~m_^OT^hpelVWNXf3b5JYAV~o#-3>&gmn(3yoe5^o zNa!MP3XFmcEiB8p9u^=&>{*L@;*6XxDdvR?z@Z^TsGTSMTB8} zVYkcTIolI-mZC(qyv=cg6kFbc*i|*B^g>_CAbZnK1D}i1B?l8Y2ldF=Y~v=I>J1d; zD%GCAyUxmOZzO_hLIh6IxH7n3!}1xhGLo(gUgBdZnPSVmlP&iy;#y(#?Oe*}o|me> zAuFo46EoWEZzRuGv;|kbw6d{(VzB7dOcX%|@pOzvv!|N9cg#12cB7ZvuG2u`!Hch- zPA|tAo7u#wO5D5}#j&Rs8Y+5Wr$UTVVGgl#g*keF^3N7?xYsPatcE;QIAed890mYM z5!71=f<&>z6NMDl>9M!XCfK1JMWSg7ErRRSnPmL@C&1fYWIRK}LGj-AaeVMuCreBK zL}T^2aReq5H0dCgNP=Q?7T=~MO!IbE0b;fevH@~5Y@5Jk;?8xsn2xA(TIiJN+V4{A zjkI&im7qTCGiPA6IfLuul*l}{#X-hXT=xTnWpEmY2~?*+p5}9lf#}G;wQn+Rfe~_7 z0tJH~u!tiGT0;Fa*7K$+#M*K~_8d#_`;kmVkYLg6iS9=c^y1Z%k$^*zB%%-wE%;IgCQ zo16wPS6KRXTkbuNI&yCI5FFE!nClenl{rr0aT7WdS4rsT>SWfYslyG+85CEcf`Z4m zK9BXQ)Gqpyf2zu_*+3~g>HS1W;YIJSb*uhBdp!Ormt*mJ5?AQ$=VQs|Zng zToUeFuEyOYE#{`SruVWt&&(;)^q$sPTRXNs*eE^IyXVgumBzC>zUgY67;S5MzZ5wW z6e+#Ib#j3xJ**9P!7+-^_fL5^;o&cMxY5H~J#3m3;%g}`eZ?7k*QI*#-v7YY!HrSz zO?PExZI!ZUf;iHQ|4c5sA;-7rDnMyB&L(aqxFO326@CgJdP{2E+ob(!{9W>MOj7<% z`Je0jDfu5&It^0zA9jAj0S6PUlm$n%1?@*xy-1B+SVM6QIixlpP)j}k_>(H?X^3y~ z8x_=1iXN_mD1MIuL^+f6o;pXJQlXstr;Kuf4^~r-ySl52a-x;@`%W}f^nX!5bp)dw zy4FkGm3teSi+pM0psJ79NlQX)4wV2Lr_D5-Bt=nYZ0UX~icYA|16iUMMjuSi92J~T z=PW=?-JVd-)Tooh?d2y;_VqsR*Z)B1ee(OfZ>x$YIy8lniHWbNm!Tf`{D1HB?t;Yk z`F?Q})fwV*6j(1E{O^6<4R&ta-*#;i-z?~1;=5n>dB37`pLg(oMcUd${-1E4_c7fl zQLh{=DN(2G*GCee)z3fLZoP(_`N4LMYiUP*p)P7}NslC8NDWSzaD!cF8+YeFY%hME zNmJY6UBW#H#=!T9f!$X9{guycrO!#S(kKdl+ckUFf7Ay|yI{RTrd2Oxf|?1qFOW%< zyFYODs5ZZIdW}w3PCfJ$4og>V=RH~NderTEY9hwYJi?_xB`^;;LfhXON2?x=`1HSG zGq&r_c<+}Hce+wy?tG?gxuZy2{6~U7M)3poiG4-Yo3T;X;3Kj7)X;E^-yt}t{9eis z;qk;-w(X-)p3Q9bM--Xj3-<9HbG6ewAwQ1;jN`WD&+5p(ONaX1;9UF!f!ZgWp-}Zi zKc6|9d`L~HI;_0sV)@G3R@2ID%`fU`&0n73c8BA2qrm*&Ydc=C_gfFsDE{lfqRaq9 zGTP-Z6te{@?AlhYh2P}fLEu5klm_gSeSDs_l{)23u5z=W`g6D{`+mQpLuNhp(NCG` z&z!5L1NsPq`I4Gf1m|ReGdp&?MN>9aM1S(D@REOSm0yMFk0{-Ep((5T68uaCm9xz& z=8AZzrn0QeD^^UNM(j&5P|;MBsKoITij)-puluGG3k%r|7LijyMW9d6(; zVC`5-8K}*m3IBZv*zOeZ@UVwtR7vRz9@f;>b_qS)s48pnpmdkuzjQ9 zzr}wRewHlLc`d5u@)h5`Lhh#0t>7|EqQmX|rBrn8 zw_I;?G4@gmAMg@ZSbnwXY9_i4zoo6 zp5=L)8D#8ElfV46&2>NZ4`-4IJKG}7xusXa>@lDgk>)4w_LWV;u|^`B5Y+<4)hz%Q z+u4^)(?$N|%Y{wvEUabu!J&AR!{2#?{5mz;ZcuSdYXbONjW_?p}#4^NhlK)>T z@pXA!DgG@@H(UIB6z4xGac-@Ov%cxG7Uvs^^VLe6k#Zac47)IB)~FUC_bSSRTIKaN zeFJ~%ET--gjqsezjxw`uSEO}#`!Y?($S*;U|CPnR^P>hL;anDj2~eb&ZkF%WB4L7_ z)@Y*kDSSw-LLArb_Xx3m+2CIQTiSGdNAN^C_+I+DhwX5~5=fUp=k+2Tt?DuX?-`kkfeq-3 zZ@N7_Yf4|GhKjSwl@dq0=Z%6fKM?j5u056v0&cDk7xomM0uEN$JJ=#pitBB%tL$JH zyt>Iw*$9n_u05`{zBNtS@+yxuy-m8oj$Cw|9a@7!d&G8b=+Ur~fau*xNfQ&8?WqZ& zix9nVbQ%+C`nd4_2^KT5Zxh+?8@m~6v^Bl*>0&)u`$&?>EMBZP3dzBGvt_cA#b2_h z659;{>!}CvlLn~*ZU!zHlZ&yDMoz&JlXm|Ue&x-uaII^z{D4i?pm zB_$-eTpN|eg-yrxEo#gJcT=I3zC|3mlMhAYA`aaxpjuSXvR}aS+vt#9#p$>fuc}gdLFb8l-&Ma=T*e^_p}9`P$PF6nw-F zIOB}->zHrVqE8+jl4`|6SRST)5@C^Df* zna84+-YLHKQUYlq!V=+2T1a}hA=s(b{Mh$mKKXHSO;f$%X)N~Z7m~Q)*v)g@i0rg< zKKZfbP{EGNv*x0692ra__s8@&Enfg{oYEP_f*AM-}G*aVUNW{ssSqnzgd25<(1JEsSbN4(u znDHUZVwO`*-0p{ft1Hp4r+K?}``VwK#)JbaFdA>u6LW8Bx>audO-*az6)pHyo6EFL zyu+Xv@m+tC(UbVKhMU4o+lvNs`+A#p3EKLbu>W#XH~(Dz}$Bo^lY%>t_Co`g@_=n^-0@Hht^Es(s#M9S;sz~m(^0y+{%d6hV+ z(I;+kiIW~Y#euICNM2$n<#hruiN#Vt%|OaaWG1d`@rjMi2=<^jjW(Vkki5ig%InR* zBo?~?oeHG9(mt=0Pu%Ger#&bxB(Jv$BrkEI@|q7!VzDAn2axhIatH48iH&6l_Mo_x zye<|oQ;xi?@N^2c*1~ z0}5X~KC!VZ!5$R*lh?HZ$x9MId0hicVu=8ttALbOpU*1`+}5|DX`@edh)=Z%IMuhl zX^Y~sQclN~o-OVWPWF3~kTkLAE%T#Y#TOwCw3>@3rgh7>vBz(tqbAt$o6=#!@USK4 zvWETYhLYN@YymlKJ*#Q%Oy_M*Bx6jh|I?1!P;H$}nHxVkMP!C0z2n5;91g_%F3R8T zrlo1EQvJwyfTia19~I-sJA4euE+1nNG17pk(j|)bD2Zv!s?XVU1b^(%IhzX(j@i|T zn0?zZn+aOXF&pkqaqBF%lDZszI0aQ zToqqBsKOnry02}9Qz~5GRyw7kx7>trcS>afpZIY|G=c11hij))hVe+pS8xGt(yLXL z@E2#5HEt=KrLe+CEWOderQ(oh> z2w)fzz35L9KJ+*@S#7m8(}(EFFX_q==9TL7X@^sisub&S%~LhNNn8uIbvkg`!|VKa ziA{aC6*}L$fkok?DxH<7#FtdZW^o?VN9vqVAdwp^GL+aMjZ*KANK^cj!qD^%t0~l6 zH7-p=e;YmgLwLq09}Jizp|wJ={;aiXrBN)r9DcF7p{hoginZbacp%6r#?^o<83=As z-GGhSfm0qH^4~i>JnZ2v4;MV#BbZLJwo+5qw%phG?5*8-*$@D5-!A6*qeT^M#EM0J zXt0o9XTfwLE?J?vDtVSW&rBxlHc5A5Z!MYlgLt90UpF#&E5m>$f>SD>+>+imut%V& zk!z?f=VG95xI3m7Xt{&~}V-X#Co`2C16!*~&IzRjsknm3plWj9NXNi|Omj~@As?Zqnq zVY|kf?T!h?6C14lS}LplS^$f9^?IUf1~OXBL4P_|-;v^#d|&dB>U^`7?iP25lKHjp zVw4+Q{$++9U0D!|?ILXU?KZjY5NlB*N;~!Tc<#G+iuV&Bn*fE1NmN#eNp?oJkK1bP z-V4q&Nj0I!nw#RfH{wi@?=~8wFkQ^JuMS2%1BaMGpR-z*YP)BBQ&y>Ib|0?L&~NY> zqd_%)*urmf0)Xa^8tjC9yg7sJ329)Q%4Yr%*jZl5+-LG6Lr}?E%sk`Ez zzCFJ3`+#B?c52179;eMuuDQ^a)SVKG@8 zc--JNcTUmKd`U^|`YT?)#%UB-1#VGf#)x(1qO8Z2nszy^oh~z%EmL#dh>s@qFlM`& zLYRbrF{dc|#r*q5xj|DzrU=EGX+dd1Z1!ji5sJKm$8)=O zDiIGF0h2=Fj+2zA#N4%sKI;;7)g)@La+uspht(*aKK}~`q8?`^9Z#}I;0-_qSAI2N z(5#I3whyRuRCWj#5w}iGuY31^os#sdF-?7MCDb-iY?8~4;4lGdVgWZ^{|4BNO_uuh zMmoPF&}`p&;h8p_MrXza-ZAIXw(+YM{^-=@AdHN8Rc7&1G}z0F2=h|UfB zMtvH`6wq%jc)%6W5931I;tgv+Z_{mfnZJ(U(2(Ayui(*!e8F6&N{%<*V!FaMuQ=&I zgRCuyKM<#_Z&lMDUE-UX{)ETv;&Pn@M5*HUYXI=Li-u2UY5FCtg&089%+@XHLs_F< z_bryD|H>!LC!7tKc+F28+(i#6yHRC_7udG zP>_=wZoVptnxGpbPln_IOO6N@?+A|3O2GvWCxiuz3f=a8Di-hU##g66T8)XC! zn%^n~3r(mH7}qM1^w%)x9zeSfP+R%!*z{CAwR|OG;|ku(ELTM~O#5<}!r_F#%6MIHQ z`y9{dO;L3N8-vc;@F>dHRSkuX=20DD;0cfU!5wx&{k}Q(6{RAvc_FiU)^Zv8mwEq9 zO<7`!lZ6~fwSK`>ms(5!L$f9uZ*%W=z!JkgmW{cj9uv&4Fp67!cK;Xw+Hba5;Erpb zof=RM4pAi z{Nj@tv8Z2yGQX%J&8sNR6NRh1<`-h5sQYte@{z)eTL~Qyw1jaHofdJ>2Etf`@y6japBaJa2(*k5b5fP3CthFVLgBN}Oxu)VFg}XK69o zzEJ*z;=s|?4mi5S;5B}cx(H6jPON@Gl6)GfY`2R8lp+2~o)aF*%Ncgvk2vtusrZey z<5#%^ZT5Kji)_=`Vx3L7WiK<7M?e4U;W4RG4_J1b9?hC_*POx*X3=b02z1vka2JGL z&4JklHNS;9U0-9aquJZ2rMk&dRfe-2ciC`u*L+9aL+Tc< z3~@^{*BoVU-x!QmeMYqHw*X6Rq0U{RV`~rqc5ASyS_M&O$yKmxogb5cg=N=TfJP74 z0RRoEW{#+2DGzkoq|whAy_{t5aIC_uDOQ@h^haom`O+sGo;~BkeEufr~Pv7a&cbSX1jZbg+liu>D{2>eX`PVN(C{?c3ks!1Dh;R83-}0k8 z%dfs2LAHQ({Q2FSom|ekf7=Zksn{EwHKAmIlNJ@`S0A@-QKaa`ZBPmf^CyDRL2uI= z)EVq6J%OuzB^|~8FJdT2rBmF6DC#ozCfhO7ZtStDCF}48a~bgD?uB%GmzNo@#E8Dj zjXtI`U}^eUVm#l?CB~#%969ZYjC^;(z}CHGa`NOwdSj41l9BIT(pz_v-nzd;UZl?& z+3bmoFrpLIz}7l*Yxl07oUGQEiJH&UUF1coT3&;^X5d`i_gx=AdDvQz zg+0q=wzHbHH*+lD^KlT6-F4v76M2Lz-Taeu{LBZ^%(_*(bnr_qsg1sTJN#R{r}*<1 zs2tYqxO{ADvLgeXd^O012T4M;Myzb1c3G9w zYud7`0}&Q_A-}ezm1$aHgCbfjcB=S1kM-_Vt*m#iwzmm&_ZM;D4KmbIX|CDA_822I zA=fTQ@L(Id+4W6nLd1uvupV*CiW0hfpsS}n4~Krx2dcV?IjkvNzYkPx7045D5S#*O z>k@@Tygb8rs#5hr9Gi4}ZKK9^M_6lc<)7yTi#XuI2*U^Qu=<885}$jhHC(U5F}Pa( z_B!m zyiW0FNdqL&wm8_(bS^F;MM{2IE6Sjwt#5tP#kk6;3wM5g5ex1$O;;!k?5TSCHbMD< zRYSpJ9#$o-79LhT1rN)mr>vGNwATClR9k%?!j+;-RYPU-4jg)yQ!5v8q%>S(b))_V zsh8i9&;gkQ9F4v`FP4kfuguD!LRK+l=qq3q1Mc^5!B;5jVXGM5dpxX)s6tt}RM;v? zg;xQqGm}u?@l*}XKkHVNXeHGjB(D`x&mkTBRzUq(Of!Av^=H{eoid8opQY#MTq!i- ztP7QOBUv94`~$T8uB${QG07|_x6WKvR_0=kj4P7V`EpUAZa@&d_31k&lKxSOF`*|7 zCL1j9PfO3rgdeKg@e&;XFQ5PJSh>9+z3ZDxk1M^^@ks4k9Y6Xz-s<>4C4M^h>!mMG zZ~gf}>G1H&z;`Ttz%Sj|^K|h2=<~#u^k|{P=nJpr+SpxM?Dqbxo?4DSS76CH_A1(wcJOykv6`Jpg6c_pkhCm{80Yi~JIP`NDBk?7~dOslax)jG0 zA*z(bvQ|ryiTW#bzVxkDVb+`a79D-FTQUt1300L-duim^LV&1XOfG`ZRybNwdw5hL z3D~HB@8cd85h#A-;e>~$fHjhd2&9XuGjuVw6v)u<)~^^eWC+*rrbU*KsM|bzkOqoA zVx;6wNpyK2pD6fk4}Ze>Q3N44onLQkAwK}{lybg;4Gn!}W1(QtF4je$7wDa>w>I!| zc3nDnZt)A0CdZ=Zy4$DeMqNyDTNjBQwAh#L*q*l@VQ?wIpyae<_YhC0y`$Yth@N8BKUF~Dn$3nVldB=e+0jYc-un$`rm z&|`@k_@X^t@IvwPsKeFsK+{z_&Qw`SS5Zt^J?8vc*MhQbL#d^Sl)6b|TM|{^UDF^2 z!ph_eV2_h6`&OQ08FZmWP-a(DvNXM#M>Vg~)QXXZMrvR?NiFRX%{BWmAGp)Q3Aw;2 z563**;^9efZnL5|lHeZd>n28vh0}sZ3+Ba?qREJcdTm=tbT}Sj$XhNB60(&gxnxD- z@M6CYw<-|68dyBK&WBr72p_iiu&fWaDiN;hq$q3L2dg&9{zrmgMpagD1l-4NHV&v) z&FBc5ldNj`Gl68W6K9`T=1}! z1nk7RF9}#;yn2p>-k*@lJZnSKq426Ga29S!oQs&Y5Kn{JnBpVmH9%;7rGdaLFOSwk z45*ylof%qTGlrer;N2GQrsZxw+pWNF%nH)ws?P;AlsCn`lvdES23Snr-mm@5PL)N6 zER>u3)6zGl!;9;795L|)`8|@(Kfmf2`cd!J{B3Wuww=*bmz%Zq zP*C)EW3^OAt58Y_yYCo5MHU82T-#+c{eQ!X8 zpuo@(y50BpxcXA zrE;!pI-T};+jN>j=B0yNr?T8`H|aH6ictDtE>g4)Y}GxOm$mUmg;EjG8YQH0xHHoz ztvNU5AfvP9+=PQfWn5S}>7cBG)Ip@{cTmDXLk?OwJH%`|dfzc)hmWU8f~O>#gK~byITC`lr5j%RLjY zMYVzj+O9W+Zdb9r2^HbPR-buHIud8?BYUYOK7(Y?WPcl)Krl(I=8U zP5QcDjcdjt#&9cWO{BDD(Yk($5;Vv+s_*Xonr(+G4BfYMkCJvafoHL56MTjkTL7^B zb!!VP!4QR6CJVM>XfBfmb6LUJB%)G|;%PGB%KP^}%PiBECrnAZ-K8W{(P)|SJ1r|W zKh>f+W$-Gu`A2wW#!``x2+RnH5xL3*jSOqXalkbR@-Zg{0Yxm3Vh zDi9L_G`%HU@h0W6Rc47MJir2!?G|lZcWUFBT-_ZF8iWgq!}4A{pbUm^iyIB&Z241N zVP37T$dIYe8iOoo6oa%iHJX)Y1L@RRbwtgC3PpVU+l?CK7z+thHyH&|NQ>__BTnFy zhmCH5J3X9II^Zr3cY1h&!jzu~s@!Ve9uFHC_PxRa+7qA!Op-io?PS6Z3J$xv;xRT1z68K8NGI?=rJpr z$+Lih2j~_*wSmT41Pt-T&F}5_1;nNzY$B#MQt)g^m6|S|);YF==t@3|=|J^{6ko-g>x)tGmQStq1lABc-X$?%n8U9qLMGWJj9*?oH&VB8gwZhhB6f{OiS$$Z$`Z_bS#HPI!| zt?zaoxa@*-SpM7x2c^+Zm+UupG8lcCE>KviWWPBd@rj|7O1ZUoSan5(wkK1l zMayLdMHk8*sy)rrlIdkTmX{0IGH!3w3+)+fv{g^b5mW9=@RH&bbr!DXp5qNZG0JU& z*JPydVYQ>y;8Q9m`pVtHV&^>7HPOU*o^Ksnt1I?I@?%PEuO@yDpRCOlQsPOuYPinF zZFMK*xG1h5@auqEAJM&WTlawM+{evsbk7Y}$ABEJoIb=FVG>Ld%dEuUk)%l!M4Fc< zUYy*H&h1I0h4jDcNhgDKPLlQ7)g7k6uhz}Ps6dV2(27#A8f&D;bgUFxsQ_08%sHGj zaqm*MCZ6_Q(v+EtxHF84+v3*_b`ikgm4QxN1%xT@$+gH6zjmb2xf>I>tXJ!BDhugO zx|)UbLL3%Eqv%Fi^(rtrYeEZYg&>``xfZP*vj{cu-t?8Kcs*d5*Ig`H-k#au%J~Tr zu?~)KAQyY}otMwGWzF^cG1V#vwZG1qdP?;Oaw(+l9 zoUq@V+z<|x9hOsm)HcRI#TrrHw1$VsfP8`p2X*ROGPJCd13d-}x~vDs6s38fV2-^* zPcB11)7#H289bCCw3R#Q21ZO8ZjEcsbqSRY`Bbt%Da8{kpOG=4iwAE>TUnQM4cc^k z>nkOjbNx!ZJ+~Uiov#h`EHb(c`@rJl;15X@3@S9fX<*Ep-1l(oPNDF-`1}P(xo_d; zW*;bE9G@s)0+(ZW1CxT=;#cIP+#usMTPM6;)BqjGx95q)#6Q6wqZ!KrX8

-^yFrw&%P|HsA(g@6rz(^+v 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

j424H}onUr=|F*N4DY6#mZ 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⪙$I)F;jE|mmC?OiGn3(N#lNwrHQ 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⪙)4@sb2t)ZIZTl}

1W^jjA1c* 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

{3P^silZ-!^eNDt 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∨p-af?3nLJ-LdB#2(0Zd|QdFLwV4XK!3U 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Π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
KWR?eT6Ok!yi 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

sY>rF29oH@3G43foZEu1DcmN%DKs-&e1SZ z34@o)0*C7eW3}NzM(~D>Zs&e!)CZt(NW@woC6NF>M@4K@ z5pqX&H`X)*7%KpiJ>6~UaS_gy^u(r8E~A4$)7q<$ZlONZV>DHNQH7pbAl*Xq|6yAF zb7U(PTTqCzCmXTeB=I?*J#TEz1BiV@1siLqDlFIFj6R9JAlTCI@4`FIS~u;oj2kcr z`lze0y)8z7QSk#lTB?Y#Xdhlg9Wlyz`~>m+(gDk;sKQHRk$uNNy=@8FSH87LFtUaQs z1U3}FPVJLU00v=4lvUNWV$1bQ1Hv0Pep;w{H`)r=HCh21>9Q8SpB)yJd!TxEuQcW3 zB-Ae3EP<3miKu-mu(H&8%ORL-zW9hVMQ>{`0&8?_+tU4OXwF9RAB{66bk&Iv_#iP|8w1bP&_nS!#k9~_M;vmr)Be_7QDq8o*VGQ zTslzA*5v~%U#`o)!Sdx+`Q{^PlrB#TlVwu15W>X(mPz&c6&NAfn#%C0+LSs}f20-F z)x3+1iuu4TV&zdW1UblD3IhN1ukF_a5q_!fc)TY= zJ)yyR2=;Rgc2^w0K1Z zOfZ^h9|SP=3aHxq5Jx#SUG)~p_~;ZzdNhm0SAtS%_&lKuoGp@RbEEwR!WH`>xXBdZ zRM#O7oG@?_&h1~6QG>UbkqfUTe29q0Z}4J?$4~KSq(c21Dd*m@Wx=@?AE^^%yPCE; zjP-Gd9tanP+!|vZ*ZZzMIN)C6P87o*);P#VXUA+DcFWJ1P~s`ZY$2QbTv@OO?ok6j z0R`R!XG5Z{M~9)`rZ$}o`3H*Oa!YVu_)-ikC|#)#dboj%;fQg#ZM#}iE`vBz9oqvC z8vvqyBL;O3b&&7x@qMlOlFzU5d9@p=1RKwTd^p3GXv}+yJz*LJfug^R_4mcYgA-R8 zbZo%=1_+tkE>Zj}U4HON?&lb2$jngP!m?q;5^OORz0+-Rd$$(16QJHFP8&s&ux~SJ zKm~V64JuN@56K-BYw+f%%YZ3p@Fv(I^bHUOAts&#A#y+9s@=Dsz-MVZrzC6VU62Ie*w3rh>MnSzk#x0IWOB%LQyY>@E5~G zSp3z95`F#%4FAiOGa?zc!)NJA-azk%j_XS9U?th81V=GZP&|WTj$*p>QB2Lz*h<$& zF^7WAaO~1YF*mt$tBiRsk~htdT#38feZZT@O5QBeF$l?_E(*i396IpsZRhemgaff2 zsKuG66`Tnxwq>)xw{(0$@4)+}_J~D8V(I z9F>GlXPx3g{~a_C)L*YI-UX7LMDy#9Ci{NYCJqEjO6!Vjj$l{Fd9`~719I(9cQrKdRz#x1y2R zXoz}or{Gd|0=T@u;(?Se@vL4G98(VRdnUd+f?7STRi1j$G)7~9!df;q_!odz{34#r zsK9VG;KYM^NZ>zk4Vr`35LbL`OY%k5cHyPE+OY&LVKf6Nx3k(SP%TNItF%wQ$LlI- zwcu<|^HC;O<>}gZO~}9E0tk#_oDc4IRFz$#BW}G%#NWmGqRH`ITodrcQK663gv;n4 zK%H(GHRODAWRU}RfqRloSAVl88?kj01+;C0$x?^VH58Xjhj!i}1hthcHudGZLGN<$RwSDTgRMR=E@_54`7Q^PV{!H^5glv!N*t0|2}~ z2%UpJqA-HE)jn=q^1o_d4OoT$Sp?^XG8Zvb_(Z87vkbkbGu<#ergOs|+6vhlTrI~z z$oN?A!ucvV2?dnnK}$V?qa`AHe8jt;%%9Ya&(M7rOuf5SsMY}@H8cfPfNFCoH1_Y% z+@;01wkGaW&natwO&YInc^H-KHb3MPDgt7q+yA^=q$*ZT`y3@Ln?)3&5U;OhtOQnW z^VJOU6B#p)DcLT_nksy;)Rgj!UDit`Q)(pd+Zk)DkLjGhiq#!GC^oT}=%gF*6{SQ8 z^8`{VDJ8l#YlI#mJJr_*rP~=o7_x6`E(1g&Uda>M`I|jX^MXh|XneEEnyyDq7#Mr6 z5t&o50zg^;iC^s~QvE->>lD)Bw;75c7+QU#F44esGUPeN_0XSPe*zo0bY zJ(OtsC`zMOK$B?OZGM^lqmcRyX0#e=LB_6cs(Su0QuKj=>M9MjoKRoZP#ZaR|IsSc zUK;960##F#UW$o~br=}@0SdZdUus|re8*GocRPaXB&eM^aB#?O1UeW2 z+59JqbABdzSQtHBJ(ngEKlZW{qfiUX?lFJ^NhgkBE{ArK2ccjcO>O~@LWA|Ct7`?I zcZfSMxDFLN-Y-GYdt}9p!eYFvJ2&>fh9PC{(Gzy&`a zC8eDET!8_dK{SNM^H14z4B;i`Eb<+QM}aE8^JjZ=z>q{@LLHdb7We` zvsr<(9|SB~bU8BFW@4&f(&V|n>-kjw}AMm;Y3-l5hcgQ=J@~tg9!C9k5 zA$lV93hqdfKQ))U#-3v^{!;t5cJ|LwjxmeS9BK>?L>ynE%A~CxX1lmBU0U zXJs~U^ujE#L`$dbp2FN^^3AFKQ%;l{=w(x)&e2t`M0KGQP0AgApy~^oRsAK~0~SB@ zEvh~UnyG_Z1?6IvYp2VtV7cD_FN(6=1(huKI?AC7_PGPjm5{pFnpEe0AZl3`5%R2{ zh;5rM84Fjc&C8DBlI{a((=GvR7m6<_3a_&^HQ#Po_;eO#IAc|i2XmstN5vIggEXq| z0KE{ey9af{M}TU6GgP&Z#eLdDwGDunWAfm`xli@QWmn*cDj^vbA*0Yi>{OmAs8t^f zppDTe&n5#*a2}9`jc!y2t?%i=7*56Sfzhezn|?ZfGQOMov)@^&#ttFEPO#_dw}n%$ z#t2+O{-IwFTpY1qFDs~nzft)gqsM1Im2_zH^%hh#W|}9mNo? zmEG!}%znmrM=A$cU^SbDu_d>IsK+;J{%1Xx>3T-6o@Y`2si;jxJtTd`;KNPf8vzj# z#PF9}Lr!?74mF58fdqkYTB?%wXeqJ|GrcWEGIXs^p{9_STM>8XFlzl$m zlUdgB1&yQvws8C$Dhr@OP#CT=7bN4!?_8)d&)3HD*~rKE({}i{(W!)XB4yxpj|~0MK~NQAXsMOt)d2)sKFlyEl&fvZCd_>!paF6pE|gV|1?5Dp0bNG9WHh=A%zDm zvZQc(yslG)6NoRq-+mh+801M~1EiTsEcw#@P*|k?nEEB$Q=OoJ@}xO}zsa~xn~JKr z_qbu>p(Y3Iw}D-RfSt#*`$&%`Wxo_VkW^k`?IV^@`6rrzGr=TW|4Ew53!&?`$gA$CI)N`6aanakhx?Z zp3P61iYC?fuu^Eome2Sox!~iPgd?=|U7R@JyeZtyacnmX1Mv>uc36fv-ywX1^Jhdd z;F514=*1p#)Axk51M|%^oeS{?ybW~?50mf!9iEJBIvY4~j^#fQZaxsRR*W({8M>6E zGHuRJS4$4j_7Bs|pW!g}AE#|eVXQFi4Qt;$1lk>;c;Iz^lNFmDY|bKVvH9R>2*{ChE;RmFR) z@$c398?Bo!OQ0ne)2vT?d&Hcd3g)2`)%|x{m?ycPi}(;_A%&VcS51XHCVqhDr_8Xb zsU_1ls)j4DA9&Oby?!UMF%D9>#3=+;T)8 zcvsZA4JYh^_@dsia&^Ir_QRx@Tp>$m^)jx;B#1wR$W>MV&!JWkn%`LDcF{8EaWd1& z{~=Q70qhP0C|qDSyWKi~X%<3wS2I?;#T9{ay~snK<+%W?grWvQ+g>HHGr=L{8Eb%` zaET~nsxNvCtKVC6HH$Qm80eIjmH=x83yO{~1)?3G+?@o%LaLxYf5gxIUrjhr(eI2 z7fLM3s6uv?z*u=$opAvu7fXQ3`eunm8KwAU-xi?0ifLN(DoUTn|uD>MOM^h|~6 z%L!NrYTLOm)h_Q$SJ#i%!V$*DIPIDt7Fl=heOX>a0W$kTF4kWYF}USL3~qlHk8x~S zQgXV1c>^J!i_$H%`!C%4LJ{}^zgy{ySYsZ60$>q<{4Xy4OErC}dA{W7#7XZLVs~`;AfhRM_7X{``*vGjiufY7TcJgoOzbf)i z{7-2H@1eadE$55$iNaG1JsVgh8mNiL)Q8lRH5pm&L$pTY;boz;dhw1(%@kStRhm=@-fdJN%-~pPUV-~q zgm{-L5Kr9f11Vo01o3h})RwwHtxEh<3>X)~utsK<0nUX8y}@DQM^C1sX7pJyM<;A0 zr?dg+kKbb7N2$YhuLOzJ@!Rd8SNBw8=#lu8FZ8p+1mZTI&xn&p*vl{{VN@2Fij^WC z811kcW^zbgos41D@FQjzQ{iNqWz$hdZ{R8c&EKcKES3cWM{(ATc*KAmsCpwlCu|4? znjfkp>VcF`07P8^615~nood`8Hmhvl!~VJpHG`l-)d57k1eEP48LHAy0)(Of{ZuG# z0tzidU)-WCU}y-%cDj24*d=XUAw>nY!PMQi9b##Gn|=P75J$MA3!g2CQLH5fyzA}Z zUY=2ks@3y|Q|AH`ufvN7hH}vrv~XA?LMK|{Wn|(tU-=x9fwWB24NI1;{s~l1K>I8} z7il?dOR6e-jsn_+Hy*a{N5|tp+FtjW=m?Flx)y*0lSGZgRS^j_EFDMfGaZ$XF(5(G z4c~JWl{T*f|BwPbP|{He>Ce=gbZY(&R_gx^r26hwB5skY^RP^-)@&QwVJ`JsF|uG9 z%oKqtK?QdTykSLF?&3)967|M-XcJIF9_pu#z9l{V4R8sGIV6zs9G=z5w_EG!nq9i5 z8*XM#BWm61Dwhc%PZo!~xrkz-Y%9k?%zS0J*@=7^qxGv@x5_}Fx#3Vwx!xCmVudhk z7!r^X(HYdm7xpR#OCDd=STC5v%cb|VaK+0~D3i zO7m;}i{_WGcp&9@JgX*hgfx+@ASYE5O$mIQ4)Y{e*cbx|AkEX{_iaQLA$cp+-&vhXz2;c4GdlgmVK(@ z0?G~8%pq0O`{*IQKun%K29FpM1qEd%k0bB>clh4R1GG5LrRvxl(*BjGN-mdW`|+%r zKo?kpLQ|0s@sQDmLNElE3V%S?rNb#=s}bwkkf{;Y$eLt zb#GL&blp8!_b|30kdn!|eOBGHvgx{aqc`dw7MTLNj4#jvB~P7k3!QsKu}{0`oHMye z%yE)O&c7(4gcO$AtnXZ^#$cexUONDF03cbkTSYoMSL(r1_;RE~P~DD7A|rai0U6Qj z+UhZ@YjRdev5N|KMT#9zeJ$Le52oGvEmwDtBaw=fRZ(N4M6&vG9EbThxV->-C&Kwd z`?;tvJ(2?vOq)FYwP1VbyfbXUmZvuBg2gi6ohUDAlPgjX+6pRGwKucr71?AYd?=yi z0KUr9wOSEmYSB&PpgJ&C0_L2GFCWUbyY5m|1>b*2uv6)@inhc3n4g zrX?xD)z(T&>#y*)%_C!N9cK-W{lsdLj-^u!PKQx|?2cf)(44VF%Ka*QfnG2E7W2fI z6reI@XSqt2W?1G?h+r6`tGze^ise?CWr?j-+ja>1`nKjVkcdebYTC8bVq{fmYMT^} z9N_!Ff9UT}`F#A2EJc1FZB@)Y7GJp!7vxZaMgxGlVb;IU59qu)7Rlb>bEVF_>?qgqa z>@Xg!;#@QnZNZ-s-2|H)!UcBQ7$OH*gqLC_BE~TjbYofvd}m|!1=8v2@^8hlupi0J zcA}3U1diYjuHAMaB$C^v1Z1Lf3^`Ps8w}@u%kZ>FwtJO-T*UHZEwyIg3->MAGokfHyIQMlUjJgN9-Z# zs6nOQDEwQ1ILDk)_q%f($+iMwM_wDq27vqMU#Twz<-G!oTO%e|IVTAF64u}3Dg64o{oa?{{=yIP{mum{tsS=Z zCp41pdtwAT;OK(Iud&3y3r|BJZVJYcBY3ZYx@W$K&K9^3dYS5se~G|&7}HOv1nCeM z^O0GdyH?!d;t;*29;;jR%(4b>)dB8!XR7aCkwT+c=zd-38W#E)z^qd^>rsfj<;SrX zJrbnkzjVp7Skk&&wL43`DJ8qIy4fg6uM~{`(MuqIDcZ6Bx7P7w-U&P#NkC zU%|ZoDI1V=LxDM;D^QpDD($`2di z2Z#9BFt~=_0ARixnFv|#d%p;BH_oV#o2q>8yYw49cVLZt3B5KTv)PTFa}k8cx?aNG zHmp@=Y{L$~4FVVOl)YpG#K<)k-YsAX0cP|;==xN9%=YS@N?wIxEas+v{U$MRSJeriK-SEz}3S05Eu8%Jo1$p0{~c_gV1P&88I zx>6w^Of<(}O#T3iX4r8TaIwrAS_$|CkwK&DAY#??zn_rG((ug@Or?+rj6TMc$B*h1 zxv(26aI}V>eb(piftDlSOvg9Z1jtP1KUGbmF0ow@AN^0Ngor3#$4fiY*|ICFmc7gj z`ff<)Y65-jH(hdxlyv^nmFrxMV_MN{TwNr>Ie3TqeYK{}?N(wQsumb`TQIJY1kp`4 zxe{$y1Mn4x!}EwToSK(hz+8dR*bAsrYYyw$JM)`Ky2#Od81s?rf#J9hr0PyrVo|ah z;L=q85mZOTuj?5BFm@c%Fg`{CV7!jRz1D@D;JUd^UF>z8x)=V#dB%cgG>~tI!>hmQ z@&U=={Kl2zeBG!J*CeD~qT5z+2U69yFJLTnL05&}!Ylj!(&Y_J>LY$W$RWmK5yC2J z{tdV{)!cz;oa+=~d{CH8_i?Rtb!s1-*?;uV|2s1W4fv*SwEI{MrfRt{}CqksT;{}>BjCYVtvw?S~Q{#iu@A7Q{Cjiw@-BiI8t zs3U7MK{}Z>L2es{D78Qr+hgshI1C+w8Ln(AXS-%AzR1)r4=wD8)=7-duaVgimp_YE zAH4LcyQa*0|3DYai4KTzUUU)W@qJt8^FP1iRU< z&q}9`_yTm#(R9D*bCB-nbFI<6>I2cOKLZ6?vgr&PrF%6>cf!6Lt?wlf1fH{W=wL?> z(;pyk9j0c>_{QaM6ErIC?guJ)8kJq20hN1NMP-1XQeSAr5~)+43a10kSsIRqa7Ji2 z3km1^R^j~eKARMCY#l4F$yCXy?TRwjynAK;A>HcLxFSpEaX|Z{a^p4^?n2XWQ=(C> z1EeqGQ9qH_j;7t5Bj~0KuF4urTfVX2Wxm$X3X3}BTwtgPwp^N&^Q>X)Ux;zf(TspP zgyu3|;|F!^AsO$NYofZjjVhjN7t2KAIa6z<(bhmeb?GLlV{4?_SAs5~Y1C@qH~lGS z)bxz*c4&nd)7sysR&9SzX!N$K(#39Nv3qo}zARSLtQZ$o9B7ZA7?omIGfmhU9}=%O z9gSBTM+p%{$v!NNx5d|fHMK#S*w=0%rVTW)R*gVs_uCF~%7rPScym5!u6;+p#CD<7 zZ^wVsRl5R}&jSUI~jlBK#`k5<0M24FkK zw~@id6Ntlwt>o3o@j)Jzs=NsQ82L4Vr{9QKtDKt4xyi4u2yB*1{IFS7W-C>(PqqNx zimK2VtS!=J!@1kvy&0T1EPE4WiQzp%ht>j1!wa$*QUV3vVvAO{`&%nDw~kMBJ2qOy zJ&0b!`H5D_SuVJJ8%@3~%08X{FzQhiA;v&~~Peaf%I z(*mfv@F^M3Rl6`SzvA!6j`&}v=y~(4 zBW2i|W!BL1Rn_|%dl?I=HTo5G9C`WXqOzHn50Ar&*U^LfRu8;=FVw-l`V|CjF1mgb{x;y(=`#JEkH5wE z&9>f|r?uZoq`!@yiL$%!H!&t(rd9Twm~VvfGxG~W`l^2NHJ&r$Drl5{?jR?^5>p;m z(r-8%9#@pQ@wXsxSJQXF{P=`8SeMH3ARD#>vDC-EiI|euMEFhF^j8i%Zu3#m6Tkwn=Jhz41>H|7mB(YbYPlV*E6AGs-^&DSeIU zo?Ml-N=Sb%$Q`;!Pu25wfb_l4CAKyko#79@6D7T`@?AiQ^UgrCL|OGoG@LjuP6!68 zI2b%PBM5vk#%UZPB)qy(Dwe$L6n>^1EC#LhSak2FmY#P zTN5`qEePe&hg(7`o|a;@>ZK&@fcYAlr)LK2b<qq|P?5%!rDcIDGB0>MpanZ|}$rl(l5 zzESZHBwJ7zW~)|x3tbiqz#ad0G>nQT0nR@BZY)}iH+=wJA2tJ&rc`RFFHj0Y+=iZI z^}H%i0%+P1Ugsm(x3L7?iV2=`B;PZw=F^^3K7E*7Vo@07Ps%xYInXW~fRGe12#3zo zfN*L)e7EGRRqfF(>8{_bBlcEoLkEw585LLIs~IP80*ysO@FEm8%KI@lEG2nhL;KJ^ z4QSS}eY6UZ4wG%2Tv~CSG&{Dn;U8p97Olm5UifCfv}S0;-$xSZz8#VtU@A7td-Hy8 zb*ZMg#Z}?U1mhUx52IYQZv}ln@m~xv2)q-tXleXm$?_TL|}qd`)zMZ zJ2$r*`l?y|Mnzv1(@_+SMd^64sFQ|A!hiK$4Zpk%p~082R_#A_1XU)%N`g;KX(tAD z6QPpoYn<%qICwa8O{3y=BvlU+ArONwf`{$uKRoUbe*eSoiUInW@BFp7VtCxWExy@l z_TQI~htE$V-$Q>N9@oWsx6}D|Hon<9y)6$tLz~M(QRHWMAOi+g+e&Rid2^CK(=q3EFNO^@!H9VhLZX?nG975;3+1twOPYzmGYu z2+?6plr1{V`?f7C-qFJ1HTZK;=Zy0{Z|REOC&1KlZlPAo#?iQExFwjbHkgjO&nqTy zO1I(~n`MnafJS88)F7LTF2DXHS{Am@CHhYjF39kVVcTPxVU(W%NZ}3ymn&sG+tqWA z$V9Mc8zzD*NG(u470+tz^42B-@9Qx$&PIi{wfCe(gD+y8jFG07eIT$?PD!QT6u$SR zrlyHYXQThVhCpwhGdykxe*N&f9ly2sO+Xso?Rk`wru|=hazY}X+gKlxl4IuAcABHO zKE(YeGRLInHRma<6&MRVx_RGjwHfQk5Y1RS@YiN6P>_3Q5Z&X$Gp=PymUOx+75gyg!nCLB8C)Hjv%Al z5W}^tKm@ylI3rXGs-o;Rn?o?+Z})whs8>dsMx1P;jSM>r1bWPu)5o^_@&*)7E8GSR zD0wuRxU8$jV1VHXEBZX7#{}MJkiZ+4Bc%Z0J^I*zH?V_=eAX?~xG)|s6OHNnk|!1z zbF1Y10j)K(8m1RCA&e&PEt4<_WL#WXCNUC_NHFkIBCO6(XVBrsf)AynITlod#c|Gy zJwdx|KtRn~gqujAId7CCc#Y3+RMrt^_`M?+Egc`LUUQBki%(~%LS$e6#$rHH1C~f1 zT~ducYDy*OlxH`ij|QXf*hkHKz1^!^@qs#IBvLBEnjrg0Ns;fk%eeXj(K!4*R@02{ z)TYH!XNV*GxUTaO*0~+HoXWY&*IIR=jjXd7tmd6P^DUW+qF9BGzTNUm2DU5Jl^TN* z)EfFjFDPE!1Pn%47&LEnXTbo2P*0NMw_K4sJnpVR!{cV*7r<{deq%6XC*k)Xeg#Nh zguij^^?&j0MF+Ru_@^EJNw()6{R9@xN29z}x(PPM( zgP+2qUT<)=>OW&9x_(g=g^DaU+6?1zV^QhPL%H0jY5F#z?fFi`d#|eYap}yJ9X6+Z zRGlrA%zLKqM3T3UP9K1DZJn~Rq_cmG@>2ZkJJHc7r#08QJBY?*9O}fpPu{=`dyymr%6;2C#Sb+U~Pb6Q9{k*i9v13Neh<{s{vs(0@vP1VRjsM(2#Q$L`{l(b^_H&A!+^uD48OW7Aq(*P z0l&DU|Hpsv@kt3fIWdx}O;S=Kbm5B~!{eOzeS+U1{Q6-a--llweoOEZ*sUol$;tX_ zd_uBq1hCYTh`cGkLa%>y*eYwc$Sf-IeV2Udo*{=Y2V?l8f?S;-1H(tAz60YMOx^um zi>a%IYmrlqzm~{(8N^ESc7q7uaDrK>IkRBB3dzjn$Vx~EEr)bg3XB-O!hvQ47?mv! zUoe@8Uc_pzRrU4ou*A|fWqP+@cYO6rJuwA+8+pG1W5U|DQ?R5CDB^uo+-X`VqRrJ8 zSXSHM1prV7s18ZoJ;r3=3dN$9X3Er#uM-@K-9b%ckfxFc?>ZjYd zcoza8bs-Xrijfo=+QR++rj@RVl#Ibof23rJ`Dj()Ef4>Kv8u}F%dm8YFf8u@HV|ru zDlseQjvFbUxZ0QJr|r zwWT`IN5R@;Gb+9Wk+80nIC+7z$2V|OzZ1Gbol^!U=HO{~g!p1KymaOaq|HE zrF0#OgxKqbXXaC%`7m4XDZC0bVP&0+3BwAhC&2>RtHUekcr^D~>#Mz3T`p*Vp3m;n z`?DP0KQ7UJD%|hm%mX(FRu4Sm@(6w}GhH(S)g8lEbv`Y~M>=WTCj{!< zsQNR@xy;gtB=Qf_xmBHKL911l zUeVNK@38a0%~XNz=^v?Xl;)}Pxz5USn>($R{Br=C%eb?3s z``mP@_`7gyQRLrLDKWOm$1x<$)v={?!?|^h^^3JsR96tx<;aM+>r3<{gvs;ofFrL2 zQ9xe3+>JOtw_mL}k{i)cAQnH`_T>Iq!iN36l=5-VS;(pB>Rqo;@6j#rA{8@ib9UC} zQMvr&eI5ExR0#;JzQ5FB>!i>m%O8>_H_cZVBdcGNoZq$Q?!);cLJZf_%pT!-#$2?x zUi`a2yLQXyIE{lIjq24g;wGJ~&M%Wu`YA?c=sG=0m%a^}^Z~8VrWPy0Kc0e*-SucC zPb=k!b;+BYBeR01uVo|Zw@014Mm)4(CPH9g(nMR2RNE`@-M>~8d)p1YR_z*L9aDs2 z%OS&nc8r^9JA$-V?=Rz+LC_a(sbJfi*p_H)zk3VV&Os|q#dZX-eMO*Z-^qZF0Sdr$ zxa=;a00l9iTx1ov`nl;l;Vo08uqQ6x#^~wzW7! zH$Q<+$k5GV{b&ZESinsmqt^J#7?viV9aCUdG%^`-ps>JvG?^u^y|4??D_h;KYrc>* zKdx*3?;EIjZnK(g2NV};{ujDe0E4rd&k^r~W|7hI241Yu@}kgEjOw#mknEbncNPSejz!B0%~Ja6sl6gXxfQfi)o&AV zTCoU#)YEf>qL)G#g)Y|Z>d1Dzi1wb!)+LXlU3*#}@WdXdVvX^hD}9Z)IOlDo{%%Ya zF95UA^wCpbqA@kaiy9^xpVs_tJY>=|i~+iMA@VlW_$5#M+!kc=PO?Zed%RX&#sVMv zZjp5MjWqw`62kK2Me2;yn0QK!bCd1btU01qJ&pK@A8;H}py7-&{pLDA61oF8a)7hA zc{q#fvd`j<<5^tMU#JhHT247@FSZ0{WwCG;5Y^D5llF+jy{R=reSKB z{-5Nys1KG8G0b$me2SSPEq!lt2G8qT=c;QmtuEfr=nK^NaK<@i`g?{9WZTPD;Kdry zemuehhF(u{TeubcV8SljW9(x!_#;cX0TcSJ#MK~a=5uGqdD>yquO~j)*MWVkx^CAQ zwO{bCWZ1qEyxnr%;<|{p(p&O#9mhKk)$p<*T=~rUm#@K}`Ya0(RH82*Fo)&kn@7XE zhrpKmT3WcY>_Ft*^!p7p`vIsfi!h4Ay@-$a`M6-{_3YI69AX<`Kc^yA1lh_p1Y9MX zmaanrr{P`r8)edu5g$+&+BTd0AwMow=G_Pj0glA zWk+=)?ZPa*KIr0#F?PV)1V4s_1?(myYP$&ZvDSSxvO4_fpHrshbmhr zcYk}-9&C`{lO_6IvkQk}&Z{uM!~S3unxlsIwzadKlxVg?Wo+LUo8_?N z1of>~+I1Ui=%Q;F#Tvq>nFTU|B(yOQipAb~M7N7k#MFzr=!GnrqKlr+qOYN-Be)g? z!=G><`##VfG>D?4OZ)-Cg}Uhy-@c3zv#rXCq%y4m)v4iDWotwlK;qY_^P%3j{0j(A z6X-k*@i{{5sUa>Q#EV;ncx0JIf0RJ1RV#4J1%ZqR4yPH8fe#as&y1^f%51KBKhDD; zo`KOEaIHvl{kvD3>Zp^>i6%kVrrq_^8PG3R$&r$ZE&!^09-(dC9_$>m1**C3fIXEmFE;OM98`c|MDLYL|K zN?G4os80{Wa2~oc1j`p1UZfX_1BN>ow6FSfx}ZCn#dCCV2aEp)U@cCdiWrs) z0nG)Jg2o1RjDKAlazxh`V!H?TV7A43VDwAmYZvYrhvcZ1A@v8aRugq?2hm@l0$tlD zFQT@4Q5#PW;SAYwGQ`p9bkE&5#9Ab>pvnVz{Lis?=FI>Q_DhQ8c{^i$Etn+FuqnFz z=uiJ>R9T3z?=-^Ytn&A1(m)TZyh&GC%qsr`Dvsbpw5|SpwNq!hnwjpQ2l31)Y`$YH;os83n^@zPI35Ue6j->dixV zckd8&ov!&a&^$Cn*SzTk)O<5)wqv#HZe-29QM1eZI=m9ALbv%VGTfR&~2(J&585=W`r8fftV;LYvi0bql><}oJZVt zi>43W2;L{8%OP%aG;S9Vw<_Q)^pI@;WP-P&_Ig53dXq$N zCg^S->PehfORi!|Bzvw0C6B3z^SSIRZ0DbF3wVCYWqv}quT^Te{}VbCzK(EpP~9%3ZNhZ_aZH`2A+W?MfW~ z6eXy{kOoyRphlwx0!Wzy#G1AN=QhToR176O6g_B%1WDDFE0%w*N|!$eNw)sN@22&= z9lo2RH$)3evl4zqg*-B5>q?_vVzGRSVpNALW_t#jo+G#s9inegcT6mV8Q=`p$c$@mCX( zk2NB>MC5ZIcxvOxLu@EcsN;!P^xm6IxY7(;+8rWph+sB@dAG3FvnY*}1=;5a?~ zHgGO2HIZ@GV0}6^MVd8})qbI?y`9xI0i9Euwf$jKOJVOQo1<^ayBQo;7lI7K`QR>` zEbU*s&g;SQ&t-ltK_ZlbXJZYYWRJ1WNMg+d_+9`AmrJc58~*k0-+cGkO;jd)i_s6 zKlPh_Fw~EDU_bz>wx$zKEQQ@^YFK?X1Y6nGDpcsW#WBut^Y~jNB#R(6Pbxe_#M+@k zb@(1(g6Zh^&|%#@(3nA{o@Y+Z=%p_73M>2kR&SEI{a$a0%oEw_l}a9^(kTg19p zuSXEJ&Sn0ruOSGXVXZ|Tz#ap-_lX2o*e$}Z20^&<;x8s)3AGOO>B9#M9Fp)drXUd8V10F5rRu!Eulp-rM~q zZq26N2n?YE)vC`YH|Z0g9lvZ>x_6|#?sdqD7mBRq^!8V| zIK5r0zQ0TG_!y)LeXgNjL+C%F))SO1SRiAtN);n0+=AGsDZ1J*toB=7?H5m?S}&?~1bI|eluZaFlJ&~@RC5rHwRg3Q zqZ-vq9u_YYPDopgqK@D{po^-Ei5xSg@KPXcz9d}7gpNqSoiqN8k`&wRuq(@HMROiC zA9wC>+y%3ZO$dw{tG>sInJd6|_(5;uSC=LuAO4T9*0OWp3OqIzulZ(MB0I0G-VL}4 z?8Qs&3u|B`&t!Hm3P>S&DYKY4>6arAnz&MzyogY(fS65j&Xbh$QN&?3sY5j)Y9C~} zxmSHxOB!Gkq(P0i?vExOs7&-;nx7-?0!GDFl&ba-2&=3gpb{oY57&bfp)g1tUW!r4 z*{(fH$BjX07<6mZ-4peMxE94&Ra3Q^ftqt0XU}h8PBAKy06Su-;zpdXmr?$Ul!ZNX zJHtnfF2a07&=1{3kTu{5?;JJlPHf%&eLd^Z4t@ILOapQrP6WWLTi-xB7#82LhD0L~HQ_G5S*GTZhX2l`wr zOwfsw&Ac8tLwn%zs(lls#!XKE(uEq5laLM&<4Xlni0DlOB$r=IREWGl9t`pDlEj2@ z1WWOVM)NIQId9R%q#-B*LE;^mpEJwjNr|3kOr3UxB|9F!{0|zyy~%J+K=0M}hj25> zlTa|SFWD|jmh5MSf5Y+e$k#(KK9h&Oz{eInJWzQrQ3vq)A<4p zPTvlTL{3Q$4_vSdi@;|F(!pm3)R;S@2d)IwLl5a5*s>Bma0`0I>VdteGW5_ zlhChlQ^nGxmoC_r1sCdq53}F}ET~UODk+bWb_ zqRWqD`5yq+s(1{U=pK|m>f`x^Jfl1XUl1arghI$%JQIHq$!i~Pi8bbFd**1oh2as) zFW;bkWBpLPg%k4ekcgYd+H5+2&@-d=<#&XArtpA~>D)Kbc*utFZz;jdBje?ovIEKa z9kIuSDBnJnP{4bhA4Zmf#NEb4*d#9KgOh-$5f?HTncjW4PRV;0N8hsdk2GP{;t>eW zS{?Xp4!+eVB6js)hAhF($~JNQtvnC#9KkO5ccKeE!1+eurh?omPm;r|tM3La=Y_|x z|ALf5>Z&wes%Na&w9vdA-EU+919S;T1EjVs@p>bLm znF7&KnXYrIOO`U@Lw%KV0_gt|Is}s7B6J9Zz?(op6{5dl3~u31j&pnoBN`P9W5-6i z`fG`{DK_z1B*F?R;w=FN}0QyWh}9qd^@u7?h`F~4R!2R zP^}Ks443j~sBP?*!HP+9ABw6iA8>jx2}T{_^51t8zd!^L0+lD#9$1noUEM2ny+5H5!UHy#pqA`n8)UX3mdh4rxeWCgnS-rFL> zZZxunj~wH$m3?EE8K0jMYybsd?CPz{8!Ue*1y&$sIm=&y@{ZtjEc!Nz+9K*4ShP7T z3T%|}G)g%U*ogS8oBrZTs*in&DLhQZ}YQFz1`q;u0m`Apw zdCQf%fqV1bG(n12>1Fg1{jJ=E=AeKF12$jpb{Q2^Gu=5GSlTlT@oWXhj>Pd@jpGR7 z_#JRR6~|X+wT2@o0ji{;n4?lppr5O2-E>XRyz4I$RP~!X=MBDjhpF+p>ZPD&Xp63T z$1+rXXRB3T)=JgJdTyI(&xHE%zQ#l}sJ(_dkWfF?Q12(y&K6Wo-j1NQYt^bRA8f5b zvK{EoStm3ChYJCvXM{x~-4pT8{l25cnEP?1srO9P=CGE*KD6|Ku0i|@L!UV9pJ-!L zJP$^+940+i{(ov40T#A>6SUCMT3Gm2VbDiZz-2cpcGQ=$W;?HRxhDjLT&Yy(kDxR)xG0@RVHfC3bBP%b_`aKyHsFpZ_^18 zZE(6}*P=ZN%HEoeq9S=RK{ytm0t>urkLLAkYdpFcr%*9DXqx&Lu0sav#TVpD9B&$w z01$ZgZKPu*^sZsa)jo0T#Ydx@T8f+%dL9o2zTjAvGs+*szhL`f^mt@71K83<5^KA_ zTw08*jwW$2F>BCg*FZJ$boL#OXABCvhWe}3l{ZP}6`{jI<+}4;T?{gf0Qs!W`wrDv zWa>OK+IjGprk|&@g8={k^x9eMwMCd9?RgqeFizlD=oiu=p(50q>=L|!is?rACMNhc zW`Wdb_*?qT#W!@Z??%DB4Z1ZnED0F{DGdSOZlX=0>B!>?ONw?KeUp$52`00#mfVnSyNINyosjv#4*^7%%76~L?G_eWvdERFIO zOWWfa=V>_SSpF%I`0NheIFOFqDk0e(;k4R}Oz!uK)^BeFZCxg{)slGpgN8azx_k)< z4(PbfjtwqERxHTfW>oML8bbP1q3^jT+E?9rgHY&kQs_9S1`6$5ga+M(hFZP578Qrj zWkC#^Om(R)F^MHk>Jm?~#1$xEZ9D#k5^i%~L7#2z_{&+hx>#&*jewv}qR6tVMlJVn zZQ}7FvL2l1xT$go`#7kkuc{ds_@d@e*?+DadFHTk)eedd{k zA;6Zt2i$QV*#l52a1<6F_+R}vb%(CvX?A9^u40dgDyBrMpy{AKQ|0QM9_Bov+x#+f z4ns~yklrHp_7GVn#Y>Axoq7jXj8a_ZnIFKci)rPt#Rw0Vjoq=qkSPqlyQkRajl_(m7W#XMdgZ9p)@z&ggkrOLUw$ zotGZL2UN$qMCS+Z*PUO4&c{@S`&pwMF8yu$?~Vyln5oP**2qpeIVkG83l}9$9Q}Ub zt?_h9qwph_xXi=mXSh@xuKwlQAGp94?s&z0D~-%hv4>|}mWgE&&u7%99^I7g!JdJh z26WDsk+V==c~F43mj4|@y_kLG9jJznmhPwqbA_JP6nJYPC@>0?A)^(ctd3GjM(Z(+ z0xrB$SglTNpT+$EEF$AHlrlnjRzsOWD9L~lJC5&@g0(6g5hzfl6p*Qu;Z0hFXh zK*YLe(@UAM;A~np#nqSIWKf*5R3_H7Izp*Y{+AF4ULP>zk$Y9gZYN>h!3nhgN(xMc z5>j$ZGLGZAa(5f^-sShiO|Cw>UH-N%|CnUYg=+Y9z;H8AhE};5d^r2(DP(SM*^E#TE-H{C8_@lU8s*!Mx% z%^_!G=9`<**Xfj2dLx7qWtiL!Jr{Zb5eCJyY^xutRuTAn03IF%V}p8_uR)D_TaEj% z`M~`Vwn=j@_x7#YZ!XaS>(hSd{yV7lGc3e(+< zp%yv}{6X{~M0`IQ6lFTwN%y&_!gLRSN~FI`*y90Ew!-FXQ0EZTF%9bX3V>SNDyXpl z6-F>ajI7uJVh^SKn4y%d`e@Kw!N{RFm>+@VN`mg!4D`=vCx^yg_X2b+daF=})-5nk zQxD`sMq0M|&o$C$FTu6d;0g%tdsGu`wBEFQ>EN*=nVRaT#HB&@hq+ zV@)#{HsS6jjBLUn?^;}k<)}lh9M(QjWIuKl8SkS$!o=C?GF{C_7zm-xx|*lUQB6*> zYPtw^xc`OK>?RB>k~5_mMywJhCV=jQY3_!Oz7P;^gKfU617GNVMBjm zN@G*~{RQxh;|PQ;)sWS6WaK%$g7g42TZ2s_*t0d*un%C%EwIr6!R{JGu;*}y!rv0B zb8C=vml;NUCk^Kz66J-gLvovx8v)L-5%^dFcplf!Rk6KgTTAgr?{39Ner-|6!&LA3 zKcu}0cvMC92ihS4!V+#+0s&bfM2)f-jbdV8?1m6J(19q6C?FY8gb^8pZbaDY9fYwBO1HhCMdQ9=63qdoZ2ues} z{iRT4YVG8A$?cB1AmJ^ahTN|HxMSxfeGi`by*LPPChp^HT-x6NJa;EJ%g>O3EVxqL zFjgA(;rCwL+z{XUmY=#ZPa|(PaE$*!IvcLg=i(4I0J@ z!su(k&~wF?7L5PgDlmNf^gWt67bt`6?7NvxksqO^!BPFSP>@MwiP|-q*Ft=U5OCtx zBo#LNcBu(NMd86ToUx{<`^QL4ZYCDfH5LiP;!$Atdn?Epf(3g_5Wuy{c0z*NcJ=^! zbgK-cDZudCY^I+bIcXz%}RDV)Zx*B_7~{6z~436*DnLw zzo0tJn-BK`&y?nyDfBiEETONX`dQ|}2rmK77&$$WTV~d5AY8+L>eG>&UzC>Q7V83U zV}Z}>0)tCYV1-qn9-WahH)C{xM*!QJuyDeTbJn&?qjT0km8D^JC(Kth%m)ZF8!+QU z!{8F42r8(C{Ur76)cV5=RtNSwdPD-L^~Z(;H}p}Rf1(fdJu1^r!d1I}-T%JsPVeU( zGdfyVW8jQUxB0_de)O?F?fEFIZWgRslr1;0=xa9g6)yM4MH-Q7T&!!7Fr@6tb^>xd zrU94_^8y!iV=HFC?-=VYD!dkEs46rL#MY_2G=}Er!X}*B-|*XW7`M~`yS&WoY>!#jG#I__5H~=Qaff;er!xU`q(hdlp{vvzOuL6^+p1^yE^f~J zE$<@*_)|JBK@Yq#3gI~@!BHJ2<1L)gh(Z0G^i*1CF`33LHNTKO+MqtW5FCY~o<&l) z#DZgk*Imf4fYl3!33=mDq7L5p9EWZBRt{mBy-bV0k|pAwWc&$hXn#swh1OI&Bygyy zC^?I!Vvp8TY&MqbeWbQU{WrT3I??MC)}jt`uR1gyDEqu~SrIV(eD#D=MpH6cAaJ7= z^V*|&>RC3ArtCzpGBhnG_uFsgXwr&AY}nAImDaJ}$ z4=jj(jDx7g>#XlE>kT^VCT5+&tXd419LsusTvm&*NBH}MagOnhiL^GNo?E$ovFLys zCf{IJ3@31L#HyUci$$%=cQc$J-Hf%fxa;E)ULR>37MtNcIKuQC_6>&Mpp3rnRCP#2 zF7MWbAiF8BwBkjyGpW)j#WAN`wYpFm^zW?0`TE$@={r$}hfz1wInW;nIjVW$ndETe zbO@+jz>ZYI=3fRKs7CvA%^fyqTv3aHqlY5#aZn@UTEl#Hc970GLp1 zq>iX22Lk2FiEr$NR-Q(WkW9NE1Hl(_WsJ#9rad&vT$Y8IE74fa8%SUof-jYb(zvw^ z{a`ydmm0>~Ua)nV*sdP;CgSprsvX!M^M<9NJ)jdr0poFzzi1UpEj1ih=kbg!@UzjI^c{* zeNq3@Fr1csEHhax8-R=LeIv5aF-8UT+atiJ{1fV({^Bgf`)ehl8zM&elLo;wu->Tr zQkcwWcv3jg4I^#~CzOX0( zjF}Z_Kr>;xI*a*mB{<}nfMmgqta39Sl4BB4$MSUYwQNsTeKr4d&^L&F3QXebxV$gJfM5|A82zmJXK@u?izOaJi=C&;ro%-39UDMi119 zBccRXT?SiVw}lmSnY90#kj2{@>i!|R+9^fh?Rvm^a)Gr`X+W+Me*hMKs{q?keG~EP z0{r9%wfc3K;LwgZOx8HuLL6EE2Z)*|J9s;J>0X`gYmBwPtvcOROm`4T}hzD8tC^Pq^p#4DU@@62KlH7I^7JW zE7IvUGu>24*G}YNrW?p|hao}eZZ;4b=YuENIL0dOCRkpUpu$yvvo4&-#@JynVZba&FH+{R*$ zmwkT;qAcfBM&)-%Z0&=>^ybk{JmW+)pHW$Z7&TcJH=D&hu8XU8qqylTPV+jsQ)n;B z5k>tDm9?6NPs=V>eRSSz=Jn~k_b~4T$ZMLZ5b3a9fXN9COwy<>xDqgUXHbKB02IZ^ zcS$NVd&GtJu&V~URQ(XhJg`c`8$x*dQI6GUu#?8S^r~k9>Uy+Q|u)`t=h|Tdq2f6df zyw~Y!$*AOf<;tr`NAnpKf72gps`e`ehZq6m7k z)s5sS6ZF6*QbO93x5KH+Y7#;EA1DRN4OtUZJB`c7C_k`Y}$ml&V46W-g|5@S~|bS*7CF|$a{~6m0{ph zIaFF?46*o5V{vRQuEeW*PcdI(7MkMmV>ZjO&k0RVR;uNV;ZHW4}q4t>8oVl#3XrlCbav&HzvvHO@uAp z@Z>YF%QPw)WhesyTt;Us|3bcKp?3zDV4+}#iYt*~LqR+2N=1@wXr63tEZL8-WUF;D zKr+_P#M$g&*cTOG?SibG!+R!U!9aEW5NWD@s9B&VsluO9_h(e^Mpj!3%^WVl7csId zD`F13e)sB)>O>R*!*Q5eXES)fY90I^>B!;9<}N2U*ZwJ=ozVnNZm$i82=xJi^!ady zx!sYkoW8;=<67KTKT;K#+pw^Nq*$0QnBw3 zPXEBC=HTi>-%@m-*jc)KVyB7aqxOipeP}Zr(#b#+TkhCOww&8#q$YxgqViP2;!ePPQMxn}lINYr#xOU- zEk2Li#3@^FGoc)P@9gp|%~DHPS^<%iqb~k2xIwZo3;RoIRU_C@lXFAxMY$WeG%Mez zxK|K_;-@(di~bi5<&9zFTR=2Q)bTu^Q9?ATX)Fu_cc4*1G?E341~vXM%r;;-Df5e6 zc}q(?BOTS(BRzz^D{te1eYe^?IAWhR1)Zm!BFIrlf>C)38XE1Lij?X_)L1k4;Lk){ z+r6`afAotMvb~zgtbat-(3am-Rx{kQRCXcV*J`4p{{(4tHa?Pyk_+wb%3GA|X#-*; z6^7ERHQQZMtouTV?N_AR#khN-Sn`QQqS~JegzjYXJOVpkRnO14{LG+KP{Yp|{Orij z7x0NX&qrkgtq_Wecbkohzkymgs@I~LR>ThQhg&J2n#iT*Urt|L_XvQr zeF$e8-+(}E0f!lIHZLz-mstjgnD0vT&b?)y5%V8%>vz@yS9WW;X2QKb3w!Dlq3#sb z4lWSMvD>24?8obp-Gxr?Qg~(_sJ^^HDsmq>FEC7RO^g8^D#-fkCATo1Z9o9C7!)B| z%Jbcfo|^|)4tI)W!~V?o;c#f0K2;wLeEpvY9EEfh(V&(8LeLcm%7_My{sBRm2uh6x zO~OsEp^gU5`p?J7DCpaFsI+fna5`oDiz|;fUmvQQu1P(+WR|W;#h*}FB zU4e6$*b}nT*^C{Xp=RBvdq7V$WN_FMFNzbojmipOr>-6>{V|HQ*sg2w?kv>eI@FF* zL`?Q(E&8Dr!Kcxw{8&&W60u#SXc(;sW2c637h$9Uh9wdA7)FU00JTue?E9|)ES{{e zgm!8Xvpuk46YE7t?cd>SizQ*?s^>2kJf8&72R_qfbY&T@qwJWpW5YdkguRHcWh+xd zQ-Pl-FpD3Jm@r#Q)?C_?@}5>x`O~i9mrt(Xh@}(BIGyLoBhvKQq~Z+|n1Fp?N#s6j za7cZ$%q`s$5xkoUzrPdkq9XI02PrbU2mCi_`0;}x4Y$XFfYPw`Ee%q_)J%nLAHi!% zX0BOBH6Y1I`@D{BycsO^cgvwQE>tRPfjQQ!X*b*b7|{s2W(!B8>y**lX22y0}lkNCE?Nai5Z@ z+8SxZ$|+FgI1I07Pt#gl9P3y^%o8-MAbOlJaNnPA+qL zIyS6STY@|-U8c+{i;er`jC24em#MMeF}}%84DcM!|My%N%g> zQj~|DrKz36+~fTqiJwjsgA{wz6Tpp7S_4-qw24vjW@6<~V18}>RA7cwFL)c}Y?OxaUSzJIq78fJmWKyebTcvhI#3C& zO<3OEO56{LqU{i<5lQWc6vNX!!u=k~l00ytvd7wW%2KT^5u$GZTM8^cpm--=AQ zo}d6}u2=|Yao3zLs*RAbQK9APdUXfX_;75XovqN}LE>fzUYln2w!zDRYq}~jcPZ}x z9s#D}1UlmLv!#AVkRo8}`mMpc8iabsSg_U+H>gHeBZxQ@x>ocjpa+;*X+BeIZj-PE zwQeeVNnz#w!Nmfb@B)<@_7#M^7iGp^M;5b>0yb$Z6Khb?Tu)hxZX>xZ%$*9&5O$?) z+T%oRcuQHX&GQ3^yX7~x^tKs+V|^So53meWaQQ%J6dh``F1`zk=lMN!T{Y6GaVTDI zq(_k8?olrk4`%SpP{>X1t0(ZogVhh=moC`s*jQ@ng-y;#$7XMB@0v=hr?^8F>HoB7 z`F5}a>>mj+=b)NC(xrLAJfhwLO^_bWpmNr&)wr@6cGsHj*JwJH%^Xd~KW~b4`}@d* z`HM+iCbn$NG7_A*rb>R|GCd)*BFZvZaYKv5-G&lXINTzbYtcecf>}MoBA7-pj%zL= z!H8Dia`nqV>C^|2A}~p}>Wz3;rw7G%YGhNPZWPQ=&K3E&LG`#YMlCosFXGtUlhF=} zDwz`Y!UbZxw_Ej*-zhj%g8jU+IHv+9iR{m<`^=j0EKY%D_Hit!&#*6umi5s;Ms%0V zWP7SwD@w0zb=Uxh-YGjEZECVjRo1W{!};Ea@wy~mof-fc@Hqej(f#{oS*Ogzk4i+% z10#{kQT-$SgQ&=>oFwu&Y>@ zRuSBdV5_h;afL z;xv8+0`QZqf9(2)r6G{O@k3bnVO9w0tMMa^Rwu7EOf9;OP3JF2Mv1ta&MKx{7gMf_ zkyAQG$8udvxh|$$7gMf_DUTH+uPi2>pMbtg*;F4Nu-d!j3mtQ?YrU0h0E6XI5u2b= z#CBwK!@Ujk|KeO3)|uXgq%%kX8M0NcZpE@&Z`%7}QEI|x2Qj$4q@dU!VNMm=KtF}C zZEEYzSQiS%*7eyg}1^H~r3eR<+abGQh+60%$J7f70(#r+@2rvPt!sey`$t1KuO_ z!r=*G$kjhY5?^c|{17;P2n#>ViuQRJKNh|4^}o>z&)-?r@wWYOW5}qulys*Jf{cpu zNQ>9jawf?J1rZxAAF+zWS1!Krqme3~q`x#$4V{4F zStppG6R^W1fmTVa;s9ZSj%tKXz&as;+YRs>^*S<3N3vTPc`XIJXk4y7Wa2L0HFhjbyU;JQBCa^Ka}2+ z2wKvp0v*9VR0mjbQxBz``kg(aYV|uiL9Ns8Y;*OTerFS_NA)`!O|91NY+Y4>_y1o* zi4#7=T@bvSJ0a_xw#8g=KibgeeH2B=SPLDHSUvr4{cEi!u;F~IK8*0Uk0Olo_V!W6 zS?Yut9+tLsE#|WmD3q0F112e^qsx?m!UKOso2wezSz`M{*p;&H(}80h6sc9&>RTNIa@R5-7v$AFlV7dMycvgVD_l(ts&eI z^zT@;B*u(@RUK^p3$We(H5O@fY9!1G^%4(6#)uEhO}MQct0mxN8N)xnkLvd+;$RpH z@cGyx|2nFX(kg+8dn1iFpk1^PaZUhh%W&HJ^=TLeSiD=`uk*XcR<`M)bI06x#+itz z$9e0fn^;~h=Zrj*hwgOBG#8QIe*REO@ZLF>-Qk&tKHyf?^GV>NM&)0DFAiKAm1GoZ zVLurSMbja^tmBySryRy4p~^C~@R@}~j_PYLgeZcIvd2U)Zw+_9Y;K$riR_ehnrG)x z?tIl(L;VSm0<{|ILxg(KS)u-XRSasJXcd)@GMm)LJ*cj{nkC~81N17ug{1T_YUrrm zhqBaLeJ}*;ybR%AJj5pAhR}E1`XU2~RrMaLcV;DzfPfCyM^IJGMU3c+)cciW3`d=t ze&}#wpZB{2Cq10a0ttYM=vPbDzSrT~X;x@2m{EuW#zp;T$Upnhv(_7dN>yEbR zC-J8lvB!uvI%C?1md;zvFPmp52Box_J4fAku298ju9)&U##Pk_|20`UvS|o!%+XnB;^h@ zp+awebTGVsK@cu1kc7HPJaEB-`*6O|-GbJ3!O=;Epq!QolpWPQAqA?x_hP%i*8N?H zGk4%kPu=fw&Q^c_H3GNv}S;4hT zcL~yA$C%yoR~bhbyqyU&=>Q< zh+lC485OeY)Ix3e#)J+$57*X}CB{w`)@%gNO10 zUpbvJMDk~0DS9k4^X){OWmLsX<_EQ4b`9D&y*9^O?N9wl0sO%dK(-7R<`1WS=Ab+?iB;JEBjlcEh5X$WXM?N>TGy3wtP~d`jaYkH z)hB4mlj=T0wkWTp35v~a7yB)+&yRpbV1UNx#C5>vFTj+%NAIwL`J!d9{~m{tlzZ0E z72~JwNZF)^Cjb}p;Dn^``w0XwR96W+G2 z7QG8o_Ib&V&pLkU%4Z7=NBEIho({PVh6QcrcYv$mHby|T_eq#!-x4YRA9d1}=Dkdg zQEb4M{5%K#x1XP{uIMggQv$RCKL8z&%}bNelvnl8O{oRQnXDs-w9Vic8|U!yO!L;z zQ<;qyI|~=u^nIHXd(A5HhZ7&>e8}6+^3~pSDI^5Ifks`(NEUJsg|ok!7V?kFV}-;w zL|ysJCiUm|i^_j6Ovk2OHc(OPwnxUZ1KUf@uK^nmBDAc`jC)4nLs+0uF$Aw@lXk}P zOYtVMTxC7LiLBiRLC3u;J^=@m5_NUhPJvrB`7OK_)oF+7Sfl!8=G1!6PcCD1f;3)^ zxE9G&wcVseW)Xxo153G_AnE}+a2qm*Hb#vC{xMC4eC1yOL9IZ>z%djG`tOh2=&#=< zBI7D%+sX@z%?7xQ;2~9%Pnt6}T(%JI(ACOB;Q?3h2B;R=LHZ7LGAuqf`#Nfp zKyb1ZgbTh4d^h1pBweUu{~cc1z#og8;W}qN%pB)E62W>8sd#si~Eff2_k z3DY6E1UBt&mz;f^MmS&upUfus3@`r`x+ETwdAp0$e*{Z&S@maWTY*Kaw10pOSlY_} zqqG?RUbi`}{`!^^;Z@^NGP=yDmy7VlK8xX%y# z5%G22xj>1;!9xCkO9Yx70@4XMF5=l@q`7z6t+{jECaeBhEHqD+RhM9Nggvddm+=MQ zbqq=#Z>+CknBNf|l6XfUc3o>RrG?)Q5Dzlg?2o>Jx^54rzwqj{lKF{xd~sr(T+Lo1+-DQB=nIpZ%rJDox&Cx}3Od_RiXBC4R+aN6lI zKgBG0sNMWzy`vi%(0nMRM~0H2hf*YAcaU!pZr;IKmYZjAT%OEpJCi&^9Fb!L_)K;W z906@>`{SEaJ^jqh-a{Fo_VNSkfr{EYQyrXy-0hLZ(;CgdtrbUvd9~a0eXA3DymLDCJdvKzvH`Yslda+oH^{x2q&fZS5Fdk!1 zmz>)2)8wnhW3{0+(o~@qko2{DIGfr?7(T>AITxLyPnd`^V*2tzIV5(0F5YF<&`nj& zak|wkE%F{IGg2=dVX7kEC8DPZGTiPc|F#V6#oN$);?>FTpntB<16Ji=ZJWL)Mx`0@M#hp%8ePd}Zw0ApR|Ylz`FnTo5B zv}ofkGxVQ6X~Z_8Jqg<8NDJnJTb>@#GyPu!6yn+)FtVU4fNxS7Q^^UXoxl%<(QRG+ zVK~JF7XX0abjT5|?_0o4X%T&zJc~p{^hpoLc*XE-!o9De{vXnK$xgsdr@!SqCoBL6 z9Xbpt)%VNYBw$J6i zM-mj6Tet`Q%25n{5YRZYB-v59(_E;#QMPeLU6gisTpN%)V#a+tuMbRWQNg_lNm zJBRnqRNSt`!(mQrtvkJ^F7$L@RolpECt7;rgjEr$)_B+fC4v@?n|M7T#a{gU*3ed zXmNIPmebtjFdfOp{hN!;Hq>mx@oB7ygd9nik=6^&q4D;_6d3?VTo?ea>H)9=@9KsQ zdH`^h|3m%Ng*x$OCSIizKhDILSc&yKs25hd)Ts-3`1lh^m$m@uXdrUD4VN=o zt#+`zls%u|mTPch3GOQt!x^6Iw9u=0>oUnD!RP(G-W~zUjhr_$7bT%m?(@ygATW0y zn&QKlNM}ktOrn+?_9p_!7F#RlEuu+ z>FcN`(1=?P9*d#3-BK{Kg(9`Vm?hq|lgwbkUo9qgZIsK|0a`f%!em|M_jUTXIs!px zC#_pqb`=TtRd-F(Yy8L2`zN-P;lDdAl0+5Xpd-r>TwtDZl>fU7K-^Q&P&C|IO^A@9 zu{3W`m%v=wJWBR$1im(m73U&{>WE%Nt7 zk3EefdGotym2lngF6cm@b+Xs|64$LKb8!>}W@Qd@e77W(3ct8$>Y124E(btI-h#RA z)(o$7{-m=bdPG_uIcY~pcRzp--b2Yq`&}?UahdH9R=|4)xnXZHuHl&Uz_3(q zNUV65xGcg$1-3cRuHm|({NIe_ycGlN;5pz4Pv-t!FC(tVzc5wT&m2C0XmqOV@9t1w zwl+VJ!Vxk^#(rIv(`$|YkE7$eOsd?pCvs{--(W;Hlb1MAXW(8*J94PG>-B)1zE^Yz zCqY8@IlPNEr2?IvoAe#h4X7hXAGt6YYiPQVU5=;3KguuV}=QMO5 zmrM&9C<7etpszu5%ktHmt%PyS9tp;ku2)}Kg&1WUTgS_2k?pF=el)qn?LAmBLVCzX z!TP8aU8k`ABA?-xmddnFb51{scJAlhsDMTbPY-M7EUzjT1KZQik++gBIGj~qxfk^B z#}wr9pZ6etjDkZ@+k4t0e{zw3PAaAloF9MjXDlO&z@3WyV@kxW8+0`^_9TgO?bdfJ zYi3k1o%#ef$4B(Q*u#ZdNYcW(`)_xMf!)eAI@IacX4zyVd&J3=v2r1z(1K1>1B1On zPh>ub%Hog&*03%NMTE=jfN(wD#PDYjI%hv?uE<9C=ecyA2s6eY#c4|g zVpRHBHk{bvhX&cDXb!pFOZhK67Isaqm6HCRBqd$Xl4j|Wy0WC_fkCV!UM0hl=0{7q zn;zbK{!N~U@WiWo4*8GpTEMb0R>}t1#l$bUy*hT zz|TZT-|gygzVNj9p)(&2OvF5=|K?(Umo}JE0HzEXofepR3y^16EBqVPQZn+hbyE=Y zu5rToNq^7)E~acy`?WW-yVNU*QsrAv%|N-Xa=+oI@_IBytjdu=P?iyC+%=$ob-T`d z5i{SVGk*s*uI@Z*=Hb!I6Oow~@X%So=M~)HsF4=oZA06lYvO5g$b3z%ygu7y-jum8 zN=p8;DUWy86jcmn!A-9svwf!eQ!WmRU{I8RZF`2Q9WA7a6{uEVwZ_s;EI$JFzpvtB zeIiwS4Fwi}^XLtC?aT&S?4;mHSc*7}5ie!38`P-%zi5&ZhY1>yoV~?Bh4sU5$VMvg zg~ec;9ILA6Azh^>8O)QOu@Sh^ilR6}O(uBhC+x7h*D%Y{`OZ9)?wQRCecNeAKEY(6 z$9psfq_FylTKMKcRPAtOt;4u~8;9UG0H-!5NJA__U0B1bhA z4?^De_r@`wmzeJ_I^S^SdrapGW13O-S^1g{z$wTVxsumr^+wC zBJ)|!X9d)H1RXr;YOC0LXR_mMgp?w*8cTl@+;rr_`mqWv-M?b;y&mo zZ%jblJnb|TG+w5yEiMo&?=p=qh9|x8oP66f$2yu$RCz2M!|xSxQaA}ZPsFl-p_7j<;T=|iJ1W8 zI)JTu&WEba&J`QPBj0N38~thj!7&p!NlU>83w!53mRc`zNjMNkh8qjaHdLz_4jgg! zjE}$>?ftctd$9Lc18eqQbKRZ1zmD}>;qsNQ1#H0$9*4@g`i_2Z>eU|>eYkw~R2`r@ zf%0SO@1*#_FIl}IG?jC_*gOi&N*O4Q4&-Et#;p?O54fZhw@lgGDK5xNoT!5BNZ&DQ ztgeRl2j)U ze+4wAU6Lj1J%RNMU|E1X?QrawgLj^lZt>^l8C_yoER{Qw$`wt;tEE}TP&>+Od@DA; zYi4U>R30XJk-OXv;bSOwUW|%Q@ai(pIP>15w??Dl0KT2(i)1HG1VhPlo2(xy!waY6 zZ)EV2@p<#-Qp;#ILIn@oFIyT4$5rj7(%(l#OaH!Sm~(oa)8C~GBBOAKO<#exIWvm= zNga#wvfZsm<+iV$p$ag zaE$Ka`f{h*&aq$~4GqYMBCkT^%|W4 zBKtjCpS3v7N$@|T;xTq48EIF_rv?W!)gH`?Kz!v* zQYB(3Bi_;xt98T)ShhNrl7M?3sO~Tp=s80}h4*_1?NIN(>&R6_=R4k%aNDAMIQX~|P zz=?Glrg8n-O#h($Y@A0cwN0)ihJS~0u3S!x}9%#ru4e1W1L9o-j z4jqhJdHwjnVr3{v-&pa8?m_QGHDTw&#`=mD_y4odX5O>>z~_bVi~d3QOLOBrs5NfB zy*~2hdyyfbQRc=f9b-2)vVo9hFh|8G)$+to+)vl98dRWcTnfD_@eW>Z)BqkNfbURxupguRYi#H}SsR$icvI)^{y7}XLX;SW?3TtiABNxn zQW%B2j_O~LSsghB0`_S`}4E;Ck_Q^1!C!)wFa^zqGYyfWMw zu6GVSgSb0fj_Q^j1oF{R4y@g({%hFk;(!gy1B@i^*E(WREb}cqY3Fs0D{H*?BtIN+xTolg(o?woky$Wal86u9WXh z*`%loc0-UUm)V$g!M2fjTy8|uOaz_4Rs`CijMj>doPFUSEVRc+W zMj_$TI$=G&08HOJi;KqaDI?`>MwjE3y6`fia8vLONo_JU`sqm++&ZdrQ8_j8$D>gc z7;Dzyf-OP`79fjwTH|J`lXi+}hf92|&Xb?;ET_4{3dD{~Oso(W2E^JK6E-YkOC zwKT!$9jUtR-^$gJric~hKDBHJGJJ?IxGqZc6hrG|RMbimxgCd{UGW;eVV7IrZYx{W z!6!9{QgTXi{?$6YUdtqF`d+HjFbwj6YGf7u#IU@L^s8o6OvZ<0u;VoUCbl|Q(!#^R zXYOHwb@co^Zr<)Pr^pJM5!f>Y>8%!GS2q?7; zB81r(oFEXyLxzN#RoswJ&+6DKBvyJ0=1CAJu(PTb)d7QEh>>r(Dhu_J7FrFlE!d(- zCT&E(e8ZXVTWn)lb_HA5+m(9}khifOEZeBqj(2bjH}1gma(*Vscn{zu_zF{zIG$n> z2(ai_U_`J(AjAe&A{ZNG+MUdm1JK)xV+lu?yQ$Mb+A@;cjZI?o5|NS9895>@Qs)_R z1%d~~f@2x_GNy~fc&mgOL9H$DZQ9#AFgU?9;EWN25!IO#iT?`U@$nxsK0=k-B(X`0 zH6iV{@U13a!b#sNfxcE6>f`abR_R=n5G2GPLnt#5;n(3Q1&o*R`v%g#kHf9x*D?+=a4;s|H$2mQF_3o2#?x4O1 z>6dxl`H|!o@FnZQi~0{5Fpxs6ck{2_UyFO;Y(JP*rS6j@5exx?OsOOZiFhAI|89*LOeYFGG?cRW?4hGz+7Q+dPZ{ zEumK9R~G?e92bz8isw&w?!fafo(eoK;i<*53y&@N|I=SWG~ZmXWC%|0A$&C#-A@YXo80 z2unn^H^gv#hnfSIf|OVmqT9Fxnv)_zvKSMISgc;su+Af_d=2X)ZDQ8}UoF8+r$h!8 z0uTj0yO!XzIg&tN^}4E?HJC4uHBbmJ!Jb-8 zs4aw;T1~ZTT%g0-Sb~d$PKTuG3s}x%jqWI-+mh&x0E)qNkb}Ix=6hUl&l8?=nT%8m051EmK#Ko*fYT1_ zi!!3&1k(}lQk}f0pvd05df=r^nqo@<&PblE8GIW{&lYTY84UK=9568806c4qX~!Uf z5Y`KJuU=DzBb>FN0oBHT>vfY?QgFSRgQT#CY7H7P>tPhJeJx&Z3fGq9*_iZbA8%vAJc!lzONXUB0)tNyHYq9zx$WH2)pwPh_+K%2UU{i)M*=c5{ z<#q5S%3CH=OO}F3%H7FP{g_6kJ#%gN?kFq^9@ini!W@?9?cFcvMW)uu zoDby@^Ir$Xsr6^D((^JN3oWE< zHgFbIQ#WN!LLDIi6;H2~p^gQzFpJ=ncWLSkNofsJ$US~LVmJkFdoP+>%R#>ba1H=i zB2vIA2PH_dXdxrp6SNw@=Y;AgerBu!5{Q(bjmELb!odt|hSnp?Z~7 zLIH8k^>c*n}U+TBptp zk4@3meCrZcIQscu_Al5mID677&u@}+@_EswYT5($T^x;oYp*!q*J0VTdilQ!ZGSve zXzPO~_)VehQT)D%C-7yV?I}D{zb>@3{0j09eoy1q`E8-?E<8`*`2f#-2!9LDCwP9w z(-|->$1@bqb$D*Wa}VE<_7^-IFh3Ro{(XQQ!t)`XR}lXJp7p@Rme8+7KmC_z{r+D+ zNl4JLB~!I(9iKM24Miq~bTIm*cH~Q^&i(pzN$c0OTY7hX;*SE8e(To{f|K=nZeI~; zpFls3)B8R<*N6;YVjlQ3s_wfB@lkEiZSt{0Z7!r{Or&Xbyd{Nbxj_>LnB+(Z_@w%m z4sPUFk6ov!9rbn^7y80IBP58j6oM|5 zv{RXO|CfwdLrx3&?~Vw7Cogo=+#vB9)=Zu8BusT3)zcX9xMVafec>UAC}l*Yjm`&y(m5$RW`qkL4$yMa#}l!}S8%G&u>@B@aCd+nWBHpak5aZ_#LV zpY)=!zN4cWYdPGl;7BO{fLlYGzDjmtXECGQ9@xvk!$8{T+b^}L2m7HHFzR!#6^7&p zzG*%{GNHQ5itFa6Mqe;)A&Zl^8yM%^x-ez}q|3kiUMU|2J1j!YwbE;3RMziGJ3cQ0 zvHkB#Ya1=?Xy4|gMderS!K+kVDjH+~OT^ZEIxFw=C1I=nB!XA57#grhC9zpg-*^6& z&po4qDXbxNL1t>~{E*9>(ldQT&R&<I$lH&Z2=Iw?7Su(bF)91ZOwokn!j`2`aiPs|ZqkKga@YLVJ z9t%crmQbF*TAC7Ps<|r9!R4+8#RSegS!9-AFKw^8XR&F|rPA^c?zPkfh+;_>4?OJ5IBxMbW2R;D;trIabsmMjdGqm2O3CLn!b}1fGkBz-qkB{K3tN z{sA?n66#gv`b>1l4Qd9*i|aeAS+plD1JiX1dIZrxOKbX*@RYaiK{i#6ID@oFS>0D1TF+fMcXz#uw z1aOF!LR!HvoEc6VU6E$8o4YjUv%KC&`vn!9u{@w7c7L#|1tiG}Q0DG9 z095=nmUFSUUxvn0Qk&3 zBTpLNeZAGz(lqJ_b_~$S_DBcx`BlENVQ=MW&t6!0Tza7od*MDffsOA4pFp&9?r1D* zURej1z*%8DDMvs^o{o5nSmF<3+BpB;e-X?v5XAR4rlqu*uu;V*&4z>Ljv$jZpXwFs zNZ4JD%%#pShgBNnEI%bH(kmS`ex!q>bFpNEaqn(*|NC6cA&U%f-?ZE~NgUY07Kpoq z?6qvpLa~r&`(CS!ly~?9KTeo(Sra-W=eYSrv}uisLkP;7zYq&ryr^@2VUrn^ui(QR zzWBKWPl2~S0hA3 z(Q!+0wKEO-8^WtsBLm3TeOc&TFlj8^5RTalrm~pQFvdyqNXWr}*NmLKn)Z(mU);iT zkF}H2w1~Rli^+4M4HaL!praegLWsnOKZ_pWe^hU+is123mDQ&~80LuWvTnTR03IwM zLX}3vLkxI7oYu7rOv7Rie?p2rpxb}3lcz>P$43bl+nZ|eFHJee3{A-391ZH=PchE% z1-M8&&Bk*MZj++XuxnBbg%u?X4s*0Dt6fofPy;uF_#IVWXw`)4hVubAvyr=PXrGQ2ZDbC;?|9(%bS-X3(j52 zDa9;nuf_sK079oNg!2)ZbKPBN_KH@k+L$_EdJ5dJ}{QL>)wo47E z<}Vsf52;cPDcb2b=}$Q%618dkw9@L$5$2axH)m<>#WUi+t1+7q_dh@17$~c*)Gt#Y#Hdt zF=NsJu|fT{4Ye2U6l)gSh5H^_0W00xy3!1MGY}n^#3u8n z9CM(VU)~?-?a-Zqo7KhV33BM-*~l1}iX0)hG5e-z56d?6|JlPA5yDtNK%aewGEwv$ zEc#L@x_J-(b}ZJzB}nF|xsB+e-kpSccd6^wH|t?eIT5D->g`XYqDzo9P^c@~hNW!< z77_ZCf|JEOCcD>D zsIoOK9f`~98kZ$@;F5b*Tv`AZa@;8*F_2#2?`yBF$QtXV9S4_mxj^<^{`UJ^z$TCXh9#`xOl5ga|E?q0I5i_&MHzYF$TZ^qj zlhn?Sq`zMVmH`}jCv|ma6+T9ZnvI3}sb`TW0AoRtpck=7^z$E(=v7J7oCNPYs!6aE zsdpinqXz!9fzxia>O<<0zmQ_m-ar)T@_IB0E4%qk+JB;pOq}Ct)`?B&sfj!^x!jsN zKP{r=+mA)wlS#(%09v8Iyf+&=rw((oW7GF7H>p+*98LEgN~qk6I|25Lz{+onV_hOdv| zY7H3P55f98d4VtyFARKpI?a?tol!lXs}FFZnldIac~7>Wu-Nh%Nl?(I5l4EPC6R9} zJy?QQv;hjZWa4O=C_6xEN|{t2TaR4l$d#vTJ4j!c{hX8%LG^arpu>Z2xg*SMAM ziXccJTT$XpM^zHk5V!*LA?ml(jYtY(Hok+1s)mq={t8TB^{YlTuz0y29o2RDo@J_H za~Ix9n4S}t$b2qywOHNyhe3U^8B=Hh7H#2cfMv_UfXLID=5C1dDUO=8fUSPq4Vx{y zqvjv{_=X9;b95N@fhS@I6ptPEbdjs3{0J)Nf zn*QC(DH|@GSnd7!3RaX_{?(btUTZ*q-=lq7^m{P+@h;e@@`e zAM2nn)~5n>S!a%yZ1wArBXF$=?FNP{QtwbTuM!Caum#YHvq`^hG>9xgq9Z}SXnXyM zORV}rwupkl9MW3mrL4F~fX$GhX2={U^+YN4>bs><&lrjx35cM0ZF3a6#-o@4#3JVY z5&1rro)yY}f}D&LQ4ZV02!fZNkCo{{*Y3Rn#sJstv(Gvlc_|PKgQtx|JQ1(NK$PNcZ z<6QI;au&1u=iI{B!{97VEL1Qfq1MYZs6VA~qZU~(C@&E1CP%*dbrEG;nzj6lvt)&C zm~%(d5Sg)XoUTb|@D*4JH62h8mpG9?T=%q+RWH{3RJN4>FAaf6DBg;c$Rjc89iT@TdGb2^$Kp zLW=-fn=y=~vOOBxellY3)v?)(1+uZ&-m9RA=Q*4|BZZW#^?8G>@-TU3L4U|Yz!{k9 z8m9IFQ^!t7O68kBhSl6+=)aq(AS3$6pBGx)4)xIc?u#+|^B1l&eI>vkoHqW?X*Q?X zPW^_ZyzUaMkR;Q>jSg13Fvzx0SoI(TBvS zEfrvYklWpJw7@)sBWFMNDT3@7b`FJc;4)*yHdLu*60)isY9_S5^i*{hKI&}P+qMP& z#hO@~Ok|)Nu%a*aFV0L5A~qZ9M%aR<$(gnb!_C=S!_RQqKj)-DE>mDD+2OP@wAs+> zKtI}K*vcBqFdyS)A<5*`=}; zAK2E8WQ!5zk^ha+TMI1m*&>*TgPUWhOOZDWX>~u|M*G`e zHp<`S7H9s+JK7ZG?=!rcbbN-fd@0{plLqgXeO&$DFY-@Jb@@kTpg(^ymJT~w?6=$T zGOE$(zb0dbQHsS_Eq~viVcdQw8UMaa{>fo1v#(|9LrfqM40FE5jLJ%ErK^>gJw^GO z<~;$|3`z6ON9j)Qm%q(eJ;PzlNoo}ZF~iuGG!msHp&RCXU6fxpzYkAg#rD4(#=GrX z&G5A!iOnrU&pU$NJA<}@S?<^w-o}gEm*M}#?tb_`#oeoDIu4GvA8EE6nA6+lbDS|Y zw7dXsGklH~p>~L@D;Rm^A~c56>Xb&DMy$4|ypDb&+rg_ors$O~OrYa|hteOnI29()n$1d}@Xxujf+FVbXD~ zv*jd~gI8S6SqDa)MU8WT5Sg`Pv+kLhKTHw-F|Zs=x&eq*Rdg3nIBA*x zuX#cE7TI2QEk+zF(Mp#RTmnmN>bs4K2N7=Vug`W1A<6!FxZc~?@{Sw9z6PJH#$gJW z)!AE*#32f?MI4Qd+O)Jwx%wQ!p?qvJr@PUq2n}Dt(4h?d9HF5;2v1hGe|IDtg2EK9 z+h4-nOl{;fRLX_mSfoY9?Z`+G?HR%n&UT>HNLwou8hJY6y(gXs+xOcRnF!K#*wSP-PQt<ec)RicF27=4eEpl1-%XeAPOp;<52;9>}aX#I6Le_%O(vFeY+>Ve;t z^EFx|R(~Y@Kk9#beEpl1-z{2xiZ1^Q5(FOA<@aUzX}>FfdXw@giT&^Xk1xMrP_z1z z{DuDfn{_+0d^$Y<{XL1q>H*-@w4J{OMzQ+KNIx6>>GjOrbEWp)yae}Pb)hcf4Zsa7 z(PjLBWn5yF(JCQAWM`g{2izUzP`?KKdsQyUviN^tu1qYWvv&&%>{Uh&8woDV&>Reb5skfl)#wjQsmmWbg~^0EAb_aSAU;I4z#lb; z#|UDz1%md2x|Uyvt)JY*Xtpy?%NDUW2p@P{KHL(aGuR@ESVTs70FafbQJtV3K4cVSOo9SrA45p9qA!$4`YrQ#rYD zacNgIx1j~5HzLQ%r#0ME=&gp&t!P?UZ+GGK8=u z0~tXcoIHw*V)Rz!EMjkthK}uhcUSdBFR@C658Kgp^=%I{g6~$lMEmDEnWVKk(g(s0 zdLHhn&~G@XIT~VgO3}bmuqdX!2_qvLjXCoO)K(Pte79n;4y{^v^>e_PBt=6bZq#Qx ziBB5v0aZm3<-Ql9`)CvL9@}Gd z76rX^d~NN;5$U_1$7_DQzOYCOdQ+SaJIs6Tc6A(y<0iYqUpjF@4cK0q6&3M}8g~6y zig-OGR7AX!SR7Hr!x_1ipKB2huU|i@MLfJFUmGXleSLv2U$q6ff^#4n*9{-S9s_gI zeJ`8f+~h?waA(jCdj;6Cg$}LWm^#uHjC+2@dl*lQI>29@fTf<9CFDRY-(1Sgx%ABi zt?36;evq4DaVd**a3BR$0w)veKB5WZVlL{Oe)w?#iq%d`9O~)_(3TfG$(1s$;H%6Q z5~+L*KQ1#U7q+1^_^~9Nfz|Cgzc;uBc1N%+BBaMsv#}3NcVMMXU-4Q;HDxSu?N?W<*zPco8y%@8H_tfCFN}^O%DBf=f|u25_$!U!z?DQDS=3Wl)@%2#ZY&?u zCZgCX*dHL~oR=HPM6N7?F+xJrL~&IJ!q$%BL=b&>#e{RP4uE6+tbwW~&$!M^jr3~m!- zQ@+Bx`Xr#4L5y|xdm9$CUu-~0Jko74t%e&=Ro%qwRJuF zpb)N~KA{N|7!ExEf;;D08v+HHrJOdXfznJHZyDeNWDEy_Yk?~LgMl=0%P?k#@WfPx zds&5Cv^oQ`#pwxlAXTerY?4M6aud}r&&W6Q^+(C`AKHUl2o^-(&QIUBLkKgu)i@VC zZ$cIt4Ro9VeBskibpD^wRZ4^U^@c>W(HV<+PN=&w!5+!-io#o^??V`I1=#v@8kHd) zCMG?6g%^6DnD3~5hlTso{??C8-Jo848V!SzO7vyMM#Tms4UK`}XcZHp29>};S^*zM z#hqY}Y>8}8u0|O^xBw={zeRZGj_^aIp(68(;AjLCWAs(i8wW}~52e;D#JlE_C{w>3F5G60aF9-$IP%g%FqUGYO}a&^$&*yVFQ5F2g~mNk;03)%c#N z*1g3}-yW<7sCa%R@@%}4cr6RxeiO(E`!D`S_z7{&oJ=3MuV5ee5ibHB>Wz>g?6NuTECb;+L%)33AXE{Wc4zFfUVh~YwkCW0% z5X70?pLXg8@Pe*gQ5z~IrcNQ@kLE0W<+)K_(CrOYcC=G<=u2LJLb!((EjEHHe+6Gl zpI?fi)j1mJh`m~f=rnU?K{+ydd;wPQn2k2l-Mr0{kyGpQ(kv}n(}nagRwik-mQLHU z9YZ;-h8D=?aJwA*rr9FAcNAn6sH3}1guRU^9=msABM$P~JXf&qU%;K-=i!0~ShgaY zrys)}L|6^&t@Af6?POg7f#D3_HJbC%r;cSmvqJ@?fTioeP;rO{ z>f!(0BoWY*y)F2b#WTdOxiBh5QO{)PqRN{UwG>5(_ILz$GUnDv+e?kXF-n|1lf@hB zF*R42>3Ailh5FpgkoU9Ha&!qs7?(NhPW8loI%!`+CtHz@r8iXYac>#IV4?wMM2>14 zX$SKFKi11m5OtPp+7J;iQ``Z0Aembz?|V|Q6%A#5RR&s}9=Chp++eFfvYkkJEx$L8 zO^1>T+SNM3P)!0uT0fv_P01)m!NPB>^>b;dj5pp<@ZPy7yBb!VsPd<9@dQ2SQKI94 z`6SpIf>ApB4Rbwdh@3p(l>E)v|y4zoUdjXlI) zWu)dm9Tqt>4Q+rce@Gam|LgXM!7Vo*TVqTJRRLHM;Tkx}iZZ4`Gz5 z7jDCLogQGC{?NBJdzFkpd(}qvs%iy~A!tXO@u0sev@e?z;ZEK4I% zxPRhWEh2kwuUx22_1{`vgXcYq9NQ;u$4t)QSv;Ry^ zR&!gBh}EIeD_QSQx1=tSy{VquxG5QdPPP^LQjm49&9szN*dnP>R0s$`4(Y% zgnaSZPvNL7u{1T-=CY#Ji|K5xrOMCP>^9qi3skm-`}{e8o1x*pgLjo{!KF?p^o$sL z(RvK+0j7l0)$8{W)vrV}K+C!u+BDzq$iz(Ir57VrnKoIf;xeTwF#am0 zUEOv;dklJ=qYhQiRqL~(wS&Bj#Rh6rmW737vl{&{HBzISdPHkf^L(^MVhwLX zQ(G*zKE;ODKO&_O8} z*6qf6SWA4mv=glgv{61}la(J4Fb*mVBOZ^G;0l0RXa3OzSE_+8%Fy})Pz;oFvV#AO zbPR#ZU*gb;cz52+?8q6e6EkqmNaVcsD(G{{bHiaw4PDDO=2DRWOmJ4DAoH>?oLPlh zLn_0Vxhzg50iPC`N6RE!&!bDgZM0xgjKV1c-49&iWuR}dE`VkaW96RAG8R7__ri8$ ztCfi~s#)oBddUYWlJppdZXu?*rT_Md+7_yEwh7%D-Ovp$h?d6cY7x56v?+{*aAtms^yq40TuI)qlqv+`qFah9K(RDbh z>rwRa35Wwxa#X&%@(vj?hWFrKz5)6`@+duH>DmVjV!7^k{0_8q@6R-cg|A=_z=vyY z5O$NnE?iT=Bk9?s%M5&`P{v&UQ*Yt=e9?M7_y4w0ekp3iO7}itUnL`7vw$6*ff{pZ zfAaWgn-+7g&}%s~Xx@k}C4*e3auwR#kZxT0Q~q1`P?h<$GbdKPpyYy3RY$-^lcV}X z7HHwee>0-l*o%`R3US~F&C;zR*0!^GK#|x#QsLO0(e6KQSKtS&=$&#z4VFn#{=^(w z9{Gh4x*s+Rn6aOBcXn79J>nNepKD-iVKlc8d`4D%9_I+qmrUNV0z$pkwkrl0t0D$= zN#|wZ=C><;qgKTiVWpOME@nJpXJlSl>({oAJiXgj;H(p?k)J;frW1q4?tw;@ne&T;CM!TApG4_As6^|>1Kzj8m!LNgPAoM z$W-2KbP8JgIJv?#7kN%Sy{qTcXXbiNE&J2&&F+pzOzfY{x7taTFYi#E-Ti+{pBrdw zXF$&MK)MA$E(w6N6Od6JNDl!yn|zHgM;TmmWH7ej*#cyrn)0Ph#$9q=dxvBiP?;kcKU#Cc|NJa74D!v)8C8--7UC-2x zFwFa{c291l=Rfs9&C8pcJ5HL`LjKd<^=vkjYSK%>U^RIExj$n`ZahfXmiy}dtm+i} znCkXab=6cCT*10Yt=zDM%qRQIhbyygN+R=y5ShUNQf!3yu^;`=-1t{P-}sQV{9Pc{c85_KFCaBEZ&a6x#%{5=Hd!a@ z&m?wQV+XnAg-ZiC2Doe#F5Fq%T(NKt*y@%s3&xriW7)XUl`axf z#zM<0^c6^1jRnHvQbE?Xe$(IFpFK`Pg;NPh)bjgI)N)ZvEm9X6-{1^l(2q?qar}UV z27H7xj(8a3n^+$;j;FbLiXY^1JnS!lR~zxvd|0saT40|qq~gGqqS;;ovzmp#^FI-%4 z6Lf8jhDM`Y;sRw}D)G4GVH<4!U72t8%KWMlugq_`dXO9E>%Btt2Fm3+I!B;Rl&w2yPTNlay63d1p2yA)h%M%S4;dZEALSgF@Q&;0q)O@(MqgTB3AuKf$gl5tiO0y(=$fN|0-`Xhk(VU?(H&bw%wR26ZE{V{c$LFW_MF| zDi1emFZ4uT>6W4cMF!5&{%h!l9{N_X(1t^NuVPeJnO8A8vlBbsVp0{v|5dl zDY5Ui$l%w?Lc@RMCe;2>)V_j zRLiGyU~MI|Bp|OiHZ59V*p==)y>3xMLsfT*m8djy!;1#o^LlCojPi`NB4LqAsnySZ z!B`lb8_B-iC^U1i#$#w+n`$n74R@*@+J>KwoRH)vw|ZzcKV7Sbw&N$idT0(myH^io zP7Uu?J+uQqJ*tQ1^0QC%(2o4GLoDwN{WkUpWx%|Vkt&eBmCqUYJ3O<&5mrWZXG-wv`|_v=s15w0bn?Tdq? zwYzv0e1>;UKsG8WOO&O!>MVoIRdM`*)2K|Wyv!KupeE_UbNYabd!B6@x=Yuui}#u>e@Ecbtvokp{(VH_Dl0|TP$ATHf1a= zqn+z`%nlx-39)OL`XHP$fveFbbY3wbaa_LMJMgEhJ$E?gMmn!hLT>OJNgUTh@9K=Q zj;%6uZpl!HC+DlN(*oc9r%OymY7;9}kZh+3yR0}|b3V;=r`)c2`*<9T3a;QwxaI<- z9z$xlW&)3-pKc{qy8V^4BJf-PANJQml`i)6nS#;CS^HE$cR;k#Dw3PssykJ$nTZjJ z-^Py2XcS*(dyQh-t;!+2BfeWkqgZVpSGvF6CP$j4QIW)T#5dR!I~JFm4&j=Ugz@6W zY^r>OoNj{EVp_?bxcU0_Bn(D_I~^F|no~(^dNh*2S1;}Hi<&h+vrw@Nrx7)|mEkn# z^q~DM`-R633y3_lP!n+WP-YS~4X@3O3|=0Z^|7i>&Maod6t0PeHU8_Op%ENS*%F$y z*nhMss-k9&*f3Oemn9~Qk5i|0amn|$ntkUWck3OdMt{~8b#@tX|1U}B%S_MlQL3E0%hZM&W4MLe^Z8xB68)k|o#1+8$+-5_IY(ZC?P>S>*i{NEG4 z=*!aLlA=P>XU758xo|+@oR_W*^x4WHn^ux%K=dCX$>SjUwn+BM$l&90L$m%uq0s!} z@^Q42JsloL^9jvgj9NB|%@EOh0>{8n*-l`$x`(Q$Dv&kob`r8)ih5wAV<*dPtOHZ!pC5#teqVfx$4+ z4}YlG5sHc>jk7qK99gU-os6>2cDLwQQoNyR5L}Ce#(>B`j(5fnjc_8JG7+~cXOh(P zUO|(+mTH9g#(zp{*CUG=V#Qe!7$!#YZqZ;JDKT<@rJ5Mod~+)?vNP#gDSSqvw7l8A z>(Fr}FXZ=?HvdWo07<(pe9}=9zZ@P`y4(2*H|(wFubvRoujI8C@u$!ik}J%T z=6+xKL$jQmr4S=-f`C`{*f_MqMi$=NjRzkA&c?*s$E3%^6I1@nm|$!9q})i7b6yyQ zH7;HY%{osknXLLF^Su$8HC*51Sof{?Z9Y!m!I-g-2j>?>{MbqTx3N>UGZB)#z#gu> zR^PO@%y#9Mk1||@^4l8|WAP@^cPJl=Hxa%=`6poYhKaQ$V*YXCdNi?FhliXT(g%*< zfb$cSjt;yK_rEuIdPzLda=tB^JoS&<@o`Dwe3ns3&mEXTR@;!+jyrbRjyq0>rlu6* zP#9;T-w9?u`?o#QEPlXjvG^#l_y|ii7Vk!CW~MxZbgkjIjy%2F)WYRwAiY{~ITcJI zPDYD15jDHL-0G91Jq(TPom!7zYsu>EMsVn6?y_Y$1AB+6hVvL5Kb)ck4=%20CNRj1 zBZj8hWtSkTQgfjgmmdxTCTXV>ArmYt$(eZVO7|gifwd+=AW29A^Xhs13_#cD;*YT9B(jG+AZ%BS#V`4L?F%j=@Xw1g#g^ zk4&CW7_KfKKzfeSIV z(d#?V2T+^$1{^C4Ex;>7IUFi|$9?g=`qG*$#Uf!aZPXZ8bFWLTElDg8cqXXPuK&}l z+di0nwUOOz4CqnyB)u9aJKDx%R(j%SjaPX270Jkf(arA!+l(+O5nJPx^V{ zK%QM__8;eo)o$J21A}JMeVq3+Gsdau`&sh_1`M;63v%f!(V2LjrJPp@G?V*2fK`~j z$BOC3NuR-^N?y3$Uq;Ot?exxq%9dy*lU(Vp)DGQSgMJ_j-+Np zVG-$?@_xQiS=YGPow?@cG)XH%^m>CU)h2dzfS|ZBjbM1-nEW^gX1r21xdn;Un=?q< zYmg0z`Ic%(RFaxO;z81d#N`1J9Y7+I+=v5rQ~R);lZpTSh z-3U6_6Eml!9dA};i23~{wa(hHh}29w-XmS@_`79Y1gwbN=HD;F9$)V)B_(g$a_s3{5I2zhaKcV?^L>6$~xiM}dazmSe5#pNtjNEu{)*t1@O83wsreA{3nf0DF_LxD<9@JmVN1BR!Jk*7U z2c5RSWC^qxr$aL{mrphNp%`Kfz)wHal|{t}lrgyjeee-j*ZwaWbjJV?u^XaXfdy=FZ$I%W<6LRE3Hc?Sx$Rd{*jcKV*>+VoZGgS;ivR{RKBU^h1sP^ zb~p>+eNrnU8OC5UwS{ZC0~(8?$tpF}`%+ln;6vdpWa=HcboGDL&gyh1OSJQ{MD&0m zc62Z+_NFlz#zc?SUSN^rH#Ox{>GnO$2%$B3^6QcWap~6wG>D{59Sc{Mas~*!-@VU1 zE~B$L4}wjY6RJ8(3?;wj6w6F4Yon=BLaW52;A76UEA8cPpY?2aA3~SHH}6WJ^6QIP zh*xNwRa_tG5~@0aN0_7yJcVIy6t?A2IXq0kf;^=Y54+;!lpF25f;?F2J`En*O&}Em z9jTb*@SVq!5bca(;fUO_#b1(1kJ#hZW3baB=D08Q2xaA!#91_S@AWKxN?$LjKDCbD z_0hygomty3Au;mxXd=EAN1pZk8ygw?e2;3CnRNz@4;Yl)E1SI0(qn@vuA7|2=_gt% zTSKU7t)A@o@*18>2EF0U#}x~0KF588R6pZs|A9C!KZI`3D$3wg^$;UwEKfRd<_qG2 z^P38mZ^IzAm4cC>&{1Yxf3b#cXagk+gYQ<-L1Ad}kWMegMGv}PvgI=8lW9b~E zb^S_io79+apRm_Vs}eaVWlbzWPp#AJ*Z3{YA&F8G5ciu09!`Aaf}!xAHf`a=7i3;V zV4kKo+yygD(!TpWlJ-6?X>a1$U3!C;wBF(2XMm`NqaN7IJ~+lALt|v(@S>*M(f~Vu zV_R42MZcqW;KNZ}MrOgr@GpSzUoP;`h-7J-T0yMclY^cDZk=0F>wu6{=I_y+mqAXzdfqM08xHy z8=AakhBf(E!8y*u`RQBWybF9a*~5{eoVsQ14sZxRj|LXV=~E+-=GP*L+r2Q2_?tc> z&5M_tY11TaAj1>4%LZDO=vLIY5D3e?XN!8d@o|G#if(P2aTz(+cpD!~&KIA0a%PPe zNj+JlgHkneIB_Q(6il=^eI^8Jy{h$wdDS@jY$U5ad8L`0tC~oP0&SC0tgSj$RO(k= zu{itd;H1>^TppxHc$OtrdB*WPCwN9w+WwK!`|vzBNH661AHnlP_rmSC34P$tBgQXq zW2PJ3&xO`>-9&x{{#7gy>s@P`T4U%J(SJ1fr=#sQxWfC)BjPbyTYC^++#!~&&hGv4 z2Mn&K<8Yd&AWPtcKlqqE!1?*2Er4%{h3hK!mI+K2`A}t}(By2)xIRi-Be$X#^jY?& z)qIl|X5~p6g%NA{zclp#P@UEflif!L>XfAx&Z&Z#1v;fDD(I7)PAr`pvcriZpH81Q zEUj~m2XI??aup>m&)toF;r6>Azm5(of7g*~Gx?ocKz@HBG*xi4l_1WkzSp>|a_O)H6C$W}NF4lo?Bz zM}jirGG)4!P7Laqnl4i%MZ&rLS!rZiP&J1%58TW{nY>Rc?>BumG($?3{7?ccBY5>T zo7LCsW$6dlUyYvnngi{xhDg1guBfj$#Gd=v-$U*1VfMGb{T*U|hudHI)6`om!upys z?D>5Adzt;c-2P6szgO7bEA8)9_IHf^ooavk*k7bmbN$~>9Fg?||DNXGJpL`>-xB_f zrFG}UUO>Bj-M(Q(ech*#AC&l_AyNTtKC`l(ji7%v(@epUaIP@ z$qO&K9T-hl)S#6TfMpApIPV-gfWLdkijGTl(ZZh)8>>gA+6{?PK`s>#nr~oP_B+R= z+6`*zMy$S~NMcd?!$qWC8^QG>oAdp56x~hfNMd%;T>TENaJ1v<dTUK-68H*D%pNX6yh$uce%$g%XK zzcZ{kdHW@dvE<_Lre$qnqq&$emo{!t=GsO=PvG&Du$(2#`A|+q?Bwloh^|=wdzec* zHV-Y9?T}N+*rmA%#&T7x|AlYunoa^ABQ&d1%lWFwd@4D_T0BlxS#g1M zNz8p__#-NWvY{jRGxV|ovmi2sqOxc%P%PxOQu=8b$`X#XsB3yc&V}65v|Jla_nWsU zg7IncX9Oc*>(j%=PVwmYM!q*x)>Mv-|C8$@aS1_KF!MBY-;|zGJCBbEyDlj869#386^h$)XkfM$sS2^^3dg z>-?6bE-N0m$oyYpEO}pP8_E7IT(iXLDY*A@&x%W~kUdSF1)<6p_(WXKvgF&+Gb&kw zm!+^$hw`hmFFQ2UwOxN+Qc?dB?T_b0epOH2__CY69B9wc-SX4bvRQhEKR|>EZ=1)v z6&6>=cH0|k0babD;yLUB$2zmuCePfRsZr7FMTmm%2WUjhRX?x-HuZ<(%*Vrnk8cMb zSE)?RrGLIEcEOc}S49S9$9I`|UG4?rue>1Msr4IwtFPJ*{&nh0G_+?jJba}iz#V?CpUWU5KfRt`Ui|WXa@c>Sls!oUT?kLil5f?xh z4Ob}=nf%`pSB=x^dn^&z#aP(sjs2#f=K2QTrk=MnL;@yvFdL_9?a z`!O}^$?X2UcUncSIwP}5Du%-HAUT4=#><7gavw|?$99tI2rDd&p++lIPPG%3>%+Ib zU(++BL{qbi%K7ytPa~;2Y!wij4Xg76Qx#~%OxNG0{*;e*< zlg#G>B&|T~AJJv7c>6m(%nr1W`AmFio#hPtVXRpD)l$ZPL9t$wftzNillK zn7FBYGV%?JK_hVe*6%;w@-)-%YN1&<-&@n{&0Rgs_A~gEMf#p@TAFhBL-07cAD_~; z1PMe>NBEI@W5l5_qkLQW12di?f}J8}WFL&-_w{->2?`dvem|Od!J=OMfo9|P;VAC% z4ywv@)d(G8O^0%K?Q4`1jRMN05sai}N^E4XjHVLi`JrxBNGV*n!!>!p+!0p*6c<{$ zb#Ndz>4EVL%@lNQx}eM)$$nz_okWH0MHi-v;ytRqe9Fk|!{I4b>-SY6ce7rNXDL9Y|H06xKGNu^;c{`fO~-i-F_?>Q)Bzh`i5S zs1A+qZmUR*in%FM&ReR(2q`Vgjo3wQmFZgSVpUe)_NhxZ|Hnu)KTQUOL1uNjJE^^OD?xCRXaAmzy|x@ngi1VjM70ozAm6 zW%3^vAuHWpvv+90%hKS)8k(jwT}krub8=Kj!P+uh81+ zN7E3sAj6#>6D)@*t#q@bvPi+?*wWo%(DeREQBUJex$hK<_sPo~ROjwzueX9pgto1X z9qOJ^Y{XQ~W1m8cbIC&YJj=6t0UEImEvCo<4JX%*{*vR~j$0x={`$NyLOsDocIO7dn$Ig0Wytm%tI(i?xxt9Z-gs;X^tHOqGO4g<2raOCkxAW zJQH;hmLaf|w(}g|J(_3Jhkj3qm=@!2m4T*WTQ@)~y~G-NkU+feLA=VqcdGy`5dX@6 z*u52q6u!NQ8_dj;>T;VQwQFhOteXg!k4JB!9ykBJevXTKq`owy>t3A{Q zRkXlEy-rZ41GQEz$&Hgp^*c=3T=KVzq4wr9H~-G!t;3WvnJLCSP@|~Uvu}8Qd|(Es z7~Bl>9v*sF&@~6ZlzR$#p`gDY=y{|@Q^&XCDjHh>G`OX3sgylw^uc^`7Bg3?sx=hG zkz1Q=s0I!0)}Y90AePW+<6!v7B@Ev_VRK>DW1&RASd5cR4>OAT09>P}HlN?7b*)pn zD#ap(`#f@B*Ra)FEz;6tNeDoVV_=t-lFDZl)p|*{(tV9LA}y&pQfzg&2w&>jUu?a2 zh(uN?AfZTSNzt94RP9`#1H})3v!Ic7jV9XebL;kpYjT7}s$i=L#Rj*$kM!esm*vB> zYns*g3X6-dEt$zQah)V*gL}9olLmL=T+3t)N)^lxAYI>*NnaYTvrHX)b@v9D#Q zeRuWKa&z*1TvaQ!HM7O~3FBwLZm|N!&&*$_yIg_a>zeC}2MmaR7pncK7neL&tfj$; zoK+X2h$UAHK0P;%o|lU%8698m=AES=j*(=}Q+$pcKtTNbX6{JLdBEqcXg>7H)t=yx zzF#XB-efU5e%mLt#y+r@m#N4Ib4f}9%gM}D&2X#=CT64}m)@4mJVqNng#44jV z;DQ{UT`oivSLQKgc`g_OzxdHN6&4^Kg?Sn7bJKPQQ1)o*HGkr6TQNeIf@TE+_TU78?3epy4)MBC@AdRHJ zF_uv{QPbUZ|J-E5B>|*`PgC@z^LT39D^uNT6AaH`s_tT6UBmlS_a;evSzOJp zoLTaa*exFc$K&<5 zfXNHb?R$ZB)BVVu+DAx*x%=?!`a%G8lNN-Yovxwjjn}D6!!IojJ=}eIzCk!c5T5lA zzGP6lMj&rLJdP5Cf!2g<+@DxjRs&s~a?lupKqOa4Q4B47R?XGAwefZP3@aoex#+|` zHw|nPkgDSMYz5aGmCFkDj5a?uCyt6Fmp6V&DG_P!3ft2_bf0N)g=_@!O^ zZ~-|4Q3Z zKa8fS;fl6DnvjvIi;QcLG^q`(NavRAcUEDgi@k@4H?ekQxF=ghEe9z;?s>)cw55YZ&^ zK>_)83YQNg!aFfkqJtaa{aKQP-GcLsWXI9m+8;d0UV4|NFNPi>*}@FTLU4{3qwE?= zMMwKRx8C=Nf_JQOFFtIpM!ntn9_U5@)o%1aFA~s80-zd&O^=IC>6@1`@V09(`=4eA zx;VPZdWgqq}H~p8N`RaEyCAS$*$xqzf zi@#@JOxG^p;mviTM)EBg*~^!HkCEMovr4;afQaO~dm$;~J4WQh*DIc;@7V64lbXO-IU`Rv$z#Q8 zRyK%OySXLTZQ7=Gdpbpvn{_a;aw6@hxW2qOoQGvLCS3z_e>akOGX)9%o@ANNZl_)E)~M9=cc*&N)BjK5Qi7)hO7 z37c^b5I!G0ldNkFY2|O7eN~tKua+dUlkX<3%6EHFI^0ZP+%vynaWnV@m7n%uWc(Tk z)#)ucaY~%Iqt4Xw-m`@!Q8D=dPnGG%QQtpW&Mzd7|G6Z2JlA4nCr{oY>z*1sz#TzF z71#Zm#oCI-4p;_^W`0rfD(brpHu_FmT9O=D9}$1b zPg)kPX;Pa~1wBX?U+0p@{KD?51b}v5CrCKVTq;4~UBfK6wFJu_^yAK5OpXL=O^b(k zNyWD8_@VeA_-c-(8utWfGTH1gvvd3XTdkP@#ec0r^1pHakjJi1n{}^O_OvrL#=*hu%O+i?NyY>R+d|%g)|W^mjXV2hrc^h+;U= zoeF%A^uAlNH-{=`f@5f2){t=Q;vvIgR}UE-J88(Nv18l`zP<;kqqfr5ce3gmLw$xQ z>+jq2u@(R}gE$y%%TRPqz2+%=<9jZC+tz zvp=ofe!nR=ubR~a7wfmtvU zhEsZZVGsx7>5d*A=Ok%US<<o`G0GrPMnBt!5AH6= zBNmalnH9YEk}i(;osbBAHVmH8?xBSy_6c`>#B|_r1y>28>MgRl8()&}WI&D1Egv*2 zzFYaVZNl+g%F(Uk3~=~%g&X$Zrsk%7`s3}|rLF8KgQD%56?|q(Zv2}_N;g|JxMLsE z+9EaskW3ASQXf;pUlFtZz$%k@v3$Enx5Ct&d4{#Ji&`1=t?Z#zj;Hl%<;A2euvR`p zyU`!>nVIL6>jD(?OV-ppF3U_CkEfZ{RX%th|`J{NiuQ32h~n-$_!LK8F5qo*6z2Q&0*hk2|ANenziYqsy3 zUuXw?0}n{jWV(hUkC$j-VW+Bpvuj_gt_j`z5TN{V%%2y1&$M>#IE8D|eJSW>mqqCw z*erh}H#YWt&G#Q}p=~*T)UH!W-#XlFo0ouI6RwxB14ky8MEfod&FiYqZTh~huZ#Km zE&G6k8$Z4fQQZT$@h6+QC3o>!jilx7_n167!e1YR3;CMn~kR`Vc*q( z%$W42dUkY6>)hmyHPrHXvE5cX+c234>0MpRc=O4?kjGJbw`688bC>@`X7wT4&7F;aTqWHBO zLjdP+T+sPu?OiS7KG56^zz+XWMqJ zs`POZ@RBL}rNV7c>iRGdX#E5s4qVd14D;O2BepK>v!%Id zH`2Rh(zjU?R=WfEq+`1MSs4)E!uBZL7tdRtUp_})xb*xTIIsV!635AWSN$(FRGt;F zNq}6uxQCw%v=NXhct3#qX74SihF-7~d=${@+tC{kLYlo+yEpdy%_>IRT}^d^w@kau zD5oiFoCs<2R$wE?K-l!9_(A-uL7(4x(fw{4;{-w;Cs!y3=kqqWy?q-_(3HEz?P4v^ zj2lT#%y%WvsSPq*#zut~Kt^UURvuAo2@K2|AuwO?Ue}sy?Q_P!^MzAHn@oPBW}-t_ zPiuT1vVl8|4slyfvJu*bHrHa0lx+D(f;Hn~VSWI+z1TVujJxe$0nb;&kK6TRduvrx^On!_U z4G-uM+j$2Yb3bomuK1;R`jKvk$Ng+g3Qu|5_ZDI$Cwts0Gq~SIYnbZ8s!>bhNOGXW zT`{d4!6ff)*ju`lnTEXq??u_G8nyd^;Tq8&&XMUZuW{@5im4en%X34xN_ z<0l$9Ujt~ZOiNU7vnqH7R3)mbNb}@u2FbF4M>gK+bB$g@u3ri>Dqa^eX}ws_*QS9w zI9sB=e8+7WBsD4?eAZ5G6X(JRAFnm9Fr9fk+?r-iCY$vC@s=xXPk9O>#3bfTHVLrq5~z4 zv0+h`IHu`McmHT3#*4tPi>ax9rkeRTkPu>ri|sfz zhUYeY;p;~pLa)~H@S5%3;rGJU{+TvYZTc<1FK5+}+s#xsotZ=ZYm5QLJVz?r0fu+z z=5{a;=fRWjDuiPJ*yD&LXC+M)qjTMJAK+M^0rD*rvrW1cw9S1(e@D6H4PoGCHWWfP z<(f@MKbzMEkj@C&N+H{&S<<|?d{9>WJB}*nhH8K4)xT~)+gR75TRzw6^Y=I(_M+?e zqp4h0?8RdCipY5A-Qap0-{PruGbOQDp&!`}g1PtPbfB25z6j#k`$}4mlqSB8e)lnm z-Cuw}Gr9kYsLIP+?|)-h8oVJi`*$V?g|{6mkF=9ruYYm<+9)^n1mmG=#6u%hUn(yp z9vU~w^N{V+7#sf!Zd3VgI_)CfJ?J)x%{4BE8epz$(_30*^yv~z%;-)~{}@>t4v=Xl zH*@9qSn|2uezndug>5~D!Q4d9l+K2Q$36L!`oomAW88xy4e=}?E{|srf145J{!W9o zSK2nx6k7$1O*=JmlJ$Nwj7wR2(tB#*4s*A_XjPyyzBjMuO&T2j;&74ZvPzV9?uDLd zDH5tYU6M(*xi#(qFja5V4yK?xMn(XWc%e#j70UQwML6w>eZ_ZbawIDX;%UqD#_XzH zSW08xT_12{Z>zu*@Qtd!@7C}F%}DD1=wS7~q-v3vl05awBhI9weNA1diDv4?3-!g7Pl_cQ)x=gJ&&RKyx7Ev!RKcRxAgI=# z!}hWDr^&-~{FfjXJF~3W$|B?2VznI_NkzC9Ps4%AzSTIHI6~vqbcdqoc*X!D^Wohd#p)n-`@LuO+ zH)YGO>g-)RFkQvJ37b&U@_D8E)2Fs+RG{bmzf$!el7^E}nY>Ees&~@&3v}NS$oJ!N zvGS;Uejc#Jy0Q4=F*X07YWLITAWP1x{SNcDD|&xwDSaF808HhSujq-DtKCklyTgM@ za+|TGRBX+Of8%zAAWbOKxHK&)nhP{CXF~+`+gs-kRn6DPQyC{2QAbWwrYa>Tkr|jM*-84#zqlKn(Kc7%b81sv98fgUd$5k+c>M=i+k7}wYiHVFD-0hRe0%W zeLKp%8nLcE14)*)Z5%17_C}fSYMt=#9N&vRgP4ui!sF6ZG0)mobFq7&hv*-w)XG5n z3?vsk^ziQBhLmx=Ur95pzw*tsw`Q1B&DRVx#xm45?hRmh0;6x5&HZpc>qT5?GZ4m~ zQgnDA!lWv*+8Zr~>m&JD=uUc0_n*f0HzTu9Lw#T4?myH_RJQ)#plidEAFBmAb*PFz zvZOU`C~PeJHgzH`HO+(4*OCdG%BHK z+=F-*$x++KgZNBRkrgb2vChOR&0#3%E{8_(WW<-#nLaBs;20O)^{}eV2NQH@G#Q5nx;nN_6_^`~>U4K!(2l zlhGU*>i%T?6^OuzrAFyjUu|KAcX)P_=>bu?g&AIg_98-y=vKSLsLvlMj__C4n3Nj^ zD%)j+Eg}gf14ezOcxJtd|4(Zp*?t~V?&(H$vB>vJHVA~F>1)E)2YeiMPn8(z9}D$E zMZi?v*FyaTnzTLY*{x7-*}L#&wa)zHXAuP8)us+WD82-1u9?nJD9*eQjV@Ji2T*Az zgXh?A&5_jPhK4ub|K#gGNA(}&>%Um_9}(2wnF-ks#R`boxRxy8nn5a_O>uwjk-1Ux zDIDWYSfYJG^K(7ay)n$%)>g2O^{{sm>~++swza_S4eX{FGB_8@9&6NkloCK(WE;EI z(TBPj9^%t0fXFt!sI`b^H!FbH($VjLf73w$5#AzS^|BsWZd8@gqM9;r9kl4rWv^%>qXBv zL1^-H}5zX=rOC=XTx+QkGjgmG3qb{Km*t@M7cp z+0spAll}Z^&;$9q_MbWH-lqyY?Q)aBm!Ay*6kmM3WaD%(WBGZr!mEP2ARaGkWL9Bnm_ytU;%Db5~xa_aKQzP6jUu%z{fdGtd&hI{HEM`d|qkx8?%8yl*bj5dga9ti? zM+pgilV~%fO9A^$-iUM-sxsAWxDFaWL>`Sjg_i&A^8C$-e zb%0-&rKhl9{%Y}WK0ZLAVh|Gs$LO%OZHt|VsK57dZOz~-Q!odSDK2_CB(LSr&HoXl z{XWc#IsVQOb+_LlC4b$&*oPzm1wenf+CH2I!2GNjA+GX%_(vMi4gtUp25>r;CvlY-h%DdNRMmqs!1fA&{R?1r zx9o$9<#;Blw#@ozZLuZAa`@e%mc%q={cr33-QbK1TJLw28m@H^sq+(lzw6AMMAYfM z6xk9~dxC1qZMT_z^hzoi?YJawU0?Yh>wD+#>HW3)9{2S%_`Hd*EbE*OHO29FT6TM|95|Ac3%xJLAFAIY>k*QmA6V#^810U1X*uBxT6QR zEI`-=W_sGe4b#)>%P&18WGShA=YP?w&gW{)F9naK`|pFl`~K_O#rp40!O05GHQhPg zxdR{nk6!fnjA@0>8ML^Chj*a2nF`W7^@VBtBqpNC9~pb`N7G}k9=R(5COdl}@fhSO zOLh-0=#_ng#IU~g!bL;^L^_YckK);J;N7-s5lbC-r0J(hW|dQLA7nCE@#j_+h$d6tsR{(E7auGjgG=A9T>!ZX|RoJ~!^@ z57WLT-6foCG&%gE+X+lXu*K-Y(Zt`1$|0Ph1h8_zrNNdDRn607=#M_(W$u9&;WmjR zS>xWk$4L0rBkCcM@CP(JsDX;$zU(NaZdcJ}P!Op+616Jov2|nBex`V zDKUQ8tUzt*|E;_BFCM3jC_5A8;6tJ6S0mH~?J3G=(~12+s+Tsx=F@;aKQ!IGWjFVB1sd_5 z0r>61Y@d5TXIL}2b^(2;kHpDJ9tz!0xm%d)xp%kr&hI%f)`l@%Lm~PzXE1aLjamVi z$CRQTGFZ?mRj{uro);8`VXvdOx`r%v8+4aa0<=76#H6KTcq*|V0&J?n)Hn8C(eqcW7B8X zC3XB#`n2$=HN_Crz4)mOg)*7wx49YDiasmw-*)YQpL8QJzz%Ye{wAI;VjR{^pcGws zDbH^7;a)uNlQD8UaD<8HilxQjv(F{S9OkTXuqT6OGTsq*Do@owvK2u;_rq=4x>_%T zo=R)p3chqoeBhhPt;`lm}5q<8=%j7Ww@*q3hrLBl$zUD*4Oq6x*4r-EhW? zW~7R#`9$Q~ra?e(1{S((XYwL@T)~pX_#Dn*{oO9t7WAwayZZH_4*=MBE8xQA1B&Cr z3C0ayH@KHqX(1#NYN%4@S){p6wBwzxyZ*U)M-rgWP2=Pu*|S!YJsqU0=}4IsR=Ab> zOZW9KygPMXkC$lZRc*9`CPPgSN;kpeW`JzJ?UdU!3}V+dFB`luG`qVN=c$61NJ5G1gPzMtXd#mHF`C;<4?vi zw5gw=v8&47?#u3>vcCgUWm^nUQI$=R#Vzq={_`?rOmj`;eZ{kTO?Y_JC!MsNV^=<9 zn@({FU+@VPjQPs`rGmExm1#xi+xiKp6QV{Qou7}9M<@2oRKXWKw({uw8m=dGSj^LY zk6U52R6!9y%Gej}!YjttD;U2v$s_O9EowDCd3|8`$6h~474+nzsdaC)xBWK%eZS22 zE+VnzOu#*Von7Nc0r0#AfQRM(^0n*MEKzQQt+$(U2+OqtH7Zg$ zogoEWaKCtP29z?|H~tmV$AU*i_DO|5HY?7bhG}niG$kqYF1c&Xc|DbPo=TRgq}>iV zo|3>@O4aVc-&Lt?qjYg?Rq5eW+LVB2MN zz_$Ah#^!5K9rEqYIw)MFW3;uhq#}m_^Vv5vT4QG!Nqy@pwy=_4$YXL##g=yQ-kEc; zqaP5&mF}hhj9g(Bbm5O(15>f36GvZy!$<{lA3~D9S+ONMUYK#Nzne6bKhDa>PhYSX zWt&c~*wRr2JMseB7xt#$I*v)l_s|_PmNq^p*wq&-Y$~kSlBXMc^8ELo_Va*$pdk$O zw*8wI?9LZ=9T$k&E%j>L{t$^duYKyYHj(W2y_Q!pAbY$0$Hg2i=g?GU|B(gk3is$z z(*&#RsNU3r=!xObuklxA5AZ!#ObBh?YVx$zTstzk69=&3d(f8?7t)t+{i?oP;bk9X z%M$IYzO5083%c_sRI;Kh*#?Xf5w`Be&{a!H@bvhv8>3}OF3ZBPH|e6mp(*3E z$_MRz5}IlQZajNf>h!X}erW4`*M1J87^hSGURZwjU&;OM^80nAp5NpSD< zwQ+VCl&`&BIZ}Ds)ZULoB$*+hw3k_Z4>oc1d5t{wSGn13&B1(zfXo3%?Xf&HcH>OC zo2l0m^qQmBEA^_2DjPT1Mapa3oE5Ca&h#}Gsph-*O3me}c|0{sG`Co+o`H>M?4Zki zV|S)?jaM=;xgH+GrxdHb&4V~vAPNHza(?j0U*e0%{*HaJjK|L!*XX<&C$5!>Mp)(pU12D6(O}}zgMi*56N_T6u7KWiJ(~K&nV?OKXR#yX92kNjx%>$#qdsQ{oCU}8GTnUn9cYpq%l_SQE zf^da<(BJ4-CC$!V*$3jh#Z%)lQ?^ZCKcX|oXI8LzrH1?xR8l^uI8?PdL)1E1-uo#T9OP!i%J%fI>es zzv5;?Ff9Pi7fyIY5<8l2?v>s)9=gwmPd9=y^!!@%T&+e(8_LLoJ?L|~a_MvG$~A5p zQ!x67O7CoK`RW7PL1Ea-I$n z`sft3z7)FEjGLx%*PWWolGAuGqRw^j6^|u4>zI9h{#{eHY^{)Ub9 zooqSE<^)Z0r%`&ZTcB)9$kv!A;7{mPn;uOo+ygvQ_SQJ$_Mo&sg?k*k{Nf`St1(YqAnNiDtMZq89O*S za9n<<@@ih?R}m46l#lr+=ZRuB77!967365T*amUKOFU<}?_O$I(Cti0ILT!`4Xy)q z4_vge7dRr!1U-^))+6#Sz6m;2f9jE+y#qWYDlgcDh#@H;6>X zd$`{`58NDTWl;WuXLqvTYDnRe*xTn>p*+8kM4n3JIYfExAt583uK$w+i>(Vgd+uIRunj%(N?SVYL(sWsf>w5GT)098Jv(Mm-}<^eMbXb(YwF_x z1{cj?0&tUFH%2GcOt|A=X+ONtW*oR87bC8$=fufIJTn%M(42=YOS;nJukO_KUi*F) zf{h%wU+i+%u(!3gkj%Abd%7OTvwIIJ)ZW*cu785kfxzD9nY6$z!ZFJxT#7=k3h1Q5Tw5fQePV+X3)IhLO%-+6RW@C zOLkXDRSAdfqmrw^&34oqe?Sy_9QNh|%7C{AwL&ITwM8Z65`a_u&ynPm{OG`a#ODENb#5qRgsto+u5=9R7*#!cA82gmzy3+}$;; ztA#2@XnCCM%p`RlWi%4Q3pAB9*Cp9fFU!q-Ju?1H*L_d<)6~VTASd%c1r`Q5eeHcuCtX1gI7s)5pQeUT|K#H4>D3av^&;ff;3)uF2MO^g(@c@~$VvnFUfI%!9TyHECl#*a`BZ@L)7fOanCDS%-rhmgVB$LtHDObCZrvPp|0(nN?c-LCK(1z9StJAgmjk6M7?XDZn z^QLPqaaXFcI&w7K>O16(e`76K@DwS&E1H*NzpKtj>|qq}hKyKPogq&{TpY%Ciew*$ zZcF8E)Q9Si>^A+jCx7FaaI}o)RSK%r7*W&x_VIbDuI6c~bDMWp4cW}N7d)j_7fj&C zw5%5D+UQ0PlLCfO>2PJ#G~F_kH6GQ%drENv>_J7DzUWO=?rsp&nEnej5>_OKNY(@L zIjXUZ_aLAaOZGw?)ew8u|BI1a`(v;0g5_ku0jpTH{j%KVI?tk48P1)>r9%S#ltS)# zv|>q4nop1V!1z?0z9VZkPGs5(*O(6euvEEEdYXLbN7c3O8=84Tcy?dyNmt3=AS2z6 zfFlBVci59@dDoAp?c`l3NN7c*0~yA4U0DZP^mcalEs&pLG_h~vC#;Hfo^k zhu%Kmnf2R=yU6marJPP|46`>ZBzSk-pv-jS^$fU$FqZrBYa|v4gIU)^5`DCuNpRIr z1I@CN64R>f(6ta^fg90Mw^&;5Skyo}R~|mA-gVu>dUKF^bDU~Or!M>eb|5a-G?6doX&2FIWT#&&-(;y&e!K9I>%aH6P)Aa;i^{DKd%VQULR;~M=ky6H z*F#D8qZUfiF!+6bxA;t9uG8?RQ3JI6||Y;Q+7vEe8ph(P$aA%&++dGoFjp zq3%8pC@MfFdm@b$php0tQKxC#1NZ^5f$_EKan_h8eJ4vnllRbuNE+EpX3(iM9X-F? z_)3~zhNSsr7m71T{Pzj|d$?w2!=T_`x{2QUX%;I~G1rkfX)h@sfA+{AKTbjE<6a|^ zuQMNhag)}xuW@9(EcvE;@U+|@IA}#W3~jL9Z1JyZTIx|t{^0uUtpn6D0>^003XHu6 zPqCqRfM3`ZGHgh%MQwpTh05H(PIY`Qthw#T$%#!ujS#2jED=H^ftSv$chxjV06W8;sI?3cJ7BQw=Z4I+Y1Hhg#}&um&xm?KKAaqq&&U@D_m-{s7w%rL9H zJq~}my;yPMQkRcobK5JwPdnDL75!?Cqz#lk2`70x~iQi=Kaw3>(r^y3mkd?YxW7R&4`4{|qkvyt^2j9NQhjbI<1XLnn{j??e@ z?!ojMVfsDG?_RT}SF0y-+boh}vdIm*H$ofP{oF^?gbcV@>+xvnpm`r08dy}9!avdg zl9O@A-xOz0WHN__Bit`S7IOtzrUkz!m63r%*&zCFKw?}pWcBYx|FE9_RXEy z$C6N=TF$|;yvX1UvD}%=Ok5=~-aWC4wePJbXx|jyzV~=`&(dxUc%2*c13ruPm3dQn z&Y+&i*Wogix972y3A;0LqW=etT1rH+KL{tMeU#;E2tp?KR-f;OS##r8tH)H22 zH_ym0eTcVVuDFVR!-gp%nr%y)qmKy^+m<$yxb00tLdKLQxBGNwYe*+Gq}(@TCpDyz z25zq}97WfG`TBp$`(l;5oBAZdUgsSNc1!Ca$ozHU;6>(vI_Jbi=;IbNVG{U~>r2u1*fZ_9gZ zMmh?`hmw#e?~A_Btx%zxJGK);N6S2f(+||4EqUCvRjdGEeM*hGilWM zU8Qfrzk;m4Afn3%!zRODtb1t^_ib~R`Hpl^>jV29En+|5TUU04Z{Q3P=agaV;ZVjq zu0Jda4};O6U=&W3s;|D zl(z5t78~_u#c%`cfk6wt`H!c@K+9@g@w=9$M&aph4LFEoHDGsrR*0Wa<-@QIwI;7m z6ZX$Rtq%pDzOyyt@$%+7XR?|){mPc}Au{TrYm_o105UuS3Ao7~fsRb!V>C~cnsU%KaAcL!V<%plhgJAu8CCCzwcSs-tnA{ZAiF*3E=tRs zwLfQM&eJL>w{oTnozf0f&QsqZh2oqWzLrC7oOQcaZ1w=@G`|Qg*IC~66!hNbOa7rA zY;cEt>U;1C>wFgatR&}>%dMkh=%0NEdI*63T$}bteaIKo;&Rh^U-k%9f;ox~?C1N^ z`q0e-1S?Pas#=9oIe!HTy|5U7x9QO=8>zg@_!!AY!wj6of9O@fjn7`zZUBu%!_DMzXLhz(co9vk-Pd5|t>D>>@8V}+o$~PN z#4~w;x|CVW!K3N>AkJT4__C*k*Bu9r+j+2e3hZGX>=gprB>+2#G!OQSR$#4duE!Hn zKdd=J+`>+VUsQl}4ig^gBS7_3u)UVh6+qT9Z&EpvGr4tmpzr7}qpKLCR;ADDqtG_E z_(NtfEOAj^-A8|?xZ1aJ%9p+GYKaKH7o=@N-J^+2f7yVKwykSb_~5>mYGW8F?K zpXo092W|IpHjcH!AWYXs8rf}+zB~SwErAmLxIf?gpr{_Iih_j2B6@iM4Qnjtwg0Pr zJ%K%+7z;Wd7;27>3(og#7RiIKy_{a-5DN7k-coOCFQh-#nh0urm%4nd#j3RvwbI7^ zK^x~Uvo?-#H~Gq_qb^32Bwty-|I^BPT4nJ|eMMThG(N;1DtiAhPs|gnqEJ;i$!w<1St?kJAfj#JJNqzs=WE7cRR0{d*>2-i zX=u*{&^jA5lmBUOE6D4ocpWR>4qQP1?oki!u?)Cr0k}o$gq+PxX>ixH0*6XEtQB_4 zn39Cu7!U5W47kz&+@&5I8fvDo2awl@6=)&bTQ0o)=CS9jQ^GZc5SSjFE^w*5{#R3- z>^E2cv^g+~`utb#kpE+!KRca&_zwAp?~wms@qQ}rt#|;x`wscL?~s4G&;Lj||Cc{* zkI$FSZjb-RKL1te{PT9mKW~Tp$7s;QJL&v4{(tPf3w)I2nfD)<0D%c6NRXhYQKF57 zYILXugEb>FVImX3iq)#E)Kh6|TMxl%wJICH#K*DL+S6`Zd)n<`yKB4KR{5i1~ydB4BwexAuB0kpgC`}u!9@Bj59nVILg57&L&*ZH~+x$?;C9liX? z(|Y@p`M+)d$t9QC5?#Zlf1&G(lesvZj@VX%#{%6KG3LKX-`5`qkQwd%!E0r;-t}L!jq(3FzhJYOTEnOljU_lR%z@IZ-GJti zBeGlFeR;wc$j|9F={t~{|9ddHCimOy+d44dpZr^={s;(43t-j;D`XJvvnKfe+27>D zbs*agbz{12;=BLHh?5Uyrwmm?g9ilauTBP*wBHOFr0haaG$Ql)YX9f|X?kbQEfV>J zS!yJ1Pe?WU{n%b2b{h+_Z=v;FrF@C&ixxzc^99_#@MX;hM$~fuy$x`0GyY-|2f++o z61-r)2qpD?tKNH`fF0Q%_hCyo7?1GtrST?U9?8|YpQUIj_bckiYtnXP>Q?C4JnHIM zR?oB#Kw@CI|EOzYTCR<~kg8tX5VWC%Z}=n?{)oSsW@uF8ZKh}5QMF%vi&|}}!O@;c zcy0~5I)#X;wD-`DsMv^79i7NbEzHGe(>SpigDBp$cGrZsBY@0^GXi-2Jdsn`LErJ% z`c1uoZXv!I%@#(M?Dfo28t}kiICl^FJ#9!5{jV5d~%?>cRvh zM?1dF`NAc0biHYuDRUM|oPJB@zQ{8s;`}dxA6Y%l!J+bwYInU6y@C>DjYEYZY{j*|{qvvRmUK1ym4c+oZn}meh74-l_?!UfH z9UNnisBu%B&G;}hk{Wp9ESvG4^r&~E>OHP{c82wG-y^7ni+?HIZ$`YU;(RJXWfcWY z=hN>sJ?bY^|0~w-Cn|zf>r}b^{30wg+dB4e(8?|99-Nan(7CQ6*pW2l_O883GwSLi z){@&IeDgoBSSmB(<3ati3<_-u9!J&ZZVam~3##r}tHEDZn#eQ~?O+8B{t><}EtCc= z>^@T%WLkEe$J76yp0U-)(HEYCDdmPrV-isyPn`-5@G){dw%zmw%_4t|6894<+i`& z&oc6t5UcXP%)tb#4T5=20wH&NK{8xB3(xoQz31NwcS`K)Fr{?=bPJ3wo! zI5ho5I*rk()1D{U;8*$$)^*8)x;lyOi69Q5cTKZIN+RJqpL28Mu`Gm0YLz#H0oFV~h*8^6!R&LZ+?3s6RoEW+PgjN8 zBfm#ons_*9qGYPJLzYq3c1Wu7qe10~L1pOZDyj?AA2VFR7wnHr0w5H`;^UDtGIh14 zg!@EJH$C^@yP9UUQRrQ}C(>rWWALt1@4R)$|Lmno#B4?da7wN{U9E!WQc(3|Qt1$& zk_UgnOLq{0|B?OLiDtVd7hI`GVaWrZ$4~%)CH>f-V3KAywTGgj)Yz*ZF(Ua=xQX)g zV5ekeChuJkXvAqi$kq}COjlZH?z=1Zb?sZtT|np1(w7a6mHtm%OO;FyzD`n|6OC(x zWSp8A8lQg#aQfapCH7?i&k*0v6yHki9BOgC^Us&&+b=!x-@kAcN|67y`xl<3u>TcX zQ_!9Me)P*cTx$<|rN8Zbf0qM2D`+h<^m5veyFX)T&fTBjx4*rIaNB_I^X|#GW+OB7 zH|lHofjzz4{Za4Qy-uV^!}I;8nYS+?C1Wz?PHgc{y26ppJ+y|)f8a~n4=FQ}{5K2$ zZoABj@WcH8zkA$VU{0j5pmCP-ymy_!4GfT7Zao&q8AaT641>C6P0qiLVTJ#j^IgJx zHXX_(?eKs2Nzuq%_XqB%%?OednHug}v@!UL_uJqf1)lIkR{3B4N{}LFusbV0`W-ED zNoqUDNhfNXMpA)_llhvLQ)-MO=h5YDW0_o9xe)?P2 zOL|Cj{_(TUNQgddg6k~X`?=gtbDs)wYz!q%LxD+S4IZlnrZCC}Ir72L!l|z3q_-qY zho`*-DQ^vv{;zHCcKH_gvK+W8zxSUFQgb$_lq-C<3J(^wSYhb7?oy}m=Klg2;{VCj zV+G42TXQjFgV!9^a<|^YeFMP!uHyN1G@q#D2&t)U^KD}Q z%Upbl@J#n9|A?<~)EVb+eV4B#Qs1@C4R!}tU zIwlE9uX0<?+WDIH5{$>uIUT6927b`?{LjBMr@qBiu>UwK!G#)?JSz5Iy62cG&;6V@n<%@a#`H z2D!ce4XugdX(fLcu#%rGiQ(dg|KtCmi5Qh>G>Q ztp<4F^G^r1hDeqxH;St=7kA!!;M3f5l;tM)(!79z7cAysLAd&1W5w&S|m7X#7|`bwSW>fKMh#fidcaGFG$5S_YqUDtH&7rp(=1lhN0 zPFzkz$lxa;OucAGGnS}rs+{<>p&>o(NFt~?h$GGUiXsS|vnX=Wq9sv~k|QE2Mb1T^ zikzSMbBLa^MEU6~u1~f5NrY(5_R|+R(%gS>S7k;1%Du%uagv(_wTMHmX=ig)LdT}O zA-Caye`iqg7gDLrOywy`9&ENJq;<&QbEDbuoa&|90=9o9bgO@Tt;E4f|J{y#T}*vp z3;|I76DMDMo^^G^Yu~+VnCNpvsgxUKSMywXe=fNAm4sd$hF;k61G$zz9<=-uN+)Ug zbXvILpw6#c=|89z&|;}P{~Mn?e;Hm6Y*>8WETe@#HVkm?UfN@&2gk)MZA#1An{2^F z!T?MC-GA(_)My<~nMtxZ1GZMlgSn(AJg+kTM7be`gqfzk&VOFUE6ViBb_+Q3*{gpS zFRFLFD@=QI^H&QCW)*uMFQs19j^{Xf!>U%fnqIuHxwBt)D`vl6<~BMPgk#W|z$J4s z0!1k=t^8&bezk*t8t^wIw1sKF3Ba#a7?%~{R>GZ7Yu*t269qk`>-W|b_nTG6zL@5> z`#050xV&)IsqBRv&T#_$nnt=4EbBDPtJ`6KlyQ)a#Iv}(AA~>6&Ji~zx{0DT~^Qf8g*vG z?;bUC%>VUkl(u6rIDo>Ya-)CwIl2nHXLvN67Qs_0TJL#D%s)Ts7z8^OOGGPyUiII& znCK7p=9N4+TYbV))o%Sj*K(bIKiye=N)t>dnspjGO-j3_;exJo01h_*SNTx^=oTGJ zyO8Cii{?Ii&y$ufL9UJEO(}bP{p%;c+huCjQqQMNs?ZDn>bQo^mt!XB%T;bwP@RZB zT<7QLYx@raq#_F;s*#{D7;u=MTIfm$=a~^BB~d`J|6ZNLEww7H-0>SQ?b`dcE1mEz zD1}{6T-nZ{35BfNvi`8(OXmQ-Bw8;hjqh#i*M!@%M!2nDv$Ox%^VO^@>84Y1cu~56 zzTf$QO`JwkVZiSEs}L0YYEN}tP^8Bp2lSzzcYYAg6o`X{_V}%aoQt&1x3xt3r9jyA z^@5-Ty`>!%986Bn@xQX&cU*u{`E@-gWXD-lL4G0^&I;ChJ`{FE*s`It>k=k67{u9b z5dP_cUAPOu?NNVP-}(V@?ESu@-q&{Zt{=`=h!?;b4oVOEhb8NEJv zl#uEzck|czUq~z9j|K3r{(gWe;2-Rte52UMt(Y1yD*)h&y#Wa3-_?xI|C*b$dWt_$ zs_!DNDo8ryCs+OkSKh$!KWSjJHI?qIE9%!Y#M}{^(tJ7Bv;L|1^+yHu3!76#{j6eG zm`|gJz+T<`Pr>-!X4`_+>ia9t66YJ?Rf+KYp~wu`LnA8XOP@Bi!pMHm#~j)Fe=R&=d}QpU&UpXb_WrVXjkJ9oUVKbUSk6`!`$udbA- zKdUG{KS3M2h~3z}#5+JGry^;I?}KQZAQ3t1lHl3>*MeM^oODa^d7jSH7peSvl&3}J zhDg9SKBt0TDzd)jjFD!)sI*H_JaNg66pSm^x`D+^d#l5FEt$KWm+|?Rx>5bx_rQ#F zvj0s{vYYzP`Snxy(aK&r@N^{zoHs;x9J-1R|A5Inwl@x)=F77ma2g*7ij(zA{x;>$ z=DUBU6i@3UOMD)aXdP=oy>56I$EOYSr6&VAMpCH7-e#wT|2IM4wAe58`;pp!&zoOFlqrXt}sVr_uj=J{E!wf2wLCVYy(jgW4RCUS z!Ad*?SSkA?W#PwAUS0RyoUDPG$rCq}`nzd`3E;*U)9yEOG_!x#>6%Hjd&i^-dL}+W zp-@C1(L%`og(@Ho;~&27An?d8NiHW;$imKBF$v>U}+ zpVjPKV<3I1!a%x|eIcM?gZ~481B~a0k1>$&W|V+JOdvcuyVV#+nMu8uQ?yw7Ic+#9uqJBnkwZ;#00b1+@EN@waVW=PIH!!e>th5 zu7+YwQGQnM?l)k=W6Xk))doB6%1?i!2-ipg${n4o!?`*cr;fO7kaJQeB$JD>HL@VN z_8c+BeyeblK_A#rfvR2pEwRWdzx^*zeAkqU9Xn_ZD)Cm<3~W03q4W4o<1w@!@D-;D{G$~0E{?JtRATt5#|DJ{>Q&s1g_+6Pg}=Zxof;}Q)+@%Tybem z7k1t3J1hRiFmE{}(Rydqt`kK-U6)nh$a8W|M3W~|W#c3G>}w2SthAXY?8AiNn5($g z5mMPqQQ3*#gUV(vyq96PD0~l6GZr#B89|4a7|EGdn*T`1t7hvqVB;O|Cmk=&D4Ekq zV@3tcP=)`gy%FxHB{(|1UJ+p1w+Jsxp$e~|a0??|xnmKvjSey+K5w^n6L;fM8_`6S zKmWsy=lw@1rF`pmXpDQny-qmvDjDPK^CGEg@n$;?>9z(<7IrurKR>U+&w4&(Pt2{~ zy_5nR*rRQU(@NuAo9x!amz>l2l9 z^R^!TreR4@lPxH4#nWHV73~8Wyfc}Fy)3;|7{*TZn1B}#-b&`20=elJ<~gH9cUWD2 zecW=4WuXQ46c=X*&F?ZLwxZHscAP`}&fp1hX`SLk_tKz$@HDZLsCL#ESNzJ+vO+@p z!DhgvUp`F&n&^Df(G6a4C7zJ(;a>S^F&84SxH2#mpZA~CO?TkD%2@6_df^T~^CS1@ zyAG3HXb*RqOl)ZGz$Mz30+Tb|ka{R#A2;&ic7IL6#Zw~y9{)4iy35WhJc^B${_iJi z0?iQPG}OI10JU2A8r`ZSGlnGZZ%=98Xun-IsjoY)7YbIm;5s>`<37W0 z^ue^0w`<3V038lc1J`*QjF24A-=G>O?!)}T+1m~cI^n^oMGWU`hSPK=?^rUhjFQ@! z0zGJ>J)I(ce}Am_frN?-9>H>u)_&*)k@1@@e`II)X zWtKLTV1pnYe$E9>{xu&mt}60d-Ir3oV3aXoxxcS`AL1m+yioZ5hn$V^58D_+4_`%H z=G)UhdMM~mJN7T3+7l8N@%elC%lhDOMuYv6tu_9i)pKBGjrM;_uc5tk6#K92SGhXvX!w{lQ?Qkcm9Be?h4lI^6t9x|Uux z|6a}GAH$+g*^*qhV6`dI=)s4-tDH{}7sQ3d>oAUWc9nQXYs(*!Op~d=cj++4Q<(uR zd{?CNI&5kkZKmfHS~PJvKlpVQStlU4$$#uOnqb{y%2%?y2p@Ba5YUB<+g z$CU8G-}yq2E~>H}PZbu&YAwgIY8n)8zN4(5=_u`jzt$Fq%<7Nou^E@LVX%0B;2G?7I7pH*(jb5BKb`TN57RR9J z!oqSs>)AA2k;X2tO(d(+UWsLmWm^SF-zi*J_;HE|l9d7`-ZiaSp_;nxxG&J!**gL% zpnoqIt@^*1&K(~Be`yYK_a%TIeh}u%!?nl%>>BW{xIC5lYPlU-^2XxA+IwxA+B-G3 zaiF4`)8g9n*mgFTe*yzPSpQ=wL{vuhThAhOYi#PnVrQsW$sg)VUD=k&HQ0=LFpPv? z%j60AdUVU=bM-mAWpb@P%UUK+)aQtn$>-_wn3l;O)91*R$>;l5(TR~)yrbT+7q)Rn z<{5O%QMn`L@2ae8IV$THwbb|XvRS{hrM`c5M|sOdB%3ZO)Dzwe@Ukrz724xLR%9SA zi}bL_-Vdgn>O}3Oi{iw+PZWF0vO9`eE*h%O(w0vYXLpvje4?b~BH{tT%1U-0cO$*z zvNkfN!{VjtCZ<~Hr zX}5eEc)!hWfN)8;>5n{X60R3LYEpY-KAvv1nzpyY-|CGsXSMHPziZydhJ}Vc(nl z3o*d^eQbx4Lg~!)m+SE#jZVgLk<%tIaTO&T*w|yTNB-%X&vtp?$Fj?%N*F##SMtNPVpS-qDUJngkAJsCo1THBRca*nGwa?O)sl$|W zBFq@f3XCEqntF80Wh~2vTP1%T+l2g52A@>&Z#@4J@XPep_*L)6FCFpH-7lvWQ%Hf}@S}!g${^9(@ZvH{JAAx^{d^?|it~vz&_}>cY zD&(Jk{2%ZSb&t$HchKG6%|Dn{H$i#+jJbwoRu`Q8r(AGqMgs?6dCxQ-IG#{AK0wzF zJK;>nWGfBBy3Oj6xkL5M+)jlQW>O3{=Rs{YyrJaF18TJPPob%}X}cRrHp({hmX{2} z&eET1|D&$T9Ot=lfmxaZ<|l3|l@$Y^8|G&Ttun>4+3(p4Q1 z6UURBIG*Ih@gx(+9g~c_{G~+x$-Q|8yxspFj#&D6K zjU#DcARe5GLB_8Md_9HFbNQ^~vzE^>d`{%^WIoU1^CUh$#%Bee=lj>tiAmblugpYP z`yZeCOqVzL#^(LyC3D8$88q)7T{1_fR5$OhXllG|5DOUFdHhR=u&ZR=fAZDhJ8V3? zvaoBhSA3rnp_AU#XKBl%gHD7_daq@Q+Rgg?Yj@wWddF9(h!1Y!HWCyKMERutEmI=i zRFmN4Et3LCJ}HpolLod-8H8c!s!j?7`J_OQPa4uPCF)HL-qLxWVw@exCO)U%F+9z*E1aFUNnKIIwS{}T$Pu`9S-X7aBv*gXKBln5zfS&a!ku5 zBLjt<%M?pl2aCwj*odM~Umrofe0KZb&m&*v{`+VDhj0oh*z(<|_YdV7dzK~!-xBWZw5c<1{5)SM@e;)_n|6Tic+t&Bf-%rRb z|9kA;|AX^a-aUWyU+dOSzk<8-^uv6qpHKbZkIOq|ucv|{ZVG44mpc0JY5#Z)x~eEO zUs~ykexLjXze-c{rJOeZ^^6hxDo@Rqj{5AWvCs0WA~j#C>b?tq_aMKjQuC#;hMr!` ziE8oc)O;zf<5Rz%%&!_WY^!-C`B_-Qq>K#^L&yKvT`T%fX-d93l11I@QB_ z+dQeK1g;mayAW3@g)dc@>WZV@+ok8K@u1G*uJn{=9i&<>*2=0W@juUp zMJ|$B%KC$pDw?lXkvE%Px+gXEO}S8I?!8>7@6v9o^&>X6$U;rPL zf0IA`RB$XKHp?1V?>>>P82~>RUzx)$nEJHjp4EB8;zB@Z!|W-eWNic ze;Ol(ph7eje4{Y}Z$V?nx^Fagocl&&cujgsV+4KmjmBgR&{&0gKx4r-8av571G1Cd zHyRt`zR?(lebCq`?i-Dr+A`%sG=_B7D;f*F(HM)@^o+(n?7q<$OVjj>#>TmCK=u*$ zjmA!InQ{h=!9PJ`!8aN^(>O|$xc0lfvYdd7}R5GVg{ zR{yS94RCkj4!7>}{}&RNtP(M|?2ek2DZ#humMKVJJ*!G(cUH7qa$L)lV+}QKO+^nI zKNpZo%`aN|)SG6)n|)S?qBHxf_UFsy$fU=L!af_j|B?4(+4Bqg?2WUJzgh-9zp&5N z{KNKtlbz2m?6VVZ{McBT`~1Q_`@(<4-;veNFYL2BPP%)zjDLO|&OQtBU$>a~k>?LA zJmI;+$HRl84%=L>H`b3TMC7{XKhIX8!)+`(0=K`{M_W=NI$0>d`YUFWc|~S=7wmFB;e1`MI%QBvqyPyP$Pp z;jLeO=_~wV{+675{O5l$_Xp?mi~0NU!yCWxZ`+R^#;?Q8UuyoiePiE!4iUh?HH%>U*XegV&a?X3IcsISy~n_s~5QrCmOc=2OZ`UN}> zPndVfDJOjTPy7O&U(KI8?%nV88_O@?`N_CNv!DCO<45u9u<$5f-kr~L`ICTN9=ge> z?2i?!OKM>gZ|SuTUMV;-eF1EbmR-@L!yZMVt7$ERnX@#qQZvDs9{(@?P1Z^h{@`NMqz zFqQd^9=0^=Z`xaN?*nJ(l<<314Ts}HH$KM_qZMv==qHLS4mYxy+q=sD3q`seQ#at= z$r+Y|SV}r?J_7%1pc`H=6T6v-l0WS1I}sCe6Y)51zdSs{aw_{;B-LuO&}u^ursr`@ zPhHDnhnoVD5;;F8^jO3Ea?_U#;bDhFxcx~%pUpyiYqO?WVl=n3#hU0#YBqnTxaM;6 z_eO61*mSJG=4yW|h^ z+!TJh*A$-KJ%ua%>puUSc2;&+2hcm`9?a7?b|nKLi{v{uRSR8hlN(wx`I*$%HL2MP z96_|FB1(Gs=gQAN?T4z!=DMKf*ms(4O4S~`r8>4YVJjmPURjaa_m(o;V@XPGA%h2* z_-(+Dj_eDnd6wNf+f~UJ@Rm7Wp$ylzRMg`#5d%SMS}VmX|gUa)2VU za5@j;?|=Koe0FmCESO^Ep{c=}ZF6AUQ!?*qP=$kUBQ~F(BDbbyXB}SNl8YZ%(pbCr z*0KKag0SBot*Cr&M}-7yF!y`<-UQ)Cd<@tXZscMw_dS*Le5954I*Z$y=A_2HMI)drl_@*NZ;>P4`mX|N#|^eF zYscsK=z$;jvG;m`Szj;&eenF~sq_<0Y>*$l8A*{_FA(HMyS_>>(xIejfG96N$_k(` zKT00d@}uNMEkBCSZuwF2rj{Q)Hpq`2r>K1~o%G3%e&>t%>jhd$1O`rb|&HMj4(-4;MSdoIl_O2~DL;r@x60r`RB`Uc?vm@JCl#DD$MA_sHitW+BgtwAf(be(nk`eY~P$JS!J)U@UHY5?< z+*(#?Zw4o0%hi2sNkUCrRhhQOLlO}lmnI_1cpT3zJ=&f|y{+m!vWkcF?=2R*MZ9XF zXKxKHM>ku+p)?s=7u`*J)9k@f@z`qGi)@PSjz`woqY?qMJG*R{giAcK&K?d+daL`ptC&bWuyBOu?1FSL^8I3N{Pr~el}H>B_r(s@RTj- zvjUtW{EV8}9nZetS{-R1fTc1kFv_r01U#dK-emNdq_;c~TPEa0R#AinQ}h>EZl#a) zwir;^7hPk=sj>axv>YGhZIQQ*af80&k`diJUl@Vou#=MB0tkbpn#ov}vD=VEN-X?|?q|@}#L2-}L0K@?F$NxE9c2Yh z3C61BLg84KKnn~v5m`wQ`it%k$9k$8>+W!@9|{n+bfh(Q8p9JD(fxqwaQR_I#P1Lt zW20N*8f7^c;IY;ENNinX6V>A0e%rlolO0)`ef^j?6_;CKce>rS#?APY3|L}aT*?mY|GOm!5yZ;ri;ZHvdY#IrjXGn5wD znv5<>AbrNsUR^&b(Y41oI^0m z@!U;?7$23iBEEP@q+B^7F^Sl- zG?0jL?&_9ghbu&)kwp>2*MeAkcG;+SWVK2mGM|md7I<5%kjl(4c27jwyajPJ zwd7cdNANbLjo+@V$RbWAfGNwN+UORqJ)U{k`iQkj_>2LL&LOJ1^O#6sCCnFDoy;_= zM0VM5001l~bIbxbjJ}P(A{_#dUJ)7eIUL$kCu<3j#pspWer~&INo5fF{TX| ztoL|iF_6$Z44GXz%4=7z>}(#BjkRNQQ~+IZ02p0^56PfqWr0KjmH-5e-r<7IbC3W5 z4V2}^&yH!vFHnG@4;n`IMg#k+V+K$@8WNRUk|tEpxswX-2SPluurCA>?hXPJC#ZOF z2#}T=1crUEG2G2SteyFEGywwCH%dq|P`1zD5cUztnv5Usdge=-7Ei;5*V{x6pamLG zS<@lHe^j&L3JZuxhnoWm*fdzjnTM@_Cn{8BI*l4nfD%X`vM}gRT#(%dDvotz5bZ$* zjsbF%pe7BTQTtXqKC)y?9Yz1SBA;x6#9>8o%&t9XmSMx4Q4_$0L3FKkj|| zFYntwR?9Nizi=H$p+x0qx->B)a3u;v0f5CcOA8LZOd6cE*e5%7?C_@aZC{F45?b|+}y zSQCY@tVSQqL#A1!G#3jb2uDh8XhP^%Y#k6`F!7-n&UmT>4%D=IGb)U=nJ5??^bAO@ z=cUKdGhi`3pb1z&0-%>7Qk#H5&%le+SRm^Hke3MIjuf00IDGf05I|2p~7AC1ueCg3F{qWFc&*IS90noRs&Q01TpD z$S>=Oe5V9~1Oq+5fQZonVo-Qnz`PNK<)(m+^?kfa(v(VWaOO$A%k=x z`l95JiPG$<@@S%Rd~|0lQJF|Y-eJO1$=EBLj5|6$d!cJ!`|JhVy`M~rph#beXP-VU z;k^~#w-I3w;aIX{bYC*^Vm!O*m}Km4j59uav1&={HdT(J?L;!NC!Sq-EEJNUc;v14 z>^3#W2pry)@Yd33j$d~kBbZR$>e9iL z)B(LYBJ5^a0aG4yEq+zc%Z5QRCO=`P*n&WP+q{MVSW(j+ShCB* zz8R4;gAoJ8OMw91aR7)2Jcs}YOc?@3Hw<{cg2CCXjsn$d0256W15ltmtXK5Ma)+C& zriETJ-!z!y(uoAeg@jO^BLq`j0W|6zRK&8(0;NaOxruIss6#-|wP%>nh@_XDA*Jc- ziwDugVen9$j|Y%|Id@1rEbcuMqfj%(j_MjPD?ou}hMA`~C&~f}ITRM41E>LpFmYhL zhQr5@=sORNGkXJZtO22Jd!wPOCmNh>e>gPAvF@e@!@}@GVga#}1L4h&-SkB!WQ4d~ zn26#nMmTFw&OBtg+>t2~Muxu0QQ;x;O{*vCK%_9*k%B|K)0zSWQyOfzk|G9kQXCcF zy{bo(n9sO=p$8R>wbLbSqVxiPMpm>FR)UA#fuk1ym3aV^I{@U-Z0-#J`YohGtO-NA z1A#g)cuxp0y}*J(hD(Wfh#1tl!4h;I#g0KHAVYE%eMkvM69)^%Zj>OPUKkQ+X`ELX zRpmj4#+NFv1fnx`z@>Vz+f%8?QGuJSrNa#hU;-6+5Ohl=n~CF)a1I2c0*N}5Ko~FS zLjp$|It&raK+a7<>cespxF(ZKhInu9#;WJWzKctk=V6d3@3b#5A& zIS~k%Z|=D5i(i$)%p|xFlg)+6n~IPZRK_HugrQrGr0uMzau$@na7V?my9jLVl+f~ZHY))_QopkK}>FC ze9Rh3%wC|kn6cFn*|TJ52#qKcNw1wyG9hGzi0Q}$o!2I#?TJWPWiqmcqmUCZP`ZrB7JV(#U_}Ge z^N*np&6A5!Qp?+{Aax8g<0|P`!th=+pX( z)08KljV^;Bq9>T@uvd-G_3B1xX#>J*Zm>AV;C4BtJLrVJ)`3TQ)euX=E|=lCF+@!{ zxOia*qa=+*3Bo|Q6s%ns4{NeegUi)0Qfnxgh#X8tNH#HUW<#0K2w9Xniace65;~So zInQ|PK0b74HPU)fa4 zs@_rD`pMEnD`$dmYuJxp%)60hrVci`Nt=mp*Et^d(p$<4(zk4${E>doUZ{*OH~n^} z)1RKNPW^wmFvyy>=_qZjwt1+YeDB4j32(4+!UA5|;2-hneU2>f?<&8`S7mFxi_3J@ zwOZ!qRo=y%ne{VE8>gvouX~*KE+%E%RC&9y#Wy9$7E|_e@8Z!y)pWkkAfq!)`vXZ8 zlK|py);X1J)a4Q!Wn}u1k>PV%A@8P@@@GaFe`c0vUn~db2w6CkuaxXhCdYpM#ePQY z`^)xyfYLhTcsZyf$nsd$`1_Sh)Dd+DMU{K48%#MsQZ9K~5zV@%LzE)2_fhvjj#tH$ z?weMeD|S?_Scxk(jAEpVUB0=FJTBl_GsA<=5mtcI)O5?a)g5C+It9r{QdasLWkpD? zT}P&v-^W@JUtf>2q#Mg;_;LAYJvpAjd~y^m$*n5TbklgC14}qS+YJ#X2u3jGex1ly zs+~kNz(gGA*U2hkV2*Jgr|=pGwa{c*Wp1>m=8ApD6+2C>?51F~TKTX_k5d^kh}QL3 zvTVHgi0h2VfPS5xYvl~r%9*Y+C48q<=Q<-78Nd{C#Xd?g5|Q*~13z2EYbeCCpu2PU zsvah&q&U%4JU7=;t$T2u>rkouX%llDek@n){OIb2=C(TJ{pK50X0x5eh(o$A%ZpMq;bIMKO2_2{9wvIXE6!L!>96T>Jw@tR!Gj&?CK_PtzXDq~Fwk3&T~ZSBy~0Xz-m#qt67ec@EMU@o)*o!=_^#pMDFp@Zb!A^1=1O#) zkbQArB8u&`F}t%riR0NX7Tnu)KDTLsD~2i9vpZP5P-5kEsC(*^cj-0}V_Yn+C{_>I z9sT3cHJQ0*-T&P;L4q`+l+#9Vpxo@4k2tRL_9htgb>I*+93UsVeYga#B9&Q286c_{ zL`_e|IyY&QrmPsH|s z5PB_=xyH04aBIOh2A+@fH~}PTyoRPV*_|Bcz+_XojmkwfP?mD+><@;NRM$h989EvH z*x5+reg&WpOc{!`_~8ZRc#_^i!?Mwd@U$?*(+dN^Q#>>8`m!@$0ZWD})U9Dl{N}As zoGD=x+k|Ct2m&HCNy6F3{PMPW(4i2vF`j*8a11Q@kWMnX%^gc0SsmHr9n8Ku6v}vI zc=RAB@peK!F+a8wbQEft2d1>#IXU`T8R6(jYbLUt0}WR~6eDG|3kZT{+&CR}3T=pB z$LJ@(4*X%*fvk4+cckR7WAp1p;v|r zF_oecPNgtx+*nx+z96pXL7^d^u!>dAFeTjh{S9AYF)^E?qn=z=d?+qsfz|(%%QAD% z_-V_8ZrmUMjE*V;CM$=@4oOF_M8ISoQb%kB0R^-pOpJDznCRq8KuvLvl^@GSIg%1X zLRR8VC@U_OyvtD*LoTTLXy=kFjLWa5OsL zwNiKuM#~9n_+QQ(sb;N0MB@<@iR||_Bt2LXIka=6{{BTeEE!!dWF^pLkxf|dUypL*cr?Lr!!NwE7J>pXsTE=)HBmANb$=C|XBQOFDK}phT zAsNB52xp_CN=HYg*hEO<-Pk653BGOhA0xSMc}Ch>(U1A%tm85u!RJP!M(9{0n-_q zBx5gwG1?C_UuNDb*iMH-5_GgtNZJmPIz>*1rYHtE$MDcN=vXWyp_L#fa3!^ba1xSO zP3$lvlPRCHn4#EChoMA(Azg!nhGhlt2{McF)S1j{8OOrVVrMqWeg#A0a@Hc~WwNk} zLhJg4VPM#52vBEMIf5D|W`om&Ap|TKl4wG4t>uHX(2aB$k1umg_F8V5IKIXao`P*a`bH4tp5Sr1OoSL;Hi8=dqHCSp&S2?mM) zWpTh~^S+PObT|}2LhJMRY$qsMPuvL7t&uzm_{@=zQBHAXPAUZ?)k`>u#{vo}%<)*~ z2@nw;D&AQSw}Zkt3KA!VM1)^J*fU2&J^iyB1v&n77^=)89t<60FR3wzM>_UKa`fKI ziP&|O#b5`e88X=13D`}C!wv+rHIKnWKwBk+@a-jqpq_x6Ffcc;Ug3}=Lwrm@nAjes zPLA@DQOvw1+3ychSb|`T31V!@j?81-7&0~+orj@A^O(_}!w~D<55Zm)j)uy?3R){< zt9iF#DfPw*vaCqt#%hhY^t<_GW-*%RaekQ;8S%q4_^w4cdwLI2##mtezCL~O`VNon=!98YU@RvGpj*Mp;8}m+01l|K8KhwQ;IvwO!s5(fQBkq56+6d zCOQdeB)e)Pn4q6Bup{u$L(43*!NiGjASgU`Q)A}Vo3uUxixuS&Q2U{T^g@AFo<~JR zc~m6f!jLN{Alp4jjM8id&8`Eug*96Gf1aWD|kdK+( zJt+vyYy4+cz~7IpqC;T|ws~J{g_dPt3700|h5D zbMN@Y&o`TxHzEteZn@jV=~~&%-mOg{KIRyvE-}=>|YC0l8c2gp(ZEZ z(Ob4pZRbduf&COsVIxkIFiBqUsY=@MB{^3l2R7!>(r61fbrX^)J5bcE?;s?_qmU11 zK5+=K%wcAj+i#f+g^mGbEOhHmO*^dQvI7L4oTKOXP}X^25PWhhC_x`^;gJ~-aa@>Z zLdcC74U-XkijP?vxWc$?7!rj!bJPO=nRzQGowum3%n~1p&GLDX0F;@hA}8@;AgiFH zh$F&yPR- z5121A?*~{@CaDg{26eorM253TSvF%ar!nhn!=(m?PZVV2dNUtJ00ag1!FqUrEEd4x zLLbUpAgW0?3O>FLzIFoMqI8>B7d=YolHIUE83f2K=3`&QSf`DzY?O`KbOG_4#3C|r z_?$uSV3eYUkVxqV(1xfzBT7?jVR}w17}^fCm|Kb1i-s~nF=lODCk3%dejsbxu^4xd zejWq^D*apm1!~l$NG*ydGu4)S2ds!iDtGYZ?s&rU(zOI8#FTM`H>DGk9&tjK&5TFZ z%P$0D&XmXtMwx&w4AJ#L!<&UY7!fKLx?mMF(feiTTrSisQ&wb|FGx5u8T)G@Hm))e z`?a~L3TM_BN*NZSlW-ErAUISe1hmDXq1elrdADJh_2tFI@FL5bK$<8Eb8Aylfhhu< zAji=a=(?+NGz^JxyNbP@p$A!{vJ#B?5j7_dnU7znHYHCn__tzj!X1BQ~` zYavxy&z6hH4_M*t^bA;yQNT)+rI4q>!wPxEk@+4O)?DNY1EP1(6Ia`X)5D-%w?AzL zrD;J)d>N=m@TbS;`P0Y_(T(&trf3lK%nw-+K+gqa$i6Iw$;_cf4;EIU0O>i1OJwH$ z7Q?GAzaiFp*q~Sg#2z{=%q8~QW^rNIPr)h(YYg$>ZGng)prMWMs6-dH3M>Yw3jC0q ziS3SVl@Us;i(}Xogb6Hip@HZFG5*;8z+~`|92W?TUPD?DAw-SULv{c1~9Iz9Dbt)_Zz(PXTb@L+FGVt>_(S<9J zSuiefKC{+cZV#%GjV0a2M=4}Qm@gOnT!c;4m#oBm-3YSmXOYNhmlOrei$!HdC=SeC z@fo@eGZd?w$d;`zFd`zzrFfqmv!T_Kwn7Clsue1-HDvNfpObol(AO*6#l8`TMMXzD z2fARE!oq=fm=|;q7l!B(uZHNdz;O{Xazu1F4tD4wpp`?Ha-fb2T|BE0bRopU=wN2v z{n%iA@#WZ1BZ1gNe@0q~kY55*3p>k#56gxzNp&6x2-a|Fc@N6axKqpdoV`^gwj_;A zl*`h{(n82Ih%b<7`6(N(FmDl5AfdpB7$&se4=b~9sPiON{vxQp5=%na2`q*8Tuf%1 z0uNQW;8nCOGq()0%TRQk*4ivV*qaIzN9H)NXPm*pSi$Ni1scSK5J#|-#q!6aad|eu zs77sKs~{4{#e^0K+>6k%&>xf-Bn1_&%3tx~=uc5DNHB=~iJ*FilzEb)tnQ#P?5wC? zs1Faze*rNC=po0mP#8j&E_8t_XaM0+=PuO@gA6W`QH{F0yBgiSZYQnOJ){W!-9~y>$&z0HyqinAOlec zv%0#Y$z_$Hhm(k*E#B7`>=nJT7(*dW#s~13kH~YGx#wX(b%z)n%UvgT91rJb=1*gb z8a;75CNISO)uF($cwcB|$>pjNcHldiSjvH6u9E^oVzI!gI|YW3uP_#hPs^op88CeH zt%^W&hp>X63?xnb!3AYLXq4f9?;@&hDV3Q=LhwGK4kq1iWCM?c)Qy4Z&T6XO?5A)< zotf+yC-My;Jq2T&hbqfzw=7c-wp(myX8bzIDT^~y=fxRhGboM);*J<+C=GEHFkzT_ zK5W3R=V~g*Td?8e8g(5x;OE?IL-@GU?@Seu`B~-M!1PCm<>|1y;flW%N)eR1{-n#tQ@-F z$Rox33VQ_`EZ!Feu#SW-3+Gr^#*k!LuNNKef|y-Qk%K(WBlr@;ti*g1HOkSMd1Mq% z=xb@A1Q+M?A~`LH%aow45oVE<{6iPSvNcwfj<{Cl5T+v<&2DFT0S+bhIw55#Mo?o* zg7Z|P>`sLoFe}2a!jY5E<~}2K1J60eE)b<-5wQ3Mumpx=UfOGslo(=(L{UVo#KMHAZRLy^(S|F78I*iyu0rp@zw|1sGezn!iPdG0xeznyMETbRRTWJ;X z9wVP9l$2XtWHYeIhA;jA@5xDUbAn*-lx zvCMu2XAaGNxy3SyAiBL(7URpzCD*soq?74EXD8rEiuttuD(XVV-NK3G#$IpUBM#&v znH04W-yuNu5)yExIy6JZM$syQ&Ou0&b?JzR<-;VI3|ZJ~2ZX>?%61_^%of1hBzH{s zQE@CM*%NGQ#*tBQ*dn1UGl{Z)977nvOr)!`M3FA7+6e=qD%dTlu;w=BJU`~VT%u(<5vDX>5YuA}#wiQXWW&q8s*~K3eFd(-o0CX6EvSf0o(k+0 zw^A&o?-o9nvroC=UVH4o=t1sMz;4AnYL^~a+N3zP zRLgVWddxEOv2v*onFw`ALs2%7J-^Hr$W~U`t~pb*M6yL)j3mlbuglCm?5d%h6gO?x zb5VLSx)Gxc6j$N%Nxr#Q-a>O}{4#d;A1*_Rq0x;DCS#K!BV4f46B+s95oF**pK-<1F(Zo!E3dyDb6+q!op@lGgrvxZ^qN4BO zYEVH0$T@c%a_)>Qpo!AMEg%l&Vo%;&KoeSH(iebyGuF_cTo5N0bV@(K=}Pc#hc+}= z8T!$!T9K+SB@+P=|8keNm!`3FAZWCcNzdon-$q99mHTMByQS%m%cyQ3fcfVV8Jxdl>T|!X!F% zn|h=Q@em}cQ0dZ2nOx>MpFo_N3#n4J9Ba_S<;RE&p%a5_gOYyb_yJe4eq5bfjymxH39mj{D2BD$8& zdfk%EmMX0wl*QzEd%@v2B3i78VP1vQg!dxe4x88!I2OtScd-`}(Y+8iuDs@zv)=8P z3x=O*z6PNek1XtgF}D<#*wEs@-oR1_ldRq@+4u3-E~AZXfV$A8pkSU!p_MM6;xH+m zz;H8jg5W0eVTQayqq482GaJOG_^gKd^f}S}l+IPkHL^Ccle2?XLmfKHAhwb1`(w0= zG(q+mX}nVe#*A*}W4w1jp_v8F?6jQ^gJTB_8*$EhjIPey=km4-Xm2MT4au;CN3y<{ z{ZY@I$zdajG25W2L~JY56u3f>Eu>THlr_;YHQF_p#&5@0YZEM5`{vcuJ3AZ z*Io~*Q;M3p0VfHl{!pJY%`6E-qgp;FE++$|xGoDSz)PW}g!;qGSg_ETOh~RhNRX*! zD9iLYPUw}>CDJRb9J3BNH;rNGWC>Uikv|=ylVfp+bBq-2UdIX>j&*7kF<#ypFK+!@ zp+aZVbz+T<-FIhPv_o+mki+@1q{*{S52cF~^h_P@6Dy_lt70AexT-Z?#*cJ7wvbwnBab%lY{$tP73bl;ey@s{k!PoNr4jYsGrFPgI?+H z8xY*jqx)A6b?JTFyXZ)_-t)T1gO#~&)jqi(HUHXsUfX^5ytYqX=ihtJ>qA_8-+e8Q zuJxI8bjy_C6f6t6u}|6=q2IjLHMqPk_p)4fZ-DUCu6-R9lyFxs#=TFB)(t@AEmQ21 z>(`Ih@1m9|C$wC`<+r+(v3X%d?#ikUa9{VAkGc2Oj(Fh{|54V^5iiOh>%D@wLoL+_!$wQSbaFB&y)P=fmDFbXULNq$KXA;Oed& zcAw4`=FN-$Z@5qWKxzK{LWjCfeKRF`+%Hu7hpzwjed=Am@9H}8{X(CkyT9vxA>ohH zn}~y67M~t+Sd z-sQrs-N=ik>AEeh&a2X?QK__ddr8UIy}Sw+{Jsk(wPAl^gF)b$$Q0dnV~1} z-M{(cdvpcdlV9Z76GQpq|M`+VU8&57a=;Q>R#fe$RSqlmI>Zf^JHm`#m48W|#*Zk% zg$u6ko6V?qn zG2WizdWDf%b%YNT(A~z<$Wu~4m&~80;Xm}AfsWRzNM$et(}?t%RED3iXH$HyO7nDv zHtvDKH{Tmw&_OJhOP33D##Xie+hI&3XNi5Q9blUmPP*0yT|bNrGK}O=nom*n?7e21q50n`aJip_ovT4^v|cy!l6CrbLmAk zj|=GR$;aJ1-mQ+;Ozl07Co;3pr+;v?(dWIVd=UEVp5NcR8_sXlA?LRue}0?kr04vu zDLK^qLe*DZGQR@2{b{a!RBy@~?DzkurgTb?f7*^W^rh6F@$EstJq3~)agf&I^T(*x zmJ44;?N-{rN4#u9TkbF7p~&25DDU{Xr`>(H+uyN~#OIf}YX45PC+hUQd12L#+Z$ic zUFcVL=_Q|#WV$r|iTGuy%#D?A%$K#}|ID?J@&};_G8} zrD*aVzWzMj+W6;mYqBHNdg-QAYvZbP>({={zeoA^oz&d5vl4#CuV3SKMjz^(b*_IP zZPPggke;kJ@P>Yf?|y%#S!`KSP*m{5V8Jkr2_`zW<3#8=?d|j{j5);wC3B)Y^Sjdf znD69$(0V%4_#N>ebCi5EmAUlm{>e}5hdD~-9Lw#M>C7o(KzGTB1^yo|+}Cx(4L6jW zIEOC8CSUtH`2NV2k;XA=h8$g>N}Kg6Gve%R$Jyg2gU4C-_?+PJPlLz5a*vlh;~IIu z9?v>I)qH0Wt=w6Z&V00K=Nnxma~4^T>l(Zje)GS*X5d`_cz*qR5<51sxu0j0JI3*p z{{Q7w*WzeeOd&1>+8PWkS}rY^_4}09`1Mq6wq#C$o@GW{O>zII0I0vx*W$@t)NA~@ zKli(@btSyc9n#FH=GuaixwC}K%!nJex)E+3tR61?xg<{GWB!O3#Mv6L4u8aziF5Zd zhJx{;*moLBl7C|_Y0`To?S1W0SbXl@lDS721eb2}cm1bB`{$_zz5JQ^xG(KBay4h; zHac*VcuEWy)yXAN+c58m6AXuY%Azvr7URO_Tt8^$w~6~L*??d7pHz>e1pYC85j zYTkS6kW^Q;tL@$i1+!i+d2;uO&HIOZg*)OwZe~REuOka$d;R%EMi_I4g0?@=Qo)W0 z-x40gm$~$D2r%BY(Yl%FK-zU`DsxG>|NMWrabCq!;Qx+s&!ifvwN65ReC<0>X6so( zt95q50kQq>Xx@LR9uD^!0e3`^J=GY+TK-b^<~zK3?QNA8!;0bj$9SVg{p}4fhS#`C z%+Z%KivD0g&E5TOSC@b1C-!s^@Ob;g*)M>JduC_5y6!0$v!wa$8#z%^fLxKHEl6h8 z2&3m&M>*mf#79j*6W3E3IsfigBIl;BH0VCq<^F(oAYxsk?MEAo-LC@DC;yoTsKy$; z`@=7E>^?Nd?w^^mr)$^Q{+5(g7^@1ubQK1v!izK{`OsaVS``NPJL)yq<^DGgbala5 zv1k3szZ5WckAdGEbY~-gQr;5(ORh*)yI)C>+Rb-$rfa{rsR=u3h5zw?d5!j84QAqz z{le@zjo_2X+)UhUPuJ_|B==OaFw>rH(9@6bv_Y33H||Ttp7tL+fE=E^P!kltI{xYS zr!bB_edVV@_jYpb(tC!++GLPm0r7@B`P%rtEVG3O5gGK5Uqh0y zrD-qH5LuRvWE*OirCSHZOCHXqYqKfuLfqF$MGehsxH@(ztyqbr>DI}d?D+5kSEQ68 zr47w%DZTe#j=hnn_;Kh~D^3WujMA1}%qLt^Cql84)XFzs>F^Ezz z;iQ2hSq&}Hdx3p@V`T+uEV!rJ|C?#Q*sI)josw7bO#DyCnF4$hY^9Di07AmTk!do^ zb(oQ6uJ|`!1@{o5GDVplOY&@Ws&;F-vY8|o1r48#kX+t-uhipu;{fl?0b{3HG0b$ zytR!bk1bD?JO(E%X&Ae-VeYC~A5vdbN@ZWDNJW>VYS-LW);M-~P@rpBYV10SHFeT^ zL*@d!mK_z$Oe*_gMXL5dI@8cET{3AY=x(gdHk3?S5O031U(*@b(+!!z>QwgS3ilk$ zLuVb0T=Ojevz-+hO7@kC9Vq}eA0ZW8lqTE_nlSWbLI!63)$Y>dzb(DY`3K?szGkj9cm?J(P?IEE@}uIV-2(L-#oTO6DYn>~?c!1v2xttx2hs>&*w zN@og(q-(jw_Tj~#uc3LP=B_+9ch%|Pdm3A3)r1-)Pn$gbw0u(hIZ}hpbG@|Nx}RSz z{#^dL@n;_Gyz%$ZPJJHjylS+w!f0pFVQA<1!_m%)UbOS+kajjOY7R*f`9MXQ)yCnA zQngIkBBLD>>TY77orB%9lQ)&njyeu#hZoQeQz_b^k&t$5CWq7C5)rARo!g)tctfPR zg6{bX;qaGQ6-I@70=lJ(w_H=>j{;m#Vm?g^uF_Oy^f^`uW-^+Fl0t;!(=?8Y8(lX| zr=YGG4Gy^0nVdq6PR~>hNfGeADP8-b;PT>CJs_;zYjDE*okZi(wVjlp-Gfsz<0qu4 zH?v{iXOICr-sxV#sIT&@v>`M8bbF4#P$kd`l%FY2XUa~H0H-~BUS#P0Ohsd6^tsjv zHU#Apl{aaIJm~Z@Rg544I>I_`5UJX?(ycS9Gzcr6c8EoQ)$S9_wM!uSVH(>^ex?oK zuz&`+?=#gReSzH8(7d5wYNqlu4d$i>FJ8pkDtpUlk#qpwys3bP6%2VIFKncGQJ$hI zFUlJ-6B#P)IoTLTu&>jL(u*=>Ct8g?t|?U1M!hI%$c#SAYAj2U3z^AV8-jFF%B!os zFjE|bgH)onE!`T5)wWda!GMC(RJ$p~_!^p5;g$3lOkLFA%3f8SMr&3}w8ifQUgEHNcE&fMkiJ8C4f%CdTXqxTGFr zV9509P(U-P9YU!Fkt`AHP)2_%Wq5>KQv0r{QGI5g2-)pIg40P$8*29%H}b|c%Lr?q z7s?H1`dF9Fj5dmyp~nri@7aV*K>Mi=kSC(1)rQzw2Cuj96kg1}>zQBVAH>>85y)G_dVMwIeGD%Qc)hUM z;za;EHGo|&K!iZQz5)UUbY4ix@uJ2-e!UEj{(17vLEZ)ANdi%=Gp31jQ7FSqiL5da zy~>oxs)pLVO7$TwS2cL`Ov3fjDZpgvp}x9dc$YxJ6k>(dsyxk6U)4B#8?VGw`HG_+ z`QE{EVY9!Qk}Z^mEdRamBH3Ayo z=xGS$(Wj}_ugtJvsK=%B*!I7eI~Vw^YnF&b=aE3zLSW6oR*R5WdZle(z|MF&%BQ_nudjMP_3G!VUKMHWBf~2J3MA0-C~5=M zazfgYK7^E7=KHU`&zYHoKwCtw{dLHB?8n+`uh(9C?RB67dc^SQP@@*ef<-o?v@LB2 zw3XWWvC`MiAJj&NXaZ!vCP$e}Em)^6U|?4I>cuP_sy*B1`s=P8>;jby1b4pyj){?W z&>q0LxA<5*OOP?L1i48YZEO*kN80tG`c5n(v9tp#V|JN!1ommi_(QT|N{vC{p=bUq zgel9J&e%9)^b=NkTBXQB^=31VWhpfd0^P(LESV|Qx{iADgw#Pqrl)DXP;2E4HOWK% zBOL-kYf6?^ffc!yiLv?@WI^GrCx9ox%9yqU8fB_>UYd@dJs?DyJXG5HM>U|B?0>My zRJ`?~RuP5unc5Gw7#_rS1U7hHtryT~6_#2VFaX3AQe`_!EiIGTlwqwU`@_i^BJ zZM>0x_o|sb(i8V}#T&b%fpI%v^D^~*6ED}&BEp4No1_3(!D+xcZ5*vgm3aE9fUXwD zYk^c7x0f2#bgPw`s<9{DxJNqDz$ie*?TGte(kJ5M+#ZIO=YivkYVr+gm<5I*FpJlP;pbtfqY7}a5idxL`w%2+WG%)7 zcx2riw8lY9*EP8Q9#+z8k6-_J`}y+G7~o(MUywEmlQ_aUGOtql9d;6%^(5xhBzCAt zd~(Pnj|)u?Ok!~rcM>BwhHcecf@NUDcA>^+ATZ?TF%LCO=(#V3co(H>PEtCd zW_@Uly1_7a#~Ztg3Dq4V%(R`M=pKs4DCP5G%#W{7dgJwwAD8_g-6jfXt{0!|NUmQfkn$0zXtMs_a ziy7dB;Jd&yb@EPJ2Z)h8`8}DhpvhT_5W%+S$CDJ-3{xnMsuouZHK2K6g5&y#rLPOS zI4S1LL0BJ#Gi4yfoH+>Vx_llfE<%cn4?_8n;^5GtO5NZdpjpk43b_Rw3JcS@3{i>V zJPth;7C6yc&DG#s7@x^JGLPY%um)^AJrA-*rCX&i?Q!36e5~OuFy;`93}Q@%IGZjI z<}QOO(k-y1v{hhBEqev#p^Td9~KxSXGPT2TLL2AyYVuRQN zfnv2IYZCwxYbud$UI0K!GsV(ZEf$-!MyVb22ZoaICHa1tYaX@SSmdwA9x;=SUo439 zj7m%hZ5_!Swi4@aWfIA49k(@N2gStNQRN$W6tt4ru-kI$FX^kLZiu~OWnx%WJ<9A! z&lsRiKV6o#{z(9I?HSoG2@ynk!Yz~he#sUFQUre-`0X_b%(ePX*#*Q$UX>8b%!u1p zR2uiRC$RSG+j-Tvkvn~9cUtv0q|x2!%PZsdr2$p0J6_)<5{WNakQZ``fv8*n|!-Tbb&l*az6-nW0-J9&8@Tt9Fw^5of6J;AE;%%eo{cFY} zJ12}uwa(;D8DNt@w;mriAkD|m8PHJ5XZ*zP4D)zT=%Oz&>a$(a`s0K z$p)@z+})vGJE4G{4TgE=XqY~#A4To}efA2lq zI8D4{e+L5G>U>aL8_SpQLiQoH+JA7KxJwJ&U5^qD|Qm6`rb z;G&xYEoDcr&l#@cgR8vtFA2T1OBI8zD$$)-28<_rbs=TsL+-b5#rt>u=z zzHdYf^=g+S$v4P;iaXX9iy0i3<#Oo^!$L+pddGvzZD`7MDAvG!C&+_`!7NcKmM?6 zzOs9?TBt;pE3>03az?aY;+R@w;ZHoHw>vtB7=_=7pSi@1p9$>osL%OVp_0sH)y_3s z9ByhTZ8^(Sp)YL5PTYH5iR=e|@12wx8Y2^S+gi6;xNW25PNWkWNw?#@n28!4{kU zDlV&|X);p^v~F1E^(u-j2-5<$TFWVa{*~H`PlV3uAjO>uuj5~<*Rwtn@w<@Qk6ISJV6h}S-?WAdw)nc7cB7?OnEZFa8skX&x1bnDs9`o`yoJ_G8Ynn`xKS(iJ%;Hi#38~g$il#gLb zjI&b(&g`2f+nx5*U?g*4Nu;qiVod9eG(OvMHO)T+$>f}!mk0@Mb-r^ke{rBL5VXFB zFnZb4k16JAIbV4St<2@DlJRYz&_dgt_e>VrHH|3y`dgg~fG2(Pn7! zp<`hc^7OO`KnEM8im`k@H}T9=THDHqC2lhCHvOiPH<9|AgGek6UJ6=Pxpjm=DIZPW zPEaS*y-TX?d8@AWf7DAI;+?S9#WWhf`4)NGatnotSqXqy(>~<0%?B1p7-ikkdv-538kO|_n)@^+7@$&)m5r$1r zeKZhagFoGjmeTVe=qdTobHrP944uW;J5@l&3%dx&_$sxn%;>FLJ2UEZK*qoF?0({v zN}TV$i-3%u6|G+L`r6Yc-u`8tlrMhV<>_niSK9l4IpNarQMM+XKPdX#?EC=G+#uLX ztrgFqzQd&7avIoL0nT?6Sp@oXQ7SG z4{^FgBsgHRQ+1ImojCfXWRsRjtl8%m5K)jyVV4)x2JC9*Y({Dwl3Y5Gq_%w zRgadwT*CIcmHD~Uu`*v!4~;3$#WO!|2lo+U%F&qJ9rqox+>%hVF{R(R#=i%|L5JI% z8R}9+>olv&2Ww{oUEJQ1AYz4(;u=U&1a|7kZsf%l^@zaWTbXS4&1VL`xnQSyBeXNK z=nc)qbeA9DDKR_h2*DO7ID#;KB@fi=EzSizfLRHntP!$g-gqIcec|A4N=nRzTlFuT z02o}77gF*XRgz#pujJ+vm7JtXRu)Qr??fdlrR0O4TiWD|o#3QJ71lUO2rH`IuRAPo zjxDsApqK_+vG-QzTf^3ShpHz$%aCVN9Xq$4^vp zjVgIwq2$D2L4LF9dP1StNCmRcsSEN)hpqS2ivozm$-0xcz3c>paghS#%tFZ@sggr+ z_Z8LPxI(d|6w|Zg0@5{Xy^pDSRfT%769IDH(*iPr(F6H{VH-R{HHc*LiVc(sAVS$L zAXA5}*ZqPtF9#J|jI>j4SXOzb0_5C6$*-xBLow2(8hmr1*v$$MnS2+Jhlj0asd@-+ z50DR@2$1jmSwKF&P;&IJ4IX)3id|4B_H>DiOaf2TF$g|t-F%0cb$rfysQB83YhUP>H*&l~FW1%_m3#IrtxUXjI{DLCt~h@? z*Rv{rK4zC1vo={rcB6vPVPaTiz8z*_UNr6?C|V-vcBnRM*xY1+*hLG3OIOP48veN~ z=w$x1m(kHE9mX=55-KZWig-(9knVKeykjr4De60x`44$7+VU!@F^isJM`5}z#p3$$ zMya8dyRt^=DE){iL*jKYL+aeJG!SPuuSTic&CaB~dvm#tWG=8|uk3DPeakY0vxZA* zFTo24`TLzQg?@$pR83_wzn?yn2Ml1B4#eKUmX^i^pw$fF;g9J4Y4766^h{NOURrU@ z?iV`u<_MLvx6u&|Ku2}@jcUhPL?iBy2Y3Ad^-kFJhpA-|n|UiS^3o?Qibel4WBr{n zRiN!KUpnWNkoU1?^5h*JMBb-J-=_qp#D1TFK9)H#x*CK*|}C!E4XImX*nvW-6 zER%;<`1`e$suocVH^3_Zxxh;Qy0%T)?(mP3(mA*=LQti6gWOJhkn!EMjuaB`c&n=C z9;aXfp$+d7F+TfYr64o@^^{|weId?aURyrqyU1TF?MmNjO(6`Qdt8LR^arnKu0fv+p$|4Mylq@M8S z4c|!azl7uzyOGxQYqGD5U}l8mS8QypF<1Y$AUAVX+ZL2uX7vBzk27k|;T(9BGS=Kq zdaXwzTXWYE__7ng{H#$4CX4NGVmo^Az~yE_=gH@A>Jctvq$;SU1MEHhPv9+3&^xE- zN7$W;vFpiv&^68WZ>5>!K;!4$uOi;x-Fc}U*;;9-xb}Fcy(!~=m*{(X-hj4@YzWY$ zv5JuQo_MIUZ``2wxV{xYz-A`*T_E!WWZvW{RUt0T+~a?rN4U*&^MVT_U4hR?sAP`# zS~oin$O4_)`HE=ns_kLUWR5$;2gI9Qnv6R9)p8G+-mMr)q@Hk*v$#WxK*ds-v${9S z(U3Cu*ZIh}L)yXBS0=06Z`BS+gG<-l%bz0YSa2VB{&m@!ft&K@^WVQtNks8IOizeA zPfjgx2$+unh&~u`0LN)P=f4iOOaYnk`WItp>kA@uMk~`TqRqvgnJ(7NbQ$XOm_74+ zv1cs1$+c&!^p!9_tieGlaW{&xAsSk`Y!G*&K2k2i2G9!Ub-%e*L6(_vNz5L|4vbK# z12|m6A>4L+>)9Tk^RXRcOOnUtFZs~w%b!^{?a0&FgXK4_`8rwieElme+pyAjAtj8Y zBVdW(%Jv4WD&$zx2sS!K$7E|~Px9F0+gor-r+gel;JkdP{!^y^xDTl+@5-q*LS6cd z-%cH2*_T&xO2W@6iA?hjtXP1%G_Ma+RUn7fdMk6C1OWBR*wxlpSjK$)S}-~R7&FZk zx@O?DDh%>&NxXF&QwX#d={w~jnzdSpz`16PLSKCDPiuovm%>mqGwc24k%RUV*;oAb zT9FvLZ+vAkS3M)jb5#0(c7!wj&m}UGIgQ?#@&AT`n2Q(69S2fy&P8gijDMAT%j!U$Os9&k-TFFVmL1Lw zqAus^z9hOB07Ny#GNX1mmJ5++oB~9`H}7@d2xAxCSXijz-8Z5gir=8*odFpS9f(tE z@Vn{G@8#XxwVLw90d+0*zNY&_*`s8(brrxB8ULN4eMBI9LzuKiD}qi$arWgA^=quT z9E=#h70lZsE#oKf!$@IVWG3!rj*zR9Ik0bM4g*%nQl1lAMoYLc?h^=Z0o~ccfjucG6DV)pX1v!w=e1yGj`-QTv$9GqrzFID;RbO{ zKI(jHG^eNS4RK6OMV^>6N{kO;j3S=)_J_Xzu;SYYL7}8#_?_%RaQcp8XfMxSVygKz zkL=Tejz|n2UzA{(l{v48a~0Ox*2dChL=caNCEG_MsQl{56vB_!up!@D+WG{|Og6rB z52I(j5iaK+3yHRmkVtlJSA`LD`De5h;}Myv(VBx^H!?* zxgqssxXCq@W^QxBV-490N5Fo(_rt6gitwxQgZv!k^NyWgy?Q=qa3(+GD!}rQhlARQ z4h;%nwevb*?~{#+PA<_xR{E#4_i-ubo5U8ESjNUpE!QP%B7g@1#hyq%)>@kXoW1$MQyoR%4Ax^8M4T}^ss(IGe(nX9& z0@cmK7JH$~TNTy9{+9h*tez0qmfA}dr^V_IS-H+c{SmpVv6Ab{R#UVjR{tc$v%a6tDyJMNDrE=P{en-4u`kLb)}s$6C2Qucyzra-)r6oJ{>7R`|R z25Bm%n<`DkeK4wM8eeB>dZ`q8hp}pWT`ZaP<7pZdoMe@yMpdV#ms!bne=PYjvp5%y z>oX|f>pO#g%ldq=Tvle`bJcpH*1MB+C}6A@FNG&b#YGp!>W>g#Y&;N9i0W1bv1bqC z)f$s3CB&rEN**k2#U9YKBuf$qDURG@k-Jm4Ke=u`Hk>}Po44Q;{jOmOT>8~<5ubZN zYk4H?0uJ%YdD1zGW|zpR25hUqXmj3|=$0E6#-?TdXS~+y7DG-deHOSpF(a34_cYw4PdH zWturCxXt{X5E8w{>$k@1|Hu(zbx1Z|f7oi=vFH|I^pYG@V5Z`w%w4Bd&k4HCi)Qg+ zRLP`DGc~Fd?dy|gjjC|zB&$>k%i|I9_;`O^&dws}MtKxV)hu~KEN9qYvmg1q~#{Np+b7vMX&<8D4Lknt&DF;~R zBpMI4oBXEuB7^NGZH zhY%Lr+cJT*L~fgqam}PeiIrP#ri@swBeypBl+pUfxVwxH-PJ}TLcv-@iA!P*k=6Dg z71kSrB4UUzBv#!1i>G)OBfU6L9;<&zjORrCOL5--asD1Xqhs09G;`fv^NvuEq9WAa zyp_<;80g1J^CwR~URgn#2VRWpm=Ms<1a&oX{$dV#ALZ|9PCNoK+7J;^L%N(wm&OG$ zxDpnAYh}(xO=9(!@*9@Ks2@z958mtGCLI`1qz?-C*E_0V+Hl_aTQvj1NgU%q{cCAY zEPn%>6$FU)h=<`vl!ee+&SNQ)+YI^x9{R_`avSg!9xz&;lnP?++)H5io8-IAUpe4`wx%b@NE9xO@34g##-^dC(;1vJd(>A#52_y9i;o z_uJVxaZwyrHk$U!jwk0A$PQ>UaolZ7#P!fXx@K-WWFVG^oi#embOnxpI)VsfV|tg; z)2l8e^yG@1FPkc3wPPmRbFF=D6%S+uNq*k4fAYubf1mKZ6!SeJBF0G0hW?@aU;%S_ z_}5A4`fseVJnoDHv$gx04 zeK7kR5U$U)_U82~Yy6I)`6pQf9>#+*0Wyc_hCY&1HAv@e+(Hy#y-d!Z<1kj4V~kZZ zjNF>k3?qB6($~e4(Wx0@yz5b^8Kb@Hs?>~8-u1}Tj4JQ?jMR*g-gRYa#u?sqMQTQ+ zcReCCqr$r`Pt6$NUHelr%Drn}YKGstE=$eudDo?>8D;7^HKUZjC1dmIL9Yh~%af1( zIxkN|h$wmTpc=o}GWJ2j9z>qpI<8{`6DJ`{1x{&so3PyZc>&X4PU4(jZe2>r87*P{ zAfzBur6tR+xKfgZNVQ_olCWPA(SmXmYeESXwH)Wn5OQd~IvPbd3>G@1D0@A*Zm4Nd zh=e>)>ss;+`1ovsFSllpK8@MP`cS2n=1(T<>ZbxgB2zX5IEW*X<@*K6B1&q$9A-m3 z{#rXA8E2gmEpF$K6#flQo*3pN|EQGzU9Tlilzy&4vnkKBKK!gL%0zUorTeq>!@wp?u_i3k{VC+-Q9Y&8;=>wKCM)pf)G6~SjC9Z1B8y| zYfV?6&PN|r`1vlKsPz?|`PE@=oZtLXAx9ixG=R+23>ve01tT2LLh*S?DEG*47g+Vr zN5G2EoswH_J|!uRNjm;~_3as!pyujIinxy2&Cc&p6;_V?XQ+i8qMsKCQ9uf+W1N^G z6OaZT%mw`*AwzWn>lqqWnYH2g3E-c%uPuS0#&<+j{tcI-u2VuLsbN+S%@IDSF_xbL zy&x3d#r~79+glJ|BhcvfX4J@(p#LJ-3%w}CqYawlSQBd3pys%5$pCGVNF35C{5j#X zMEwD=-HZ6FU)*Z&S--g47Q6aVg(MZR+q*QoZ5DRhrr6E0q56rXmMumgUK`g4bUYYh z$#qzM>pdp>xwP)FmK)n8D~vE>EM~7E`g)8R^cy0$jTDxG%+8;CM{Bgy2~OU|yR$u< z7^~JynUu!}M0t@|IwczFPaMUsz)5d;UOkL37F2zKBE)drvC+z2gBZfsXcydLWB*5NGQy55X?+xua=c{kC-%q z5iNFvJe9r{cp+3Vj%o%`Ro_lo@t=zbIt%mUiCadK9EyVm?M70_A2-}2j+NYUM!a!@krXEi zPd?;6=`fNn3XSUux13=$?lO}5t=X4q~cg!>XZM*uJ#_cl$1M}q1*)Qql zq)eAock2x;ex_TTF!^=HUAHQkst0DxC8g3@BlBetB9j3Itoog-P=c~ttN&xXem6Wb zb`lF8e`U&#vpH586O*U6S5kgO>~5J7aU|*~Ih(5}Q^M@agv2wg?Q!1=vAOMJ5#!F^ z5Nqs`IXGe@`@pX(wd0xFn5Luh^hJY%*vyQ~lbVALDdQurih8iqNUq`mJp~qCLmK9# z`(Y)SlTFD@{W(&VXY1GCwU>AbHI6R%^P+L{D2{aCnF1tk{02M!@zGtz)mbhWQ8F8d zHFhrH!@b#BvG7ybtNsifg~ z#?E*-ld;p!O1`}^*4VyeS8OgxdN$woE)810;KTBDuLQeiLjAe^1!`pltcyk2BIw5O5 zAj)a`euP_l^xZr7vuV4-+mT)7_MX%^a*r2d!Wx9Zb|*5jJ(8MQs%pv_r(G3Ql{bx~ z$jk}rQd7%RQJSCuscuq9x>}!_>KnGshSXI53F>sDriyFu_8S^Lcv=XLJf%?%z3W7#&jKrM&u z-^gJR(M^`vDtN^cLH33|pd2Y_N&z?qz-D_ZHbF4*u5fNc@@b>BC!YD&IacPjFpDSI z-~5jSw9-eyNBvZU_w2a+3i}}aE!Av45*6;1oKMMw?+Bheq2$@JkgXNL_?JQUHQh!& z(jKg^GI!vyLa;n1+RT!iX+W9QP^0m~;7X5J=dkte!s4g8YV~YJ;B@`BtBaPl$ynK7 zWZBoCwi}nGc!K>4x*Eh`C5}bOC$_o=VJHe&q3wOxs&Z0k**myUXo}eXcQG|(oMDyQ zQ0rH*tE_nD#;{zlTX0!J1WnOKJCTciCx~wOw*)KS50WEs4)H>{uL{~CY4u8!E93Lb zJ2g(hkc@D)i4pg4m@g1THa3mYQM$(1q$s~c`ZfUhyk*xJEV)%%eYe^-Vlp+2;>#5A zj4EZ~6_EE>>@7FXTgf2_WBFy`zgUIOhQ0E27~3Wbth=hEO>OEaVTt+ zVX0^{6`fS)HY+2^eO2Z(8v2v;=ndF?uR7!$2+2y01s1-IT$e59v(C^B4O=lrybG=g zV_7?BvsVA)|LOl?N3f?3R#~51Q}PmvMdCE-FezpGO$@GhW>I)B{oF5&2z1KQ+N!$} znb}}IBrUrkbXNx0+aZT#ZoR$U=u9_p&WR8)abvT=>TceKn%LxQW{u~1iq=_4X17%O zY`sU)>er}&yK4urVd}h9gX}Lcc#^=zlKc9N<+hAT9BXVs$7}0cs4_Q>Qs`NbzzZ(k zFmZ(y4Njo`Tj2GeVG7mPlxiX_tdc!DR@^eXWDU9X#uhXEX&q4E`P<~nMo@xya@OH- z`jAT}lj7q7sZnRglI*YlK9W{U(L3qYT+ZW0mvSG4A30LzZhBnueUBl9{nUgbhRs>cvjV-#J zzE8=m$8z>_$v+#iXy$#(T%s6^dvX9*%7XaY~+1@l)w^K>^-L~cKRvrd( z>3a2S={n(C%$wNK4kZQ@Ps+ONXW}uD&X}s8geNK2k8BYOD*@XEE7=1?%T=M4m?dj> zRtcn&JmmM-pY0hX4<1u+;O%j{kN6JJrz-$-3pj?v<;RXMf~9rm#eSlGd`#0dmeif>8o(D zz8cW_>V@MOMzPAxp1zu=^cAE{f>*VmirBx?j3U{#FAIBYr2HQdLKqZIiHxX=XpS+K zp8>ZC*G$%uUMnn@XIK(yg{4HWu#hrN70)PzWdx9tbI}Q`8_h?AcPve;E(^ue?~21h zrhQ?ppi=iA(X1qLQ=C~rPjlc8RGNeAzL$jw6Yz+doX5IiUUOtsN3epZb4Z?X%I5tb zUBW(Xwii;)YIPDvZ~OWS`LUJeH6LuJCFPGRo_}_qiqr*eKnW_Y;Ox0l5!|9KwCYfC z)a+T!#3`M*Q}rZb-&D#;!!NqTDsBC;=TuVo0+ltyaaiaKL4jo~Z-U|k5yr9!Tq)>= zD2pNj%>!tr{k4*Z;$#rwpj_*9uEc|ME>H+tS$P!pN``7B+vZ|b9CGK;L{7=fQN>t( zDd${0eWC1&y;MQi#U}(XF(!#MkwWmHMUZ;@zuq%8Tw&LQuw!zsRP$CRTW@H25U1>y zqS>Z1Z^{*%x`5D2Zx^g3JJHmZsx~=N@uA>P=+yN^;aSCVDPbX6;X#7%u?IiW003d- z5tHK8s5nkO3(zjap1xDe)cYc*>O6fnUt4N}_1)#)_89tjeP<2PcL=Thiir<;`flGp zy}q+DwlW%r(RbAVuP8tip7!DET|zA^^EB`V^qt$A(sxQLiP96xLFv2?=}UPLWwPtz ze4kUPP}H4ALx;6CE7pZlU-p^qgJkn6QQ|4Y3Q%0oP>>(uZzgHo>r;x$X+&I*gH<1{ zzemNbrPZDm2+$nr%IG9uNg1Mfqg8|DYQ&gUk;*go;BS$oXC7y*e;u(x@6# zAp9fB(dD1P`tasq^r1jlDH{%mR)R8R!fND0GMJDxKX*seA^=R8=P;lj<#P+z7lNx0K!=j@clvB zwlY^^L|z`w-6PAI(BZywlJ|@CSkl5)@{Bn+hIl1~+nzRtaFixowUHE}Ao%G5gkTJouyb7FXnZy76g3VmV|IiLO3ZqmDJfg%xcLTyZ+ z7^9e{v(c_KYV+_KZ?8a{utV_WVrl2s6_(U~8?j~BT>_ik>wNb|W1;M|R{9}jVq|7b zx6)+3M6ihfpyrBT z(^URc2AeGYoDpn_@n>YP=~Dhw1)DD8&!}KioIj(3O$q*t2{ujRj}dITTrWEGQu3Kn zV?~Q{x&okVHoQ}Ge*KF|53P!fX%D&qJ6OMm)NTP1K?qNgH}NmV7Hi^-7M1j4;=1h5 z$Hg|7BU8bYa?+^@;nh@WYy&N@YmJy&n6Pm>DYLCD*<6RQE&cgXim=GlFP?^>^mH8m zE&1Bt%ztnG;r|N%Wv&hj59&x8;Y8%1V#daSgwf2p{A4WGJLd;Ftk24ni+2ozlx-M{ zU{V0_<4e-z@9rM&ytWijD@%1Mq#M-r>DekpkVl6bMk70@duj#_UUxgxw@jvJ&>f8Y|?)?1gpMy9ut+pW?I>rR`&h z(94PRr;z_WiS)lW#6$ZeJBvK~m+7(ezrzE6v_iWR_8;P*J+bu1<|oo0!@;sE9_kVc zF>Ki>8E4#1$shqEo^F%nPb|d1r!ST`9I?;3w^XQbO_>DA z?=L9{2jZCt*3Y26rAOrsVmkU8MPO`6ud72;^Q7~8(3QS(zo+yyuf6i=v`3NuKvgT^ zt}&MalWHjYV`&z6rIXQXe|FqI!?+$g)2Pf$VNO1N4yH z-(>MNBfuV^+Fd8iG}l~XEq$eg!vc%WvH0K@#wEhgsSGv;g4d1hm2Dy9Y(SGXopCp9 z?BOmE;b-#Cv~m1%)p&kqrJ8A%Y{GjNevAeh4tJZA+EdME@{HS{IVqcJ9;a{W%t>of z&E!0iH#L*iJRs-xQ_W}T2i3vmv-MRV*eozuOXW=)>tqE4j$18K~IOQdvko}-$&_rTUY!Qtj zqQqD1ZGA{A*PxIYTJ|y6R{+C2mi9Pxx?0xb+N~CS3eEJ^|lhK4j1o0iF@X86?&2DY>QM^mbUuY342km331;@gmQ*2WUw%nOf?f(x+4sNI$Ak` z$vLs9nh0sm?C9Ne3E$Bp60`Rbsgv(Up1cJYn&@k62LDC5j!BVGbyHIQw*(_^3b2-K z+`8~-=}xNI-JqxbCXkVQHL&Pxt$$2=OSFDH+cV_ssrv3%mI=k}tA(rwqCm!`NNr8Z zCr%eUS+ZSJ`&DL)$QO}eOs*SNrs56rvO#!o@cHY-GTHZk$(!sicjPB~j+*RVSqk+~ zC_x|$J4u+>7MY_ZDiL=C^h7KS3uhsMpscqnMFxcV2pME^U9#f9Ag74=pio2Tun-2$ zW2gdq3u>TJ7?Lm>*A)}Qq>~fG7LOq6MUdF9%7RAhrdIqGC#`5m~jMR!#A=Z%{!1`iaI9@N?fnnnN!a2*=6($OaJy^;S?Hjl(LkM#A zAm3>u{~EouJ|-V`+tyc}ARiAA-%G#;Br#p>-v|)0pYXUO>v=nlPtTtq^f58F0s5E@ zeO#pIgSg@?nm$yuZmRW-RL!VXBlS0czvN$wh~?2}{W?u7fBcph@T?i=+3gW(neGwv zY>!%k9<|I7YB?`#E~{Qco58v3qg1}iRiQ&Y% zE8GUdVi#5dzhIFu$d$|W+?`0exSK}ea^&oTI`)^}HNt}bwnhPjVJ!a_=$DUwL#G~n zDDkmIkp&r4w=BfLCSrrNIAk#d0BSM@0$pB$nln*8V;0Z&(E;N2;$%x>|1IF38x`at z1_Wo!E|SNDQV`Peuslh=8a9@Fkt>ONO!l;!_t$V!@PEEI#ke^#xsEWJ{^XjlWJ?(J z5##Dk0wp5;I&SY6^?``}f&@`CsK-}?}6FY z*Iq(=1*xsJ;P4!#g{^SdP=U*ybi`&$1Bv@*TrbGFVVceiIQqHF&~AP+KCXk07X9t{fty#cfr; zxk%riR940Ej9+X zDrKCo;W0QTlgQcK(=z^vRz}X!_{d!Qys#lRk{dnw1Z4=Hnk0{PteM#Pnhi5t4Pry$ z!4&^pJe#9v{TzK&{P#i4fBuOtHo<-$jMxLPQ+(8Hc`OV$hOe^;gN>Rkyf(4$n7pzc z2aeGN^6wIj0}Jn#lmTJ*a7)|1OWIzpTsToqOeXga*quf40DhcE%#!e<>XHbvouek= zqi@`_a6jbK`1qoC7R?Wy^GUh(N%8Tsr=&(rQtub`k!DA*8m<5HiPTyJZiOLe7Pb_1 zhD?s&*l?|&yk46xdhPr#o=C5G>kq};$u-Bi51Pk1+xAzOZ9Nt3`+daQ;Z-t6c3B-} z4bxDP8p~?9j#X`Nkog2ZYtPm46^e;bfp7YqBt(kZJ4}KS&3aP1uU%B-Z3FOuS~Gdn zxA5I8?a)XKDYH^v1ykl3`l>Evj?`B*DYL4t5(p{<0<-O@MGs!W;esAQe3EbB1{G3<-K2;sr|*m4E0v5KQln^27yV43rxa3vo`S=&Oj?`>)ZWlKJ>zKg}>iEv9B))S2m7OKJT~-QLJmd zhjQXR`n`|))pRLwf6@Cw?fgj)_=k48gLka7CPwVej1|bWleTWd^^`)hD=~p_W2OUNjy-#| z@$eACLcex&bu5Gz$+Jl48>F@@vu8ajsLCF_AZB+i-LEm&3kJI`&-l-XS5ZYKivDFD z+hlUUJ$N^kFJqsN4kU6sViT__<3}Ek59ZnhQRVl6poS@_ndKmh#LR0K?w_|(VcNxy zpsigaNu%7IiiAu=6x4MZV=wRT{XN}y?5q68I%L0WnWAVYZ}$UvHOi7?xn2Y5Ag(&G z*Mjn}4bqSRFBTj%PII}aqunZtDyo6=((AI4)Iu0fWOWda+%Bho`EE%~N=P23&9^$A z<(4mu<4Yx~&Rur>OvC`oE#)iK>njO2n?pO!Czg5uey{+b3a23$&7!2`?eLG?G0VMTr<>#UX$&CdP=jp2gI|GKN@s zgtI2e_Q6}kWN?unTPIfLmI24|(`;kEvEu8}xeQllH3SXo+sT2zgfhq-PCqTMXl|9& z=KE!RyXuki^5RnP%`x$&LbIej;ruUX?pJ7**lvqsF)6{EIC9xy z(T78kPlQ9F6%(2H2yV$x+@$%JbdeuiAvmOZuc-g_qTbB)5)*Z0U}9;E@-x7QMkOeoxvnBiz|r!9Eh=` zj@h|b{ebmh_!;8L#NESlbd1^>0v0bOccezF=<*-dr3qSKoFWzY{&Vi*S$*EVOJ(8C7`^Z-YC^g!lgkp;uhgR$cC%C!L~__9C> zF%v=(*skilH<%DCfrmcC9Cs`j#)-(M+ z5GBZ;jyzIPwtR6bOrk%_w^wnWv%_Y#GdBP4x8Eq=;T?c` z#XVQVy+~fs899=J$bsJ?ek|Z0rhwC3=a7P5jfoLj=}L=C_AbhmH}5JDY)KVyIFuhb zTd4$KSP*{f-#vss_NzR?Q3WP6s?tB8W$F+2h}|Xr*jA+#nzooPdMzdzxdP`ij?xZN z$P4>VWTc{3YUWwS?d?{G^AOCnV5}y0w$N&g(CWl5v;l~gR};S=!dIaC!lxiuli2dl zEmmLgkY=oj%?pgH+qow)2+Tj|ifZtF`vP84^18*UYp0XNwE&}foU$P@xu#7)Voen7 zH}M)`ZCwb4>7LLB1xETab5=86V3TQu1vcEK=0kZ^#Z}h#XU`y!{QRc7CRlK*I~y|y zRw`e1zoZk|!zZczMCr{o?|&E8wsYae=W-9+r`q1^T(E@vL&-q~yU={4yBSjBwa4+O zmob}Jp%?)^zA-iyFalF*RJ#7ar9tk4+=saj^L{$_)489+{T%)-;O_z>@WnPdHO8jZ zpTM$}>Tap}6Zqo2`knk?gQmsLre1(xKe>oiTgiW)UD6WeYwFkun<;{uUefPtnNOTm)&0HA7`|f75Pu^NnLS!wigjgJ`hm>2? z9!a;;I)FLh^pm7l5%X^pF<&{K;I(@x9k=<^0ijD=3XLL2*RWqc+dUVKV;gdo&0!H( zI3RLY)+qY?G=-4Yx*i7lkI959065&L7ysQYiT^)!kPW4ur+^mEv++Mq{PbA9&qg%gFes z%{mBCfhyLUjHj5{!-B|g?n)$^Xp!6oE2QzHMif#AvL@R1O3U8(q#(5{BS2NjIU@o^ zM)QRaGMe6$T5a^cTD%%4>}TZZr?1tcpX|?1Og}wJB)&oVxsSHJ3N=Xv2YF}LO0Bd16|->!5~@_lBKU=pF9c&H?v zR#%oi9WC)yO+V_7=n79yD1zZE+@js=wkcB36r|}P7U~oZ66FE^g*A5xnJF5{u_>#& zfV3tG8QLyQ6%mkpQh1%Fp!W*}eL+*uE5#I~_sdr;Qba>SAP`d5djKrE0$#~uu|MF6 zqI`ubbOjYq^@0Rc-N(RVxM}U@oy(G>)Lbn}HrCM`WTlB=b5_f*&MUcpI@ivnS-uXG zZWf7YEI(IK5*s$L%vB9MXiCI^ zw>s9S2rm^)rp_WPVUAH5I!mLcec}IES6-EOMjiUB$NTI5pUeBve!cS8ElIMH17i#o zo)_Z?DtCr)=Q1V$)52`u=NEk`{t_MkC|Wa;!hth(X`6tOj{cHMq3?9`ey;A7hq$ih zrK1m7^_x@CN1Qkder=6C~Z+f#fL=WHW@ z2W-`CkIXY}XM5vj#S*35tnqHp{8D1mq|Q`=W23iILYMM!#BdVDZeNp%avE4a^mD#& z5=Cy$rlK4P)(^{zN^(|MKa@k1UdhM2hooE(2=-KZ4L`0*rJ_4&vXdBy=&s~}OJwML zgD~?2!ASC{3jFjw+$6qj&Zl^wj+L$!o8I2^?j7&myuAnL-x~RFmls{S-KqS-cX_R* zJ0Ikj=oh{A(H13_7N}#7nm^B8peEM5pV<xBAug zgOQP4(bV+OyrDh^@8qDUswGEdozzuC$*Ve5`8phzrCO>Pt4P%ud0ZV59;!NL99QQI zw@&48bx^3P4zuLK=JkV5QT0Q*Hi2zqSL&(}YM6|q92luU32&$xHvI6aj{mrRuvt|< zP}q=ua1E(Cr+XI1fA#i*BiE2lf+gsnZ@tQVs`wy@ zBvrmRXToP(!MvSGm3_=*)x3*kV)$RCd7E^F=}CeT~9IfMSvsRtD$J2m--{fa9XC|6M27bxS!;HvTqqL?dRX| zSbFS|s6Egyp2|DoK3tVuya~%c@lyW1W2Ud&Ez!fXnWg+oxh_?Xmp$>uoeRG&2*A3| zRW8J(x7$iSH6TuNeA!n0QEz=F`=6YsR~w+nn=r@6WeYUkFc5Ftv2dSdU(CS{MwV#o zT2vRWe?qFq>o+CpkqY9E#SuHIdQv5uFO}4$C9=)-!9kVowuYdkCZ7i7=Qnu*bomeR z##2yGYDzR7Ry6yOd$i7 zbxMUxBeKtf3a4;VrbMpmSg(&4mCwVi&Py1&T2K&uwNtg=%)GfMINDvM)rgb;8H*X8 zmqSI3PrD3jXxw@9Mt6j_vOFP=$;;#sxaC|c`xKjwADt~O6&jeWG>!PexQzwzV=jzX z_1!G$e)bawq1@BgfTn%w_a0z_i=<+EeytAn!Cb3Xn63nCUn%AHcwP)rs{;!2bZ zijW+BMZ5rU`zeBW{qgz(ZhV)trPQm{HpLafmzhSk-$m5x5mGTkRU8ah?Gp4O2u|nL}LB4{KET72YU>Qxj2BMJlVJz6KeT&G;?xf(F_5=ONH}cpzJGmzQ(FUd{=fB_c;NV{0Wd$T>g?kyexH@ zkGGTc+a|yJy4-y|B6S(N3a(eml@G*|O9V=dN+>34?XU>bJLb89EE-I}d{KH2 zfMXE74@5@=(SqQpPyI{V0W-9#s#Cl?JjFcODJ43&2H8m4N;9+-9MozBw4+ka5aCpm zAU0;bR$-bOjcRovxaPc*ylL{Q3ud8QUGQo|B=vb;B((@+uf=722&$dNGS$s9CLusd z9nwc#^4Nf}d>@0&G*>1!RFEg!^7V!`+TF=x6}NnfXzRy&SLLj^8%%ro(v@$DmBf76 zTo1!0Q88L1Du2AO=<9$Qm%gr+>sdpJ3SzvX>N?v4=0K1j0Sv|L?FC$PRGdCsfJ%JF zQ;)_obNsz;amgW``GhbEvo1dW1u#IQwltcVKcERhR4G8qla~w^b8eO^=A*{>8798zAE`w z=%#7_1*(Wfunbj0F#|#|&~2?FC#PYz8p2>}&CoV8v{NxFhtMeHMX7IqxWpEg<4 zg=FNfP>lQ)f=OMeXhpQXvEmA7C6Z5300KOUA+8u|*)9CED#5v??TmrTXsNNPRgL99 zb=80p!I}pK7@Qi80Ir7958N^w5i)EW06XKWb;6k545Ee{TpVzbaPH79NHH4Pz$fO( zgIPh(6}MaiIW`|y#WoTL;g>JH&m%{+M+o%gU(;@v;p8s^`jR2*_o;Cd(nFRq8VTf{ ztWI6YfcgKhNLjU&vVdH^MK$C^DD;OwwTTTyHio>?6oFM}vky?D~h_R-0C zABm&_k(5;$Ni8P2H0(1|<7>@S9Fj`4Ktsxe1hZ|RP)teBLADlu>WZ^tCAaeXG{1TL zKE`hvzbX70`JKUVbJekuzwqnl_cXt~{JQvU;uo1m+jnu z7ISHP31~J}brQ!?y);__@j&j`sdi+URW2v)qQ1yitY|3mMT@ItTumYKjEEOn=%g*0 zDwifW)?RJeGnWyc)^7S{ev!?yN}A0#Nhw-0L%iWN#X?tH90_ewFl`*Zo$PS!WRGvB zArd0n*53}# zP7^%mof169(@*tjf@l0`f+sK>JRWbIhz^J0uTiH7p333iDWbz-en)t;Yo3pW%8p01 zACRJHUo?H0UwH%~Hi8N9#QB5MC7%4JOFS{`(;}XjhSMURAdBPSIR)_qnVuGSV4LIN zDI$y4E1qEE(*h4-3j>mNvn2P0-tVgQ}ftguIBJlFnY85J8u*IBHGl_hW49c*^oe7N*ds);v@6mL%!3)5@3Nc{LNH_{3RjO zRJ|hSg0DkdE^G1@x5QMvDCdn{m2)wIA{BCc>;u-^&4bbp`$<1sL4t8(#Rp`Ya~s3> z`wnLpCiQ6<4%j-Ie3E?MPyE!x3XgA?)SV*FvPv|q$25^K$*uvuQfAFepQjw&bCipg zECr-wD-Ku``WW=V&FNsn**VK~RFwbpOL@O`Si%KeOeiEGBqBRC&1F%04H_q-z zim+X|DHj(G9(TE}u#ZynK%na72y2gvOna>?7cnOYYy6P-5h^38Yib)M4Dw>?f0(}? zk&~8}$jPxM72G$m461*c)q{LZT#ahr;YuYSOd=>L$0LnqJFETNA1Xn)P7h&B7IBRqnR3>OPDbty!{Q6#;~*S4sX5yOvM{Y zlp7AIT+78YY^JVad0S0#4c(uaYA%&FdD84xy|5~)RA(%29}!Jm2P-s}M^nueCh4Yi z_z0VVk=e|k{VnZhO0Ju(gAtEE->T+c?bo~h?7dg2sgKwnWlM{c?PC=bLSjRIHgEvx2e{gW@xSP+s;U64~!oPb*p-1RC;@e|0tgEuV4~Nyz;n* z*1kQ*nRFhATOtI3Z0_zgLz|ZFo5g>u^+IdXBM7QzPlK}QX20{9Hz9G<)`lBnek~6G zMg?lYXW4@jSVeuQ_ZGd&_b4TQ(tTW zyNfepZM?%Hh!YTxCuHicg^OBPYs;65g_+{D6?h3@qkhdXxN)?vhj)=$AC4zpscY^3 z8&KCH;2q|r>g9s-@CD?&=hG4I;Is6sw8CH);h^|i@ed|!oMZ_C%b;oT5^A@g0HOVZ z%JrpvBTVv6H@D1jw<1ONc-CDl}c#}F^I=Pe8)8Rbg_E7dqj@2=d0d+->X zz)e{G^T$0mVOz_4#7)?qcN1!-sOR#NA?a)F0hQ~#n@~Bb2YUxy2cz;7ikon!U}2_w zU1EzM11FTi2Pk&_vu+4VP8}7!&x)VJb(G4C>(fEl0c4dYfhwq6U+fjef5W)gzh!E0 zhCv+UV!ll#o=Imil|xU>yYlbJyt^(wyn496)TAqaU-66&AhvIC`1X4a=hzMC#X0!J zym`i5nyM0|j>qgU(~Scwb*1NVFH=0M9ef9?k;S-d#K-53NIZU*`DDK3^C8BH;`z>d ziM?sx4-r7c>=ZJlXsIIR+t}aUj&}GoZa+o${SuLpL0B@#XlN^rKXL#0_TY~eFZA{7j$XbaPhNL>G}i};_#BDE<=kQiQ2D5QEW%w=U zx0v5e{QiYsIb%C|VXWj3zd!MNlHcR}HuKB!E81Q?E4 zN6L4U?YqBN!uFCGx_g;&AgVWIyoqI?QE`i}GdH2pN0suZ3Ww}%2XU;(>;s`1O1YM$iLBxqGn@@Ntd zt$I>G6DR_~3RR#;p-OGPG_(AFB1+Vbg6lls5}<(1g-d_}Hi1W`5YW`r{QcpoDPXJi zl%SGX7#34PacWpDnY|Hg)fHpw!c&4v6Z{EaJ5{)Xp(mg$HHVY`flzsj>(P}kK@n}? z8Ys}##s5IK1dgGw72ui{hPKv51`$OcOZtj#bY(jg9}ill=Qq?-5i3AQ|+|NXge zdV#KH{?p7~^Xy`5U2{rs4VDghCG@w+(m4fe-Ec}!{as|k{9-P=>6G9aj4j1kuYoC# z`(#9(bYM}spjbi_u+?%(P`yEH4bspj)Q5|Uv9&~$A+Ys6qvAHEELQ6KQuWwg8xOU^ zrUjlXHY@&digH0Q!2d*uoL^AjLUcs}?SIqUnNy6de=9im?7N4#n{5M_=mxDa&xD-p@6M_h!OVs1TFhmtkGPP zXYybP@xN*E)D^IG;XltD))Zr__LSfnti-kQL=C=%B7Y6qsxDybyidV&t^wc?Xnt9(-I zllatwe)!`rpi^>*!cygnj`> zClmT7g6IVJDKZJ)AdX(Q|La5$N!KTU$`!0{5F*To?GO>91RaSPaUx^zG(t3lhJ@CO z=;(EOy-p)U0>TieiXg%;E#T;6hUw{msF?Fl$ZN0R?{eWNEUjg1$9cO>D;-TQ#?i@^ zI;R6iMOMs-XYF-+xlRPpAp9uC1B-u)gq%~1qZ|G)ymoTRe%-#U*M%dQi<9HWoh?D8 zr$IcgR-WIAc&+8{jHB1ZYr}iAzUO+hlmgZsE%yFS;LTrQxBh9Or==A}l>LDK8N8gp0=) zNnh!Yq~EMuMA|Xr25lV|Km5&io+N%)$L^}|EmF4-^7{{tAAaw%xtt0YRtc(Wxbvck zNsYPHF?fJcdphHXiAhr-#F5ac#}AVm=D2(ULBbcE_q`(@LEOf@L=Y1>{C5i*PSFQB z2Oh_XB*CL{VtTl6VIqVzRwYPSVk=)?gm4W-PZlBU<`LMtOXi5<<8Fko8~})<{>I2) z%Z&_fQ$vcok-?JvEi-%qf%3b5oDbbx{?UIxWN?i}DZ#DgG%)!5zm5-P_F5$pU*dyRn0MuC1qZA79yU0*);avRIxyp=03afm z&{@v?U+FK73nuKdSAu{^8c`G%Oi(Z<-&G`V{`kKH17BG*#RLP(IOO9mItE-$he$B6 z8i3?6AOXj1C2u4WSdFGQ5|~eI-&9-cT*ycy61WCJA`-av1d+he|IU-s_dRkty^+9j z#$?Xv4+owvDU>88IG8{6zjEVMv66@Q{gU5*^ZO3JukiZ>ni*WMCE0H&i) z5;SaP!WEHpblW%L>1z+jw?;Bn&bKBz;ET^C2DtqjJo2sKvlM*VqkfHM}Xm)+9mTgo9h8OOX>$JX%Dq-xdPrja8vY6(3sUaGaEuOe<2s zm#~i#FP=Z7(Ii3R`jtM3QT2SZ@u0EnulV>?>b7|L`?YN}{q8mK%-cWkgH^fYZFi75 zakH`f-w;DZ`OjxPNiM-hv^a>QTOWzmA56Edb=GcIsx6wiJQvy?^W`L;L-OT{TmC&Z zm!t`IEw7#=%09ibNxCU27HJ+cNF`-ZQy}9A1go(H-FJP`dTS^sFOk#Mg zW{!TIe&noN1}XvHm`hSKhy?M*I}cDbfBNg(9W4#)rUH*yxxqn@hH zH%ggm%5yU1%rPIw>+gNLH|J5i-?X3aJxk`?p5@Iq(|-gee~E)SORX&h@+eoKH}5&I{(es3SG!6V#kfP;>5fbl9G?%bj+Z5;lD@5=yL< zdArV<%L(MWmM`|EPVptjDm=cF6Bcd;8ZLD*nnbHyL_sI@4LrWWyy10*qJ$w5U5 zCr&>$Ux1QWx=s`Z-{t=JwQEu3johjy&W1BFgk??)d9{_%e%>`seUA2tJ12UuhQsEhJd;mnWz14W#R0PST%0U@fVcR*)(afjsmgLQU2?Hn92~E%%IYJ+mK-UMRBe>!)R+z zbdmwd3~gMxPoGQONat*;4qKAWOG*$jd$N6_mOjSa`Tb#R;H$A1?_Kt{EwMXr{?-ADkewESDDuNFXo%XJ!``hI2HlC<$ z$f;H1zif50#LPzQZEr6*zodjd=}P(pCcA^qdgL>L6_(8CZ#U80Svr~2@_S^5DO$B$ zg=g3uyfN4{P!9-4m|C@51w3F5DCl!JXgylh1)$kY=VmvapS4z41^l2 z(<;H+D3|8I8#MQvM{|8bbI(P<+p(cEXFoX%$(1@;%$BBX>&Dz0COAft zyv;Aj3xK@w5M7TZI@nebU5_F6Y7ugeS9J?i!mBp1V1jn(l(5vh6sOX#A&}ZM zH`K%$pE2%wmBb#ReQIRcSSPV|C?h^?sTYrU7SS5y&;7#U^GZ1R9!Ql+7EE;|e@s*q z59NqR?JJ`|9C;(RE7 z1gUO5l%H^k3b?#fFV48E;OAyV;fjr%c|vYeX`Z7G*{0 zS*O#8h@M{HW<|k7(pga?J&MxcEnJ8SFV2u6rSeK#@}h7ry7pwbQQnR4?A^xxwezGX`=%&$gM2$-I!JMT74ZBJeDhR)OE20Vw_E4nd5GJep3ib5 zo=)s0SBgrE^64Hdo@TLlt`eeXE>+1<&gLPJrzA!xHuIW=PO$AFsc0YSkX2^h)@#;h z&pRXOSz`J%Lno2cEC=6M;yG0bwXTw1MtjvoAQi;~5R;vC&trU_;h9wQSzLU}pAxdQ zKfRkw+O*RR9DF`H0t;^?AIe-!!1x)+@$tAbe~tLC=#Z#Rn^thtvgV)lm@EVa^`n;P z0<&5pM4wd`fbg8UsOIAhrz2txOD{^+-Y# z&fczxrbeix0BP}MY!G^LneIX|pXff&mDQYOua2gsRYXakVy3R*@OtwIofAcWCt>0^ zX6&_6qJ*!!>gv^!Ai~-H|JnN%_^68O|3DH5B(On2gQ7-_H5#hXiy8!Vm+XaIvO!c3 z{E3Pc5i6}x6O9TA?nblTtYQT#Emf+vK3iXik%uM(NRT&(fKPnk#DE4L7}T==@Au5T zo81r;Ew;b*_vgcA@6Me$b6#`i%$ZkrN5GE_u>~B;nSwVsa^Dv@?D=0I5yzq9gm(sG z{VsEpy7i9TyZ|xLJ4`tZ@{=4KaSZDWd9g=G zI1gG*QRW?P7*kYdgCpwnZXy>BAZ2{F$MIGD5XitGCuAQ~d>pPy#GnLcSWV;^Rugl| z<>K4`?k<~x46YC_L4X0b&y%OITZ9xa?ra3`_21-H19nB<6lhia*S$z zCW^uMAGG@2#kgqIp*G;efBUGcv2s)v4)5XZPQ0{Enw%S|C--?W1ihnrHW;R=yE>NP zu0qH3e-^MtUV`Zo#5S&w;>+TY`_rToEII|DO;vmR8D`ySr!SB&2yk3WAed9-goJhi~qJ2Ep$1Q$@JV|_+ zK?Aq#J8bsiijUitVQ9rjGQ-Pk5w6fM4Dw9tBhS`ClOIIq@hEzO2XRO8YMhk9!>liQSS7s=QJPO8{1-@WHrBzv z^+tx{En{eKonQL#d=}A%$vGt? z-eLd1sY9{+hWRif&kq(S@9-z@VC0#P2y#7)pMuaRA~eoH$Ol|_@>3RWRk0s4TOZTp z(JOy-*qOPc?}?@9Je3Ct{C{MZb+Nv+-e~01D5YA~6>%JEQ{xi+W-rbYSkPB);Wzrj z_hbu4rTHPh@%tmY&sMq)_Nfy6Hn(v!3^b7oU_J$>-IbHyt^F*k@}duLG;`(1kJ0a$ z6(6Eg$BXxIe2>R9qo(qrt^Qz5TII-3aHjW-DL8(*GiE(-z0$kB`ys`5eaUOoTL<@m zhdpu&`i~o!r!nheh%LzvoeFLTh)h&t!fLrhg%c<~Gb8qG3kG++bH|<^5 zn|rp^b@X|m=e4Ti+=+Nik7+s5_oCz&N+;?#6B1RNDe)Q(eg0^jVk(uqRiCZpP-a`h zp|;R@YdNsl3Y8Z1{(xE6DK-@7Jv4luw3|8vdE(Th;^%*ymK&2F^d~oajmsYvwZoxo zy`HQ@XJFM@RkuCjD4v*1%EdOB6j$q`V?A-oA&jgDR~uOoc*RU_4qX4vk;%B@%b}8Gw`|UT7S}| z_>97*7@r~d48-Roe13t?;4*(w0Y1m$b2vT+;**Nc*QNfXCVZZ{0kH774<8Gk3Vd$D z=W2Y$;p6!F{BAq`)R(@V+R^bqG6vWl2<}AW`J8kdaHy-#zD`_5C{=RVI0vNQqh7Vc zTipgH8{45K=Xb_)cYH8nvT#@^Z-k&Vz+3~T=XjfBK7V&aOr67093z;9Zi%zs1u`ye z2!zM+0#cmTsmB*y6v^gq8J*&~Q$&k#d{~hl)m8>_hC!itGfNH|yf??M$8dNWDkD5J z=@B^r{4B=z*{!41aXC1>6AFQ#kqlEWFSb_6Agb6}%yDYTW_zs#!E>=iJK!-M;c=Zs zx+2!02bFjNRx*I~=A0c}!Xrj~f`@%{r%wi|XT=XxZxCM+Y~U!vjVrh?TCFuJyNiZ$ zw93Jc9<6dru1Bjff|Zdf_|4wC5(20kh7l`At30d~LpAE=Z7Gm3^q0zs85e!+sD0*I ztA^uu$?DGX{JK}P{Nw1@%|FU&>oP0#wdH{|pdxt|hYqXX*w*?}n zRNRJMBKQsNYrYAhBbqKz1EBc@)aR#y;j8>d|AS7>xJ2TUicLLVzw`R21my7 zK;g+l6&|pm{JtsO$MgHHDF?~-?Nhpr=V@$rO*ufm=kmLDYZ@eh<_*J=5{UGvK-nZo zNrT51VB9wl>D!u`iBzAR4Q`$_;}PUf|C|cx1}w-(=dGZU@J^*bPA<~ZzxEh&ZYLsx zj5#N1gyx)}5u9TXF{B$r$XX?{HLN|{FUP?MUU8v?44^0w$C1eP)YPf$rDt`LdKcj}dhQ)lke2?cQFR-! z!UW_NCKy#c`P0D6u(8}&Wz~YN4Af0_1R_0cgfQ=P08u1TK06hN08dn`8N;8EZdHJ3 zRZS&GtAb4pT|j!pbmxIBPEuy!0n}t#^%!sCVBH0G2>3{9ks!6812G4V1M$;X(2>NO z)~sZHdyE!bjFZ9)#;!smbfRW*=yZOA&MqjzWdzwcu9xQo1Af?KxTc@S2=!n!Mjfu) ziJY?K*16HaR@DgvYSfaq7AJ+k^%PAue}NBJv5P*?s=AA1!LXBAHNNwOarh#t=wIBJ zDhBsP3lxZ%1DbjZT1oy+zg?G}p3mxN)w7K0qAyTffe1Y<0b!?U=%G_t3>fzlj6)~s zJVVra#I95=)jAqg1K_t3RfX`B zpih7WX4=0O>0=YJ!)B%3JmTrFTMF9ei7Sh#V_`S=MY9ZNj$eH4L0vyZfYA1P#6 z(~shB*u5i32$tm^$$W#X1xNEcY|et2$Yxe!4b?r%W2`eqKwDk~|1t`V1@ew>3OvTQ z0nEC&(UOeaww0Vbr_fr^SJ$}U7pwtAjwNJ=1P6pwizlhm7DIS4{L&Fv?P0Teu=Pkb z0g=bqaU9gfObmt1%t-2mlOQ5+Js0dqVr@7FcL>tJh7SA*Hgwif4RzG=TMSJB;7p#( zN%gF8G!cM@SaWh&Go!l&4mw1`2R0?Kd?4~mbu(;K%*Hy@iK30f1*=+%2U($H&E}9; zQQ#w1$f)-~SJ^`1l(p4RQg<9xwKX8l(mVYNmB@`6lC(fk6Ql-8J8Jgpn(AJGoi!`v>eDQ2c17f~ zfZPlhe+Vmr77RODiz0|Gh(e*y(7<~VLsTM71|pLdC%3YpgP`GEJeiPMCJ>d8D0w}8_-N6G=NE7exryLI+NJph<0p}z!JS2$tbW!zy~*C zr3Ny$oeesH5k?KJ6~F{`mKPF7pWj#ah;rJkRusnw*2I{XBIXYVx%4LvXjFn8Z1O_ju!iKeMPg<*Oi(3=U$bstjlrfJZUfrT#FYh2s$0n1l)*J!ks07y74Iq32 zU&7Z_29CC0O;dy@#9E2vd#zorxoc$XfV3JBtOw&;w3!TWQ~FJ>RaHO$gN>?JSS7xH zubBgX7*{8F0Wl2=dNg0L3<@qT+A9POkeJ8gz=Yj|k2P?(#;DjXEY4b34z;1Zjif$@ zN2shQ6jbwQ!bhXfb|7-ty?kwi<_kHsG6Dj2_iF0q6FF#OkjRBiTx$?Ilu0x~St#{K zP5n}|tVM&Y>6V5)J;>4!$-OLQOt+!n8&yLRDPfb1$kMq&L0w5GkFTMBeOO9R!tby- zoSe%xs7}KIQIJ83O)Yd>AfN&t&0&^RCFBCs zSg)}_IN>!W<)nFyUEz`A!o?H3#y6(XVj>3On!6D<0|2BBqM-taEBOYrUfkCJvjDvD zhRs{QQrFLoQplO;gll- zRI?OrXz*H_LG4;=Eui-FVmaO?nNaO1ggq>h@&bEj5S9ts$v_O8Mx%CUB;zkk2NyG; zXd?i0ur)_|G+=K^{jiTBy3vrb^m$=(3{+nAy2q{dLRIZqQOWX0|sK$Ruv*BfSk_aa8YW@=0@?l9GK^Vu2Q;ePG^DQ zV(w7vPQk#Of|7qAJ5Xd&p;7e&D~8G+z;FE41`}<2wN(pNp}~1AUh`Tb{bL#`pmaR7 z+i^PtDg^3x5)U{vPY7O=0wBTk{*JW(5iwk0b2^U5HyY@<1KJLOy9-ZSG~6Lp)pLR% zqBhh#=qx60Fp2OPj(gWtK*biLnt22ZL?5!Nkx>HVjH98J;X(^y4d_6!#j!=3_yA9d zHV~_Xq>C70RQ-W?n+5=apZI=`0AZ01WI8PoGzWGa-?{Aq^l_4a(3Mh9b~8nHIfKJ*ldQi0hpc$3OKrOyA~V`h(rTm_q2U8ze7^K zmPZPe%(NbnfQ5h)-D|<)1G;<`9#0k-U_c3#$V3UaGndDP*?2EQ!LW&Dq)QcAvtE`q zZqjVLEJT^W8W{zAU%Y#LX!g8 z3$Qj)iVZPl%^qjaf2kz_{f&zQ-1IuYr4hOk*>e3t}fdMatA1AL0g& zT`irXHS1(nLW_%vAeRdMG_9u=5=D$RBuoVppj89w>>Y`~IfZm&FirhJM@u59H~?VH zk!S!qVK?f*dpH?$o+C)eZMki;kqq9m7%9gTWQk=4;6q4f1bw|zqcB~Jx+k1$nWGJJ z3`P=}L6sTYa)c+0+mRU&2^XeW=2*iVXP6W4dN@8KVp%ef1viEjQVCgjEI#A#Va|!M zTs`r&1i7;CU5Yp5_)Id)DTWz}<>_OYmB^BfEE$GbWth_pbGl*PAIp$qnX`}~*D_}t z<|Bsrm|;F;n9s!C_qEJ9c%N^X)rPsiFl!8Rv0*mE-uJW26?k7@nQKhrbHjYiFgF?I zTZXv>S-b{<@}QdE*~o3VVKG=w;5(LN}1v7N;Rvn zMeIvt#IC{?!~D)LlMFM(Fw}Qw-vG-#vxWwVYu|NU`IeLu6;9$PTSQ5)H&NAJ|Faa4-jC#ZL8m13Qe(PqR z-}=D09qghyC*J?s$1+0zP49u5O|ga+x75GkntKi}#P(oO2KS`Ak6m3JtVQ7l6+GeM zHh!gI$44hbAd!)mw~dh5qeAF@`EZ5$G!iWpvC+QhX6#2i&Zcg{!w*bJ4qcI0aVwKFC9#^)aTtFe&Tlh_BWw zv|LzghC~#-u@gCi9r)Pt$pvS*WQFhsod-djFh{X81x%mf-Hpysxzn1(3Y=luarZ<4Y*?5gP&DWWu0ncDI@7Chg^Vl!0*BKtz zh2eKbNv(SBpT}qjo4fP~LN;DudKS#Y%1Ug!BA4ZXY}UK8z-Qd1g{y_I^$IsE`GTKe zQ}r-Rb^voy;M}Ip^;EfXvDSM?-OKj*ZX8W(GABon|PE?J84qI25*;{{lm>x&HeCJ-5$(s-n; z4uQy}Y$%XA15+h1vn9MuIxpt;$b?^ok;GHI4xYd3C|vc9%z(Hx}##@eTzH$@M_$xVGd zmu{H2n+v+)4{n35oC{s?;@U{9EMS16F<4&G;tFj7-1&wv7;P-QVs6xb*%GQ_zN3!V+o*RQW3rn~gZFXCqrDLltwg_<3%N+T&ZC)- zjHp!Qc_0}7cXCy0E@N&bzQ|xK48yvJ*D)x@HC(dAXSMcWHgcfstFOmpp@_k7@6Wq* zmA#dH&h%Dd{gdPJGtU)Eoc-IN8R35%N(rp`B$`h9I>ekojE3BXc4TNO_NrtPXfgtNd`c&AZ zlF6wTmPWojJOUsuz3~`>ChP?abH%`nbHEU|4TcZ_MoxP=cdRFQ{dz2fUlemh8Ru({ zDj)+zZD^%R0P@JFL8J3N+MHqb$6Ps(hG75pGw1mVzQ4edwyQ}78A%im{-Y07dFDeLP{ zX1uX)n#d`wy=Y=gV%a}P8F<>q0pw8FN|{J3>&Hoqd${5x*3+SD-zCP0;=NF2ODt_) z=#m*XifT`~gh2<0z~b8%7M;L&AcTfd6s!jVnbKrUV~ym3RnfYaw+_;;wW@S`O~w_f zIL+N_;J7E8ZSD;p>(@Zi;LsRFqTZc6?W3X+~yvD(Z-57&@m`zquPlwria>**> zv1PTi(JJceSmKzy z7Zqxcs$3p7mbYjxI>ZthhE>$hVNQEgy7SduOZOqJhn=?`6uMjjxm2Y;KJO1o+a91;p)ay&l_w zG2|$bfrh;SiW^$>2m=qehvOy9-D zxc$+?aCpjLmN(~gF8{_l;W0S_xU_g6%AbMnGu@Swa?Zj)I`ppKJrTpMyshZ1Icd6{ z~Fmk17#f*`N!8Bl(IrxiwWpBX9MleYt;i7g59BfwKM_4`&D_ zcsLV#TY-k)bC$hmxZvdO*xibi@JsdX*6pr}n;|X^1@pPR6%*ri9&A@dot{eYjP+q5 za0kLf%HR~K1*5>U+Rvclw{$WqFGf=soN87M?yUE=26EgC?u}q0|DnyTPy>5BH_={n zYi}amy55$*oDsl1t=3CQ#J$;PJ%4UmHue#uDNjbRh1W!Pf!UQ3n00!DElsM+7J()f=A5>QF0bam^iiF!CJ) zwPOHjP%r19r#ytM#X8fWcz1~NuDA1$WoK&8nT|lF!<~1BIS+m8Oe>HH6soH)*&OxN z2e;rS|6yxzAIx#}9*fkl;Dld!m&&hZyw`jn^{oxIjl5`{?elf?ZrHx-Y{@;l1rV@2 zJ7E1;OYRe{{jb1J zC;FN{`BQ)1J59aSY-Ggxs>6NZJGLNOlNpG-#8N)%i{Mt5FYg^+@Y~F5dubrpY3xG_ zvk1YL+(az8b3e4T!EdcrBMB<}BEgViHzn_*R60e41Zv;?tZQgfRDrPpjXhNf>ND#H3rT?;h<> z^ABW8NO{>Gd425)|mX9Us@ z_PCy|H4)C{>i=apng@sL<~1~}Ly+AQnJNHW{#s8s$tq0ydXwwL8c*1rVil%1&j^p5 zm*G@8G_lfuu10r8aCchikyat%iLf6Yz7c>MqQ7)(aUMCpI(e9WoCV)HRI zjynE#%*V`l8gnlAOvdMWe1473#rT|yPZ2)7L9Pp*RD6=~+4(H?jN-EepEvNa{Xs-E zWj==Z!<`jRVD8;lc%)ra!3-DCudT}Yi#FcH3vIv863Z7+OHS?Ck)xa>u zzyjD8H(4I6^F}RC*Rd4VtguGRpP|MY{Ll|gUAUGfug1))v#!YmFauN4?|71HkQEhf zGO@J~$kw6gn^IyEe%KYh;mv!;o3{yZS<}F(wR(^Bt!cbre2dbQ9&VseR%Kgt&a>Pxki%eUMFp9QV`#A#R`$2WCK= zHgWONPmm*}4huBNa!oq!ke_u!kZbA zqHAD6P&B5T@ltQUL=Z zDOeM;H9xUA&U}P$_OOZVx5$~#NTr*SUwX_gl{}T3diPzr+!Xv%TIaKjN&Yhp)N9S; z_GE2g(c`r-lY1IGbXh1NPu@BiQth_Wy0-`^VMD zD5~A~e#M(N9^$D_$-#(B&fQE53;zqE|K%9wp1rr||0D)s%T+Fdun3oz+p+!5;#{;B z{hws#*jw};b$#E7mir<4zc1umuyg;Bv!A2?D-b`Ev-IRhGkuWdCkyRCcxuhg6XRn4 zI^fSJzda3ri6gG5#6qU`Wf}l6Y=-!uV%^*)`pv{E9tS^7=2?0-KM!%nPLO}DF8_s27U;wQ{aPe?wiEr#=I~|p@#}m$cfD>O9 z{a}0xdjhV!1h>7r=H7_F9Cv+Pli{}%*25yY_CD6aV!d9uy`bMJM1qbNR*4 z7gsl0tMSy`G<@YOfuRc4G*7|{q`H{GJO&noqU)k_Dl2hnFzLeWo!H1QBPoNk39}+e zX$&@eq7SmWRSf3V_|5VlXMyYrXC@MwZy;F%@=l z9y-edIv^9?v|(bw8-_GLoe4N5ev!vo=P&`Cj!j3EO-EH69gDDc#-<}cCT#xcOfZdR z(3|EZ9UDRD1WnGwJ!ML^0;_$KDacvJ0-!3MBy9NjdC7r1NRH90#Wq$`Gw#1cIHNT= zWA+qIOkMV+!Tq~*t&MPoYih8vWxuwZn4a#Vs;!T=7dl=cc8I1#>_yCQC7O@6Eyt(H z3H)~m$E~UH?q}h|^mHGE^HXhmTj3OFat8i~3P;;Cv>$EO@-;R6{!4_DtI6s6A1a(S zW-VJ&gTV#|D7CIRuV_hjCqv?d1J0>2oqQH9h}Bh2ywt z2K;h*Yw*VCd}jQ2v>Z&LlbV!&pKuuB$%Q}7B?=fMbM7MM3t*HX9xb-+q79Ih!~y|q>XQuiZa$`V zlAV5hN{hYj!c{uhJPRwq7hMS$3(2pq{GS_6ra7a?y$vTb{(Ws=zYZrId%LHB+I#PzdksVkT0;c?ONNt9U-(}l9LH1H zQ#dha<3DIP>3EU*SvWC0-NzBj{u)j?KK_4)aGdeieilwlPxnzc`)fGqjE?_9h0|s@ z=|nF6ON29AyOAUQLxt03I5}EVGv>cUIAb+A<3u?B@x#dpni}j}`;Q#!w;fKFXmU#b zJ6cY;re@N=PdNW~hm%-8J|ZU*bJje^M^9SkViH%K@}NvwWAYG7`>*VP*~!kFqQq^W zz43iP3Z^M}P~J6NFze=;dui9&_tV0moGB>kNq-$bJn66DULQQ9zm45!X>!L87OA70 z2QziJf9T3i*p`MY<%p1ualGx+2()9ZQGY$mYE@J8+&a(lz2EN><^U}H{+7tpM= z^z?9S=E;NlB$>E^`zd{9%iJrw;oPJ&4ECpSD$|?35%^}{)UU3{$77PPbn!D!?MIjh z-R=z!%mLarcIR(1-A-1R-^3{1%)=os4W6l=NaZ|P5sT~Lz~G?VJ6k75aUv^LR7e_z zKVBo{Ha#(@-B6r$g$)v^cYAovYJ-E5OtRthvtBnKJrNw@DS&Q6!ci(EX4r!RcTZ0qu_$@Y6e`-doNX9)_?eamIH@N{@ z?K1!%HgD@S-bG}gL_#Ib^ewjo_Hi%-Zg0BV;?^#yWK`ILQ}j}wKmmcsxlnsLF%F)! z2Ry9jSx>~LF50^F?F1GABBXxzA-#{f!`$0+Gma>@PXug)?uru!_;;7hzuUoQkq&T- zAqLQyHgattSkr9{;-vQ?*Q@cMaGZXXR%`1YAkSC>I6cF<05@UbWEiSOnBDY+^!ju>4;7Vx)O-PMiZmD`^~8 z!0G9_-aJGhHG@#?72_)VKx4tDFA&=?z5NC;uZ1jW{G+puzs{>>*S>8!dfORBHETgJy2a*Fq7sgz{$yb;`w94=jLl91O5~gQRHMgI?=h6zprg zgVx9v=`r3ljkmm5dz^8f9IXFY?P@oq>jj=81hmG($w453;-f5|$7qgc!HH zpw^7sebUi|9|C6pC57@{tO(Xkv|+so1A-OH?EwPf=mj)Z4hS^Q)o(30)N2T&1dIp? z=R=^ncA*iiUk$z;=&!?t6V|{!N#Bbap%plgDD4CqHEP~G_6PQ&5McJeOE;b-m_b9Z z#C#=TV6SfimUaV#*nV$|`)*s@kkQ=~F4z8X!C5V|esNXCJrKg%186R7El#;3o`tN# z?LgDAcL36EI6$GkcX+LVIcD-|mhb{AFRm|w%l4Y4B5zzyACNE*78_#rOx;%5yZ2Es zY1>#k{77U5Im_H;@=6;?hbOj}655&>9*jlY?aCXcF@JG7DHR*#00HXg#afvN009vE zJF-s`9Nz(Ytk)=4&@CO8F1*;$+{Gx20iG@_c`!Zi#T8++GIqPx4S#X5wKX0HXG|dO zKHj|DfH4BC#ATd})$4Pl>3gQue=zfpH=wmL6^y_Fs$3zZ{k2K$h5o_DyAB&au2NQ# zIu^?gW47OJFt}?E5LN;S1A%^g@pum6piif)W?_8$h2EXMq9If8*odZ&ZK507z~Zcc zC`UcDX)Is})7wR-KA|l0kMrie4hFIk8&xgeyl(+>>Sx#8f6tLf_+A8=M>^wuV$=i& zmY@QWYZ*%`hGAQaT@VhE!0V&@qYKTw7#JKk#)WC^u^kO6fIDuc*0OvY$GE8j@{^eq z)QdSBu%Kk`EOYbRf_;!+se{Iz5_E`>idkJbOa|JfBQ^R&dnbfOqg8QOd=i!t<~lPz zm$X?+$Q6b9ezE)R75ALGX}YjP<3}IKgZzZ&dx&@IeN6KJ=^0+cOJT>Z$h^2C?XFod9ZMn z^YBT=Mx5Ko1DCS~<7VlCniFu+uw#BPn886Qq5e$7=?P317pYA;dJQhde4m-C1VZ{+ z*D~xp_VW6H<%gqO!$DqS6TiFT8{LejgV*4t<6W@FS&o3g{(I*sS)TA7huILvbIW-; z=lU3ux{6jL--|~Qr#(AJCZ@A%gGZ%NpDtK>)8Qq1ux%O}nwK5Ur3MWL(c#5+cbuI6 zs#IQzGwzKY#_K;b2CQ4-5sv}u-i4DEjB`uc!+;B<9X`Yf>PPYb)oR+ogx1Q1GsdgL zU^6y&n8r{;x=_j&*?T zr6X<&%m&g1rA?Z0gi(JY&v0zk{^J>9(|hGv0-3b&kZ3zRYoE*(oFM_84R?5^-3XiG z@xma`MAg_6C7Wk~pUgAg{^Xf=PXuFnmcX;`ZvlHkv3Z8m-u8pi+B`$dd3TXpXKZ|Nh|!Z1hibd9WIL|GCx-9JcZOV=m86=p>!4 zF*Y1QkE`9p1efP0cHi&?ej?AXy_h{u_>9Z1WR&h7Dl*k7vH0nP(WOw$nC$tkT-9^>Bx0 zKYBPaVt?{%^v}$*G41l~$11JOv#~Lr#W(J~3&5d`!3;ed8K-&o&kaW=IB@YTkm5p8 z3HI#Al4-ZiiTj6VG8`#M@UZ^1!x6?(|INdZ@}Jp%`oU3v4(Cq#|KpK;8jtMlya}vI zI;O|TT(ENzCQd)=%cmF7lIM!^zMJO70e85WuLVmTy#_9jYVhIW56rk^9EWGzSc3ah8O=u& zKjV0u&MJvOJ~5FIcb%!{ab6tOieqc7UA4=))UH0z*k$bY7`t#HIji~3YoNNN|6DbI z1$0_#+RU1kABb?m+a6BN)JY}WRrb#lgERbqHa2Eq)lz+7c;K<1tuQ?1*c8->!{9NC zbRZ0eX}p80H%+5%2wtV_k9viPrnMH;cxqoo9XL!67e&HxUpFK?;#geTje9;3HHe#j zO38JmTXj~aB6?Ufslz&i{m0aMonS3^w`Y8u=iM;i{5SK34M|Z!xN9~IRvR$ zew>3I81SB}>JQ)PqpNbOd5)#*sFW>=vI)_dijIXnob$nZmgyN>YqQ$i*b+6C`NBn* z1Gc6R20+VYk(lsJ+^?9;ySTGj*P7;Ya(P*)fHH7^7B+PH%dO9>uW_#%uF}8>IO^MF zU*m;_8@{<*eY@87lG3ZxeOvfrO|i8qz}=gxRO-9i0k`y=04KzYt(88Y&ML#tPa$w? zIgWke(W1sqb;u_zxFVqiSRC!Mipo{jR)S4qXCQoCx#~=souaE$%SP6=QjOh2Qdg@@ z4PWEpZPd$aDX_L?0_9f@DdaoiYYkgD@*8oTBR{fS%>W38%k_ojz%fbPBh@U&0sF+6 z|3t8jSE`oQB?b<>ltg%DJMfNNPqg=hcR@Tn(HHwZf@iL6#qk?K^V9l0(R_6s!ETI4 z6ITOx0Tcol;S1hco>Y2->Pdufkt^kOmd_f63;i0Di{OxOn9sU<3hBdoiWAk$4FDJx zqVclqaFI$Wv)Y_7YRKw*a^n(N1Dda!j{N2#hq!;>k0|+v*9a}R`m~sL2>4O|8^smN z%1%=^)rsbPfxdWN1CfYyTa9OR+hVPGS0hbp-WupA>V{k|tShz_`LWR%?BvfzbH&$M zCVIWc^|9J;a4lj#VAJM^%?QRTb3vtu+BGpU(D!tM4oa7qDU^ zW)9-cA9s$nI^Q!&lf0wEZr6TmbFsAr&IK=mwZ8WCzp>mE+A92hlMOd44flY})aDkS zwFz8zg_iO?$U`d`uExu|e&gJUt*K~udmv11Bec??VwYrRE%S7|U5*&(5S|)B_(Cc}Y zUM;NhTQ#`vF<^NhuNuhf5{*d#F>#?1U^3@;U~+|xNvmqS0LhAK@=@1!e*5)(RwI-v)G_Z6U7wfreGNQl1Y7Gf+pX^in67r~+xlC(B`@+>_e>#A zaRI}r>Q-If{j86-TY|pVjzfKS>`~taP#mMLL5*L#om~#}WJWC(DT7u=Be6v3@nie6 z-e}?2r*RGjn^og$Y~O`$wM9RSRU7$W6}gc*fi~b^U-0I!Nu`;z4e7DAePNxtMQlyc zSXHJUCa8&c5X9^r&#CXr-`EthOLMDZR!I$GRUiE@K^=$(qo%%aj2s<_%dk=TaNKDP zVq%>qco}aGXFD*_kO1~vw}AeiH2}>PL%oD$gN^|~uakPWPDP(kG(nx9Q%fgXXQRLN zSwjNh!hkgd^$xd&j0hKwu!fB0z1l;@gbT++JTR0+V`m26KP!1n?KhoN()&_V=~))A z1-M|%S*#RaU)U&;uVx(8DJiH@9{&fpTRK=B^s*@S5mdAiW{Pwh zK*c`%6|LAor0FI-5h@AP&`hx+Z47VBnV93IOfE*lDjFMzko4D8Sz0GtH&ePnb7E`) zCpOa=z{_gkMAKx=30-o78lX%5u{|C>s7ty+Hvw&7-``ML*w=WaBqd_x=m+nA0Ml@- zhuw2tf0Z!Jc++p~z-fX$c(A;zW?g9ypLGt@ra|RU4}qlNtJuy|s?AE(-A+A}SIRII zY6E{`rOum*t5UFdS9f`247lUmC*-t0ZC`f&+7=pAe;(Ru6!&H8Hfqb4H;~9xJGPXU z=mG|=@3ib?qu` z+&__T2tps_0d7vh^*YcH&&6Outo>i)imb!uuRuM#2nC;k`toH1U z$iphiQmNW(WUKEWi+Fn@_CfB~v_*fjuGok|^x|XGl(P3Py^a;4FIUH}(9#^v1l%U| zKjM}ZWl^oW+wc0}T^8P*iFfKH`a@PxHaZryeYq}-`=N@mk>N08c!gRKzByNWpx_nG zHz7YRsZ$Tk6L}pBi##t^8~D0kKwf{HujSRTLx$b%zJz4Ot77Ae0cbmZaP<4W3Bp}C z7JhmRpBvj%-O^9l-JhzC*LA*$dgl3booBPolkGZx9c$}TP^VGTNDHZ6lP+MG5ZTfo zo`9j=eM!)tMo`5XR0=_Tj4Ie4c8H;Wihybw;=`q5@MzA@q+ee1s%F-S2F@g2t#+Ux z_;4sa--FxB)olB{i|?1KwRpdfytI~R|FXRnMtNt;rajrRM`vp+@ef^L>)SV`@u9eE z<8nq9Tf2(kEn$rImnEMkrNiEwf?_tVmFjRioyN&$B?qh}tPvIrmw{y12QT^I^oQs=;m zp`wZ&cug+VLY?`$1AYTJ42FrdW&`nSMeQ4a5n7SFQu*y_J`~^}sy&43@zSAVwK~Wy z@~ouB$cRQ$g}OgTay@wL2mD4mHRQlwSqz2{FJ4nfyjt)E&0#zS??_^q7o<$-2vA_B zJgid&`LLz#e&olXo@0GS%3o^pbF^mxs84D_8`s$YUsX3y1EfRoy3F_3r5@A3))B}V zt^SB7-u^fn#XQzx-ZQV8)T|s1i(p8{>aoHl>|R#r@!frwNo(hE(b>i5zP5e~e?i7& zd-Mla>8$XY&>O%DP=648EW3y%UUfsefKeFkvpNT?$~CBveZ`3~gu>_&7tE~%V~${6 zpLJd)0>!pza!hoiwL3M5Hk;mEtKpX4w%_Mu6&JzHt;Vq-;;LWScD#jmv{^emufWTJ zY2B&5)F!EihG7qwupt7@N2dU~^pb$}7{%tZrckG86w1B*%W_?zPW)LBE$gXfFC%L~ zw~qX5XLgv+v7jpu9+xvgxt3E3tJTJO`3_iH)CzgjL(qp%AYctf{sxRIGu7;WX!W{N z(u=_jV6$HQ7|7HU-2hfy6R=FMiX(GXBKb=%#?Z6fye5E8u=9F#-ji88V6B$$)T-!+ zoN~ZCteAQsAP>{o(h2^Y`t1xHk$~5iY=e1UrG_mf#UPFRAIqb-OBfi6XJ4y-%`hA# zF&yM5@1-IMx(yhk<8L!|PXw&@=2IYQ{41Y=QD{vofX)GG6n<9JxLwoht@_5k;I}d* zrL?Q=L3$&})Bl#-QiFd^V1MYhhGnV;Yen1OSe~DSge-NJB$TF#3jtVLfC?N^$nHbP zAwc5jtGPl;_yR2sz04Fms*w;aZO36C7~i^=$!z^mppsjExYbVZ2VDu>J~Z;U9sm^4 zLCjX(1th7|N9zv@4im9dUTCV-G5Ym!G28uGjgSIANT6*{bx5$@1qkgW6FK){N@caG z#y6WdF}Lahkuf>L{nmx(g|0#$@wj&o zt717>@#;e9Un*Y453To)3F$GtXZONjBN{pM9ydU$gT?x+R__8aCZfN6O>mTO=Klns z?{vUFG)Nb z>gw@ztaO!n2;b~SN3#qQ4 z>N##aF8`zXrxJBSH{!Q?z5^Vh(`fNPN3Jhg=Ns_uweQ7HfH9lsjBnx`eB2rNUJMsL zIPtv{UAKb)@Nudu27kjE6!H+i=;8Y8lv}}mWAYEa2;lFWVZC? z7=14HMAxxQiIho30<0o5Y;Yz`t8}AIKkN$8;cy)>Mav8L+)zh+&c>3lcJZk`SmU!< z6OI&E+G&~t-#5r@wfDMP12sTn>lG(q9wO_q-qK4NulnGT!j5xlL!NbN|*HowuECW>+z~)e+M^nyYV;w?WTYYibQ$7e&`4@_o z`m7GnmtxC@rjK4>5U7IQNHCL8C~d7Ax?G{EI0+Af{D*)_c;_@}t(mUSnF4g8Y`&hK z)yh{Hw^5n+T5~C0D#xKT`cAwU1tlAntvc=0e9siH=cCq@qKg!CE7Z?LS{x}ri~#;B zfVahdl@>U%6r;yNC7>3SBx3)#Wa4X-huH7_i6E*wwQs2EkH*SFD#VToXIkubW& z_AoCU$Ttqw(50dY2?&*9R5KXw$&9lz)vhn$ku5`GV{Ft3Kf5V0m>KB?^ew>o3|P3& z8-;UUMrpV5tP5;`Z?5-Zr>Iaf6pa+4NCly*cVA{Z#|BavP0-;)=XKE~7dF0*KFE*u ztQP7V*P@f4t-tFz={JrI*tz~wmof(^jTl|zA5VldMBS*&4d!9nH(bP)N1=GzdXWy5vj;_@nL(@X}rmwffd2Ci2 zbkW?+{%7kDPHXbhkoLZ9HW6@vv3lc;o}#^gGAFz`H^ zd5WpmiFr~a&!|ipKdw?If1#CXyVIUtx52klbeYqfVBBKur49JMAWyMnLi;i1U!~T6 zuEF0GE9$sB=+A**Yg?V@ z>(P7JH{~}RAHg4E+U2j`*{^S%V zuP6#MoJ3KSPS#vp#qqy-Vh0&jdL=|G^SkX)Q(6>b0lJ@ZUE(yfM%x!UNW8_;W7s~8 zb@fBUBT`#l(cK#2XdCdzHU}z_=sKp(+ZIKHVgfy*e0@R)J7{foTN{k_hXng9j;pHO zD6h&#N;AeV%5UwGfgi?JoBhFE9b9*uD{}E?ssrb`>(2?+n@(wQ9N zL(828py+xzGJCqqtM!XH!XXYRm8-68e!uSk^q)V}tq{1xN zQL0_8GGGey01fj&SN~NS-u(xn;Z^B|H~j!Kyc-^E+x(Y2CZRjtEk>7ite~fF<`G5Q z$W#hf9g5l@zM@v7fS-*N@Y8;-;I(6pNU2*egvS0(M#Xe#*5jj*N0#^~rMVAoj$)P)EmVLL3gKh$G!jrvzUB zZp2|6Ky^~jKi&_;71*TAM7qI4u0Fw6>7k{;I}EI zXYmf~&^-K7XX)B9S=+I?wiTp!h+W%wWYV?G01ptfTnH13`HoXnsxJ9Da?i`tC4a|~ z-S#MXp)MI@$v4XeQ`u2|$-_eDeJp>HE`Kh|uLNAu*;@0Vx_lwZtEZvtjs3;UV`Ajb z)!U=Nn$DO)>zur(wj~)<;tVy$mVEa^y40EiUnC>R=Q7v&qKkY3zCpzSUGZV8_)J~# z=1f#PVvmX+0x2N*Rc6AuE3*j~E&5=ebr%Cm>iueagw5zk=>~R{@DDIT!~j@*^^%MX z)xx>*&EE1kJUXjtMhVa=u?z@KII*s1t$OS4GBR|9`bn1aF~VJ;j$J@oQ{GSA^^mab z5@0;<9A=1gJCxYp2dWa;_95tLYzCg-O4*@a4)J9~x>#a%tJH|_7tzMWq{%i=(v@H= z?u*tq=p;9&Vh0^PIZAX^sr$v!m7k=de-?DsK;h?&(dbm+S#{n6osmGNX&f}K>R;$i)bl~7t zd^1ihK?(K(5Rh&pv>C(EfStzE+I|t=Nn?kJHpBolkN0a`Z{>VmVylo(M@#JwAy zJ?@=D_we{G4DnnQk3l;uo@T^vVA&CwB5HPc`l3**(6o;>Iva|q<>mCFf<6A)BvX(f$?`MN-ZR zxJ>1bECK>g81TpJ!4Jn*( z2qN=apT+DJLF6_12Yhz@LF#Y1_{A*#6^b_w0WV~Vd1xfVK;#A3%pU{&OMaVp5aJt8 zz+z}D2E1K*kovU-aVSA>DxoojAVA%YXT%n%D?z2-TGG^Cou#ujrz0ybM1>Nrz_S_x z&duZa1#GhIKX}HL^-GjBY8ZlpCActOhv2UBIbpbq5O0z&bzFPm`IwBwp#yXSq&g%Z z&4)HsJ4PSUbmn_FM21RjrjdoCrx!I%rYgaZ=i5F`hV=87FsyYU4!K^;mReGQRetuk z#e)5vBOa4$Mh$uc)}SW93=sKzAdhdvMAb3QW3xI$KXRtbg-6Fk_kst2u!LKJ$s0MR zanE8dc5;QjmF5Q*d3B)w>}+tj%#cW5qF=v3=PE`nI@01z(HYX?f~FG)TSj@S)TTum z@I!2%h#%R|bQ#R2*Xq~oLcRSjD=9_Xn`HrQm6}+iUyhHJMH>MotJDGZ8xF4sReUOx zS*ddCK94p{fIp6$05uj^A?!p-7!F2az{9)JkX90kvW>}Cy@>Z&18^9fSqqh9arec)E~Zz z&i^e`zISXCi@%A6_n_!W{cYX~fgg`Xm9pNVga9piZ78X2V*qTSV|rb_c8a zqcD-V2Yn^1B~@-fb7?t~K4tf5o#%#waDhyYtyEY2W_Q%u6l~e;3O&cV=Kle0jj>gP zqK-g4)nPoN&O$r~zwO{M*QjcsgVW;hOR9Fwz`0j7!9~AOQJ~axHF|E=b<}k7x)fGs zmFk3gfx}7aB0vY=rJd2ji5LKXf@gI(KqlJ2=Lzd*vC1;@h#5Z7+2!hj1n(WwZ>!Z` zpJGemd~u(@vB~HrhxX`%>05nryRA9~LHyzPUbUKbMy2}1D3}If^t-Tt#k4-6Lwtss zHB$)qiUf407Dc)}O9CDNVI-i{A^sdBi91+S=7vrvKYx$%U3B>cD6jqm*)%@Kr+ceDjnYuY`vd3};QskA%UJ+hNUzlw zN$CQAxWN~#^$pksvHXP~Ni19i3Muv+gP)&34FfIn=aGTQEE2o0t>Q{5;kuti(w z(zj@m$3jWygA7;O{;qBBoF`+p_i_EmS(69&2&~=W9;{^j82io!XmoXOLj`4c#Y-Qy zz2YY%%S!c^r=Z}V_LhF?rr!(W*QbI48J$PE-Hm5;8z@U;{2I{I$PfX2;%sMz*{kQv zsqJh!18#w1++V5*2_|BVV~(+41jo3agAt?koTNIi6(e<@VB{f27ZFmV+doo(Q8O@2 z#OO?7^g77pn5;rz!{}9`M@LH@NT-b}2Gs90z-9oMNBjZsDFS?O4}jZ2bYlg|_&HC5 zATBy;AwW;Ff#&a@A(6**c~|zU}$=z4+t9$(?0| z+8^IZe;nomTSQv@@i(Ea+8bt3GRkJ{xREv+xEw|_@j$ay(?s(SfKwS zIYa^e_;b?*gQkwa;IA5kdOWLnz)bt&CrLd|=~f}Lyt^M~s{*-tmiHLRuu|P1Eo`Ma z3q1F64nV1X`ceDj$MS~^kLl0UqB2hEV)+atqt9j*#~eXNHSqy5%oUo2Oy0`VKu=2P zne>JZe2hw3cCv)^P=)wt2+?4%jU8`HgBn4NFPAA^b={+))E#%j_gyI-yxIZ~ZOoPJ zzPsVRKXk9~$1=^27xAo~0G}w4R`Nt&dvGsMl3m?eaQ9R&l zxbUC+PVhdOKzN~dV2yHC*_X;lL>Q9iNTR!9d7y;opJ_|ELDBB?%z7 z0jH6dmy^O1{z8GSQh&v_-&zb8ev;1m0<%Umm+rx{3W1bF7k(Z1#ppvFJS#tv_u3qi`#(YkTJw;acbjRfIG za;5;&itQ3Afu?C!eKyk6LQ&J@szL~bIw^INeuQ7Hu67=`sBwIhfdRFX>mR7P?Ck@Q zAsCNfK^^96RJXTulzt{M&^}%C7m9v4)Up@C))REz6>2AE4!DQjEObgE z0ni|KgG&E|CCkdyb8s;C$)hcWM_Y0CSJ7AK(Jo|=5gzR$cOiiu?ZS)5*OAjiDF^R9 zGzr*8y8Q+ZYV1AIlB|u|qkR^t)O4NtHA+&=7omr%s1Y);y2<)fFY1tmHLKmO8A}|$ zztlZIuf8fhKs?dcXzgFvEJ6Qc9D5@35f}!6XY?OCi5ZrFu*=**F8J6Ro&AuG+tlM* zVm91%qO~PXh1%;MaDI@zes}&EwrXCR$u-+nN9a7(bNa)O|0eZz^EO&7ylT7N>TIN~ zSHJvV7a9q*wlu&PB2?xH#Wq*Odk60R$Dv7{>H%bE&nkNMSb`ksb)%#XWa@5fd(=~n z!3X+}UY8=BR5c<|>XY7r-JQL>mxOTn^3~_*rTR$@>YGveXesT__EfW3t49O~>O=n1 zVL`@yL_~`+1Ci7VQmA9gQ06S_v#2_Li++ROSL2QP<{kZ8UHTp#+QzK)`LwqW)Jy~L z2O9-4;Y_1}<|i z@mcOn;Fk#4?*B!;ZZhJ{0fMTmTgG}k#LdzEWd$h43s_6jpl%%ZjqrQ8<5{@5%gj&K zxk6I_gNukqN#z{lfIw)aT2ILXjh=!A)FZw))=fluJ^t;XNzE5oc8&L)imhTpReUD($RS`SNsIjS&x7 z245|BV`dVT8Af{jk%lJHEeBn_a=j0nt%g9P+vVZUcmna6_<}~9#$Qr#q*oE1)nHW3 zwI79GLTt|ucEM?l401!9NE6?!sK}Gee`kM$3<@z%mJK$l;SP>i=(fXnQ$5qfmcnqj zEA%I1@Ko25+mT+QzBx4Mr7RXXtdea(+Se^W$a=k?d+7mFcj48P>$)OHAFZ8odQ#b^ zu6a9-K)EAOE?VoUUQ95Tp@&(i-ns(-!pW4>8DeV@>u699`N6IF!ZhSVlY_5&GuB#Q z!Q92~icrfAkYBUk-i5}0YpTzxYwAy_o!AJ3p$zB?(ox+ryV$(h@vBpSr>FWgf{XOJ zAL(q!*+|r~%clohK>czjZeLh|#U5Ca1pfr<8j7v1{sFb6M+Wj5TyxU~ot}|amVxkk zXjxe^_GCAu9$FJ@=m4cT*Jlk)qnP1doQnsN@@I`%_xiqUBYeaM!$p-J6shn zl9%X{!L=(hAxUbITm9w}MCeiq57z2@)@G{zl~?5XAoW_1TrJ=F}SApMiCwY089A^_j`H`~@@J>kdH&+f>x6nQ+=FR*Np zl%1=~{$0whQm0BaKv2sW43Wjd;0Z~ z5}^^5-$-hIrmoYen4;@7N>Wc}>H?&Cs-gH4msf&&UyUVke^ycj_k(mQasQ*F z3hqfrjo}_dI&p6bZjVNWL>oP5n4&+JU$Wa{<|(c15i7#{nL7(}JC=5rz$}{A^62ma zV_ERB+<*A6Y#b&{Qy;~){ecb#dG-|{hZT0aX=$_U`nTQsB z?5<0%MhQnB|H#q@*`-_caa^qQ7RWMDA19!Q*2kBjG`c%*h5k;NhbN@fyWM!gl~dG6 z^m1AwgSVz7*(&M(==)SM9l&jsEV(UFtj%BWm56mDUO`bQ);AmqVpyX;V*6O(ft%c_jo)$19tF-jXT= z+@e!SK(eF?0TYlKBcSPXO~83bq+SlxdTE<`SrwuYv9uR1ZwXJEbs zlj`=87<5>D(A}{s?isLrZti?Y$A$+8w2`~5t<+ag7YgLKUQDgV<9Iyhy5^?-9nY2C zoa3$3zv>Kqk>No*Lw+@JW>z?z+g+hL{4$nVwFMnZ4|E-oMBjSKbzSHx)D(0rYj(|R zJ|bAti3@HJynfwNkhV8}B3P4}TpO(E2;O|W13b8_#Zx_=mKKh{?YBC5Sb9E}t-y1G z3*4YSy`EzW+-+f*D`J4WgZaTg)CpEQ&8UAPI*z^u0~&!`}d8-Z=uW+e^)8 z;r)WzKDaQX)IH8^A;uHvH{Fj6p6YXn)jw{bs*TW?OhG!CqL3&xiI3UpTL`^Sn$gbq z$Dwz#Uedi*+g`it__lo!7Qap&mD9{x-d zmmXIc2nzO3E)|E&@`y)d^$32_p)@V{O$R4AD?#4D{vDkc`FxQe{}TjX*>+U1?#8p! z-BUz3<*0hzlT_VEw?24Qzn`jwLkB|(=Oc(Q&OB)e)9L$e%eLr%O_R=2g&J00!g^Z6 zTJtGj71^+4zCv7!neD6y>Yw?<%-3OS0wZ8_xjk zUv|=z`hvCG37p$_(C@yq4?>{)I{U)s7_=A`z)|F} zP-MKkMBI#S;$|S^bY5HoI6M{l-uvA)4Pe4uY=CG0x6X-c01s``Sabyzvfp2~?h9d5 zfC`O^-2|xyv47NWAce^mXB64BuWjXUw%RE#0H}SC(Qp|F9n6{NTYKQu6L|FsI;&{o zH(4_I`II1bT3E$MQPXy4_7^3rN6_7&n>69oc$1azW$Rlxw)b! z4I6K^p*={TXL)pFCh`qndUUCJ?QOJ^=1FUWOT)7`D8oLi<FmC_UsPHq8%Smb?3v-C$wUGeIn| zIaQrGNfhuwWSN&KM!VbcPoRK_;&VC|~J^04}x5k6fe?d~&HjfPdX$RO}Igs@?^+&JQ zwNJ@eew=_tJjj0;cHVh%v9ZS!+_Kvn_T*Xzz%;o+Ujd3dY~#Z>9b6R$lU56@148tw zf}4d4YeD(EFgg>c(vn7S!42+krlHlVy$gJanN@@=^&+zTOX`+#q~1A%zIXw&a(w)L zsiJ(>%WKpD{edQGD|Wq%6@*0vs)LvwfopY0r`3Xpyca>( z{oq5pR1dhS?=7wHcibrO?53!j8Vm}AOk&k1ekI%~zo%d_ym2?Rk@d~tY^f5+K#d)vQsdU~4OR6~U zPa-wuyq|z{w0W_tjrZUU_s^ApnQHMb1Ru`z=knN+G}ova*QjMaEQ`zrc}e44w_=74 zf3d+{o`9Hbu8eId2^1-@DAw8%P7<2jC$^zY<&$nxf^y&jCAWv@N z2g7#C_%@Q-1xYajV7LER{#j1`=VST9d*n$gLFqVH=e13Pr-OCfmikIxd zR_fgs#|AB*W#&oUX;$E;r)c1M!`&YP_FggYXu# z+8ovM22t)*Dxe!>U?Y0qS@kK$JljMhG@Xj1?vRhVaqvz^w}q|!x9Y9yrQAy3JkQkS zHse`+2zc|l!I_5kzSIpb)X7kB&NsYq5qhLZuez-i^=f4m6WVfh-a)dw1@p9{IfzK1 z*$ZOQ{1SV$3-7uMSmijKa)r9%iqE3{aA$Sv|KsgVz^g2-`2Ro%geBg%1mjASSfaQ@ zu?Plht^~P(fGCJ)tcrpf*=GV3E~2XT5;>d zxBx1G+x>sOXWo000PXMhf1dyI_c7e}opH1n8>33Xbh3~9A0QNiljaJ&dDwrddSU{Q^DtQ%~r;QY}Pbx#UY z++7gb$9)|$LO+HBwdZ<5H;WrTP-|^x2yNa=)g{UbC3u{~jyoFJG*2nBt44Rq1sW(r zRofY$*bS1cw3(+0vsr!IZ65mdf-dC&um2?I_X_$|BIX&2xff&KCb^`qI2k*n0t$+y z8oDSuu&x>-__HifxECtKogUTPtkGR^uE_X0T>0Z+_-DnBQ?@4Kt|jXQ5avtBt=nfa zf&jcSCh*9~7{ zDT^j=kfZi?jgVQ}UCjD~lb06X&nH)Vp?vy-2})+%Uq{YIJ|^e!{r!SNPxl88Ym#6o zTBP|diXuSQkxc?LY`6qyS@TkogZahIPE5a#y+E~Hd#LriviK$~=_YbM2MR7t4xj6n zbblEvQ0qnJ#jc~Tx3}sI&Js#~0%lCgcarRJG!h8iZwNKG#lr-p$<5i@OElJmv@OG4 zo6U6vep~l4H+(PFGQ5!O?dDH0*8Y=vYL|g-%Z;*zswX2XnJY6e|1yTm-8Q|CyU6Fe zLHQa;g^&rt?Fw+N?c4$Wo=?+~7qo`)p(dA1;Tow0?oeM5=LW&e?)O)srK?Xh*JqX7 zBxTk8hs0MXxZp&K+^ly;91FKF7;9-Vs{S|}I_*t&_Ak^&VyC+gt}<*p2#ZaCZr*?( zC>nxuyH{a!I{ecT$rs!rpK~1?s@>r6eVS+YB6QRiN*?}6QTQ`{?zWi`_gt>lcWf~S zd7JJF->t&Us^%)?wRMrk!wi+4?o6L&s`7lHJR`|7_lucB=lt{luhEm$Q#4K>{^hg_ z(9JmN;|`!??KZw(ADlpOSeY->dJ8oZ)qMcv_Ss9~ZA!0)`_J$Brk!XluP&C-bK8C= z8AcJ&N6b{e?L$CJ?w69`MHB%3x{pAwD+W~aKfMfJK{hGB>mw4GmCa2i!>ywc`^PP` zIDL%I3%&fnvC_wGQ8#PQ@EC^h&ptYD_KF89#SY7>WN{V{pW6XkgOJ z#G=Vv`KC0Fqd$eJjzxMS@o`Ao#!ywEUJ`l72q@%t$8kZPxr0z!>?_Zuz9aPs_{FNJ zSi`(53;Hj>l?CbAQ_uyv32V0^UYc!7r7!Cx;e+hLaRQqgT@hwBwfzwp1}j#{_kCSJ zo-bSoM4>a>%;hHc(wfhcmD@Xp=AKA`ol+nw9J^|dznegqf*9;JU1^Pa3T;?h z=UKXkn!S0lXQ_IdXXyzr83alRW)#3XsiygS(VECQkP_mjXQh}LZwUDK$5%Zc8(beS zP`HVR9if`y6X7Gy!&0j@FJxl0+AU*}js#pzU4k1y*q`)C=eT|z+gmq*tsNVb$QjSG zD*@XPEF&PE*_5e$D~*n#9Bz$ahR3hgD;j>qOj}}dRvyS)pToT~3l+w-ffaq3UZX^{6#B-jcZ~hI4 zCP0g%wP_Fsc@Vz{K+F_~As(p@QCDL0r9vv^A-)Zi+NV6kzY5|EAX+Gw-!PfT8$+FH zt(v|j3g^ME-v&v4^GU;9kq1^SU|)D(X9`%cD36bjDEy>vtJ7#sg?1pF7NE3lHE7<) zSJFy?v}L4euT>q%|EukPtp;QGxWL_inQ^J3s@mq!XnY?u9sxZY)mn}P{zj9PCN}~2 z?h0R|iEOnG`6BnI$W#@1otojUZ=2=NqFGKV1~X7nZMB-I*;4jy)DW$f;eNNjSFQ1^ z0iy%6x~h;kFxa`3DUkb<35ksW{oN;%4EKYDyWG{N)4hbq7a-VPot79P&3-Rl)=^}V z#+(h@K#dmI)P$C{ZeQf?=5!XXK8sCCz528T+<1g;PmsqWp7l?v#wHA9`urewhDRw* zV(lo8(yaH$aE^H9TeXkAwYKU)xYm4=hZQx|+vI*kzlLivM7F6UMCp-*Us|Bn%p+N! zC}XM4e`s_I9{O_UyfcElv)1*i1Jk?eT1wsGOO01sL8jI;Z6fE>cR_3^2#Z&ZVBi}q z1VS{q6ZS~{WN=X%dUh#t+M0ve!KVk(R&$oC-Lz4r&44N6n_+n8MeJhgaI^ERh5ebA z9ABi*6sU2bQ&VWdvXN@;ux7|v&9i%$>cyBV z(u~<=6|YjFT=rtl;Q3y?U1NwhxCsmN&VKjZnwxf(gV@x{8h`Xl0pQ%l`x;~VF%WFV zyHye2p)=Oyfg2XCnQa4AUOzAsqxznuS%n{q=24i)5AnPd=2fkV=7nBd<;GpQBRMZK zlK6Fp(4y`{gR~e@ntB}+uDQX3`}my$P!o;r-LV2E8IPV6uDQv7T**ftv$y&Jc@o60 z=)sX{rY38&gj%j+EVgpQ6UkjHE~F(KuDQ(@zLCOW&>0uXv2eRjj9KDpcakOE;ScsN!?dr;ikFAo_7@Y2Q63-pt3Tsh zZb`(d=-_aTH(l}$0k%8vOsycQfkIWEAP$HDzPzfs=m9}|&x`dgGO<-2GVuepXv5#2 zaLt7t#|`U6>1y}-7>RwNk=j`Yw_88_G)z51SxiiFu$AL#WZ^TH;in*v}H1+z-?v zVL4as>fHruv{6Ppru=E0_G#0$|5+Eb?Hj;$j~M3GwvBusEK8}kkQ%Oe%U8b03Iu+! z>3m67!g+aYJ=E^|Vg^cg@7_T*SyL*~gIEDyD&o!kzJM=BGQ)^}TNeMs{nbwN@*P=5 zv#k4x8f;PT1(E9K3n%l!P{6-%Wnpq6gztfw8IChWjoKvyvnweQhOhtZg8CJm5O+sMMO8c#P^6H`KYQTZ_uH! zyO)3=Co~N@v_=3!W%QQ7Jsz678JT74PH663zAkq&c?@s%v)e5k);T5yq->!9A!V)~ zd=&O|^IH-hQy62$t2>O8&vv?{n!@;%Po*b#g>fECa$SLwRu~mzmeXh-<)nYGS6OWP zgu~bv=dJ@W&RB@`gkraaW^SeQ0rrQ>`&AGr*&aQ>%Z-VW+-jdDOlWRyq&|WBlvdF1 zNWkKm>#N<4O|Deu($Pm*xsMo%S?&d&G5Lz?P1X{3Eg4yv@xm$VP7*7Rr({zWf@EF( z!{zF4bC#=9==_NAxx^t{FmYJM6#m}iZwr5YE*X|l&u_XjS%1|5l-kTI$ZkY#sz3EE zPxq%$e8GuY-0zEiYt5sIhGeA2fyjARoTpvK$HMS{-00pHEtn%WfdzEbC07o}jeQlW z{jQg`^F9oaA;*2J$l3679m?iiP;ea;dL9D?A+6rK^ud^HX5NC3J`cqml-$nVyx+QI|s ztT=%wMqbO_9;47A2<}(MwNlVLs6#9-{PS{RW(s^=p+(!9_mo!PT#sY;9a8nNR}WxV z+%Jillc?x)TGiU=ht3|@Ep}?C_QUQ|_Ne^1!_<=5*LE726FWZHkZiC+BU=t9!gNr# zSQr1c7tXD2WZ!#Ar$GhLPJ?n{U6T!w;sb%dC$I)m(h}w=HTrY?$3EFSagU*;oOZgbIVv}hRrngYIlfPddQijcu8gG zM91@S`b<^m?gkv4E-N4beb75 z`;rk5t`W)I9zzuDX?l9-l^Wd0B-`QfU= zQ})-3U8u4s9@O~w`Br1$iY^(EWD^;uaE>ETQ`JTY35%30i+-jIyIaS%`9l!DII4%y z*l%O{eEit(eyiN!3*@o2slp)l?r+S7AMrXi{A9I!BIj_P-N)y78(tp7#fR|09XCGZ z4h|xcI3%L>c)o;d_EkX?V6Q)HgI_V^4tu`CS7|!~j{UcbWOkbG1eo96-7pVh4{4gy z>^}KHGAo>;CEPz|yVC33$=}#+K~6MksO@K%(B@#Wn)OIw(nfF^+@aq~aCSC)47Id$ zU@s@K9$B-?`dDX=4@&1pJ|Y1{&A0SRt*15bn*Z%?hCj@FEtNm>NXzfn+ZF}iwJ0fI z{pWlcm_(%k2X0N}AWnHzwA5BiH;0yXsB|4>9cPP~Oj?TFQI(p)9w(}aBUWAJAnbWI zTiprtkdbE;`u@5zvCti?|D|dR@YzNu^Gr$gmrg#1JMe*YLzJh3X=YKepYObP7Q-%# zPX{aGFr`+`f~YyrBRSfTtanq!X@GBVldiL7u}oCiR(=ohQWt{ zzU!p|?o<5uCfjgxHGrwa*JkZ5 zdHDtQh;JX?ei!ZZecR2c@0*hytnE`8(C6>JQ~pzr`L-Rro;!Vi2w!A-dHAMF&^GVX z_M~Cm$3?^-p$7L+>$6ISIiBfTKK)<-0{Qo)!!^CUP@LBo^s3*$FJDpcug`ydD*t{y z|Iy@MEPLI0Pd?I~Dn$E?5VP0@1f3~o5WJ|cjeFtKV5vj5B8A6` z8L4(o@gvZ$t^4mvf~sWbt&hZC)w!2L|MNBU*Sn?(nhbZ=bq)3I!{2<1+e~h-Xs*TB zzU{u!Yz_tAsd9J`BcHU3MLf09D=B`xnH9*#{|&#M`>+kaE`6;HzebGNiC>~8S56>; z)S`t2L6Ff!zP50DGQO4d>8AD@J&26Q-p_Vhey92Q=v)z(^;?KzHj>m})x9<(ZXWUr zh0$q38STX}CWKrdG1{b$8Can8I_&-5|D*w~6UQVo5x3QjbUYB8&^CF3jZ(bVukFtz z2Erz}S_Ye~supz$xWmpY_CR(u1hoJ0-ow6OViD4LWTyz-xf>%am93|Y{^Ls1kC)|P z^lUDVe-Q}{X&EsWyE0GmEbFd^9+>#nlU4KDlY?P0fBd&ej85!q9cd1En7%g|P@|5{ z!7Zfh3T6Ev=Q0r(?b57OKEni`#0ia#sVQ}jd2ZLD~gy!B3p!ipm-}}`AGAh6AFgIDj z5nkks&UOKq9ad)pO^y)p544NaT7BKTq6pwHMU@yFdhRuBW809g{y!ufBb z4S`WY;0TXE4n#KDmI0jhFuO2*^ zU%L0;Y4I)+YmfO^TGl!5`e(Uosd9VQ&<$Cl=gx5arrCF1GmOpp^~p_<$|dsv$vzY( z$Z<|qsZ>IQifz=3^KLi6*=Te;*;|M3aE*+(Tb|HXe?$PZx6mu?@GVBQ2u zKCF+iX}*+RS}r5?NlX2mPt{AySW;^&wZfEQ}xnv1gZ6wTHsUl(y|Y! zYb=$ikf_s3{1i;AmviCN+)e6U0TW`~cv_&$(O>XnNU|R!K#b!T0%W4HlbUCd&tD3c z9@8pklcq6EXWox@d%xF4N3U4njie_=a(~iYr<;_mC9U==!Aayi#Iw8q3@>F-(!7*? zg*>+8g=;ixU}T&fK$!@XT`luA;j8%Ro}WG}V*`KN_}lvr!!nBbJC(n4`MZk0dHmhS zpC3=hCPNvKz8`qKUS1&6#H^Bf4Ux_D7yT66*|zI|nHsJYjvsq@ zV2mPMSRr@?zi#ewWh=m)T-5)i|CGW3_vFuprN&UChpV1A%+}eu&K|DpTxtJ01unAV zvfhn32hFx!>W(o%gVr9NxXXl(H-oubqk@B06Is)?du@uQW2;QoVsV=tGN$ZwBrM~m zTmHMBlBu(^N68U9PH2qRoN^*WaaOAz#ymeedra+Q`K3%qV*4_ndIVYyHipEq#9GV{ z&*EPK-iAS6e#K8l>F&xuy4&)HT@jQwL(44KXqU}Nv$NWbuO9wI9zL!svuM_!Dki;x zFLCi8(XKWxEA>}5`uzQO&0k{qXQc9fQ{ipOUF@eHel$}2y+J3LjCd!~s2!Ci);#_eh0A;gUJU8=psn!s=$UE>Jr%KHMl*3Z{+dh_hw9_hQX zLY)>D3ZueNt=@oE8&DIcBbM2o?r2ZFjOd_Mb-1wI9a=|vb!Vjx)uX4FseJqM7W{bA zYOltB2s+8ueyjSe1>rwf;Q---Ji@mx1K}~^MIz@ap50-)AUx%?|Az1e5T;{sC!8Er zEE=*~4im*$G_Bj%3SB(*hOoSFC}< z@kTcO4>b%0mt&Ma8*Xjf@8#AuKAC5?wPNQsE`^CLeP#EKm5{(AxX|RLCtJXhlL6Pe zkuL^ZXmV5Z=x5yjOP~BNeYkK(zzEa7rRlunIZ2$|^KD z=CZmTLUT>BgTHG=3u-^<+1=>wXs5Cdy~M zu!Fc=6Xk1p)RNq!aLtthnaJB(r%v7I)}ER&d!l8UD@>D@omemf&8^vX>|~i*kbz`1 zmR^BtdQ8>D_6yfc@vt5;SPkyfp&B7uI+s^77~2~8f8(*&Z)3OnPQ%>ow<3yT&RN1K z&1dnKSZP;o60j8DwSTvYaxUlDZ5~Dx%4H<9j0`8&NLtQx&-=W$Det2`Z&-PkEAOSs zd#Jn9=lQ+zJmB*jq&y3iN3&II&BcfD!F@?HnR6pOPfd-t4}KSP^LI47oZ!kl%o&2& z!<(+FUIJzXFlD;hB-miyor1~83$3xzNc`*p8YE9}$%qj;KtT5LK&k|!O8`VI<`Fxy z4Ulc&eK?wu33ZV~z6T+_0b=U|bR&%2WpFlc}LMg};qFMuT;W)Q6C&*-hEWx@Ej z&8RDjuN8Fz-9;X;(8to0uoka{W}K%gx(8LLojvVmx2vM8Yj~faiP)8rdW?s$ zJ>^|UwbwV_2JNN!Jwf3>OF2Wrxmb;%n?E55R(6W9TMB2vs9Xu+N!l((%Un3rTIOJ3 zS4u{(`|Jg}Zr+)eTA|dJNe$PGvF_vqipr@ z9xqCKU%FZ8Tv6sFVepF=EAbZoaakVUMgUt(eu4*=>yeGW?Ir8C@SjyO=06SYF#H54 zSSmos%oIz9M$nDhxO9B`Zrf_@D^-q){iOu5*wn_Mv|F)P8#G=d`GKj8QN=pAw=<{c zvSw0F1ezMw{kF__dLyXS{s7YO^wV0|5Sf2yya>VedpP2rS$r26L= zpCeqer$NrU3CR9ThtEv9B@odw+`SKIk(SL1^rQ;cG}thjM&4Rm(@Erv5k~94R2bRj za%<(oz$jdk?_n2{M@(E;YV$bLdu~}n7L$7znz?eYE-xVm`?z64y1kggHn_)Fpw|Lb zYBy>M|68}D^$Q1YxW7%;&emgmeY1Ui(9YbeFO{Z<=hyRRtS_DR!H%SaZO%7-Ibmty*QMbX~U_u@w5wl{-Q=mqp#zuCB9HM!}k2Ba8WI5LZ>_;CZ6tF^mss9^!MnlzMLFX2@{JC~AZa&+ zLH0$&F8Zn%X1PUQ89jay#rmF&AsXgAW_RSK7#XV4)`m!Rv3CWTn<8PZpwZE1*|D2Z zS@&b*_DNTthbt(ws4AoWreWMNdeiI&`Sm^_`AG)nx13}SlfeZonE6U6l0MNxaSMG` z4+C2E^ADvhx&9&2LgVSvsI-qIb~B2JtE?yRQ;>mORe4QuM)XY6R?(6Cpe={;6UktN zs=Q`YMs%Rt?`o*=yFsE<+Pwn*2%cKze+vB9+@OGwW;E0%M;FkpK}4V(NzpzS(!9$T zEm#xB7sB6%{I&4+4SzrJ*BPQi{PpB7Bm4h{|2lNc?3C5HOIlc4+q-rC*6@WjwU1VP z-wTXy<)`*Ywes%dugQg9ll*1=7x}XdG?BQjtKXg6rErq``KyCW@J{mB*d3FMlnsVS zzisX?!$o}|kT@M?_2g9T#}DEHX{J#)cXd+ixa3*IJ_4em`f7%cH2~6S$#wPW4mgAB zbk+&_VAa>jertnR2^OW-y!5qZ6H{N5I&8U;(StRq0=*y$Q!G-65wXG5uNEBB(8Ex> zemUkA3iFZjT-*G%yLFAhV)LJUXT7q{61sTcd-*H38<$xjHx^9n?zDSj->||137SPf zk(f6gWuX+v}m#q)8*1J22ax2`IzK(5 zA+9_(yjVN9+_s~>V>t4LP~Il{*5K|Ri0Ps+sjY)5k_dN+EOnWww8%=eH%lgAJlv<} zt_){Or=`B8_TX zhXN{f#lDn}B-bjGYy}@(?)K@P>YM~FS7ILK%XT~OQ_X>KBe5Yyho&a?PWcdv|4T6G z|EmAVW}|Yq_21epU4KEOa$0sq6z$A?!07D%69(p8w#KHIt@ZY$UPeGd z>sSx<_1Zck3#PkhVoM3w(az16M#9VQL;o>)t$Vw>qF<)xRJ))51YDZzOVM{tazWPp zCR_Y5n+Eep1B21*wP7iMrC;y-$hd_T_xPzt`h2PW*V97|*BqcviM$t|3i{s*zuayA z`}EVGzZUrX^T}_g%UD;OHlVdo%D#QZmtY_=+}(p+q?qeujCB?+zg`y4)Y#*9DUD|F zE9bY9o=q;Otb3c=i>|)LmcHhc-X=3=RdQ1~T{LzP)(Yq7wwzb44ih`eUQ4rEM)J<- zq(l9CZp*KD&(DaR;NSCGj^@1}LoN@Bmlm`f%zIHrY+wIg)UpTf#ThXfLwqkz8$+SF zS0LzZroY%@&)qsK;}!n0z$}ly-of7|q`k%8xBR6WpNF9RKM6F!t6sxP)oq29sqfeO z?_~-^eBF;g$`Z0HZNa7bcdI-P_eBYTQ*>*6Eg=k8h?`x%&M8TWa;8kSTXwk}z7uw@ z_P0q;?o_H%JB_C@Nu98vMxI4nAGWRrSW$NY%MT4*g7jx zCT68b2~}Mo%aRqIaYCblc!(CJEt7NY3LlaA?qx=1fA`TZjm$zwtG(Bgx%mmmY=L~6 z>!ryYI6!1Jhs;=g%x{(@rn6Yv>&FKs(J0sNrX7@nIN3j;xl8C&T0Vc8Uv1GZguVJb z*R#35o8aqzkUDE0^z~0x{gZxon zkH_VX^(YLW0Jp=lv>zVOsW95p&i6Tqs_ZCR;xfwy42*qMM(#x3w~yn22-SYui~U06 zC{K*Yb$cEwH_&F8bE6}PaXsv4?S>KDb>-GFyViYW1P>e>j`t|6T-qUA-J`I2WOnRO zwg?$HdG`ZTj^Jv86LN>Z`sQc&hQKgN`10bB+!$VJ&Nrz!AD^(TH#FU*@Yh*~glm4~ zL5>VS_76ZdPWnb}iwlGBhtNFy($sj?^{I7(2Dju^MaKu__Xx^wE5?_V?12ssxf?x< zLrg-ybl33OLOeyt{hlX<5qBz!&*0dKmDN~KkD zQy|kD6vlu8?rK2}ZuupWk85-+6n>`zXp-Ma-WX%vsZ^6T zxlZZ0ipIPKY z++iXok+;WlEMVXSN#ra?7+vxPNJyMC;214y)T7cz>PfDDOw2>|%zjjUT>oli%xhYt z&v<7NIaMnElFDOr`w}_1WTjy9(N?gd3jTxyXs+p&|Ir*f1#XERI0ld@uWVn8TTNUK zkyH~6a1Dl49zPfo>{`%)QRay;I_>4pj9E3kk6ZBoUR*NpTU8J=a| ziskU%PxasZ_z`%`*0SLvHNO19e^2+5Pag@!`_)Ia4&80wZF@hE;;vTPbF@oJ-ZkG0 zLeolNm1{_4&ANZzV^T^SL6dn^i} z;_SnK7eUw${sBYAj(MM7|PhAgejQjqfGJN zMQyOOwd9C)Jt9^9BmjT@jM@eWlDv5_jYeQA?G9;Ikym#$O zsVn0pn#q63jS~Ac(L?SQnCIT_YewKd|ArCv0nlK>1fJceM|vaB?(i{N_xPhz>yYRc z)~+pN>9N9jDx`2B+oOgH$$Psven<8F^VyVUiw$n$?Skz=hWBgJ8SujH;eP%dea9bp zfPTwzjmK_Iez);}y6@H}>s#iIz!>Rn_bN8HXI@ZAf1Pkee6?Cq67DB@&vnAc+FrSx zlLY?-f_yX|ojdI@b0ZyW?T!&CIl1R?MMoIBzOYqK97pv~S8o{5})^6ZYIErn@oo6V*bZSviG zItBdzWmo%+KC4ECoI7TH&}qMS51J!mjkI0Y+d&6rmIj7RiF@vFt8)BrN;G}K^EsNV#L(`<)C%f;f zZLiw==jb69EeI311|vR!lQ#NIMs2gFM7E==d!r>;d$d>pwhXBaR94SxMf?+<>UeS` zn#glYjw$tu#N-YYp|Y=CpWD7>vh4@6p4KtzU1d;hXXx|WIe$-`9z0o9DR{KV#swbx zQD8s>fDr&j;^%`_qsyc=Bm&d^YhpmLGnI#Ql_I^H;-`gR%OF!c-~5%ca~AdJOus#` zqGM9`Fm3M=V>tP!{dh;DnEfp*@N1 z)<5H953rNI$W!=d$;k!5HZk&FGETz(L@)fo19MCB%aWlgGzG$AS z@wDz2CiWe`zBXc%^H5uvQ5{Y@Xmo*?p@fB;-U5RmLnBx#Qcn@4J{ko zDl7JBY&pv6))`W7RB}v<`5;Q=x{b(w86`8@HZi2aKV>fl1D`f8jH9!-9d86$Bde*$ zG2WuBDlD~bM8v=S;_!c_u%1UoL}?sEjdkzWt)KcZSAPMayZ4W+J@FB1TUvV?A#2}2 zm+c8PS^pHtj+CrS-MZeGT;|>&0|#aQ+s9A32d_7+QFV%dFiwnOf2mNR-J$O-w>VPF#>dMFi#0ws zxl@Iov_yn+tOs;x4<^0+vpjP}QU%8Ih%OH=5cmF-b=^Y>M( z1j?-<0d^G}8v-p-emFZYP1I|DjcQk5@U%0e1eUoaRpLwNrU~>XsR_Ne{N8=j+hqCP zdlA?RgnS}rI?wLMLa)MSlID+dABNO>N&1z_UqgA~+m6%ol|1`Tz5S{C>gL@v(*N?I zuahmNA@5-@!>3}mNZ#bdf?3J8Zy_^tmP>w8y9;bzuIsce)XpE6vL|nS-Gpp}25y2` z*2Y5aSV*YNr+u6E0nF?ZkBxPk{f7=2p{mW`j(LHlJF|R0Tt2JX>>uYoC~d+GpIDZi zjOE*fP@nrXtRdBeODPlstD55gC_RYM|8Mfo8@!wRS)7k-9?D(e&yM`x=AV7ym9ZWW zcSWpo*??gkqkGOi@wC{%B#eyZD_cB^ zi6brXv{a(ZBTxLwQ$Vg)d-{nC+R-`oIh3?<^7`!04^{Tk|Lgo082H`f@3b@g5%HxJ ziG!-{VQd7xjN6Xo$-2QOR%9k)`;;pXqoqAUF8>e&LwEAhhCkk|uAOr)Kd#_V>FEYi z_W)WOJ$*5fM6b7|59aNupJ2VJ)qmW*$!ojH>BVr0F3!Y#1Cpezy9^#^w$#E#^Xx@g z7{k*iW<-y0gCAjZ+xVH%IeF5B; zNo#q?g|e;m-y>+V@tPtHAi=CRc+>z9eu!KL2}Nm|M2`(=W%1H!XxQT9sPR_4{OPL! zpxIq3o~ecme$}4r7vw&uvuYMnnJZcC`4^vFEQ9Jv((pNQpPvK=RYO*Gs<9=EhjDrv zuYV@$pUL`X8fNTl3dx)`bOWY#Bz7lna9Q|OB>r5ukYBDCsq%&n?_x`2V0aXSUVe}fdf%N8`fDX8axUfB#bAI4 zm6Gy=E`xN{`e#Fzv11{h&gTf_m#uYZu|FQnVH3~Wd7A&5&39%6Z2sy%tGz(A|JK+3 z`5n~$9ayzz^N`)w-iFQMt!!88&7naYnitDU3ybPc<~FON=}S1Ier64YCJ9TC2TMyUe}t0Fo)1w zS?d;TO1BQ9K#Fz3I1#$b4lrIlBO<v2ex3-^rtZiy(mt6J z+$;}cvS1`VjB5qsh5&{ZLp+SPU=55g7;VOyz#b0PduOi-yd4;E(j`L&kZ%22q~bI%2x$hJG9Aa{0HjeLDm&M>k~oNx8Ly; z34w(H)a!z*_xP;01X&*qvJzH#$HPI^vn(rjSS0eqZ;@2hCY$=ds4w=}Mv(3DOzy)Z z+i!wwd&Tc~KFBr9=jubQlLKHU1i1>Rvo6S%Y1v{q66f@~J7szYkTZiaI8^Vb56U!c z!qc^zC?1257K3*F>tKA|`Fz9zAiD7@1NmTxZtkZAlwa+yc5lR+9sjqRv%xc!vHP~! z0R~5b0g}^K%av-YgKibO8r_*e-u>dYtqHQ8Vp(nP_r4qk!?NQ&9>sx!8nv%FT#dbK z2EqS|`Di;Hl>*s4y22yP3g#$`3(nh_7UH7xF6q0g&67M~J;;^b!gRZ2L%8OC3YLdX z*$^qg7Z(W))xR{}=5F8FECho7pb?UB425m3$ZSefFixVW8Clmca!)IZmrvuh!0kuR zq|2WjUi_4DC9>B4Nlakk)#P%zewTDL`4sWVZ8}KI-rKc_a#{I2Gkz zEF?+-BwF=R^?rdaDN5g;+8Ra@jBf>??21#hnm(c4OJMSZ4Brz*uk+G!a3qoL3g>f_ zEu3l_Swe|$P~woFL~lx@Bs_-_|F0z6^W*mA?f6084x7D5$n>jH?+PsE2V>FazsToT zy#K~8wn(D;yN*4r)$S3)GVm4AYRLsKtQ(A!0)H;uYU5y`Dc{{NERfgqc?)*5Sh2Xb zb(!I4cZu#8C>Pdaphj5Nk<-iCU!kMu;vuM*viX&!!6=tAbh$t0-AAn^X$l z=L=u0!V7%idsO(Lpz!i^;cvjBc{YVp{`g4Aqte3wIoks{PC#z;K*kElZv!ATX(0a; zkP=~_XjE6n@ap|20|!rzc4p&zIQ~<-Qi>Z1=r*uYCBvb?KSc&UErFbQC?2#KYiYK4 zypH!s$&WlN8E;E~Ze9b+h(1-j0Ks+9y3_*UpEs8=zRceFfmb_z$fu z=j+H>U1Yw}R$Y9&MRIfzU9M!M$p|nq+~FQ-M?qceq5eWpj}4%w(WlZT({yv%|M>U4kna_OV-e&*K^uFinJGK)n2GZPvlf4Kyf~(w->5+LAv=Sx+k|Y$}cX%pdx<% zJbqZf>q#N*idrg9`2r<@&BPILS96fEan#3bC5DDn6@I`&MSQU`Db^=2(M#q$Oacgf zyQd*EA9%Iid7HEKCJ_1wM1{~YviX)6E`&bHR9(-Q<2e45<0F3GVeX$msl8hAm&h6n zsG8}Xw!Z_a^5>4BA#2=Y0OZm7Y0cskRK8G)`wH@#X8~J>1d7Cp_){WyKxJ zs_LgkjfZKHrxuc?S(o=LKcqKIRIa{ap@-xG&7aMI+{f)D?}s67=NgaU2#Is=9`Z?iLmKBTvoO%JVjGdU150^7tzwGCz&H?kY0*|L5j&RJGPc zdnUiqr7L=?caQwrueTtYMoM-h{!?=Y%WCcd9|TwtAC32&rM*8|F+&QT26%}bU}QUt zKG4W{1+feQ!F`iPXuUh7M|%02^CxyHZwn-C$l|uHlI0vBK|9q^pSE!Y$GR`M(OXDQ z8#r9=>NB|NFXIe@#A(?YFDA=d$--vHFK^v7)I!d(AghI~%sMDmlSZchMY*CSkvg7* z^QNI;M0|z2=pnf;wns|rSdOc@^01JsQ$y~^5Nv)}Y|g{+sTitpW$|16g+VqguC9EO zoNyqovaW-FiFI3PiIn2n+A(M<`7&4#(SlRK5bm8q-QDt~{H2>AJ9ORO$XJfM`G!C9 z5V+I1ukEHlNC;J@ypS!{N1Fr}nWvu6Tl;2ScVhKphr36=U?pMd9@hOr@UHe{YnGfT z)yU>dQ6qiba+bS}jO++7Jts_8n%dHnTcwG3b!8pTaihea{LylZJIDiG1h87!un7JB z0(_VNYchz4_UQRx=U1x|Ug3E4Qo#bzZ2Rt;M7CHDwHO{Ox0Mrff}tC8 z_Z7GnOibGaG-$Z*7sNBHSz_8!N|Mmr4+kp-ppPM$7n>(3YH*i#LntfT#LTDWtGD{H z;Tr87LyF5N;6nh8P>1!qBMx;h0JJp(U|*j%KLDN!aIv3(|Lr9HQq&#r%laK1$!(SX~_yt&oA!R)=$f~E;oRa(Uj?hN!x zt7X;SZS8I{_~;FY%GX|0zPcV!`M!rA0_rH|MJ0kz>9AZfA;SG#jW79omHf_^d{!mv zf|5(qCHL?pwOGbAJfW&T@ui~VY02D_Qa9PdIb3jl_HZs2oM{1^YXzr}f82^3VbD6} zH)|IdfHb^KEp>f7pbscqn~73K>I((vm;jLWrF%d#b_Vn~pVZvr({>oc$V66*LUaGF zPaG3&YNWO9|ARs?I<=fb6oL&&=r6l{sKIt~h34MGHy7(>%s*Nf7kP}YnhVA=phV;E zYh?1wZ-54bw$&OzWF~7}ZW{eWaTdf7A#OJx5}y@ zYnV zVxTY9Mld%bTgpvlK&UEpP9fuqg4J}kPjw_;57T&n=QkD3h7O)-E{=(R3Y}j)6j{Lx zzmj?M#^_PnLlEu5hJk3VE)uL4rJ&>2=+f*}B%iCO$*zgWOu%wF&!PA1*~RysmjUN{&-vNvJx$3mh2y1i z+K)|bLIHHZiS6c1`(ulN;Wj^Q@?E*u@z#-HK9-q0J-=Uapmo4l&-iFf5$UkjE7U!o z*qZL1R-NyonsB9@e1ZSNL*_$K^B?ZZYO_Kd^taaaxk*7*ziA7}JsS%;fL1>rUk929*WE>`_w0FhUTS^MJXksoHofA< z1aYVSA9$+Y{#T$$K4Zzya8ci{dn1KT%8F-`>5^ZlS_LsiuQubjWNECR?ftYeDTn8~ z!5+Qr$iVK=&)8MiK@=!B+%*FswaIi{gngz(fAQ8cef^2@I z`g%qBo=^Ya+LIEi-t$tHUwiNt4|`HzKQ8cf$bLj~xv(H5U`5d(BG_#6MBW>-yk_p5 zv6E&F@C{&L z4cO$LuWWYdN}K$^!AL)NK*yc;x4g``<0l5^j?0k|{Fi*S^7|fF9~hayGFo2fm(M2S zH(i(AFf4;}@ROVTkjPEy7cKbdRrZwgm&v!(ubxwXskFBFR0U3pOJ=q?KU+eOPssV$ zngS?sFZ|O8>&HQxM9XR^9rQz0GQIG8hvwfWa%q85P0b?i%SW|S&o);N?x)Rrn{~Tm zo*ICo<+TG<6X^OuoFTtm`sL^&?D*%C<|bzj^5C$`^9m_Q8k-I@#_x%pV1= zdT0fD!MV(1X+w5F|As+uTQo17cM^G3W(vP_mRBt=TuG7Z^Y#E{{4-&J()@s}v zj|ekPA#<+i*e@|tKL{sIO`fFFU#=d4Z1+3v*<|ES&V=ZAVAHS+r2NOmK+5Iy$tp5# zULtjQ*B6Ax$K{~X+oO{qU_GH{oT}6~B)*bOy$W!;wYS| z1`_Qf*wvj|R`lE0@^Ym5XuqoR+(52Ycv^VO@Od`{+?%NncL%N5w;9~RdLsjYXv`@KXbH1`rd zH6O-53qD#sEMp^Fs^ae{{!ZraT>d8U*PXwNF6sX|q@Vsje(0Enm)R+J%t|Ni`oO*o z&ZiAV-SLl_tRNyTYkFF*w_UACGv${9#7JA>>Sm9~svq-r8j@1}h)yZkcCr#teqQCf zioaV2abvE=*RWQKqV@!oi#@I3DGfB(xYQQkC;t)1_WJnuZo<)EgqCWHE-Q9+`lodz zRd{}LMX%IJ>|WtW-%f9tjQMY!aP2pPigDhMyW z04?Z_-A=TorWHs|dI1#p)7$dT!}~=m{`mV?W#q`EtM=bbagFaA+VVHmKR*6@(D(MQ z+|hw`yyG{~FF0LCA{}gK4?17Ho40&RfY{2xMc^j{F`q=rUa+Rft<>r}UUqlI2Q6t5 z$l>ja=AGL6k+$;V=^5*>soc>qb{X`URC1js9Br zP@oTXm{H^%dHYv3XGSlqZ0-_0rn0$1w446f}_*AAAM$NRRnIg2T= z@hN0PNnck_v+zP;#d`8YqM0td3bWg8q{Km`Z?scOy zko3z={pYT>^wo@mU2etSjI!|3O{_64RYdrJrQ7q_CBv0TEE}*5fn>XiYU%b|82c%U zOMIG6>eB7mJpDmy2Dm-S>6@+e5Do%RjuZe zjHd#|Y4gOn85h~0JpXCF=z`=Mt?<}<&F)J&Mvrwz`pVB#<)ig6k#mVEKR&2@I%&T0 z>!`ftiU?RjjBIqa+5HD~sQ3@Gd*`KyTh{(-KjV8hvfB-pUHJU(dv!G?C;5G|6@ z9}hkd=#R6r-NdhCkg-lg@OLGeq4@^*Wvz$2VL5XU1>qsp9d#C`o(FK~1o2odg!@EJ_`^d!#dCcVf|9u26MkId8xZ2~OLF-l# ze&JaK%dEVW>TN_k!;Sin48K`j@SQ72%PvRKt%P##gv~-1f9^h9ZuL<0=cMW=TXz@t z(R(jNXzn}`UE~|TuUqjpf&24up4})~&8~E(iG1taM|-JHZ@WY045*~@FZ0lz3atj%YA4AhQ4y5m4B-=xoUB z;}(8xc!q`NN#0GHB|IMne>P5KXEcwtA`Nb=;n(Dz@U&Nrvh<;&G~4N7eOYH1G`g9X zurg&k)8PEV71ttl6+f+1{lwU9y<0*Uu~Q#7QIV3S+g-1DzV~dw=j&r$fO!rcSMi4I zLr1xD+2jN`^c+ig>Jz`-ftr|5Pm9c}rI>LMv_e%++4|yAJKhWa1)y(NDyWQ-iPz{3 zs`53?vZBm;(4QTMxCz%>jOWeG|4Q7qNUXfi2x$q|OjPo7Uy_UlQ;bunDv|;jRJE$o z!|ZD?8{H*We8G+iMRM7)BZrE(soa}q>c061G6h}3e%kNXxl`g)zA)%oS-m!-C44qt zQX7fB*S^&^F8_kAzm2)hkoeD*^?tFIWP4c8fLj6$;CF(>L}0Ji8aRdWE6Z z_9EGx#-{^3O{R*0SC?W6O!sAvQ`rr^?E4DMnG=+q3o5>B69UzIkxIsg()VmuGwCz0 zD^K$PM@8*uvnKa6j1>2*gCLa?exdhi({N$O4pn5gIZu%xHMBeIx5m?|u2w&e&bZGY z`R+&kTJ8wfX#9|buRP4d-pCk8w4COD`>>j(>gp}2$vuM{>0PbR{J15WIEShp0tn~A zjj|1fyTj!!uBKGc87h@9r|W5@?tw#*i3#0*67pRZs9m59_6iU*qWxrAx6$xN89 z^kLB`X~bbg#5%;_?m&v%Ha6-2x9l&We?#SEk-a*?kuM^Fr<_U zxdnc5kSpKSqyjC-jMsT6{El-Ue;|JY>Jf+6EbO*M_osiL2uZ*?uXlg@gwOaxxZeTe z2_vu5`RXRoUMQOZuFt9u4u0N0C(>ntuh6$BfYj$GFVhYzVasVKbTcJ3T zSKXz(u=^DB9yEDy(;h`vYExySd;L3GIpp*+?HjG64Et#rK2FUR zwkC2b!?{##qzs(~HH<*M42U#NfJ*|}O#UG0XMP>;xtf9+Rg-YGZYM)~#PNSrTkyH}7W z_BYEOGPo&9bKeL&ntM@tEe8^dcfn01 zpUl;=LCc1=6dS#5w@5EgTfKdIAP-rOHKk21+4dFj-|L7grWMeMq`oS0%i^E%Q&txL zxh(!ACjz?fgm>JcX-B#5?d3{l%j+4Rm=xYtC)3e=cuGearrzzpAIhGTaboK6uDdgR z^|69%BsVDN3>)qdbe3^86Ih``}g@S>v z&aW7FaY3}8qWa?emi={7&yaT*f9l;H{0N8Zx9S(ugy_vj&;t^$51*FZE!#J~21lm5 z?oD}0*Q-6?{$_X8r$j_Sh)u3M0#H$eDWCw>0=M?97P|AS6WqZ67)5)DqSHJ@NAv8$ zP%5l1B+YB!o1qcDHJ@uJ08{L$8bc3u&%C8i_3ox;wg~a8^q$ z8i8_N)NFWS7w>j)msiNqv>G3fSFs2(;5`1w;CMTv2@`lVbRxaTD!S#!rUX zfo|O=M&Xl+w;Agxd`*Ev|Aul=_%dmp!$-k$aacRT%Hv~kf)VxRZg^41(^T_4po<0Q zVh^ZNfNl=}U6cm&G0YR7r;LC`ck92lBtx|y+RmL;E7 z931s2o|P^)dT-Xe&F$^0{v2mut%g(NK3i2E5LB&6xToQgpz8iq?Ji@M6N#TyR9^B{ zbeM07a%1DHL1Nb2TPZg1%F@tW8Jfz7@$)2gU;^W3y^BP*O6}3gW49k5y_cv=zx+l9|e{8%zUU)yCIubdfcy<$@r@eGP1tro=&BsZgd;4-f5;|0S zn=hBIa(#nxQ%UpmPEVElUfCo8AMxNia&>UIPOU+03~+CvH6iVBfqTS*Tg9_`muiGY zPFigokplOqveD5uJn5Tm%2Ar2Mr4tWA2DI2dtCOjWV4L5+{te1V_P&|h^jHQaFrGx z&-JfgHW~V*8|E?TEljle0*0I{OwI@}X_cXckSd0>6qd(FW>*emlY;BPb;9K^0=$>>|x2?<5av%($-5 z+ATQTaU{73UHzK$O@$gKh|3G3VveTYB@q4^puOPsEseLU?*Rmw|rX{ zFk0;+JC-DE9bMot>WAvsinvW9vVhY_`)zXvY&1oq8&!)tD}cW)%=I)}#v#&%Gw}kA zFR&2em*?wY;0U>D2Tm=BMO@tnM%YsjQya@P!aiZ`#MMKv2)iy#SWizF2F-XGG!s)6 zl4gvUH6wATz3C32dOrZh`nU@`>@x-X8V|c#urC94t@>{BFU89E2>ji7SMr4r7)}M5 zO;$JUU0Jr4(zrqTWIk1d#n zBN-v;SS+xJcy;PA8%?)XCCD2eg4VMet40*~<5uX$1@0-!61^faflWZlFfEcv{86K; zS+BCuGd1m=T$ag)G73yKVxXdYLLEDgqCMRBe}mC2pxAOeJi@?P=kC2)hD1ZyAD8u) z*F;yNyLd$llk=6$_ejwnp;GfHMW^a1#w2o1Bf7>N2i>)Q0bMBZ;x-$K)$7LrCR}r$ z@glFcMdCEMueBQ&*xduzCj*P*Q@0<`VNd`L{D<}y>Ak7 zGB9hqXe3MIEMs-iJp_*JMgJSHGtsxLMduMSFKc!@=;;)=$rbTfwp##(@p>)rbY+1j z+KH3EFj~3DoR}956Q0FJ{qu@t%I+iQ<7&6LtM^GsOSYUS&C<9*{*~8|GWWDSj>Vp; zm-SWkipZ7q6{>oi{IZ4WI?E9?b2_(oSOZT?4OhWFu7#cKI{|eSh;$;)u@D)qDbTR_ zt*w`-26RuK5dBst%Xs{%Pp4;XdSeZ7ypi@AP0Vrx)1}jX= zn@LS-oRO@N+R3x9O6Ms}4m#GkVxZ}*Kp(XF6Mh{JnhekVRt#(=9S@&mGlokwpVfS* z(cNCE=`4^em);!x^(-=!E`=U^(vKW z7TzqEO1|y9^VPEJyrq`jw z-zBPC0gvt1 zvgeh9YGb-zg>%Y>REDPoZwQl7cp4{jW{F~3w$R+hr+hv~?3XT;1i5j`KCUMfodg#JK z0}lwL`bV)_^p+-+Opn*Qd+bpD8u#)PSawEOZ`s! zc)ci{15NC+zvO2v;_%I#R{s^9qs;{_h^LMkqp8lPdKH&>=GOg{sp5pq@;M1h`adBU z;hIC3o4WX0slhIKf)!!GM}E3oDs#W8(MU7%U`^%i@&m@7@*?-#%Uel~_V>${$GGoM z+jP7;VM%QvKilRI z&VT$$4n3(^-_uk!R3$!Reda3jj~sN&EcIBox2N$k=&F6oE0+P_?+yrPj8e#p;Ux%c zOV_gMlT%*s(VEnBH)4k~shLFSit20f-Dc?KfocCWMMJQcu~a!vjMl{ok{R4Xi2$Sz zkE2<=Td0i)?V_KT%uUHpdhHZXR&6(po{UMa{UqTrM@|Q|f_E4k&k%?&_Lz0nj!%MW z?G{htn5&`j1RIuvb11DH=R&m%ns(y7%p^7?scP95e@Kbyt*?mbtd~A$lbQWOl{WW? z55_NF7dy>G`y+Y`8Gemv_wOtWO334qpde@?U_D%yw^L+WQeiz@_9YNIC82Pc@O+ z$A>}`2#JHLtaaq3qE*V{GdVJCR(?jP>Qg~M4Mh5Fl#Mv5EdGP5YYGIl$$k5|s&gi& z3(3ml4)JVszu6v$XB7VnQua3pslDGf-CZ$=x)x%^u~zYX6*9SUg2K7bkTMi(;(akC z7;FL=jZ~kX?<(F@ztdFT)bzg zEUvjRP1eDXm<-%XX5XdiRGNfef*56WdQxb*D+yPBpvZmU#*L$NgTyrhw{5 zR0C3qA~Z=Dp*W&TpEjL_Kl0z^l5C4xdcCQ2keGCxwOG7^t)3vOtPioNCq9lF&Y0qa z=5|8>d{U$c6hl=z)X>K-YPAQQ+BT7QRCyj58(ei~nG2!0y;U%g_lx0vedVek+26*R zw=Cjw|JstH``HS_P93iKeHJGGadQCTnE#dcPgj!HA7~zI9Bi{da~&uK3p8DXEmMTl z0?qz!m}Ffu1<5jN1b+d~?$9^AWVJ5POhyKG?TZ%5@D@53@$4@kHyb;0zP}0}?*Uxm zsXo`Tc(-QVZVCTnRf^72Gp=(}b)pD1 zNJ=NOn}wAJx9$#&*Yz5e)=?+3k;J6TNG8MEE0OQEL=v64M*4mh;V9bcJh?W8r#SteSdIoyoO1W7>oH^AIW^9A~EzwxmZVhC>QI@GQ-wZ#)+Sn^}_VSWvsS& zsX1nC!dl$s<3~&q>EGSTtBR$-Q~KG->?2TqcDn$9s48$je_QPnv<98=8AN-(C5Ys$(=dq28^& zg_GZzjE~Z&*2le%21o2)0&1I|}I?%d!CYX#d5&1+DMoZI^z^FQ`+ucH2`<57UuPV&g!po-QCfs4cwJIV~*T^2tT z8*XfYRazm3mTog)JauFH=)!>MAvXhHwK@g4c?d2~j3~~<0mO)SjFJs*{;gVOs1s^B z?wT7%6C*RZw=xo6TK?VU;fYS{`hFFIKXl!leCEJd-;s1q4Lg~H9CK|v<$0f635Mfe zl}`7A@IFKgK%O+vUvZYe6hf3m8)?W=YGwbJ2<9{qI!O~iNYzN<3p z=-Bc`Mf$!zBD1Mn4yXoq^-|y5D}YEBx6C8@VpP6eMn5hkBe~RS1+F5-v(Ry!!Hj5!Dj8rttFu=!Pto z_&2y5j1B3^QSO#W%zWa@o7ETHiU#Wge+QJEX+meKa8hB!Y%4(Ruji3818YI5H& z6BEGa|0Q4BU#WzqJdHA<<%W7mjcPf{*V1yVo8YS`Qxz4KJ*PlbOi~pJe@$1hc(ot4 zTSFHAJ_GfNXM8)^f>S7V^^AK9*RRi?I^Fa!A~YU9YQ8n;DYtU;Gxs;wg>LgP61EWU zUIGwf+0UuKps6We3kvQo^8WQSNM=1m7OT|3Ahj=tx%Wx3HFbKldjoDsS;byT^` zw$j~CvW5IGk~ z9Q6VZ1U;a!#<%WoEsw|YJr~O2vwno|crQqEudGb58)g|3lcjz*Sjn@8eulP}CPo zyq6?YBv}+@AXfX;O}@k?tu!sWP?VRlv;;3@DsE8eb(^K#PMz|cI%VJLWH-a@NdYgQ zq@bp$Wog&hk)@g9rP}}JS@Z42$!iB(E%8A`|bl9_t0#77|-fe za11!u|1S_)kCb0A)obl@JV`y7D#dhgm$*`xbS|S(q512XsX|vcuHZ@|*q8?BTHawT z=K&(d<2u%IwNne%s=Ahix)#}D@!b$hw`eQ~a5&rQmQ&W29@EZGI7-KAeYR#znWFh|AV$oOg&C?9>^U5lDG7o~eTi8_=M;stm|LALeD!$Ek?Gl+dEkYqS7 zsREU8v0+h0gccx-tA%%IU}eD+d`UG%Jpvf`rpz6NM>tXRn1b!hTD9%L29N+NCJw%f zfJ*u%#?qYiyk16O81z(mAq0xN@>X5En9x)MyuxbLok;Z_zZe3+*YC~CyJA1Y^!^?{ zn?HZM7eBk;Cv?Pqjrf6sKoMi{Weii6({JjUwOkZ9orpz3Z~3il&pXvaE7?ta@U-S;3-2XK(w{YQC#cFJdN!oi3L1ddXYJ zNJVpt+JNX@eDe>yp=s&qB-s*~x|rVGTh+V^$n@8zaJ69%k5>aO)Wht4WY5F)76%`^ zc!nlgKHVBaT-OAO{R%~bVMy=S+utkOh z;*r~t_peQMga%G*K^zBGV%4QZZb;sigmPdZj`jZsSmHf{3JRN<4Y=zcG8^c^BA?0= zkx#i>l%L1)RC)h@%RBl^lfCKGBnMSoLIS?WT=A>AlHj{yTvUzJ1Uk3vQL?u{&r(=K%^GRk8l95MfkN0AW-Mnqc~#h-WpsQVXLQ zc(*DE|J0VM(9DS2*ddG3WOXmwUV~Jc1~Y?T>NS}22`0k4pzDEly>t*vmoP*Y%k6wJ6AVBXVI%dV>t(lE7;r~IO|f;%=`q)6SmEO%W&)?VPE3&qIA_u zHz*H{2)U1SVuO-TYtX|W5LNnLaVec~E<6Yr~(HHYP!n7ph!A97a}Y4A9*nft1vWn~Zde#}t;v&VkRF5QhM z_#9idkLGQUT}s`H4MMk-?suLO^9ll7@qzn@;$IN6!-j}Zw#Yook&ZiL7W z-3T!`bR$Ie9QEY{mcW^%1do(hA1=`;dw~?_l=oaX|8n(TcB)U#%( zB723dA+I7_pk8emF9m9Jfk_1kO$9n-?{;cX;R46iizv_xW`qMXKAa^{-9nfJrKCO8 zjeM$oAaWhC=#-t}0L=)OuvAx2liMng7sk`;)Pj3(P1ibYaLpS|*SC!v{l)9q)!~Kx znA<5O$o`@6GZ{6i`zHvaF`|rIi-k>?vk)QUGpf@0WqKNJ80&H7Z7Ra~>e)wH!w_9j zG(_$5i#)jb4h)~Gg(w{^$Fuql+)8Hh!88a>YWsUg3bO~ zm7dN@>QpVz5u!Al#n-)@*B{_Dg+1{3E0UqElkbqeQ#e+dZ5O{Pi0uj1c#o$W^AEEZ zd>sZfe4vBhM0W0)8(}XkKGY=_A)dAczxJ+M75Rn%|J>gDZFw5X$Z^-?~R8~oL} zyd%EKyoB0prE3qF*;v0E?mjmGzFPhfOmsW(6rkbOi7~38-+&ezEWFG1rob=F!aAh$ zlmzc;E0%EER}09q@Z6B&UCpcE!Y@1XW&aR9C?fb2Iz@<9Ll<3~xHTY{FR|mPP1SM9 zDKMKvr)-9;clBhnD5@wy=j@N1EmC#uPAY3}mKs9i+z=X0HlooiTN6IbUg~y5mJ{Tv zPWXqbc}^pxF8P;Q^-B=5c^%%>zoQulccoJ=ZJ8SKAcE;abzO-L;SJ*$jql$odm{_+ zrFx^IFdLcWyc5(v901620Yqy9t8v0zx7Y?_?C+c#F%{pJC*(#9!uMVHe2wSz_kC@)tGD8a_xOdz{Of@=7`9Y}81~}s zxp2~5SR8?GPxK};h}cL&pcF0OgpNgK+$FyUkC||s@pYI}eKKf)##ULB^n!_FTm&aA zL)LomNb@uT2&J{kYLNyvi%?oMc~kcT0D`5R0L1{<`?3~=Fpxrpe66FeY>^hRe%zq9@fM@4_&)zo?tSiFZBNsRL zEu9mO@0{rR;Me6tVIEmm9)*rwR~{|T5iUMQEXI3GA1+9nb;UDWNYcILN1HM9s*rdC z7-udS=a_4FY*B(8brla(&uo7cLu;0|i;RjW>QUZWfC46fCSpmUZw;aC6ZCi%Z1^NT z@8I(aK5yXD4!C`S?~m{~j?bU?{1cy6c+a$m$SBYys&$)~*!KUgzqaipHLf{*LgQs= zzKj=lSir+;y;b2T@m;?G|Dy{{c(5lGW~m2 zazr2D<%atlLNtTJRSG+KM_mHO-9EwUlxrQ%`D`4Y`r2qYXzD^~rp5 zF$U<=9{w8vn4~^0pb@bM{9*jFYUFF#u@Gl1Yn3^RgBh!68WZJSoS6{Y{+-w#}-|f`G!!iw_P08ARg`` z5UG^8+V_LMR9pWC9V?lcd%@CsMP*?k{=0$$vv% zgnhy7GTJ=$HoJ_<1suYS68b-R1MLfoyn)t**LVYog*fgUSrl*Da~1O(k11>gG&<-? zbfAEBnlM;8;HWQFFwY@lVEMX}FaQn)W62~YNNzU0{skDV5rx=D76@k9Qx*8_6vC;I z!QIlgn`Jl7Y+ejkN^DlDXDjTe70nN21t=;!@b!9#vlSLS3jm1AP-p#PY9$3>m!_jU zzF^`W0aq6M%jZ8BySV{_e-{6__zwo`5m@}=Ukd*v`bklB)z>G2jk|kRc=tzzYZq1k z+-&&HJ1t&`2~SJ4=Ib>Vuu`kXv`_?o#Z&;HBD2BHHo|-}_J?$V-4{?7C@Fps-=647 z6Sp354Ni|Z^khDI(sgIRKa$*z{Tc4y%w0_qdZVHculi4`jJq~9Mtl^nTTIjUXmE9! zW(7AHE2FGn71jmxt|(=xRG8DNc!WiKD%g4>p2a$~v5JFqyqMZoz5SMql>s+mtc--x zfU(l&28@*t--ZT84b3cH3btvu6Jvccx>pRG_3GdEq0zRNZ>+L%vZfqx(H8t+jww35Ik>`@)ic%y&7%IJxNm89gUUn)|wGnxj#1UxUtd% zz1u`r{(v7jJ{NAnxfVO6)kf(Sp@<1Z2@A>-!w_<}PWfMlMWM`F!$ktP_@;FHT3wG{ zYWSN%+<%d{ZYk4Y1Inn;ph?qAM&DYty-&@NVB=S0#pu7V1TKlh4MGAF<~VMqcL|F4 zIA0z7KlD=$U_&rvq8{|$-K^p$s@CLf$d#`78_4P{0=OCg8a`Ib@C-PI*;knw-vk0% zF2Hg?GGcwX5Uf@`T+P1v8@OlanJO0veHyzrP+#;u5(|x8_0|ZK6M>~bAh1<@$Ygps z=IWJLm`OrSm`&L{yPrDrhTvPq?EldC-g`apJsn5MYyFStT7r3~c$?4L0EY@NNH*$bMGx{OG*BU0Yg6%ce0h24qTw%ZSJ8t8D$TZ7pXO!_NKB!4rm z&Opdtw~+HsqwfpZXC(WGI^-6z4^_*T3mpTb<8x5v!9?c}&E3U`Oe1TM}Lk$uh{UE$pSb;L@hQ$*=DF`!q;K4rvEI(|Rz+1Fh>ffCWK|e*S4xh}R&>25wL+!}hVRQTO8cU{UTJtt3L(TQaw0>hz-0Z-8YyVN2>?A?+%ny zhhINa_pM$>%df8BN~r+1kRqPIE7+;V#zu>|2rG`$_-V|xleqs!SNR0W`>$b(aqseV zsB)H5r5=1C9o>>D0htD&&^(8j+$($MM!byA#>Cu+-|(5%CpTgdKL5ez=cL?-&+uuT zoEvcvpM6O0h3~5|b&kXbYm$y!tHs2&?fC!tYZuqCJ<>ab)+DkXaE|^&jF71t(JSn| zdZ$7ZWw&h&H@yeYzil80!m9ZRj9N!E{~3?={8!N(G*k7RHVIO5$?ou)@70UB=36+Y z1mAFe3?A^FiYm&jmICZUt-XjAC%T*WRBX}3I=SzelGkd*>Ot?R&PGWEa$rBBTQe=n zC>e!5C_Y7Ffl->v{(zOfdcLTP$X-1(pVg{(Ttni-Vy@vfS^lPjK|drQve&9_5H?gB z?3|rQ?I!GUfy6UFX;sui zL!e+hol@P3`Zmt*hK5EYva!En&sk@ODdP;;I~b*P$l_f~D8S@`OZgl!fyTY9w(NA}JeX~w4?3K*}3VFofRCM8; zfg$n)$DDzzE$WQS;PiHickOQWO<_mxsa8e_Z<7nOLMf-4OFHqz5lkYeqOd2x7j>zQ z!n@N@ciTf~^*1oeB{Ok6&qs5iL6D4hs2s-w=t6}XhOm)ThP8o(7@hld(G;56{5_D0DU081W| zjVvG-0W@aCE^lR&o&#{pha05{0`^SZApp4FA2^IT(!2Hpp%kdlg;apreHsR)<#Ax>ubZ}`vcfZIOi^a5tl7TG&#b9yHw zH{#U`b0a3;`#O9|@w^V7g?QeH?}!)}m||k084f)ZB>nWz=y=n*&Eg~suXiuXjrg{2 zZbWQqZp4N7Jd4lQ__RXWBS>3`=cn*3u;avd)jFC%B;SLcyZ^$;2@#JiWr% zOhB|JZ$&3v%Q0^^@DuE8Pa?B!Ffq~WE5*+E(lJ+swnP4gM$Rq+S1Zi`;$-$YnM(#i zRE4%7&Tg4O*GS8Bvr^vGG6NeW?^A3`cLMP<&it2FsaF4#QMkp#DC~#s#3-DBXVo4@YMa)QA&qO-swS)G*u~|Tn%==D z{t|E-KI1OUjo5&k(owqX>zsi!L7x@eqsrb4Z)j$#UN1^JH?W-#XnVnvF0?Zl?PohL z1>Mc^aS{ah~XguKbnyNsewX`2;xiGaLg&)a#W5I0->?*)N>FX0zy_?Hp>deqwl zzcu9?;4eBOe5SnWBGRxG)~FfB=$JYqTjgumZ3+7^4SVM`fIa? z`VJ}SSdtG}_LIk@dE1KyDnmD`98K{r)y*oo8qMnJG^^z@BURhxx*7LH1!MSw{vpOfZSkv*~7 z&gKtbJ2s(xY<>!=H_P8}+Og!rW=s+`GXrE);V{@O##7rX%2pFK&<6+99U=V;7 zIzU@?(bZ=J8tQ%TDw(MCx_WtR;bWFvRzYU4cc{WlF^=4)PCYBF_?@hdQw6MWGAoQm zg=TpgDA16kcIix?F%!0Wm?@W;z67>r`97c?YA}0x`3Gles`OX5`&^XVFtbA+NJDY8 zK3lp8j$XJTzIuvC7ZY?DEz0zjFpeIF`q$`!Q$=(H)&a8SPsH>AQaeYj{&jiW5eV|S^+dV@QTJ5Oe?!t1wl7}YAHSJCOKwibQL+C?RCV>))x;F; zMYEm};s-et8Z=#x30f!?I3?rjcw(slUzLRatl(c0Tfhm;X0d00LtDib%X=tN{MwIs(}4OMdbL~G_IEh3oBca1+?H?ppV&}8PV-8d zdPwB7v51#iTRsGyVEh(OR-@rP282!fQ$SRn6Af$$cNjQ%)T14Al6(3xn9EQGqpZ}6 z+#Y%gX~!n|MlX{V*O|d5SKtZ6oQW{UMI&K*ZnjJ>jI}5Aw?}0(w6P~$Y>&dJBJZmp zHYs)U%OvphUd}69ylqT*DIDlAu0PHTUb+3^iT*$ws(`H-T(4d@+7NVS?SJeFI-#Zo zE(V9G&z8b8c~(5~`dZ%v2?zG~WP-e3JuTg&{U-t+1DM=TK1Uvcg^yaeFL@b$xHI+r z$%Uz6JrA|>Gr$>?(K8|_frh~l?bQRUsXuCJSnBja;U%Y)8Qr{$p)y(KDwGM_4rHZ$ zkg`d53v^$FMDkyRMAY>h%BfV~3}V7tp>1V%$R}>adJMOMTcNNU$@jwwJ%DkzfH!Dc z7(~rju4ypgN#rfhH}il?B4DYLrXz6QrA&hxA9jrM8IKmL%b6m`_&2N$mmap^NL2zZoi1!|6jfw`n;4B^>jN zaN-E(8o)snvOg)l$|F~6qv8du0P_G4tyL=!aYG+KD7s$lcuKJSABL6xK3$8&T0TeZ zr(^q{cere;Re3l+sjWadfCQuB-hpEzNZO9*ln82Lr5-K3!(0Wi4DRCjLwzURx8EP7 zh`2(H(e=7n?{r;n{Q%TkaK?K3q27jj#PJV}!%3d&hod)me9EbUm*Ul_E;P>B zs%td%qlx_%jr|8#0Q;e!8T&-fz}E@Dt*R5Shd#3vr1sce?fwUO6z9Pu_A7|aoat~> z)nW1ms&5txWq!w)@$b~IM-z4f>TK$79xUeu(uZ#g?E3)QEZ>jp9>{tQMVOt>L$Otf z#Qdv;tUz21jn&+zTKhG!%4uqzG8w)~0&6VdhAHquE!uq$M|suKf9cq;bSY3n+tXK2 zpNuKRi&b=KEWZf<;CJk6AlG6zVy9e9h2JuE#z?NTm3N8Vt%Ae2WET_21fcs{z6mJ z52~~8W8vAx>a$RKZ3Nb5fm$Te9~v3cFxyCN2$YFpiTK4~nNKoZ1Xt6hl5JU%3tow4 ztaq{z;!X|uiY#7uH@67Va*B`7L6(PmNerr{Oy}xMS4k$l%yFvuME&}W0633T-aN^< zyUA0wMtl>h=ea=bM8Ir#Xl*=DXlTFo1p2a}_1YitwVF~(En6fkvsd&I99+!X4YvsO-VCLf-P= zmTxkyWiL#YQ3KEDw_F%f#p^k|&U76C$6wfAzI+bAtLp}Z24P~6GYD})2|^1>688Mj z;W&5f2G`=z<+$S_R8`0$H`e@^F1Zcy@XzgPc+UY@%#Z1mYuS&5d~JWQFvRLnna7^5 z$DN_3T*hUJKE6K>+@T&u+q6tKO76uA@d>F>r~cGTb|YW;o*u-8g}rU>a5#{5AS5@w;X$xsRSiId=Qx76bO1f68S)?bh7SEN@6nThzWcwCw7gt15oasYh^s zlDWA|m3>1;kYEZ?JwBCjHi7Rmqyc9!N+0GEI=0T?|s{D05e$#*(Tj9d+y%-tIRj&XV$M41kbZiRTN@enK z4RSTd_bo^V)Zit6`jm$1==@sk*`jU(Y?MqvNzuEgMRjW)Pi8oVnwpmp8pF3e6rM;) z7mxj}g3M(|QZ8!jMz{Tg+YZ{lKv6A9QGb?6^WFi6`&VIK0=P^eE^UAd<}pwp&=I2t zt1=!Nf!qY2s8d`~+e>7(13J44?}T-nVU}jDiXb~dTqJVD*-tG)3hpMygjM_pCxWS0 zsZw3>09L#~SA4P`D)xamO*6M9LaiG0+L7SLEE!k~$e8;3DYpi2Gz|bYX#lGTzykoz zy#E!^XVe<3ZHRsbCW69FFqlNlnbOV*Rt76v8J89PVjnX6$9h}Ee-i7dDeA`sfKUgJ z=*4FM9yGa=kbgyuj;2o^7jxAPoo6r-Evztn3xyQwk*U8S-=~68!ud>O<%};}j}%P* zd8OYPB})N9Yz#IZY}=y5^d%gKaC4rZ{$*%X< zKVVhA9JEoU6cATIiaGQH-XgY#ofDen>ewNAZ+_gsmBl%xm7@E4h6wilC^@ptihHaR?&sZzRb zx>=SU8EC4SeT6d&ipiYm$2S90W&_JNDhjtUBHw}-v-}bOH&#l*f}xQ)wxKpXBQs-)nxkvEfwlC~wH&<&wJbm_ zW_dDLEiebHRQ#ykM$Gi13YozgcMA)rsH*|N-v>p(UhQP4b$Fi;t`!IrAAzd@AuptM zfcXsd{6w}?YaV|9A~ofm@I0jkd=S5J#8s3|l7;h8K8;da)q8L1ESseWbWx_^tk+gG zdJEAB#kzHZUFSCk!}1SH`B|9fwyHMwVm>$)YFJMKd0&7O8S1_gv}pj^6u1z>lA5W2 z!n`t>;*{#Jbl6k<#LV;%45OR~Wm3du2L}$*8)m9RKmuV7gZ2EEX!<^#0_voIYG(N~ zW=c}0yprh?X1Yjcn#@eml8IAysKd$qTb3Qcz|Gbaw~$ZYA%da%O);suRi)k|KD-i% zfJ}`AV2GtTfpPwV|9I1R@!HFrF^l-wdMof`GY4yPw&;tm16RJEN^pZ1z*1LF73@9Q7PRmZiVByKD zl8VAx21UWle5pYVJN`H5Z?;nkGl=7hwcz=mhkdUd?!v#xkQM8tg`2 z>5v0C&qNrdOF%_C!f~gchaW=!!r8FRQn8Kz>hSyHQ_=l;|1+YfgY6A_XipjGe+r3U z9_>sIF}9#s2zM7GihsXu(I4ldMT^l=5)OEPKOfMg)U7X_sZV52T=RTWM>+fzPm$aW zHYw+3r16(JEcUMGEH>^lL=bG)nR`Ee5^;jCO1x72Hb-!}9hCLIfb|R}feFOvci;+~ z-1Y`%xmK$-{Zmvj-XzC}9|)CqtneJW3+%rfA*r@lq1$sTyo^mP2=1PtQ*LrKA?zd9 z@wHL14OAn+(+{pml*Tr>e<#`-^!-JyjJLXR&4aL=L4?KM`0&pSXWJVZ;_MBXULKu8 zkS5@t>I5qE_`J+afmN#_-=BGdM&=ncLev;+0mjO4c?EMOS zi3YMut${Y)Fv7`N1W-*ZlI0M{<9okZxuOdptu?3OZd~=$VwpD1QaQ8HoTF^cIKlI% zv;AAAzS^$w6*~rcrHihbP3iA6; ztgun~zfQefO|($(9u{PP>%d$B1{%^Me{7TV_R7ul3z6P%FHQkC1EEgkNiz#CB@%ZD ztimLakOLwSw?haNIgs(&Lu3w@@$?38Q=U5d7{Fx_To)DKGXo1Zv{U=|{5@!mdBjW- zW%$NE7#825dcf6^Gdwch`3FY^W7G^6`yaKMe8^CQu);kTP3sqliqgzvT%GC+P_g=D zr-MMhaYwkl#CGuko`Br;AZ3=7lTQ6QD4s#iSSJ_B*GF-$29J7iyE|~ zDM7u9@#Uy|8R`R_`$Oh_UQeSJod-hw4+I3E93`?drc)N3_dGNvTHb}d!3nZKQU9to zLchpvf(GxR@|XHDjHzIWE7T3TiW^zQYr2Y!iKyb17FEPMRV1N`hLN%y)qKkU1dvHR zH3waxqBOW@f_qbgn?`W$T7U~J!9IPirRmoN<hzqn9w~4x(9~gt>OQn?Uc~l2?y~uQ|C=IN|Z3EJ(-IG-5YTEtH4V&c`+^( zsEDE7<$7MPZoFT|pi$9PmB*v4f_nAeIz6gs50s{30YyNnXg=`^EvBC6O~mP+gS8WP z7*%V*-?pet;64>eUxjqlYr=2gf@Q_b8xn$<<@{xo&WBf>`tT89mNpn7{?&x*>(CcK z)W?s8R!t2qwOD65fC1!xADJ3@f;yODvk75}PW*z2N<&cR0>YyLf!z>dBQj9-vs^PQ zktIIjvmzr}M>Wt~^)t~PDeYMzD@0%Gmvy=<9#{Q}bdS~<@kI#gLgdD{EnCeT_+qiZ z2k?+)6;Y`zkK454+BhxvC z=9qQW0+wLi20mX9qR3+7cLY;aDYD_T9OEgCr8WEiPeehb|}cye;suV z+<_A(QQrN%t<>G>TrD22c18pk33?uEI9pYrsNXpF591LQ>+7&}a`u%*lSILs5Z<&` z)zhWL3Ip7~KySAWItMMT10|YTtcOmWdj4tl6`U2QAcTQ9Ee!d?t-nB;HD}fTp)Cl< zx2GshEvCQ`ns{gA#}>s@oB4Vkcv9;zPt_oU8dyzjVpb>bqsS9ij;;$8TFrA05rspc z1PoDUYn%(wGyZ;f4-Q?>3pn=#&bA#7jR5Nfs6+ZzSSottvwcgOdW*e)Q(q8}>Sl<4 zXB<%1SRjbph5LT6mcr6XT|1QNTueIG7-NZb_nTbB8l?}Q4b9vw>ePfav;@~v$n{eb zrwM7dfSmrp8qEVefo37lcbt_Pfm>jhi0u~MF-7qq-<}xJQHurvMQS;=l~{TmLK-MT z1D{Ob9u2&Nz`Hg9pAEQyU#0bq3yru;sBdrAM#9@N!Y#MT#Dd_66|50J!?NOfc3Q~& zri|4q>sb;;8)mBKh~6a?w8VZ$2>XFr!%p}35HgpFnv1!8OCZ>#Pj2Z&dZ8~GcXN;0 zrBB-lpU7*eKvFdGsBTk*rZdpp{z1Cgz8+|HBFN!POuwKCa4x(2$EV1y08e&xqH#2N zP=xrkbFwpKJG{8Z^7^IXqAaz%Nb1`J()u68=mx8u!}?YL4-St@QJGnOhx8!Mzo0&` zd@#sjOFn-}$hYe67(7H~8oPv}Y)$WO{|hrzmg=dI8AN2}Yh)I82Qo=5kRea8@dux5 zLgp_gi%(;(>sqo`mReCL?cRpA`k&HOozJSufkIQe?{wNdw?$Pgm~Gk^GMi(`OPIi4 z)pKaA;$NuMcA1R2R9u4@%3D2$ubO3Q$&@YmEi=S#X`0_I`a6CLbUze6(IGzW>W}IC;Bp>=^ zL`ZO@+&N}l(ICWY6k47`p1oJE5%+WjEhmD;O(OP3fn2KwEOxq$r2!BmmhOD%b1H|0 zeVudOh3!MAGoRKL5l#=!-jnbN-^`xT+8u6vgS1P;r7W2r#)77W-9+mEi%>BeuKtsI zD9C8MMdu(|R1IrGHJw`I3Dz@S7gV9rV>7yOKqbndb*H%)n$2+a{ux=+-^#>jGfGMX zckaC*Zs{Xr$_3Aer3Y^Gq7&Atn5D9=jN+X!+(H?83;D$Z!MyJ&2wC{*vDm-%ie@b2 zcT7!qT{KY^6J-)(#Vo%FwW*KbHmflt`#7kn0}n|T{DbT~Uw6UHUC;%AhuH-c{`-)3 z6+L^^mFN_W$;YEZnA`+R8WvQ0$&rMbzP(HWx2WrOMAL+i1u{tD)b-b)mK5U69-24L zwpIZI7h@o_&4puO8x79sSpkOCOto)lWC;KBH2!-r1pTjT{GUkx{uc@UA(cF&;2!Zc zW1+D6q5WGN)g!UDqk3Ei>%m^QvLIBfQF4il=P1PJj3;jeSUt#val~W22%gzmJVOl;bmTG!|!)vo;!~>yg*%|v! zuqV)RSvEg(H1;w)%fZ+yCreK)zyJvyjC~6w)HR@hBj9PPZ7{jKFZ+mP#4Vs!owHs% z(X!QVlLSOILF9-Q++hMi{0`7^L{%SHlsN+XSqt?X!BYw1h6!Q7lPqXzcn#(l&(uFO zSUE z=QtBm@nWbz6hd}cyg>NXsyq6d`Pf3xK~` z^`NYQP-9>haOYkjX}|-Xld-q#Vym13o-WF*8Mkp6T=)o0-;==(p#px%3JJ{IYD$6R z!i8V}gFal{i8Sm_8fL(?gn(9vle$sL{!nLY?2?Jy0FB)O6j42aU1*FD#SEYrf;moL zUPhSTB9dN!fk@Qmi71eScY$A!A2dgdOHFgRJ*OToDX5#p5Kt0B;3Fh(Gb$DLk<>TE z5YQpiG_idN4|uyGC>}rxYp4fND`wOdea~A+`|5aVFv<)<0q&`7RZ+KMrCR0{E&=%l zVS|vY(lYu*lu=UMyz?Hbkj@*Ve!Cy7%4Ms%15foGeggV2^q+r-rq-?Tpw>Y)emEd# z%TJ&kGSl#>trfMZpO74?_NyAehXgQE1L#fwZ#4lJkFtSH#0GuUYJecpPu;Hz&Sb$` zbiw@w3QlP%NGnQUu@n@uLPkEz8YK(($~!AI0(XZdvpr)`zQM!Ms^=k8h{~Fxws{(n zpa~3@0mIPI`d2#w%`1T>AZ`oVox9hh5uqXH8uVpCe!S@P$QwR=MTg%|gYkzN* zy~9Fg@wYX=+$gz)|Kp>%W?(*-KGfa`Z$-t@huU$j{W|CpIMj|97BzOjleNK^dyrM6 zZlE_s^iKMc>wqX6zAmFvG#wlOWh(f8yb!V82ce5qDCGF2sc@QYPWM_9!zRyM;J0DSO%nt+M6J6Y!z5S^f=i_9YCM-4*-) z$Y!qk9&f+{$#`Q?Flxn0B%?9_=pqcu7 zoHXPfW`0y>9?s0)0ElM&fcW{Mk2K|RvcfV-zr_THr^Lbp4}3(H0a-D$)TxH^z&isQ zH;O^_uZb`9K;k(l2g7V3ApE85u-^3kFiK*87@gk;Ry?k!a^8)HDlE%DhZV*elPbp= zQ+CIWwTxL6nD%oZdb28xxxbPU67(4xO|v1Kr?q32t?+8Y9hnYXx`z|KF@GJiw>TjV zDY_gNj5$t-G}+LpnU-;p3FyK zx}@*FDnAf*i|eP}ycdYB2ShO8vw)5UBogrZsL*KuHhNVgy}RXSY}BtoIYt+b|Dfg*2v&bQe$W zOjWK3@#+@}INSvVl(XB>7&WU)_$~Jw)e~`iiygD??*XtK02Ua4_Z~XDE)}st1sb&; zyGh*mv~kM=$P_t1hbjy92DnV4`;)rl6i2R3#xU*LmO9FQz(urxr|yD3!RH9OG6R)? zSog)DE51e=DE4zKC|1lCF^r{I{wV$j+JM$Ou{%8zHV?D~7_Bt2*hoQGEN7u4f+W>5h7w>6`)Cv3%^SzAF%%cA@9|w$6Ji^ByE& zFb@JJo=|SUK3?c(x4UQn?n^1UjP#khS*EVL)ju_yMTB!u!#Rs^{sTB>`8>3!p`UP4 zNndurgF5@2%>J9s{!I+BPnGP?qsFFrwobX`$n|3C_&%Di0|&8%5b`f~PWDVk2{oaU zvuqm-pA`56aVj}Ur|){CVxhp(JEODhKSjaMw!df6ZX{uNw=(9&f?u#`%kftHE(^CC zWZ_oNgd*pW_(v!DJN-i6-i^#c9E zbj43#X25OBPBQAo3R40qxphP(6XBHfqtx&Ggbe!K5>)Dq_!!P^`4|Vd$V;Fh9m*{oG|KcFgPHM9 zW94{6e!=^gD64D~T&;$5qu>kV=;(Q&z#m0PrsF{{v%6Nb&VmjbV{bs!Q~Im|6X3pV zdxL3jB`!}_VpU!GBx)%=Xq3#wHzG0=^$3HA*C24o#QU5P8@f6VJSLO5Y&hhVF;9CO zbWGpwv5%>o%MW1)(_0>TY5Ti`v9AIX`rp>-WpQh8Sm(RJ*m~|0^)gdhY41lCob-w; z#6H1Iu;R=m#Uxl{d?;9?V{A4oyNg_wo52#klC+ITqbJ`Arn0qVD^l>}wvVcL zw=ruCbC)e}k}Z3&Ji#-jpGwG=W?zfJ?W>3bfG`L!ecF3}p+_^lx`rd4DJ6sDspLE99?Hz|ppig>)L0Uewo%gHb*9 zP*KJ5wJP=T0#TUw_HZ~rS7my%KOLhhi^JS+PPv$txR*R4pT1_(I zHw6Gzpoy5QaMCT2^ISf4*~UD*5qk}K$z$u7-7OZPD1m%ZNc}iMXFdy=^XyVRbtQZ< zr8|UmUW6L+IVZ>cPZ-X^+u(g=Ed z#iIN>46=9=J<`y-R{{uTknvz-KLfE~26-zAy?YINPBXR4x%Z$(x?gq$PL9nO7fzx( zSs6HogU5OAE?c%jezhZWr`6 zf#Lj}G#!?_+wi`MbpmQSLXm*|L8spU#&2vz@arGC7x7W!dFe2^lMkxoe08k_VUg z4MI4aCy>|U%g(^>4ApjlwEiJaW>E&*UE84zK>uv?fPaGCrI;OoHk^evaEYglZ?}O8 zlmcH&hr=HPf_MFN99=_4^_-x-L;_bE5Lhtniq*xAgO>0I6aq|&okGe1A|FOa^GB5jB^ev7^c57vEo8WD zh!6Jn8bqoX1j18SNgsMg^bc~&<){% zzY9N{fnSS9XDv-`!;KCVT82|ywd|4jrDz<7*?X`or%k8`?zoyfuEf4ZVFcCml;!Qt ziN<;K+TC_sCN1FpY-J4A5rj)ckZN3>8qJ6iaA_n$o?{6A>^ zZjXHG%B`La{AKZFpSm$1|!v zj|HlAfsrhr0O+q)uR8T!A@>BpRjaP%9#BY12nlyx#tkB|U_e3OE852>18}@}GMC&U z8nE4*-y~_oL*_fB(kRIVND7=2O|V;B54 zJrV;L%kvlpDRjr3ppxu3BO0Z9NT=dpG(>|@`U!p@SZty(_f-J{1+&A*IXo+!$eMrb zY|sc%`VM}$Ghd+-CPdf=Hw&$bKp+2R&R)I_7o7sF{zrO3IFrZlKTryger^-E%id>E z&Y9ho@-|@14cI6DC+aGX_0TXsujF>>jOw-;DW-@9U8Ox~5^Lu2$Xg zR@pE}SnQu2CTH0(=%RSbXF|lrxXVV4V@oL44X!EMK{CYPV>C>|zLl(NfS^EKgwh!0 z`1NBH#K>%xMJOm&B>q7*SLl$Gvc@Su)*Re&99@AG4g^di&<`4=9=s;nXob`v=%ax~ z>E%da^*QMk`U+=X-ZY3H&L5CIi4aPl7W{#SXa(>?jmk8+dbL)44I2Sv>r3()nAvER z{V3+0`BYZi_H;x={2>-@1u?Q3oarni+M-IMBm-k48ymp=)U6|gvwDIN{PA3j`a0Ad z2UFZV5}mAFDMnI)q@o@xOFVAD!|YYxl4U}3901y+($CUt`yNuHhFy5b(T<0&f28+y zjsSc*f>SBr2U|}};v=fC8bcqFfdM6LH=cvT^DzO86T*Y&XowUG5q-p9 zP4p_@hW;N1{3NSia)vgEuFuiA#G}&A8wYv6q>=JI1H@AC!y)g{N-J~q91PK-tMO0) zx))xdzPnL~z7d4>yGU4Hhg(rl9lS{^Nt*7Q2FU>*O@eb|mXHW7!+wZ%z+N#}6fc;^ zmmJbLagu<|1z)z3OU2J!C41rBAvcLz<1ykkhPV|D`w5ooMoeabA`E0TLL-zwgt}@j z*o55bHX!71!4F`}!1>6WP5;#pS9LJgMxaeHTNky#57ZBWg}8L#4Wtlc&ygFX#UG%R z{)=@5<5|HeRP0pnAQ}-^FAL+`Zt1}?iQ?5vjWSBP!yQ%A>j~zvgWvo$)Oh%Cn+=v=6u}|~&A`~(Z_yJ9F*e+2Wm)YMa=`R`Y zogIp<qAZmw}wMphZGWJ6K(Uq>*V zGngO0lPfUoPgLf_p2D^A-#}XdBa$K>`(9YR-xE`bg!8nDtGKQdZ~0GD+m2dNe25a5 zr51pyfj981>W886_kbFK+fD$Ox112r4WCWD5Gc`9aws@wFWbhApln&N=p{ z>YfhJ1?(6**Oe6uzPbo#Vgmi~H}u^Ly6;{(g1);9ed@m!=$Yl)@jq}99av^BL$`o( zW%jFh;9&m8ds-NBBgOmJI8N@LT`v%yBgD5gL=Pc;MS^Hiz%!45<@g6gyyb^T7!-U- z7rc`NKhy=!X2I83Fhx+|0oA}H{Ntc>CK@mTClQ%sfYAcCmSW7Rw{zwChhu{gf#{)- zWo^9Bi@}a-^}P@mIJy1W8TzkRTErkZbYACT+Z#TN@o;Ze5jwLIIt%37gF(7MR!xJf z%KeqH>TJrYn(G{cbYL^m)f;(2t^3eW|4E1=$j)<-S-lHlXl=LQF;#+0{=-OZ7_FxB z`6oVm)I?pl9}EAW3m-U)!i6a8keV6`yr~DX)B%?2q6YAJFQ40~zI?90GkD;8)Qjq0 zCWOnSditU@*^q11?-N98Ws7DYms#G0EjpGX>+<6D)HR!y=2-qp{HW&Vuk+dDHm5p5 zAAmID+K$jFJtCC(@(ZUZJ(Kmt^6cI9BROM~Ao9Nh%|ZmdhOkdz%w zcijHGto6p+{~}Lb>Uu(FTXUj6l?qOW?g~S%gf|oPIoY3svBj0+4Md$mj1DI`1O~c!LM_3Ib1~Fe_0?SK1JiN#BNcB zK$T6YWx(GopU+mn2c+XMouR8!;HAF2FVcy*u{4>PS^u-)`a|a^YgE!b$MpR>?>ew9 z54~V1TFCgV-g=Zf>J^--Ks~0Q!ud6%y z3#x0St9#=hsvE@Ww1^&yni_6X?R3ss<~$0r1F_l6c@}b-<&x=g^__)cKO!|SmNVZj z{De4pmSw)uWpY{OOTa=OLFbg^nNX!pEx(sCWs9mfzY+GoEoyljr(TDESrcf!+Nz>2 z(j2}VSg8xf{3MpbbMehNsEd4uBPg}p-OJI)v?DS*H8N{{0x~xM8DP-N4oRBz1Ttb` zYyl+XexdyvsZ{Z*$28(H@R-Ol%)ohcV3n1%-2Oq%*9$c`I>ulhiF-bJy}eNSYpd4s>3Po`!9bGOw@#hDfd&HB`u- z2LAC6)}8xF16q71D8Ux%rSU*PqE=mm>q03T#7KM__hY#j@!}NP9qYmiT&h`IeZGYz zd*DKrh$SwBSY!@;F1ql}I54qZ5{XHZfFti)GU|O}%@q zVEH&0!+*WT@&aPH3fL1%&4rf(%fLu%c0y$;hY-Ty1YWb$`dDRTVI2G3Ux3?y%Gx+8 zocPR?y-SNh;3963=IUCKS<6seOT~|<VZNB9+7x;y&+f(QN4IJVhr1LLk{-hRI zJwmM3GJiw1v|>H;r|bOr%zp%Mnz(Bj;1k)8?tgfl;~vZi_8!h-iF$tNOWDny;rs&Yz%7`)U_h*-KaM+YcV1SlF_#w#!CI!P|}Nes_i&b%0M(F0`eE)5LLy4X;SJMN)n^}iqoe0)5q)wu76 zvlF0>aG+v-Y7Q2TBULgyNJ7Ckyu*s&!@bqJm;j4|eSknxxWgJo@l3#Emz7Emy$N8} z`H{2hcp5Y!uy7Q2BzP3=#MZP^<9I7|r+_x?9W;sNW8iwCHxO?wMulNnk-A0}yx!qh zhRGyIT^$*C$Nd)7M<$59ow^C*ckzh{xd}tWh~morG*M#Go$JRe4XU zaJR^AVe4<;q?c0`Bm7L)xO}n=Ob6O84ktvl_rf}L-wIX33!|vvT zoibPI!)?p(9C=%%>tbI7Q0x_5Y&nZ%ImMdB1&g(oVu9%xQBAzcC$efc=g#)D!@{G! z!ADK|aE`6qSv9i;sm+50Kbr&OLJkAymlVI-fdEM3=PG#>1Ov|3U?_21OoRo*i#xv8 zrS78AlV%m{^#_pwQq%ITgUdIpBcf8wfYcloxiKbEJsW`~jc-`gMt5&y0%v2vWA9Xt z@HNI+hLBO5>Y9Nk{`xS+)I)-K9?u!?adSru(l>7AHQ8B}MMJ?za8s|s&P%5H!<5Dx zgPigY(~a3qnbq29%;Vw4+ypv`&lH-Hvd)CG^qG-vZfEdFwF7eyoZe~97Oy@mVtlv2 z#bs6}rVa`g<)YSLWmfIXU$Sb89#qA;?nhYneY)TE%l6s z@dRPqtYO?w7%w?6*nG`1KLL}bR_b^e-5@sNDKlc5FFa(j_Wdj!?S`|O9?ak76r9Mx z@V5_V+rPsIv4}Qp-kP!KBxI$T^@s696(78R#2E`Y|Kt=Lgf6=e!v-n~xgXY*Dxjk- zA4FYbw+IUE>{-!`+4cr2dY@hA8x^elv3KLP%0O?AU7NJc3f2ZU+f{J+Og%1NRw_<5 zwCPi|AQ~bzvSm=5EBUGwnaj zRP0*T1nbPz;Kqp5I$9jl>+EVXy&|s0^bI{`#^JffOs_^8fJL_Nv7^D7;HIP+EWFLs z`lNuFUT^CB`uj6M1wApnaXYY>o>a+aEJUW8N%e8{_>r8Qb;?*o9|Ob=cBeL)-i=2W z!+>Wdt@Bwyv_#LcMQ@~D!oJa(I z$)($8jdRoBvcp9Ed8xaM-mZuceA8Z^=bIXtT8-GZK+wFr(rj0GY`3wp#$~MB07|3Y z#%-i3pNPd!)O>k6cb^J$)wMw)P?5dhTExu#dggmv%%(t5UIfXD(2p`d)vB7TpMq-1 zRWgh|MT%cUgs;PR%I6oZ*29Pziyi`jYj7fUi}yez=Br(tR)5DjoRXj6Qqwh% zCkbSM29if0a~vQH6rf476>U2W2!*Z7O#RvN-5R+uDq>@Fl=on?6x}z{GdJ$2th5o^}Bs8L5MGy z9!iqspi039$rZ?v{yAt&XJV>pP@3Er?5?$tuh2Dc0j1r5Wqu8kj8cYt$mV+ZJ3N#g zGZyWmn6kHW;kW`h%<})ke@M6Bx1i?TSBAqWj!~_%q~E4~2a>-fnL6xcrVi)|_FDw} zQ8dZNkj=0`Nq}}WmvMq@`X|afh?W$uXRAWm3!)1eA8qvbI%EUz*vkFUZhPZc;GYH; zT>3nuK%asqOCoGc5$a#CQ33k}Ujo2byiJRUMafs*IvX|~WTiI}FF->oi@|jlP?Yx$Roxqs?yPqrGFd1)xNXjoWN|R5`X%MU9QC(NC?yPqBDH)@@_QBDjo} zFM~0fTit;FBU%j??ec5*G@41aIpQVm2h0;3SSnX9vn zm7^l4~k?MBP{PI|u%VeA0V%(bP#8JDVOGKAe? zz5%fT{}0*> zKz#^kHAj-&!VG^O|LiPHU(p-yJ4w9yHn0WwLz60$2V$pgK zZ;h34*x{=)Rt|{_Zt@{78*x-0iljk}7k2Ie&VxHXHN0u(?pmZFFC;$wSmVL= zJxrg~${4lX7*#RW$geTI6|rNDyK0c9(zNTx8YedzBR?5yJY3%!|F-ouM&KC1gYCN` zq24KCjQDJbs5d`2 ziDP*W22p8n*79V4Cx{UFV-h&Jt$h{DnM8I(x* z4K>kRP1b3WM;x7r6bKldiPYMlQ6xgXxVzVxeQt0Ro@*DlJ3`}Wh%BlX&Vx44{|aHb zonL|FF4rvA7SC$X0I(c&3rKZ6!X5{6I@*8-ybeJ={RfN!s0J&@>BZ~k;EO@pWx%+a ztK5r`qI!H28Z(D_hR2NfupCD+98zdFfU;y6A1zI$e1!3Tu&@0FBtkJfWEvm+1l2ri zGge=-`wP#aK|0W$Bj+P*2fUa}T>+9lc7Z#&|AG<8 zSEwN3^EzSiGgTiA+)Lo%pycb&xDUYlo(6n6fXf6Mcp6BcVoaG|Z0-WY>(q-YxW=cS zB`k57YD>Ccd5P*I7N z$3&s!2G@d#$(NCk6lREWOX&lerqNI^Q^J%Ri~dKnz>8KMb_MYM9_Ri2c&|&aaDOJ{ zI7u|Z`=%wLb{DG;1qU#*ju}sgLqfr4Ing`SeG*i8)+p2aOXAqz227*Ku+R+=0A4~1 zJzVb-?z@Pr$nzh!yu)7B-A|2#=U>6a?|lotEM89@ZLZs@9+yj(J^BTROKdS^{PH=7 z+XqB%N!-aGw-C3%7Ue_L;Y1l!#%@+YoxI42-jY{Pt$zEZV?^LiAgI>BuM6saZ^FJ; z!(Kwz8&PLV*quYL19GEAsV?|EGW&TN4@lk0g1*xVehxGRslXAMCq260+bl@87Zf~? z1xK7#@ZaHreil4i7c6AK8+1Xn7X^EsR&YYNU@;5sO_Mfev7j7D_jP!O1-}NsmTgQ6 z7qn0?tp7UhYvs$)GwO>kL(=2Du8#C5NuGlg-W5V=;l@-8xtAuIuO~S<{d2KDs+-E$V(1OYn-Ed&-ID82{TL7VJ*;|m%M^*hx21!XN3R2U8>b*tQcS=c0;UrT6T97kX zNNv-vN1MJuy#W@l%&b3W_pu6gU{_JCdzs)02L?CVU*Y{@mvGIH7MRG^0D?>XTW9F* zPCa53)aDhy=@YMWqCZh3P_*S<9=(~$@b_%6--Uk`CKs0)yMHH$vqk;<297|&NC7Q< z4ihmfUN|7bg2Z=DNI^+&(us8NfNS?Ty;35ODezp}l;U6#>4#@ZTfB!Qrr;q ziFtMnR29qKhE>*!u_%FazM(2K{O`XI_#lcv#=i^)dI%z+Gcm=1j>kl0@MSY#Ks%(r zg$YHpd@O574LF}A*aD@z)E%~Z%^kGDi zLW(DIB6g@3-Gs#suEboF%Wv@J5PU;xwzAe43uE!@Yd?|#7w*6dPhgRgT7^@sY_~6A z^zI%JZr}J|4i~a8n)5{Oi?VITty80ft|(RkW?JOE7_?^1p?Bt zqEA@`m7eJRrJH7DK~)T|f9!R>T-s*D3X~K4Bnd_!yONfy-STCn9`9qA3)&~c4j);x z%_^9g?6G{By`Yx#PtNh(mJAOSoRTtwTM^aKto*rm4nlQe3{TIC#_ARwnayK6Tr7NM zHh!rBxEmDcm;R?UaNFq(LZjtW>KlsdVBqwuxyuuc;0&$0hpOTs)wUjx%*&V}-k{5v z`ySeA*A*YQCL&_aV=>U6H&p~H?dsIZFo=TPJV-(w_N1=!V4K93o0wBwwI3YdNrkq_ z`XJ8d<#+~6t?>RsmY@lCy zt70vX#9JAA#F#~_XSI(&6=RKEvCw^I?zRfHTUnnyc2Oul^h{}An1IontzZ>aXmM$g z$T;%{>9P>1U>=i>GU*SwRSi9mp^u*BlfC6HodgM$TA628deA|s5OdeZqgM_|uj~Rv%|q;s z!Nw#{LT3S?>+udhQBtUm40toi+^;k2XHVeWe)hvM)GZxx z9UjhiI-53`%7t(z^>0ZI!Em)d72c)Ey20FuU zbRw1t95U+trF!})fpB23RA1;wKS4nT&D_%k?@lbu(8o8D=_GP*pHF<5hYs zqzqP4Nt+-K+*pAn9p(l}`a0V0V4O|eVW#hht54q{=u!5Hr8$jH_6{JHh80!PZZmF& zwrcaenFYy8`(SqJ<{aN}1ewA8CfU9j!H|82Hthe0{W)vfW49SA_dwKK?zVU26r9RS zt)T@P@nZD&18)5t`*VM`s6TYz{#-l8a4lx6w1Ry$yW3TUP0)2z5k`A}?Q|LjVUTtM z#f3%WZjuWhj~iJs@JWMZdV)j0Do;V32}0+k)_J10Hj~dA@_e%+&D5&k2AYyCuQ1zH zhxl(nyP!zcy+o8yLz;qVw z8`}m&u6v4Bz4Zx)1_FLV%!w1aAnUg5ssa0OAcng!w&B zb-y!{fcyEL^FQa$Ib`1V?e6OC>gwvM>gwt~Fv3`kG(oS1VTC5nA|q{R&aZy`^b^Ed zpd1PD_f0@CVI;puhm%MLpj&=+csb)w-*Ra-q~mvvcN!SyxZBHOgYFTh;@aM;q!IXHK)`Yv7C@&*e}(}f%GtPTJu+cF#9 zG^q^Lg%4wwjUFd%PvF*AaCF{e&DI3(oUt?$>-(-5HTu;>!6ARlleX+?^+qd4mWMf`t2$DxFFv_zS zeVg2IxQl>gP-(GL1MTn=b;SiV%Q+VDuyDTh3xuUmBLpjKP*s(pAB9uCBYlo^Qfku9 zadc-UpT^Bk*f!c=mPR-OY*GDm9Oeohf3rRk&4PzXT>j%&6=i)4j54btcKpJt;s%HR zSJZ`USQVe;lht^_s<@G>;s)=Ot>IO%R$pB{wAaUtt=Gp! zvp%AU@BP27kF|Pz%vnG89QtPmk}}K}Z{{!$Z`^7bv-`yUoCNJlGFsoTk;WsY1d`vzvnoAH^P32>+I+U`0Q%vB0X{Wc zm%Eka&d}xVVYyMJ+}-%5`PAY_xqOIj)>hRYmI&=eLSXg^;cw3M{bhc0F{Zb#2lkYG zr}&S=`r3-^v99U@z^khoEPn^dU&bd17Z&|A;y-h6i|*wVI?wdo21lm5E>c!c>FU1s z(d29tMpqBxSv`WTkhMm-`V~5147Jm34;ooE+=07d5!E1JW9&`Afg59Q_WvGR+KZ=i z!Cv89v%Q+O4k{EdmR&;49?Bo3w2kem-641j(3OU1{g`F}wxD5S{P4}sWSVRY^gp29o&RzT2TkPf+)qDfmbtK8zQPdJp*U15efWvl`oQ{Q)qv`CaSs9DTncr3JjNMSznoa0RI#Pgz&3INlO;@Jk8%|=O$SuGNWPyVTY)^waE{@Voh}QE9 zo?u(sS<)2{J6D7GBEuFnj5~AdkUM9WxALFqOVAH62FI8>h(BKSMph8=&K7lNru@=Z zeY$=mXP>Ah+b`g~fC%%R^5T;lJK|-mfJTm?(iG@Sc=NSmx!hnMmG3+x)|Xt#a|7~V z<;31R>?GtS^AN?BJmJM}NTQ(vGW;IYvI6 zot9@c z=Q+kGe`!igNmprHqv`>KA?j~CvHk_mkssXmC&CeSdoVL$L~GZZks}=C!vM-nqg121 zegMn)&Jux2%^FN$1tX5JrVNT)5Yd}EBR^G-T;9FJpjTVeoIzT``br1~;IE#=%vBl#4MpYHym_U2NTG6GF^h3Zomzt@vjhWc zP}gT^yu615*eYUY;p{x{feM6iengS*;Muz2FEGyv*r$noT zj)5+yf1R&e-U}*a9*&QDT@aic6(6B}uxYpgSEYygLUhGMDVCiaSKkewYuewkK^kaX z38)UUPYgS9DaO|DP#r%@_n5~vAlsJQLF~=M=@ZW4f&B!*lOg73<2~-@IQRrv+f+CC zUXm*Ijt~&M1s~&e=7SnMZphg*fL9F*gwGYOCqZ$JH9%|rV za=09o2_tWOYtG}q?R2i=}z3Gr>}dsw9AujhiL)o2mlvUUbn z;s0t|R^l(>4~N4OR0)E9UvDpPTaTS*FL1>`9Tzx-U&d_#u8aZxAinUPYch6;T3nuf zn3?g8z`I^-g8N_+<57iYg~hzDZp1+5@!Bd!`67J6jVP`v${$bQGL*P=Q13FkEg#WOrGDa9 z7K$~6xUI0`-Y#OCghE!VoV>9;uu#X`>It_9+@IawPK%z_)-gSV6g`!&sNP)H;DeMwX4W|x3mkPnQ z3Cd#~S8Hnljfh9u=}2R~Y-Et253w4aC&h;4a>9@cYpdjE|H|y*f0|#~Tv-#YWwGoo zNOo6-fu9|Q@8;5QIxq}UUGyq@X#ENtcmfO+2d1z^_1B5zk0H?&xD21+LfsS?`biDQ zQ9amGsK<9tHAM=_V^4$hNdyfl58iyPzQ^E)(m9W?;JnzN=KVz|<6^zbKOaH@umbYC z-^gpYZwuehngz5+3V}7K`-M|GDzC#Qh!ga~hzVl8Y*8tzNgSHkDTBnwJI$Mcg!OBv z2p&LQG+2F?f_9;-c8FXUzK#3L4Z=sr7b51k=V%62zSGP4$3%?Kp??|F!gG$mb3uKmAP??5nv0XEe_vVI9@ie0d%Da8wmF=g38J zyL&lr@?|%=ol6|}Kp5D2NIe}L;gtF4+n;5e$f1O-da;s1#-4_duOlO9w9?e8cmg-(jN9}sNDv}c2E-RuW;I#dL3OGdq^?}YGrWB4 zaSG05=!<$#14ZO_yoI^hQa}MW!M;>N8;?I7g`^lrs9vDAhLBsv-XMmcrr>DoxjStlX<2<4Dh(qSK zz95ecFyora3jNO;7&gDO3;fB9{lTrrTkvYh8b zasSUq;=lBIS71WCeFs~Unt~`f7==r?LD9=iqgf8N>yn+{q7Y()b!YhArb0(vlNur| zE=?DC>C4*#BGw_#6@U-rja7Viu?+E;AVg5T;TK4_Znfceu9cIB-4UJ0_%*7n4b5k8 zd97*g8unDss~T6*M6UQLJj|CCS=*e1apoFBmH9jngHr~u0w1xykYHBa!S<|<;OV?8 z=5~pB&;z#J5v2eZsHta~GmekweS}0F56PWp~8)94085P88)tP;_jMpy)uF zjiN28>mCkj=?H_O`;AL;AoT)M$A$ue(iA7U0wte`wAdC?-49RBI-Dii6}`T<#z&Rl zq3gRE4_FS)>%OXcjI|3M;UfRJt)#wCJ(Mr@7Y=V17#wiMC(}LuD20jJcLRP$cOZVA zyLNZHI}Vx$rwZBvu?xxx+Y%KV8x6tAUlNy9Q)jsn#mpk@G4aA5TrI6Y1UQTWGWxQ3 zWk`RoRgmGeMmTYHGffS}%_!E$l*-W)Wm4CVrr8Fh#cHK8d4ywvskv2uMMHwG0k;dJ z=RI_txKKQBPIfhWju~+p9^|kn_*8R&)uk7?=UY9 zF~l2_=<5vo3#6b-_b?fSy+A06kL4hE;%cJpSN8ozgH{P{VWIQVwPULX7fJxbkS*)j zhDpsI?WGX8NnN}Jt06|ZyR1Q*)GEAZy$5=JrWSTKW({97gGb1V8jl}WpA>#)Y9&SC zN{*XKzT2!TK_EaRyK~%Wvo2JwBr(w31p2Ek03`hF^v)zBwGzXX9O**Zq-9^ex+lw%yBKz)rT~n%-{Gw33?}L`8 zw&D9u4nIYL;oHg-{86!>Utv5MY)^(ev>SC$Pfz1kBGw;oXqx!7}f2s473{o9*1D~%# z14jTT8aNNnszvf4R}`9n0k2Wr>^HU^rE>h+6=>sSaL+C`mPNHV>CEf1A38wCTc+U5>ToE z6zTjF0{WW6YVBfMrku7P;sf^w0cK-6>Gx!UnXJL&5KJS$v)_^S^dOig0ftf1%aE15 zqe_e2Fn}dHfIOJW)fsSSXt?bN_j(O?&vL+>W#B%EZ@QoB(cotK3R9^9JSQ{?4N~28 zih<_T&{hJ1Y%5@-A0@Pm6QIo^G;UC`r|p4tk!_o_460RW_0#F{IqKWt!kpu?2C0>8 z1sP*m4fp6#O@CHXi|UCC@!}SWcd(j8$l|J+BN zD}niae4Oo~PcsB`xa)u(ZI5DBQ-3Nor!DG@Bt~*ty4=Y0 zKAMhgX-r|>^M199TV0VARZJL>Nlk0X1Rcuu!?$HFXQ2l1c+I8tgLaNOXnX4VH}@KH zbCkb@4^Z#qXuAr&!32q&lBTAdNOWe zq0TsI!(P%}uKFonVD%-ee`r`M-T|!NQ3ql15P_yW_eo(vW}fM`4qz=P!7_buk(%F~ zSd$r(uNG_QTL7{8c@6yvLVwCYk4(J1XgfIo!0B`H{`IE0^ck2&g=(U@0K^C`q|WF@ zEvP(w89=HOd4Xw3RHB`Z@_g_??xirba6t$W(#RO8)bzyzM>udQMwnWZp4SKB1P8s@ z$~RF6r2O{VXyqZao;Zli>pZlw`4Iu?>$!0?2@Io@5=_3}!70ZVLB`^=X+&6mw^;?{ZSf1ZcVZbiF! z7(j2yu1>FEKd?5#FnI;E5o`@W8+7?Yu_c3P@>5L4QUd{eVft?Kg4wXpgp~He`eq@* zL>~B*V;}B~KAYN6ffavw+eb7+pXLmYv=jxP)Dgn@xJt6X7O zfPvW!>~X)!iF#vHaf&WF2}QZk^Vp^oU@n^G)zg@e1Wrc_reLID8P!%N*!I=G`;gB& z%0Fj6%y-oX7C+Yi8&o~ymsJ7c(iY|HDvWZj`Yl$5J@YLL*+CW!B(MGthAh+uyM&}n z^i7j~AqJ5%wn2@9$s=6FD7?_U3r2O2s5|F1iL2yGB!8&x!f8Oe+p>;iC*E|o>PmY_ zee-F@h>_LWpoX|aAt0E+V1@J;KVRN8b-OFuiD}zid1i32%GWI}MJubD(c)$g4Mqd- zwfY;pLI;?FB=qB#H_?v^*$>iga~88DGTSa>3x2Bph>@;eKtMFDp-3%@#IwlLgdD>n zpXh9zn2jN0kZmcmeF0FM7?J7Q7v$f(6R1|t>N1}pU-e>LW-80PV#>7Pp}!O)sNYao zG+#2Z7Js-vrU?Jk_oWvz|KtDGtP>|?5n2ak8tCEp0rqJnDjBKH)m2}_s?DZy@C{Vm z|AeaN=&CJ!oCHj~n7Z&}utwv|0R3~M+7>#%a~?kchP{$LNqAqP9(JF8uDUDz{uG|} z_~a>=BF-i^CxDv~NCYxN9ZPm?)$D}PPRISt;nw3z} zhhL~Vs8m+)7aN#R7l})-r34FO+ySg+{9OM4vlvS)a6fS@@$oGlb#gC zm9e(+m5ti4Dtj$l1Eu+m36hqn?yNwN6R-l2IuQvATU(;GS0)P8pd`E!Cep!WqT7-8 z0jK9L<>3nWx?mb#q4Y;;(>>7g{HWJV(`|WvHW>^^X|URPOoo2(>lpgJ9EU*iGCZq2 z#}CNR)3Znq{Xh_dv?p4g*QojKRe|qC3yM7mFQ}CUnniUbvvehsS;>XEk{ni2dO{_e zL5Zf*UXVPkH`!WqF#Vxat7hr?kdc%o^u<5i6wJhb7`@5Pi+=` zAUl&FdufnlS6lH8&{PVrkLckX1o?R^m1iBq#*BLTB`$}M><_D9d_-z7mS4yii~bN~ z?s^UVL|_*pa~z)4W9UEUQG_LYgPu!2XWDjG_zw|Txyqw~EG3X$8b~JsxzqrO2tCi7 z6bM$)sjH39bL^-z=n}%B^wS^TWP!XXuhn09s!_g zxg9l-d<%iTiH5V6e+dhw$59Q8kjJ2}sIgcRJeBe3$|Ebwb`Q{&SU99#x}$s+(gE60 zehVM0F-7W}Q&=BmD@Qq_kg6^$#9@$6!|;jH!hz)){nOa6ly|uVxYp*PpUwRR(k9h| zE74)Yh|DR?oTk!K1Ebr8C4I0G(Qz7$=e-!)1Gj)$4bJ+Dr^eJ)SVr5 zO;;eYq-*UpEOI0MkbiQiBu|}~g+PB;Ef9x+euntX<)3W)&xCXXmZ`6}AdZ}B>M!C= zSe_tIux=wr;DdmKZC}_oP;GywBaaM430 zJsDOdw9$V!(XprwYwf#4gCM5@JqnJ0mjb-J^Dcv6o;=>g$3gN)b49R^JWl81neUP& zy@ROw_U&Kougx`0$yt@Mz^nRs#%&HVNBrxpBmqF2M4rBVDDSBga>yZN( zgpJlGXm&d00DUNurUXIr-%#B84{jGD_b*bXwc{cKmaUTUBtog4N8m=$^Ig_|SV8n2 zGXiL!YPIx5&8zG6f{9Nc^&Qwv&a=K=16d^`SHCV!;CMBt9?w%<;tJ>}FEihkEYq_h zSH9lFuT&1MHOZbTVGh03?%#wtT#BAnHvtV`4llffUMuuk)S>1gDFR*R(PZ{b)~DX; zWnHct%YCBD-NJHjvK&#_oW^pMuj#{fnwlo6`JD&@=Vt{^vIJ(Uq51`LT@8$U&s6Dr z0WG^Z1Ba>$bd@inn(8lgmA}7;Du1|xKf554N;u&}6 z_2Dw5Vl{gjs{Z|}V67*s{zF%N2diF=Cbb-f_~@$N05guN@Cx!woWmBL`K{)e8`Rf{ zV#6A$Ji3x<0IudfK`El?A>8{qqXkse%4 z;EXN^;Q#q2fd7I@TlQc?H1PfGtaTbd+aNjPL){G2$28P-gxXOTE26e0G90VwFk zAdxLUnuGw)hqxoScw;b29r{Und;_5bHQlay4p5E*I(y9H`dY~K0!r2)>i|tNvdm3N z&|K>y`Q4&c{Xtb2n~T^O2Af%elHlsps$dwKRHrOm)gJ&~{l2cMh*dp;s;X%fM18ud zuh0bmi7G7XL5uxaJ80{IWwIzh7NtUhKpQG-R=}OptGFzvAFt9Zb0S!#?=D8LDW=MR z9doWkS+^h+2^Y!2!~~~$V|FlHg?V3`fn&0RIhl3J$TVchwJ|R1R5ZtIv znTxGP?3#GR|Ky%$u?b(b0zFhOA0UcY$?-{i0*O$ylHEOG(Z8OdS)=ul<U zb#nT_>f#?|sJsAQJ(9=`B&Xn6jRRgeR1tmTSzuH|=ob1&2Fj?*GCMRZ(Hq;J{W6{Is!9bIw01dxvd_o%1zQFTqRz_wXSd}_VUx}Nk6m61L#eY+ zeq|bA5y;CwM1XM9G#;In!lYlk;|{G;O!wuT>3VmY{&dj+SKPpXdgUJ)Iab2FZRkuE zI9ItGLgW0R`Os@MGeQ^9N?L{`Pe&4?>2ni5QfHHV|4iS`U&sv^6q=pfXriY|=lkGF zfr;Z(o1X-Q2DG*>?p+{%?b`*d-u7%NPcLI%A&usV`&H_izti;w$7WEw8uF9|L77xs zqj02N9^EO9Qx*zGhyZ$703GsW(Zx5AI#&R}FNc5*qAda-PP4Z~322GkM zw;AO;QVyqNS+45;Dkr(tEu{)2n1J(_SrNDVS$)d?#82Aq^O-sv*BhYf_RBo{hAcB# zFrQpQ#@lc}&%=MBV=IT?kLq?1d<+D%P!C$xX4Q_|YW{kTuGVg4(?I;9xKu>@pXlB4 z7oRjF@FV=3Tu*n$Ej94GSoRF4R$tUs66dyH7->|0?4l=#Z@9Q!xZOEl%=tp4>85gB zs1|$&l2h4Kr)eq&N;h@J4`dm^&h9BdWl{|sh&KO&(=C3J7*9^(sL^VFLpCi93Dald zK_WmcmDa1ec@wP)}NhH@mXq(|x?| z6nWdbL$#rr>~1_EhGP)GoOMuVbX!}p^J9En^?Cjib1zJH%J8I~g=GfuLE!Xr+k9G!j&%F`VzkUIG(B9|J`qoyqP;CL2*A9=OMT=V@4 z`EJ_9L^mpk0U$NW3jPiA_~?9Wc`Z$xN^yzI)XeLGS*+e z4|2LiMFI*RJ_G;#f1%gxB@udEz4ZUT^hyE^q|U<378-R`4Mp!fI28-$WOv*`Lzsr9 zZR))5+X!_&g#0I?&POh6O?_WIVN>5}**dK?^@U8CKc~JgOpeynx50e>bLxBEKgTJ1A5KGZ4Q(;E&LuQ!P4dsPEVBh5F6~ zYqf(M{RB>>j;YqvcQNQxQ{R6we+5r4^9F?X)e@YEui|-kjNm)uoA~(JH~)(ovEDNl zA)BbyJ!*J-!ji`DGQSlm@WJ91vGoBWQ^0udv6|JP`{|iWb_9uVh;IA8P-8VmA2Vk# z+wL-LPmYCig!n-{&@ARg4zpNqpOPu5mOMmg*frR$_7gCo)s$~!9>f+ae-{sAaDmh< zl80}R5Mo+LhC((>D_5m!|aAp-*Tlds$ z86Jf-*w0Bme?3tjyl&eY`15*35jedyEbJ0j<3;(nIx&En3 z&_@F2_ra9imM76w^)jkeZWMA=y&|Nax<}F)h~!Dl{ab?resMn63~iAO^G0Cfh}*v* z)=~a3kp}*ei4lfX4C@x`FTOa8;vrv8w>8QMAuCjbn&*hJo$8b78rAyUM7`uq`?I`m zlXpoZFJ#!0!|h@6PLJfx{-mViH7M6fz(4w*qvkS&PaT2?m5Du#sK=9&mF^VJkXv&d zfByiDCVhf|!3V%oySuHH7d=+nLTh|XqFh*aKQei&p#Xt{1K3vfT9ZH-ao%3=00Twg z6jAM0Z5e4`NQQ5ecBxIl1u*fqA8=dnYEHdDnnR~C_0E@(Ru;+UJ^cI+d^YyV=U}%F z&II^^K$oTNxDUORv z3w~Hwd224Y&xhT3+x8e90H_BJAz`W}d~(%~E<(*Q@A40=QP?NvFc))}?Y*_g49zun zKMZ=nupMX|sSiAE#?4jLm%XSbp~?CRCU`zaPFrj)f-uLS$u?uxQ@;dKF985o)%h&@ z6s*5{_kS~Z17kI_HOKuAQFWUHUjxR-qi`*$Jw$1Rik zQEqf92EVx}_*J_k%N%o{on6hWA0@rl^?|EE|8|tWfy{;nco&&|A_SbUVo!#0pUIk< zfH*=|%@`gL(_Iaz5H4#8yIW_eNYp!>;M`1Jac|>)LcV zn9v!_5(JSL8kd5|XPBl+b;_i1?w|)}rF)ISwB{OZ;o5;*%#Ct(mWT7KFWj|z+M4(f z9t)T2BHUG6gZf|qcWn-HQue?Ns=lduQJWnhB<=ggQ7z`sO=Dr+-I1HAJ_cGqEStSK z)6=Jwz?l!%Yr_;W#$(|QB`hPOV9ZY`%xPCLOjSPB3G*D9)Z$tgU(RC`8Gjw-*>OyR zTR{1&yWAZ@7iOfm0dA&a!6>D=({qvl$D>IOf3qUTN&JgspII#rGy#r5-xvFl^ynps$NLd{}<6zSF3!ZyY zXg0?Cib|7VMvw8eX72 zdPFY{z0gihe|8DG08r7u;K&HVX9_0QNo>vFdYoqc6#u^<5~KAc5M2xFR5q$q9WBA7 z*SZZ9wl~kZE8SDS9wPu=bV-W47cR+y^oC;*hMusjTE{59w5G2nb=!HQFJiK!yVu&o zleBkw{D0tzVzPC(ST=L#mjZklDyGg*fnT99APh7%vkPg=QGNlkdEtY_e{j)LZ{KxfbxNBOOIh@v~E zV?lp>X`aZ>Fu5&Zt0*%6*EB28<5im8%H;JEOe&ms!E6|vsk)k$a&MSKfxbM5N3hE@ zP)(<(N%zO8KV!xsN9wvmtOktb2tJ7k)o}J;0rGnSJzo2h%3eW!Oue(+q0w%;rl=a0 z+Ti5y9;~%3Oj4XbiH27?E5p1pkb2KUSQ93q(XOi1_^aNQd9YpP!F3n_HR2TTzsixB z^5qv~k$bCQ${PczT}*kSojB16Qyv^*kjXd19ohu_#{EIFyCWWI-3a3E?nsr#UE3TV z{+1YiO5szeHkcr*kGt|>h%Wae#*|H|_ z!EjuFKNlXbic<^w_cI8ev#Ml@ zD*9B~-5$-Aoia52Ti{PkM1Q#TlNy3 zpcu`>4%B1_WS9w9elRfc4}j2yjN+KA)MN56ek$XjU3XRW+oU07fLuKvfSYd@7C2^R z)`x1+{cQ1JwAfL87e8ajA#iR|>t->b2~tSa9oT5y4>DNP#AyC3GOgpeQ`bZeC!;@?JpYTJ<6Dcx&xoD6|v|<0wft!g>P&0m1^QVW$ zZn#?fiJ_5v>dy=7-bI9hc|POn(4Izw(pdo2_#Gpa9l=nT+Z4k zbLIC9W?Y7=0lJdIi%>}|T7gQ|<5^vJLM01KCAa8Gx}cK!k?}+?rw(efJhRn<73_d4 z$ivk~A4>}iC(6Lqo!VxJY_>tkS_qG4A_W<*)zGTgBn>-3&tFWDVhTyqKm@rmMgD}o;_ub;6-apB zBG?`7A+E%d_TY-$>o831@bKe0+SY1H+G>JwhsrjgVmYQa4zrGw_jIrY<)JQZFL`mk zphe?V@@73~3sFmF)9IsHrB4m)ZIOO% z>vY5+h%VpOP9F<8P1tmQckbd71E3?P%kd}{sdZRDphvKg8DoA9H!@njs3{Bg61T4s zhrm`hwSz%6Dj_G}t)u8%L?B(XFGp?3SK76~z+r82ITqJM@-**n9~098A6R?{$ajj{ zKRYqT2Z4TeT8xi7yfWa}pO*c%DEpt?sGrcY1C<_zkrYXfkm7w%3gZ=NWw6?Q~(9 zT07othZVr>pO+Y;4Y>L=IlQJ09T%^u^5vXfP%Hm#?L`O$1lvyd1K7hNksw6dptk%| zMCe5UWb|*0N6Jw_?|Z1+$uY(3^T5jv7`z3hK>KST^&7%LVn3Z*x!bHPtn6bU|t z`R7fG@%6Ra#FWX>EMKoYYxFc!^`?R0mPV8&$%q8A-lbQt8n;#W&pXItd+I8ThMM$& zUbjEdE8lA$iqiwonag?WCPs_6AXCkWxLJg0q7{C%k|?Y4`K7I}>sk|qUSU+$t&lCC zHPTpa_eNqOb}KeX&|_J;QvJ zJ@(Yu20)EYyfg~e`!($iKM~hI!!HM;hWo1o*LeoU=g+YbrO6uC7r534vcGE-WRFHB z8`<|%0NDqc1lfpBps_t1$d3{vu+Hm%0&=^Y2&J08d^gA7a;#JD9tt0L5Z;F^=D*J6 znQ|Boo&LS;eZvsh(3esL`wQ4Utur$3)ilaj=!@4SLb;ITN0|GOJk9@o%iNE@PI2=j(lq!lE4LSaP>t?SSGzypr`Dw)f)B9|^Peq(w6lSz z>i=-n4kVAd4@g@HWTK7wFrKWC?Lf;w8+f6d{B6GcE}NYi_{;Ax_%i(ZF`u15_?IOs zhqOxY7dc-T?L6WHU8(6dq$|);&{G-3Qz)TIwV5rCkkwRug?T)vuEJq0WI+1E`Xfyd z7viH_>~k2G9XQJ4*f}c1zq5ub|AkO|BBDCVoAH4zZ-La0Co{OkCiNOpDGIJb3Q-?O zJv)IH$~UNoP0Gtip=BF7KUhZUGg7cY-C>d|k-Qd!5`$a&PR|qA+2b{YnXihQ^i6AN zx+(;SZhBk&4;SlhP?-Y4SKx1IgX0HGW&PVsYG<9=&)*cw%+J5ZZcy0q;iRaSM^|dB zPeWR6$wTDAuNNIBX4Kx75AnRGefJ-QXJbcgb@WqsjG_O#WISC}J=j^Uf&at6g z)f4aQd9eWVB0(%?$^FYQFP?4C^CBUvw*0UeE{apDV-5ld!1QiJ&%(TkfmrH44iUY< zk+)U#WrT4Z1L@7%B*w^j_63d-7^&k-`G|R5$HN0#RKeGD=l1EFmxBl{*q|O4z?xlP zk${Og9D9WL4)1r2munkkHAtVWN08lRxDnTCE(R|Dkv1g&dDCpKb@$9*O4fc{HCu|U zIlRD6_?X*&H{9y6N*4P%O5V$`UX)zsS}k0*>^(uuSN;f>O~tdS0K&j9;9{(~>~

sy%g%^x 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%0A4lGVbaW0*WRk9VCfz5QN_ZPYi&;`2Icq< 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�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%0Asovd)wi3Q#r$C84uwQC5@ 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 z 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%0D` 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%0Auuw;A?%cDvjCIBBIX5F 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

B5#(`6pCcc~Ng0H`zX;g<&?*Qu-* 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¥nG_K&L4nj z=ZvLasA#||%3fVmT*K|rVD_VLCo$@0as0TxP8guBu#FuW@*ocqUc**j32oV1qQdyK z0`%>+1d;{0a<>~ydR1CgrGlwoe-0?pY@LS%=c7d2?vPck3&0~y7Mtv#webW z+S%$x8^fGmsx!B#3okr1@>=lAN6y}*f~=wy_v84A@dF}3rhCa?5WxuqRj

QLjb? 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%0AuTG0U#Jr4ujZyniFcm%_Ry18XbHO7$1H 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

ZBB$?zB?$Ic)anE1oSot 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

Ds@1}D0|6{;@GUaTPuSI6xpS=#b2<6bc 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 z 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%0Ds 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 DBRu^4 literal 0 HcmV?d00001 diff --git a/gestao_raul/Lib/site-packages/cryptography/hazmat/bindings/_rust/__init__.pyi b/gestao_raul/Lib/site-packages/cryptography/hazmat/bindings/_rust/__init__.pyi new file mode 100644 index 0000000..30b67d8 --- /dev/null +++ b/gestao_raul/Lib/site-packages/cryptography/hazmat/bindings/_rust/__init__.pyi @@ -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. + +import typing + +from cryptography.hazmat.primitives import padding + +def check_ansix923_padding(data: bytes) -> bool: ... + +class PKCS7PaddingContext(padding.PaddingContext): + def __init__(self, block_size: int) -> None: ... + def update(self, data: bytes) -> bytes: ... + def finalize(self) -> bytes: ... + +class PKCS7UnpaddingContext(padding.PaddingContext): + def __init__(self, block_size: int) -> None: ... + def update(self, data: bytes) -> bytes: ... + def finalize(self) -> bytes: ... + +class ObjectIdentifier: + def __init__(self, val: str) -> None: ... + @property + def dotted_string(self) -> str: ... + @property + def _name(self) -> str: ... + +T = typing.TypeVar("T") diff --git a/gestao_raul/Lib/site-packages/cryptography/hazmat/bindings/_rust/_openssl.pyi b/gestao_raul/Lib/site-packages/cryptography/hazmat/bindings/_rust/_openssl.pyi new file mode 100644 index 0000000..8010008 --- /dev/null +++ b/gestao_raul/Lib/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/gestao_raul/Lib/site-packages/cryptography/hazmat/bindings/_rust/asn1.pyi b/gestao_raul/Lib/site-packages/cryptography/hazmat/bindings/_rust/asn1.pyi new file mode 100644 index 0000000..3b5f208 --- /dev/null +++ b/gestao_raul/Lib/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/gestao_raul/Lib/site-packages/cryptography/hazmat/bindings/_rust/exceptions.pyi b/gestao_raul/Lib/site-packages/cryptography/hazmat/bindings/_rust/exceptions.pyi new file mode 100644 index 0000000..09f46b1 --- /dev/null +++ b/gestao_raul/Lib/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/gestao_raul/Lib/site-packages/cryptography/hazmat/bindings/_rust/ocsp.pyi b/gestao_raul/Lib/site-packages/cryptography/hazmat/bindings/_rust/ocsp.pyi new file mode 100644 index 0000000..e4321be --- /dev/null +++ b/gestao_raul/Lib/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 +import typing + +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) -> typing.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/gestao_raul/Lib/site-packages/cryptography/hazmat/bindings/_rust/openssl/__init__.pyi b/gestao_raul/Lib/site-packages/cryptography/hazmat/bindings/_rust/openssl/__init__.pyi new file mode 100644 index 0000000..320cef1 --- /dev/null +++ b/gestao_raul/Lib/site-packages/cryptography/hazmat/bindings/_rust/openssl/__init__.pyi @@ -0,0 +1,72 @@ +# 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, + kdf, + keys, + poly1305, + rsa, + x448, + x25519, +) + +__all__ = [ + "aead", + "ciphers", + "cmac", + "dh", + "dsa", + "ec", + "ed448", + "ed25519", + "hashes", + "hmac", + "kdf", + "keys", + "openssl_version", + "openssl_version_text", + "poly1305", + "raise_openssl_error", + "rsa", + "x448", + "x25519", +] + +CRYPTOGRAPHY_IS_LIBRESSL: bool +CRYPTOGRAPHY_IS_BORINGSSL: bool +CRYPTOGRAPHY_OPENSSL_300_OR_GREATER: bool +CRYPTOGRAPHY_OPENSSL_309_OR_GREATER: bool +CRYPTOGRAPHY_OPENSSL_320_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/gestao_raul/Lib/site-packages/cryptography/hazmat/bindings/_rust/openssl/aead.pyi b/gestao_raul/Lib/site-packages/cryptography/hazmat/bindings/_rust/openssl/aead.pyi new file mode 100644 index 0000000..047f49d --- /dev/null +++ b/gestao_raul/Lib/site-packages/cryptography/hazmat/bindings/_rust/openssl/aead.pyi @@ -0,0 +1,103 @@ +# 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 AESGCM: + def __init__(self, key: bytes) -> None: ... + @staticmethod + def generate_key(key_size: int) -> bytes: ... + def encrypt( + self, + nonce: bytes, + data: bytes, + associated_data: bytes | None, + ) -> bytes: ... + def decrypt( + self, + nonce: bytes, + data: bytes, + associated_data: bytes | None, + ) -> bytes: ... + +class ChaCha20Poly1305: + def __init__(self, key: bytes) -> None: ... + @staticmethod + def generate_key() -> bytes: ... + def encrypt( + self, + nonce: bytes, + data: bytes, + associated_data: bytes | None, + ) -> bytes: ... + def decrypt( + self, + nonce: bytes, + data: bytes, + associated_data: bytes | None, + ) -> bytes: ... + +class AESCCM: + def __init__(self, key: bytes, tag_length: int = 16) -> None: ... + @staticmethod + def generate_key(key_size: int) -> bytes: ... + def encrypt( + self, + nonce: bytes, + data: bytes, + associated_data: bytes | None, + ) -> bytes: ... + def decrypt( + self, + nonce: bytes, + data: bytes, + associated_data: bytes | None, + ) -> bytes: ... + +class AESSIV: + def __init__(self, key: bytes) -> None: ... + @staticmethod + def generate_key(key_size: int) -> bytes: ... + def encrypt( + self, + data: bytes, + associated_data: list[bytes] | None, + ) -> bytes: ... + def decrypt( + self, + data: bytes, + associated_data: list[bytes] | None, + ) -> bytes: ... + +class AESOCB3: + def __init__(self, key: bytes) -> None: ... + @staticmethod + def generate_key(key_size: int) -> bytes: ... + def encrypt( + self, + nonce: bytes, + data: bytes, + associated_data: bytes | None, + ) -> bytes: ... + def decrypt( + self, + nonce: bytes, + data: bytes, + associated_data: bytes | None, + ) -> bytes: ... + +class AESGCMSIV: + def __init__(self, key: bytes) -> None: ... + @staticmethod + def generate_key(key_size: int) -> bytes: ... + def encrypt( + self, + nonce: bytes, + data: bytes, + associated_data: bytes | None, + ) -> bytes: ... + def decrypt( + self, + nonce: bytes, + data: bytes, + associated_data: bytes | None, + ) -> bytes: ... diff --git a/gestao_raul/Lib/site-packages/cryptography/hazmat/bindings/_rust/openssl/ciphers.pyi b/gestao_raul/Lib/site-packages/cryptography/hazmat/bindings/_rust/openssl/ciphers.pyi new file mode 100644 index 0000000..759f3b5 --- /dev/null +++ b/gestao_raul/Lib/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 +) -> 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 +) -> 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/gestao_raul/Lib/site-packages/cryptography/hazmat/bindings/_rust/openssl/cmac.pyi b/gestao_raul/Lib/site-packages/cryptography/hazmat/bindings/_rust/openssl/cmac.pyi new file mode 100644 index 0000000..9c03508 --- /dev/null +++ b/gestao_raul/Lib/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/gestao_raul/Lib/site-packages/cryptography/hazmat/bindings/_rust/openssl/dh.pyi b/gestao_raul/Lib/site-packages/cryptography/hazmat/bindings/_rust/openssl/dh.pyi new file mode 100644 index 0000000..08733d7 --- /dev/null +++ b/gestao_raul/Lib/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/gestao_raul/Lib/site-packages/cryptography/hazmat/bindings/_rust/openssl/dsa.pyi b/gestao_raul/Lib/site-packages/cryptography/hazmat/bindings/_rust/openssl/dsa.pyi new file mode 100644 index 0000000..0922a4c --- /dev/null +++ b/gestao_raul/Lib/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/gestao_raul/Lib/site-packages/cryptography/hazmat/bindings/_rust/openssl/ec.pyi b/gestao_raul/Lib/site-packages/cryptography/hazmat/bindings/_rust/openssl/ec.pyi new file mode 100644 index 0000000..5c3b7bf --- /dev/null +++ b/gestao_raul/Lib/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/gestao_raul/Lib/site-packages/cryptography/hazmat/bindings/_rust/openssl/ed25519.pyi b/gestao_raul/Lib/site-packages/cryptography/hazmat/bindings/_rust/openssl/ed25519.pyi new file mode 100644 index 0000000..5233f9a --- /dev/null +++ b/gestao_raul/Lib/site-packages/cryptography/hazmat/bindings/_rust/openssl/ed25519.pyi @@ -0,0 +1,12 @@ +# 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 + +class Ed25519PrivateKey: ... +class Ed25519PublicKey: ... + +def generate_key() -> ed25519.Ed25519PrivateKey: ... +def from_private_bytes(data: bytes) -> ed25519.Ed25519PrivateKey: ... +def from_public_bytes(data: bytes) -> ed25519.Ed25519PublicKey: ... diff --git a/gestao_raul/Lib/site-packages/cryptography/hazmat/bindings/_rust/openssl/ed448.pyi b/gestao_raul/Lib/site-packages/cryptography/hazmat/bindings/_rust/openssl/ed448.pyi new file mode 100644 index 0000000..7a06520 --- /dev/null +++ b/gestao_raul/Lib/site-packages/cryptography/hazmat/bindings/_rust/openssl/ed448.pyi @@ -0,0 +1,12 @@ +# 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 + +class Ed448PrivateKey: ... +class Ed448PublicKey: ... + +def generate_key() -> ed448.Ed448PrivateKey: ... +def from_private_bytes(data: bytes) -> ed448.Ed448PrivateKey: ... +def from_public_bytes(data: bytes) -> ed448.Ed448PublicKey: ... diff --git a/gestao_raul/Lib/site-packages/cryptography/hazmat/bindings/_rust/openssl/hashes.pyi b/gestao_raul/Lib/site-packages/cryptography/hazmat/bindings/_rust/openssl/hashes.pyi new file mode 100644 index 0000000..56f3170 --- /dev/null +++ b/gestao_raul/Lib/site-packages/cryptography/hazmat/bindings/_rust/openssl/hashes.pyi @@ -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. + +import typing + +from cryptography.hazmat.primitives import hashes + +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: bytes) -> None: ... + def finalize(self) -> bytes: ... + def copy(self) -> Hash: ... + +def hash_supported(algorithm: hashes.HashAlgorithm) -> bool: ... diff --git a/gestao_raul/Lib/site-packages/cryptography/hazmat/bindings/_rust/openssl/hmac.pyi b/gestao_raul/Lib/site-packages/cryptography/hazmat/bindings/_rust/openssl/hmac.pyi new file mode 100644 index 0000000..e38d9b5 --- /dev/null +++ b/gestao_raul/Lib/site-packages/cryptography/hazmat/bindings/_rust/openssl/hmac.pyi @@ -0,0 +1,21 @@ +# 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 + +class HMAC(hashes.HashContext): + def __init__( + self, + key: bytes, + algorithm: hashes.HashAlgorithm, + backend: typing.Any = None, + ) -> None: ... + @property + def algorithm(self) -> hashes.HashAlgorithm: ... + def update(self, data: bytes) -> None: ... + def finalize(self) -> bytes: ... + def verify(self, signature: bytes) -> None: ... + def copy(self) -> HMAC: ... diff --git a/gestao_raul/Lib/site-packages/cryptography/hazmat/bindings/_rust/openssl/kdf.pyi b/gestao_raul/Lib/site-packages/cryptography/hazmat/bindings/_rust/openssl/kdf.pyi new file mode 100644 index 0000000..4b90bb4 --- /dev/null +++ b/gestao_raul/Lib/site-packages/cryptography/hazmat/bindings/_rust/openssl/kdf.pyi @@ -0,0 +1,43 @@ +# 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 + +def derive_pbkdf2_hmac( + key_material: bytes, + algorithm: HashAlgorithm, + salt: bytes, + iterations: int, + length: int, +) -> bytes: ... + +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: bytes) -> bytes: ... + def verify(self, key_material: bytes, expected_key: bytes) -> 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 verify(self, key_material: bytes, expected_key: bytes) -> None: ... diff --git a/gestao_raul/Lib/site-packages/cryptography/hazmat/bindings/_rust/openssl/keys.pyi b/gestao_raul/Lib/site-packages/cryptography/hazmat/bindings/_rust/openssl/keys.pyi new file mode 100644 index 0000000..6815b7d --- /dev/null +++ b/gestao_raul/Lib/site-packages/cryptography/hazmat/bindings/_rust/openssl/keys.pyi @@ -0,0 +1,33 @@ +# 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, +) + +def load_der_private_key( + data: bytes, + password: bytes | None, + backend: typing.Any = None, + *, + unsafe_skip_rsa_key_validation: bool = False, +) -> PrivateKeyTypes: ... +def load_pem_private_key( + data: bytes, + 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/gestao_raul/Lib/site-packages/cryptography/hazmat/bindings/_rust/openssl/poly1305.pyi b/gestao_raul/Lib/site-packages/cryptography/hazmat/bindings/_rust/openssl/poly1305.pyi new file mode 100644 index 0000000..2e9b0a9 --- /dev/null +++ b/gestao_raul/Lib/site-packages/cryptography/hazmat/bindings/_rust/openssl/poly1305.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. + +class Poly1305: + def __init__(self, key: bytes) -> None: ... + @staticmethod + def generate_tag(key: bytes, data: bytes) -> bytes: ... + @staticmethod + def verify_tag(key: bytes, data: bytes, tag: bytes) -> None: ... + def update(self, data: bytes) -> None: ... + def finalize(self) -> bytes: ... + def verify(self, tag: bytes) -> None: ... diff --git a/gestao_raul/Lib/site-packages/cryptography/hazmat/bindings/_rust/openssl/rsa.pyi b/gestao_raul/Lib/site-packages/cryptography/hazmat/bindings/_rust/openssl/rsa.pyi new file mode 100644 index 0000000..ef7752d --- /dev/null +++ b/gestao_raul/Lib/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/gestao_raul/Lib/site-packages/cryptography/hazmat/bindings/_rust/openssl/x25519.pyi b/gestao_raul/Lib/site-packages/cryptography/hazmat/bindings/_rust/openssl/x25519.pyi new file mode 100644 index 0000000..da0f3ec --- /dev/null +++ b/gestao_raul/Lib/site-packages/cryptography/hazmat/bindings/_rust/openssl/x25519.pyi @@ -0,0 +1,12 @@ +# 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 + +class X25519PrivateKey: ... +class X25519PublicKey: ... + +def generate_key() -> x25519.X25519PrivateKey: ... +def from_private_bytes(data: bytes) -> x25519.X25519PrivateKey: ... +def from_public_bytes(data: bytes) -> x25519.X25519PublicKey: ... diff --git a/gestao_raul/Lib/site-packages/cryptography/hazmat/bindings/_rust/openssl/x448.pyi b/gestao_raul/Lib/site-packages/cryptography/hazmat/bindings/_rust/openssl/x448.pyi new file mode 100644 index 0000000..e51cfeb --- /dev/null +++ b/gestao_raul/Lib/site-packages/cryptography/hazmat/bindings/_rust/openssl/x448.pyi @@ -0,0 +1,12 @@ +# 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 + +class X448PrivateKey: ... +class X448PublicKey: ... + +def generate_key() -> x448.X448PrivateKey: ... +def from_private_bytes(data: bytes) -> x448.X448PrivateKey: ... +def from_public_bytes(data: bytes) -> x448.X448PublicKey: ... diff --git a/gestao_raul/Lib/site-packages/cryptography/hazmat/bindings/_rust/pkcs12.pyi b/gestao_raul/Lib/site-packages/cryptography/hazmat/bindings/_rust/pkcs12.pyi new file mode 100644 index 0000000..40514c4 --- /dev/null +++ b/gestao_raul/Lib/site-packages/cryptography/hazmat/bindings/_rust/pkcs12.pyi @@ -0,0 +1,46 @@ +# 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 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, +) + +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: bytes, + password: bytes | 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_key_and_certificates( + name: bytes | None, + key: PKCS12PrivateKeyTypes | None, + cert: x509.Certificate | None, + cas: typing.Iterable[x509.Certificate | PKCS12Certificate] | None, + encryption_algorithm: KeySerializationEncryption, +) -> bytes: ... diff --git a/gestao_raul/Lib/site-packages/cryptography/hazmat/bindings/_rust/pkcs7.pyi b/gestao_raul/Lib/site-packages/cryptography/hazmat/bindings/_rust/pkcs7.pyi new file mode 100644 index 0000000..f9aa81e --- /dev/null +++ b/gestao_raul/Lib/site-packages/cryptography/hazmat/bindings/_rust/pkcs7.pyi @@ -0,0 +1,49 @@ +# 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 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, + encoding: serialization.Encoding, + options: typing.Iterable[pkcs7.PKCS7Options], +) -> bytes: ... +def sign_and_serialize( + builder: pkcs7.PKCS7SignatureBuilder, + encoding: serialization.Encoding, + options: typing.Iterable[pkcs7.PKCS7Options], +) -> bytes: ... +def decrypt_der( + data: bytes, + certificate: x509.Certificate, + private_key: rsa.RSAPrivateKey, + options: typing.Iterable[pkcs7.PKCS7Options], +) -> bytes: ... +def decrypt_pem( + data: bytes, + certificate: x509.Certificate, + private_key: rsa.RSAPrivateKey, + options: typing.Iterable[pkcs7.PKCS7Options], +) -> bytes: ... +def decrypt_smime( + data: bytes, + certificate: x509.Certificate, + private_key: rsa.RSAPrivateKey, + options: typing.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/gestao_raul/Lib/site-packages/cryptography/hazmat/bindings/_rust/test_support.pyi b/gestao_raul/Lib/site-packages/cryptography/hazmat/bindings/_rust/test_support.pyi new file mode 100644 index 0000000..ef9f779 --- /dev/null +++ b/gestao_raul/Lib/site-packages/cryptography/hazmat/bindings/_rust/test_support.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. + +from cryptography import x509 +from cryptography.hazmat.primitives import serialization +from cryptography.hazmat.primitives.serialization import pkcs7 + +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: bytes | None, + certs: list[x509.Certificate], + options: list[pkcs7.PKCS7Options], +) -> None: ... diff --git a/gestao_raul/Lib/site-packages/cryptography/hazmat/bindings/_rust/x509.pyi b/gestao_raul/Lib/site-packages/cryptography/hazmat/bindings/_rust/x509.pyi new file mode 100644 index 0000000..b494fb6 --- /dev/null +++ b/gestao_raul/Lib/site-packages/cryptography/hazmat/bindings/_rust/x509.pyi @@ -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. + +import datetime +import typing + +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 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, +) -> x509.Certificate: ... +def create_x509_csr( + builder: x509.CertificateSigningRequestBuilder, + private_key: PrivateKeyTypes, + hash_algorithm: hashes.HashAlgorithm | None, + rsa_padding: PKCS1v15 | PSS | None, +) -> x509.CertificateSigningRequest: ... +def create_x509_crl( + builder: x509.CertificateRevocationListBuilder, + private_key: PrivateKeyTypes, + hash_algorithm: hashes.HashAlgorithm | None, + rsa_padding: PKCS1v15 | PSS | 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, + ) -> None | PSS | PKCS1v15 | ECDSA: ... + @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: ... + +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 + ) -> 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, + ) -> None | PSS | PKCS1v15 | ECDSA: ... + @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) -> typing.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, + ) -> None | PSS | PKCS1v15 | ECDSA: ... + @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: ... + def get_attribute_for_oid(self, oid: x509.ObjectIdentifier) -> bytes: ... + +class PolicyBuilder: + def time(self, new_time: datetime.datetime) -> PolicyBuilder: ... + def store(self, new_store: Store) -> PolicyBuilder: ... + def max_chain_depth(self, new_max_chain_depth: int) -> PolicyBuilder: ... + def build_client_verifier(self) -> ClientVerifier: ... + def build_server_verifier( + self, subject: x509.verification.Subject + ) -> ServerVerifier: ... + +class VerifiedClient: + @property + def subjects(self) -> list[x509.GeneralName] | None: ... + @property + def chain(self) -> list[x509.Certificate]: ... + +class ClientVerifier: + @property + def validation_time(self) -> datetime.datetime: ... + @property + def store(self) -> Store: ... + @property + def max_chain_depth(self) -> int: ... + def verify( + self, + leaf: x509.Certificate, + intermediates: list[x509.Certificate], + ) -> VerifiedClient: ... + +class ServerVerifier: + @property + def subject(self) -> x509.verification.Subject: ... + @property + def validation_time(self) -> datetime.datetime: ... + @property + def store(self) -> Store: ... + @property + def max_chain_depth(self) -> int: ... + 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): + pass diff --git a/gestao_raul/Lib/site-packages/cryptography/hazmat/bindings/openssl/__init__.py b/gestao_raul/Lib/site-packages/cryptography/hazmat/bindings/openssl/__init__.py new file mode 100644 index 0000000..b509336 --- /dev/null +++ b/gestao_raul/Lib/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/gestao_raul/Lib/site-packages/cryptography/hazmat/bindings/openssl/__pycache__/__init__.cpython-310.pyc b/gestao_raul/Lib/site-packages/cryptography/hazmat/bindings/openssl/__pycache__/__init__.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..ca58df56ec840fd51a116ae785ddf40f978f79ba GIT binary patch literal 202 zcmYk0y$ZrG6opgiAc7C#pcw@b5v!XhRNO9vv<+#n`5`w&>KloxPvh!aIGIj*;CzR3 z?sDyTJR(u^<3m1UzWeg8B$jnFrV$l6kx6p66W`B2d~~*eGYXGz6-}_PwPmY?2?%+< z*<~OF25y<>Z3BB%0IDFSj+Yl6FHri<1uH#wbw_J{(>%~ZnMxUn)H-1h8_Jk6Dlj&4 S-D|kiwrU%(>fgXYL`uG~f;asD literal 0 HcmV?d00001 diff --git a/gestao_raul/Lib/site-packages/cryptography/hazmat/bindings/openssl/__pycache__/_conditional.cpython-310.pyc b/gestao_raul/Lib/site-packages/cryptography/hazmat/bindings/openssl/__pycache__/_conditional.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..46ee5d770f0efe67eaa40600036a74c0e5328f90 GIT binary patch literal 4752 zcmb7HTW=#t6}CGaCwAi8Gs#Sn$?h-%ge98|1H0_9LU^2>#7bgEwgW>ERO+}Yb}Q{} zQ{B!?Ry@KJ4?H0L01^*~f0WmK0VD)y#BG3GzSHeXCv8VrOFlYPr!HTed%M|eCV}4v zrQg@zSx6*4r9t#Jg2DF^iKO>_GLaAok+c)dBugd};yXeYqd(J`1}-JWz>R<#7in-h zxQv(pHwtc2WWlAtO^Io6W8h}QEVyxSb7CG`8r*_d1eXDKPb`6(0JkjegPR2RK&*hv zf?E}9;HJPm6zkxo!M!Ek1~&ulk@yn0S#XcV6L53jzAU~1Zr)0WuS)G#NwFbEK))t+ z(0Al0=+|WmbW@IjzAMK;w`3ahJ(&UBmJ^`gkdvTKWft_CaticYavJn~IRpBEoCW>1 zoCEz(&RfafCfS1csFK+D_>ZK~jpWsY={T-$`j+c>S1Bd^wsPL2ZOik2<`9Nd8)TUTbQ zak%9cuVZ5=zjD8*m1Caiz+i8P7{)gQYve(mtE$u!Ulw%H}$QvQad4OVvWIYV?&7 z;l^}I>XX_P` zvk!u2CoN9&x4!yV6ewGm(hD;t5)-oFygeOVpJ-HQjt6I zWf;Tx!qJ{l=5z~NiLQW#wt3U^e5mJKUb1^PguG_88d9;hZqB!q>$^4A=1?qw94!7<@Y^<#9g!Z#Y^-ItV3oYMSJa5%T>M< zUj%)vcie|P^z(N@pAO^a`$oC&{D=IgggmpCEACYGa{C5bCTP6`9BAEZBU^f*?xAMu z?6Ujfmh1UQeU9)N=DED#&(~z!Z2OJS=0P+J5I&6BwvLc#ny6>hU+EPdO4gD35IVtz>CSx3S2nLT z``4Z+DOp!a_c&%#vhFe6vTgtjHVU-|o zqq|z|Q`@Qq^MP@DZq-S1RNliAhg&6HwZa{xo-Gy!*`ixG)D)!1)+`7)Jo-J#6xNv~ z5w;D}x+P(($Nb^?&Qn4#L*(8d1l<-VQZIs(*Hr?X3mJe1sZ{x`5Fi=(rXZ*?WG+wI zvW6_dJ*?-*d}o#|hih&zhM)E|2yjp&mIk37thdq;FP3<}%Ro{ee(&Shy>5#;XuhN) z>#lDFU1E!11j?fhAXaQ+FlKkC$q0f2xqvs(VD>wVJ{R;Fk757>bb4*`Meq9igRYO+ zP7f;*^pG!=_6r6#UgVK8cMX;$U>Dm#^C2B}-OpY3+>*H1k%|HYt?X(vGu1+QH>aKs ze^R`7p(RB}O6UKS-V#{!!JxOqRJr`D2Ycy^27;XnyG3-~H$Z+7SY#kLzEyWzCHZxbzwBx3;hjJ&lE%pS zkujQRo5Ox#IGT6_#5Vt$AgmFg-j`i(-u80n?~N+Y8)cAZY$+dY?E)zPRjLC7;kN)= zj_)Y!<_>l%Y#}B&s_YNAAG16Rt*2}ywkLmFsg@2AhE?_`ChTnE&yS1wDsok20M4*Z zvGv&Ipe-uEDG}g>B3q0tsFbTm>~U;*K#m*$El6X#Q0-2xn&XGn;{k6AQbdqu*jntG zqjKTU05&7PUtyau@ohmhU^!hi%-IK^C*V-|A-v=G=%`e#7B@6CLQX{AP8*9?8IEoV zxmj|qD2WCizQI>z@O>A2Sp{DwiW+T2{i>o~N>LFH>Zqc!q=L^vO3jLLnxecC#IK@w z2|ac;Un=et$h^4&Ud$aDm7DPp6oc`Po33cv^1GA=J<9u&dS)aumPzBE%8X|w@t?}f z2Yd=NjlZ5rX=y#FeXeWTXZnctKV8@UtB-2`(No$ReN6keKCb;sPiz0wGul7&3GMIN hq?XiP>(kob^cn51`mFXBZ4NVk))qnkq%UXw@PB$U@5TTC literal 0 HcmV?d00001 diff --git a/gestao_raul/Lib/site-packages/cryptography/hazmat/bindings/openssl/__pycache__/binding.cpython-310.pyc b/gestao_raul/Lib/site-packages/cryptography/hazmat/bindings/openssl/__pycache__/binding.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..f99a7665db1c64cda5a6e61ff9f19d065a360a35 GIT binary patch literal 3690 zcmaJ^-EZ5-5$7%`ik4-|AJ-&K(qx;vwx=Q|Hy=%b^iZ77adSp}wre{H!Z;u(?%JYF zk;?8Wstg4v&Ur2R2OJKtANmm7f6_mJPX+pP&wVM9JESv9$+eTVG|2rL&CbsL<~QSP zVxnTf^Xs*5cmGzitbgF(^izVtXO>0O-=V`TP7_azC-a7jZPHELiJ|3oNrb8WPsal2c#B!>IOv7YJ%1qX2 z?gd##q)H`udDsD|>BY6xd&^tPYpV+@!Ro@7OPe{(_H(D1Wl8Qzp}R88oz*NA5y6dy z4~5o&cM<)34LSo$)wFd)j;$9&Q%(ltYs%?2_JADHuL!p`t-8G$qK*gYewy`Cwg$#* zZmuwa<~7(>D^^9HK_|-E?JQ0DOr%lP#e)dWdM%N%5DwWAk|l9dhO&>sFvFrmglU}a zvTldL`dRHv=`h-Fu;m@r&$=v>f^`)NN3!41*{%#btv>6;y7iuV-3m1b3w5GV!=^k| zVKYGuv1U!NlYvGlI+@fs7qVt|x53uX&R(np>wt04?8J$H4Zvj8g^p$|tvl-O{QNHL z+-)}C(DR*s6waSEYu-q!!n!zxt=i^}S(dU^)?+%uon^+mk${uOs=+>fP3m=9VjTFh zQP_by6oGMbU>qTBSgBK4h9-B-f_i1i2^hXk7VmC9P(rHho=9}IeJ_i;ZINoVy|MB6 z(&F~602Nsv!)~&@5;wP1ti>lC@NNhz+h+`Kg$H2jd^1itcty<*K{uLcbozO11j!&& zu&Mq4Oi(lMafnAKrG&cfYg%^x<@_Ka)UDixYkytQ{SIhsETsK>I?6yjf<8=wG;9m? zy3XTBKT%pyV(_3wPiS?B_(@ z)ZTy&T=NU}kRC!PKl^Y1!Ca@Satd~=kL4vWS*X17C0uACwqW2-1euI?V>}?7KDU+7 zc?sO!R(W|>K*VdAyWI{Cwa9HA%e)K{I9o3ptr8vT*G@YM^!StFk5SU)f){Sf$4&%% z&p0xOnz@5|3^Iz(B&f>gn%y|z!HIlf7)Ikqu&ge?r{cK8B~zqAs)YWjNPdSFMRp{m>W2n0zccL#GOwq;qDcJL4f`GvI2w+seBz}8qZ;yMy_T0hFOYa}rNZDD@z28gGV1{YbcAe}h1G-F2sa79 z@?j{A8-FLqz&eS!=L{7hEh3H(H~*|cXJ8#!Na#pnM@zyz5{uFj7JA8K_gJyh;wHhUPa$i|<+CfuKPzx^ZCbS%0}guqA3v1A6xy zT{;9T2M*A)6_7_@p#y)2L$vkX@eNCT)B`Nz-{awV0I6GbH?I`-C0Vqek0UCBBntsb z=6WSwXMsEydT@R_O4K`Nlphwx7UAwumrwwV`_{83-%xVx?ZMTP%t`6%Z&qO%LWqTfZj-qs6g=!n7>a0HwP2s$buI}XUcE$6h$0a;%|p#+KF`Ub-8E27IN zedHZm+Jx&q#d61#0?uk)3RM)x2j6c&vL0H&vYoRTnP-r9F}p(^iCQMF7dT_81xcK< zthpy5JuDs~NUbf5W5}>YqHl%I1#5Q`9YY3&nxYefzIQi?Q@}xzfVMcr@<6inKKM9g zolv(LY`w_cnDryLnqh)ZMUOp?rG|Tk5(Ro$idnMA#wtr-U(Cfts&B9r6CJEmC>|d7 zE<2dJe)c3IPuyko@gj_V39ipwxE+9mfslWBapUp&*4q7zh4n8U2kQ%qzhAh&6g*to z*n}bu(m51NT;$`+Z7fGj?PpS_KRYD6V7PsdcH5>#$ZNyQJX!&i--d1d8I=XY)IM4| z1virl&f`M7(|=d)5Ab_+89uHD$a_0!LnlE literal 0 HcmV?d00001 diff --git a/gestao_raul/Lib/site-packages/cryptography/hazmat/bindings/openssl/_conditional.py b/gestao_raul/Lib/site-packages/cryptography/hazmat/bindings/openssl/_conditional.py new file mode 100644 index 0000000..73c06f7 --- /dev/null +++ b/gestao_raul/Lib/site-packages/cryptography/hazmat/bindings/openssl/_conditional.py @@ -0,0 +1,183 @@ +# 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 + + +def cryptography_has_set_cert_cb() -> 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_VERIFY_POST_HANDSHAKE", + "SSL_CTX_set_ciphersuites", + "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_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_op_no_renegotiation() -> list[str]: + return [ + "SSL_OP_NO_RENEGOTIATION", + ] + + +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", + "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"] + + +# 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_ENGINE": cryptography_has_engine, + "Cryptography_HAS_VERIFIED_CHAIN": cryptography_has_verified_chain, + "Cryptography_HAS_SRTP": cryptography_has_srtp, + "Cryptography_HAS_OP_NO_RENEGOTIATION": ( + cryptography_has_op_no_renegotiation + ), + "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, +} diff --git a/gestao_raul/Lib/site-packages/cryptography/hazmat/bindings/openssl/binding.py b/gestao_raul/Lib/site-packages/cryptography/hazmat/bindings/openssl/binding.py new file mode 100644 index 0000000..d4dfeef --- /dev/null +++ b/gestao_raul/Lib/site-packages/cryptography/hazmat/bindings/openssl/binding.py @@ -0,0 +1,121 @@ +# 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 os +import sys +import threading +import types +import typing +import warnings + +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: dict[str, typing.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 = None + ffi = _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() + +if ( + sys.platform == "win32" + and os.environ.get("PROCESSOR_ARCHITEW6432") is not None +): + warnings.warn( + "You are using cryptography on a 32-bit Python on a 64-bit Windows " + "Operating System. Cryptography will be significantly faster if you " + "switch to using a 64-bit Python.", + UserWarning, + stacklevel=2, + ) diff --git a/gestao_raul/Lib/site-packages/cryptography/hazmat/decrepit/__init__.py b/gestao_raul/Lib/site-packages/cryptography/hazmat/decrepit/__init__.py new file mode 100644 index 0000000..41d7318 --- /dev/null +++ b/gestao_raul/Lib/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/gestao_raul/Lib/site-packages/cryptography/hazmat/decrepit/__pycache__/__init__.cpython-310.pyc b/gestao_raul/Lib/site-packages/cryptography/hazmat/decrepit/__pycache__/__init__.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..69cfdcf74fa90bd5c592547e5cdff3fbc5df84f0 GIT binary patch literal 240 zcmYjL!Ab)$5KYz|q*CZ_>_PV^6cMp{6NQSG5*WtKxDDN~tQj~U(@H=9jG#_ij_Ib{7E%{hu}9)yr_o(C#jXtH|9~HWc#HTG@GsE5_Q}tAT=>zBVmW^kRKU` z%%{n1v17h*Y^V%H)Et>(Bei1L+8H=ZJw<*0MAcjMZ)2(A`hD3-qWXH&*l){D64y63 z@6@XGri_yy@>Q_ks(%@7*W)me*SbMtFQ7=hp?cjUYO0{S+gsiZ4%$JoEM!B;ZkQ}L zH0JSgFhV_E>h@CG_rp$@`2GT=KfxMYeoz7~OQT4dRWjLEozx6FNrNC5KWO7GddX#K zV9DPT@`5j7!Nx}4re0d9*^-^XLb-a9y7X!X<`TK7J*qQ;dKzV8IE_&R-~l%UY^nVW z+E>U_@>oSDXiMKu3%=iu#C{8H$M=8O4_d>Bh2J#4qoM=ZiDi=JM#GuF(^b1m!UyRE-n(#534Y0XlZm8#Jv_8r~bGb@C6LPCX zxDyC9dO-OF`o<79hnERGmp%szMxH>vJS!l`GG;yD-$s$PV7BqIv>8v0)*Go5Et z`VI98!mpA!E-3x#>*#Jt?^`ffih3JnCReUe6da8~7;t6CmK?DK zu~Te;GOR*8Zc}5-7Ur3xYQz?q6$XU-$Rq{J5lbN2mS@X6$u9&N%2p61Dvg`kB(wK- z!gyD6q<@u04F96-s!R4CL^0__5Jk;XLqQYN6EL&N`3{1Y$sEj&GG0UtZy=4X;Uvvj zB`ls*LZv5(+NBv4bei&im+(6M2jxDQl+Yb*c*JIwP`yi0Dnq8awsrTt!9LAVSN~@+ zkGlpRV@zFxvQBpq1z1H6U4UVZGtgH!iKlj;-ivzUuTTIIsNRQxcM7@jagJ9`lV9*A z4)iP$-4dChP&&dE`Jqr2i1ww_+N#yo2Z}gb3{A>VJqO3Xz@#<4B@BNN@P3698s0&Q zv(R0}I}?4Ip!*>OYV@6AX<@`t#AafBG6QR4i1q05ghOd^dCHG2PoJ;X)~1f2#|QX# zSm^+8PFyDntei zmCkT3q##WJ{;!dOw?VsX<0XG^cOBnc zm5DJS8G{=~7A>5q3aYFHMuGXdHcIQ`85<|HZx61DpU}a`;sr8}wP?6G*Kz0F5 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: + key += key + key + elif len(key) == 16: + key += key[:8] + self.key = _verify_key_size(self, key) + + @property + def key_size(self) -> int: + return len(self.key) * 8 + + +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 + + +# 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/gestao_raul/Lib/site-packages/cryptography/hazmat/primitives/__init__.py b/gestao_raul/Lib/site-packages/cryptography/hazmat/primitives/__init__.py new file mode 100644 index 0000000..b509336 --- /dev/null +++ b/gestao_raul/Lib/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/gestao_raul/Lib/site-packages/cryptography/hazmat/primitives/__pycache__/__init__.cpython-310.pyc b/gestao_raul/Lib/site-packages/cryptography/hazmat/primitives/__pycache__/__init__.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..d2aacb2cb8f723f359da2095030911d4147b5662 GIT binary patch literal 196 zcmd1j<>g`k0(1Y>>05yGV-N=!FakLaKwQiMBvKfH88jLFRx%WUgb~EAbZ4uW(Bjmh z;+XQ(oRa()m;B_?+|<01;+UWyCs*f~^wi>##QgZ8#L}D?pUk9~;>?m%-GapA>_nhU zOmb0WK}mjkQDQ+xrG7?YRc>O5enC-YZe~elS!%I2<6;rMin>O z2k`CoXC1vrJ{qM>@>LbKPF~kpTdK;MS-ggPXb<& zOm~f~ms&KdZn6@aQrJnO^D?*j7iA`?*pnYOo#W88I)%~(Mn^c=Jo-nRF@Bkim`3^< z#Rd(7G{tb5x_+9LwQLLYPtx>rD~h|9pwV@swC$WH7MVL03s6dA7NlR*QXeDSp7qWP zFy_HFfMxI&5JowDK(|p4>lm^{RtRH8J*<7x!r-8`#{M-jaYxgO=so<}ru?sh3(j{f Pzr@iR?BRq5?6LnBzMHSV literal 0 HcmV?d00001 diff --git a/gestao_raul/Lib/site-packages/cryptography/hazmat/primitives/__pycache__/_cipheralgorithm.cpython-310.pyc b/gestao_raul/Lib/site-packages/cryptography/hazmat/primitives/__pycache__/_cipheralgorithm.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..9539d2880b515c3781686ce2adf3fa7bf558ac77 GIT binary patch literal 2002 zcma)7&2J+$6u0LqlQc;~3GA|bbW|a2{LNMO{`p^DfE<%6n z#p(bV`WPWB4uPSF;uH;Wh_U9a)Cw(_?bIGRp@Y$$VeO7(l8RXGu8t+1&p^shh$#v! zW-|xum8nggbLR}7;n17QD%7KexvVgkRcVoy<}#nI0g83C-bzLT#`n^G&J#HpDvvWc z=9#jEpn3hZV0z*JLosNurU#{9KK25*lVtrMBSSsOK_Y@-PFZl5HT%tAYwzIU z)^@PfB14v@3E65imv`G2=mIN8u(Zd0P;SW6y!Bz{kzibOeqyQ2JD=q7c*rs-I){h* z2dz$@2}$yZlX2SlGU;|iBH2455+4)T>BM|8l6jw#(O|MOAk!g{J0qS96PcVau@lAS z>16Tr=4hfEfX-@Q|A_^}LDTvb|1|Z1r_~^}YKaYzOz>d$1beo1ft? zAilAD#qFD3(Qa5=7X$ZzEchz$7jwCeUZbe|DAJ*dB2|haNWyWd`EnHfI40?Q#~<;0 z#JHR&n{;DUC0$5h63ZczgPiiRHnXnD3z{s`@-hHi*MUAE>Og#CVFy>So?YBY4qO>1Dc`=(>yNEf=J@Tkep|LCqniin+imJY!=JD|rPbs%MkxVEX zoI3NA_Q-R?{>8OnCqY-6cxJ30yt^Ghy#HUQOGcl`*#^LxrR?T)?`U40Z1W8`+wl2| z`igcne+h_MkD`_C8AbeMy=6+_w&q^fJqNKuqTU3^LHz_Fc_Ni0Qj?8Hf$>S85!ZPOal?szbo!9ZL{q67l$ z0<=dQK2>@3A87jrJpD(QzU3*;eseq1erG`vyok1^;9$9XcCqK|cdkG%J)M_uee?LA z2TKc*^eYVpuM7t3k|c-!LWfCA_N0bv$ujj7Pq7sItDf4>EKSffFVoO1U6y{9Scd7p zNKALNqwJ|_8K7jD0gBP3JSh1tB@fCJD}YkyQl>zeW<^knT}lCz88!>btg9SN zv$OGztOqN zay;eueh@iPJ@CT{#+g=B_d;~0?>XV&hIbI~dUV*R(elAd#$cVG0*;a^Su&FVk8G(- zu{5TFg%)c&o7>g)b!uO%nys+zADGp98>^<{GxO$+2kwdal-HY{dl$>fV%b`{Z0*)< zb7%9x-JjOP`i<=>QMNX>D&#Rf z?tvRdPGEDV5$i2~YYR3*{c5D2k83hO2X&#=e96IfW6Rk9Py-|REWtG5OI%gqx`7C4JL)X^A{CL6M#O~n7rH7p#*-^wt}(pkpJGTky*7Wyz^W81F< z3|ffQo$W`ldUyLtoPFGM{c81ItUhsGw(}d6>V5P1o#oqWZN0kk=>DVaN;$_#7@noZ zpk|tyA~iGAki3@m{Lbw)D^sOMQuvY{IUO&cS;YN@9;B1?emEh`jh#>hah)veb9CN$ z!YO93+%Fo=na4Q`@$?R_zi=Y=r+@?SIJ5I$tNLwRddeLJ-~-?Bl0!cfqKiYsIxSjV zi*@csE$+uxU@p}`?EpJcCLZ5x)jj6&8o5C4qCN?{MFN}Xbfic+l5s2h$_tz@Qki@z z|5c8(j&v$ROr_F(=Jxlr_mWM`!1qqfu+?k^JaU=&63%B19cQ_#FyR!#GszLk8D4?_ ziEaq-IR9tIYq{H;2b`Y+0p6{JuD3s+CsI*d8kgrf=pjwc$_jqke+{iYBG33km9oN@ z@JzyN%zWl)io!+;KPNf)MQZx4H()z-p3AtyQQIjh;;dt~(~C}g3QxiE3p=enuU<) zL5N`TvBGB%E))tE9l0af8k0yT6;5XT_R3Cod$Z9BBXiF+SIvN%jextR;J1wYn6D$- zA~X3lmy-|2s^|LrJbIiG#%qON==BG5C!zpSYu&F$w!MxOA`dMg3+0uzIpM&|y$8te zX?MZ#^_Zbh93NmNv_%~GRWyIZ-PKW17L*z&Ls#FaDHOms3Y8#5y~0gU&)oh7CVr;L zE7Z_vY-=)(b<)T^bov^HF7Q+Sp|X!fS*AnxCYxg=Sb@f_utm0nUWR=l3M|UESJ@?Y z8MG{;5PwYsKp1K~WgoMBn+GkQg{W8#8&1tWM12*{+sE#S4JAdk)2p>&eP1N5B#f^> zqPKYj7_(zm0^j9d5n*AdI_piX($o~yH9ZPhaIDdDeJfN!qB4Ulaf{AOUMcKM>L{=_ zxuc?0I!IKuN|yIphS$egyDJq5B!u9^4%tRn(i%~Rrv{WE)J*z+h&!YrLN|0pm-BM_ z^T{sWO|*UcLUK+JQ~^i-JlIT}g^Cn$os)VIT>-iQ_ zkCAn-LK7=8cuFTEjuPXLNiM(zypN|BVc` zef_L8W-~ych#IiBmQ%P!r6mv)Zu%Jr{5v#p?&(Q$Abay~X@;yIQ9##~?+_u4fP{FQ zPkCDyhqQ5CII|%eiXkhCMoAq%{Xgw5->-;tyExZ3S5D3|SsOoKmb4McM+)?j?-fFz zA+CWkA7v7KL^`d*ofSGTm@4qsD($tt!+bz}lvF|O#q^m0mGy8I7>Y7UR30Q`0;#~B ziljspWa7PG`6E$B5YF|v9Aj1hTu_rrDX#%w0WP%w_>1=g+}|xJ`bQH--^BkfP+`&? zIR*9m@yPSx=w3eK;SYqFAWbq+3bU|gN&%zzmd5#XCId~@44}V$KhWdbrkP7r2xA6K zuRkKZkmi2ykNY-Oh{%=DLwUmnCHLSpH1e{3&diNa-NG|FT6)^zDfLq z3cseFQ1C74iI;%e=%H#9@rmNuz^j4Ag-=lc8K+W?8lv_~i-aobIAgR1q$D!}D~H+! z@es&Rd=%;V0XhN_LsBy2xy85nVty_^SDX{`HOvoPDn{#L)nQS5%Ax9T8fu>5n^-k~ zQ!2Yqxj+n?NL(OB%IAbwjW(x?{>j_>N%|8ECMD?(5?4|ra;mqHl0|qEJcmuAtPf;s zF+Xg9BUZx+&A;OouYh_^m%B;(+B;0LpROxImhyoJ@Grn_K#Wvbgy`RB@=I!HRGz1= zKl?4bu;c3wC#+)C*{fNF!S61du(YlZl9rQCG0W+v7*N7PHx#)n*0%jtLquTlWg@A= z=q*aTz{J^&&8j_!g-mz6e;x am3i9_(=%=BPKopIO9azE8Of4KlHnhF>t`VV literal 0 HcmV?d00001 diff --git a/gestao_raul/Lib/site-packages/cryptography/hazmat/primitives/__pycache__/constant_time.cpython-310.pyc b/gestao_raul/Lib/site-packages/cryptography/hazmat/primitives/__pycache__/constant_time.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..f64322eee2780661c5fcebd32179bcec3a0ba221 GIT binary patch literal 544 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 literal 0 HcmV?d00001 diff --git a/gestao_raul/Lib/site-packages/cryptography/hazmat/primitives/__pycache__/padding.cpython-310.pyc b/gestao_raul/Lib/site-packages/cryptography/hazmat/primitives/__pycache__/padding.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..6c75b7abe4de95ad6c6a6480f10d8cad985ba9ab GIT binary patch literal 5578 zcmbVQ&2!tv6~_V~2|*O~MSWOx9NLa!({bp;$;3(OrnY4#b(1o#U1wTa84SdQBwGAX z7ocNts2-x^(3$qoQ)hZgI@5#NOaC4m+mp|_bUf2>fA4`HNJ@0;QiIjo5A44Ez2AHL z7Okl%Tf^__=YQM0HLq#^q{`qgh01kJ6aGISNKJ~m)({mTNY?9mMd$xU#lU}~ZZ=Yt z6!)3+bR$#Au$-z}jfu)c!>-tk$;zbAKG9@aX1>v6#?v2VrS*HGG9@p_DVh7mtmI@- z=H&vUX?amD%M*}h(6%Cf0BKgfAy3IyAV;r!iCSMOiF>q=Q`ZmzbPf%hZ`7r603b7#1DvAX3| zw;i|X*PeWEZ?CRxdVb)x9Obs_YoFED*Zf-Gy}9F7w_WtC zRn_iJ(Are)&erbbEw|HfgUdUr)~E%w$DV(=hjVFXH%zy8pq!V-!iThTQ|l}YBUXw= zR0)&#M{aXgN;PZFr6o+K$s`$#$LOtmFK;?bdrehPz%3bMCqy zD7P9kykM&()eKFDs4%D^TZ{Bm77FV0X-P{nMOK)p8Nu!FlL<`XR_m_shxU5C1g+CV{%OJeR0YXte#Hu4uhc(gW* z1!x386NvA0sdvTqx!_HGm=3o%z^DcZ-YP^y?x6l4@>9?nF-FjjuOw(T*8L!<6B z4^rw3jpH~$2v?>tUCrO}q{BwyXy(H*qtNGvp^x0Th#7n$wPg_QS$#&&>v>`6>LMD$ ziC&1zc&ixpLyY%{%2vt}GkR925-Q_) zqR>04^?05HsX?YlbD5k@|34T52j#u9bqRo{H-!0 zlOqb8ixCj*_{4Q0tAB!_Lsnmjt^PL6nPIm)*5>SHusYfP2zq^+-@`0N(PNC*@(4`% z0DeW@2g`#6z{>DX_1h4@BJYC7nUm~SU`A?y8J)#D&Bw?#WT8jV-l6*RIetYWp^Yj) z8F&|a4RhxT?J>nKt2ZH!g0?UU8pH7`jP&PFL=3XvBPQaMrRRit56x9PLq9^}IwcR} zNpZF!v(k_zay0|FT}E1vOh^;bhLn<%*kvwEahepx&sXsBk-UUXXmYMY(kIX;U?FtD zog9wy2cnGgj>0F;0htfg#aRbd&PFRo9b;EhKc?AwYouSeh82MxP!oAYzS+}oHWp857KIpURt7JnTj7#ah-~rR3zS(;?rO5Bl$*!Lkw%#f9 z;T|?}!WurD$lcjfh8Sv~l}>-4D-J1Hk0Ju8_ekG2))4C*v8Q*D9Yx-2aGs%9KhpHT zh+-A5LCML0Wth{n+dtr8_tFuo?B}M@IWlGBXya%Nhxv;k1KGe*YVS<3#b4Ov<{BzgUrH{1%T-mrPs38Kv7P zJB`3fJykqIKQiofGVHq$j&aNBzFW@p-EtO3^AwyhEpu?jIduoGvNH|ZfQk{dh>?HC!`DGwnD|5a?{o^Rd;wa=@KP}Y zGb0RCU(lj-F8-IBJX!zGqzJJ&CR{GftN`UXs3w#@g+XBZ8T^YVGeHtN!pO+iMn@+7 zbfr;rTT0w$XwGEh6&m!;@W^HQlCjaoXDoclP-G%?0!5gPu5Fd<;I|;YWmc93n@Zl3 zs<*@6_BeO0oEhqkJ|30UYfTDke#uezVi09_oPLo-!_1AFt3Sgh4*uQ|<)0TxkrEY5 zO6CFOLZPL+&6*z|`J;n1I{Mh<5=Qh-;?TMleWUq^g0N2*W=#vpH!iFqFY*~XXIu81 Rowet3d6Xh&%w+Q?{sYBGO_Bfr literal 0 HcmV?d00001 diff --git a/gestao_raul/Lib/site-packages/cryptography/hazmat/primitives/__pycache__/poly1305.cpython-310.pyc b/gestao_raul/Lib/site-packages/cryptography/hazmat/primitives/__pycache__/poly1305.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..3b19d3443fa798158aa9c20263d267d1b23645db GIT binary patch literal 374 zcmYjN!Ait15KY?dwyfQs@V0`jA|i;0xOx+n6)z0Ed(C1*b5qNWf5QaT3DpX;K8eCvJ=s*TdSVUfjH7-Ux zT94Op5m(UznvK4Olo{@Km{Qs?C$s`@V{NzskbQEmWp{XVaC|#U`U#~^t!pi()D9bq z-O_f(>Dn^0>arDkYnaQHLRCW5kWt%$v*9q94w7y{V@jEnlopBkPq&eudPg?)<(Ize z`6+n>Zh^dV=`^|0W!rG&fGif5*K<;Ha7~wT`3~8>EC0JIH&!&l fi5Cv}W^HD=J~?Z2)k=Qu|B4{-ltyVV4$|NUXb) str: + """ + A string naming this padding (e.g. "PSS", "PKCS1"). + """ diff --git a/gestao_raul/Lib/site-packages/cryptography/hazmat/primitives/_cipheralgorithm.py b/gestao_raul/Lib/site-packages/cryptography/hazmat/primitives/_cipheralgorithm.py new file mode 100644 index 0000000..588a616 --- /dev/null +++ b/gestao_raul/Lib/site-packages/cryptography/hazmat/primitives/_cipheralgorithm.py @@ -0,0 +1,58 @@ +# 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: bytes + + @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: bytes) -> bytes: + # 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/gestao_raul/Lib/site-packages/cryptography/hazmat/primitives/_serialization.py b/gestao_raul/Lib/site-packages/cryptography/hazmat/primitives/_serialization.py new file mode 100644 index 0000000..4615772 --- /dev/null +++ b/gestao_raul/Lib/site-packages/cryptography/hazmat/primitives/_serialization.py @@ -0,0 +1,169 @@ +# 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.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 Encoding(utils.Enum): + PEM = "PEM" + DER = "DER" + OpenSSH = "OpenSSH" + Raw = "Raw" + X962 = "ANSI X9.62" + SMIME = "S/MIME" + + +class PrivateFormat(utils.Enum): + PKCS8 = "PKCS8" + TraditionalOpenSSL = "TraditionalOpenSSL" + Raw = "Raw" + OpenSSH = "OpenSSH" + PKCS12 = "PKCS12" + + def encryption_builder(self) -> KeySerializationEncryptionBuilder: + if self not in (PrivateFormat.OpenSSH, PrivateFormat.PKCS12): + raise ValueError( + "encryption_builder only supported with PrivateFormat.OpenSSH" + " and PrivateFormat.PKCS12" + ) + return KeySerializationEncryptionBuilder(self) + + +class PublicFormat(utils.Enum): + SubjectPublicKeyInfo = "X.509 subjectPublicKeyInfo with PKCS#1" + PKCS1 = "Raw PKCS#1" + OpenSSH = "OpenSSH" + Raw = "Raw" + CompressedPoint = "X9.62 Compressed Point" + UncompressedPoint = "X9.62 Uncompressed Point" + + +class ParameterFormat(utils.Enum): + PKCS3 = "PKCS3" + + +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/gestao_raul/Lib/site-packages/cryptography/hazmat/primitives/asymmetric/__init__.py b/gestao_raul/Lib/site-packages/cryptography/hazmat/primitives/asymmetric/__init__.py new file mode 100644 index 0000000..b509336 --- /dev/null +++ b/gestao_raul/Lib/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/gestao_raul/Lib/site-packages/cryptography/hazmat/primitives/asymmetric/__pycache__/__init__.cpython-310.pyc b/gestao_raul/Lib/site-packages/cryptography/hazmat/primitives/asymmetric/__pycache__/__init__.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..30eec6ad3b446bda5b22a537d48fce44cc87989a GIT binary patch literal 207 zcmYk0u?oU46h%|%Ac7y_pcw@b5v!XhRNMj~rlAcsO~`vy;vb2tU*qauIGIj*;hxLA zZ+Uh&9FVB#{!u<-zPs|TB$j0~q!9%+S@xr7J4sGd$s{*aW%?PBO-%DHYd Vaz1h4)t?(%w6$7vzd$b{C13KDIywLV literal 0 HcmV?d00001 diff --git a/gestao_raul/Lib/site-packages/cryptography/hazmat/primitives/asymmetric/__pycache__/dh.cpython-310.pyc b/gestao_raul/Lib/site-packages/cryptography/hazmat/primitives/asymmetric/__pycache__/dh.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..500c7aa9ec8f16baf240356a7d605094b5539a2d GIT binary patch literal 4473 zcmb7ITXWk)6qan+kuP!Xy(LZ6LMegP;o34x>6E6W428h7Fbo>c2wA(amCBO4E4MhW z^p*brj~V_2KSQrP@yuJEIOphMS-FsC#;d)2+C6(N-=1|aJ6l)ax%2Ixz0Rzn{EdzL zQ-Q{PMN#EnP+yHW>%8u8*T83KS3+5tUNKgw2 zs?HjKYGkM-zGN=*r3AHvC{}u=Y&8GD-EF8*!}k3kv_m)W%^q|_ZBp0sj zxqCG1;1~HvgT{T-$z7;$#Z;MMmUwwrWAm)cwAb3Ns#&4-0z8LpHwm$9r07{UZSKJGO&cnbN4Y(i5 z&eNw49&L4cT!waF347#qzIMAE>4yB)&~~2NFw$|vco+sfVGsM`&Az=iu*1!va0hPa zzT|S#mg52JSGdk5>$ivFXt|e&Yyk>4Z9V7X6%gj%5)_)UcQvo1_EG3a=e`p#*Y6#i zpSE86Q8Ex!cLD*T9IO`rnf||^@u<=rgZ7*2{G^4p}K8q$;MNA8dy|pQw6kyR}ZghJz z=z=Mab)$4cn};?;PLpmZnWne}f&5VvdtoAvAFqBr6MQ`LdmkCx@8RlHuA9Ew5%5++e=2ucGrnoc2|bNc0%yO ze!v7UpCZuX#Ca?xMxYv6LLdoOr309$C!^7y zp?g9ZT-&X%3n^(3O<>POR%J6WO%UP|tFbz@b!x8y(JWBAM(s7W!p>2<&dviJT#g!` zoNVoMm~?oud=PVAP05#cBqQkVawmjHlY!#`hcM%n3xbDzR~kc7g#l}w zO6Gdzl=72I>T`LiCxB=!?LTdp-OToo@&<(&iFlS6YsI^=k^sAxNqQ-j2yEY;1{I>| zV6{kvBt^`F0t4)17M${!bT`O?py|`lpTL01MH^9GGZC5i?qRm83rFmVAWQwi zhFv=u+)p^_3ZT+D(m~2yZ(#ip&kx4RHZGE@E*Bibx*{NMl4e z7IaXo;lNcau3_;e7B{eX7mK4Lhc@2#b_}Zk0Y*FS^-Q=4ME!Iqx`zsN!|bz*OXIm@nC|dMxkxDS4A<0>tSk z_DNCV^!%46Q|#F!Cx`4ECvvtV>c43?wh&_@ z7=?7OAz|@foWAY%IOfgS1abas$i6M$NI}?fxm-#V7(Th!B2LrOxd+*nr@bm2kLEMu zo%TGrmC2eia4y$B%YibNX5Yz)5@xbut~rT-0<3tZtQF6c_{$`@UWPm!uLp4LvTUyx z2soq%2OEWNp78Or{1psx_~au8?>y;)^{I#xZ$S?!e?u!~)*q)sv2n;Qv*}*wB-uj* zg*+aihc`^1ZE+J|DS0Cah+Ej92{Jr&On5ut{tpnL7c?b4!jDO;+gO`?)hzJ3XybT+ z(l@b>c%4$K53zX%i=%iQlj)z}C-F!)lGm%q?~uz<+P#7a^v($GqL4rf3^!Wcyq3S( zwd1Q@yX*RR@se#zj3BGVyOP<&s+C-+&Gn-`1Jx%tLV%j;C$T2%i7>YD*W literal 0 HcmV?d00001 diff --git a/gestao_raul/Lib/site-packages/cryptography/hazmat/primitives/asymmetric/__pycache__/dsa.cpython-310.pyc b/gestao_raul/Lib/site-packages/cryptography/hazmat/primitives/asymmetric/__pycache__/dsa.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..ba686a412f331df6798f254588a057dbff50cd03 GIT binary patch literal 5037 zcmb_g&2!tv6$e0&0x62tmnGTq2P`LT+1QlgIJT3ft!3FwXOgNOt8r&A>R>?bN`edm z%r58*HEIvFuetVYA3gn#_L@^Kz2v4#`rgAANm(3arkKHUKOT19zK`E~kI~FbO@rtD zpZ~q@U(mE4a4`IoVenAXbopQCFpcSf*3}(d$G#C5jzPaArv$&H!0eWt3ay#JRM&E> zZq=#MxE$2F(@tI2zSLNSO}*CG6gLiMnDu?hY4C<~fj8dF^2*`dVdE|A4pdcE1FBk1 zHP7dr1wNlr&8Jk;tPWK5oNAFTIv4q3O0|eowCj?yM8C_SGrTCag79p;|jBYooO}m zcxUseC%i6?xsa+Nc-$9ZGA;acI1(=L$VwcQtdFbmxLXh36XM{6U3YQ2wKEez9a_q%Oi z|4i8l^b(NUMlOhFB>PNKnNreyhUAq$1a6*loYfhSL!e2yVK__8p0ZXTA|)y(M8 z%xUIYZuV0&zD`JhZeY>aW*68jxk;7AH^_r=y+-3TcA2fx`ZT)&#(tAzMAA|vKa3~q z_?>ZdFW2#34!GU+V>{sCetcj@dv**nXqwz6!S?03G;M)-y3#-5YaoC`!Aqn5l@X{q z&iC7a-+AJtt8n^I}hx+XH|?RrP}XNPyV7Cm$jF zxP;}cr-Bo_GyB+1aK80NfcwpixKo0IvIqMa^k(|9^Skf(`=KOr!gKTKZF0C~NzB04 z;yN}ruqhmppu?2#`KP!*XfZ#k5nNPr#oT$ptuTpEa7&El=Rn(q43|@2`+d&p)q*WB z@YWcevUu2um>=$+ERP1(){}HWRrVqQ5#r>^7{Swo%|FnpT7-=-tU$tn}RTm35v53t@Xq43xkSU3HASkjeI6O%PSD+zxgCXkGR{G`{xp~Lb3n>H9|{Eox_s9xE5a~#7R*tk zIy0D6UgE|Bncs#o^IY`FswzittWcFCMNnotih>TN``Ls25s(Jv*K+2!4tVE0wI!l#dZ0&uKN#MBF7u$FIn9dEnLS;BSX)Rv0oXp74Zp@6_{xW z5{`|tBq8ci%r7wc9;`M^LCk%Il=S`QI6IEHVguL5;Fgf~4ldlq<~}yR!KSdT0&Wqn zzJYf#+}0rTCuAc$M`Tk|Z7Aq?$WChUpa&tmwHXeG(^G1~)MyK|MMoS%P5M$7Rt$eA zywd-v$NHi1rgW^m#Y(lb-86lu=rkXY9~wYKUjro^ZGfSJ5gtJz-j}i6=Jv-MckbS@ z?`+(CaLfK=gm&W&6buZosQ*G21zwPWp-{&(Zpc%#47cA%QZ zS`NRX`U?=CIFR&K=!j0m66{~_N=!=d)TC^C1S2rETpNNo{w>TV#*&8pGuJV6HdnD? z-0LG)xUN99$&yqhQK+*vT&cH`O1;(gLrmCY%SDk2ys*H0&$;$KYDj6)x?bP~1V(44 zIhnFm`~x6R)=sU+$<@^6qpd$d=}B?Vq1q(Z-d`buPlJK71mE{1{BI&2;<(^i9-rh(6zf1SNzxLN>0)c-br1570nGXas`!9omz=MDY z2(1t(Y8g$VxL(jRI>TTl2pB9F#ZV^1c}Br3c4fMX;Y^tEP@%gR$wWAA7J7=&OfSc~ z3bA5ermxta>1RAx7(g9^THwuq2#fA#0nz4j`>p#E=&A z(+(o7PxK?L-%lHnBbh^T%F_wkX(M?Xi~K{X%-K{e=89h1j0ugGIHs#l4M>5pfQ zGmK~AC^aO8QEFHocpA){0DeFm1b&e5QQ#xu5b#5cj{!d{jsQQx_(|YL#WCQ=7#|1z zig*?HtBjuleq6+X#~D8j{Dc?@RN)ufRBq)z)vxL7Wip#2KX7q&jC+} zv%t?XejfNaaUS@2#xDTBAdl&6m%4TF4Pl7~;+Zcv4QH z_MyiUa)Mz}CK+Ck7Z{$G=NX=p=NMj*DTc4fDTY_&G{dvd*&M+Yp3{T3F4A00j z49Dac!_)FK!%;cP@RU4-R-BM0@;dtUy7*8$6dyb@GH(cdC6LIzAe&BTPEWQ}Dp#_V ze7R(&frmCL`GTF$o#6*1dvjx>tSVAmFRYbSzOr6)!q&3P+Moq#|Gm}6GFQ1RWT}#W zl$Q!=UF8i~vh4yYh*`E&`D`Iy<=P!{J!`K^J4cKge>#wPno#~65gEv6B9PH#P-suJ zi~*1sDPh1Db%{fL(wQz%XDBU^ieCFap>M*aH{?i~{xn_5$_;#sCKZ z`v3<4`vHdl2LOiw2LTTN4gnq%!x+2+PXA(|kl(1}a|@elOWwPEvpSSYP9^6qP9{^6 zlNV=_)5%maRgI=7GCh@?OioWXVyVf!3S4R=nZDSB%~Xe}vguh0h!rtNUaB70BQ=%U zJ9)a=Q*TgH>ryj~%%*0Wu%>3En(|UjdDBgK)6IEvjdf06PA5j7Ojapdl$Pa0EUQ=+ zn+1wTE$gGrY{AV@1{GC$5gVisY*`JuBe=bYP}!D>01E!!azi5D6d!NBJtYq z{<@5l7RAet;uXYmWUI-zOs*y4w#;on5mYMalc#y`pKFd`%fh3&IMgUAcMPg2f!G%` zUm1bwU{gDjl#iA)W}U9!if=(2KwcZz#;@ zs%8jK)ljAt0r)V+g_lT{EH9A3^2>9i{}wyBC^kdEUJ{%}#vDF7jKGy3WJjs{+x|1; z*2VSM5TgRNO;%2B9QYXKf(YZLgd<1FNf8yjwRs?1OB?4^yE|XNy@TqM7#0V(9Nawc z)4aB(dg1PYpW(GK;Zbn{Dv@wTn#OBM<+rjGc}H$@haF>a;pSUT--eXR+SptzIF2OUWdftMi7kHo3th;Fm}wdo_Pgqlnby^tRvV(Pl2bl#_L0 zo^IN=9W!&Y>u9PK^2t_QGbS;j>E%-EfbZGj5PO{!zp<}0Ra;ldB-1IHh1<7Nou|53 zlzVsqo{Td-w-y1^hX$QsU*Q-cTgf^@{@i5wy62jCCryw0@}?QrW<91V{bbi;dCE9X zO}p;*fV<)PS8jpd@MHT86OlPb_sUIg7FV%mYCn3g&C7n%mU(Fb(=6>dPPGbuCNcNb zG}$V-t$5=1sAf+wi)PNT{6>4fP{d*r(m&wW=YMpL+Y4S}}+ zqEydQj!|ZkGEFs4aUyhel^ovg!Wa@-F>yz35e4_=EsAlMzSdl-x77*P{qI$xe4PSz z%-1N!tEw9m#p;9PkCeKE3~Gr@W)uz>T2wQ_QC?=bi>;Vugpk&aFVwFweGa5e zKYy+DDU$2Xn-}S$jccvi!hNi9;m%YieWxB~d|dR40e05ijGywIbwu{SbsrH&IXB9= zb=TeNx^7jM7s;i)QL8sVvj3Dw!%6*eHK=7~@qE%Ra{m2IpIP&o)L%;^{pt5evp#cc ze%6Vs?ymNo$QtWwHN-vLRjlSSYtz{8`8{bdJb&1l>06B9<L(inl+be4YnemJz-Ns^SUfje62;~f4Ho~e6V*iXkR+Zz%)7%Gy9TDf(Zds35IupmoLYX<{q6opG{adS&lVcnmG6)P~i z%z4V%%X!i&7&Wnb8zZ7RCD%lAKJ0?5C+&qNrRL`FHT^VT^AO?}!-#mE zRA{&i(=&z$!fXr`M;0a>oSozBPo?r#ApP|7P-_?4AFfa(e~a%6Iw2*$AJ(|yeOsg` z2i#u;aJl0=Ql(z}37VW%5~+KR3X%UEWj>;Su#Oy#fym{6BT;ZT+MWZE|2k z;YgjsG;w$VyiFg7{2%bS90=>k;Sh-2KH%I}O}+Rt;B7b%`9I=wIS|&7!*LM#TJR*5 ze~q+Ye>o8O5AeAh2_R4u?Th<1jr94h7(CI1u>{@wprb>&RgQL@ozN8XQW%+i)QAAK`O35Y~~y5Qvz= z1}-CD@7?VsP2@lEIS|&71D)Ty9B`Qdd-$Zi#S!^WeGY_m6!MeF{1ON%SJ2E{<(d0Mg0BH}G3x-}8Q**M*tg)+ED!$#XXPY(eb z5IrKwTWeGFV!1KsgmBKia{ZQjB61NmIR}KSNL9?2@;2_UaS*sx!s1+gh`d}7f%hZ+ zgfCDVsHDIyfnNK33%0$ZtHGV%XZq&>dysYwv^#jJW9Ojl1T1q$N7y9-wBSiA$blXk zbgkl&QkFzD!%cEex0~8hza)vDS-!OppS^tPa)ORqX;b09N5GcCJ&VP5$Hp-iZLsd) z;lawv-DD!1Ip25%nsl!~lQq_MvbH_&64bAwZFuLC6L!{WYK!IbQ#24NM1=7N>6Hgd zOZS%VFW$749^ANld%?Q1_?~tB?wj|PZ{L6GZQN!1N2t!h)*9WBhMLrm=6{XqrbaX@ zzea)5^*AI{v8;IvpM4NX(U2b0zcO|Gr@DdVscw8}h9X)u#-o|^$a&ek?}-Vo7k2`W zA(`hIUVNzEAl9dM^Jjfo0c*bTG>vMX%f|2BzAV&lQ*GZtfa>`$WUuO}-|wM%^<6}& zN8QR>1mF%AT6qgY#ar##0$lH8&VC!f^2TN#qw%Lulqu%YDjl6zCsWJhE}q(W>*lZaFT zJAsP!RJXe;Iz4oO)!^;i6HN_x`|sLbJFugDPVaS$boG>XB+C5Vt+u<(#x7Z|N!%A> zr<`P4t0wj##-19l1@I6cUMrMLbUBecuAuOwppD@e`PV4eLyy((BZG9sjvx{V;due?pWSpMHT^*6PIBw_sp2f;yA_6twUd0k34v{ ziX)0%3y+Gd`}bV;;Dm9m;2v@G+%1=%Y;G_D>-ruV)-V9nPG?|ERxG|wvT$Euq08T) zk)Y*;u0?P@tmAKdrGKUVm`byqhFuw+qXZV@7{yqcze}-`6kI|8J7k`wpZW)sdX1j& zJldoScgs>bWs;sdrfU|NXycUZp5=@*Cea0>L$uWd&*?}2~8$ae@?(pVw|q)Hx}N;n+Cpd zRrw#=C(Ra^3J;@-vcfTnvGC#>We{IXPRahWKdKKayq=8$Q*Qt}S}c2$+>L0K0Y%AIit3wpfu2Rv)Pto2?(e_Ev4o3}9K>GwmOL;}BZPiBsDV3r{ zr22${PbqkY!0EHBhL?rV37SJQ!)vlc_ufqt2u}oTpK6%OAE1ETo%%xxSV`Hk>jCR| z_^SJ6>Ps#!Qq3${lh)Rm6$dhG_J*X^63xuhdTfDkg2)e z)(q-jnuh*=W=Q{E)6`#@UHVVVu>L=0xBlN|ME|kbqyLu~)qiC6>R*^K{Xfk<{Xfip p{ol<2{fEY&fp;&4*8i{lhr=gyGx}vLrW?PAn$1B|Gyg3%^8c^Z3y%N* literal 0 HcmV?d00001 diff --git a/gestao_raul/Lib/site-packages/cryptography/hazmat/primitives/asymmetric/__pycache__/ed25519.cpython-310.pyc b/gestao_raul/Lib/site-packages/cryptography/hazmat/primitives/asymmetric/__pycache__/ed25519.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..e4f5e6b4f530f139840d426dadb5f267d259dc98 GIT binary patch literal 3941 zcmb7H-E-4M5SL{6+X+bs1V{k!(Sl2GS_cCTfEb5d(5Zgq1*77<8L=b&RnM!2NC!p>$Pc%a~IfglT+qc zuG5tYY}DER=rDMIepi8^N>wFFRii0#is&T$R)3>bb(-GEkkh0;g?hBn*z9rK2eV=lXVbt%i zmaX+!mjWK&MKJKgJTOFs!+?YNT~n3U+B@yN!YBL`N%{It`i=I7>SuPc?{crz_v(gn zpsz3$zQK6ZE&C;Hk?u_z*kCx^fS4L_9F6+E;cvt2E6O+o+VHlFRS4q7#&V^c7xOmT zZ~I<@S?%rp%C^;QT7D%|$}3^CqX`E2rHILJD>L4Mp(_jnE{x5Ujm@>S)%6!kkIl8s zN6Swa&1XwLn-74529lcaRb(+vO~W%5mod zg`I?-!`;PuwM{sDUfZLt@6{fAcBe^OKCi8>KU!L>H7NHj&tz7|tt~tC8h3npy$yk~ zV5QdY@Iv75LYp~F$9G;)zF_hFW|R8Nu@^$qD(!uC9QHj1?}u?9B`v3Es;26y{%qRmB1c=cN1RsUaAq)VD@);m$ZUBGf`2%h5D2pB2f1itprZ$QOaqxi7<>Y` zQP#S53r6_7*rrBQB$PlVKsw_2`!F9w+IUI#E3y2FjBhz5bWYtZb{cfDStJ%oOJL&W#?eSq*oLDwnFyoeTG5?knV+#`h~J0&z(lgf$fJs! zy%Ib76ZEkytWr3wNJ-M>aw@R-651pyB5@`esBh4My(F-CX2|A1LZm&|iHVF?-=VfI z^t$J{1I-B!GkG)@V`~?;sr`~0bhiV&*B{OvEim+RG$d)GY0_QOyzvnm1BsQg9ypmt zQN%Zv1yargIe7*rWMa<6>nM4k1+vJ4tc;b^AOqIZbs5)nCQZB&Yq*NDMSvT#Wi_d3 zih^l2J<@TJFPSDf9Ig~?*Ww)7#I{FdZxAV~Zi{iN&V6RtezlzxFC>z~ zdXm0jW8pZJQ#7@t>P2|-@MhpmPpEp+COYUxi?7$NP-Zo4R0G>ut60mfDzta-L z5&qH?Fom3vkd5P<9M6(TG8MuduFsL$F|a@Yh8Cy`76sg@eFMHv`k zLT@W;>;$eLeDsB0cClO}_#G_rWMeO+yJvVF3pYdWUfQ}%N zK_6q&!?v@VF!vPaPXXy(9yWA@9;~2&LmAbAAIEi$EjZE}U2F^jP39Fq391iZBrtUp zj<5@8U@zZg&qN}j{w5qM>bYb^dO&Xg!cvlbR@bS9TsRj5`B8;dKs?-xf$Daa@Z~ufIlz+`XIawe!5w5S+(AyFp2RHdm%|Eisa#^$P*$S;b>u2YzD9yAf-NBV63Hzjcahvf@-32H zZAuOcl%bvX;pGUj0TyY9Mfj%SEx?-rJd*xQAVzL=@YZ9R4C60%tj_dbvMcmAo63sh zy{=uoI3N=J@o-vrN#+$3|0FQ{>nb~Y_1q}w-mRTwKvHBMK3aSZ@F=lT^&3jhEB literal 0 HcmV?d00001 diff --git a/gestao_raul/Lib/site-packages/cryptography/hazmat/primitives/asymmetric/__pycache__/ed448.cpython-310.pyc b/gestao_raul/Lib/site-packages/cryptography/hazmat/primitives/asymmetric/__pycache__/ed448.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..56bebebb54a6705e6040edd7753956dd9697c4ab GIT binary patch literal 3955 zcmb7HTXWM!6qaP!mTe_C5U$}O=mk`Q)1kCn+A@WZQc4J!m@re1XH;3ci4|na?8-nq zbf!~y?LX)PJZAcj_O(xa<}D9x&so{BtvE2%%pULMX!V`To^KsaO%)Y*u0H&8^Vcaw z`3nc5PZkE>DT>PffDTcJ8YnHbrmEQ20YAXt zOv`=UGU^hoDw{p^H{!NcQF7buFmfY5Z1WXc6SM1W-tBZk7Ey95*bJE;HCw`P)~L%t z1>VSq9optRfbO)zDf8XH@5v23+;jBNVelRLqXr$S)KsF>G@2pDh)%Mv^;c?5r`fF> zIW8^0abAv35R**FbwiHlNSVyYaY2qxlEdVP92d#as$!oK(@W&am20crM&Nt*>9){` z8@VFe*p4U{IYy%{YkS%VwhZ*KEdsoE^UxtGgb2d*i>4|swKv*Zg_olY$wc~A_LcUV z8s)a~Z;Y4fTeYg}=qpTxchDOR*Ly&xb|r2jj?bARb4=hpJwhims9{qR7Ttji;(zpu#3t;Ea*3tLV{I?s_V z+sTNG7jS0a*7(&Og&l#P-Ei?neI0_%>(6Nrh4nk3*KN^u#OrHox0e>{o0Lax=rFe% z)R+B6o%<2J)BzW{uu>m2b|E%)p~L)^ANkKHUvT+$t3@N`dkYd+rL)Zr!B-DJdp8Zj z)C^5iHC0#jf6Q#pS{e&_Wse!cplvTCetUEG=y3v2H4c?*P{Hg88|r{RNXo64hDA#a|4f=U*M-kJAUg_@$k{mr%u zN1F_HoQ5{7HS z^ccfwB-3ZO4DcJWIr3YU0*#Opq(F*tY{>B(DG^hS3vzst93r!FT$JNe3E!0@-<=i* z;!I<33?mAJCj&8d)G?gZ(^ zE&%Gc@X%pTG!5vsSN&O_-(uw^NNH22pIlzl@+~qdXo0=lFo9VDe|{& zFFpWflr$;wO_#e-#Du}+l{FKXcs5hKIF0h! IK~?|vKle|VsQ>@~ literal 0 HcmV?d00001 diff --git a/gestao_raul/Lib/site-packages/cryptography/hazmat/primitives/asymmetric/__pycache__/padding.cpython-310.pyc b/gestao_raul/Lib/site-packages/cryptography/hazmat/primitives/asymmetric/__pycache__/padding.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..0e78db8f656113d72b3e381dc9b54573880c3044 GIT binary patch literal 3761 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 Im>Sdn2U7*`(f|Me literal 0 HcmV?d00001 diff --git a/gestao_raul/Lib/site-packages/cryptography/hazmat/primitives/asymmetric/__pycache__/types.cpython-310.pyc b/gestao_raul/Lib/site-packages/cryptography/hazmat/primitives/asymmetric/__pycache__/types.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..5ebb3a4e6fe7361ee150d45eb766e5625df7881d GIT binary patch literal 1770 zcmb7ETaVjB6t*2FaUAEeT)N#}=t8^grdxIaZN)_h(PoVrwJK4vi`r2n%Z<wTJE=j+0 zr+C%S`C5|X_(xfi9LbS=iONKl`Lp6HM8UP>m#9iq5mWs#t&j?>k}B1RMr))-b)wTc zsZ)a(v_TrO1d7*$ir0dw*M_>c2AcO4=-%5<^WK4m_bwRTg=1|)BI~eDE`sW9z(u&^ zl=11ZQ*o+4mFFB+5O)=E?;+1M=vcaT(uz z6K;}Q0(T2>y1>;7xD~w%+%{~Jj=*&gX9!&5zj5=KtN7mAaGUH1{0`!q0^ge99c3tW z+JEr<>Bw2#4uUYT6E_Uv$LN>S#P#EjmMP9@R&ruHQ(&Bx!P(#cEUSX^$=$mjf1Z^X zCe-IVR(UQ$(@RG&Z1&SI8K4}Uqf)UYYq;3-}JhiWcTrYC5p$`VxMvXW+VO-^NSHfjD%P_yHx+KG+-ThJ^U3%T zW_Ws~tb7!p97z4(!MuNB91QOjyg|{sVEVorCGNPJvNOo5+U86yd8BD_9p!%Oi4ad7 zXgpcSH|H54C}!~XbO#~^eD|G9vn;M7%OcH#d9)Yoe}oM`$Ynv+{%vKh6w;dYk_Q@m zsDjHU&fWFJA@fB0)eL#0DTc`XR!%b;qlsgX|CKRo@v>{@)xIE5*5*|kg{q}*wubqi zCAN->FfYRH7bDaui$_0zpM;}>aGX*Il6W*2+&8Yx15ViL!n`8r}Dm|hK5Yiq<#0d!@R9Y%HpnwWoRx4TV+D#mGy^HMy66Hkt zXAu8rublV`Ju%)WZ7Q&2&l`I*Z|055!Jvm=J$?6UvhO1F+dA6|?$9AZSRVmkh~XR+ zIKkLrCwB@raa-)>Ug0M`M%AXhFWBvtV{>n*07JNW)=a0=EYm8juOmJ;;+gUQW5z=%&&MSVR zRH>RCxhlQsGcn=X5G@wGiO7~0JB_D#ey#$@_7kaFU@pt!XXz)+l}^9$+?467GOG(N zjZRNbk4}zLn~Ro2(K=7xinCM;!yi{P`%K{_&D6Xy{-32FkxO|4|(3TZM7(VJzl z-R%HuM@uxb0^@OvRRlhm0hqSU^yfh(ycGjIaD>;45*wisXl literal 0 HcmV?d00001 diff --git a/gestao_raul/Lib/site-packages/cryptography/hazmat/primitives/asymmetric/__pycache__/x25519.cpython-310.pyc b/gestao_raul/Lib/site-packages/cryptography/hazmat/primitives/asymmetric/__pycache__/x25519.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..8ee0c331f02763c63ea04c277ca71e365ca0108c GIT binary patch literal 3782 zcmb7H-E-4M5SL`xmOqj>AtXRT5TO*@2B$zNh3Rw%Aq84+GWnRH9?z(Z+Yl+_aw`oV2DIyM{39wSw>!Ql!^ks2`AA|D{3QINs4jRNj1_HP4G!4)5un` zvh-9UDU$vmku+8Ib42?+QOVQ%$1$qykMHM?U`LS1kSs`KBZ&z*5lT#;1W~r6V(u^0 zuPFODv)Ob#)3e-dbm)Tyu;cLbwH93gDinQCJP0k%)#|=)I zZ8~;WY+&J@gH46bBeeTRV5n4)iBwT&f=m;YBtNL{<%&v^`zdmsWJyl+)1p5^@?=c( zHPN3XlVnQtGvpj-f5D%4b?4r_+YdI{HOIDoq8(o)rf2%eTF0Z@PciDXS<_Mmlt}=O z-zwc@ zruCXON%wA`f^KsiJg7%r(`y~wtHbC4WgOh9ySw^2xNK|dMX8wamn_z4dF~!FTlG$< zZgv}{R|@y!rO>y%0S3_|`GvQ_SR*=up&<;t>o4q-w{|u*);G7;o)~MdR-dhupRO4z zFP^S%KHq-!($BLt_l$5`KNalcPwq0eVYGzz4B@lmgrBe+&NSQ^Pd%2{4E&t5Rv%V( z;F@{$kUE}Qed1c}25ox0y1DsyZMC{bxo5ftGuuw}gM`3|4m2yZI_w-AI|1LPaUgj`QxsW|RayNzpX^=@oF3hKX~Ym; zqfN^tc60A!b~rpsYvF{S+I1PY{bVjC5N!K{n6%Kxy@ovAzX%@mJAt4mD%}TJJ#5=` zs`rwC5{LnaL%ewp#sfd=uW6?g$(Mz9iwR%l)Y)YhVNW)P1f3p`S>XKq;3c8JCk$#; z>dwbKF(_!Evb~0UPkDA3I-vM3ks_!#GY|h;UGZzZ3<%N=B9bLqys6& z?K_s)0vs4OsxYW4gwEl06w-lo^|Q=EQ9tQ|Pnn-`Yx~sle6{Af&QPYKgW~osM)t1O zsr8!c^i3P;mN$AMN}%yI)F^frDZ`*|3;AO9LsUf@{8n z1LCgdqj{7(Rsvb%VF#hXXORTDsF;OHY&6XVH4Hy%7!8-S9pv+df%b$mImH&$>MeL`)_LOumVlN32Gt2y{G@TCfJV3zD> zU`JCNYJuEPiy)v5!vhd-ktie)LO_CC60nAVkfcy{$(#T&>}#Sw-v0nDo1 zi*dV3y%qhC8_EW>uxBO9;gSDOcYi7Z!qa`OiCML+V47kHOJt zddKi+@Vp3+mh`gQ_u|ds2tb`043k4vBIp>ArHf}F36L@?JxjRU{L4xIzJwVboS8$l^4E01Yj!+!HnvxBnEeXHKBfJTF z3W&73ZTLe0NXzj0#EF&J!MAM*JVZr)^F9hx7KcQ7Z+*LouTx$!@M+HQzo9^i%ED>V z{l_v(fux^adA#}(&{jaNuQ9r3bB{6sGeY0f4ED9}f~UgwST_Wi=T%K9D0u+%>BRW; J>BQ9ie*oNOgK_`> literal 0 HcmV?d00001 diff --git a/gestao_raul/Lib/site-packages/cryptography/hazmat/primitives/asymmetric/__pycache__/x448.cpython-310.pyc b/gestao_raul/Lib/site-packages/cryptography/hazmat/primitives/asymmetric/__pycache__/x448.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..da53f0d97c0ad321987d3f38503caff3ca1f334c GIT binary patch literal 3794 zcmb7H&2!U66qjV#mOm1l5C|V32wDnigHzhHd`zcP2r1BpBomVk^>{{=wHsSOw#=@a zU=O_%uKf>sAjeGqBVBvynOhER-&@JDtpu2AM$d0|pLXB(Z|zM?F!)ZAWc~**L?W^)wdATSBd@qhRe|4>n`)_5wUw@>#k}ffTG^^5__UjA<*RvF zdLWSu$-b6ImMS|1qWzw#7U=}lNbZ%wmT2+KB-M6K>=gH5Z;;KC0>~C(*-|XKN=uP! z31x{=5wB7F8}&BipkTGzo^Sb%*XC=663lG1dAHN?m`}-Fx8X6zZ?*!>+@ux<5%?nO zb!eM&7uZRYQ|4H%(-#}qxaa7j!r(jf#}B|zsVWnxs?ZdfAu36~R$s|gm8N$xHe7 zZCe>pB?Uab%b?BM1z?B_5rOFZs>sqy<&Cm0@sgh+DPP@5zfyja{mf4GjrLOBmn+hN zy2fPq292*<_A}Zh{Trx&?rpk6X!t5?(99*h<+xj}Vt5R7l8@XV?X1$K@ zHJH_D_R3AG-?IF2v?DJ^ejQ9O$S^6Gd;#Z}@c|5tVCdIierv6=wXw0j`DEq3x$<=R z;oY?dE9TwR2kV=Uo;-XU6j_)1X0&Ob;y%IDHuG9$NBGSY-a1GHDcj{t!+r6@1Bso6 zpTqX@o!SwC5Pp51NHw$E#uoA*|hYYobM%QKnPb!)3my~Z7%UhjZ+ELf?H z8oC%7y4Yb(%kiCE$`>u(YqhA)9D5P;eox?O$RwP;F-IeOTX>=Ur#lav|ut??o1cS#xdE z+FQ_p7)k36WHt{6CQT}h>IzA-cLjxXApQAw8-;>F+5>;GAmi0{sO<-8-SgbB+D7Lj zt-TyuyWFJqGp^I;UFcK((P${4z8|4Ji8y3TlRh_1Y!{)bGvlg;%WH-jR!-~cd=4i>l;`4glsr&ES>#~{asJ1#1iHt_L*F&qR*RZukT=biN4hTZMbkuUqLqT} zTAV{QH9aD#C`eg#JD9ZU+-H{UM=KX`@5@L&K{7N|aF};OZLB^%4MdX^xhSgzcysV( zN^)qH9OPg}OB~8j(1v&HiMxIirboK|S)!0s)b&&3oIp72`DqHhmYgR!l8<^mj^~Cw zU#wpsC&`Rh&x`RqIZbB8xIoT8VO|U-MRXXXtWN_|NwwIZZOT9q6FPvQuv55#?RCWQqSm#6 z;4N6>$=;Vw_h-kgDi7p`IX6}eXy3p_R=@-QpXR}I*j+<6hSknyjw;S>z}$VDKLezH zDWT;tn_y9lh2yv`^(d~}O#$LO(M)wnb1z0Iy4gBKz>$6uTB6{ z(ML9x&)`8m+1l>JCcYPchAv6AXy`VgMGx_3364oRX(DoJm;yhcgbt)Xm-N$UrhG8I zY)pA*?+Fw-PU{2=jh+|d(1O0^4SjgcID$*ZCc@O1jfgf@Y^VM{I|VSE=upZAmnq1l zu{t~slzxtl-=GYyBV4yIXLb6*Zd&aI)#0`VO#?5ET@JUIF!`Cc>k!CyJnkxg-_0Vz zGHfNuaB71yuqlU;Om>!m1pEyMp=l9BkAj<+jU)unX^8@1U*ZuWr@lf?K%xN0tKo)1 zKm2sKWE9yooG_4JYi6Gz`5Xy$8YV#aI&xni`5MVhB)5?a3tVsl%}`I2;E2E>nkk58 z_@?2_N2n(3nL>cw?!x~D09b~>6DL+@M=!Ev@DLT1&4-=8dU;G_aH)6Ncpc?s6K~-R z{}>8%sLmfJJ-ivS3`hpqyZ4qK1IP-*4YEy(TfWZ%jnRg~eaZyJFjV|F%LDD3@T%}F cwhoT{xu|MNNht!L&!qBKCXwEnmeqg%10C0hfB*mh literal 0 HcmV?d00001 diff --git a/gestao_raul/Lib/site-packages/cryptography/hazmat/primitives/asymmetric/dh.py b/gestao_raul/Lib/site-packages/cryptography/hazmat/primitives/asymmetric/dh.py new file mode 100644 index 0000000..31c9748 --- /dev/null +++ b/gestao_raul/Lib/site-packages/cryptography/hazmat/primitives/asymmetric/dh.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 abc + +from cryptography.hazmat.bindings._rust import openssl as rust_openssl +from cryptography.hazmat.primitives import _serialization + +generate_parameters = rust_openssl.dh.generate_parameters + + +DHPrivateNumbers = rust_openssl.dh.DHPrivateNumbers +DHPublicNumbers = rust_openssl.dh.DHPublicNumbers +DHParameterNumbers = rust_openssl.dh.DHParameterNumbers + + +class DHParameters(metaclass=abc.ABCMeta): + @abc.abstractmethod + def generate_private_key(self) -> 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. + """ + + +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. + """ + + +DHPrivateKeyWithSerialization = DHPrivateKey +DHPrivateKey.register(rust_openssl.dh.DHPrivateKey) diff --git a/gestao_raul/Lib/site-packages/cryptography/hazmat/primitives/asymmetric/dsa.py b/gestao_raul/Lib/site-packages/cryptography/hazmat/primitives/asymmetric/dsa.py new file mode 100644 index 0000000..6dd34c0 --- /dev/null +++ b/gestao_raul/Lib/site-packages/cryptography/hazmat/primitives/asymmetric/dsa.py @@ -0,0 +1,154 @@ +# 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 + + +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: bytes, + 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. + """ + + +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: bytes, + data: bytes, + algorithm: asym_utils.Prehashed | hashes.HashAlgorithm, + ) -> None: + """ + Verifies the signature of the data. + """ + + @abc.abstractmethod + def __eq__(self, other: object) -> bool: + """ + Checks equality. + """ + + +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/gestao_raul/Lib/site-packages/cryptography/hazmat/primitives/asymmetric/ec.py b/gestao_raul/Lib/site-packages/cryptography/hazmat/primitives/asymmetric/ec.py new file mode 100644 index 0000000..da1fbea --- /dev/null +++ b/gestao_raul/Lib/site-packages/cryptography/hazmat/primitives/asymmetric/ec.py @@ -0,0 +1,403 @@ +# 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") + SECT163K1 = ObjectIdentifier("1.3.132.0.1") + SECT163R2 = ObjectIdentifier("1.3.132.0.15") + SECT233K1 = ObjectIdentifier("1.3.132.0.26") + SECT233R1 = ObjectIdentifier("1.3.132.0.27") + SECT283K1 = ObjectIdentifier("1.3.132.0.16") + SECT283R1 = ObjectIdentifier("1.3.132.0.17") + SECT409K1 = ObjectIdentifier("1.3.132.0.36") + SECT409R1 = ObjectIdentifier("1.3.132.0.37") + SECT571K1 = ObjectIdentifier("1.3.132.0.38") + SECT571R1 = ObjectIdentifier("1.3.132.0.39") + + +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. + """ + + +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: bytes, + 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. + """ + + +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: bytes, + data: bytes, + 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. + """ + + +EllipticCurvePublicKeyWithSerialization = EllipticCurvePublicKey +EllipticCurvePublicKey.register(rust_openssl.ec.ECPublicKey) + +EllipticCurvePrivateNumbers = rust_openssl.ec.EllipticCurvePrivateNumbers +EllipticCurvePublicNumbers = rust_openssl.ec.EllipticCurvePublicNumbers + + +class SECT571R1(EllipticCurve): + name = "sect571r1" + key_size = 570 + + +class SECT409R1(EllipticCurve): + name = "sect409r1" + key_size = 409 + + +class SECT283R1(EllipticCurve): + name = "sect283r1" + key_size = 283 + + +class SECT233R1(EllipticCurve): + name = "sect233r1" + key_size = 233 + + +class SECT163R2(EllipticCurve): + name = "sect163r2" + key_size = 163 + + +class SECT571K1(EllipticCurve): + name = "sect571k1" + key_size = 571 + + +class SECT409K1(EllipticCurve): + name = "sect409k1" + key_size = 409 + + +class SECT283K1(EllipticCurve): + name = "sect283k1" + key_size = 283 + + +class SECT233K1(EllipticCurve): + name = "sect233k1" + key_size = 233 + + +class SECT163K1(EllipticCurve): + name = "sect163k1" + key_size = 163 + + +class SECP521R1(EllipticCurve): + name = "secp521r1" + key_size = 521 + + +class SECP384R1(EllipticCurve): + name = "secp384r1" + key_size = 384 + + +class SECP256R1(EllipticCurve): + name = "secp256r1" + key_size = 256 + + +class SECP256K1(EllipticCurve): + name = "secp256k1" + key_size = 256 + + +class SECP224R1(EllipticCurve): + name = "secp224r1" + key_size = 224 + + +class SECP192R1(EllipticCurve): + name = "secp192r1" + key_size = 192 + + +class BrainpoolP256R1(EllipticCurve): + name = "brainpoolP256r1" + key_size = 256 + + +class BrainpoolP384R1(EllipticCurve): + name = "brainpoolP384r1" + key_size = 384 + + +class BrainpoolP512R1(EllipticCurve): + name = "brainpoolP512r1" + key_size = 512 + + +_CURVE_TYPES: dict[str, EllipticCurve] = { + "prime192v1": SECP192R1(), + "prime256v1": SECP256R1(), + "secp192r1": SECP192R1(), + "secp224r1": SECP224R1(), + "secp256r1": SECP256R1(), + "secp384r1": SECP384R1(), + "secp521r1": SECP521R1(), + "secp256k1": SECP256K1(), + "sect163k1": SECT163K1(), + "sect233k1": SECT233K1(), + "sect283k1": SECT283K1(), + "sect409k1": SECT409K1(), + "sect571k1": SECT571K1(), + "sect163r2": SECT163R2(), + "sect233r1": SECT233R1(), + "sect283r1": SECT283R1(), + "sect409r1": SECT409R1(), + "sect571r1": SECT571R1(), + "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, + EllipticCurveOID.SECT163K1: SECT163K1, + EllipticCurveOID.SECT163R2: SECT163R2, + EllipticCurveOID.SECT233K1: SECT233K1, + EllipticCurveOID.SECT233R1: SECT233R1, + EllipticCurveOID.SECT283K1: SECT283K1, + EllipticCurveOID.SECT283R1: SECT283R1, + EllipticCurveOID.SECT409K1: SECT409K1, + EllipticCurveOID.SECT409R1: SECT409R1, + EllipticCurveOID.SECT571K1: SECT571K1, + EllipticCurveOID.SECT571R1: SECT571R1, +} + + +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/gestao_raul/Lib/site-packages/cryptography/hazmat/primitives/asymmetric/ed25519.py b/gestao_raul/Lib/site-packages/cryptography/hazmat/primitives/asymmetric/ed25519.py new file mode 100644 index 0000000..3a26185 --- /dev/null +++ b/gestao_raul/Lib/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.exceptions import UnsupportedAlgorithm, _Reasons +from cryptography.hazmat.bindings._rust import openssl as rust_openssl +from cryptography.hazmat.primitives import _serialization + + +class Ed25519PublicKey(metaclass=abc.ABCMeta): + @classmethod + def from_public_bytes(cls, data: bytes) -> Ed25519PublicKey: + from cryptography.hazmat.backends.openssl.backend import backend + + if not backend.ed25519_supported(): + raise UnsupportedAlgorithm( + "ed25519 is not supported by this version of OpenSSL.", + _Reasons.UNSUPPORTED_PUBLIC_KEY_ALGORITHM, + ) + + 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: bytes, data: bytes) -> None: + """ + Verify the signature. + """ + + @abc.abstractmethod + def __eq__(self, other: object) -> bool: + """ + Checks equality. + """ + + +Ed25519PublicKey.register(rust_openssl.ed25519.Ed25519PublicKey) + + +class Ed25519PrivateKey(metaclass=abc.ABCMeta): + @classmethod + def generate(cls) -> Ed25519PrivateKey: + from cryptography.hazmat.backends.openssl.backend import backend + + if not backend.ed25519_supported(): + raise UnsupportedAlgorithm( + "ed25519 is not supported by this version of OpenSSL.", + _Reasons.UNSUPPORTED_PUBLIC_KEY_ALGORITHM, + ) + + return rust_openssl.ed25519.generate_key() + + @classmethod + def from_private_bytes(cls, data: bytes) -> Ed25519PrivateKey: + from cryptography.hazmat.backends.openssl.backend import backend + + if not backend.ed25519_supported(): + raise UnsupportedAlgorithm( + "ed25519 is not supported by this version of OpenSSL.", + _Reasons.UNSUPPORTED_PUBLIC_KEY_ALGORITHM, + ) + + 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: bytes) -> bytes: + """ + Signs the data. + """ + + +Ed25519PrivateKey.register(rust_openssl.ed25519.Ed25519PrivateKey) diff --git a/gestao_raul/Lib/site-packages/cryptography/hazmat/primitives/asymmetric/ed448.py b/gestao_raul/Lib/site-packages/cryptography/hazmat/primitives/asymmetric/ed448.py new file mode 100644 index 0000000..78c82c4 --- /dev/null +++ b/gestao_raul/Lib/site-packages/cryptography/hazmat/primitives/asymmetric/ed448.py @@ -0,0 +1,118 @@ +# 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 + + +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: bytes, data: bytes) -> None: + """ + Verify the signature. + """ + + @abc.abstractmethod + def __eq__(self, other: object) -> bool: + """ + Checks equality. + """ + + +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: bytes) -> 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: bytes) -> 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()). + """ + + +if hasattr(rust_openssl, "x448"): + Ed448PrivateKey.register(rust_openssl.ed448.Ed448PrivateKey) diff --git a/gestao_raul/Lib/site-packages/cryptography/hazmat/primitives/asymmetric/padding.py b/gestao_raul/Lib/site-packages/cryptography/hazmat/primitives/asymmetric/padding.py new file mode 100644 index 0000000..b4babf4 --- /dev/null +++ b/gestao_raul/Lib/site-packages/cryptography/hazmat/primitives/asymmetric/padding.py @@ -0,0 +1,113 @@ +# 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): + MAX_LENGTH = _MaxLength() + + 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/gestao_raul/Lib/site-packages/cryptography/hazmat/primitives/asymmetric/rsa.py b/gestao_raul/Lib/site-packages/cryptography/hazmat/primitives/asymmetric/rsa.py new file mode 100644 index 0000000..905068e --- /dev/null +++ b/gestao_raul/Lib/site-packages/cryptography/hazmat/primitives/asymmetric/rsa.py @@ -0,0 +1,263 @@ +# 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 + +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, + ) -> 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. + """ + + +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 | None, + ) -> bytes: + """ + Recovers the original data from the signature. + """ + + @abc.abstractmethod + def __eq__(self, other: object) -> bool: + """ + Checks equality. + """ + + +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. + """ + 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. + """ + 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. + """ + 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) + # + # TODO: Replace with lcm(p - 1, q - 1) once the minimum + # supported Python version is >= 3.9. + lambda_n = (p - 1) * (q - 1) // gcd(p - 1, q - 1) + return _modinv(e, lambda_n) + + +# 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 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/gestao_raul/Lib/site-packages/cryptography/hazmat/primitives/asymmetric/types.py b/gestao_raul/Lib/site-packages/cryptography/hazmat/primitives/asymmetric/types.py new file mode 100644 index 0000000..1fe4eaf --- /dev/null +++ b/gestao_raul/Lib/site-packages/cryptography/hazmat/primitives/asymmetric/types.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 typing + +from cryptography import utils +from cryptography.hazmat.primitives.asymmetric import ( + dh, + dsa, + ec, + ed448, + ed25519, + rsa, + x448, + x25519, +) + +# Every asymmetric key type +PublicKeyTypes = typing.Union[ + dh.DHPublicKey, + dsa.DSAPublicKey, + rsa.RSAPublicKey, + ec.EllipticCurvePublicKey, + ed25519.Ed25519PublicKey, + ed448.Ed448PublicKey, + x25519.X25519PublicKey, + x448.X448PublicKey, +] +PUBLIC_KEY_TYPES = PublicKeyTypes +utils.deprecated( + PUBLIC_KEY_TYPES, + __name__, + "Use PublicKeyTypes instead", + utils.DeprecatedIn40, + name="PUBLIC_KEY_TYPES", +) +# Every asymmetric key type +PrivateKeyTypes = typing.Union[ + dh.DHPrivateKey, + ed25519.Ed25519PrivateKey, + ed448.Ed448PrivateKey, + rsa.RSAPrivateKey, + dsa.DSAPrivateKey, + ec.EllipticCurvePrivateKey, + x25519.X25519PrivateKey, + x448.X448PrivateKey, +] +PRIVATE_KEY_TYPES = PrivateKeyTypes +utils.deprecated( + PRIVATE_KEY_TYPES, + __name__, + "Use PrivateKeyTypes instead", + utils.DeprecatedIn40, + name="PRIVATE_KEY_TYPES", +) +# 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, +] +CERTIFICATE_PRIVATE_KEY_TYPES = CertificateIssuerPrivateKeyTypes +utils.deprecated( + CERTIFICATE_PRIVATE_KEY_TYPES, + __name__, + "Use CertificateIssuerPrivateKeyTypes instead", + utils.DeprecatedIn40, + name="CERTIFICATE_PRIVATE_KEY_TYPES", +) +# 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, +] +CERTIFICATE_ISSUER_PUBLIC_KEY_TYPES = CertificateIssuerPublicKeyTypes +utils.deprecated( + CERTIFICATE_ISSUER_PUBLIC_KEY_TYPES, + __name__, + "Use CertificateIssuerPublicKeyTypes instead", + utils.DeprecatedIn40, + name="CERTIFICATE_ISSUER_PUBLIC_KEY_TYPES", +) +# 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, + x25519.X25519PublicKey, + x448.X448PublicKey, +] +CERTIFICATE_PUBLIC_KEY_TYPES = CertificatePublicKeyTypes +utils.deprecated( + CERTIFICATE_PUBLIC_KEY_TYPES, + __name__, + "Use CertificatePublicKeyTypes instead", + utils.DeprecatedIn40, + name="CERTIFICATE_PUBLIC_KEY_TYPES", +) diff --git a/gestao_raul/Lib/site-packages/cryptography/hazmat/primitives/asymmetric/utils.py b/gestao_raul/Lib/site-packages/cryptography/hazmat/primitives/asymmetric/utils.py new file mode 100644 index 0000000..826b956 --- /dev/null +++ b/gestao_raul/Lib/site-packages/cryptography/hazmat/primitives/asymmetric/utils.py @@ -0,0 +1,24 @@ +# 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 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/gestao_raul/Lib/site-packages/cryptography/hazmat/primitives/asymmetric/x25519.py b/gestao_raul/Lib/site-packages/cryptography/hazmat/primitives/asymmetric/x25519.py new file mode 100644 index 0000000..0cfa36e --- /dev/null +++ b/gestao_raul/Lib/site-packages/cryptography/hazmat/primitives/asymmetric/x25519.py @@ -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 __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 + + +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. + """ + + +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: bytes) -> 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. + """ + + +X25519PrivateKey.register(rust_openssl.x25519.X25519PrivateKey) diff --git a/gestao_raul/Lib/site-packages/cryptography/hazmat/primitives/asymmetric/x448.py b/gestao_raul/Lib/site-packages/cryptography/hazmat/primitives/asymmetric/x448.py new file mode 100644 index 0000000..86086ab --- /dev/null +++ b/gestao_raul/Lib/site-packages/cryptography/hazmat/primitives/asymmetric/x448.py @@ -0,0 +1,112 @@ +# 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 + + +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. + """ + + +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: bytes) -> 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. + """ + + +if hasattr(rust_openssl, "x448"): + X448PrivateKey.register(rust_openssl.x448.X448PrivateKey) diff --git a/gestao_raul/Lib/site-packages/cryptography/hazmat/primitives/ciphers/__init__.py b/gestao_raul/Lib/site-packages/cryptography/hazmat/primitives/ciphers/__init__.py new file mode 100644 index 0000000..10c15d0 --- /dev/null +++ b/gestao_raul/Lib/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/gestao_raul/Lib/site-packages/cryptography/hazmat/primitives/ciphers/__pycache__/__init__.cpython-310.pyc b/gestao_raul/Lib/site-packages/cryptography/hazmat/primitives/ciphers/__pycache__/__init__.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..553c24cf3c2413836fb4338259372046c27b9f26 GIT binary patch literal 614 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 JMvCuv>i^V9v3LLg literal 0 HcmV?d00001 diff --git a/gestao_raul/Lib/site-packages/cryptography/hazmat/primitives/ciphers/aead.py b/gestao_raul/Lib/site-packages/cryptography/hazmat/primitives/ciphers/aead.py new file mode 100644 index 0000000..c8a582d --- /dev/null +++ b/gestao_raul/Lib/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/gestao_raul/Lib/site-packages/cryptography/hazmat/primitives/ciphers/algorithms.py b/gestao_raul/Lib/site-packages/cryptography/hazmat/primitives/ciphers/algorithms.py new file mode 100644 index 0000000..f9fa8a5 --- /dev/null +++ b/gestao_raul/Lib/site-packages/cryptography/hazmat/primitives/ciphers/algorithms.py @@ -0,0 +1,183 @@ +# 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 ( + 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: bytes): + 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: bytes): + 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: bytes): + self.key = _verify_key_size(self, key) + + +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 + + +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", +) + +utils.deprecated( + Blowfish, + __name__, + "Blowfish has been moved to " + "cryptography.hazmat.decrepit.ciphers.algorithms.Blowfish and " + "will be removed from " + "cryptography.hazmat.primitives.ciphers.algorithms in 45.0.0.", + utils.DeprecatedIn37, + name="Blowfish", +) + + +utils.deprecated( + CAST5, + __name__, + "CAST5 has been moved to " + "cryptography.hazmat.decrepit.ciphers.algorithms.CAST5 and " + "will be removed from " + "cryptography.hazmat.primitives.ciphers.algorithms in 45.0.0.", + utils.DeprecatedIn37, + name="CAST5", +) + + +utils.deprecated( + IDEA, + __name__, + "IDEA has been moved to " + "cryptography.hazmat.decrepit.ciphers.algorithms.IDEA and " + "will be removed from " + "cryptography.hazmat.primitives.ciphers.algorithms in 45.0.0.", + utils.DeprecatedIn37, + name="IDEA", +) + + +utils.deprecated( + SEED, + __name__, + "SEED has been moved to " + "cryptography.hazmat.decrepit.ciphers.algorithms.SEED and " + "will be removed from " + "cryptography.hazmat.primitives.ciphers.algorithms in 45.0.0.", + utils.DeprecatedIn37, + name="SEED", +) + + +class ChaCha20(CipherAlgorithm): + name = "ChaCha20" + key_sizes = frozenset([256]) + + def __init__(self, key: bytes, nonce: bytes): + 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) -> bytes: + 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/gestao_raul/Lib/site-packages/cryptography/hazmat/primitives/ciphers/base.py b/gestao_raul/Lib/site-packages/cryptography/hazmat/primitives/ciphers/base.py new file mode 100644 index 0000000..ebfa805 --- /dev/null +++ b/gestao_raul/Lib/site-packages/cryptography/hazmat/primitives/ciphers/base.py @@ -0,0 +1,145 @@ +# 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 + + +class CipherContext(metaclass=abc.ABCMeta): + @abc.abstractmethod + def update(self, data: bytes) -> bytes: + """ + Processes the provided bytes through the cipher and returns the results + as bytes. + """ + + @abc.abstractmethod + def update_into(self, data: bytes, buf: bytes) -> 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: bytes) -> 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, + None, + modes.ECB, + modes.ModeWithInitializationVector, + ] +] + +CipherContext.register(rust_openssl.ciphers.CipherContext) +AEADEncryptionContext.register(rust_openssl.ciphers.AEADEncryptionContext) +AEADDecryptionContext.register(rust_openssl.ciphers.AEADDecryptionContext) diff --git a/gestao_raul/Lib/site-packages/cryptography/hazmat/primitives/ciphers/modes.py b/gestao_raul/Lib/site-packages/cryptography/hazmat/primitives/ciphers/modes.py new file mode 100644 index 0000000..1dd2cc1 --- /dev/null +++ b/gestao_raul/Lib/site-packages/cryptography/hazmat/primitives/ciphers/modes.py @@ -0,0 +1,268 @@ +# 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, +) +from cryptography.hazmat.primitives.ciphers import algorithms + + +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) -> bytes: + """ + The value of the initialization vector for this mode as bytes. + """ + + +class ModeWithTweak(Mode, metaclass=abc.ABCMeta): + @property + @abc.abstractmethod + def tweak(self) -> bytes: + """ + The value of the tweak for this mode as bytes. + """ + + +class ModeWithNonce(Mode, metaclass=abc.ABCMeta): + @property + @abc.abstractmethod + def nonce(self) -> bytes: + """ + 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: bytes, 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) + + +class CBC(ModeWithInitializationVector): + name = "CBC" + + def __init__(self, initialization_vector: bytes): + utils._check_byteslike("initialization_vector", initialization_vector) + self._initialization_vector = initialization_vector + + @property + def initialization_vector(self) -> bytes: + return self._initialization_vector + + validate_for_algorithm = _check_iv_and_key_length + + +class XTS(ModeWithTweak): + name = "XTS" + + def __init__(self, tweak: bytes): + 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) -> bytes: + 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 OFB(ModeWithInitializationVector): + name = "OFB" + + def __init__(self, initialization_vector: bytes): + utils._check_byteslike("initialization_vector", initialization_vector) + self._initialization_vector = initialization_vector + + @property + def initialization_vector(self) -> bytes: + return self._initialization_vector + + validate_for_algorithm = _check_iv_and_key_length + + +class CFB(ModeWithInitializationVector): + name = "CFB" + + def __init__(self, initialization_vector: bytes): + utils._check_byteslike("initialization_vector", initialization_vector) + self._initialization_vector = initialization_vector + + @property + def initialization_vector(self) -> bytes: + return self._initialization_vector + + validate_for_algorithm = _check_iv_and_key_length + + +class CFB8(ModeWithInitializationVector): + name = "CFB8" + + def __init__(self, initialization_vector: bytes): + utils._check_byteslike("initialization_vector", initialization_vector) + self._initialization_vector = initialization_vector + + @property + def initialization_vector(self) -> bytes: + return self._initialization_vector + + validate_for_algorithm = _check_iv_and_key_length + + +class CTR(ModeWithNonce): + name = "CTR" + + def __init__(self, nonce: bytes): + utils._check_byteslike("nonce", nonce) + self._nonce = nonce + + @property + def nonce(self) -> bytes: + 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: bytes, + 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 tag is not None: + utils._check_bytes("tag", tag) + if min_tag_length < 4: + raise ValueError("min_tag_length must be >= 4") + 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) -> bytes: + 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." + ) diff --git a/gestao_raul/Lib/site-packages/cryptography/hazmat/primitives/cmac.py b/gestao_raul/Lib/site-packages/cryptography/hazmat/primitives/cmac.py new file mode 100644 index 0000000..2c67ce2 --- /dev/null +++ b/gestao_raul/Lib/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/gestao_raul/Lib/site-packages/cryptography/hazmat/primitives/constant_time.py b/gestao_raul/Lib/site-packages/cryptography/hazmat/primitives/constant_time.py new file mode 100644 index 0000000..3975c71 --- /dev/null +++ b/gestao_raul/Lib/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/gestao_raul/Lib/site-packages/cryptography/hazmat/primitives/hashes.py b/gestao_raul/Lib/site-packages/cryptography/hazmat/primitives/hashes.py new file mode 100644 index 0000000..b819e39 --- /dev/null +++ b/gestao_raul/Lib/site-packages/cryptography/hazmat/primitives/hashes.py @@ -0,0 +1,242 @@ +# 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 + +__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", +] + + +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: bytes) -> 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) + + +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/gestao_raul/Lib/site-packages/cryptography/hazmat/primitives/hmac.py b/gestao_raul/Lib/site-packages/cryptography/hazmat/primitives/hmac.py new file mode 100644 index 0000000..a9442d5 --- /dev/null +++ b/gestao_raul/Lib/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/gestao_raul/Lib/site-packages/cryptography/hazmat/primitives/kdf/__init__.py b/gestao_raul/Lib/site-packages/cryptography/hazmat/primitives/kdf/__init__.py new file mode 100644 index 0000000..79bb459 --- /dev/null +++ b/gestao_raul/Lib/site-packages/cryptography/hazmat/primitives/kdf/__init__.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 + +import abc + + +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 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/gestao_raul/Lib/site-packages/cryptography/hazmat/primitives/kdf/__pycache__/__init__.cpython-310.pyc b/gestao_raul/Lib/site-packages/cryptography/hazmat/primitives/kdf/__pycache__/__init__.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..fc390b027c4563981a6a67db95ae9731420b620f GIT binary patch literal 1136 zcmZ`&J#Q015WO#79LEj_ghWBHttGHaB!r?62Pgm|1<_b1t=6|=`{MgByXz#EmbCl< z{sH12ZA(Q%la7j+yPV@9jO6jm&hC4&Z*GfTuj8OS|M+wM$8(%tlx$lIlS9XG^-~O_ zBi+==+==T_?4{nsd+SJF23L*@z&rJ2>zh9br1#0`hrbD@@7g_)=Yr>E zOb#0Ya3-#FCLZ{wf!vdUY+VIk-ASv;yRt2Jt2~q)B?(hP-SlG)PwD%q)Px1s%-i8$8<4bT-(mj(;Gl4K$=PMQx~d#On-lqob3Pqt~No4%&!rmNn*ktvR{)nfphufPKgKgM%#sp6~qQ4 z$BWruT;ve@c(5^w8-djhCMfRr&9z4hh?kn3F95Ytm0+Y#qp)Pta(-vE0`8slH>|oaZ6~&TWVDtdQ%J;x6Z3 z)*`*B_+lE{eKFNWiP&VQWFZv|P~9VU+j$jH`-+A_fhN~>0=Mf1;eEGS$LG3>AREkXX?dp&p{MJFkvLA8=Q7K-1TB>2A>W9{c|Q1-K$e literal 0 HcmV?d00001 diff --git a/gestao_raul/Lib/site-packages/cryptography/hazmat/primitives/kdf/__pycache__/argon2.cpython-310.pyc b/gestao_raul/Lib/site-packages/cryptography/hazmat/primitives/kdf/__pycache__/argon2.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..bc0755b49d26a639a3174d9662dfe5256ae6fd8a GIT binary patch literal 473 zcmZuuJx;?g7`2nMP1AJb0&E>fBo-uu5YWN`0;z~4ie$Noo4R%E$aadtX<$TLg%f0D z;tEXI0f`QL!_#|u->)sk;{cdAx_c|$Apjp%?1pQ^830fj06EAZ10_r#wA^7%=_X#s zUDhl6Ngo2@tp{sA@k#%ANcu^4>j|^gm4(FoEp|b1pR2RB&bFKvaY)#SGoM zCe4gUy6w!XnrAkt_0MG?_#w@2C!;n%Xj$u85`?5<8YcUhY$`1ZiK|r;t?*Ncb+n*7 zr@T-RlC{#(UXp~CqTgx%msOIMRMRa{(I#I?&z8BC^$cr$NeZeok?jB>%oswiKn{)5 z!55t#rw@uql|B-tMLH8%T@tQUI-g%$PSb)YjRlgpX6X%Gq>5^CP~mKYjg#(P5&v8f l|E&|7C1Tt?LsT`be^QFPX5`d-8&IKv&Z&DHS{v_0MTmN$y%XIy58g$!XBD3}9 z&p&yxvc47KNU10MZoK|^w6UH=GQ8jMgB>4|^+5DGGTjn>r`20*`Fm|&E_OuJj%4&Q z%oca}<|2#|_!3;R)5|A39Myv=-3K3Tgx8=zrh`l}@eW>j#gDgA5y@8jbhfZw^C^tD zJQx*IYE~*+uw$~Bp4QZn>izm!nuNJYG%zq{(8w%9%YBSaVYyjt-{`Zxv15ws5_aqx z|3vV8Zyd0{us#B@%fy1z4-Ibi^&_1^?F;oZthJc7Kl|?NJ44&MyP`s+4h!SB^_{Sn z)ni|5g`zH7ep27F>l=~Gn&KwbG|arpBQmF#A$W4%g!$Nokfe*N_~AJj*Du#zS++?C%1WX?e=gBhClZ|F$v zka5=6l+pApwr_G{-{R)J4Rc#C_oKdkpzW9Xr9)jBefxkN0RgCoH3QC2oOx(s+&U`8 zEot{nZp~{4?4h=A^=)qAeZFgUo$H6CzInvB)@Og!=i#n~y(a3==md`@D1%-ra)#C@ zD~r2RqZW^&9pr4c!^toz8g0MR2@{@|H_sD3H(>wV+)kqeThwV|3P|xD5%O_vr(N0U zN|)Z4>z0DF3%iM&wJtmDI-GW%8D0@Ugfh`la5qwE2gBI$V#AZ+2YyVrpIscROJqL+$~b#JgBD zhT~+&;W0>B7!$Ao03nRds?xxb5H5mJ;Mf#4UT#_44_^4KAn+Ho#j!D>_!5m?*8U}c zakKYFh)!seY0AYbdKZ(_$AAS2tA8j@iirCOwrc1qXaq$WRIKAA$YsSSamV(^=+d~H z&fO^Gh}Fbzhn|O+_u47%#>Ce=@7t~)7ZULcTB&@c&i$CW7spf_c}g@vXs!y-vZmX$ z|2mV7F(OaIH`G%>lyn**1-7;-0j?+b99_ z?{!rI5E^OX1CAnL+oWP4v1RG7jB>!Bo2`#*@haQ`breG3u6ZBd-dm_gS-qQN-A*SJ z2^+9fuTh*N<7HFE~ zDdSLrB2N`)TvQ9R|A@&h+^#%M-u?)p|u)qAJQNVHD2sp~|bTMCC(O048ImuUvdqsUqlxvEdGSyp3?;h0Ws JYHs%K{{SYiSo8n@ literal 0 HcmV?d00001 diff --git a/gestao_raul/Lib/site-packages/cryptography/hazmat/primitives/kdf/__pycache__/hkdf.cpython-310.pyc b/gestao_raul/Lib/site-packages/cryptography/hazmat/primitives/kdf/__pycache__/hkdf.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..7fb8ed6a94c8a76ed0802ebce564082af738a433 GIT binary patch literal 3153 zcma)8OK;mo5auo)qAA)@Y$uMLG*Oej)HZV8Dbk>5V#iI9Mg@|#C|Cmo!(B_XNlIC+ z(nydmar!HY0`k%559xp4wI`o_a}Vy!(z2zXDY}40Gds)O*?D}k?dfSpgK^`#Kbn7* zHSI4H#)kpISDHpL2@KO1iM51ygdk62>QVUDV?8lEL(LhnnOL5cl)RFX&Dc(+ys5`zQ=S`9y3x){kArZFr|i&?y-t)i>$lThXpI?;Jlej3QM?1p zfDANW8|X~yYGQ_gw5e^9d2L%yElGzuqXT`H5?BH23~8c%KnKPS$`;e$7JB1=;1S{s zkXk8s{FB?{WfnDgCjAT|A#~8^t{=8|xaBMBbJNGWUYx@p=|Xe!T8~J8h`bYi5xLmGL}?qb)9$V2|8lSbSW(4ZYsGso@sg>z1=oo-dhdhk05_Q>1~HC~?JacbjG9wqIp$Q6 z>NCh;RS8VCBIy-}nJ?ymfL$0;QAP6lh}*NqW|c{&dNc!y6w){i67Ks@u71*H-57b- z_n&lwxX=g;stQDL*$+^}VjClvJp!8sTB)kR)@aE+bmkm$#!#9NG!x@h*tr1c>9DfG z&P8^HRTOqEva@VfVdoM%$IhQ%=S8syyEgvSWeOc89Tj4zMq>g6e}dTp1u=OQ_L+ci z=9VGmB?bI5e}k^}yS_u7LuLT#>Bne!nHdTtjiJfRF_g5J1*=L58%vG-BiO%xWkvO? zYLT8*NXo1l2cpSERknh(+PAB1NLQKF570;z>b07!s#%JywBOE*ly37kO3pCH>11V)-<8yve0_<+qu0=DfCMlWdd8lv5nCe|c4 z6@#*=0rnXKV`vR1(-$>`e<*32r4cXff!-uLBW#?4)y{6Q657`dXl1WDC!1wtScYmP{|H9S9SejGz85z^rJz?_L+%YEUm&Rh$*rK%fi5iGM8Vi> zM=7A*DgIjRuIzNBR|?zR6k3CL3%{HU2E@4NfDb^IVFp+L8%xk=pw*BHP@60r&fERj z@o*HMOt>Fm`o#Ts(919_3Z%o#hF<~Ls;jG@et(SD0>M_?LV~-ARV42snY3F$#m_LG zAu6~8t+uE``e(=NJjQs1Oo&IXgl2IaPe1?`btKD3UOEtA2{A@|2xQ`zacs5!FHi`q z0P!)9T1k9@{HI7hL!tmt-5lGGcqJerGNCmiK(ySyor})QjIA)MRzb|&=)xNSFjruJ za;tc+dG7d2M3uLqF6TV$WoGpnIPaikQ{Ob zGkU<-<`}H43cZIt?LV*w>Zr;!$svCVuBl3uF3CZa9CV2D>&ARbOgRAy&G)(=-bcUg zU-x^{U084wJa2vY>z&_UQj|YXW%@BtxuPg)@;elSBGk6hQGHdVvewpo4gdAF-Z6ZG zc}CmpSiaRM`K6BS+nussX1>{WIu*ataecS5;4gHlezmjcFS5*PFLjpvWmWm1B1*#k zQW17!?A4BR{}ec7;eg`|IV<2)gbR*)r1_^&TM$*$s?jpqucE#vmQY{f`kK%_R_e=- zXhn53uY_^jO~bU+jgt-3&3@WyCv_uVy4sdeC=PD6;;`KsL?U;76n~1MxE&qjEBE50 z-|KZ{8i}jzovv)9yPez)?nGgNp6X^^YPNd2kxX)<*$JEZLKEyXjME@(b)wwb4U^pn z!d(b4>}hm*J(8_Yc_ugeag%1$q)ARcDk@h<^-Cy3imwU<>Q;T77p3RM2VD{QdNY+9 zSb`k{aoCB1Aa{bG(-r+TmE9n?-w)e`#ILM(`*9jc`tYG5Yv`BBlil^VH}54_z~*OB zJMC^>?>76LC{B~jJ9n<#Sl`@{E2C)@GHB>B&xKAx?>`&i=bi6Q6EQ{Kg zhObA4xFA-=+Ly+WibY-&&x>>5TjG*G}gm*JKSnVxdA(fSi!l~j^dqkH`iNnni~?e+-QS7alr60Z=)MWx!oSBk>{RQ zx8M}}!HAig=rw9TakmcAC>ecIf~}{~=V@-TUYixHYxGc=7Q9YYoWY(`B~y>o#ClKp zm71!VmTE^@vY6@uT;^D*0nQn4G~#3>q4X8`at8jMNu|^h`dFgMHw($WF5iR%N*jKo z%6HL!DJ`M5chQ?UCAp1Wt$jt_#up{#+sTJnS>DSWc@I3Bc?OM~{3271?aX+fCR>n{ zSz_{>;>;=jgYS&_s{8`unmq0o7`HN%So@khLQ9wHHh=lQV&Txv%3S_Gl*?)P*b&vt zexRuemlv}#l`}O{f=Z@=x|t5TkQt!W%miJ`EYPK_1iGBrptY=VDRc_o1YTTx!BXeW}AaB@&Tsh!vB0<8c< zqxOUE|CA;{h~7ScyLfE3o(R+MHIFUa3uEC8&DskkzAR?n7@Q-=87pWjNIu;;Pi|j?#8bVBH4XR?jtV|c^TwpeKoh6BbRnsNsD7kbLiOR zyV$}TQg$Uftz5$=x$~2--5+vaAVw|VXcmy`2ABRO z%1gtBs54%e0ZlhAPXJ*tnALi21*|{>qcJK3{RD7YDNr{cE!Qi#kwoon`5Y!7pC@vT z2qCCEPvioTi$um+kl&!{IATe{U5a_FxRnM0=_&C++yzIoReEc9ZQW5dO;e4pYNo9& zf#agab)%?rD{83$vhli_t6IQQDV4)va!~-6WeFJsJvQ z6ugECP*6!#AX7O-JSRj*^)6-2Cf|m{FLSrSRx6&< zwtNlZ`*=AYAr-sYDk7cs6~()OH>aMb>@9cqqk{ms0WzPkotqp*@QiC43~!1tc>nN~WDvD$1cQ^d0rkKr3Vl zkXX>Hndxasn5ms18VGAeInso2M%g#y8);$5+rtfK3xQVDP2C&T!X1DY|+H(r^MP;FI%}#5W zpDv6w%;viCbMFw?eS8Y*QV$)PJz+V|z5;}=tSOnjrX0GNbG(wd50Hju#_?&?Rv#!- zyWbP~@fyV|9?_sNU@hehc@=8BD_;SX{|WMljPensD}xvBB6E!x=hAN1>xA)vhxASs zX>wz5an{EXHMWx|_1^JdG_Nvt*6U~Fcd2JGxdK*}reUSs+K=RAlD$jh4G<(O-OuC| zs{R{QPX{|uOk)nyGx#+uLcU22D36k-iL4S~bN+WKF|wI5j1dK12P3!oJpc@RG3@oC zSmgHhFrUwjy>2V6FG$L|SQipDg%2bWVv*!lVS&CW+3*Q#{6)g5V3pSIogu8q77DN9j)m4DZsHX47&{h4opaqE)o;`r<6;&RQgyU z*g?q@>I$_XCjtB%BbC^*1rm+Da;EOUm|#N2hP;8E*n%E2y44-|7IAn#XcXT0VvBjR zzeT+FiF}*LcR&C#v;)4`rg$``Ciz2%evOyY=o<8}qOEF!OS9{JrlD-qSBhvtM~fn) z&_Sb!D-3-cT)4y$#v|zkB5Yk3sl>cXRCNgE6uI)Bhkj?Is|Wyi2kU z$gHO1#KWSwEtl=NQ-}OMTI4Q{S81!+iPGJ!V4#&hrjAG>Q(EHiN0Cp`v501rxFEKI zF!w$Tq+ET2B~37A9s#!}*K6y``wHE*1 zTR3jQsh>E*Q_j`+fX5!6ILIm~V$i7r+kliE1v+u0>K>glTsmjaIpRqB6_$-_3tUqi zy1-BuIX)0Kc>yhqQ47wx%PI2bJ<7dx*G_%qD&Yj=SwgsCn7Y3zTrW`AK; z5!n8OW^rPY$2-lQ#!g0>C=ANzVggg9&sI;q@>{$Kg%Edh3hw4UMm*k1L zLEp+v6dx8)SBx;5x3Z@GfHnzrTvZ3vshJ@kI(cmB2cwQh-_vP)`Ae{YO+UxK0yk&^ zc}28vJ5!`pl6+xaodhv|#LLsDse`4-G>T2k-RN^1@^I}HAa~0Rx+IuM&~$uF*g}eV zOxVkcQI0iorwqzTDya@$9Q&yMz2Ml3pa@fk69{7{F*B zfQ#kMajy|~I$rQfiCe^oh~%Yb#RxWGSwsN?G2)zf0VNYL!V?$9k>QnLWLT%j zAn&2)lU4sUVSi57Ggwa!H^%xqs7$aP$xea$I&i<18o+&X&m!DsRL89n(A!Qaw{}jz z_6lRWw(;bxuZQi$4e&HHyEzW)Nq?)^4wFPuuI;Z}!`;XJI$su#yY(067;=o;UcVP_^plNn)LLOz588jK70rUVoM zfNq%F0!@y5rmc1KL%OunIJc&>;(TffJ+=0583_YKZhefrn!em~gmD&!eq>eV24@4( z#{jZRL%fL5|k&FBkxn|aYV?SEwVg5Vk1_4kAw_Ozo62b zl70-{^Q0u=yL9%@+;MRF{{gxr1dlO z3(a;Pw?+7cMrvT?R*}>C?sQsKoTS&LS&iuPX4K=~uZqJq8Rlfu{TF8%57WBIPcaNa z>?s_EC7~zhE&j!S{9yyX-bl)=bK^$b@9<9w#mVUmbwOUiYkQVTa{C9kPQ=eq?_g_{ cgg$T$I`5uQ&slD%rq_(BrTq8O^2*zP2Pcn^D*ylh literal 0 HcmV?d00001 diff --git a/gestao_raul/Lib/site-packages/cryptography/hazmat/primitives/kdf/__pycache__/pbkdf2.cpython-310.pyc b/gestao_raul/Lib/site-packages/cryptography/hazmat/primitives/kdf/__pycache__/pbkdf2.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..60740e3c9fe7edd8767f323137a8237ee6dbae9a GIT binary patch literal 2079 zcmZuyZExH}5cb+WpU>yZOOv!I&|=D)EP;di1ql!$O&Wp<*D7r!WSz8fyqla8zg&0s zLhp3_Li;ZeDEWx^NB+tu{z8y|89SG|itNdAv%9n7nP;9^7oCoy!T9{~A4k76HSJHF z%nuVL-)I_<3KXU>l4=y`lXTNsx)PksB0eoHby@ouEyJX^^1R6$JeIM6AN!_>PxI4=U)-94}!OV<&y`uF#Ec@C`FzI6GE0gvInp@3Owc8i?H zNT2DzkgrLb% z0G2h$mr$#iegn0N?$sLNCe}beJRa)R{(Do+x8_zc%DMdyVd`5*T4rl-4`qT|8MK@eyjXI#wDMQ@9{74v8N;Thp8Fg|oiUsn-1!^nEx4N`r5KL@urR zz6{;@E~{^WTk}f+e-ZOR^;N34Sb<;NHT5lX?+xSW{gvblE@K%`B(6Zj1ri~=d!6;H wr>jB>%pknh@60lQ9uRHxi-}){NNImnqxm)7$`Y&Pnzruh>%_H|p#H1If5A!=3IG5A literal 0 HcmV?d00001 diff --git a/gestao_raul/Lib/site-packages/cryptography/hazmat/primitives/kdf/__pycache__/scrypt.cpython-310.pyc b/gestao_raul/Lib/site-packages/cryptography/hazmat/primitives/kdf/__pycache__/scrypt.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..a5b388e736b347b0ec774453b61757cd30956cbb GIT binary patch literal 524 zcmZvXzi!(w5XMQ$wp>{*vSjJl%|qp}Kv4ui^9KkTr+||#gaCrEE(#q=6nIopJ z=o@M6lvn5!QZ3L7<#6{Me|Pxq%zT~@|2}^ES)MUMeud)oi+r(92*tG*1u3W|73Gu$ z%{1f8=SWA@h>wTAk)BjBk0}ARofhMFguj9DHrdYj4C03rW{+WZQc^xI*g09m&%td$ z`?y$M~9R{z7pg8X6ShTX!;L%*Qv5aj|5#&HrJTA2%x;P+I|}}B zC4Zp02cC%4(Mp`2tWGX?6!0YAsfALZ1KY6cjI(33S?KmA;p YqSdfRy*uvskdCG-WhqU3PH4hj0J)Hv=>Px# literal 0 HcmV?d00001 diff --git a/gestao_raul/Lib/site-packages/cryptography/hazmat/primitives/kdf/__pycache__/x963kdf.cpython-310.pyc b/gestao_raul/Lib/site-packages/cryptography/hazmat/primitives/kdf/__pycache__/x963kdf.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..4d8196d9cc162f7ab285e9b90b23d75c9c7542c5 GIT binary patch literal 2196 zcmaJ?OK%)S5bmDW&d$!Rm&8uuL`s$jkoLeD5=6v9h~UJ45^bdL5E`vC8c(-($DYTg zr^k4$u_EDc@Yj z&BXDXYHY==#PwW|7g&qAFAT5!Ibm(qc|ll*yZgG=VcJ)u-#tVx`c$=oG|glnqb$vb zFg6Pr#d%*--TSfN0h_HwX%I)doGItabQ?tWh|gfY9l{P7q|%pB!j&}%@(Itu!V=6s z;3C?tjII@Fh{hF7l^&&1S%S+#q{>{MNuGxk{W$qh#)Pb5LOLLnWD`=tG^YQAP8-8R zoL2gJGzJf>n5SboQBAaz3C0DSZp+NCEcdBs!s3@iT!QXsbM?c~H#ryi=zAW^Z1f-t zi-e~#A3c5g*~8V*m_sm`FM=W-J&x8#c_jJU(;(amU}hAG*;Hm@5lknul}WIh1af66 zq9l^hHqTeK*v87v2k+m7elVS>whw{&;7D=z&N^R!<8uv~4i$^gh48=fopE3QYEC@L zh^I9vTVhw3!&)y)PiI#F&n}>8uxsoxTLj5u6jHLR8sEXej~=WIRWpdknTX^hIa;jI z7<>Vs+&|R{^h6*Zm6J~b!C91UWJhk5u3p(2W+_*Vb%>d#?8uR`X_Sr!_tRNuUhvlf z`3$6|FeoX4v`F^MQY+0ZL%b#dveNt+nEQ*qPk*4L&PYMU4XMp_W|aDYMqyV;d;@k6 z-z;@#EoMU7U<9JFhOrKokDnhu*U9d!)rzA%02s2}+v2ml7YAa@MNdwGw6|;Z)+3n@ z#5LHn*0)uQMF^*#18tS_Z4ejyp%9r6Xw-B4aKgi_nkCBd&$6Z({t2U6{&{|s=@&U? zeM=cRk2k~>uu*3cj}zCSQH>gF=)Z6BBrN#94@bL64ZuxXdt)TNeYQHwfs zw|fHM;B>KaAw(Z22Jr^5aABKhK@%d0PQO=R_zkpJE5ekJZicBPRkF2`VzQY&rh6JQ z_H<_M8L$#S0HB^ob8f+?aX9*}CJ z%XXGMvh9RRiQ^dGflgt;;NTD%Fa|A|2ftp3BQIfk#l zAYMl;Qmw|Vdl9!d+T!9C&cUrpJOha?Zi1++V#+Xem~zppG{JNVj8^u>$yKIwz)BgL zS(NrIaT^z+8_LQGIW44zJ*@B=VOFGIO3}%`k+o_vz6IOzH=wbo0cZlM&>PgzTtK!1 zzY8tm?fkXq>~>C(t~V=}?@W0pIr9N|Wh}i_ybqCRlFR|yIigA-n_AwI zI^Yetd`X9WLm(+UyQ*iOKNIi3P@sXnejcTG7q!U63q-ZHfomJHk3gHFkxLlH@wvnG zw73gXeY-A!t7zfuMyYB~ETaw`6*q9DQKj{qz?B3U$7I*q%9k^Oi#xc>!m>$&g!?{J zr=Mi3h*5TZ|5*{l^^Cxz*8#qV(s?|Ugw-dOpg|$WE6*mH<^Jtl>MT`y@C{#w>Nc#3 ztM+XHPuwWrfr1kS)|;~Gd(d+)z5z8OuU=FQ_)f^D)jL{~78CE?d}T@fatzL2jta4w t!ngl_A8*9rRsD=F_n;~KW+YF(fqkWybX{sG767#08k literal 0 HcmV?d00001 diff --git a/gestao_raul/Lib/site-packages/cryptography/hazmat/primitives/kdf/argon2.py b/gestao_raul/Lib/site-packages/cryptography/hazmat/primitives/kdf/argon2.py new file mode 100644 index 0000000..405fc8d --- /dev/null +++ b/gestao_raul/Lib/site-packages/cryptography/hazmat/primitives/kdf/argon2.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.kdf import KeyDerivationFunction + +Argon2id = rust_openssl.kdf.Argon2id +KeyDerivationFunction.register(Argon2id) + +__all__ = ["Argon2id"] diff --git a/gestao_raul/Lib/site-packages/cryptography/hazmat/primitives/kdf/concatkdf.py b/gestao_raul/Lib/site-packages/cryptography/hazmat/primitives/kdf/concatkdf.py new file mode 100644 index 0000000..96d9d4c --- /dev/null +++ b/gestao_raul/Lib/site-packages/cryptography/hazmat/primitives/kdf/concatkdf.py @@ -0,0 +1,124 @@ +# 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 import utils +from cryptography.exceptions import AlreadyFinalized, InvalidKey +from cryptography.hazmat.primitives import constant_time, hashes, hmac +from cryptography.hazmat.primitives.kdf import KeyDerivationFunction + + +def _int_to_u32be(n: int) -> bytes: + return n.to_bytes(length=4, byteorder="big") + + +def _common_args_checks( + algorithm: hashes.HashAlgorithm, + length: int, + otherinfo: bytes | None, +) -> None: + max_length = algorithm.digest_size * (2**32 - 1) + if length > max_length: + raise ValueError(f"Cannot derive keys larger than {max_length} bits.") + if otherinfo is not None: + utils._check_bytes("otherinfo", otherinfo) + + +def _concatkdf_derive( + key_material: bytes, + length: int, + auxfn: typing.Callable[[], hashes.HashContext], + otherinfo: bytes, +) -> bytes: + utils._check_byteslike("key_material", key_material) + output = [b""] + outlen = 0 + counter = 1 + + while length > outlen: + h = auxfn() + h.update(_int_to_u32be(counter)) + h.update(key_material) + h.update(otherinfo) + output.append(h.finalize()) + outlen += len(output[-1]) + counter += 1 + + return b"".join(output)[:length] + + +class ConcatKDFHash(KeyDerivationFunction): + def __init__( + self, + algorithm: hashes.HashAlgorithm, + length: int, + otherinfo: bytes | None, + backend: typing.Any = None, + ): + _common_args_checks(algorithm, length, otherinfo) + self._algorithm = algorithm + self._length = length + self._otherinfo: bytes = otherinfo if otherinfo is not None else b"" + + self._used = False + + def _hash(self) -> hashes.Hash: + return hashes.Hash(self._algorithm) + + def derive(self, key_material: bytes) -> bytes: + if self._used: + raise AlreadyFinalized + self._used = True + return _concatkdf_derive( + key_material, self._length, self._hash, self._otherinfo + ) + + def verify(self, key_material: bytes, expected_key: bytes) -> None: + if not constant_time.bytes_eq(self.derive(key_material), expected_key): + raise InvalidKey + + +class ConcatKDFHMAC(KeyDerivationFunction): + def __init__( + self, + algorithm: hashes.HashAlgorithm, + length: int, + salt: bytes | None, + otherinfo: bytes | None, + backend: typing.Any = None, + ): + _common_args_checks(algorithm, length, otherinfo) + self._algorithm = algorithm + self._length = length + self._otherinfo: bytes = otherinfo if otherinfo is not None else b"" + + if algorithm.block_size is None: + raise TypeError(f"{algorithm.name} is unsupported for ConcatKDF") + + if salt is None: + salt = b"\x00" * algorithm.block_size + else: + utils._check_bytes("salt", salt) + + self._salt = salt + + self._used = False + + def _hmac(self) -> hmac.HMAC: + return hmac.HMAC(self._salt, self._algorithm) + + def derive(self, key_material: bytes) -> bytes: + if self._used: + raise AlreadyFinalized + self._used = True + return _concatkdf_derive( + key_material, self._length, self._hmac, self._otherinfo + ) + + def verify(self, key_material: bytes, expected_key: bytes) -> None: + if not constant_time.bytes_eq(self.derive(key_material), expected_key): + raise InvalidKey diff --git a/gestao_raul/Lib/site-packages/cryptography/hazmat/primitives/kdf/hkdf.py b/gestao_raul/Lib/site-packages/cryptography/hazmat/primitives/kdf/hkdf.py new file mode 100644 index 0000000..ee562d2 --- /dev/null +++ b/gestao_raul/Lib/site-packages/cryptography/hazmat/primitives/kdf/hkdf.py @@ -0,0 +1,101 @@ +# 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 import utils +from cryptography.exceptions import AlreadyFinalized, InvalidKey +from cryptography.hazmat.primitives import constant_time, hashes, hmac +from cryptography.hazmat.primitives.kdf import KeyDerivationFunction + + +class HKDF(KeyDerivationFunction): + def __init__( + self, + algorithm: hashes.HashAlgorithm, + length: int, + salt: bytes | None, + info: bytes | None, + backend: typing.Any = None, + ): + self._algorithm = algorithm + + if salt is None: + salt = b"\x00" * self._algorithm.digest_size + else: + utils._check_bytes("salt", salt) + + self._salt = salt + + self._hkdf_expand = HKDFExpand(self._algorithm, length, info) + + def _extract(self, key_material: bytes) -> bytes: + h = hmac.HMAC(self._salt, self._algorithm) + h.update(key_material) + return h.finalize() + + def derive(self, key_material: bytes) -> bytes: + utils._check_byteslike("key_material", key_material) + return self._hkdf_expand.derive(self._extract(key_material)) + + def verify(self, key_material: bytes, expected_key: bytes) -> None: + if not constant_time.bytes_eq(self.derive(key_material), expected_key): + raise InvalidKey + + +class HKDFExpand(KeyDerivationFunction): + def __init__( + self, + algorithm: hashes.HashAlgorithm, + length: int, + info: bytes | None, + backend: typing.Any = None, + ): + self._algorithm = algorithm + + max_length = 255 * algorithm.digest_size + + if length > max_length: + raise ValueError( + f"Cannot derive keys larger than {max_length} octets." + ) + + self._length = length + + if info is None: + info = b"" + else: + utils._check_bytes("info", info) + + self._info = info + + self._used = False + + def _expand(self, key_material: bytes) -> bytes: + output = [b""] + counter = 1 + + while self._algorithm.digest_size * (len(output) - 1) < self._length: + h = hmac.HMAC(key_material, self._algorithm) + h.update(output[-1]) + h.update(self._info) + h.update(bytes([counter])) + output.append(h.finalize()) + counter += 1 + + return b"".join(output)[: self._length] + + def derive(self, key_material: bytes) -> bytes: + utils._check_byteslike("key_material", key_material) + if self._used: + raise AlreadyFinalized + + self._used = True + return self._expand(key_material) + + def verify(self, key_material: bytes, expected_key: bytes) -> None: + if not constant_time.bytes_eq(self.derive(key_material), expected_key): + raise InvalidKey diff --git a/gestao_raul/Lib/site-packages/cryptography/hazmat/primitives/kdf/kbkdf.py b/gestao_raul/Lib/site-packages/cryptography/hazmat/primitives/kdf/kbkdf.py new file mode 100644 index 0000000..802b484 --- /dev/null +++ b/gestao_raul/Lib/site-packages/cryptography/hazmat/primitives/kdf/kbkdf.py @@ -0,0 +1,302 @@ +# 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 import utils +from cryptography.exceptions import ( + AlreadyFinalized, + InvalidKey, + UnsupportedAlgorithm, + _Reasons, +) +from cryptography.hazmat.primitives import ( + ciphers, + cmac, + constant_time, + hashes, + hmac, +) +from cryptography.hazmat.primitives.kdf import KeyDerivationFunction + + +class Mode(utils.Enum): + CounterMode = "ctr" + + +class CounterLocation(utils.Enum): + BeforeFixed = "before_fixed" + AfterFixed = "after_fixed" + MiddleFixed = "middle_fixed" + + +class _KBKDFDeriver: + def __init__( + self, + prf: typing.Callable, + mode: Mode, + length: int, + rlen: int, + llen: int | None, + location: CounterLocation, + break_location: int | None, + label: bytes | None, + context: bytes | None, + fixed: bytes | None, + ): + assert callable(prf) + + if not isinstance(mode, Mode): + raise TypeError("mode must be of type Mode") + + if not isinstance(location, CounterLocation): + raise TypeError("location must be of type CounterLocation") + + if break_location is None and location is CounterLocation.MiddleFixed: + raise ValueError("Please specify a break_location") + + if ( + break_location is not None + and location != CounterLocation.MiddleFixed + ): + raise ValueError( + "break_location is ignored when location is not" + " CounterLocation.MiddleFixed" + ) + + if break_location is not None and not isinstance(break_location, int): + raise TypeError("break_location must be an integer") + + if break_location is not None and break_location < 0: + raise ValueError("break_location must be a positive integer") + + if (label or context) and fixed: + raise ValueError( + "When supplying fixed data, label and context are ignored." + ) + + if rlen is None or not self._valid_byte_length(rlen): + raise ValueError("rlen must be between 1 and 4") + + if llen is None and fixed is None: + raise ValueError("Please specify an llen") + + if llen is not None and not isinstance(llen, int): + raise TypeError("llen must be an integer") + + if llen == 0: + raise ValueError("llen must be non-zero") + + if label is None: + label = b"" + + if context is None: + context = b"" + + utils._check_bytes("label", label) + utils._check_bytes("context", context) + self._prf = prf + self._mode = mode + self._length = length + self._rlen = rlen + self._llen = llen + self._location = location + self._break_location = break_location + self._label = label + self._context = context + self._used = False + self._fixed_data = fixed + + @staticmethod + def _valid_byte_length(value: int) -> bool: + if not isinstance(value, int): + raise TypeError("value must be of type int") + + value_bin = utils.int_to_bytes(1, value) + if not 1 <= len(value_bin) <= 4: + return False + return True + + def derive(self, key_material: bytes, prf_output_size: int) -> bytes: + if self._used: + raise AlreadyFinalized + + utils._check_byteslike("key_material", key_material) + self._used = True + + # inverse floor division (equivalent to ceiling) + rounds = -(-self._length // prf_output_size) + + output = [b""] + + # For counter mode, the number of iterations shall not be + # larger than 2^r-1, where r <= 32 is the binary length of the counter + # This ensures that the counter values used as an input to the + # PRF will not repeat during a particular call to the KDF function. + r_bin = utils.int_to_bytes(1, self._rlen) + if rounds > pow(2, len(r_bin) * 8) - 1: + raise ValueError("There are too many iterations.") + + fixed = self._generate_fixed_input() + + if self._location == CounterLocation.BeforeFixed: + data_before_ctr = b"" + data_after_ctr = fixed + elif self._location == CounterLocation.AfterFixed: + data_before_ctr = fixed + data_after_ctr = b"" + else: + if isinstance( + self._break_location, int + ) and self._break_location > len(fixed): + raise ValueError("break_location offset > len(fixed)") + data_before_ctr = fixed[: self._break_location] + data_after_ctr = fixed[self._break_location :] + + for i in range(1, rounds + 1): + h = self._prf(key_material) + + counter = utils.int_to_bytes(i, self._rlen) + input_data = data_before_ctr + counter + data_after_ctr + + h.update(input_data) + + output.append(h.finalize()) + + return b"".join(output)[: self._length] + + def _generate_fixed_input(self) -> bytes: + if self._fixed_data and isinstance(self._fixed_data, bytes): + return self._fixed_data + + l_val = utils.int_to_bytes(self._length * 8, self._llen) + + return b"".join([self._label, b"\x00", self._context, l_val]) + + +class KBKDFHMAC(KeyDerivationFunction): + def __init__( + self, + algorithm: hashes.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, + ): + if not isinstance(algorithm, hashes.HashAlgorithm): + raise UnsupportedAlgorithm( + "Algorithm supplied is not a supported hash algorithm.", + _Reasons.UNSUPPORTED_HASH, + ) + + from cryptography.hazmat.backends.openssl.backend import ( + backend as ossl, + ) + + if not ossl.hmac_supported(algorithm): + raise UnsupportedAlgorithm( + "Algorithm supplied is not a supported hmac algorithm.", + _Reasons.UNSUPPORTED_HASH, + ) + + self._algorithm = algorithm + + self._deriver = _KBKDFDeriver( + self._prf, + mode, + length, + rlen, + llen, + location, + break_location, + label, + context, + fixed, + ) + + def _prf(self, key_material: bytes) -> hmac.HMAC: + return hmac.HMAC(key_material, self._algorithm) + + def derive(self, key_material: bytes) -> bytes: + return self._deriver.derive(key_material, self._algorithm.digest_size) + + def verify(self, key_material: bytes, expected_key: bytes) -> None: + if not constant_time.bytes_eq(self.derive(key_material), expected_key): + raise InvalidKey + + +class KBKDFCMAC(KeyDerivationFunction): + def __init__( + self, + algorithm, + 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, + ): + if not issubclass( + algorithm, ciphers.BlockCipherAlgorithm + ) or not issubclass(algorithm, ciphers.CipherAlgorithm): + raise UnsupportedAlgorithm( + "Algorithm supplied is not a supported cipher algorithm.", + _Reasons.UNSUPPORTED_CIPHER, + ) + + self._algorithm = algorithm + self._cipher: ciphers.BlockCipherAlgorithm | None = None + + self._deriver = _KBKDFDeriver( + self._prf, + mode, + length, + rlen, + llen, + location, + break_location, + label, + context, + fixed, + ) + + def _prf(self, _: bytes) -> cmac.CMAC: + assert self._cipher is not None + + return cmac.CMAC(self._cipher) + + def derive(self, key_material: bytes) -> bytes: + self._cipher = self._algorithm(key_material) + + assert self._cipher is not None + + from cryptography.hazmat.backends.openssl.backend import ( + backend as ossl, + ) + + if not ossl.cmac_algorithm_supported(self._cipher): + raise UnsupportedAlgorithm( + "Algorithm supplied is not a supported cipher algorithm.", + _Reasons.UNSUPPORTED_CIPHER, + ) + + return self._deriver.derive(key_material, self._cipher.block_size // 8) + + def verify(self, key_material: bytes, expected_key: bytes) -> None: + if not constant_time.bytes_eq(self.derive(key_material), expected_key): + raise InvalidKey diff --git a/gestao_raul/Lib/site-packages/cryptography/hazmat/primitives/kdf/pbkdf2.py b/gestao_raul/Lib/site-packages/cryptography/hazmat/primitives/kdf/pbkdf2.py new file mode 100644 index 0000000..82689eb --- /dev/null +++ b/gestao_raul/Lib/site-packages/cryptography/hazmat/primitives/kdf/pbkdf2.py @@ -0,0 +1,62 @@ +# 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 import utils +from cryptography.exceptions import ( + AlreadyFinalized, + InvalidKey, + UnsupportedAlgorithm, + _Reasons, +) +from cryptography.hazmat.bindings._rust import openssl as rust_openssl +from cryptography.hazmat.primitives import constant_time, hashes +from cryptography.hazmat.primitives.kdf import KeyDerivationFunction + + +class PBKDF2HMAC(KeyDerivationFunction): + def __init__( + self, + algorithm: hashes.HashAlgorithm, + length: int, + salt: bytes, + iterations: int, + backend: typing.Any = None, + ): + from cryptography.hazmat.backends.openssl.backend import ( + backend as ossl, + ) + + if not ossl.pbkdf2_hmac_supported(algorithm): + raise UnsupportedAlgorithm( + f"{algorithm.name} is not supported for PBKDF2.", + _Reasons.UNSUPPORTED_HASH, + ) + self._used = False + self._algorithm = algorithm + self._length = length + utils._check_bytes("salt", salt) + self._salt = salt + self._iterations = iterations + + def derive(self, key_material: bytes) -> bytes: + if self._used: + raise AlreadyFinalized("PBKDF2 instances can only be used once.") + self._used = True + + return rust_openssl.kdf.derive_pbkdf2_hmac( + key_material, + self._algorithm, + self._salt, + self._iterations, + self._length, + ) + + def verify(self, key_material: bytes, expected_key: bytes) -> None: + derived_key = self.derive(key_material) + if not constant_time.bytes_eq(derived_key, expected_key): + raise InvalidKey("Keys do not match.") diff --git a/gestao_raul/Lib/site-packages/cryptography/hazmat/primitives/kdf/scrypt.py b/gestao_raul/Lib/site-packages/cryptography/hazmat/primitives/kdf/scrypt.py new file mode 100644 index 0000000..f791cee --- /dev/null +++ b/gestao_raul/Lib/site-packages/cryptography/hazmat/primitives/kdf/scrypt.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 sys + +from cryptography.hazmat.bindings._rust import openssl as rust_openssl +from cryptography.hazmat.primitives.kdf import KeyDerivationFunction + +# This is used by the scrypt tests to skip tests that require more memory +# than the MEM_LIMIT +_MEM_LIMIT = sys.maxsize // 2 + +Scrypt = rust_openssl.kdf.Scrypt +KeyDerivationFunction.register(Scrypt) + +__all__ = ["Scrypt"] diff --git a/gestao_raul/Lib/site-packages/cryptography/hazmat/primitives/kdf/x963kdf.py b/gestao_raul/Lib/site-packages/cryptography/hazmat/primitives/kdf/x963kdf.py new file mode 100644 index 0000000..6e38366 --- /dev/null +++ b/gestao_raul/Lib/site-packages/cryptography/hazmat/primitives/kdf/x963kdf.py @@ -0,0 +1,61 @@ +# 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 import utils +from cryptography.exceptions import AlreadyFinalized, InvalidKey +from cryptography.hazmat.primitives import constant_time, hashes +from cryptography.hazmat.primitives.kdf import KeyDerivationFunction + + +def _int_to_u32be(n: int) -> bytes: + return n.to_bytes(length=4, byteorder="big") + + +class X963KDF(KeyDerivationFunction): + def __init__( + self, + algorithm: hashes.HashAlgorithm, + length: int, + sharedinfo: bytes | None, + backend: typing.Any = None, + ): + max_len = algorithm.digest_size * (2**32 - 1) + if length > max_len: + raise ValueError(f"Cannot derive keys larger than {max_len} bits.") + if sharedinfo is not None: + utils._check_bytes("sharedinfo", sharedinfo) + + self._algorithm = algorithm + self._length = length + self._sharedinfo = sharedinfo + self._used = False + + def derive(self, key_material: bytes) -> bytes: + if self._used: + raise AlreadyFinalized + self._used = True + utils._check_byteslike("key_material", key_material) + output = [b""] + outlen = 0 + counter = 1 + + while self._length > outlen: + h = hashes.Hash(self._algorithm) + h.update(key_material) + h.update(_int_to_u32be(counter)) + if self._sharedinfo is not None: + h.update(self._sharedinfo) + output.append(h.finalize()) + outlen += len(output[-1]) + counter += 1 + + return b"".join(output)[: self._length] + + def verify(self, key_material: bytes, expected_key: bytes) -> None: + if not constant_time.bytes_eq(self.derive(key_material), expected_key): + raise InvalidKey diff --git a/gestao_raul/Lib/site-packages/cryptography/hazmat/primitives/keywrap.py b/gestao_raul/Lib/site-packages/cryptography/hazmat/primitives/keywrap.py new file mode 100644 index 0000000..b93d87d --- /dev/null +++ b/gestao_raul/Lib/site-packages/cryptography/hazmat/primitives/keywrap.py @@ -0,0 +1,177 @@ +# 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.ciphers import Cipher +from cryptography.hazmat.primitives.ciphers.algorithms import AES +from cryptography.hazmat.primitives.ciphers.modes import ECB +from cryptography.hazmat.primitives.constant_time import bytes_eq + + +def _wrap_core( + wrapping_key: bytes, + a: bytes, + r: list[bytes], +) -> 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") + + 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/gestao_raul/Lib/site-packages/cryptography/hazmat/primitives/padding.py b/gestao_raul/Lib/site-packages/cryptography/hazmat/primitives/padding.py new file mode 100644 index 0000000..b2a3f1c --- /dev/null +++ b/gestao_raul/Lib/site-packages/cryptography/hazmat/primitives/padding.py @@ -0,0 +1,183 @@ +# 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 AlreadyFinalized +from cryptography.hazmat.bindings._rust import ( + PKCS7PaddingContext, + PKCS7UnpaddingContext, + check_ansix923_padding, +) + + +class PaddingContext(metaclass=abc.ABCMeta): + @abc.abstractmethod + def update(self, data: bytes) -> 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.") + + +def _byte_padding_update( + buffer_: bytes | None, data: bytes, block_size: int +) -> tuple[bytes, bytes]: + if buffer_ is None: + raise AlreadyFinalized("Context was already finalized.") + + utils._check_byteslike("data", data) + + buffer_ += bytes(data) + + finished_blocks = len(buffer_) // (block_size // 8) + + result = buffer_[: finished_blocks * (block_size // 8)] + buffer_ = buffer_[finished_blocks * (block_size // 8) :] + + return buffer_, result + + +def _byte_padding_pad( + buffer_: bytes | None, + block_size: int, + paddingfn: typing.Callable[[int], bytes], +) -> bytes: + if buffer_ is None: + raise AlreadyFinalized("Context was already finalized.") + + pad_size = block_size // 8 - len(buffer_) + return buffer_ + paddingfn(pad_size) + + +def _byte_unpadding_update( + buffer_: bytes | None, data: bytes, block_size: int +) -> tuple[bytes, bytes]: + if buffer_ is None: + raise AlreadyFinalized("Context was already finalized.") + + utils._check_byteslike("data", data) + + buffer_ += bytes(data) + + finished_blocks = max(len(buffer_) // (block_size // 8) - 1, 0) + + result = buffer_[: finished_blocks * (block_size // 8)] + buffer_ = buffer_[finished_blocks * (block_size // 8) :] + + return buffer_, result + + +def _byte_unpadding_check( + buffer_: bytes | None, + block_size: int, + checkfn: typing.Callable[[bytes], int], +) -> bytes: + if buffer_ is None: + raise AlreadyFinalized("Context was already finalized.") + + if len(buffer_) != block_size // 8: + raise ValueError("Invalid padding bytes.") + + valid = checkfn(buffer_) + + if not valid: + raise ValueError("Invalid padding bytes.") + + pad_size = buffer_[-1] + return buffer_[:-pad_size] + + +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) + + +class _ANSIX923PaddingContext(PaddingContext): + _buffer: bytes | None + + def __init__(self, block_size: int): + self.block_size = block_size + # TODO: more copies than necessary, we should use zero-buffer (#193) + self._buffer = b"" + + def update(self, data: bytes) -> bytes: + self._buffer, result = _byte_padding_update( + self._buffer, data, self.block_size + ) + return result + + def _padding(self, size: int) -> bytes: + return bytes([0]) * (size - 1) + bytes([size]) + + def finalize(self) -> bytes: + result = _byte_padding_pad( + self._buffer, self.block_size, self._padding + ) + self._buffer = None + return result + + +class _ANSIX923UnpaddingContext(PaddingContext): + _buffer: bytes | None + + def __init__(self, block_size: int): + self.block_size = block_size + # TODO: more copies than necessary, we should use zero-buffer (#193) + self._buffer = b"" + + def update(self, data: bytes) -> bytes: + self._buffer, result = _byte_unpadding_update( + self._buffer, data, self.block_size + ) + return result + + def finalize(self) -> bytes: + result = _byte_unpadding_check( + self._buffer, + self.block_size, + check_ansix923_padding, + ) + self._buffer = None + return result diff --git a/gestao_raul/Lib/site-packages/cryptography/hazmat/primitives/poly1305.py b/gestao_raul/Lib/site-packages/cryptography/hazmat/primitives/poly1305.py new file mode 100644 index 0000000..7f5a77a --- /dev/null +++ b/gestao_raul/Lib/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/gestao_raul/Lib/site-packages/cryptography/hazmat/primitives/serialization/__init__.py b/gestao_raul/Lib/site-packages/cryptography/hazmat/primitives/serialization/__init__.py new file mode 100644 index 0000000..07b2264 --- /dev/null +++ b/gestao_raul/Lib/site-packages/cryptography/hazmat/primitives/serialization/__init__.py @@ -0,0 +1,63 @@ +# 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, +) + +__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", +] diff --git a/gestao_raul/Lib/site-packages/cryptography/hazmat/primitives/serialization/__pycache__/__init__.cpython-310.pyc b/gestao_raul/Lib/site-packages/cryptography/hazmat/primitives/serialization/__pycache__/__init__.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..9521831289989b11523d44a0a595e0c20759755e GIT binary patch literal 1291 zcmb7@&2G~`5XbF&H+7Px`E1%Ej^xm!oRAPg&{Bj1DpdoQm8I1t-lnVW*w)%EN}qyf z;D&f3Upes#oY-;F#A(Hs4?pevcXl%K&#qUglnwnodH-!16%6A$2I()OgBONj2A}o9 zF&tAGU=q{Bbw*|&OR|t7ImnYd6i5MzqzENaf(^0(Wl~P^vT_qFVnKyeph~JxBQ@9} zTTmzUWIrdjp+OqZBu!|M7PLtlI-~<#(uEze13l7%U9t;%WY09FhLitdl6|KzGWx|I z*lXX6H<{~tAq$1)2K`dpIpRV1@|p?B#*&}76E*X3FD~h|=LmNi_ulf^h%3RQxJk~X zvaC}t71hp|V!%VLUV92y7+21exMm?=gw|O!mSVDqcIod6_X}}Ddd#5?SJc0)8pO?& zIIm2v_$-~8{6I?dIov;=i1*GX>hgTQ99Ku9H^*Fs;zCUH5OHfgK8l3Y?Zw;c@`stv zDh%H1Hv4iMooc15Y zWlAriFjAaSg%5@tBp1$`D&}9#2AAwcUz>rR4n!!fc`%?s`sV#h>)020{Fkz8RR?3H z<3El<4*#p5w*0PfD@RuruKN=gDP>Yp`qfbTXd2>Ybo|u*sM`zdPh5tc{mPp}p#R^% zK0iM?Iku8^)!cZVx?hif(rDHW~=DINH;xbzG> XCzAZRshbGUQ!Do<^RRqavMRp-?em9) literal 0 HcmV?d00001 diff --git a/gestao_raul/Lib/site-packages/cryptography/hazmat/primitives/serialization/__pycache__/base.cpython-310.pyc b/gestao_raul/Lib/site-packages/cryptography/hazmat/primitives/serialization/__pycache__/base.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..30b63166e9405f50dbca7513001d64d7d7542602 GIT binary patch literal 526 zcmY+AK~KXV6vv_KwmLg6^AmX6!S-lkj4@7cMw1yYgruPbJ2qM>(3$QV8Nbo4p8N`) zq-@DLlK1}b86l-qSWks?Tu{*fivv}9D*mj`chOe29tuH5nZ;0Wtj8mdn bR5jb+rjWE2>=xQr=rfx_Kkx#$ixB<;@@J*F literal 0 HcmV?d00001 diff --git a/gestao_raul/Lib/site-packages/cryptography/hazmat/primitives/serialization/__pycache__/pkcs12.cpython-310.pyc b/gestao_raul/Lib/site-packages/cryptography/hazmat/primitives/serialization/__pycache__/pkcs12.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..261fb0fbbc26d1b5d6f6f8ba42bdde68be0adcf3 GIT binary patch literal 4243 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 literal 0 HcmV?d00001 diff --git a/gestao_raul/Lib/site-packages/cryptography/hazmat/primitives/serialization/__pycache__/pkcs7.cpython-310.pyc b/gestao_raul/Lib/site-packages/cryptography/hazmat/primitives/serialization/__pycache__/pkcs7.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..7314bb14175ed3c48dd509b257c1c99ea11a038e GIT binary patch literal 10049 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 DrlSuW literal 0 HcmV?d00001 diff --git a/gestao_raul/Lib/site-packages/cryptography/hazmat/primitives/serialization/__pycache__/ssh.cpython-310.pyc b/gestao_raul/Lib/site-packages/cryptography/hazmat/primitives/serialization/__pycache__/ssh.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..39d80041638cb348a2cab48f3eaacaecc8172253 GIT binary patch literal 38569 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 literal 0 HcmV?d00001 diff --git a/gestao_raul/Lib/site-packages/cryptography/hazmat/primitives/serialization/base.py b/gestao_raul/Lib/site-packages/cryptography/hazmat/primitives/serialization/base.py new file mode 100644 index 0000000..e7c998b --- /dev/null +++ b/gestao_raul/Lib/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/gestao_raul/Lib/site-packages/cryptography/hazmat/primitives/serialization/pkcs12.py b/gestao_raul/Lib/site-packages/cryptography/hazmat/primitives/serialization/pkcs12.py new file mode 100644 index 0000000..549e1f9 --- /dev/null +++ b/gestao_raul/Lib/site-packages/cryptography/hazmat/primitives/serialization/pkcs12.py @@ -0,0 +1,156 @@ +# 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 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_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_key_and_certificates( + name: bytes | None, + key: PKCS12PrivateKeyTypes | None, + cert: x509.Certificate | None, + cas: typing.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/gestao_raul/Lib/site-packages/cryptography/hazmat/primitives/serialization/pkcs7.py b/gestao_raul/Lib/site-packages/cryptography/hazmat/primitives/serialization/pkcs7.py new file mode 100644 index 0000000..882e345 --- /dev/null +++ b/gestao_raul/Lib/site-packages/cryptography/hazmat/primitives/serialization/pkcs7.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 email.base64mime +import email.generator +import email.message +import email.policy +import io +import typing + +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.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 +] + + +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: bytes | 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: bytes) -> 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: typing.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, + ): + 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 [] + + 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) + + 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, + ], + ) + + def encrypt( + self, + encoding: serialization.Encoding, + options: typing.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") + 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, 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/gestao_raul/Lib/site-packages/cryptography/hazmat/primitives/serialization/ssh.py b/gestao_raul/Lib/site-packages/cryptography/hazmat/primitives/serialization/ssh.py new file mode 100644 index 0000000..c01afb0 --- /dev/null +++ b/gestao_raul/Lib/site-packages/cryptography/hazmat/primitives/serialization/ssh.py @@ -0,0 +1,1569 @@ +# 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: bytes, + 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: bytes, 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: bytes) -> 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 ValueError("Key is password-protected.") + + 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[bytes] + + def __init__(self, init: list[bytes] | None = None) -> None: + self.flist = [] + if init: + self.flist.extend(init) + + def put_raw(self, val: bytes) -> 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 + ) -> 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() + 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 + ) -> 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 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 + ) -> 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 + ) -> 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 + + +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 + + +_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: bytes): + """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: bytes, + password: bytes | None, + backend: typing.Any = None, +) -> 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, kdfname) != (_NONE, _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: + # 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) + # 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: bytes, + _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: bytes, +) -> 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 load_ssh_public_key( + data: bytes, 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/gestao_raul/Lib/site-packages/cryptography/hazmat/primitives/twofactor/__init__.py b/gestao_raul/Lib/site-packages/cryptography/hazmat/primitives/twofactor/__init__.py new file mode 100644 index 0000000..c1af423 --- /dev/null +++ b/gestao_raul/Lib/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/gestao_raul/Lib/site-packages/cryptography/hazmat/primitives/twofactor/__pycache__/__init__.cpython-310.pyc b/gestao_raul/Lib/site-packages/cryptography/hazmat/primitives/twofactor/__pycache__/__init__.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..23e030f19b23dbf6f4ab6a1e0e56208ca372b309 GIT binary patch literal 426 zcmYjNyH3L}6unM@2qoS40M-nU5eXrLC>26NMJljFmMjyyt<}U%ZKtKI@H2=%%F4tq zFkvSHJ(8_+A3pc^s^M?|4rdQv^8f*S`(PK53$6f=Id+5rLnTxwM+k0#1uXmk7V_Xd z%tIDELb~_kx*$dEA(c{DYK4-f@VQ;MIlX4$2!|Xo$ODGl`=Cwk^(NtVogQwH$@d(ek zu~ZRFn-brP7i@&(Cp9gW)Kzeyx3yJsP3y%rThO15>~9a$?QhWXknGk2oX|P zLQd}-}mAg;~P`O24@|4FSfb>}OKibzm>0b~KC^Ji+_4Lt$W#s@}xpP;)?<}vtk&WMF&!aS98~F~;KsuKLWj%Vl@ds6x zqX7@I2o5m|DO4kh<9rC`>M18FiXj)r9xVB#zn*7Y&GIj#h{8c6V3XvcIKG%Bh5Sqo z2Pyvy1aJ9CCO`jNIfBcf$YLAs_428~8-HtP{ujV7QX1Pvmoh5J0R`SXBrr08v$pL6 z=MdI<=AK=GGloQ5FYSXGvr4l|55ZwDa!X5drdXEs(%dKiFqjP-MebWOGb?`2VNQu_ zwbB9VO0TrFgaf9puPcWoy+jtuDR>Net9q37a*@cbzL*6ykICxT1FJg+2eqhJQUF|-TXM|Y!->+?+&7PCxVsDSd0cT?}=!zHCoz=#{Ebx4MfsU zWb&LBOL8~wMzPGr5<;gv7^!C1;~5u`Xcn)KAT~)FKh_HH`pAThoG_8PuWFw2{@bGV3*k< za1Q$!`w6=ST#XU%5xAZA{WX_ibSWnn2THRWmQL?={13wM4&pNj^rAW zA0fF8q~$29;AvO1aOUSo(D$N^CJ#aze;N$$1A}0Y1RPkGlmRTj;l_bkl0&iwP+*w)ta;;- zv1c;#0MZ?f4=E-Nv|LlA4TDF*-#kq;@Usxy{Y#f_+bFf$QlA(Rp*3OYxfH{m2HJcKO;s^Jkd z;WU|>m~A4V_s5v@CJ*wb@q@mU#sL}$%yUS%FC=Q$Tick~G?6^Q*gxQ%r( zo~aqQ8zq)Am}9j?;|i3q`^Fv=!_q1(R=;fgm0mISZ0T)JVY*@7 z*OX1&NBlI_#U0Q_nVqE9qB<6TZGx>y;7?-swvOQx?RWB3^*3WE(mo zP|EEl88j+mF7Cpx3V5$8@_x0a<(wf>nX&vL@UZi#5UHHJ+by7WlfgMZiVxthKfv!S)mRof;+OlW6PHkL$6<1p>CT47$!VsFNu%EMGihLsspADn5 zS`ohn(JHV%L=GJ;o*+51;;AWhkAPYf_&wL44ke9aZ_#r-YkC@tq%YLK-MRX}iIZQ`Z@aBJ)guTTUFU}Rm;O76>b=u7GeDWpsL(*w=6H=UmHU3>k`FK^ V=m2Y2E*4BEn+q6b)HCO1?o1O9Q&isBeBYM4#1?#h?zt6sRE$a{5 zTwXS89$6MC4?$rTBdL{XFTUJQar3=664*Mmjjzen9V~_xD^m)1+-1tl-*%I z>$7XejlgDi*>$#k3>mR|>;}6DT7&Jf_t*|-E+Y{2eeI0k-Gh;~pYw%oOcn|rcT=9v z)Lh$1u5>#}XF?`wo=L#f(rrv5EEO+wa}vdn13T@gMUmvQ;g|VBZ}EI8WXwajFg(A= znFx`_O*p<;sN;3}n8drFtelkRD z2=Cik7pbx6QPW%bo^a18JCIT4+_XO0?#;>i$aN+jEebUZyqhPNbMCe$r6%~%5lzE40=)`}>i=#;K$*;O_pYw`>ALgwkg z^3xH#GSvP=j`#}2e zdEgchj$n`xHlZQOuxL2jB(saI_fcTKTo9zUXIzDa6h}}4B8R5O`80%YO6)XhJBBk# z`o#HrdCR1D)d{G-(ZH*l6$f|Su}FH|wun>RyT)c3_zkpS7t1XW5IlX`UW08GOeJ&;Sq@~uHAZ=20NF>%&;Ca z!;3Lf*W*X8|7iH{EHb4UJovw#4{@fN`D&(qT`CyyRcY$h=QU1W5X==3_na2>s7JQR GR`VYO0@;=T literal 0 HcmV?d00001 diff --git a/gestao_raul/Lib/site-packages/cryptography/hazmat/primitives/twofactor/hotp.py b/gestao_raul/Lib/site-packages/cryptography/hazmat/primitives/twofactor/hotp.py new file mode 100644 index 0000000..855a5d2 --- /dev/null +++ b/gestao_raul/Lib/site-packages/cryptography/hazmat/primitives/twofactor/hotp.py @@ -0,0 +1,100 @@ +# 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 typing +from urllib.parse import quote, urlencode + +from cryptography.hazmat.primitives import constant_time, hmac +from cryptography.hazmat.primitives.hashes import SHA1, SHA256, SHA512 +from cryptography.hazmat.primitives.twofactor import InvalidToken + +HOTPHashTypes = typing.Union[SHA1, SHA256, SHA512] + + +def _generate_uri( + hotp: HOTP, + type_name: str, + account_name: str, + issuer: str | None, + extra_parameters: list[tuple[str, int]], +) -> 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: bytes, + 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/gestao_raul/Lib/site-packages/cryptography/hazmat/primitives/twofactor/totp.py b/gestao_raul/Lib/site-packages/cryptography/hazmat/primitives/twofactor/totp.py new file mode 100644 index 0000000..b9ed734 --- /dev/null +++ b/gestao_raul/Lib/site-packages/cryptography/hazmat/primitives/twofactor/totp.py @@ -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. + +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, +) + + +class TOTP: + def __init__( + self, + key: bytes, + 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/gestao_raul/Lib/site-packages/cryptography/py.typed b/gestao_raul/Lib/site-packages/cryptography/py.typed new file mode 100644 index 0000000..e69de29 diff --git a/gestao_raul/Lib/site-packages/cryptography/utils.py b/gestao_raul/Lib/site-packages/cryptography/utils.py new file mode 100644 index 0000000..706d0ae --- /dev/null +++ b/gestao_raul/Lib/site-packages/cryptography/utils.py @@ -0,0 +1,127 @@ +# 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 + + +# 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 +DeprecatedIn37 = CryptographyDeprecationWarning +DeprecatedIn40 = CryptographyDeprecationWarning +DeprecatedIn41 = CryptographyDeprecationWarning +DeprecatedIn42 = CryptographyDeprecationWarning +DeprecatedIn43 = CryptographyDeprecationWarning + + +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: bytes) -> 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, attr: str) -> object: + obj = getattr(self._module, attr) + 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) -> typing.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: typing.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/gestao_raul/Lib/site-packages/cryptography/x509/__init__.py b/gestao_raul/Lib/site-packages/cryptography/x509/__init__.py new file mode 100644 index 0000000..8a89d67 --- /dev/null +++ b/gestao_raul/Lib/site-packages/cryptography/x509/__init__.py @@ -0,0 +1,267 @@ +# 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, 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, + 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_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", + "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", + "random_serial_number", + "verification", + "verification", +] diff --git a/gestao_raul/Lib/site-packages/cryptography/x509/__pycache__/__init__.cpython-310.pyc b/gestao_raul/Lib/site-packages/cryptography/x509/__pycache__/__init__.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..594908c0b7f83209d64b22fad7e934b92976d065 GIT binary patch literal 6352 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 literal 0 HcmV?d00001 diff --git a/gestao_raul/Lib/site-packages/cryptography/x509/__pycache__/certificate_transparency.cpython-310.pyc b/gestao_raul/Lib/site-packages/cryptography/x509/__pycache__/certificate_transparency.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..772cf187d7f1bf768e27d5be7d32beadd67305af GIT binary patch literal 1225 zcmZ`&%}(1u5Vm7GaY85v^;D^n)n1wdPC-yqgb*}@3Wi~mhmkEa*Z1gcG!XPF$ zNQs-o;w55p3liIT{V*N16D_Cx=|o8U;}S)u;p8r*35x}#d5zLI^Fm z@go$bt#-G6uz%3n?YGIo`)+&I@WYS@XCeNawl)XHN=P;MDk7Z@_R=7WMWWT9+kMk+ z4Msv~mQu;GXmA*w3{c)wPcB!Fe#E? z>QAQ9fvR(`RT+e9*rsb1wufO_guuHn0Yp|_`2Y z6R*49^43?^UU@J2hdpn_Uu|3`>j|;xZH={_sLf`RGa#yj*$L@~LJ$2^j+#6TnqwVD zO*srO$8#kDWb^Wdzvi#t-Y)tou$DNv%MuC;M5p2Y2Yp_l6f#mus=J+|&Zl=r$30?o zd%MKi1L3q=@VR$3^NbU bcekz{H literal 0 HcmV?d00001 diff --git a/gestao_raul/Lib/site-packages/cryptography/x509/__pycache__/extensions.cpython-310.pyc b/gestao_raul/Lib/site-packages/cryptography/x509/__pycache__/extensions.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..d05f3c6220ee9bb4b1c4866aeb107fd75f490b55 GIT binary patch literal 74499 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 Vh#XP%A0?uRJ*llJJM~15`G0nlS6l!9 literal 0 HcmV?d00001 diff --git a/gestao_raul/Lib/site-packages/cryptography/x509/__pycache__/ocsp.cpython-310.pyc b/gestao_raul/Lib/site-packages/cryptography/x509/__pycache__/ocsp.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..2179a4885b84c2b59dc10e99ab813268623ac49a GIT binary patch literal 9354 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 W&B9cEJePYwNz}MDzMlKuRQ?Bs)cQXF literal 0 HcmV?d00001 diff --git a/gestao_raul/Lib/site-packages/cryptography/x509/__pycache__/oid.cpython-310.pyc b/gestao_raul/Lib/site-packages/cryptography/x509/__pycache__/oid.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..22761c9fc3a6080f5ddd15e947f29ee4efd26d6f GIT binary patch literal 697 zcmZvZ&5qMB5P+RFZTgdTi(nBF;sJ7?%LVZxgech_DpuR7RWDW~%T3(WOB`4J5gQ(d z8{&;}<-{v+!V@kn!iP_u$!NZbM~+4VLD#lX{h0{)KOT6Gh-CrS;Ll#>-yQunuAo_REu&im1xRlY09*Q&yQoK4BzvV z8n%)JPdRJykK*;syfmts-y2qH*BYuHHc`g1PpsN%nm2~MGiwA1ZXZdJTIxSik+pOZtUNd|M`(9RBi)E`G78<0|)>; zKp!v!z|K?%7y-r(x6z~?5VE)6Bt*gD@RL+kMVObh6oh<7>H+8hzqj$*WUHCd$rn}_nOw`%3iob0S+76N<0NO=P)QWEMRLP; uiROkqKhpHGTY*ka=e)Xq`Qpu$8*+NA>fSpcGh49to|9-8GxT4#!izugbHhgf literal 0 HcmV?d00001 diff --git a/gestao_raul/Lib/site-packages/cryptography/x509/__pycache__/verification.cpython-310.pyc b/gestao_raul/Lib/site-packages/cryptography/x509/__pycache__/verification.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..f62f8555069d1cfa7cccebe7066a524e079dcb2d GIT binary patch literal 632 zcmY+B%Z}496ozfLxiq~@%L*jKf?XGM*dPQ#2&OX&BveKd4GSwGauYX`juS`64iFxP z9pa6$WyLG7;&?hjgDrhN7u)Cfx1LTTg5&vzpT)xgA-|k+cVLXXA%vP5jhy6Ek&1Fk zoy`>E4A+4gR739F#D>bR0v=Q$4=E`~?tQ0xB)xsaBgyt-8OU(Q9uPjk*pyF^Gd@Ee z@gwA%&yfqh$XQI5{%_aGlJ;X!*V+nO>e_73AAWuI^u?0(!RaR6h)VXOcjs^O9HcSJ zpr5T(DQo*tLb)p?^wV>#%B(wSOO>NLizR%P@GtGfR)g$=xZUn$X8Xk9q{BZ_dV|4+dx$0I|;#(!`YFpMhCe12^)>v?w z@{u!B_YnT*zcVhhDr7A|sIvm literal 0 HcmV?d00001 diff --git a/gestao_raul/Lib/site-packages/cryptography/x509/base.py b/gestao_raul/Lib/site-packages/cryptography/x509/base.py new file mode 100644 index 0000000..25b317a --- /dev/null +++ b/gestao_raul/Lib/site-packages/cryptography/x509/base.py @@ -0,0 +1,815 @@ +# 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 os +import typing +import warnings + +from cryptography import utils +from cryptography.hazmat.bindings._rust import x509 as rust_x509 +from cryptography.hazmat.primitives import hashes +from cryptography.hazmat.primitives.asymmetric import ( + dsa, + ec, + ed448, + ed25519, + padding, + rsa, + x448, + x25519, +) +from cryptography.hazmat.primitives.asymmetric.types import ( + CertificateIssuerPrivateKeyTypes, + CertificatePublicKeyTypes, +) +from cryptography.x509.extensions import ( + Extension, + Extensions, + ExtensionType, + _make_sequence_methods, +) +from cryptography.x509.name import Name, _ASN1Type +from cryptography.x509.oid import ObjectIdentifier + +_EARLIEST_UTC_TIME = datetime.datetime(1950, 1, 1) + +# This must be kept in sync with sign.rs's list of allowable types in +# identify_hash_type +_AllowedHashTypes = typing.Union[ + hashes.SHA224, + hashes.SHA256, + hashes.SHA384, + hashes.SHA512, + hashes.SHA3_224, + hashes.SHA3_256, + hashes.SHA3_384, + hashes.SHA3_512, +] + + +class AttributeNotFound(Exception): + def __init__(self, msg: str, oid: ObjectIdentifier) -> 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: typing.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 + + +class RevokedCertificate(metaclass=abc.ABCMeta): + @property + @abc.abstractmethod + def serial_number(self) -> int: + """ + Returns the serial number of the revoked certificate. + """ + + @property + @abc.abstractmethod + def revocation_date(self) -> datetime.datetime: + """ + Returns the date of when this certificate was revoked. + """ + + @property + @abc.abstractmethod + def revocation_date_utc(self) -> datetime.datetime: + """ + Returns the date of when this certificate was revoked as a non-naive + UTC datetime. + """ + + @property + @abc.abstractmethod + def extensions(self) -> Extensions: + """ + Returns an Extensions object containing a list of Revoked extensions. + """ + + +# Runtime isinstance checks need this since the rust class is not a subclass. +RevokedCertificate.register(rust_x509.RevokedCertificate) + + +class _RawRevokedCertificate(RevokedCertificate): + def __init__( + self, + serial_number: int, + revocation_date: datetime.datetime, + extensions: Extensions, + ): + self._serial_number = serial_number + self._revocation_date = revocation_date + self._extensions = extensions + + @property + def serial_number(self) -> int: + return self._serial_number + + @property + def revocation_date(self) -> datetime.datetime: + warnings.warn( + "Properties that return a naïve datetime object have been " + "deprecated. Please switch to revocation_date_utc.", + utils.DeprecatedIn42, + stacklevel=2, + ) + return self._revocation_date + + @property + def revocation_date_utc(self) -> datetime.datetime: + return self._revocation_date.replace(tzinfo=datetime.timezone.utc) + + @property + def extensions(self) -> Extensions: + return self._extensions + + +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, + ) -> 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") + + return rust_x509.create_x509_csr( + self, private_key, algorithm, rsa_padding + ) + + +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]] = [], + ) -> 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 + + 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, + ) + + 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, + ) + + def public_key( + self, + key: CertificatePublicKeyTypes, + ) -> 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, + x25519.X25519PublicKey, + x448.X448PublicKey, + ), + ): + raise TypeError( + "Expecting one of DSAPublicKey, RSAPublicKey," + " EllipticCurvePublicKey, Ed25519PublicKey," + " Ed448PublicKey, X25519PublicKey, or " + "X448PublicKey." + ) + 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, + ) + + 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, + ) + + 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, + ) + + 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, + ) + + 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], + ) + + def sign( + self, + private_key: CertificateIssuerPrivateKeyTypes, + algorithm: _AllowedHashTypes | None, + backend: typing.Any = None, + *, + rsa_padding: padding.PSS | padding.PKCS1v15 | 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") + + return rust_x509.create_x509_certificate( + self, private_key, algorithm, rsa_padding + ) + + +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, + ) -> 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") + + return rust_x509.create_x509_crl( + self, private_key, algorithm, rsa_padding + ) + + +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 _RawRevokedCertificate( + self._serial_number, + self._revocation_date, + Extensions(self._extensions), + ) + + +def random_serial_number() -> int: + return int.from_bytes(os.urandom(20), "big") >> 1 diff --git a/gestao_raul/Lib/site-packages/cryptography/x509/certificate_transparency.py b/gestao_raul/Lib/site-packages/cryptography/x509/certificate_transparency.py new file mode 100644 index 0000000..fb66cc6 --- /dev/null +++ b/gestao_raul/Lib/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/gestao_raul/Lib/site-packages/cryptography/x509/extensions.py b/gestao_raul/Lib/site-packages/cryptography/x509/extensions.py new file mode 100644 index 0000000..fc3e773 --- /dev/null +++ b/gestao_raul/Lib/site-packages/cryptography/x509/extensions.py @@ -0,0 +1,2477 @@ +# 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 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: typing.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: typing.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: typing.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: typing.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: typing.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: typing.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: typing.Iterable[GeneralName] | None, + relative_name: RelativeDistinguishedName | None, + reasons: frozenset[ReasonFlags] | None, + crl_issuer: typing.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: typing.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: typing.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: typing.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: typing.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: typing.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 NameConstraints(ExtensionType): + oid = ExtensionOID.NAME_CONSTRAINTS + + def __init__( + self, + permitted_subtrees: typing.Iterable[GeneralName] | None, + excluded_subtrees: typing.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: typing.Iterable[GeneralName]) -> None: + self._validate_ip_name(tree) + self._validate_dns_name(tree) + + def _validate_ip_name(self, tree: typing.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: typing.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: typing.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] + return list(objs) + + 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: typing.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: typing.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: typing.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: typing.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: typing.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: typing.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) -> typing.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: typing.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: + return hash( + ( + self.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: typing.Iterable[str], + profession_oids: typing.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: typing.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: typing.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/gestao_raul/Lib/site-packages/cryptography/x509/general_name.py b/gestao_raul/Lib/site-packages/cryptography/x509/general_name.py new file mode 100644 index 0000000..672f287 --- /dev/null +++ b/gestao_raul/Lib/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/gestao_raul/Lib/site-packages/cryptography/x509/name.py b/gestao_raul/Lib/site-packages/cryptography/x509/name.py new file mode 100644 index 0000000..1b6b89d --- /dev/null +++ b/gestao_raul/Lib/site-packages/cryptography/x509/name.py @@ -0,0 +1,465 @@ +# 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 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] in ("#", " "): + 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(1) + # Regular escape + if len(val) == 1: + return val + # Hex-value scape + return chr(int(val, 16)) + + return _RFC4514NameParser._PAIR_RE.sub(sub, val) + + +class NameAttribute: + def __init__( + self, + oid: ObjectIdentifier, + value: str | bytes, + _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") + else: + if 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 = value + self._type = _type + + @property + def oid(self) -> ObjectIdentifier: + return self._oid + + @property + def value(self) -> str | bytes: + 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: typing.Iterable[NameAttribute]): + 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]: + 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) -> typing.Iterator[NameAttribute]: + 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: typing.Iterable[NameAttribute]) -> None: ... + + @typing.overload + def __init__( + self, attributes: typing.Iterable[RelativeDistinguishedName] + ) -> None: ... + + def __init__( + self, + attributes: typing.Iterable[NameAttribute | 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( + typing.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() + + 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]: + 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) -> typing.Iterator[NameAttribute]: + 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: + rdns = ",".join(attr.rfc4514_string() for attr in self._attributes) + 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-]*") + + _PAIR = r"\\([\\ #=\"\+,;<>]|[\da-zA-Z]{2})" + _PAIR_RE = re.compile(_PAIR) + _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: + 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/gestao_raul/Lib/site-packages/cryptography/x509/ocsp.py b/gestao_raul/Lib/site-packages/cryptography/x509/ocsp.py new file mode 100644 index 0000000..5a011c4 --- /dev/null +++ b/gestao_raul/Lib/site-packages/cryptography/x509/ocsp.py @@ -0,0 +1,344 @@ +# 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 +import typing + +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 ( + _EARLIEST_UTC_TIME, + _convert_to_naive_utc_time, + _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, + 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, + ): + if not isinstance(cert, x509.Certificate) or not isinstance( + issuer, x509.Certificate + ): + raise TypeError("cert and issuer must be a Certificate") + + _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._cert = cert + self._issuer = issuer + 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") + + revocation_time = _convert_to_naive_utc_time(revocation_time) + if revocation_time < _EARLIEST_UTC_TIME: + raise ValueError( + "The revocation_time must be on or after" + " 1950 January 1." + ) + + 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.") + + singleresp = _SingleResponse( + cert, + issuer, + 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: typing.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/gestao_raul/Lib/site-packages/cryptography/x509/oid.py b/gestao_raul/Lib/site-packages/cryptography/x509/oid.py new file mode 100644 index 0000000..d4e409e --- /dev/null +++ b/gestao_raul/Lib/site-packages/cryptography/x509/oid.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.hazmat._oid import ( + AttributeOID, + AuthorityInformationAccessOID, + CertificatePoliciesOID, + CRLEntryExtensionOID, + ExtendedKeyUsageOID, + ExtensionOID, + NameOID, + ObjectIdentifier, + OCSPExtensionOID, + PublicKeyAlgorithmOID, + SignatureAlgorithmOID, + SubjectInformationAccessOID, +) + +__all__ = [ + "AttributeOID", + "AuthorityInformationAccessOID", + "CRLEntryExtensionOID", + "CertificatePoliciesOID", + "ExtendedKeyUsageOID", + "ExtensionOID", + "NameOID", + "OCSPExtensionOID", + "ObjectIdentifier", + "PublicKeyAlgorithmOID", + "SignatureAlgorithmOID", + "SubjectInformationAccessOID", +] diff --git a/gestao_raul/Lib/site-packages/cryptography/x509/verification.py b/gestao_raul/Lib/site-packages/cryptography/x509/verification.py new file mode 100644 index 0000000..b836506 --- /dev/null +++ b/gestao_raul/Lib/site-packages/cryptography/x509/verification.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 + +import typing + +from cryptography.hazmat.bindings._rust import x509 as rust_x509 +from cryptography.x509.general_name import DNSName, IPAddress + +__all__ = [ + "ClientVerifier", + "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 +VerificationError = rust_x509.VerificationError diff --git a/gestao_raul/Lib/site-packages/django_extensions-3.2.3.dist-info/INSTALLER b/gestao_raul/Lib/site-packages/django_extensions-3.2.3.dist-info/INSTALLER new file mode 100644 index 0000000..a1b589e --- /dev/null +++ b/gestao_raul/Lib/site-packages/django_extensions-3.2.3.dist-info/INSTALLER @@ -0,0 +1 @@ +pip diff --git a/gestao_raul/Lib/site-packages/django_extensions-3.2.3.dist-info/LICENSE b/gestao_raul/Lib/site-packages/django_extensions-3.2.3.dist-info/LICENSE new file mode 100644 index 0000000..279c6da --- /dev/null +++ b/gestao_raul/Lib/site-packages/django_extensions-3.2.3.dist-info/LICENSE @@ -0,0 +1,19 @@ +Copyright (c) 2007 Michael Trier + +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/gestao_raul/Lib/site-packages/django_extensions-3.2.3.dist-info/METADATA b/gestao_raul/Lib/site-packages/django_extensions-3.2.3.dist-info/METADATA new file mode 100644 index 0000000..6855c2c --- /dev/null +++ b/gestao_raul/Lib/site-packages/django_extensions-3.2.3.dist-info/METADATA @@ -0,0 +1,180 @@ +Metadata-Version: 2.1 +Name: django-extensions +Version: 3.2.3 +Summary: Extensions for Django +Home-page: https://github.com/django-extensions/django-extensions +Author: Michael Trier +Author-email: mtrier@gmail.com +Maintainer: Bas van Oostveen +Maintainer-email: v.oostveen@gmail.com +License: MIT License +Project-URL: Documentation, https://django-extensions.readthedocs.io/ +Project-URL: Changelog, https://github.com/django-extensions/django-extensions/blob/main/CHANGELOG.md +Project-URL: Source, https://github.com/django-extensions/django-extensions +Project-URL: Tracker, https://github.com/django-extensions/django-extensions/issues +Platform: any +Classifier: Development Status :: 5 - Production/Stable +Classifier: Environment :: Web Environment +Classifier: Framework :: Django +Classifier: Framework :: Django :: 3.2 +Classifier: Framework :: Django :: 4.0 +Classifier: Framework :: Django :: 4.1 +Classifier: Framework :: Django :: 4.2 +Classifier: Intended Audience :: Developers +Classifier: License :: OSI Approved :: MIT License +Classifier: Operating System :: OS Independent +Classifier: Programming Language :: Python +Classifier: Programming Language :: Python :: 3 +Classifier: Programming Language :: Python :: 3 :: Only +Classifier: Programming Language :: Python :: 3.6 +Classifier: Programming Language :: Python :: 3.7 +Classifier: Programming Language :: Python :: 3.8 +Classifier: Programming Language :: Python :: 3.9 +Classifier: Programming Language :: Python :: 3.10 +Classifier: Programming Language :: Python :: 3.11 +Classifier: Programming Language :: Python :: Implementation :: CPython +Classifier: Programming Language :: Python :: Implementation :: PyPy +Classifier: Topic :: Utilities +Requires-Python: >=3.6 +License-File: LICENSE +Requires-Dist: Django (>=3.2) + +=================== + Django Extensions +=================== + +.. image:: https://img.shields.io/pypi/l/django-extensions.svg + :target: https://raw.githubusercontent.com/django-extensions/django-extensions/master/LICENSE + +.. image:: https://github.com/django-extensions/django-extensions/actions/workflows/compile_catalog.yml/badge.svg + :target: https://github.com/django-extensions/django-extensions/actions + +.. image:: https://github.com/django-extensions/django-extensions/actions/workflows/linters.yml/badge.svg + :target: https://github.com/django-extensions/django-extensions/actions + +.. image:: https://github.com/django-extensions/django-extensions/actions/workflows/precommit.yml/badge.svg + :target: https://github.com/django-extensions/django-extensions/actions + +.. image:: https://github.com/django-extensions/django-extensions/actions/workflows/pytest.yml/badge.svg + :target: https://github.com/django-extensions/django-extensions/actions + +.. image:: https://github.com/django-extensions/django-extensions/actions/workflows/security.yml/badge.svg + :target: https://github.com/django-extensions/django-extensions/actions + +.. image:: https://img.shields.io/pypi/v/django-extensions.svg + :target: https://pypi.python.org/pypi/django-extensions/ + :alt: Latest PyPI version + +.. image:: https://img.shields.io/pypi/wheel/django-extensions.svg + :target: https://pypi.python.org/pypi/django-extensions/ + :alt: Supports Wheel format + +.. image:: https://coveralls.io/repos/django-extensions/django-extensions/badge.svg?branch=master + :target: https://coveralls.io/r/django-extensions/django-extensions?branch=master + :alt: Coverage + +Django Extensions is a collection of custom extensions for the Django Framework. + + +Getting Started +=============== + +The easiest way to figure out what Django Extensions are all about is to watch the +`excellent screencast by Eric Holscher`__ (`watch the video on vimeo`__). In a couple +minutes Eric walks you through a half a dozen command extensions. There is also a +`short screencast on GoDjango's Youtube Channel`__ to help show you even more. + + +Requirements +============ + +Django Extensions requires Django 3.2 or later. + + +Getting It +========== + +You can get Django Extensions by using pip:: + + $ pip install django-extensions + +If you want to install it from source, grab the git repository from GitHub and run setup.py:: + + $ git clone git://github.com/django-extensions/django-extensions.git + $ cd django-extensions + $ python setup.py install + + +Installing It +============= + +To enable `django_extensions` in your project you need to add it to `INSTALLED_APPS` in your projects +`settings.py` file: + +.. code-block:: python + + INSTALLED_APPS = ( + ... + 'django_extensions', + ... + ) + + +Using It +======== + +Generate (and view) a graphviz graph of app models:: + + $ python manage.py graph_models -a -o myapp_models.png + +Produce a tab-separated list of `(url_pattern, view_function, name)` tuples for a project:: + + $ python manage.py show_urls + +Check templates for rendering errors:: + + $ python manage.py validate_templates + +Run the enhanced django shell:: + + $ python manage.py shell_plus + +Run the enhanced django runserver, (requires Werkzeug install):: + + $ python manage.py runserver_plus + + +Getting Involved +================ + +Open Source projects can always use more help. Fixing a problem, documenting a feature, adding +translation in your language. If you have some time to spare and like to help us, here are the places to do so: + +- GitHub: https://github.com/django-extensions/django-extensions +- Mailing list: https://groups.google.com/group/django-extensions +- Translations: https://www.transifex.com/projects/p/django-extensions/ + + +Documentation +============= + +You can view documentation online at: + +- https://django-extensions.readthedocs.io + +Or you can look at the docs/ directory in the repository. + + +Support +======= + +Django Extensions is free and always will be. It is developed and maintained by developers in an Open Source manner. +Any support is welcome. You could help by writing documentation, pull-requests, report issues and/or translations. + +Please remember that nobody is paid directly to develop or maintain Django Extensions so we do have to divide our time +between putting food on the table, family, this project and the rest of life :-) + + +__ https://ericholscher.com/blog/2008/sep/12/screencast-django-command-extensions/ +__ https://vimeo.com/1720508 +__ https://www.youtube.com/watch?v=1F6G3ONhr4k diff --git a/gestao_raul/Lib/site-packages/django_extensions-3.2.3.dist-info/RECORD b/gestao_raul/Lib/site-packages/django_extensions-3.2.3.dist-info/RECORD new file mode 100644 index 0000000..b44d914 --- /dev/null +++ b/gestao_raul/Lib/site-packages/django_extensions-3.2.3.dist-info/RECORD @@ -0,0 +1,274 @@ +django_extensions-3.2.3.dist-info/INSTALLER,sha256=zuuue4knoyJ-UwPPXg8fezS7VCrXJQrAP7zeNuwvFQg,4 +django_extensions-3.2.3.dist-info/LICENSE,sha256=hfh-J08r7s6vlJVWdNgyPZ_B69b8NdSvzdOLVEygyyA,1057 +django_extensions-3.2.3.dist-info/METADATA,sha256=qcH0cszImAq4lLdQXvsNSNyMWgcIEe7C3zMp2gc71Ks,6302 +django_extensions-3.2.3.dist-info/RECORD,, +django_extensions-3.2.3.dist-info/REQUESTED,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +django_extensions-3.2.3.dist-info/WHEEL,sha256=pkctZYzUS4AYVn6dJ-7367OJZivF2e8RA9b_ZBjif18,92 +django_extensions-3.2.3.dist-info/top_level.txt,sha256=a-Shg8eC0Rl6_AoTRvqIUhzOFzQeCFU1Z7ee7myIYMg,18 +django_extensions/__init__.py,sha256=h2pysBMJifsjaK_ctV6WwqFjMRmjCwmP75jSYrbx_sU,545 +django_extensions/__pycache__/__init__.cpython-310.pyc,, +django_extensions/__pycache__/apps.cpython-310.pyc,, +django_extensions/__pycache__/collision_resolvers.cpython-310.pyc,, +django_extensions/__pycache__/compat.cpython-310.pyc,, +django_extensions/__pycache__/import_subclasses.cpython-310.pyc,, +django_extensions/__pycache__/models.cpython-310.pyc,, +django_extensions/__pycache__/settings.cpython-310.pyc,, +django_extensions/__pycache__/validators.cpython-310.pyc,, +django_extensions/admin/__init__.py,sha256=-gJP3Ttnx-bAFgZLo7zguKH2FlSFNfL99hrpj4eysxc,6853 +django_extensions/admin/__pycache__/__init__.cpython-310.pyc,, +django_extensions/admin/__pycache__/filter.cpython-310.pyc,, +django_extensions/admin/__pycache__/widgets.cpython-310.pyc,, +django_extensions/admin/filter.py,sha256=1MFZ71zlx1fp5QdKxOe3GpTu2yMKWeHOPxObLAk1JjU,1819 +django_extensions/admin/widgets.py,sha256=7Auq1-VIsdbLW20tpVjEB2cAfL6YqDteHEwXr0gYcKE,3191 +django_extensions/apps.py,sha256=oJlK-RUVkhL9ZKtjS3vKsEJJc17UmYbQMEdS8Ocbf3s,171 +django_extensions/auth/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +django_extensions/auth/__pycache__/__init__.cpython-310.pyc,, +django_extensions/auth/__pycache__/mixins.cpython-310.pyc,, +django_extensions/auth/mixins.py,sha256=t55Wjt2B0tSaW10liVHj8NSJb6yyKbmcGCJv8sQP89o,488 +django_extensions/collision_resolvers.py,sha256=roO-zKNAt6PEcN6FZVl4scP6ujM73ppZw48dLMLUJrQ,10644 +django_extensions/compat.py,sha256=xQT_I6tUhWYRvupMj10gxo9fvkwE47iZ0L_Ee0MKQXs,1930 +django_extensions/conf/app_template/__init__.py.tmpl,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +django_extensions/conf/app_template/forms.py.tmpl,sha256=_K9nXjI1BEn-aPQYmNM9mcBwp21EnzAvtHF6lXeLQmY,55 +django_extensions/conf/app_template/migrations/__init__.py.tmpl,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +django_extensions/conf/app_template/models.py.tmpl,sha256=Vjc0p2XbAPgE6HyTF6vll98A4eDhA5AvaQqsc4kQ9AQ,57 +django_extensions/conf/app_template/urls.py.tmpl,sha256=nzK9G5Qi-8ECvgQ-5A5UhVYB9nmKTuWxKkrqWYgSzS4,69 +django_extensions/conf/app_template/views.py.tmpl,sha256=F42JXgnqFqK0fajXeutyJJxwOszRxoLMNkIhfc4Z7KI,26 +django_extensions/conf/command_template/management/__init__.py.tmpl,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +django_extensions/conf/command_template/management/commands/__init__.py.tmpl,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +django_extensions/conf/command_template/management/commands/sample.py.tmpl,sha256=VWqndBmkpZ5jw_3DrisYjXD76Si5lVSVcZlkifG57gs,306 +django_extensions/conf/jobs_template/jobs/__init__.py.tmpl,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +django_extensions/conf/jobs_template/jobs/daily/__init__.py.tmpl,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +django_extensions/conf/jobs_template/jobs/hourly/__init__.py.tmpl,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +django_extensions/conf/jobs_template/jobs/monthly/__init__.py.tmpl,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +django_extensions/conf/jobs_template/jobs/sample.py.tmpl,sha256=r2cd8E0jNTKIJYQmPULuxjZFxzg1yrv72IHsipWkWtY,178 +django_extensions/conf/jobs_template/jobs/weekly/__init__.py.tmpl,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +django_extensions/conf/jobs_template/jobs/yearly/__init__.py.tmpl,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +django_extensions/conf/template_tags_template/templatetags/__init__.py.tmpl,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +django_extensions/conf/template_tags_template/templatetags/sample.py.tmpl,sha256=IOMcdXaX3IBAawoGoteRYqF5Y2ggxsLweR5XZqxfpMk,59 +django_extensions/db/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +django_extensions/db/__pycache__/__init__.cpython-310.pyc,, +django_extensions/db/__pycache__/models.cpython-310.pyc,, +django_extensions/db/fields/__init__.py,sha256=830rLfi7kGNwSAvOvXj5hdDuoIo4FgzmLYOqu99LlbE,20792 +django_extensions/db/fields/__pycache__/__init__.cpython-310.pyc,, +django_extensions/db/fields/__pycache__/json.cpython-310.pyc,, +django_extensions/db/fields/json.py,sha256=WfaRzlIwxCHgppPMAI1QOlq2WfDr5rsUMlFkpy6peTY,2862 +django_extensions/db/models.py,sha256=i2Aa72Driz1LSf1ed4kFZqKK18ZZd8pkCAurUPQw6bg,3811 +django_extensions/import_subclasses.py,sha256=kbsBJZr3G8UNbA1YoRuwhfduQapMRjO1FsAvXQ5OnRU,2296 +django_extensions/jobs/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +django_extensions/jobs/__pycache__/__init__.cpython-310.pyc,, +django_extensions/jobs/daily/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +django_extensions/jobs/daily/__pycache__/__init__.cpython-310.pyc,, +django_extensions/jobs/daily/__pycache__/cache_cleanup.cpython-310.pyc,, +django_extensions/jobs/daily/__pycache__/daily_cleanup.cpython-310.pyc,, +django_extensions/jobs/daily/cache_cleanup.py,sha256=KcT78D0Y3a4orSlG0eTfh1HqebRn48iYXCxUkyuiww0,646 +django_extensions/jobs/daily/daily_cleanup.py,sha256=r_NSWoDPWlR2GvubWt4GZIgjx24GBeNOfOlIRpRu1wI,388 +django_extensions/jobs/hourly/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +django_extensions/jobs/hourly/__pycache__/__init__.cpython-310.pyc,, +django_extensions/jobs/minutely/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +django_extensions/jobs/minutely/__pycache__/__init__.cpython-310.pyc,, +django_extensions/jobs/monthly/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +django_extensions/jobs/monthly/__pycache__/__init__.cpython-310.pyc,, +django_extensions/jobs/weekly/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +django_extensions/jobs/weekly/__pycache__/__init__.cpython-310.pyc,, +django_extensions/jobs/yearly/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +django_extensions/jobs/yearly/__pycache__/__init__.cpython-310.pyc,, +django_extensions/locale/ar/LC_MESSAGES/django.po,sha256=j23ombvXVqaqcz5Zr3XRs9NuEkbBI1FiZlsmdeiaPWU,3126 +django_extensions/locale/da/LC_MESSAGES/django.mo,sha256=R7WNKaXc0q4iM1cUsgzdbdRZ08r7m14EmM1znFTo1FI,797 +django_extensions/locale/da/LC_MESSAGES/django.po,sha256=Zl33Wn5Sz6JsDUcbR_2aMtFCTqmDYz1XpXXsrY2GBl0,1667 +django_extensions/locale/de/LC_MESSAGES/django.mo,sha256=kuhHiXWrfazxsvFzvENWfY5sN3XpLvy1-AKQ0jKOnAs,1227 +django_extensions/locale/de/LC_MESSAGES/django.po,sha256=OLFLDJbZLPk3oK5DUcJ-V7eeBKZcHjlu_Vl0WTHW9F4,1755 +django_extensions/locale/el/LC_MESSAGES/django.mo,sha256=0CafRFBnuy4QdqtoaipoKpONaVMvtfP1J_4eMBB2gAg,1581 +django_extensions/locale/el/LC_MESSAGES/django.po,sha256=UC2b1GCXVnUteg1ZFqooRp6wkcxBufQGWCSZW8Hxndw,2116 +django_extensions/locale/en/LC_MESSAGES/django.mo,sha256=9JJOWscsqQUH_P7IWH5P5MEJPDJjDGzGl-Zz5-xGDFo,367 +django_extensions/locale/en/LC_MESSAGES/django.po,sha256=l27VRI3peRt_aKdlaQ7zVXj03wR2PfIex2X3SWrrSBc,2229 +django_extensions/locale/es/LC_MESSAGES/django.mo,sha256=SH8ojro4wqhcR8yKM2vn9JVxTMbke7zwUjsc_W60jfA,1260 +django_extensions/locale/es/LC_MESSAGES/django.po,sha256=euh9NBu3f-f-CuNgPGaJDebN0TbalfKKJ_X5q55VqA8,1788 +django_extensions/locale/fr/LC_MESSAGES/django.mo,sha256=XIMBOSYt8pHAhP3pUBs1N-iKLn3e0LRgTNYe_ippr58,743 +django_extensions/locale/fr/LC_MESSAGES/django.po,sha256=xKyEMPuZ_jFx7_7kY0plfHZV_gB8gUr2nvKdU_X3CLY,1931 +django_extensions/locale/hu/LC_MESSAGES/django.mo,sha256=7rWzOkIurHDcvi4uCgh4hkQjUpV182FSyjKZz6mIBFU,1242 +django_extensions/locale/hu/LC_MESSAGES/django.po,sha256=SOHXX186PGybAII05VA5QRZvSjtXR9fLJpgS2acxwt8,1770 +django_extensions/locale/id/LC_MESSAGES/django.mo,sha256=X3tKDCM5qiuVi5dYOnzxAxx6mQ3w-wTJBvP7_ENnHhg,1508 +django_extensions/locale/id/LC_MESSAGES/django.po,sha256=a4dguUsySnXLdDDafyXcq2lXFmYN-DS6uoEOQQJGEV4,2243 +django_extensions/locale/it/LC_MESSAGES/django.mo,sha256=y3dS8jT30b2P9il5kxQaCj_JgaLLCCkR_vLEllX8L0g,1247 +django_extensions/locale/it/LC_MESSAGES/django.po,sha256=AENMGV_gkuUqp2gVWnENI5hlCtJipNykZkAWcvlRia0,1775 +django_extensions/locale/ja/LC_MESSAGES/django.mo,sha256=5fTQjN83bExfQbkaAMq3zve2B3fEWkf6rF-QYGZf9fA,1397 +django_extensions/locale/ja/LC_MESSAGES/django.po,sha256=CGrMk9hH64qBE_6NF-qPMwHpdfW57FwY3PlF0g0_g0M,1925 +django_extensions/locale/pl/LC_MESSAGES/django.mo,sha256=G3yZYzIwUHJ0PK14VhRXxJaYSXRkBQWa4yfFwJyhSBs,2002 +django_extensions/locale/pl/LC_MESSAGES/django.po,sha256=hVRdMxQmgRhtruCm66bZQVY-OIfSSYVBSJViuZNHB_4,2788 +django_extensions/locale/pt/LC_MESSAGES/django.mo,sha256=F_q92e6dFwPbjvYWHNBvCjgd5mIj3_ezrHvCOFeUZCw,1262 +django_extensions/locale/pt/LC_MESSAGES/django.po,sha256=oKucDPxqIFZAOeVa_mbvOsmXXwyTydd82_Z_pXpkfvI,1790 +django_extensions/locale/pt_BR/LC_MESSAGES/django.mo,sha256=bN2RG97zI3S6qEuMmvbDvPCo4YSZ_KEY5UxviD9WzlA,1310 +django_extensions/locale/pt_BR/LC_MESSAGES/django.po,sha256=VDIRUodyxJr4PDcgiOuR6o3k1Ss_4ge5rx0DZgk5QwY,2082 +django_extensions/locale/ro/LC_MESSAGES/django.mo,sha256=8-8B-I7iFCGZKBj1XKMbMqQLl6Yg2W1IEG39miSI8Hk,1352 +django_extensions/locale/ro/LC_MESSAGES/django.po,sha256=CWaWS2C08-8lNWMCtPSPvDj4xONYrD3UGx4QSWXuWgg,1891 +django_extensions/locale/ru/LC_MESSAGES/django.mo,sha256=C_kjCXvZuZ2ZdiU8ffcjKwcnA-d5IiUTgpglX7JdD-U,2009 +django_extensions/locale/ru/LC_MESSAGES/django.po,sha256=luenXP4hypDODQUVWowDSCkYW9VMF_9NBlTUVkAmB3o,3820 +django_extensions/logging/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +django_extensions/logging/__pycache__/__init__.cpython-310.pyc,, +django_extensions/logging/__pycache__/filters.cpython-310.pyc,, +django_extensions/logging/filters.py,sha256=02Yp6Xmcp5ORr-JweyG6xHBZZsOKD0DnqbgXHVewGSI,1126 +django_extensions/management/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +django_extensions/management/__pycache__/__init__.cpython-310.pyc,, +django_extensions/management/__pycache__/base.cpython-310.pyc,, +django_extensions/management/__pycache__/color.cpython-310.pyc,, +django_extensions/management/__pycache__/debug_cursor.cpython-310.pyc,, +django_extensions/management/__pycache__/email_notifications.cpython-310.pyc,, +django_extensions/management/__pycache__/jobs.cpython-310.pyc,, +django_extensions/management/__pycache__/modelviz.cpython-310.pyc,, +django_extensions/management/__pycache__/mysql.cpython-310.pyc,, +django_extensions/management/__pycache__/notebook_extension.cpython-310.pyc,, +django_extensions/management/__pycache__/shells.cpython-310.pyc,, +django_extensions/management/__pycache__/signals.cpython-310.pyc,, +django_extensions/management/__pycache__/technical_response.cpython-310.pyc,, +django_extensions/management/__pycache__/utils.cpython-310.pyc,, +django_extensions/management/base.py,sha256=onLx3r71rBL0Io91s05V9yvXg4BGxvd9o3sYaMn4CIA,1431 +django_extensions/management/color.py,sha256=rQcRJBfXdsV4LlM15dONb_n_rzRL2qXH1c1-WljiNcM,907 +django_extensions/management/commands/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +django_extensions/management/commands/__pycache__/__init__.cpython-310.pyc,, +django_extensions/management/commands/__pycache__/admin_generator.cpython-310.pyc,, +django_extensions/management/commands/__pycache__/clean_pyc.cpython-310.pyc,, +django_extensions/management/commands/__pycache__/clear_cache.cpython-310.pyc,, +django_extensions/management/commands/__pycache__/compile_pyc.cpython-310.pyc,, +django_extensions/management/commands/__pycache__/create_command.cpython-310.pyc,, +django_extensions/management/commands/__pycache__/create_jobs.cpython-310.pyc,, +django_extensions/management/commands/__pycache__/create_template_tags.cpython-310.pyc,, +django_extensions/management/commands/__pycache__/delete_squashed_migrations.cpython-310.pyc,, +django_extensions/management/commands/__pycache__/describe_form.cpython-310.pyc,, +django_extensions/management/commands/__pycache__/drop_test_database.cpython-310.pyc,, +django_extensions/management/commands/__pycache__/dumpscript.cpython-310.pyc,, +django_extensions/management/commands/__pycache__/export_emails.cpython-310.pyc,, +django_extensions/management/commands/__pycache__/find_template.cpython-310.pyc,, +django_extensions/management/commands/__pycache__/generate_password.cpython-310.pyc,, +django_extensions/management/commands/__pycache__/generate_secret_key.cpython-310.pyc,, +django_extensions/management/commands/__pycache__/graph_models.cpython-310.pyc,, +django_extensions/management/commands/__pycache__/list_model_info.cpython-310.pyc,, +django_extensions/management/commands/__pycache__/list_signals.cpython-310.pyc,, +django_extensions/management/commands/__pycache__/mail_debug.cpython-310.pyc,, +django_extensions/management/commands/__pycache__/managestate.cpython-310.pyc,, +django_extensions/management/commands/__pycache__/merge_model_instances.cpython-310.pyc,, +django_extensions/management/commands/__pycache__/notes.cpython-310.pyc,, +django_extensions/management/commands/__pycache__/pipchecker.cpython-310.pyc,, +django_extensions/management/commands/__pycache__/print_settings.cpython-310.pyc,, +django_extensions/management/commands/__pycache__/print_user_for_session.cpython-310.pyc,, +django_extensions/management/commands/__pycache__/raise_test_exception.cpython-310.pyc,, +django_extensions/management/commands/__pycache__/reset_db.cpython-310.pyc,, +django_extensions/management/commands/__pycache__/reset_schema.cpython-310.pyc,, +django_extensions/management/commands/__pycache__/runjob.cpython-310.pyc,, +django_extensions/management/commands/__pycache__/runjobs.cpython-310.pyc,, +django_extensions/management/commands/__pycache__/runprofileserver.cpython-310.pyc,, +django_extensions/management/commands/__pycache__/runscript.cpython-310.pyc,, +django_extensions/management/commands/__pycache__/runserver_plus.cpython-310.pyc,, +django_extensions/management/commands/__pycache__/set_default_site.cpython-310.pyc,, +django_extensions/management/commands/__pycache__/set_fake_emails.cpython-310.pyc,, +django_extensions/management/commands/__pycache__/set_fake_passwords.cpython-310.pyc,, +django_extensions/management/commands/__pycache__/shell_plus.cpython-310.pyc,, +django_extensions/management/commands/__pycache__/show_template_tags.cpython-310.pyc,, +django_extensions/management/commands/__pycache__/show_urls.cpython-310.pyc,, +django_extensions/management/commands/__pycache__/sqlcreate.cpython-310.pyc,, +django_extensions/management/commands/__pycache__/sqldiff.cpython-310.pyc,, +django_extensions/management/commands/__pycache__/sqldsn.cpython-310.pyc,, +django_extensions/management/commands/__pycache__/sync_s3.cpython-310.pyc,, +django_extensions/management/commands/__pycache__/syncdata.cpython-310.pyc,, +django_extensions/management/commands/__pycache__/unreferenced_files.cpython-310.pyc,, +django_extensions/management/commands/__pycache__/update_permissions.cpython-310.pyc,, +django_extensions/management/commands/__pycache__/validate_templates.cpython-310.pyc,, +django_extensions/management/commands/admin_generator.py,sha256=TAGUX36o-wxVmfXOzDhSuSqJcByjkNNR7BudhbKUQlk,11791 +django_extensions/management/commands/clean_pyc.py,sha256=a3hrSSc5RYj8RbgShFoTf5m-dY_Eisnen9U7LjpnJxE,1555 +django_extensions/management/commands/clear_cache.py,sha256=WZWuiYJUWpYfKehcZBSkxnvTWtl66mEl3d1vKyEj5e0,1487 +django_extensions/management/commands/compile_pyc.py,sha256=x0mKMiC3Emk4o_aKYIWfEj4vWbfDLHkbgcVdjbJdNec,1273 +django_extensions/management/commands/create_command.py,sha256=nlrTGhAnZqPEb3N6TFOsjrWF1ik1k7uTU4c_9oKZhqc,3780 +django_extensions/management/commands/create_jobs.py,sha256=J7JCV5_I8dLcP5jW2d-eELzjJ7H48S67sgyTnQ6kTuA,2457 +django_extensions/management/commands/create_template_tags.py,sha256=HX_9qVimko4dOXjMzzMho_Xz5y-OAGcDQaz93YVkhVs,2855 +django_extensions/management/commands/delete_squashed_migrations.py,sha256=_Ktv14Yw-w0YvmitUR-1TqZEJjP3uMEt-rDf8pVvV0A,7241 +django_extensions/management/commands/describe_form.py,sha256=LSgGaFjL2mGs5aWoqQefaPXAvhmHoFGTLK5OX9kmpss,2737 +django_extensions/management/commands/drop_test_database.py,sha256=g7sWBeBgN8B9SPx0-j6frQ19tYoL8BQteeyS_JCo7j0,8731 +django_extensions/management/commands/dumpscript.py,sha256=6smMWI6L7CwVRCaHRzrxhmUNoV1PEoCDi_IxmYrgTHA,27672 +django_extensions/management/commands/export_emails.py,sha256=AzR__ZLuVMBR0ZHtLIKI9FCwrjU9QBa5sJA3az-0uSk,5565 +django_extensions/management/commands/find_template.py,sha256=k9Nj_Ll_LdL8dWz-n3eZV7XeYO8h-hRxCIb6ZkiQu-4,695 +django_extensions/management/commands/generate_password.py,sha256=mJPAmb1xWg9QymmJPvZBz_niTjrqNlvpyIc0wqY7qC8,971 +django_extensions/management/commands/generate_secret_key.py,sha256=bisQO7XRV1sOe1GqQ0-mTQZgXviWQrdiLxJJ7qWSYq8,484 +django_extensions/management/commands/graph_models.py,sha256=2qX6Ut6y0OrK2AmaCIlB71MI1a4zhl7b8_FsGegEY7U,14685 +django_extensions/management/commands/list_model_info.py,sha256=ICJ46ld7fALKX8BQeqa00g8cYsGbsEzA-lJqwsvCXWI,6035 +django_extensions/management/commands/list_signals.py,sha256=LIWtwMeJz8Pg1-JPSv9NNi4tsQc0xLr64bWlt7TazwE,2602 +django_extensions/management/commands/mail_debug.py,sha256=2eaT9E39RQOQLJG72z96cGjF9dj5uJDw6NLfCM2yI8k,2977 +django_extensions/management/commands/managestate.py,sha256=083KeUgyd7wQlqBypWW8jcUPiiLVdqxPUfUz5HHyC7Y,6747 +django_extensions/management/commands/merge_model_instances.py,sha256=DeoGYz6OnVgprhx3O1gfB9egZ6HYqKk0jJSnFst616w,9552 +django_extensions/management/commands/notes.py,sha256=3sEUcMYk2sNFlbVomXHBJajoQdpRFKlm2IC6AInXhx0,2716 +django_extensions/management/commands/pipchecker.py,sha256=wDcw18ZXc7rMARy_N_uQjmqddr-I4RBBlatPQhOuAMI,15381 +django_extensions/management/commands/print_settings.py,sha256=pEiCq41QZuoVg4_XtmXabrQquTBJX0TRGeLm1V8N3SM,2640 +django_extensions/management/commands/print_user_for_session.py,sha256=r1Ot7yBsxOwYv8trFuKQVwBXTIUl3m-wyc-Hx_HZ1lA,2144 +django_extensions/management/commands/raise_test_exception.py,sha256=71c2pIi__scpzvKrFGsfaS4TTYeuxulI4I4vlJaldQo,659 +django_extensions/management/commands/reset_db.py,sha256=ROg7bTqU6EdXjlEfT_6YDZbFMa0BHSgVvD2fRG6OS2w,8030 +django_extensions/management/commands/reset_schema.py,sha256=0wb81MzOshShJkGkZ9fnkvzs1px_R7vjjH-wpA7zkZc,2859 +django_extensions/management/commands/runjob.py,sha256=OMeFDVJgYlTc7NO8aWS-2QgE3pPIwtd8tGrelviGVhE,1987 +django_extensions/management/commands/runjobs.py,sha256=k3Um1dlGPuWIs7P9MPxNDNcCNq3pAdH7cV4xmmcJMRQ,3384 +django_extensions/management/commands/runprofileserver.py,sha256=XBfJqovLmWnXUhdgprBbM8-vgOTm7dM2tZo3Z6OiTFk,11625 +django_extensions/management/commands/runscript.py,sha256=ix-I39hf_OVD38bm9bREObkXVi9j7AAoGK1dLVEYgqE,11952 +django_extensions/management/commands/runserver_plus.py,sha256=JEPfN98q3rEV_4trUO6f4RYGStIPfzI2jJjgOzSZ-CU,24539 +django_extensions/management/commands/set_default_site.py,sha256=I4UnoX9UBuHKbe7nwrGE5RjSNgA_Ro5q5FMhpgTMkUI,2821 +django_extensions/management/commands/set_fake_emails.py,sha256=Y_8YkLQuxdMkVTtTUlspjlw_he_WQsMPAw7l_fOi3tg,3874 +django_extensions/management/commands/set_fake_passwords.py,sha256=MpmwrE_uCEAeknGriBgsqC-vILYW8-7dlZDlTcyVgIs,1764 +django_extensions/management/commands/shell_plus.py,sha256=JiZt4KMIIm5_0SBri6-SlttVfbTf1A1wgNUxY3N2eCA,22889 +django_extensions/management/commands/show_template_tags.py,sha256=74cJf2kvZUXc9guQCzjcWgZGubKUTNEKLwDHQsbhK_0,3908 +django_extensions/management/commands/show_urls.py,sha256=cWEteGN8wAPaLcQMI7xzVUluWrX1aiH34SCYs2kLoeE,9218 +django_extensions/management/commands/sqlcreate.py,sha256=AmvCptEutiC8Mzffq-7VIdntADgHor1z-eJH-X50Ifk,4262 +django_extensions/management/commands/sqldiff.py,sha256=dN3UXAu4_RTKCyScz72p_VMjzL9ndqtsootSmLaNyjU,63926 +django_extensions/management/commands/sqldsn.py,sha256=AM8SFvnIISxOAIZLvjG92ac88l1aaL9KJ00_6j6UrCo,6074 +django_extensions/management/commands/sync_s3.py,sha256=mpz4BjbWJIgSpGKnGbovwzudr0agsErx19aBZfJ1iuY,15720 +django_extensions/management/commands/syncdata.py,sha256=h7QKa0A2HSoTbWpS5U920B02l-Ou-bPr9d-a417ZPFI,9771 +django_extensions/management/commands/unreferenced_files.py,sha256=SMQG4SXhSEkjxSuUteaXVTyJ4StmC9A9mZwYOQBzaco,1787 +django_extensions/management/commands/update_permissions.py,sha256=UsbrkArPnfik5dicZy_4aqutLKrB2r8p_w7vyZc1H1s,2488 +django_extensions/management/commands/validate_templates.py,sha256=GrkhQJQBlGuNI634BLfBToSCirl3b4rh1EzL3OlNyg4,3627 +django_extensions/management/debug_cursor.py,sha256=o00pKAA81niPFmX8gMDtZZfdEB6bFAXaIyDOWE7PQxg,4386 +django_extensions/management/email_notifications.py,sha256=hHPG_1mzJDYf5jchevEOC-rAzhJGM5EOkgYmaRFpk_M,5360 +django_extensions/management/jobs.py,sha256=_JDz17eUWvwo5AsmkNcmElLJtpRQJ9Vj7OUnPWOk4xw,5070 +django_extensions/management/modelviz.py,sha256=HrzJIBW8Napnl1SSyq9BKW-a8XkvWkdy7pWJmjyRXC8,18624 +django_extensions/management/mysql.py,sha256=xUBDaNhnoGbOPjRtq5zkd5Z8NtmJLdS8MTlHVPigeHQ,1506 +django_extensions/management/notebook_extension.py,sha256=h5-bWrDK8RkoblyiprJZjFRRqbin3Vj8W6PmBWI2KpM,324 +django_extensions/management/shells.py,sha256=2eTZ6s9bSHAtR7u6-IroDuUQAcBGNYxBEhJAPCsxN_8,15410 +django_extensions/management/signals.py,sha256=yWTcyz8hhcB-PLJKeH2UWOAypCIvaeijKy3CfNJ3ZhU,307 +django_extensions/management/technical_response.py,sha256=FbMGGbFMHpwjc6SEQ3vZ0lNmIGL5TnCQzAeDzJzVqBQ,1758 +django_extensions/management/utils.py,sha256=vEWTbV3PrUJwh4r5VK8WGkICTZlAx6uXqo2wypDFAVY,2259 +django_extensions/models.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +django_extensions/mongodb/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +django_extensions/mongodb/__pycache__/__init__.cpython-310.pyc,, +django_extensions/mongodb/__pycache__/models.cpython-310.pyc,, +django_extensions/mongodb/fields/__init__.py,sha256=4iHBY61wpdc832Cq9sS6q_X5dnQiwVQ65H5wQ6cH2L4,9344 +django_extensions/mongodb/fields/__pycache__/__init__.cpython-310.pyc,, +django_extensions/mongodb/fields/__pycache__/json.cpython-310.pyc,, +django_extensions/mongodb/fields/json.py,sha256=ep3CuSkBE5LyixMbmFo2u_jK2D4J9aziIlCra5Fb-w8,2158 +django_extensions/mongodb/models.py,sha256=BVvXqlgVEfWNUy19ykvlwD0qXv0B3gGcIiPi7RBcJjc,2405 +django_extensions/settings.py,sha256=jVpQrNT2_aGQXTedaDJ7uyqxk02uep8b1SXfJIm3YSI,1120 +django_extensions/static/django_extensions/css/jquery.autocomplete.css,sha256=3yUz9XJFKdXHv34Xe4QNWjA9ghEr2ieEoQ0KaO3e49Q,740 +django_extensions/static/django_extensions/img/indicator.gif,sha256=0-OUTUZJRQ3uZqVcae7O0tgltsoaNJ9yx1_TeArj8AY,1553 +django_extensions/static/django_extensions/js/jquery.ajaxQueue.js,sha256=hPrJgQn9AOWP5fixvJ2ty6_ncPDKXGtW3hjZY6omo70,2800 +django_extensions/static/django_extensions/js/jquery.autocomplete.js,sha256=5DV9zxN6TgVpbkscqlkoiK5qhEEGdmxV2v7d265QQog,36679 +django_extensions/static/django_extensions/js/jquery.bgiframe.js,sha256=ACFjwe9ie5i4LysU-w9gpisHaCzHbS0kEOtIL0UcDM4,1821 +django_extensions/templates/django_extensions/graph_models/django2018/digraph.dot,sha256=eb8EwxsXvPS3KCbpwO2tq6-Kv5VNSnrWPIcAgDqsZOo,846 +django_extensions/templates/django_extensions/graph_models/django2018/label.dot,sha256=vsKxchMm6DQVTPx8gFxijpHOGNJuqdItN2WEI8mvc14,1875 +django_extensions/templates/django_extensions/graph_models/django2018/relation.dot,sha256=6KlECRFCmCmTTOQs5vYEr2sPWdDgiUbgH4ZkWLt_SjE,589 +django_extensions/templates/django_extensions/graph_models/original/digraph.dot,sha256=b1W5Zm-29cOxe_lZL6lKoSXnFsWDDGPeCgGWr_8kPAw,851 +django_extensions/templates/django_extensions/graph_models/original/label.dot,sha256=0-UHhFDl-XTkOr1wUAoEBd-xSfnAea922vUX0N1cCeQ,1697 +django_extensions/templates/django_extensions/graph_models/original/relation.dot,sha256=Y-wvocs_14QreSILBv9ESWvnF6B3pUcrRrjx_q0oINk,591 +django_extensions/templates/django_extensions/widgets/foreignkey_searchinput.html,sha256=8DhLt6B0oUlpVq1gSoPy4uImyJxUueUczwYHraZeKNg,2032 +django_extensions/templatetags/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +django_extensions/templatetags/__pycache__/__init__.cpython-310.pyc,, +django_extensions/templatetags/__pycache__/debugger_tags.cpython-310.pyc,, +django_extensions/templatetags/__pycache__/highlighting.cpython-310.pyc,, +django_extensions/templatetags/__pycache__/indent_text.cpython-310.pyc,, +django_extensions/templatetags/__pycache__/syntax_color.cpython-310.pyc,, +django_extensions/templatetags/__pycache__/widont.cpython-310.pyc,, +django_extensions/templatetags/debugger_tags.py,sha256=M6RUSObtGln_LQXDeu8m396auIOAsxdnJQa3AeV5T1I,596 +django_extensions/templatetags/highlighting.py,sha256=goittx3-wyZJleoowr5YGKdUYeOirW-VhsHvPfxGxb0,3086 +django_extensions/templatetags/indent_text.py,sha256=ByaKtl7VaPBx_4PB3V-Bg9foY1zvraZ2VNHBh5gBdek,1751 +django_extensions/templatetags/syntax_color.py,sha256=s0NwoOfz9F_SvqwoKOYkYN8iCQXcX95eDvmle6XCYkA,3173 +django_extensions/templatetags/widont.py,sha256=6uTu7oGT98rPy1TaTRUOE3A6LkLell_XyVIWPmt_uZo,1925 +django_extensions/utils/__init__.py,sha256=Xb0RrRwc1dqCwkASV8I2MSLy14c_FhmE1HeaxxaeO1E,70 +django_extensions/utils/__pycache__/__init__.cpython-310.pyc,, +django_extensions/utils/__pycache__/deprecation.cpython-310.pyc,, +django_extensions/utils/__pycache__/dia2django.cpython-310.pyc,, +django_extensions/utils/__pycache__/internal_ips.cpython-310.pyc,, +django_extensions/utils/deprecation.py,sha256=XfN9X_w6PGMvQ5JldtdYZyqSNvO5w9TTaST8nZvQl2U,155 +django_extensions/utils/dia2django.py,sha256=YWerQ-Fh5qgH5C72riN3jrqT64BEF3u0L0H2dbUMgx0,10177 +django_extensions/utils/internal_ips.py,sha256=O8XzFk_In7xSaSAtTjKMorSyib7GxiPTVeAapad80QM,1952 +django_extensions/validators.py,sha256=wBOQW4HQc2rtIH77Ndhie5N90KBKmVKZc5u7s9MznGQ,3820 diff --git a/gestao_raul/Lib/site-packages/django_extensions-3.2.3.dist-info/REQUESTED b/gestao_raul/Lib/site-packages/django_extensions-3.2.3.dist-info/REQUESTED new file mode 100644 index 0000000..e69de29 diff --git a/gestao_raul/Lib/site-packages/pip-23.0.1.dist-info/WHEEL b/gestao_raul/Lib/site-packages/django_extensions-3.2.3.dist-info/WHEEL similarity index 65% rename from gestao_raul/Lib/site-packages/pip-23.0.1.dist-info/WHEEL rename to gestao_raul/Lib/site-packages/django_extensions-3.2.3.dist-info/WHEEL index 57e3d84..1f37c02 100644 --- a/gestao_raul/Lib/site-packages/pip-23.0.1.dist-info/WHEEL +++ b/gestao_raul/Lib/site-packages/django_extensions-3.2.3.dist-info/WHEEL @@ -1,5 +1,5 @@ Wheel-Version: 1.0 -Generator: bdist_wheel (0.38.4) +Generator: bdist_wheel (0.40.0) Root-Is-Purelib: true Tag: py3-none-any diff --git a/gestao_raul/Lib/site-packages/django_extensions-3.2.3.dist-info/top_level.txt b/gestao_raul/Lib/site-packages/django_extensions-3.2.3.dist-info/top_level.txt new file mode 100644 index 0000000..ee49386 --- /dev/null +++ b/gestao_raul/Lib/site-packages/django_extensions-3.2.3.dist-info/top_level.txt @@ -0,0 +1 @@ +django_extensions diff --git a/gestao_raul/Lib/site-packages/django_extensions/__init__.py b/gestao_raul/Lib/site-packages/django_extensions/__init__.py new file mode 100644 index 0000000..6a53c7d --- /dev/null +++ b/gestao_raul/Lib/site-packages/django_extensions/__init__.py @@ -0,0 +1,20 @@ +# -*- coding: utf-8 -*- +VERSION = (3, 2, 3) + + +def get_version(version): + """Dynamically calculate the version based on VERSION tuple.""" + if len(version) > 2 and version[2] is not None: + if len(version) == 4: + str_version = "%s.%s.%s.%s" % version + elif isinstance(version[2], int): + str_version = "%s.%s.%s" % version[:3] + else: + str_version = "%s.%s_%s" % version[:3] + else: + str_version = "%s.%s" % version[:2] + + return str_version + + +__version__ = get_version(VERSION) diff --git a/gestao_raul/Lib/site-packages/django_extensions/__pycache__/__init__.cpython-310.pyc b/gestao_raul/Lib/site-packages/django_extensions/__pycache__/__init__.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..89781a1b156d735d8174138edac13ee435bfcc2e GIT binary patch literal 629 zcmZuvL2uJA6t*3=&DITin!3ZJaM&RS%3&wagb>{hlTatMfmok z@M9+aQLdc&6F_LK+{^aXG53|ahFWyw9!q3A$GME4sx{-+SV|8RcI;ay$0SH8ShE51w=v7`ORkfd*R2j=vA}cRdHY8QA85#AB)vPHVkoIB5uW0-#esADT@vY2k9$(~1 zv6RZ1cshN1IgaNN4$GP5MHatHZ(@^L`FzEb1&5tjeBx@JGkIsFa<0q^#!{79#zw1k z)t^h-&g;N1a|AFX2iV8dfAVvHX?O6O(!nDo+C7m8nCLaXqb908Yx^0i@4Ewg&{6s4 U%Ul$heC^(X=>kyfdk0Vd05-OoRsaA1 literal 0 HcmV?d00001 diff --git a/gestao_raul/Lib/site-packages/django_extensions/__pycache__/apps.cpython-310.pyc b/gestao_raul/Lib/site-packages/django_extensions/__pycache__/apps.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..d0123e7cb3bf890d9780006685772024a3303729 GIT binary patch literal 465 zcmZWmPfNov6i=E?y4f8D!<(>c56-)YOt;}hCQS4Y0wHT+skTjRTK`@3%gDY_ub%u0 zo_uM=4Sewa|K7_liSGA%2xR|q9j(EC+GJZ?NG70W1V$o>6O>|#F*--mk>njoqVOA` zj&!e3(D?!s3UJ*$&GV_wZsRDlm2JV0OhC;Lj6xJk1k;!j=}=b^*y7fEvpbPRdj4Fh z%)~k~?JhcyO`WU1#_OPkjyBju(5XGnGm$FJ>mKK+mQ`Y7pYw-GB)=Wkdg?!_Vx^60 z@E@q~fK_9@Z>C4=+Ni>?CzX_%&2(6$Dk}|JF3;vu7AaE-%?nW_>>^$<6PM~B7va5t z4*SRSP~^E8=Pw0;6FT+*cEEVZ#U5^Ii-6GGc5H01g=48$^oCR$b)i;!$L+mN?1LKn IPd*-!9}hrxGynhq literal 0 HcmV?d00001 diff --git a/gestao_raul/Lib/site-packages/django_extensions/__pycache__/collision_resolvers.cpython-310.pyc b/gestao_raul/Lib/site-packages/django_extensions/__pycache__/collision_resolvers.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..49d897b46aeda03106d32f8f6c36d62ec105ecdb GIT binary patch literal 11556 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 literal 0 HcmV?d00001 diff --git a/gestao_raul/Lib/site-packages/django_extensions/__pycache__/settings.cpython-310.pyc b/gestao_raul/Lib/site-packages/django_extensions/__pycache__/settings.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..6fbd1a7438e2fb7ec5fba53e654c972fb773408f GIT binary patch literal 1145 zcmb7DPjAyO6i?E0O}lh31O-i+!~r34Son8C2+==b6m{uHG6}3mCat~Tk;EbPG?pu0 zgdGvzC|54<6*%Fh%UDO5ge5;ezxR87&(A;8cDp5su{r)0zEdUX`)qT5)Wznxm@EVLCje}05xbSwa z<-tJ@y01q=&w`e{J+v(s+`9z2^HzY*kXx4^cgL=`?O5mFpg@lW4h5D6!2 rMw0v0_cYVvLVFrhbQs}hvPj1|LTIwCTvv2iRa8~2>n&Z@Wli}FhAnEs literal 0 HcmV?d00001 diff --git a/gestao_raul/Lib/site-packages/django_extensions/__pycache__/validators.cpython-310.pyc b/gestao_raul/Lib/site-packages/django_extensions/__pycache__/validators.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..9bc3f62c8906ed7aec6ed064458ee4bb0f1b75e1 GIT binary patch literal 3766 zcma)9TW=gi7VfIPOwYw}AaMvJfo9pT^dbf=E1?xaD8ghHBp49kBF)aK)$Xc{+wSRh zs(P?J8oyv(`3F3}qqYBJe?q_R(@Ois+X@oCQ$06(Cxo`@%;~yy)j8+;&T+A^(X#N| z`uLy2|6a1Jf78qADdtMo)vcfgYR3tkX4&s z#91ohGA;7EN)?K_giMNDmuj4p=}som)x2M*L`LYtOJ^v{QXZ927Eg{7+GzE$@p1=E zzX>5Nx>lb{TQD5Z5xnmTyYGpXaD@8}>o@8P^nGED-ERsT$7@$Nd&PEcBXk1wL;IMnv8S901)fh>wF&XC zPxZrsXh?)vd*xN0ZyXX7TQPbwXyDKOPin#!Le!B@A`SPGG1#cEU@( zXP?+p_MY{R7fu`)Zfgqpm8G^GbYM8=lnM4MVt${iS7BT(?C?Z&dUA2+tFyaNQvNQVtY?lVJGdz`1_1q66p`AJ;LVWEx{ zU1I5l&{G}iAj_C#Y71J`TttVuLL=m)T9Ea~pb3I1ik`)rz6RmLpdRyChjDh9wb;{) zKXiV6qG9V@&KZ`@M>sNu?Lr~Lmh6-l*I*bvWqUB1(P7>_d!{?koqc}KQVlE#-Kv%9 z6gZCaL@M%AeYr*SopE#T$}P%WsV?5niz4|TihhrECR|#)#rUHZ=MP&p|7r5l6T*eo zp4q)#FKm&i@^~bpsA@&gs1W0f^iC8#7{}Rcghfk-)aTr!6F)=Z28pHljYd8&muf>X z2lOqUJBa8O_x(=Wj3pR5_mENVpy@Xt){@hln7kP=HD<)*&xmQOSA0o;)uw4CrO1auQ;Jx4&Dnt<4S#R?i6NsewOY75umd&|_ZxP*{UDeaGnx-ZANQJRPP+@d$v zFUpJa>*AyH>q4h$r1kMCuRcxH!tT*RkB{cMkNZUhuG&k8e&-MA#P9}1Z$p_^7IjrY z6~)w1n@E;cWal0sh!Q2eODJ7w>yahNE;!>8Y@-RRl-#Id0Mfv-re@e$_3C=cpo>zeV=ntIC=1F!ji7FnNM@&| zUI2C6C=FfIRRL%OGg2mOq7LY;dSfx$-M8>o&vsBlxPr{&uFUq-2aDO>zJs@Vb_26f zYGSrGpFQ!*#`pe|{lJ*@r77ebt8A8yz1DqxESN=qv(+uEZi~*h{A+e-g&RF%^Zw@C z&ojp>GMDj0|H@)$B}Q!M#z(8e%doLW@saVV`XlxUS?#)ZUDlB6DjUI8v*oMvFPZ%+ ze<#gjoup~i9Ow9Smfk8*xgx$)2yRNj} Zp`v-_O@eL*i4qm6eVOqW(XL-*zW{WcMneDq literal 0 HcmV?d00001 diff --git a/gestao_raul/Lib/site-packages/django_extensions/admin/__init__.py b/gestao_raul/Lib/site-packages/django_extensions/admin/__init__.py new file mode 100644 index 0000000..01bd709 --- /dev/null +++ b/gestao_raul/Lib/site-packages/django_extensions/admin/__init__.py @@ -0,0 +1,165 @@ +# -*- coding: utf-8 -*- +# +# Autocomplete feature for admin panel +# +import operator +from functools import update_wrapper, reduce +from typing import Tuple, Dict, Callable # NOQA + +from django.apps import apps +from django.http import HttpResponse, HttpResponseNotFound +from django.conf import settings +from django.db import models +from django.db.models.query import QuerySet +from django.utils.encoding import smart_str +from django.utils.translation import gettext as _ +from django.utils.text import get_text_list +from django.contrib import admin + +from django_extensions.admin.widgets import ForeignKeySearchInput + + +class ForeignKeyAutocompleteAdminMixin: + """ + Admin class for models using the autocomplete feature. + + There are two additional fields: + - related_search_fields: defines fields of managed model that + have to be represented by autocomplete input, together with + a list of target model fields that are searched for + input string, e.g.: + + related_search_fields = { + 'author': ('first_name', 'email'), + } + + - related_string_functions: contains optional functions which + take target model instance as only argument and return string + representation. By default __unicode__() method of target + object is used. + + And also an optional additional field to set the limit on the + results returned by the autocomplete query. You can set this integer + value in your settings file using FOREIGNKEY_AUTOCOMPLETE_LIMIT or + you can set this per ForeignKeyAutocompleteAdmin basis. If any value + is set the results will not be limited. + """ + + related_search_fields = {} # type: Dict[str, Tuple[str]] + related_string_functions = {} # type: Dict[str, Callable] + autocomplete_limit = getattr(settings, 'FOREIGNKEY_AUTOCOMPLETE_LIMIT', None) + + def get_urls(self): + from django.urls import path + + def wrap(view): + def wrapper(*args, **kwargs): + return self.admin_site.admin_view(view)(*args, **kwargs) + return update_wrapper(wrapper, view) + + return [ + path('foreignkey_autocomplete/', wrap(self.foreignkey_autocomplete), + name='%s_%s_autocomplete' % (self.model._meta.app_label, self.model._meta.model_name)) + ] + super().get_urls() + + def foreignkey_autocomplete(self, request): + """ + Search in the fields of the given related model and returns the + result as a simple string to be used by the jQuery Autocomplete plugin + """ + query = request.GET.get('q', None) + app_label = request.GET.get('app_label', None) + model_name = request.GET.get('model_name', None) + search_fields = request.GET.get('search_fields', None) + object_pk = request.GET.get('object_pk', None) + + try: + to_string_function = self.related_string_functions[model_name] + except KeyError: + to_string_function = lambda x: x.__str__() + + if search_fields and app_label and model_name and (query or object_pk): + def construct_search(field_name): + # use different lookup methods depending on the notation + if field_name.startswith('^'): + return "%s__istartswith" % field_name[1:] + elif field_name.startswith('='): + return "%s__iexact" % field_name[1:] + elif field_name.startswith('@'): + return "%s__search" % field_name[1:] + else: + return "%s__icontains" % field_name + + model = apps.get_model(app_label, model_name) + + queryset = model._default_manager.all() + data = '' + if query: + for bit in query.split(): + or_queries = [models.Q(**{construct_search(smart_str(field_name)): smart_str(bit)}) for field_name in search_fields.split(',')] + other_qs = QuerySet(model) + other_qs.query.select_related = queryset.query.select_related + other_qs = other_qs.filter(reduce(operator.or_, or_queries)) + queryset = queryset & other_qs + + additional_filter = self.get_related_filter(model, request) + if additional_filter: + queryset = queryset.filter(additional_filter) + + if self.autocomplete_limit: + queryset = queryset[:self.autocomplete_limit] + + data = ''.join([str('%s|%s\n') % (to_string_function(f), f.pk) for f in queryset]) + elif object_pk: + try: + obj = queryset.get(pk=object_pk) + except Exception: # FIXME: use stricter exception checking + pass + else: + data = to_string_function(obj) + return HttpResponse(data, content_type='text/plain') + return HttpResponseNotFound() + + def get_related_filter(self, model, request): + """ + Given a model class and current request return an optional Q object + that should be applied as an additional filter for autocomplete query. + If no additional filtering is needed, this method should return + None. + """ + return None + + def get_help_text(self, field_name, model_name): + searchable_fields = self.related_search_fields.get(field_name, None) + if searchable_fields: + help_kwargs = { + 'model_name': model_name, + 'field_list': get_text_list(searchable_fields, _('and')), + } + return _('Use the left field to do %(model_name)s lookups in the fields %(field_list)s.') % help_kwargs + return '' + + def formfield_for_dbfield(self, db_field, **kwargs): + """ + Override the default widget for Foreignkey fields if they are + specified in the related_search_fields class attribute. + """ + if isinstance(db_field, models.ForeignKey) and db_field.name in self.related_search_fields: + help_text = self.get_help_text(db_field.name, db_field.remote_field.model._meta.object_name) + if kwargs.get('help_text'): + help_text = str('%s %s') % (kwargs['help_text'], help_text) + kwargs['widget'] = ForeignKeySearchInput(db_field.remote_field, self.related_search_fields[db_field.name]) + kwargs['help_text'] = help_text + return super().formfield_for_dbfield(db_field, **kwargs) + + +class ForeignKeyAutocompleteAdmin(ForeignKeyAutocompleteAdminMixin, admin.ModelAdmin): + pass + + +class ForeignKeyAutocompleteTabularInline(ForeignKeyAutocompleteAdminMixin, admin.TabularInline): + pass + + +class ForeignKeyAutocompleteStackedInline(ForeignKeyAutocompleteAdminMixin, admin.StackedInline): + pass diff --git a/gestao_raul/Lib/site-packages/django_extensions/admin/__pycache__/__init__.cpython-310.pyc b/gestao_raul/Lib/site-packages/django_extensions/admin/__pycache__/__init__.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..c237c51b8692d509ad565acdf3e911e2861ec8f2 GIT binary patch literal 6950 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 Aa{vGU literal 0 HcmV?d00001 diff --git a/gestao_raul/Lib/site-packages/django_extensions/admin/__pycache__/filter.cpython-310.pyc b/gestao_raul/Lib/site-packages/django_extensions/admin/__pycache__/filter.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..e34485522fd5b083ddcb417c379a91ccd2b90dff GIT binary patch literal 2285 zcmZ`)&2Jnv6!*t`WwS{G3H@#<9}*e_+m<6jsL)b4REyN8NQ@Rn)3J9uiFapf&(da@ zNT5{ejlY0HB5{fMk9_6Cxi=6k?|F9HBrG2J+0TBqpMQS8H|5Goi$J;b_3wiVAt8UD zaCDDR56w9IwZS<6Q zBv}Fw&9g6@+#IG{C2X~p))KCfxbYF>M_590t&P4+z) z@ekN;Scig4h`u5i*aw1alFF~cJzVXyn0KekKVI8S)546vl|vGTHt3gnm{qntgJ=6u zrU%wHld;q`0@G1ZrKt^@X=6PF;M&!hb^f3%a%tkodPb_g_4|mw4YhnYkzf}9^4ZW> ze^?5s?6PapObm-r(sH)xIIAA$6}apnwM%K5tIU`*)d7tB_5IC{d-sggruRsys_fk= z^T|+-D$~1r_wz4q_6Bf9R;D_esNS98e$Nz@{BWG*+ZoLC#8x&MlqtNi9GRjVnXB&L zt9=(5o$-#wSVh1MiZ(q>+w=;ZUR>}_ojDRY1=D%KKGvI1-5xdBA_KY!cj?Adfc+I9JOEb~eVxIZ8yAyy6A83rPv)Attnuwc!9+(Cjlch;bT?(D<+Z!tj* z*e20uU@+#%sfjsuvgJSq=dL~r7AKwc9cNyH8Ry;_ot|6dp0mp5%mHf`$a9CD;m(3q z!1F!YXM#h|!(Ja8i~X*p*De268cVNP)-53#XnM#S@bE5r9R-HPD;V`Ms2fn9;dqO+ zsP}w&VUcgM@XZn4c|p%`T@KYe0P!=@i5x&Knvk0A(*glx1A4$JF6bUG|5yGEJUEPc zx5#(rdu*5O@@5TC4Qy++$F>=+ZM1?80Qj2ES3W$0v;-n1{4=FuZX=+Li-V*MjL|!( zsdO=atM*pn(uQLyN>;+@&IpeLry%&oyo$Yb##Szo_i<=H8FA=5s4Zs9& zL4*qmxG@Mz#F+m^e*wF5HgZ@P2`R>9EOX+9`U9|v zq0XqiO4q3OKh&OY6}K?qjew1i@LFjK$!emo-%bJgOf@quY3OsXb>kw2pne|(9%)x* zDJ+*t&C*!o8iuJx?rR?erhP~F2=Y!8L>#_g?Ub9tcsy1xXm3C@xX1iwP)Ia z8OMj@?99Lobt;{WjLItb6=*z0JNDpfxWkUz^`&1n`lN}1Pch9K{9m-;C()*Bd?WrB Dy(kt0 literal 0 HcmV?d00001 diff --git a/gestao_raul/Lib/site-packages/django_extensions/admin/__pycache__/widgets.cpython-310.pyc b/gestao_raul/Lib/site-packages/django_extensions/admin/__pycache__/widgets.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..8d17191c3024f329f59c6005436e4fbf9c98693a GIT binary patch literal 3176 zcmaJ@&5zr-6(^|=%d+g5Oed2z$OdkKNo#bYNr4vFZl>u+cDG%0J4KT%77$zr8j*IS zNR~s=GZ{lZO@N+Sp!XhZpqHTk5wAV%e^3P7qK}llag*%G7WK%-NAi9B9;1d8`>_M(v4h0J4LJXBG1rn z(JuYSH*~A$ltC02+AF$cFX|b(UF?**(Jn^6M%1UB7l?M4duc`2D1M9v!Iy9XbTYuo z8CAR#K-eOa48GStsW{8Vli#w7N6Go8^oxv+nFPizXA{bJEUQ>Zo=wIu<_ej}ECs5? z*%{+Puh1?N{xlZJ$aFsEvq_rBil=(Z?MItKKjJfJ7>Y1O5urG;D2Z%%9coeg1&UnO zf}`WeqYibU-=>{EqYb+=3J`HG_`Y&(DtKM>xYZrtV(|Xw*8H zf1l>bWL(AUxnvWORTFWP!~fZg@r&?uoQ-%=vM?9(A6zvt$&=@Qn6a6e`NJz`ZfOt8 zDk~|9`Q5iAQt|aEwhb1-_<$%2K8oaGU~w1J=GqXE^E*bf1h_VsZ4`OAh(}q$#7o3? zfd49f_~G!60>Wu{&I(x#KdRDM$tF?^A3gfj#}9{N260!#Jed{4&$82@4&A%cBz>9y zXZZFJ6Iy1IqjM9@V%I(~tc7|$FgHQi~|B4rubZhW=-lCWiY8f9pCtvnJ zer|5HuN}ZDqkLZbAbVK{1l}5-q_t(yFbMrQz!_dWla4w(2%n*C;BK zBW6?3$cy7_lF2ycdZD#Gd>?3j8ye*#QgZPUkSLDRA`t>+>bT-sFW!gdeRzdFnTz-F z{Pw#w+3b?)BX1sUI&DnjZh%)*TNKR@cQdrGjJqL)7f$Wu*20C>UOFqZXi1mi+O1n7 za)2)J!h@MDaYuT2d+FC6B`a-+R*jY&nBA`1{JsXiWzaxg-ClNA=p&F^;Tve-PY7)- zeCpNK8Rj3;Hk`pbMzWXhEO%>EV=$|=vd4JQsR{oAR=rk}6w-cQ0Wzj9{L-LKw*d+JcojD*!Zr zs-2Vhfl0Uz4@C_B^a;QgD>5PH--ck)wFN>h-o}cfSNP|1=T1^i@BbfaYWHg6KZaM_ zf@Tca^(TKw7I;CZQB)iBZ{(TANIZ8A#m^2!lP{Jc;XQ?)Dtz{4Wc$bZG#c3-+}A7X zbiRe=_ud@_P1y^Niz-bD@c@X8u!2xC@fF=Xdo63K<}Wqke4^9y6@Fjm?u-|zv&mc2 zS%>yCkx!biZ70)dY|=;hCYj?VvCR;_4u_oIe;eD@sCINH^nc61&HAQZg->Kz%s;qN z_$tYte6!>gVuKq^P9DI?l>^Wz6Mh7A)B&`CV!2VTI%k}>fWdWPR4!Pj$WE0rP2fJE zTF}j_Y!dZ=h+z!CPC{u=wjNauKz}KkveNz>YNILi%5A*HbNO%@v~V{tU0YXrd0~C zsq@3QgzxzU`N1{XM+fUE z8^4D|mB5|W1VyyjV8fKjScJ_5*W6vA&RQA*QJ8>@Zfr(mR=`}i@-|mv6Hjp0HaE6# lX1FF4bm=fEZUx2HrAc|mjXxgftE12b&BFnN!1iz7`X4x3YPkRa literal 0 HcmV?d00001 diff --git a/gestao_raul/Lib/site-packages/django_extensions/admin/filter.py b/gestao_raul/Lib/site-packages/django_extensions/admin/filter.py new file mode 100644 index 0000000..cc9a67a --- /dev/null +++ b/gestao_raul/Lib/site-packages/django_extensions/admin/filter.py @@ -0,0 +1,53 @@ +# -*- coding: utf-8 -*- +from django.contrib.admin import FieldListFilter +from django.contrib.admin.utils import prepare_lookup_value +from django.utils.translation import gettext_lazy as _ + + +class NullFieldListFilter(FieldListFilter): + def __init__(self, field, request, params, model, model_admin, field_path): + self.lookup_kwarg = '{0}__isnull'.format(field_path) + super().__init__(field, request, params, model, model_admin, field_path) + lookup_choices = self.lookups(request, model_admin) + self.lookup_choices = () if lookup_choices is None else list(lookup_choices) + + def expected_parameters(self): + return [self.lookup_kwarg] + + def value(self): + return self.used_parameters.get(self.lookup_kwarg, None) + + def lookups(self, request, model_admin): + return ( + ('1', _('Yes')), + ('0', _('No')), + ) + + def choices(self, cl): + yield { + 'selected': self.value() is None, + 'query_string': cl.get_query_string({}, [self.lookup_kwarg]), + 'display': _('All'), + } + for lookup, title in self.lookup_choices: + yield { + 'selected': self.value() == prepare_lookup_value(self.lookup_kwarg, lookup), + 'query_string': cl.get_query_string({ + self.lookup_kwarg: lookup, + }, []), + 'display': title, + } + + def queryset(self, request, queryset): + if self.value() is not None: + kwargs = {self.lookup_kwarg: self.value()} + return queryset.filter(**kwargs) + return queryset + + +class NotNullFieldListFilter(NullFieldListFilter): + def lookups(self, request, model_admin): + return ( + ('0', _('Yes')), + ('1', _('No')), + ) diff --git a/gestao_raul/Lib/site-packages/django_extensions/admin/widgets.py b/gestao_raul/Lib/site-packages/django_extensions/admin/widgets.py new file mode 100644 index 0000000..816fb4e --- /dev/null +++ b/gestao_raul/Lib/site-packages/django_extensions/admin/widgets.py @@ -0,0 +1,90 @@ +# -*- coding: utf-8 -*- +import urllib + +from django import forms +from django.contrib.admin.sites import site +from django.contrib.admin.widgets import ForeignKeyRawIdWidget +from django.template.loader import render_to_string +from django.templatetags.static import static +from django.urls import reverse +from django.utils.safestring import mark_safe +from django.utils.text import Truncator + + +class ForeignKeySearchInput(ForeignKeyRawIdWidget): + """ + Widget for displaying ForeignKeys in an autocomplete search input + instead in a + + diff --git a/gestao_raul/Lib/site-packages/django_extensions/templatetags/__init__.py b/gestao_raul/Lib/site-packages/django_extensions/templatetags/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/gestao_raul/Lib/site-packages/django_extensions/templatetags/__pycache__/__init__.cpython-310.pyc b/gestao_raul/Lib/site-packages/django_extensions/templatetags/__pycache__/__init__.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..9f95a4de93ab722443d7fc06e6de351ef2d52c9d GIT binary patch literal 196 zcmYk0K?=e!5JgkzLWCZ{1Gv!cMMSLbM4{qtAVfQaXquGH6!l2rjof+*S0*ccFz@qc zHsiBwAOgePQ^$Nq{gZ^U2t#R5CH7*JY#*YH>z_Wln8JauCAgwx4=aD_YIICcmdkYk z8i|#ct?Ddn%n`^ijvIBlsBnSmteo}|Z;XzNca$^Mja7`SH04qnXIRQfbAR<`wXZsh L^Y{Suf>QAXyq7KTh=z zX^+AGXs@0;d-LR*O;QR{eK3#t-t5lzzVD6hb`yf}@a^~fLqNz653Wau;2AFa0+S>| zBB=}tIthjWB@kSMmt+`0G;YXHM&HOe9X4y!kj)ykYSfZ(jbhn;PkPC*N?wZtU=l{N zJXdATcE_U3HFGeT7Q%sLAglt@Pm;YOfi>7p5{7ZI$qFsx>Q6A-iQKZyv(@Pd)1xtD z?o>_Xh@D~iC$>#`w2IePXVh0#;rFPT3~>Frjme?Db9zB92_>fldku~szbqXXkva7h z*t@y=qRT6K_E{Bp*smf_xCp9*b2XW2<2WC-EjaG*Pgu|@#KsoHw2|X?G1yK&S}-;} zgu>}`S7);cl+LF6`_K0VX%5y2&5f89=_@r#t#a^WDzXECC#kHh;&9}kv`UwDYc0)t zv9yal6O8_LG(7wlO&4!}bVcLQn_jzWaV~YndDUE+Wc+Na7J6uenOCuaTv?n~)m+Z4 qcA{?C_$#hysa1JFRlGCNa#p}o|5ofBOcCvD#9Fi~a#iM#w+_ literal 0 HcmV?d00001 diff --git a/gestao_raul/Lib/site-packages/django_extensions/templatetags/__pycache__/highlighting.cpython-310.pyc b/gestao_raul/Lib/site-packages/django_extensions/templatetags/__pycache__/highlighting.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..4c99998a170cd45c0f5646bfd2f1ca9b690a1418 GIT binary patch literal 3448 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 literal 0 HcmV?d00001 diff --git a/gestao_raul/Lib/site-packages/django_extensions/templatetags/__pycache__/syntax_color.cpython-310.pyc b/gestao_raul/Lib/site-packages/django_extensions/templatetags/__pycache__/syntax_color.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..6236bda7ab2184975226e9a35eadbfcd8aa82877 GIT binary patch literal 3451 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 literal 0 HcmV?d00001 diff --git a/gestao_raul/Lib/site-packages/django_extensions/templatetags/debugger_tags.py b/gestao_raul/Lib/site-packages/django_extensions/templatetags/debugger_tags.py new file mode 100644 index 0000000..93f2ddc --- /dev/null +++ b/gestao_raul/Lib/site-packages/django_extensions/templatetags/debugger_tags.py @@ -0,0 +1,37 @@ +# -*- coding: utf-8 -*- +""" +Make debugging Django templates easier. + +Example: + + {% load debugger_tags %} + + {{ object|ipdb }} + +""" + +from django import template + + +register = template.Library() + + +@register.filter +def ipdb(obj): # pragma: no cover + """Interactive Python debugger filter.""" + __import__('ipdb').set_trace() + return obj + + +@register.filter +def pdb(obj): + """Python debugger filter.""" + __import__('pdb').set_trace() + return obj + + +@register.filter +def wdb(obj): # pragma: no cover + """Web debugger filter.""" + __import__('wdb').set_trace() + return obj diff --git a/gestao_raul/Lib/site-packages/django_extensions/templatetags/highlighting.py b/gestao_raul/Lib/site-packages/django_extensions/templatetags/highlighting.py new file mode 100644 index 0000000..f172fd3 --- /dev/null +++ b/gestao_raul/Lib/site-packages/django_extensions/templatetags/highlighting.py @@ -0,0 +1,99 @@ +# -*- coding: utf-8 -*- +""" +Similar to syntax_color.py but this is intended more for being able to +copy+paste actual code into your Django templates without needing to +escape or anything crazy. + +Example: + + {% load highlighting %} + + + +

check out this code

+ + {% highlight 'python' 'Excerpt: blah.py' %} + def need_food(self): + print("Love is than &death&") + {% endhighlight %} +""" + +from django import template +from django.template import ( + Context, Node, Template, TemplateSyntaxError, Variable, +) +from django.template.defaultfilters import stringfilter +from django.utils.safestring import mark_safe + +try: + from pygments import highlight as pyghighlight + from pygments.lexers import get_lexer_by_name + from pygments.formatters import HtmlFormatter + HAS_PYGMENTS = True +except ImportError: # pragma: no cover + HAS_PYGMENTS = False + +register = template.Library() + + +@register.filter(is_safe=True) +@stringfilter +def parse_template(value): + return mark_safe(Template(value).render(Context())) + + +class CodeNode(Node): + def __init__(self, language, nodelist, name=''): + self.language = Variable(language) + self.nodelist = nodelist + if name: + self.name = Variable(name) + else: + self.name = None + + def render(self, context): + code = self.nodelist.render(context).strip() + lexer = get_lexer_by_name(self.language.resolve(context)) + formatter = HtmlFormatter(linenos=False) + html = "" + if self.name: + name = self.name.resolve(context) + html = '
%s
' % name + return html + pyghighlight(code, lexer, formatter) + + +@register.tag +def highlight(parser, token): + """ + Tag to put a highlighted source code
 block in your code.
+    This takes two arguments, the language and a little explaination message
+    that will be generated before the code.  The second argument is optional.
+
+    Your code will be fed through pygments so you can use any language it
+    supports.
+
+    Usage::
+
+      {% load highlighting %}
+      {% highlight 'python' 'Excerpt: blah.py' %}
+      def need_food(self):
+          print("Love is colder than death")
+      {% endhighlight %}
+
+    """
+    if not HAS_PYGMENTS:  # pragma: no cover
+        raise ImportError("Please install 'pygments' library to use highlighting.")
+    nodelist = parser.parse(('endhighlight',))
+    parser.delete_first_token()
+    bits = token.split_contents()[1:]
+    if len(bits) < 1:
+        raise TemplateSyntaxError("'highlight' statement requires an argument")
+    return CodeNode(bits[0], nodelist, *bits[1:])
diff --git a/gestao_raul/Lib/site-packages/django_extensions/templatetags/indent_text.py b/gestao_raul/Lib/site-packages/django_extensions/templatetags/indent_text.py
new file mode 100644
index 0000000..cb9f1a7
--- /dev/null
+++ b/gestao_raul/Lib/site-packages/django_extensions/templatetags/indent_text.py
@@ -0,0 +1,55 @@
+# -*- coding: utf-8 -*-
+from django import template
+
+register = template.Library()
+
+
+class IndentByNode(template.Node):
+    def __init__(self, nodelist, indent_level, if_statement):
+        self.nodelist = nodelist
+        self.indent_level = template.Variable(indent_level)
+        if if_statement:
+            self.if_statement = template.Variable(if_statement)
+        else:
+            self.if_statement = None
+
+    def render(self, context):
+        indent_level = self.indent_level.resolve(context)
+        if self.if_statement:
+            try:
+                if_statement = bool(self.if_statement.resolve(context))
+            except template.VariableDoesNotExist:
+                if_statement = False
+        else:
+            if_statement = True
+        output = self.nodelist.render(context)
+        if if_statement:
+            indent = " " * indent_level
+            output = indent + indent.join(output.splitlines(True))
+        return output
+
+
+@register.tag
+def indentby(parser, token):
+    """
+    Add indentation to text between the tags by the given indentation level.
+
+    {% indentby  [if ] %}
+    ...
+    {% endindentby %}
+
+    Arguments:
+      indent_level - Number of spaces to indent text with.
+      statement - Only apply indent_level if the boolean statement evalutates to True.
+    """
+    args = token.split_contents()
+    largs = len(args)
+    if largs not in (2, 4):
+        raise template.TemplateSyntaxError("indentby tag requires 1 or 3 arguments")
+    indent_level = args[1]
+    if_statement = None
+    if largs == 4:
+        if_statement = args[3]
+    nodelist = parser.parse(('endindentby', ))
+    parser.delete_first_token()
+    return IndentByNode(nodelist, indent_level, if_statement)
diff --git a/gestao_raul/Lib/site-packages/django_extensions/templatetags/syntax_color.py b/gestao_raul/Lib/site-packages/django_extensions/templatetags/syntax_color.py
new file mode 100644
index 0000000..1a1243c
--- /dev/null
+++ b/gestao_raul/Lib/site-packages/django_extensions/templatetags/syntax_color.py
@@ -0,0 +1,111 @@
+# -*- coding: utf-8 -*-
+r"""
+Template filter for rendering a string with syntax highlighting.
+It relies on Pygments to accomplish this.
+
+Some standard usage examples (from within Django templates).
+Coloring a string with the Python lexer:
+
+    {% load syntax_color %}
+    {{ code_string|colorize:"python" }}
+
+You may use any lexer in Pygments. The complete list of which
+can be found [on the Pygments website][1].
+
+[1]: https://pygments.org/docs/lexers/
+
+You may also have Pygments attempt to guess the correct lexer for
+a particular string. However, if may not be able to choose a lexer,
+in which case it will simply return the string unmodified. This is
+less efficient compared to specifying the lexer to use.
+
+    {{ code_string|colorize }}
+
+You may also render the syntax highlighted text with line numbers.
+
+    {% load syntax_color %}
+    {{ some_code|colorize_table:"html+django" }}
+    {{ let_pygments_pick_for_this_code|colorize_table }}
+
+Please note that before you can load the ``syntax_color`` template filters
+you will need to add the ``django_extensions.utils`` application to the
+``INSTALLED_APPS``setting in your project's ``settings.py`` file.
+"""
+import os
+
+from django import template
+from django.template.defaultfilters import stringfilter
+from django.utils.safestring import mark_safe
+
+try:
+    from pygments import highlight
+    from pygments.formatters import HtmlFormatter
+    from pygments.lexers import get_lexer_by_name, guess_lexer, ClassNotFound
+    HAS_PYGMENTS = True
+except ImportError:  # pragma: no cover
+    HAS_PYGMENTS = False
+
+__author__ = 'Will Larson '
+
+
+register = template.Library()
+
+
+def pygments_required(func):
+    """Raise ImportError if pygments is not installed."""
+    def wrapper(*args, **kwargs):
+        if not HAS_PYGMENTS:  # pragma: no cover
+            raise ImportError(
+                "Please install 'pygments' library to use syntax_color.")
+        rv = func(*args, **kwargs)
+        return rv
+    return wrapper
+
+
+@pygments_required
+@register.simple_tag
+def pygments_css():
+    return HtmlFormatter().get_style_defs('.highlight')
+
+
+def generate_pygments_css(path=None):
+    path = os.path.join(path or os.getcwd(), 'pygments.css')
+    f = open(path, 'w')
+    f.write(pygments_css())
+    f.close()
+
+
+def get_lexer(value, arg):
+    if arg is None:
+        return guess_lexer(value)
+    return get_lexer_by_name(arg)
+
+
+@pygments_required
+@register.filter(name='colorize')
+@stringfilter
+def colorize(value, arg=None):
+    try:
+        return mark_safe(highlight(value, get_lexer(value, arg), HtmlFormatter()))
+    except ClassNotFound:
+        return value
+
+
+@pygments_required
+@register.filter(name='colorize_table')
+@stringfilter
+def colorize_table(value, arg=None):
+    try:
+        return mark_safe(highlight(value, get_lexer(value, arg), HtmlFormatter(linenos='table')))
+    except ClassNotFound:
+        return value
+
+
+@pygments_required
+@register.filter(name='colorize_noclasses')
+@stringfilter
+def colorize_noclasses(value, arg=None):
+    try:
+        return mark_safe(highlight(value, get_lexer(value, arg), HtmlFormatter(noclasses=True)))
+    except ClassNotFound:
+        return value
diff --git a/gestao_raul/Lib/site-packages/django_extensions/templatetags/widont.py b/gestao_raul/Lib/site-packages/django_extensions/templatetags/widont.py
new file mode 100644
index 0000000..8bc9315
--- /dev/null
+++ b/gestao_raul/Lib/site-packages/django_extensions/templatetags/widont.py
@@ -0,0 +1,64 @@
+# -*- coding: utf-8 -*-
+import re
+
+from django.template import Library
+from django.utils.encoding import force_str
+
+
+register = Library()
+re_widont = re.compile(r'\s+(\S+\s*)$')
+re_widont_html = re.compile(r'([^<>\s])\s+([^<>\s]+\s*)(]*>|$)', re.IGNORECASE)
+
+
+@register.filter
+def widont(value, count=1):
+    """
+    Add an HTML non-breaking space between the final two words of the string to
+    avoid "widowed" words.
+
+    Examples:
+
+    >>> print(widont('Test   me   out'))
+    Test   me out
+
+    >>> print("'",widont('It works with trailing spaces too  '), "'")
+    ' It works with trailing spaces too   '
+
+    >>> print(widont('NoEffect'))
+    NoEffect
+    """
+    def replace(matchobj):
+        return force_str(' %s' % matchobj.group(1))
+    for i in range(count):
+        value = re_widont.sub(replace, force_str(value))
+    return value
+
+
+@register.filter
+def widont_html(value):
+    """
+    Add an HTML non-breaking space between the final two words at the end of
+    (and in sentences just outside of) block level tags to avoid "widowed"
+    words.
+
+    Examples:
+
+    >>> print(widont_html('

Here is a simple example

Single

')) +

Here is a simple example

Single

+ + >>> print(widont_html('

test me
out

Ok?

Not in a p

and this

')) +

test me
out

Ok?

Not in a p

and this

+ + >>> print(widont_html('leading text

test me out

trailing text')) + leading text

test me out

trailing text + """ + def replace(matchobj): + return force_str('%s %s%s' % matchobj.groups()) + return re_widont_html.sub(replace, force_str(value)) + + +if __name__ == "__main__": + def _test(): + import doctest + doctest.testmod() + _test() diff --git a/gestao_raul/Lib/site-packages/django_extensions/utils/__init__.py b/gestao_raul/Lib/site-packages/django_extensions/utils/__init__.py new file mode 100644 index 0000000..a5923e8 --- /dev/null +++ b/gestao_raul/Lib/site-packages/django_extensions/utils/__init__.py @@ -0,0 +1,2 @@ +# -*- coding: utf-8 -*- +from .internal_ips import InternalIPS # NOQA diff --git a/gestao_raul/Lib/site-packages/django_extensions/utils/__pycache__/__init__.cpython-310.pyc b/gestao_raul/Lib/site-packages/django_extensions/utils/__pycache__/__init__.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..512ce6882ec2c52b695640efc38ec9c3526111e7 GIT binary patch literal 237 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 L;h-hM{O|t*gw5BB literal 0 HcmV?d00001 diff --git a/gestao_raul/Lib/site-packages/django_extensions/utils/__pycache__/internal_ips.cpython-310.pyc b/gestao_raul/Lib/site-packages/django_extensions/utils/__pycache__/internal_ips.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..df26d5e766fb2df3e8ccc1b36ca8a02a0f6d2e03 GIT binary patch literal 2661 zcma)8TW=IM6dupaZe}+dAP}M6kX)&%ScwLn`ml-+5TK2O(kMV5R*M{G>`k1^jtAS5 zkkul!OL*YO6+OJaS7oEoU1O7|vqfVF}qS|8>a*n|)ibrvgO?86wLpEiti z9r`+S+ks)v8+ptdk^A1W#h1azJMdl+=f4U@!E5rG5bt?y}`Me zSE&iLLFBD7dF-^AK!U5Cj2k|f!PueK(QpmXYR|zNk9mXcY;09v2B&5kP@c_q0n#bx z6%7^uW4kBJs-f&q{AH<{5Cagij`BFxMxX{H0vsF1bWZ#@q&H~74TRRwzB1O0(L`OF z?V3USiaO6SnTn#JvI!-Mrpg$YcC5`|QAhn!w8J8_GU*r5lt$fF)y`sJa`}yCS|Ijs zvEJ!DwbIz$u}qxq-PdtGkg2o1?d^LH)_Z6Z*Ua!d={-`rJqvQb$#{IoVW%e!fRLKW z7fz-YFt#^yrxJT}3IkKXjO?U{7*nZoj9ozrpyGNnA}b{HFOl%=aHWzutJ9;g567kr z>4d$c&~=zNpv(x!@)GEA-~*8wFZ~f2`A42vh7tmFc^;L8A{hQU!+T1NtV8dnm8fHC zjl*2!k&!_Dv_p4xo|s(j>|pYoGv)jaRgkxIAP2kBV1V5|EL1$AR#pP~coE=`om8uiUG>=<1v(} zS;INPTf!N^!~tZdJ}^d`F$krD1L^j)K;L61c2b;EcKCJ0 z20F0-7)CkNmOS0(b|358msq@KlHZWA^T>^g$3PrB&lo-u7EO-Acj+=d@ScA&x~xq6 z6aE?0odc*kr{F6T@?f|=^R+XLw%eEB5oRqELkdeQc+%8x(A+k04tR?DLcYt{p2N7d&TW3T@42PCJ0&2aluEIW!u!Ek~`W9@Sg*a=%?GF2))P pMT~E;UFEy6L8g_Z(0qn76!UNLi)d|Z{%xe3MW|X(@ZkLj{sCfLrtAO! literal 0 HcmV?d00001 diff --git a/gestao_raul/Lib/site-packages/django_extensions/utils/deprecation.py b/gestao_raul/Lib/site-packages/django_extensions/utils/deprecation.py new file mode 100644 index 0000000..e5542c6 --- /dev/null +++ b/gestao_raul/Lib/site-packages/django_extensions/utils/deprecation.py @@ -0,0 +1,8 @@ +# -*- coding: utf-8 -*- + +class MarkedForDeprecationWarning(DeprecationWarning): + pass + + +class RemovedInNextVersionWarning(DeprecationWarning): + pass diff --git a/gestao_raul/Lib/site-packages/django_extensions/utils/dia2django.py b/gestao_raul/Lib/site-packages/django_extensions/utils/dia2django.py new file mode 100644 index 0000000..d2e5ba3 --- /dev/null +++ b/gestao_raul/Lib/site-packages/django_extensions/utils/dia2django.py @@ -0,0 +1,217 @@ +# -*- coding: utf-8 -*- +""" +Author Igor Támara igor@tamarapatino.org +Use this little program as you wish, if you +include it in your work, let others know you +are using it preserving this note, you have +the right to make derivative works, Use it +at your own risk. +Tested to work on(etch testing 13-08-2007): + Python 2.4.4 (#2, Jul 17 2007, 11:56:54) + [GCC 4.1.3 20070629 (prerelease) (Debian 4.1.2-13)] on linux2 +""" + +import codecs +import gzip +import re +import sys +from xml.dom.minidom import Node, parseString + +dependclasses = ["User", "Group", "Permission", "Message"] + +# Type dictionary translation types SQL -> Django +tsd = { + "text": "TextField", + "date": "DateField", + "varchar": "CharField", + "int": "IntegerField", + "float": "FloatField", + "serial": "AutoField", + "boolean": "BooleanField", + "numeric": "FloatField", + "timestamp": "DateTimeField", + "bigint": "IntegerField", + "datetime": "DateTimeField", + "time": "TimeField", + "bool": "BooleanField", +} + +# convert varchar -> CharField +v2c = re.compile(r'varchar\((\d+)\)') + + +def find_index(fks, id_): + """ + Look for the id on fks, fks is an array of arrays, each array has on [1] + the id of the class in a dia diagram. When not present returns None, else + it returns the position of the class with id on fks + """ + for i, _ in fks.items(): + if fks[i][1] == id_: + return i + return None + + +def addparentstofks(rels, fks): + """ + Get a list of relations, between parents and sons and a dict of + clases named in dia, and modifies the fks to add the parent as fk to get + order on the output of classes and replaces the base class of the son, to + put the class parent name. + """ + for j in rels: + son = find_index(fks, j[1]) + parent = find_index(fks, j[0]) + fks[son][2] = fks[son][2].replace("models.Model", parent) + if parent not in fks[son][0]: + fks[son][0].append(parent) + + +def dia2django(archivo): + models_txt = '' + f = codecs.open(archivo, "rb") + # dia files are gzipped + data = gzip.GzipFile(fileobj=f).read() + ppal = parseString(data) + # diagram -> layer -> object -> UML - Class -> name, (attribs : composite -> name,type) + datos = ppal.getElementsByTagName("dia:diagram")[0].getElementsByTagName("dia:layer")[0].getElementsByTagName("dia:object") + clases = {} + herit = [] + imports = str("") + for i in datos: + # Look for the classes + if i.getAttribute("type") == "UML - Class": + myid = i.getAttribute("id") + for j in i.childNodes: + if j.nodeType == Node.ELEMENT_NODE and j.hasAttributes(): + if j.getAttribute("name") == "name": + actclas = j.getElementsByTagName("dia:string")[0].childNodes[0].data[1:-1] + myname = "\nclass %s(models.Model) :\n" % actclas + clases[actclas] = [[], myid, myname, 0] + if j.getAttribute("name") == "attributes": + for ll in j.getElementsByTagName("dia:composite"): + if ll.getAttribute("type") == "umlattribute": + # Look for the attribute name and type + for k in ll.getElementsByTagName("dia:attribute"): + if k.getAttribute("name") == "name": + nc = k.getElementsByTagName("dia:string")[0].childNodes[0].data[1:-1] + elif k.getAttribute("name") == "type": + tc = k.getElementsByTagName("dia:string")[0].childNodes[0].data[1:-1] + elif k.getAttribute("name") == "value": + val = k.getElementsByTagName("dia:string")[0].childNodes[0].data[1:-1] + if val == '##': + val = '' + elif k.getAttribute("name") == "visibility" and k.getElementsByTagName("dia:enum")[0].getAttribute("val") == "2": + if tc.replace(" ", "").lower().startswith("manytomanyfield("): + # If we find a class not in our model that is marked as being to another model + newc = tc.replace(" ", "")[16:-1] + if dependclasses.count(newc) == 0: + dependclasses.append(newc) + if tc.replace(" ", "").lower().startswith("foreignkey("): + # If we find a class not in our model that is marked as being to another model + newc = tc.replace(" ", "")[11:-1] + if dependclasses.count(newc) == 0: + dependclasses.append(newc) + + # Mapping SQL types to Django + varch = v2c.search(tc) + if tc.replace(" ", "").startswith("ManyToManyField("): + myfor = tc.replace(" ", "")[16:-1] + if actclas == myfor: + # In case of a recursive type, we use 'self' + tc = tc.replace(myfor, "'self'") + elif clases[actclas][0].count(myfor) == 0: + # Adding related class + if myfor not in dependclasses: + # In case we are using Auth classes or external via protected dia visibility + clases[actclas][0].append(myfor) + tc = "models." + tc + if len(val) > 0: + tc = tc.replace(")", "," + val + ")") + elif tc.find("Field") != -1: + if tc.count("()") > 0 and len(val) > 0: + tc = "models.%s" % tc.replace(")", "," + val + ")") + else: + tc = "models.%s(%s)" % (tc, val) + elif tc.replace(" ", "").startswith("ForeignKey("): + myfor = tc.replace(" ", "")[11:-1] + if actclas == myfor: + # In case of a recursive type, we use 'self' + tc = tc.replace(myfor, "'self'") + elif clases[actclas][0].count(myfor) == 0: + # Adding foreign classes + if myfor not in dependclasses: + # In case we are using Auth classes + clases[actclas][0].append(myfor) + tc = "models." + tc + if len(val) > 0: + tc = tc.replace(")", "," + val + ")") + elif varch is None: + tc = "models." + tsd[tc.strip().lower()] + "(" + val + ")" + else: + tc = "models.CharField(max_length=" + varch.group(1) + ")" + if len(val) > 0: + tc = tc.replace(")", ", " + val + " )") + if not (nc == "id" and tc == "AutoField()"): + clases[actclas][2] += " %s = %s\n" % (nc, tc) + elif i.getAttribute("type") == "UML - Generalization": + mycons = ['A', 'A'] + a = i.getElementsByTagName("dia:connection") + for j in a: + if len(j.getAttribute("to")): + mycons[int(j.getAttribute("handle"))] = j.getAttribute("to") + print(mycons) + if 'A' not in mycons: + herit.append(mycons) + elif i.getAttribute("type") == "UML - SmallPackage": + a = i.getElementsByTagName("dia:string") + for j in a: + if len(j.childNodes[0].data[1:-1]): + imports += str("from %s.models import *" % j.childNodes[0].data[1:-1]) + + addparentstofks(herit, clases) + # Ordering the appearance of classes + # First we make a list of the classes each classs is related to. + ordered = [] + for j, k in clases.items(): + k[2] += "\n def __str__(self):\n return u\"\"\n" + for fk in k[0]: + if fk not in dependclasses: + clases[fk][3] += 1 + ordered.append([j] + k) + + i = 0 + while i < len(ordered): + mark = i + j = i + 1 + while j < len(ordered): + if ordered[i][0] in ordered[j][1]: + mark = j + j += 1 + if mark == i: + i += 1 + else: + # swap %s in %s" % ( ordered[i] , ordered[mark]) to make ordered[i] to be at the end + if ordered[i][0] in ordered[mark][1] and ordered[mark][0] in ordered[i][1]: + # Resolving simplistic circular ForeignKeys + print("Not able to resolve circular ForeignKeys between %s and %s" % (ordered[i][1], ordered[mark][0])) + break + a = ordered[i] + ordered[i] = ordered[mark] + ordered[mark] = a + if i == len(ordered) - 1: + break + ordered.reverse() + if imports: + models_txt = str(imports) + for i in ordered: + models_txt += '%s\n' % str(i[3]) + + return models_txt + + +if __name__ == '__main__': + if len(sys.argv) == 2: + dia2django(sys.argv[1]) + else: + print(" Use:\n \n " + sys.argv[0] + " diagram.dia\n\n") diff --git a/gestao_raul/Lib/site-packages/django_extensions/utils/internal_ips.py b/gestao_raul/Lib/site-packages/django_extensions/utils/internal_ips.py new file mode 100644 index 0000000..b72e713 --- /dev/null +++ b/gestao_raul/Lib/site-packages/django_extensions/utils/internal_ips.py @@ -0,0 +1,70 @@ +# -*- coding: utf-8 -*- +from collections.abc import Container +import ipaddress +import itertools + + +class InternalIPS(Container): + """ + InternalIPS allows to specify CIDRs for INTERNAL_IPS. + + It takes an iterable of ip addresses or ranges. + + Inspiration taken from netaddr.IPSet, please use it if you can since + it support more advanced features like optimizing ranges and lookups. + """ + + __slots__ = ["_cidrs"] + + def __init__(self, iterable, sort_by_size=False): + """ + Constructor. + + :param iterable: (optional) an iterable containing IP addresses and + subnets. + + :param sort_by_size: sorts internal list according to size of ip + ranges, largest first. + """ + self._cidrs = [] + for address in iterable: + self._cidrs.append(ipaddress.ip_network(address)) + + if sort_by_size: + self._cidrs = sorted(self._cidrs) + + def __contains__(self, address): + """ + :param ip: An IP address or subnet. + + :return: ``True`` if IP address or subnet is a member of this InternalIPS set. + """ + address = ipaddress.ip_address(address) + for cidr in self._cidrs: + if address in cidr: + return True + return False + + def __hash__(self): + """ + Raises ``TypeError`` if this method is called. + """ + raise TypeError('InternalIPS containers are unhashable!') + + def __len__(self): + """ + :return: the cardinality of this InternalIPS set. + """ + return sum(cidr.num_addresses for cidr in self._cidrs) + + def __iter__(self): + """ + :return: an iterator over the IP addresses within this IP set. + """ + return itertools.chain(*self._cidrs) + + def iter_cidrs(self): + """ + :return: an iterator over individual IP subnets within this IP set. + """ + return sorted(self._cidrs) diff --git a/gestao_raul/Lib/site-packages/django_extensions/validators.py b/gestao_raul/Lib/site-packages/django_extensions/validators.py new file mode 100644 index 0000000..41c1dcc --- /dev/null +++ b/gestao_raul/Lib/site-packages/django_extensions/validators.py @@ -0,0 +1,110 @@ +# -*- coding: utf-8 -*- +import unicodedata +import binascii + +from django.core.exceptions import ValidationError +from django.utils.deconstruct import deconstructible +from django.utils.encoding import force_str +from django.utils.translation import gettext_lazy as _ + + +@deconstructible +class NoControlCharactersValidator: + message = _("Control Characters like new lines or tabs are not allowed.") + code = "no_control_characters" + whitelist = None + + def __init__(self, message=None, code=None, whitelist=None): + if message: + self.message = message + if code: + self.code = code + if whitelist: + self.whitelist = whitelist + + def __call__(self, value): + value = force_str(value) + whitelist = self.whitelist + category = unicodedata.category + for character in value: + if whitelist and character in whitelist: + continue + if category(character)[0] == "C": + params = {'value': value, 'whitelist': whitelist} + raise ValidationError(self.message, code=self.code, params=params) + + def __eq__(self, other): + return ( + isinstance(other, NoControlCharactersValidator) and + (self.whitelist == other.whitelist) and + (self.message == other.message) and + (self.code == other.code) + ) + + +@deconstructible +class NoWhitespaceValidator: + message = _("Leading and Trailing whitespaces are not allowed.") + code = "no_whitespace" + + def __init__(self, message=None, code=None, whitelist=None): + if message: + self.message = message + if code: + self.code = code + + def __call__(self, value): + value = force_str(value) + if value != value.strip(): + params = {'value': value} + raise ValidationError(self.message, code=self.code, params=params) + + def __eq__(self, other): + return ( + isinstance(other, NoWhitespaceValidator) and + (self.message == other.message) and + (self.code == other.code) + ) + + +@deconstructible +class HexValidator: + messages = { + 'invalid': _("Only a hex string is allowed."), + 'length': _("Invalid length. Must be %(length)d characters."), + 'min_length': _("Ensure that there are more than %(min)s characters."), + 'max_length': _("Ensure that there are no more than %(max)s characters."), + } + code = "hex_only" + + def __init__(self, length=None, min_length=None, max_length=None, message=None, code=None): + self.length = length + self.min_length = min_length + self.max_length = max_length + if message: + self.message = message + else: + self.message = self.messages['invalid'] + if code: + self.code = code + + def __call__(self, value): + value = force_str(value) + if self.length and len(value) != self.length: + raise ValidationError(self.messages['length'], code='hex_only_length', params={'length': self.length}) + if self.min_length and len(value) < self.min_length: + raise ValidationError(self.messages['min_length'], code='hex_only_min_length', params={'min': self.min_length}) + if self.max_length and len(value) > self.max_length: + raise ValidationError(self.messages['max_length'], code='hex_only_max_length', params={'max': self.max_length}) + + try: + binascii.unhexlify(value) + except (TypeError, binascii.Error): + raise ValidationError(self.messages['invalid'], code='hex_only') + + def __eq__(self, other): + return ( + isinstance(other, HexValidator) and + (self.message == other.message) and + (self.code == other.code) + ) diff --git a/gestao_raul/Lib/site-packages/django_pwa-2.0.1.dist-info/INSTALLER b/gestao_raul/Lib/site-packages/django_pwa-2.0.1.dist-info/INSTALLER new file mode 100644 index 0000000..a1b589e --- /dev/null +++ b/gestao_raul/Lib/site-packages/django_pwa-2.0.1.dist-info/INSTALLER @@ -0,0 +1 @@ +pip diff --git a/gestao_raul/Lib/site-packages/django_pwa-2.0.1.dist-info/METADATA b/gestao_raul/Lib/site-packages/django_pwa-2.0.1.dist-info/METADATA new file mode 100644 index 0000000..3ae1865 --- /dev/null +++ b/gestao_raul/Lib/site-packages/django_pwa-2.0.1.dist-info/METADATA @@ -0,0 +1,275 @@ +Metadata-Version: 2.3 +Name: django-pwa +Version: 2.0.1 +Summary: A Django app to include a manifest.json and Service Worker instance to enable progressive web app behavior +Project-URL: Repository, http://github.com/silviolleite/django-pwa +Author-email: Silvio Luis +Maintainer-email: Christian Hartung +License: MIT License (MIT) + + Copyright (c) 2014 Scott Vitale, Silvio Luis 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. +License-File: LICENSE +Classifier: Environment :: Web Environment +Classifier: Framework :: Django +Classifier: Framework :: Django :: 3.2 +Classifier: Framework :: Django :: 4.0 +Classifier: Framework :: Django :: 4.1 +Classifier: Framework :: Django :: 4.2 +Classifier: Framework :: Django :: 5.0 +Classifier: Intended Audience :: Developers +Classifier: License :: OSI Approved :: MIT License +Classifier: Operating System :: OS Independent +Classifier: Programming Language :: Python +Classifier: Programming Language :: Python :: 3 +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: Topic :: Internet :: WWW/HTTP +Classifier: Topic :: Internet :: WWW/HTTP :: Dynamic Content +Requires-Python: >=3.8 +Requires-Dist: django>=3.2 +Description-Content-Type: text/markdown + +django-pwa +===== +[![Build Status](https://travis-ci.org/silviolleite/django-pwa.svg)](https://travis-ci.org/silviolleite/django-pwa) +[![Maintainability](https://api.codeclimate.com/v1/badges/246542ea921058c4f76f/maintainability)](https://codeclimate.com/github/silviolleite/django-pwa/maintainability) +[![codecov](https://codecov.io/gh/silviolleite/django-pwa/branch/master/graph/badge.svg)](https://codecov.io/gh/silviolleite/django-pwa) +[![PyPI - Downloads](https://img.shields.io/pypi/dm/django-pwa.svg)](https://pypi.org/project/django-pwa/) +[![PyPI - Downloads](https://img.shields.io/pypi/v/django-pwa.svg)](https://pypi.org/project/django-pwa) +[![PyPI - Downloads](https://img.shields.io/pypi/djversions/django-pwa.svg)](https://pypi.org/project/django-pwa) + +This Django app turns your project into a [progressive web app](https://developers.google.com/web/progressive-web-apps/). Navigating to your site on an Android phone will prompt you to add the app to your home screen. + +![Prompt for install](https://github.com/silviolleite/django-pwa/raw/master/images/screenshot1.png) + +Launching the app from your home screen will display your app [without browser chrome](https://github.com/silviolleite/django-pwa/raw/master/images/screenshot2.png). As such, it's critical that your application provides all navigation within the HTML (no reliance on the browser back or forward button). + +Requirements +===== +Progressive Web Apps require HTTPS unless being served from localhost. If you're not already using HTTPS on your site, check out [Let's Encrypt](https://letsencrypt.org/) and [ZeroSSL](https://zerossl.com/). + +Installation +===== +Install from PyPI: + +``` +pip install django-pwa +``` + +Configuration +===== +Add `pwa` to your list of `INSTALLED_APPS` in settings.py: + +```python +INSTALLED_APPS = [ + ... + 'pwa', + ... +] +``` +Define STATICFILES_DIRS for your custom PWA_APP_ICONS +```python +STATICFILES_DIRS = [ + os.path.join(BASE_DIR, 'static'), +] +``` + +Configure your app name, description, icons, splash screen images, screenshots and shortcuts in settings.py: +```python + +PWA_APP_NAME = 'My App' +PWA_APP_DESCRIPTION = "My app description" +PWA_APP_THEME_COLOR = '#0A0302' +PWA_APP_BACKGROUND_COLOR = '#ffffff' +PWA_APP_DISPLAY = 'standalone' +PWA_APP_SCOPE = '/' +PWA_APP_ORIENTATION = 'any' +PWA_APP_START_URL = '/' +PWA_APP_STATUS_BAR_COLOR = 'default' +PWA_APP_ICONS = [ + { + 'src': '/static/images/my_app_icon.png', + 'sizes': '160x160' + } +] +PWA_APP_ICONS_APPLE = [ + { + 'src': '/static/images/my_apple_icon.png', + 'sizes': '160x160' + } +] +PWA_APP_SPLASH_SCREEN = [ + { + 'src': '/static/images/icons/splash-640x1136.png', + 'media': '(device-width: 320px) and (device-height: 568px) and (-webkit-device-pixel-ratio: 2)' + } +] +PWA_APP_DIR = 'ltr' +PWA_APP_LANG = 'en-US' +PWA_APP_SHORTCUTS = [ + { + 'name': 'Shortcut', + 'url': '/target', + 'description': 'Shortcut to a page in my application' + } +] +PWA_APP_SCREENSHOTS = [ + { + 'src': '/static/images/icons/splash-750x1334.png', + 'sizes': '750x1334', + "type": "image/png" + } +] + +``` +#### Show console.log +Set the `PWA_APP_DEBUG_MODE = False` to disable the the `console.log` on browser. + +All settings are optional, and the app will work fine with its internal defaults. Highly recommend setting at least `PWA_APP_NAME`, `PWA_APP_DESCRIPTION`, `PWA_APP_ICONS` and `PWA_APP_SPLASH_SCREEN`. +In order to not use one of the internal defaults, a setting can be set to an empty string or list, whichever one is applicable. + +Add the progressive web app URLs to urls.py: +```python +from django.urls import url, include + +urlpatterns = [ + ... + url('', include('pwa.urls')), # You MUST use an empty string as the URL prefix + ... +] +``` + +Inject the required meta tags in your base.html (or wherever your HTML <head> is defined): +```html +{% load pwa %} + + + ... + {% progressive_web_app_meta %} + ... + +``` + +Troubleshooting +===== +While running the Django test server: + +1. Verify that `/manifest.json` is being served +2. Verify that `/serviceworker.js` is being served +3. Verify that `/offline` is being served +4. Use the Application tab in the Chrome Developer Tools to verify the progressive web app is configured correctly. +5. Use the "Add to homescreen" link on the Application Tab to verify you can add the app successfully. + + +The Service Worker +===== +By default, the service worker implemented by this app is: +```js +// Base Service Worker implementation. To use your own Service Worker, set the PWA_SERVICE_WORKER_PATH variable in settings.py + +var staticCacheName = "django-pwa-v" + new Date().getTime(); +var filesToCache = [ + '/offline', + '/css/django-pwa-app.css', + '/images/icons/icon-72x72.png', + '/images/icons/icon-96x96.png', + '/images/icons/icon-128x128.png', + '/images/icons/icon-144x144.png', + '/images/icons/icon-152x152.png', + '/images/icons/icon-192x192.png', + '/images/icons/icon-384x384.png', + '/images/icons/icon-512x512.png', + '/static/images/icons/splash-640x1136.png', + '/static/images/icons/splash-750x1334.png', + '/static/images/icons/splash-1242x2208.png', + '/static/images/icons/splash-1125x2436.png', + '/static/images/icons/splash-828x1792.png', + '/static/images/icons/splash-1242x2688.png', + '/static/images/icons/splash-1536x2048.png', + '/static/images/icons/splash-1668x2224.png', + '/static/images/icons/splash-1668x2388.png', + '/static/images/icons/splash-2048x2732.png' +]; + +// Cache on install +self.addEventListener("install", event => { + this.skipWaiting(); + event.waitUntil( + caches.open(staticCacheName) + .then(cache => { + return cache.addAll(filesToCache); + }) + ) +}); + +// Clear cache on activate +self.addEventListener('activate', event => { + event.waitUntil( + caches.keys().then(cacheNames => { + return Promise.all( + cacheNames + .filter(cacheName => (cacheName.startsWith("django-pwa-"))) + .filter(cacheName => (cacheName !== staticCacheName)) + .map(cacheName => caches.delete(cacheName)) + ); + }) + ); +}); + +// Serve from Cache +self.addEventListener("fetch", event => { + event.respondWith( + caches.match(event.request) + .then(response => { + return response || fetch(event.request); + }) + .catch(() => { + return caches.match('offline'); + }) + ) +}); +``` + +Adding Your Own Service Worker +===== +To add service worker functionality, you'll want to create a `serviceworker.js` or similarly named template in a template directory, and then point at it using the PWA_SERVICE_WORKER_PATH variable (PWA_APP_FETCH_URL is passed through). + +```python +PWA_SERVICE_WORKER_PATH = os.path.join(BASE_DIR, 'my_app', 'serviceworker.js') + +``` + +The offline view +===== +By default, the offline view is implemented in `templates/offline.html` +You can overwrite it in a template directory if you continue using the default `serviceworker.js`. + + +Feedback +===== +I welcome your feedback and pull requests. Enjoy! + +License +===== +All files in this repository are distributed under the MIT license. diff --git a/gestao_raul/Lib/site-packages/django_pwa-2.0.1.dist-info/RECORD b/gestao_raul/Lib/site-packages/django_pwa-2.0.1.dist-info/RECORD new file mode 100644 index 0000000..bc11102 --- /dev/null +++ b/gestao_raul/Lib/site-packages/django_pwa-2.0.1.dist-info/RECORD @@ -0,0 +1,49 @@ +django_pwa-2.0.1.dist-info/INSTALLER,sha256=zuuue4knoyJ-UwPPXg8fezS7VCrXJQrAP7zeNuwvFQg,4 +django_pwa-2.0.1.dist-info/METADATA,sha256=ISE2fpDbCTgoOUzBFSzcxODk5K51ie-nfVFlSUTeBPc,9885 +django_pwa-2.0.1.dist-info/RECORD,, +django_pwa-2.0.1.dist-info/REQUESTED,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +django_pwa-2.0.1.dist-info/WHEEL,sha256=1yFddiXMmvYK7QYTqtRNtX66WJ0Mz8PYEiEUoOUUxRY,87 +django_pwa-2.0.1.dist-info/licenses/LICENSE,sha256=yYDcgK-HiXaa6o3NojUBv6WgnbSibPxWGBNGfxyPYis,1105 +pwa/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +pwa/__pycache__/__init__.cpython-310.pyc,, +pwa/__pycache__/app_settings.cpython-310.pyc,, +pwa/__pycache__/apps.cpython-310.pyc,, +pwa/__pycache__/urls.cpython-310.pyc,, +pwa/__pycache__/views.cpython-310.pyc,, +pwa/app_settings.py,sha256=BfoXQO5W3B3t2g1Wy0dRXNk5bBUr_CDWVA41xrHLD3c,4712 +pwa/apps.py,sha256=iHOv7tkAmAN6v8cg6cCZk734gNxWKtqENUwgd2YbgG0,81 +pwa/static/css/django-pwa-app.css,sha256=PDZ_MhG6yxGu_Ymxz9_foRv9lPNkY1DbjPzgnpTQ1VI,116158 +pwa/static/fonts/bootstrap/glyphicons-halflings-regular.eot,sha256=E2NNqH2eI_jD7ZEIzhck0YOjmtBy5z4bPYy_ZG0tBAc,20127 +pwa/static/fonts/bootstrap/glyphicons-halflings-regular.svg,sha256=2A6hAfGjSEkUasGP2v2vdGuATNCAxBf2WpzM0bXk8w4,108737 +pwa/static/fonts/bootstrap/glyphicons-halflings-regular.ttf,sha256=45UEQJN1fYKvyxOJV9BqHqk2G9zwtELQahioBRr1dFY,45404 +pwa/static/fonts/bootstrap/glyphicons-halflings-regular.woff,sha256=omOU9-3hAMoRjv8u2ghZYnWpg5uVnCJuFUOVV6WoB0I,23424 +pwa/static/fonts/bootstrap/glyphicons-halflings-regular.woff2,sha256=_hhdEaSWdokNR7t4MxKgzaWkTEA5IUCU55V7TAQO8Rw,18028 +pwa/static/images/icons/Thumbs.db,sha256=rgJJWTsLONNb6saUcWQQHlrtajOZZap8lmWdxnkGpBw,76288 +pwa/static/images/icons/icon-128x128.png,sha256=Ri0POfYnR4LDrYwHNav8AUlKpy8ot6ucrJDUMAEuxj4,6754 +pwa/static/images/icons/icon-144x144.png,sha256=ZW-fm1mhJqlfDeJmmSP-5G56ZlimlIiluhdELbVdJoY,7672 +pwa/static/images/icons/icon-152x152.png,sha256=Sir803xVBXJzVfS_0maz6A8ckhpBDv3Gd3RQhZ-nl8I,8134 +pwa/static/images/icons/icon-192x192.png,sha256=1Fj9NS0DZOEjX-E3FxqmZ83w2cMeUyXzT0O5kP5gHQI,10580 +pwa/static/images/icons/icon-384x384.png,sha256=OaOvQxOsM01ZVPowVZ9lYkeX1AJrGGiJPOZx9e2rea0,24415 +pwa/static/images/icons/icon-512x512.png,sha256=GCRzC7VC1_AMbpV9wJH-cmH_LdzHGgwTz03YJf0EWs8,22508 +pwa/static/images/icons/icon-72x72.png,sha256=5Ecee0qAyZV-u0zceXBoA2DRUWquB4goOP_s-3OAY0w,3252 +pwa/static/images/icons/icon-96x96.png,sha256=nJGAnztCaWRkhuLzL5ci-68WAHRXvmj0uIbUFEvzjsQ,4693 +pwa/static/images/icons/splash-1125x2436.png,sha256=FnPMbkgc9pWrmZVchFQ4X7ziyUYxt2Uq98x3S96GSl0,36047 +pwa/static/images/icons/splash-1242x2208.png,sha256=A_uc9O2Jv3ki4vkDZ2mu_mQ_IoaHpE1p1Sg1uzas9uU,30134 +pwa/static/images/icons/splash-1242x2688.png,sha256=cBamXXHsn7zcCEWhg-suu-JuHT8D6O1FkSTfgm_ShAw,33765 +pwa/static/images/icons/splash-1536x2048.png,sha256=9RiE2U-mQrwWqsnYemqx5SFs2qc1Livt3AJeH7myGMg,31551 +pwa/static/images/icons/splash-1668x2224.png,sha256=9QdkCe_vpSr8wsLc8OFw5FTlLYIpVPFgm66QgAqqWKc,34491 +pwa/static/images/icons/splash-1668x2388.png,sha256=AkX-MbBFQbJI-B6v7uVB6kP-M2osRwAj5hpr133MH4Q,35903 +pwa/static/images/icons/splash-2048x2732.png,sha256=JDfkkTJuZ7Xmjm43AaPqL_LOragxfDk2dxARbRZ8WMc,43341 +pwa/static/images/icons/splash-640x1136.png,sha256=vjk_tPUHLSHPGAyp5PdstcUkcuazpwv7qRiyF9K76SE,19254 +pwa/static/images/icons/splash-750x1334.png,sha256=ObaMp62i2lHlZ_kYq-mBrd5O4RMy96JqIfsDAfnNtvA,20970 +pwa/static/images/icons/splash-828x1792.png,sha256=AZpR9Kg9cgQiXdGtdTa9DMdPhVCeh7qAtiAtzrdAatM,24221 +pwa/templates/manifest.json,sha256=G47XzduUwuIrR5DgSeuquYLOV4JxcJ7CxlyufxJptIw,645 +pwa/templates/offline.html,sha256=JccdCcXZvQ7ZiqqRExg6cocAUjL8XGzfr9Ji2Bktpi0,290 +pwa/templates/pwa.html,sha256=jczQFJ9q28tXMhK9n68Kfp5G9EtmmXcppjxay804vMQ,2089 +pwa/templates/serviceworker.js,sha256=qeeOkGMiYZvsaMA5r5GHuBk1hKEUJ2FRu5DD3Ig2wmU,2142 +pwa/templatetags/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +pwa/templatetags/__pycache__/__init__.cpython-310.pyc,, +pwa/templatetags/__pycache__/pwa.cpython-310.pyc,, +pwa/templatetags/pwa.py,sha256=FQX1ziBislNwoLQa0B9_CoJFwfOfZdXwxdnnMggzP94,736 +pwa/urls.py,sha256=THpVfpUIiilE9vu3IkTlEcaZF9owjKAvUsaM9FwWIao,352 +pwa/views.py,sha256=_J8yy_Eh3yCljGC50a8QAge9ASdaJDemuG-K2PsKrtg,732 diff --git a/gestao_raul/Lib/site-packages/django_pwa-2.0.1.dist-info/REQUESTED b/gestao_raul/Lib/site-packages/django_pwa-2.0.1.dist-info/REQUESTED new file mode 100644 index 0000000..e69de29 diff --git a/gestao_raul/Lib/site-packages/django_pwa-2.0.1.dist-info/WHEEL b/gestao_raul/Lib/site-packages/django_pwa-2.0.1.dist-info/WHEEL new file mode 100644 index 0000000..cdd68a4 --- /dev/null +++ b/gestao_raul/Lib/site-packages/django_pwa-2.0.1.dist-info/WHEEL @@ -0,0 +1,4 @@ +Wheel-Version: 1.0 +Generator: hatchling 1.25.0 +Root-Is-Purelib: true +Tag: py3-none-any diff --git a/gestao_raul/Lib/site-packages/django_pwa-2.0.1.dist-info/licenses/LICENSE b/gestao_raul/Lib/site-packages/django_pwa-2.0.1.dist-info/licenses/LICENSE new file mode 100644 index 0000000..9366bfa --- /dev/null +++ b/gestao_raul/Lib/site-packages/django_pwa-2.0.1.dist-info/licenses/LICENSE @@ -0,0 +1,21 @@ +MIT License (MIT) + +Copyright (c) 2014 Scott Vitale, Silvio Luis 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. diff --git a/gestao_raul/Lib/site-packages/markupsafe/__init__.py b/gestao_raul/Lib/site-packages/markupsafe/__init__.py new file mode 100644 index 0000000..fee8dc7 --- /dev/null +++ b/gestao_raul/Lib/site-packages/markupsafe/__init__.py @@ -0,0 +1,395 @@ +from __future__ import annotations + +import collections.abc as cabc +import string +import typing as t + +try: + from ._speedups import _escape_inner +except ImportError: + from ._native import _escape_inner + +if t.TYPE_CHECKING: + import typing_extensions as te + + +class _HasHTML(t.Protocol): + def __html__(self, /) -> str: ... + + +class _TPEscape(t.Protocol): + def __call__(self, s: t.Any, /) -> Markup: ... + + +def escape(s: t.Any, /) -> Markup: + """Replace the characters ``&``, ``<``, ``>``, ``'``, and ``"`` in + the string with HTML-safe sequences. Use this if you need to display + text that might contain such characters in HTML. + + If the object has an ``__html__`` method, it is called and the + return value is assumed to already be safe for HTML. + + :param s: An object to be converted to a string and escaped. + :return: A :class:`Markup` string with the escaped text. + """ + # If the object is already a plain string, skip __html__ check and string + # conversion. This is the most common use case. + # Use type(s) instead of s.__class__ because a proxy object may be reporting + # the __class__ of the proxied value. + if type(s) is str: + return Markup(_escape_inner(s)) + + if hasattr(s, "__html__"): + return Markup(s.__html__()) + + return Markup(_escape_inner(str(s))) + + +def escape_silent(s: t.Any | None, /) -> Markup: + """Like :func:`escape` but treats ``None`` as the empty string. + Useful with optional values, as otherwise you get the string + ``'None'`` when the value is ``None``. + + >>> escape(None) + Markup('None') + >>> escape_silent(None) + Markup('') + """ + if s is None: + return Markup() + + return escape(s) + + +def soft_str(s: t.Any, /) -> str: + """Convert an object to a string if it isn't already. This preserves + a :class:`Markup` string rather than converting it back to a basic + string, so it will still be marked as safe and won't be escaped + again. + + >>> value = escape("") + >>> value + Markup('<User 1>') + >>> escape(str(value)) + Markup('&lt;User 1&gt;') + >>> escape(soft_str(value)) + Markup('<User 1>') + """ + if not isinstance(s, str): + return str(s) + + return s + + +class Markup(str): + """A string that is ready to be safely inserted into an HTML or XML + document, either because it was escaped or because it was marked + safe. + + Passing an object to the constructor converts it to text and wraps + it to mark it safe without escaping. To escape the text, use the + :meth:`escape` class method instead. + + >>> Markup("Hello, World!") + Markup('Hello, World!') + >>> Markup(42) + Markup('42') + >>> Markup.escape("Hello, World!") + Markup('Hello <em>World</em>!') + + This implements the ``__html__()`` interface that some frameworks + use. Passing an object that implements ``__html__()`` will wrap the + output of that method, marking it safe. + + >>> class Foo: + ... def __html__(self): + ... return 'foo' + ... + >>> Markup(Foo()) + Markup('foo') + + This is a subclass of :class:`str`. It has the same methods, but + escapes their arguments and returns a ``Markup`` instance. + + >>> Markup("%s") % ("foo & bar",) + Markup('foo & bar') + >>> Markup("Hello ") + "" + Markup('Hello <foo>') + """ + + __slots__ = () + + def __new__( + cls, object: t.Any = "", encoding: str | None = None, errors: str = "strict" + ) -> te.Self: + if hasattr(object, "__html__"): + object = object.__html__() + + if encoding is None: + return super().__new__(cls, object) + + return super().__new__(cls, object, encoding, errors) + + def __html__(self, /) -> te.Self: + return self + + def __add__(self, value: str | _HasHTML, /) -> te.Self: + if isinstance(value, str) or hasattr(value, "__html__"): + return self.__class__(super().__add__(self.escape(value))) + + return NotImplemented + + def __radd__(self, value: str | _HasHTML, /) -> te.Self: + if isinstance(value, str) or hasattr(value, "__html__"): + return self.escape(value).__add__(self) + + return NotImplemented + + def __mul__(self, value: t.SupportsIndex, /) -> te.Self: + return self.__class__(super().__mul__(value)) + + def __rmul__(self, value: t.SupportsIndex, /) -> te.Self: + return self.__class__(super().__mul__(value)) + + def __mod__(self, value: t.Any, /) -> te.Self: + if isinstance(value, tuple): + # a tuple of arguments, each wrapped + value = tuple(_MarkupEscapeHelper(x, self.escape) for x in value) + elif hasattr(type(value), "__getitem__") and not isinstance(value, str): + # a mapping of arguments, wrapped + value = _MarkupEscapeHelper(value, self.escape) + else: + # a single argument, wrapped with the helper and a tuple + value = (_MarkupEscapeHelper(value, self.escape),) + + return self.__class__(super().__mod__(value)) + + def __repr__(self, /) -> str: + return f"{self.__class__.__name__}({super().__repr__()})" + + def join(self, iterable: cabc.Iterable[str | _HasHTML], /) -> te.Self: + return self.__class__(super().join(map(self.escape, iterable))) + + def split( # type: ignore[override] + self, /, sep: str | None = None, maxsplit: t.SupportsIndex = -1 + ) -> list[te.Self]: + return [self.__class__(v) for v in super().split(sep, maxsplit)] + + def rsplit( # type: ignore[override] + self, /, sep: str | None = None, maxsplit: t.SupportsIndex = -1 + ) -> list[te.Self]: + return [self.__class__(v) for v in super().rsplit(sep, maxsplit)] + + def splitlines( # type: ignore[override] + self, /, keepends: bool = False + ) -> list[te.Self]: + return [self.__class__(v) for v in super().splitlines(keepends)] + + def unescape(self, /) -> str: + """Convert escaped markup back into a text string. This replaces + HTML entities with the characters they represent. + + >>> Markup("Main » About").unescape() + 'Main » About' + """ + from html import unescape + + return unescape(str(self)) + + def striptags(self, /) -> str: + """:meth:`unescape` the markup, remove tags, and normalize + whitespace to single spaces. + + >>> Markup("Main »\tAbout").striptags() + 'Main » About' + """ + value = str(self) + + # Look for comments then tags separately. Otherwise, a comment that + # contains a tag would end early, leaving some of the comment behind. + + # keep finding comment start marks + while (start := value.find("", start)) == -1: + break + + value = f"{value[:start]}{value[end + 3:]}" + + # remove tags using the same method + while (start := value.find("<")) != -1: + if (end := value.find(">", start)) == -1: + break + + value = f"{value[:start]}{value[end + 1:]}" + + # collapse spaces + value = " ".join(value.split()) + return self.__class__(value).unescape() + + @classmethod + def escape(cls, s: t.Any, /) -> te.Self: + """Escape a string. Calls :func:`escape` and ensures that for + subclasses the correct type is returned. + """ + rv = escape(s) + + if rv.__class__ is not cls: + return cls(rv) + + return rv # type: ignore[return-value] + + def __getitem__(self, key: t.SupportsIndex | slice, /) -> te.Self: + return self.__class__(super().__getitem__(key)) + + def capitalize(self, /) -> te.Self: + return self.__class__(super().capitalize()) + + def title(self, /) -> te.Self: + return self.__class__(super().title()) + + def lower(self, /) -> te.Self: + return self.__class__(super().lower()) + + def upper(self, /) -> te.Self: + return self.__class__(super().upper()) + + def replace(self, old: str, new: str, count: t.SupportsIndex = -1, /) -> te.Self: + return self.__class__(super().replace(old, self.escape(new), count)) + + def ljust(self, width: t.SupportsIndex, fillchar: str = " ", /) -> te.Self: + return self.__class__(super().ljust(width, self.escape(fillchar))) + + def rjust(self, width: t.SupportsIndex, fillchar: str = " ", /) -> te.Self: + return self.__class__(super().rjust(width, self.escape(fillchar))) + + def lstrip(self, chars: str | None = None, /) -> te.Self: + return self.__class__(super().lstrip(chars)) + + def rstrip(self, chars: str | None = None, /) -> te.Self: + return self.__class__(super().rstrip(chars)) + + def center(self, width: t.SupportsIndex, fillchar: str = " ", /) -> te.Self: + return self.__class__(super().center(width, self.escape(fillchar))) + + def strip(self, chars: str | None = None, /) -> te.Self: + return self.__class__(super().strip(chars)) + + def translate( + self, + table: cabc.Mapping[int, str | int | None], # type: ignore[override] + /, + ) -> str: + return self.__class__(super().translate(table)) + + def expandtabs(self, /, tabsize: t.SupportsIndex = 8) -> te.Self: + return self.__class__(super().expandtabs(tabsize)) + + def swapcase(self, /) -> te.Self: + return self.__class__(super().swapcase()) + + def zfill(self, width: t.SupportsIndex, /) -> te.Self: + return self.__class__(super().zfill(width)) + + def casefold(self, /) -> te.Self: + return self.__class__(super().casefold()) + + def removeprefix(self, prefix: str, /) -> te.Self: + return self.__class__(super().removeprefix(prefix)) + + def removesuffix(self, suffix: str) -> te.Self: + return self.__class__(super().removesuffix(suffix)) + + def partition(self, sep: str, /) -> tuple[te.Self, te.Self, te.Self]: + left, sep, right = super().partition(sep) + cls = self.__class__ + return cls(left), cls(sep), cls(right) + + def rpartition(self, sep: str, /) -> tuple[te.Self, te.Self, te.Self]: + left, sep, right = super().rpartition(sep) + cls = self.__class__ + return cls(left), cls(sep), cls(right) + + def format(self, *args: t.Any, **kwargs: t.Any) -> te.Self: + formatter = EscapeFormatter(self.escape) + return self.__class__(formatter.vformat(self, args, kwargs)) + + def format_map( + self, + mapping: cabc.Mapping[str, t.Any], # type: ignore[override] + /, + ) -> te.Self: + formatter = EscapeFormatter(self.escape) + return self.__class__(formatter.vformat(self, (), mapping)) + + def __html_format__(self, format_spec: str, /) -> te.Self: + if format_spec: + raise ValueError("Unsupported format specification for Markup.") + + return self + + +class EscapeFormatter(string.Formatter): + __slots__ = ("escape",) + + def __init__(self, escape: _TPEscape) -> None: + self.escape: _TPEscape = escape + super().__init__() + + def format_field(self, value: t.Any, format_spec: str) -> str: + if hasattr(value, "__html_format__"): + rv = value.__html_format__(format_spec) + elif hasattr(value, "__html__"): + if format_spec: + raise ValueError( + f"Format specifier {format_spec} given, but {type(value)} does not" + " define __html_format__. A class that defines __html__ must define" + " __html_format__ to work with format specifiers." + ) + rv = value.__html__() + else: + # We need to make sure the format spec is str here as + # otherwise the wrong callback methods are invoked. + rv = super().format_field(value, str(format_spec)) + return str(self.escape(rv)) + + +class _MarkupEscapeHelper: + """Helper for :meth:`Markup.__mod__`.""" + + __slots__ = ("obj", "escape") + + def __init__(self, obj: t.Any, escape: _TPEscape) -> None: + self.obj: t.Any = obj + self.escape: _TPEscape = escape + + def __getitem__(self, key: t.Any, /) -> te.Self: + return self.__class__(self.obj[key], self.escape) + + def __str__(self, /) -> str: + return str(self.escape(self.obj)) + + def __repr__(self, /) -> str: + return str(self.escape(repr(self.obj))) + + def __int__(self, /) -> int: + return int(self.obj) + + def __float__(self, /) -> float: + return float(self.obj) + + +def __getattr__(name: str) -> t.Any: + if name == "__version__": + import importlib.metadata + import warnings + + warnings.warn( + "The '__version__' attribute is deprecated and will be removed in" + " MarkupSafe 3.1. Use feature detection, or" + ' `importlib.metadata.version("markupsafe")`, instead.', + stacklevel=2, + ) + return importlib.metadata.version("markupsafe") + + raise AttributeError(name) diff --git a/gestao_raul/Lib/site-packages/markupsafe/__pycache__/__init__.cpython-310.pyc b/gestao_raul/Lib/site-packages/markupsafe/__pycache__/__init__.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..74f0bd4a5f8a7c7419b4854af5001a68208d883c GIT binary patch literal 15405 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 QIk_wKg{cb@`zH4NKdA9>+yDRo literal 0 HcmV?d00001 diff --git a/gestao_raul/Lib/site-packages/markupsafe/__pycache__/_native.cpython-310.pyc b/gestao_raul/Lib/site-packages/markupsafe/__pycache__/_native.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..2be5177f7560ad70d4e68dc8f5b9133a769daabc GIT binary patch literal 410 zcmYjN%SuBr5KYqCx83#w6e<^dEEGXoidfxAg^C*qT;k2NTzX$5xfP2`Kg2G@Kg!m> zs2eA7(+P9VnM{~7r0DfJ1moi2dts4(T(KJg7T1`%k01#UNrB7*$z<&#c&0LVBw^iB zZ5s+qrSh2KJC`mTy8#nSeT48%K5>9#8-`qyf#?~uw{)}b5$ITy w5G8pI-c9eJSBJIe|6#wXix<<7*_t-W7k-@`aKCR`qpXls3S+mjW(a-q2Le%I9smFU literal 0 HcmV?d00001 diff --git a/gestao_raul/Lib/site-packages/markupsafe/_native.py b/gestao_raul/Lib/site-packages/markupsafe/_native.py new file mode 100644 index 0000000..088b3bc --- /dev/null +++ b/gestao_raul/Lib/site-packages/markupsafe/_native.py @@ -0,0 +1,8 @@ +def _escape_inner(s: str, /) -> str: + return ( + s.replace("&", "&") + .replace(">", ">") + .replace("<", "<") + .replace("'", "'") + .replace('"', """) + ) diff --git a/gestao_raul/Lib/site-packages/markupsafe/_speedups.c b/gestao_raul/Lib/site-packages/markupsafe/_speedups.c new file mode 100644 index 0000000..09dd57c --- /dev/null +++ b/gestao_raul/Lib/site-packages/markupsafe/_speedups.c @@ -0,0 +1,204 @@ +#include + +#define GET_DELTA(inp, inp_end, delta) \ + while (inp < inp_end) { \ + switch (*inp++) { \ + case '"': \ + case '\'': \ + case '&': \ + delta += 4; \ + break; \ + case '<': \ + case '>': \ + delta += 3; \ + break; \ + } \ + } + +#define DO_ESCAPE(inp, inp_end, outp) \ + { \ + Py_ssize_t ncopy = 0; \ + while (inp < inp_end) { \ + switch (*inp) { \ + case '"': \ + memcpy(outp, inp-ncopy, sizeof(*outp)*ncopy); \ + outp += ncopy; ncopy = 0; \ + *outp++ = '&'; \ + *outp++ = '#'; \ + *outp++ = '3'; \ + *outp++ = '4'; \ + *outp++ = ';'; \ + break; \ + case '\'': \ + memcpy(outp, inp-ncopy, sizeof(*outp)*ncopy); \ + outp += ncopy; ncopy = 0; \ + *outp++ = '&'; \ + *outp++ = '#'; \ + *outp++ = '3'; \ + *outp++ = '9'; \ + *outp++ = ';'; \ + break; \ + case '&': \ + memcpy(outp, inp-ncopy, sizeof(*outp)*ncopy); \ + outp += ncopy; ncopy = 0; \ + *outp++ = '&'; \ + *outp++ = 'a'; \ + *outp++ = 'm'; \ + *outp++ = 'p'; \ + *outp++ = ';'; \ + break; \ + case '<': \ + memcpy(outp, inp-ncopy, sizeof(*outp)*ncopy); \ + outp += ncopy; ncopy = 0; \ + *outp++ = '&'; \ + *outp++ = 'l'; \ + *outp++ = 't'; \ + *outp++ = ';'; \ + break; \ + case '>': \ + memcpy(outp, inp-ncopy, sizeof(*outp)*ncopy); \ + outp += ncopy; ncopy = 0; \ + *outp++ = '&'; \ + *outp++ = 'g'; \ + *outp++ = 't'; \ + *outp++ = ';'; \ + break; \ + default: \ + ncopy++; \ + } \ + inp++; \ + } \ + memcpy(outp, inp-ncopy, sizeof(*outp)*ncopy); \ + } + +static PyObject* +escape_unicode_kind1(PyUnicodeObject *in) +{ + Py_UCS1 *inp = PyUnicode_1BYTE_DATA(in); + Py_UCS1 *inp_end = inp + PyUnicode_GET_LENGTH(in); + Py_UCS1 *outp; + PyObject *out; + Py_ssize_t delta = 0; + + GET_DELTA(inp, inp_end, delta); + if (!delta) { + Py_INCREF(in); + return (PyObject*)in; + } + + out = PyUnicode_New(PyUnicode_GET_LENGTH(in) + delta, + PyUnicode_IS_ASCII(in) ? 127 : 255); + if (!out) + return NULL; + + inp = PyUnicode_1BYTE_DATA(in); + outp = PyUnicode_1BYTE_DATA(out); + DO_ESCAPE(inp, inp_end, outp); + return out; +} + +static PyObject* +escape_unicode_kind2(PyUnicodeObject *in) +{ + Py_UCS2 *inp = PyUnicode_2BYTE_DATA(in); + Py_UCS2 *inp_end = inp + PyUnicode_GET_LENGTH(in); + Py_UCS2 *outp; + PyObject *out; + Py_ssize_t delta = 0; + + GET_DELTA(inp, inp_end, delta); + if (!delta) { + Py_INCREF(in); + return (PyObject*)in; + } + + out = PyUnicode_New(PyUnicode_GET_LENGTH(in) + delta, 65535); + if (!out) + return NULL; + + inp = PyUnicode_2BYTE_DATA(in); + outp = PyUnicode_2BYTE_DATA(out); + DO_ESCAPE(inp, inp_end, outp); + return out; +} + + +static PyObject* +escape_unicode_kind4(PyUnicodeObject *in) +{ + Py_UCS4 *inp = PyUnicode_4BYTE_DATA(in); + Py_UCS4 *inp_end = inp + PyUnicode_GET_LENGTH(in); + Py_UCS4 *outp; + PyObject *out; + Py_ssize_t delta = 0; + + GET_DELTA(inp, inp_end, delta); + if (!delta) { + Py_INCREF(in); + return (PyObject*)in; + } + + out = PyUnicode_New(PyUnicode_GET_LENGTH(in) + delta, 1114111); + if (!out) + return NULL; + + inp = PyUnicode_4BYTE_DATA(in); + outp = PyUnicode_4BYTE_DATA(out); + DO_ESCAPE(inp, inp_end, outp); + return out; +} + +static PyObject* +escape_unicode(PyObject *self, PyObject *s) +{ + if (!PyUnicode_Check(s)) + return NULL; + + // This check is no longer needed in Python 3.12. + if (PyUnicode_READY(s)) + return NULL; + + switch (PyUnicode_KIND(s)) { + case PyUnicode_1BYTE_KIND: + return escape_unicode_kind1((PyUnicodeObject*) s); + case PyUnicode_2BYTE_KIND: + return escape_unicode_kind2((PyUnicodeObject*) s); + case PyUnicode_4BYTE_KIND: + return escape_unicode_kind4((PyUnicodeObject*) s); + } + assert(0); /* shouldn't happen */ + return NULL; +} + +static PyMethodDef module_methods[] = { + {"_escape_inner", (PyCFunction)escape_unicode, METH_O, NULL}, + {NULL, NULL, 0, NULL} /* Sentinel */ +}; + +static struct PyModuleDef module_definition = { + PyModuleDef_HEAD_INIT, + "markupsafe._speedups", + NULL, + -1, + module_methods, + NULL, + NULL, + NULL, + NULL +}; + +PyMODINIT_FUNC +PyInit__speedups(void) +{ + PyObject *m = PyModule_Create(&module_definition); + + if (m == NULL) { + return NULL; + } + + #ifdef Py_GIL_DISABLED + PyUnstable_Module_SetGIL(m, Py_MOD_GIL_NOT_USED); + #endif + + return m; +} diff --git a/gestao_raul/Lib/site-packages/markupsafe/_speedups.cp310-win_amd64.pyd b/gestao_raul/Lib/site-packages/markupsafe/_speedups.cp310-win_amd64.pyd new file mode 100644 index 0000000000000000000000000000000000000000..071dcb916f9b98b5b4e14dc5c27d688c0982560f GIT binary patch literal 13312 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 str: ... diff --git a/gestao_raul/Lib/site-packages/markupsafe/py.typed b/gestao_raul/Lib/site-packages/markupsafe/py.typed new file mode 100644 index 0000000..e69de29 diff --git a/gestao_raul/Lib/site-packages/pillow-11.1.0.dist-info/INSTALLER b/gestao_raul/Lib/site-packages/pillow-11.1.0.dist-info/INSTALLER new file mode 100644 index 0000000..a1b589e --- /dev/null +++ b/gestao_raul/Lib/site-packages/pillow-11.1.0.dist-info/INSTALLER @@ -0,0 +1 @@ +pip diff --git a/gestao_raul/Lib/site-packages/pillow-11.0.0.dist-info/LICENSE b/gestao_raul/Lib/site-packages/pillow-11.1.0.dist-info/LICENSE similarity index 96% rename from gestao_raul/Lib/site-packages/pillow-11.0.0.dist-info/LICENSE rename to gestao_raul/Lib/site-packages/pillow-11.1.0.dist-info/LICENSE index 3b7a14b..e194485 100644 --- a/gestao_raul/Lib/site-packages/pillow-11.0.0.dist-info/LICENSE +++ b/gestao_raul/Lib/site-packages/pillow-11.1.0.dist-info/LICENSE @@ -5,9 +5,9 @@ The Python Imaging Library (PIL) is Pillow is the friendly PIL fork. It is - Copyright © 2010-2024 by Jeffrey A. Clark and contributors + Copyright © 2010 by Jeffrey A. Clark and contributors -Like PIL, Pillow is licensed under the open source HPND License: +Like PIL, Pillow is licensed under the open source MIT-CMU License: By obtaining, using, and/or copying this software and/or its associated documentation, you agree that you have read, understood, and will comply @@ -609,7 +609,7 @@ consider it more useful to permit linking proprietary applications with the library. If this is what you want to do, use the GNU Library General Public License instead of this License. -===== harfbuzz-10.0.1 ===== +===== harfbuzz-10.1.0 ===== HarfBuzz is licensed under the so-called "Old MIT" license. Details follow. For parts of HarfBuzz that are licensed under different licenses see individual @@ -679,7 +679,7 @@ 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. -===== libjpeg-turbo-3.0.4 ===== +===== libjpeg-turbo-3.1.0 ===== LEGAL ISSUES ============ @@ -826,7 +826,7 @@ intended solely for clarification. The Modified (3-clause) BSD License =================================== -Copyright (C)2009-2023 D. R. Commander. All Rights Reserved.
+Copyright (C)2009-2024 D. R. Commander. All Rights Reserved.
Copyright (C)2015 Viktor Szathmáry. All Rights Reserved. Redistribution and use in source and binary forms, with or without @@ -866,7 +866,7 @@ attribution and endorsement protections to other entities. Thus, it was desirable to choose a license that granted us the same protections for new code that were granted to the IJG for code derived from their software. -===== libwebp-1.4.0 ===== +===== libwebp-1.5.0 ===== Copyright (c) 2010, Google Inc. All rights reserved. @@ -1036,7 +1036,7 @@ to supporting the PNG file format in commercial products. If you use this source code in a product, acknowledgment is not required but would be appreciated. -===== openjpeg-2.5.2 ===== +===== openjpeg-2.5.3 ===== /* * The copyright in this software is being made available under the 2-clauses @@ -1190,37 +1190,24 @@ XZ Utils Licensing The contact information is in the README file. -===== zlib-1.3.1 ===== +===== zlib-ng-2.2.2 ===== - (C) 1995-2024 Jean-loup Gailly and Mark Adler +(C) 1995-2024 Jean-loup Gailly and Mark Adler - This software is provided 'as-is', without any express or implied - warranty. In no event will the authors be held liable for any damages - arising from the use of this software. +This software is provided 'as-is', without any express or implied +warranty. In no event will the authors be held liable for any damages +arising from the use of this software. - Permission is granted to anyone to use this software for any purpose, - including commercial applications, and to alter it and redistribute it - freely, subject to the following restrictions: +Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it +freely, subject to the following restrictions: - 1. The origin of this software must not be misrepresented; you must not - claim that you wrote the original software. If you use this software - in a product, an acknowledgment in the product documentation would be - appreciated but is not required. - 2. Altered source versions must be plainly marked as such, and must not be - misrepresented as being the original software. - 3. This notice may not be removed or altered from any source distribution. +1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. - Jean-loup Gailly Mark Adler - jloup@gzip.org madler@alumni.caltech.edu +2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. -If you use the zlib library in a product, we would appreciate *not* receiving -lengthy legal documents to sign. The sources are provided for free but without -warranty of any kind. The library has been entirely written by Jean-loup -Gailly and Mark Adler; it does not include third-party code. We make all -contributions to and distributions of this project solely in our personal -capacity, and are not conveying any rights to any intellectual property of -any third parties. - -If you redistribute modified sources, we would appreciate that you include in -the file ChangeLog history information documenting your changes. Please read -the FAQ for more information on the distribution of modified source versions. +3. This notice may not be removed or altered from any source distribution. diff --git a/gestao_raul/Lib/site-packages/pillow-11.0.0.dist-info/METADATA b/gestao_raul/Lib/site-packages/pillow-11.1.0.dist-info/METADATA similarity index 87% rename from gestao_raul/Lib/site-packages/pillow-11.0.0.dist-info/METADATA rename to gestao_raul/Lib/site-packages/pillow-11.1.0.dist-info/METADATA index 9a77e2c..8813a52 100644 --- a/gestao_raul/Lib/site-packages/pillow-11.0.0.dist-info/METADATA +++ b/gestao_raul/Lib/site-packages/pillow-11.1.0.dist-info/METADATA @@ -1,13 +1,13 @@ Metadata-Version: 2.1 Name: pillow -Version: 11.0.0 +Version: 11.1.0 Summary: Python Imaging Library (Fork) Author-email: "Jeffrey A. Clark" License: MIT-CMU -Project-URL: Changelog, https://github.com/python-pillow/Pillow/blob/main/CHANGES.rst +Project-URL: Changelog, https://github.com/python-pillow/Pillow/releases Project-URL: Documentation, https://pillow.readthedocs.io Project-URL: Funding, https://tidelift.com/subscription/pkg/pypi-pillow?utm_source=pypi-pillow&utm_medium=pypi -Project-URL: Homepage, https://python-pillow.org +Project-URL: Homepage, https://python-pillow.github.io Project-URL: Mastodon, https://fosstodon.org/@pillow Project-URL: Release notes, https://pillow.readthedocs.io/en/stable/releasenotes/index.html Project-URL: Source, https://github.com/python-pillow/Pillow @@ -32,31 +32,32 @@ Requires-Python: >=3.9 Description-Content-Type: text/markdown License-File: LICENSE Provides-Extra: docs -Requires-Dist: furo ; extra == 'docs' -Requires-Dist: olefile ; extra == 'docs' -Requires-Dist: sphinx >=8.1 ; extra == 'docs' -Requires-Dist: sphinx-copybutton ; extra == 'docs' -Requires-Dist: sphinx-inline-tabs ; extra == 'docs' -Requires-Dist: sphinxext-opengraph ; extra == 'docs' +Requires-Dist: furo; extra == "docs" +Requires-Dist: olefile; extra == "docs" +Requires-Dist: sphinx>=8.1; extra == "docs" +Requires-Dist: sphinx-copybutton; extra == "docs" +Requires-Dist: sphinx-inline-tabs; extra == "docs" +Requires-Dist: sphinxext-opengraph; extra == "docs" Provides-Extra: fpx -Requires-Dist: olefile ; extra == 'fpx' +Requires-Dist: olefile; extra == "fpx" Provides-Extra: mic -Requires-Dist: olefile ; extra == 'mic' +Requires-Dist: olefile; extra == "mic" Provides-Extra: tests -Requires-Dist: check-manifest ; extra == 'tests' -Requires-Dist: coverage ; extra == 'tests' -Requires-Dist: defusedxml ; extra == 'tests' -Requires-Dist: markdown2 ; extra == 'tests' -Requires-Dist: olefile ; extra == 'tests' -Requires-Dist: packaging ; extra == 'tests' -Requires-Dist: pyroma ; extra == 'tests' -Requires-Dist: pytest ; extra == 'tests' -Requires-Dist: pytest-cov ; extra == 'tests' -Requires-Dist: pytest-timeout ; extra == 'tests' +Requires-Dist: check-manifest; extra == "tests" +Requires-Dist: coverage>=7.4.2; extra == "tests" +Requires-Dist: defusedxml; extra == "tests" +Requires-Dist: markdown2; extra == "tests" +Requires-Dist: olefile; extra == "tests" +Requires-Dist: packaging; extra == "tests" +Requires-Dist: pyroma; extra == "tests" +Requires-Dist: pytest; extra == "tests" +Requires-Dist: pytest-cov; extra == "tests" +Requires-Dist: pytest-timeout; extra == "tests" +Requires-Dist: trove-classifiers>=2024.10.12; extra == "tests" Provides-Extra: typing -Requires-Dist: typing-extensions ; (python_version < "3.10") and extra == 'typing' +Requires-Dist: typing-extensions; python_version < "3.10" and extra == "typing" Provides-Extra: xmp -Requires-Dist: defusedxml ; extra == 'xmp' +Requires-Dist: defusedxml; extra == "xmp"

Pillow logo @@ -167,7 +168,7 @@ The core image library is designed for fast access to data stored in a few basic - [Issues](https://github.com/python-pillow/Pillow/issues) - [Pull requests](https://github.com/python-pillow/Pillow/pulls) - [Release notes](https://pillow.readthedocs.io/en/stable/releasenotes/index.html) -- [Changelog](https://github.com/python-pillow/Pillow/blob/main/CHANGES.rst) +- [Changelog](https://github.com/python-pillow/Pillow/releases) - [Pre-fork](https://github.com/python-pillow/Pillow/blob/main/CHANGES.rst#pre-fork) ## Report a Vulnerability diff --git a/gestao_raul/Lib/site-packages/pillow-11.0.0.dist-info/RECORD b/gestao_raul/Lib/site-packages/pillow-11.1.0.dist-info/RECORD similarity index 70% rename from gestao_raul/Lib/site-packages/pillow-11.0.0.dist-info/RECORD rename to gestao_raul/Lib/site-packages/pillow-11.1.0.dist-info/RECORD index 8f8b6bc..bbac633 100644 --- a/gestao_raul/Lib/site-packages/pillow-11.0.0.dist-info/RECORD +++ b/gestao_raul/Lib/site-packages/pillow-11.1.0.dist-info/RECORD @@ -1,88 +1,88 @@ PIL/BdfFontFile.py,sha256=JJLBb0JZwTmSIIkqQoe2vzus-XTczN_O47DQneXKM1o,3610 -PIL/BlpImagePlugin.py,sha256=nPiWxqE_ZJJPbaYQiFigv1qBjF8v0lxMSKm_pJY3W3w,17077 +PIL/BlpImagePlugin.py,sha256=IrQId6tdWwEK3FbqzvqWQtusWqIGrK3ajCKbDBQBSHw,17184 PIL/BmpImagePlugin.py,sha256=kFfnW8Bg8Ijs4j4AGn27SyKTFn0wqHwN7O1JYjH-b44,20269 PIL/BufrStubImagePlugin.py,sha256=sY28XJU_Fu-UsbPpAoN-fN63FemmhCMi8rW5Kf9JioE,1829 PIL/ContainerIO.py,sha256=I6yO_YFEEqMKA1ckgEEzF2r_Ik5p_GjM-RrWOJYjSlY,4777 PIL/CurImagePlugin.py,sha256=l6aPDjo9n7-pfwGpbuYJKFaSYrpwOVnFkIZDT5tRDn8,1867 PIL/DcxImagePlugin.py,sha256=iaVs9updbtEstQKPLKKIlJVhfxFarbgCPoO8j96BmDA,2114 -PIL/DdsImagePlugin.py,sha256=Y_itB3X54n7N2rL34dyDBpol2X4_RnzjtiXtg99Q0iA,17535 -PIL/EpsImagePlugin.py,sha256=cKDk4eDeh8YVQ8L-AVcpTbm8F837TOxIG7MBTU3Ngy0,16848 -PIL/ExifTags.py,sha256=LA3OxhNImajSkIRnCMXDTJw4MprMEeFq_Sqf-sjn20w,10134 +PIL/DdsImagePlugin.py,sha256=73mdEJNzLbNF8KvIyTynslyh35kSkv2pKdo9l6rXmUE,17511 +PIL/EpsImagePlugin.py,sha256=lltBD5-BAV6KvwJx1S8dHyqN6WCQlZLqZRkJFFYCZcg,16839 +PIL/ExifTags.py,sha256=xG6PuZIJSXk7bfkBfXh11YgKlWVkF1HWQ_I7XywFBMs,10313 PIL/FitsImagePlugin.py,sha256=4NPMt0uRxtyTpk2CyH7STSC-7ZmoGlSEl43hfnu5vBk,4791 -PIL/FliImagePlugin.py,sha256=FgqPZZkbTGBMcxtOXAp556WxknEz3dBPaUoerCT7BCU,4856 +PIL/FliImagePlugin.py,sha256=r-frT5HJelEhAapV4AAtD6QvK0n0uMv4ND5LuVp9RXc,4850 PIL/FontFile.py,sha256=iLSV32yQetLnE4SgG8HnHb2FdqkqFBjY9n--E6u5UE0,3711 -PIL/FpxImagePlugin.py,sha256=_jQMgLzfC8uxGka-KPIJ2jwD6luMFp-4Qz7RtsrruGM,7548 -PIL/FtexImagePlugin.py,sha256=1I5_0O__NbbJRneo3YVyUcUxV_wLYHQu8SkOPp6CMxY,3650 +PIL/FpxImagePlugin.py,sha256=aQ7CjLgnsRFS1ckvX63Q1XOlTNRm11HgbjKQ5iM-p34,7545 +PIL/FtexImagePlugin.py,sha256=HC5aXGMd0lwH3ksK7LuGKywO5JKaarXrggs7gJfw9rc,3642 PIL/GbrImagePlugin.py,sha256=x49ki3fwwQQre9Gi_Q4xb50ui4o-3TyE9S0mMqHTBR0,3109 -PIL/GdImageFile.py,sha256=mTQCaQCp0s-awYAGsw-LQQyyW6zU-FS4KhUlfg1on74,2912 -PIL/GifImagePlugin.py,sha256=FOyVsNiRug79eHdoBeHySZxcd_ctnn4mQQSPWkxnntI,42612 +PIL/GdImageFile.py,sha256=ysPSraYoGVtyyc6Y0fN_DckhRMEr04g9Syn0g1yTq-c,2904 +PIL/GifImagePlugin.py,sha256=O9xEPRx14UL_mWCPHOe9M4tFsaGYEGnx1RQKn6mTOws,42653 PIL/GimpGradientFile.py,sha256=AFEEGWtylUg7tIYK0MgBC4hZHq3WxSzIvdq_MAEAUq8,4047 PIL/GimpPaletteFile.py,sha256=EmKLnuvsHx0GLhWh8YnfidiTEhUm51-ZNKgQbAX1zcU,1485 PIL/GribStubImagePlugin.py,sha256=Vf_VvZltyP3QqTuz-gUfCT6I2g3F5Rh8BYMGjxwpAoM,1823 PIL/Hdf5StubImagePlugin.py,sha256=70vlB50QgPYYH2b8kE8U_QN5Q8TlmjmN8vk0FrhLkJ4,1826 PIL/IcnsImagePlugin.py,sha256=6ZH5I24DyNxev13dpqhxhrvsLYwpJgIOKcDyldqhNnQ,13365 PIL/IcoImagePlugin.py,sha256=n8-QRW5Yke9SdR1Lc50ePCoR92V--jYDZ4Us7mSAmF4,12849 -PIL/ImImagePlugin.py,sha256=T9nd5jRiCoiNs80ahKA-jrQx6xXbeG8dowHOvk9N9QM,11815 -PIL/Image.py,sha256=uneMCNf0W2DRYpNn-BbYnCQNNeCvk4jSjNac2WOY-xY,150163 +PIL/ImImagePlugin.py,sha256=3RSlYKnfT6tfn_ZUn4KaQBcIZGBo-Lryz_zuqK-ELv0,11824 +PIL/Image.py,sha256=xmdIgTZNXymT_P2UoXvaPGg5lqwi6EPXYcCi-7ofFnI,150326 PIL/ImageChops.py,sha256=hZ8EPUPlQIzugsEedV8trkKX0jBCDGb6Cszma6ZeMZQ,8257 PIL/ImageCms.py,sha256=l3_-tm-1WmrJftb0gPfohoFheRzmAflJh3o_6dOue_8,43135 PIL/ImageColor.py,sha256=KV-u7HnZWrrL3zuBAOLqerI-7vFcXTxdLeoaYVjsnwI,9761 PIL/ImageDraw.py,sha256=DYB7qTpWv3mnkb8QqU1m43ySUVwC0ID_X-1CBAcvbxc,43493 PIL/ImageDraw2.py,sha256=_e6I2nPxeiZwjOjBEJzUvxoyAklzmc-xF6R8z8ieOAA,7470 PIL/ImageEnhance.py,sha256=ugDU0sljaR_zaTibtumlTvf-qFH1x1W6l2QMpc386XU,3740 -PIL/ImageFile.py,sha256=iiU9m9PrCREzA9QWhqoqE_bx-_8LKo5NFd-X2W3d7g8,26977 -PIL/ImageFilter.py,sha256=EgZAzVpL62p5bS65vp11cI8dr3YhmXwmRTzmYh2Ntbg,19302 -PIL/ImageFont.py,sha256=8hV48--3wsJMJX3esojS3K46cLPD7_QkltkhUI1f6GM,65617 -PIL/ImageGrab.py,sha256=CJP_aZNA1mXU5dI77eElm4_Au198Uf7yVZ7Xw0BJ53s,6552 +PIL/ImageFile.py,sha256=QLypO70PcWguPN_410Rv4vyDLpKysAEsJv_ZD4wNp1s,26957 +PIL/ImageFilter.py,sha256=NCtqSCIN10eeZP3LcU2NYx3FAjN5e5gAWbVb5wFPDk0,19315 +PIL/ImageFont.py,sha256=NF_owjfiBglTQMu54cf936bFfH6uRPw0RnRRvgnHsnI,65599 +PIL/ImageGrab.py,sha256=NEflDsuNFOyBrdyOGMrR3FZf9unI1kdLos2Uza56Yow,6185 PIL/ImageMath.py,sha256=oHveLI5M0XwUJgX6uBPqGhQcdgoosC2-kYaVHbiDDts,12310 PIL/ImageMode.py,sha256=n4-2kSolyB7v2u6dXyIf3_vDL_LMvSNwhJvd9Do8cc8,2773 PIL/ImageMorph.py,sha256=E6kZhhpRypnHU8LoFgG4HkUoW3LfTr6rbv-fuFS9fDQ,8828 -PIL/ImageOps.py,sha256=Rd3P9VMOFgKY5956gZtcWZv3uCB5oHAcssanf0pauNI,25805 +PIL/ImageOps.py,sha256=M19SkymUGUMo0I0uMidsnpn-zlEfW7Rj0anqSpRN2YA,25822 PIL/ImagePalette.py,sha256=3MgwOab-209To6wP-7w04dCs1IQz84Y3X3SbvU4_muI,9287 PIL/ImagePath.py,sha256=ZnnJuvQNtbKRhCmr61TEmEh1vVV5_90WMEPL8Opy5l8,391 -PIL/ImageQt.py,sha256=wjqQ_sZbUHzgGtCue4289rZYpGpg2ygrBE_Sv2orWck,6980 +PIL/ImageQt.py,sha256=q_l6ntBzrkFe0jMsgAV4kH3Cyw5-Xq6u2Ejn3CuNt-o,7053 PIL/ImageSequence.py,sha256=5UohDzcf-2PA3NfGnMRd15zDDA3eD9Wo3SP3DxyRsCU,2286 PIL/ImageShow.py,sha256=19xEF7Gya2e-ZlrZKIekl2VBKZycuHG93ALOvOJ6qSk,10353 PIL/ImageStat.py,sha256=iA5KJrQeEpbwk-FhczGD8L4TaLWUt4VT_mp4drvMhv8,5485 PIL/ImageTk.py,sha256=mIiBdLdg3G7Y0r9zPsf5gC-QYL_7VJXGeai8LjxOFuI,9287 PIL/ImageTransform.py,sha256=cFaMTjlWklRKDEO9zxyXwfLuf9quaCSWJ79KyjxYwKY,4022 PIL/ImageWin.py,sha256=b-fO6kn4icHpy-zk-Xg-nO382zPXl-MKjZcs3vAXl1Q,8332 -PIL/ImtImagePlugin.py,sha256=l8-O69RNt8CdN76UFwS1RDIFnbj7mGBmhz7HechGWJE,2776 +PIL/ImtImagePlugin.py,sha256=i42UxVIUXQopc-235ThGXvOqGdz8wN9bD7REf4hEyo4,2768 PIL/IptcImagePlugin.py,sha256=4NKTYmrGbP90uVdCqQJzvodncRjQVUpemLiHbYsYdfk,6918 -PIL/Jpeg2KImagePlugin.py,sha256=P_ztbNPsyqZIpvMNF0aaNKO5CwaUoqayHaiClwq91po,14259 -PIL/JpegImagePlugin.py,sha256=dUIlg9V9rjA-5eL3fjAtOv4B86pWrrxanWNsp4CivO0,32328 +PIL/Jpeg2KImagePlugin.py,sha256=3MW5AY5CPhntUmAsZhuvsv5tcRkB4n8P6aoKuW3Thyo,14328 +PIL/JpegImagePlugin.py,sha256=XH_Np7ehK8ojdjU6e5l6SncwXBzoxe0wZQ-rDqDTHSM,32705 PIL/JpegPresets.py,sha256=UUIsKzvyzdPzsndODd90eu_luMqauG1PJh10UOuQvmg,12621 PIL/McIdasImagePlugin.py,sha256=51zeymhkCr7Tz7b8UhxAACww5MkCCOV4X1pM-QXp8IU,2018 PIL/MicImagePlugin.py,sha256=PrA2tqLn2NLRN-llQdBOPSYNHV-FFIpxgKHA1UUNkNw,2787 PIL/MpegImagePlugin.py,sha256=SR-JGne4xNIrHTc1vKdEbuW61oI-TIar2oIP-MeRuiI,2188 PIL/MpoImagePlugin.py,sha256=oAvDIZC_KpOxOYPP5rjsYWDKfNqi3asnwIosyx-7AR8,6410 -PIL/MspImagePlugin.py,sha256=NkR6_Vrn306k2drOJSKXLJ1lgvTsGj47uxObZxznAHo,6104 +PIL/MspImagePlugin.py,sha256=lrcM8fGpY_zw7LU0RlH2ZW7-nVkBqsjGkF1z4GVlXls,6082 PIL/PSDraw.py,sha256=un7FSu3yFIDTVtO9tB7w_csZcbNYQcHFJJSOILxL5gE,7143 PIL/PaletteFile.py,sha256=lNPfuBTHraW6i1v1b9thNoFyIG2MRMMzFHxVTaxcwj8,1265 PIL/PalmImagePlugin.py,sha256=c0d23TPlT_6_iCj6YGB8xH2Ta0J__xufcHvZeTPigvw,9583 -PIL/PcdImagePlugin.py,sha256=EDQGCPGebu4EpXWJc_mUIXJn_gz4YmT3BhR5r-MLHRE,1662 +PIL/PcdImagePlugin.py,sha256=oeFK1d62LpmTVAhGNUcLvtWyd2dPISHu1AE3BZVQn-8,1656 PIL/PcfFontFile.py,sha256=RkM5wUp3SgRpQhpsTBEtk8uuFrQPnBSYBryOmcoRphQ,7401 -PIL/PcxImagePlugin.py,sha256=deEbKrJSHrQBHW2NPWnGEnxrTPrhrnDVWVYdellihok,6478 +PIL/PcxImagePlugin.py,sha256=y9dBDN-D0qJ3pWJezcIN0RUkFOKGnK1yARkcKyFb3_A,6476 PIL/PdfImagePlugin.py,sha256=-01K9TRr_ekIRxokuBw3N-_t5gQmn23rJXj6-B2-Gpk,9660 PIL/PdfParser.py,sha256=VDCyd2NUI2dlAXHf4q5vxFIX1Icllkeiaqlsnx077jc,39053 -PIL/PixarImagePlugin.py,sha256=m3Zfy0GJyrhiy94Ti591CgQPKz8OoQQMRnD3navEePw,1857 -PIL/PngImagePlugin.py,sha256=3InrD2VdkQA5woeAhirV3ecYVqlnFy4PMw6RQKNnOuA,52409 +PIL/PixarImagePlugin.py,sha256=w6ULngeQz8zSWrrurntYbTl5Qvo6Ylhw4j5OsnhSk6o,1825 +PIL/PngImagePlugin.py,sha256=c5kmSZDka97yxTkZ6qIlx7gHWf0WlLumSGNg3bbj7l8,52405 PIL/PpmImagePlugin.py,sha256=xUbGR7DUieRonG7rVs8IJ0TOVUqOP6oX-rbdxB4-iTs,12729 PIL/PsdImagePlugin.py,sha256=eoOJ8GDNDzz96BBRbWEFwYRwyAHkrMrWEhV3ki84iuU,8953 -PIL/QoiImagePlugin.py,sha256=Dl5pbxhNOra7_WPwpJ8S2W8plQYDgcMrbWGSpjjIeTI,4304 +PIL/QoiImagePlugin.py,sha256=NLJD9BKVIgCzRP2XHFORNLNjDOUnCWNw5PvmsIVXrgI,4298 PIL/SgiImagePlugin.py,sha256=Guops-mEPgeP56JwqXII-kt9ZxuMYng207dkrA56N7Q,6979 -PIL/SpiderImagePlugin.py,sha256=sW17K_APLOVWf_nIBuoFPZm0guR0Z9v_06M0K7ndBMg,10442 +PIL/SpiderImagePlugin.py,sha256=aJYjvL4LOsVGDvf1ysZbolZSdJWgbmBa2chJf5tez8E,10459 PIL/SunImagePlugin.py,sha256=YKYEvuG4QUkies34OKtXWKTYSZ8U3qzcE_vdTrOuRsw,4734 PIL/TarIO.py,sha256=pR4LqBuF2rBy8v2PYsXZHqh6QalDeoraPSBiC57t7NU,1433 PIL/TgaImagePlugin.py,sha256=OMvZn_xKjB1dZ1_4MkOquzJBHpSUIpAf5mUEJZiLBTI,7244 -PIL/TiffImagePlugin.py,sha256=wGl5lXTasoP9HVXAdRadqFyImsDAgssQuXiHdP-kmW8,84422 +PIL/TiffImagePlugin.py,sha256=Mo-yarHill9zx-aCkCM1SNf_vNiPh57iRq4snJrW3Ts,85695 PIL/TiffTags.py,sha256=CmDDo0yRJ4lD-tvB00RWyNlDbSjhQx8QhDzJOr1zoZI,17644 PIL/WalImageFile.py,sha256=XzvTP_kO_JuumDBXV4FTRJJG1xhx4KqMnXDkStpaYbk,5831 -PIL/WebPImagePlugin.py,sha256=fkEHsDklgUQYKiFvEV9LjFXnBZO5DmnoEfnek4tWLA0,10407 -PIL/WmfImagePlugin.py,sha256=ehpDBscTFVDIDjBAucagJy2Sl5TD1KzvvG9YT2HZmHk,5211 -PIL/XVThumbImagePlugin.py,sha256=IjmJxrkwUDU1EMzGeiARqMF3OaWMSyvaCpcU-WdBkNs,2233 -PIL/XbmImagePlugin.py,sha256=ZCmHh9Q6ytvsUE0mKAQgigNU5ReZnUEusIKoqeBl3Fs,2777 -PIL/XpmImagePlugin.py,sha256=BliLDJKy-U0EHFRuzYtQWoodmH40IMvejTnLQfqUdFM,3383 +PIL/WebPImagePlugin.py,sha256=FSiQIZ_AMRLDPGscBdK6ogrK8mPKWHxB1Bp2ighR_yY,10383 +PIL/WmfImagePlugin.py,sha256=0iArE6uhAaSopF6E8IOVUbXtWq7rNGjxm_AstdStD4I,5321 +PIL/XVThumbImagePlugin.py,sha256=gAIz01tq1ZwheAmD36NbxZaXX3iWgBIx4sBjIriNbrk,2193 +PIL/XbmImagePlugin.py,sha256=Vz29-10zj3EhAiS_xmfDsxAPAiK3yd7T_6VTE3ExFrA,2762 +PIL/XpmImagePlugin.py,sha256=3ELTLkftgzzotzaacarEAZby64AZKnJJjSc1j4EFvjg,3351 PIL/__init__.py,sha256=98abxVfn8od1jJaTIr65YrYrIb7zMKbOJ5o68ryE2O0,2094 PIL/__main__.py,sha256=X8eIpGlmHfnp7zazp5mdav228Itcf2lkiMP0tLU6X9c,140 PIL/__pycache__/BdfFontFile.cpython-310.pyc,, @@ -182,32 +182,32 @@ PIL/__pycache__/features.cpython-310.pyc,, PIL/__pycache__/report.cpython-310.pyc,, PIL/_binary.py,sha256=cb9p-_mwzBYumlVsWbnoTWsrLo59towA6atLOZvjO3w,2662 PIL/_deprecate.py,sha256=Jy_3Ty-WkxQg51m4pMQ1PgjYpfpJqAzKvvgP59GTUWY,2005 -PIL/_imaging.cp310-win_amd64.pyd,sha256=AR6xvpERmTMPCWhWUysti_yngOXDc8pITxrihTK_IMU,2348032 +PIL/_imaging.cp310-win_amd64.pyd,sha256=ffCyihOXBVX8BRNdCtNwHFWOyJjy-sIF3-5yDIqIS2Q,2458112 PIL/_imaging.pyi,sha256=0c3GC20XgHn8HaIrEYPErvCABBq_wibJlRa8A3RsUk8,899 -PIL/_imagingcms.cp310-win_amd64.pyd,sha256=Nwtx2VGXy5jOFQdNfabgkI3rVMlnfWToOlGv20DJ_TI,264192 +PIL/_imagingcms.cp310-win_amd64.pyd,sha256=vVrMxN-eVC2x52HzxJ3iU6obIMPlnnH9bNxDe50Hl7c,263680 PIL/_imagingcms.pyi,sha256=oB0dV9kzqnZk3CtnVzgZvwpRsPUqbltBZ19xLin7uHo,4532 -PIL/_imagingft.cp310-win_amd64.pyd,sha256=Q_RVLwO1OoUNEPlaLSUtC3U3IkpoG5XvgLE78bHunzM,1828352 +PIL/_imagingft.cp310-win_amd64.pyd,sha256=wXaej0uCebCMCGHR37x1H8BMj8ekQo2peUpwdtZkdTA,1933824 PIL/_imagingft.pyi,sha256=1hXXgNd6d9vEaTLaJzYCJBbH_f5WnSO7MuvbGGCTEgg,1858 -PIL/_imagingmath.cp310-win_amd64.pyd,sha256=rgxDHqOv_S-OqTTPiKKDl1kB7QiN8ha_4PwzfYErfqE,25088 +PIL/_imagingmath.cp310-win_amd64.pyd,sha256=KDOvq4QbdZvbXDlMmeFPT3iPy8KQIfmU6LZZwSEdBYU,25088 PIL/_imagingmath.pyi,sha256=zD8vAoPC8aEIVjfckLtFskRW5saiVel3-sJUA2pHaGc,66 -PIL/_imagingmorph.cp310-win_amd64.pyd,sha256=U71d0Npat4mU83841lbYQa4neBI8JnrxlyMhJG6dC0A,13824 +PIL/_imagingmorph.cp310-win_amd64.pyd,sha256=RlTo8HAgsS0namrfjHKa1VGAIVPNMOsAzt4-j_xNYSc,13824 PIL/_imagingmorph.pyi,sha256=zD8vAoPC8aEIVjfckLtFskRW5saiVel3-sJUA2pHaGc,66 -PIL/_imagingtk.cp310-win_amd64.pyd,sha256=vfqQK4e8cc1GM6ym_kTssloVxOUBXY8dvftkESibD_A,15360 +PIL/_imagingtk.cp310-win_amd64.pyd,sha256=Et6w5Q5_CQx29s-8luA42y1rPyxfihIhgb2GPchtzYY,15360 PIL/_imagingtk.pyi,sha256=zD8vAoPC8aEIVjfckLtFskRW5saiVel3-sJUA2pHaGc,66 PIL/_tkinter_finder.py,sha256=jKydPAxnrytggsZQHB6kAQep6A9kzRNyx_nToT4ClKY,561 -PIL/_typing.py,sha256=cEhC2d5bo_KlT7gOIzWIwjHxy0deRc_iA5avYZ7q_3k,1300 +PIL/_typing.py,sha256=RTNNgWuXxwy5XD0Ku_O7z34WVkNDiiNVtZ0kJeSKajE,1297 PIL/_util.py,sha256=c1SFb0eh9D_Sho4-YMFDZP5YOlpkOicqY7k5TCSrj_A,661 -PIL/_version.py,sha256=mkejFVcrY7PmcX4LRQtqxikQTUY4Gy8EheIcftlcKjg,91 -PIL/_webp.cp310-win_amd64.pyd,sha256=IE_GHeOFu_kPXlYd6AXVxV1ZE9C4p8RdziWuOwniZj4,410112 +PIL/_version.py,sha256=tHiIxJ-8cDdOYB0DHFxoNxd1rpucKP4ViC41kYBnyuQ,91 +PIL/_webp.cp310-win_amd64.pyd,sha256=XdP8vsj0_Yr5Hr5j0s88RwbOvH-c78-QJf84Bb5R_cY,409600 PIL/_webp.pyi,sha256=zD8vAoPC8aEIVjfckLtFskRW5saiVel3-sJUA2pHaGc,66 -PIL/features.py,sha256=RkT695WJ3Zz-8oJZVNtuYvWjSXx0o1SQZTebTXqVXDk,11320 +PIL/features.py,sha256=tjH3CAvbwk0PEJdu_fLMfIjJBCKEnrEBf9WpfLRYF_w,11619 PIL/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 PIL/report.py,sha256=6m7NOv1a24577ZiJoxX89ip5JeOgf2O1F95f6-1K5aM,105 -pillow-11.0.0.dist-info/INSTALLER,sha256=zuuue4knoyJ-UwPPXg8fezS7VCrXJQrAP7zeNuwvFQg,4 -pillow-11.0.0.dist-info/LICENSE,sha256=Kt-eAuQb225DncVxntbF0QJ2EfiWHgq8iy81zxXx6Ic,57500 -pillow-11.0.0.dist-info/METADATA,sha256=2TagS9SDj68xROTQ3ID8cKjjQYA4GPL_0vsYi0FcAh8,9285 -pillow-11.0.0.dist-info/RECORD,, -pillow-11.0.0.dist-info/REQUESTED,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 -pillow-11.0.0.dist-info/WHEEL,sha256=0ZjvOlAkRhiFz0IEm5kQrC9Db9zGCLzyOcgLl0kpzxU,101 -pillow-11.0.0.dist-info/top_level.txt,sha256=riZqrk-hyZqh5f1Z0Zwii3dKfxEsByhu9cU9IODF-NY,4 -pillow-11.0.0.dist-info/zip-safe,sha256=frcCV1k9oG9oKj3dpUqdJg1PxRT2RSN_XKdLCPjaYaY,2 +pillow-11.1.0.dist-info/INSTALLER,sha256=zuuue4knoyJ-UwPPXg8fezS7VCrXJQrAP7zeNuwvFQg,4 +pillow-11.1.0.dist-info/LICENSE,sha256=Y6m7FH97jUPSEfBgAP5AYGc5rZP71csfhEvHQPi8Uew,56662 +pillow-11.1.0.dist-info/METADATA,sha256=sYK2WLlgLj7uN9DKsiS93-M9CuOHSiogmkVnvgc56Aw,9313 +pillow-11.1.0.dist-info/RECORD,, +pillow-11.1.0.dist-info/REQUESTED,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +pillow-11.1.0.dist-info/WHEEL,sha256=tcd-HDpskugT8GYYKyyid0lOlzoZtZdWwcrj5ormtfo,101 +pillow-11.1.0.dist-info/top_level.txt,sha256=riZqrk-hyZqh5f1Z0Zwii3dKfxEsByhu9cU9IODF-NY,4 +pillow-11.1.0.dist-info/zip-safe,sha256=frcCV1k9oG9oKj3dpUqdJg1PxRT2RSN_XKdLCPjaYaY,2 diff --git a/gestao_raul/Lib/site-packages/pillow-11.1.0.dist-info/REQUESTED b/gestao_raul/Lib/site-packages/pillow-11.1.0.dist-info/REQUESTED new file mode 100644 index 0000000..e69de29 diff --git a/gestao_raul/Lib/site-packages/pillow-11.1.0.dist-info/WHEEL b/gestao_raul/Lib/site-packages/pillow-11.1.0.dist-info/WHEEL new file mode 100644 index 0000000..40e7579 --- /dev/null +++ b/gestao_raul/Lib/site-packages/pillow-11.1.0.dist-info/WHEEL @@ -0,0 +1,5 @@ +Wheel-Version: 1.0 +Generator: setuptools (75.6.0) +Root-Is-Purelib: false +Tag: cp310-cp310-win_amd64 + diff --git a/gestao_raul/Lib/site-packages/pillow-11.0.0.dist-info/top_level.txt b/gestao_raul/Lib/site-packages/pillow-11.1.0.dist-info/top_level.txt similarity index 100% rename from gestao_raul/Lib/site-packages/pillow-11.0.0.dist-info/top_level.txt rename to gestao_raul/Lib/site-packages/pillow-11.1.0.dist-info/top_level.txt diff --git a/gestao_raul/Lib/site-packages/pillow-11.0.0.dist-info/zip-safe b/gestao_raul/Lib/site-packages/pillow-11.1.0.dist-info/zip-safe similarity index 100% rename from gestao_raul/Lib/site-packages/pillow-11.0.0.dist-info/zip-safe rename to gestao_raul/Lib/site-packages/pillow-11.1.0.dist-info/zip-safe diff --git a/gestao_raul/Lib/site-packages/pip-23.0.1.dist-info/RECORD b/gestao_raul/Lib/site-packages/pip-23.0.1.dist-info/RECORD deleted file mode 100644 index 0d0d3da..0000000 --- a/gestao_raul/Lib/site-packages/pip-23.0.1.dist-info/RECORD +++ /dev/null @@ -1,1002 +0,0 @@ -../../Scripts/pip.exe,sha256=qR98FEJ4IDeB9dNoevF1cH88r4jqDrA5780ATGE3riw,108426 -../../Scripts/pip3.10.exe,sha256=qR98FEJ4IDeB9dNoevF1cH88r4jqDrA5780ATGE3riw,108426 -../../Scripts/pip3.exe,sha256=qR98FEJ4IDeB9dNoevF1cH88r4jqDrA5780ATGE3riw,108426 -pip-23.0.1.dist-info/INSTALLER,sha256=zuuue4knoyJ-UwPPXg8fezS7VCrXJQrAP7zeNuwvFQg,4 -pip-23.0.1.dist-info/LICENSE.txt,sha256=Y0MApmnUmurmWxLGxIySTFGkzfPR_whtw0VtyLyqIQQ,1093 -pip-23.0.1.dist-info/METADATA,sha256=POh89utz-H1e0K-xDY9CL9gs-x0MjH-AWxbhJG3aaVE,4072 -pip-23.0.1.dist-info/RECORD,, -pip-23.0.1.dist-info/REQUESTED,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 -pip-23.0.1.dist-info/WHEEL,sha256=2wepM1nk4DS4eFpYrW1TTqPcoGNfHhhO_i5m4cOimbo,92 -pip-23.0.1.dist-info/entry_points.txt,sha256=w694mjHYSfmSoUVVSaHoQ9UkOBBdtKKIJbyDRLdKju8,124 -pip-23.0.1.dist-info/top_level.txt,sha256=zuuue4knoyJ-UwPPXg8fezS7VCrXJQrAP7zeNuwvFQg,4 -pip/__init__.py,sha256=5yroedzc2dKKbcynDrHX8vBoLxqU27KmFvvHmdqQN9w,357 -pip/__main__.py,sha256=mXwWDftNLMKfwVqKFWGE_uuBZvGSIiUELhLkeysIuZc,1198 -pip/__pip-runner__.py,sha256=EnrfKmKMzWAdqg_JicLCOP9Y95Ux7zHh4ObvqLtQcjo,1444 -pip/__pycache__/__init__.cpython-310.pyc,, -pip/__pycache__/__main__.cpython-310.pyc,, -pip/__pycache__/__pip-runner__.cpython-310.pyc,, -pip/_internal/__init__.py,sha256=nnFCuxrPMgALrIDxSoy-H6Zj4W4UY60D-uL1aJyq0pc,573 -pip/_internal/__pycache__/__init__.cpython-310.pyc,, -pip/_internal/__pycache__/build_env.cpython-310.pyc,, -pip/_internal/__pycache__/cache.cpython-310.pyc,, -pip/_internal/__pycache__/configuration.cpython-310.pyc,, -pip/_internal/__pycache__/exceptions.cpython-310.pyc,, -pip/_internal/__pycache__/main.cpython-310.pyc,, -pip/_internal/__pycache__/pyproject.cpython-310.pyc,, -pip/_internal/__pycache__/self_outdated_check.cpython-310.pyc,, -pip/_internal/__pycache__/wheel_builder.cpython-310.pyc,, -pip/_internal/build_env.py,sha256=1ESpqw0iupS_K7phZK5zshVE5Czy9BtGLFU4W6Enva8,10243 -pip/_internal/cache.py,sha256=C3n78VnBga9rjPXZqht_4A4d-T25poC7K0qBM7FHDhU,10734 -pip/_internal/cli/__init__.py,sha256=FkHBgpxxb-_gd6r1FjnNhfMOzAUYyXoXKJ6abijfcFU,132 -pip/_internal/cli/__pycache__/__init__.cpython-310.pyc,, -pip/_internal/cli/__pycache__/autocompletion.cpython-310.pyc,, -pip/_internal/cli/__pycache__/base_command.cpython-310.pyc,, -pip/_internal/cli/__pycache__/cmdoptions.cpython-310.pyc,, -pip/_internal/cli/__pycache__/command_context.cpython-310.pyc,, -pip/_internal/cli/__pycache__/main.cpython-310.pyc,, -pip/_internal/cli/__pycache__/main_parser.cpython-310.pyc,, -pip/_internal/cli/__pycache__/parser.cpython-310.pyc,, -pip/_internal/cli/__pycache__/progress_bars.cpython-310.pyc,, -pip/_internal/cli/__pycache__/req_command.cpython-310.pyc,, -pip/_internal/cli/__pycache__/spinners.cpython-310.pyc,, -pip/_internal/cli/__pycache__/status_codes.cpython-310.pyc,, -pip/_internal/cli/autocompletion.py,sha256=wY2JPZY2Eji1vhR7bVo-yCBPJ9LCy6P80iOAhZD1Vi8,6676 -pip/_internal/cli/base_command.py,sha256=t1D5x40Hfn9HnPnMt-iSxvqL14nht2olBCacW74pc-k,7842 -pip/_internal/cli/cmdoptions.py,sha256=0OHXkgnppCtC4QyF28ZL8FBosVUXG5pWj2uzO1CgWhM,29497 -pip/_internal/cli/command_context.py,sha256=RHgIPwtObh5KhMrd3YZTkl8zbVG-6Okml7YbFX4Ehg0,774 -pip/_internal/cli/main.py,sha256=ioJ8IVlb2K1qLOxR-tXkee9lURhYV89CDM71MKag7YY,2472 -pip/_internal/cli/main_parser.py,sha256=laDpsuBDl6kyfywp9eMMA9s84jfH2TJJn-vmL0GG90w,4338 -pip/_internal/cli/parser.py,sha256=tWP-K1uSxnJyXu3WE0kkH3niAYRBeuUaxeydhzOdhL4,10817 -pip/_internal/cli/progress_bars.py,sha256=So4mPoSjXkXiSHiTzzquH3VVyVD_njXlHJSExYPXAow,1968 -pip/_internal/cli/req_command.py,sha256=ypTutLv4j_efxC2f6C6aCQufxre-zaJdi5m_tWlLeBk,18172 -pip/_internal/cli/spinners.py,sha256=hIJ83GerdFgFCdobIA23Jggetegl_uC4Sp586nzFbPE,5118 -pip/_internal/cli/status_codes.py,sha256=sEFHUaUJbqv8iArL3HAtcztWZmGOFX01hTesSytDEh0,116 -pip/_internal/commands/__init__.py,sha256=5oRO9O3dM2vGuh0bFw4HOVletryrz5HHMmmPWwJrH9U,3882 -pip/_internal/commands/__pycache__/__init__.cpython-310.pyc,, -pip/_internal/commands/__pycache__/cache.cpython-310.pyc,, -pip/_internal/commands/__pycache__/check.cpython-310.pyc,, -pip/_internal/commands/__pycache__/completion.cpython-310.pyc,, -pip/_internal/commands/__pycache__/configuration.cpython-310.pyc,, -pip/_internal/commands/__pycache__/debug.cpython-310.pyc,, -pip/_internal/commands/__pycache__/download.cpython-310.pyc,, -pip/_internal/commands/__pycache__/freeze.cpython-310.pyc,, -pip/_internal/commands/__pycache__/hash.cpython-310.pyc,, -pip/_internal/commands/__pycache__/help.cpython-310.pyc,, -pip/_internal/commands/__pycache__/index.cpython-310.pyc,, -pip/_internal/commands/__pycache__/inspect.cpython-310.pyc,, -pip/_internal/commands/__pycache__/install.cpython-310.pyc,, -pip/_internal/commands/__pycache__/list.cpython-310.pyc,, -pip/_internal/commands/__pycache__/search.cpython-310.pyc,, -pip/_internal/commands/__pycache__/show.cpython-310.pyc,, -pip/_internal/commands/__pycache__/uninstall.cpython-310.pyc,, -pip/_internal/commands/__pycache__/wheel.cpython-310.pyc,, -pip/_internal/commands/cache.py,sha256=muaT0mbL-ZUpn6AaushVAipzTiMwE4nV2BLbJBwt_KQ,7582 -pip/_internal/commands/check.py,sha256=0gjXR7j36xJT5cs2heYU_dfOfpnFfzX8OoPNNoKhqdM,1685 -pip/_internal/commands/completion.py,sha256=H0TJvGrdsoleuIyQKzJbicLFppYx2OZA0BLNpQDeFjI,4129 -pip/_internal/commands/configuration.py,sha256=NB5uf8HIX8-li95YLoZO09nALIWlLCHDF5aifSKcBn8,9815 -pip/_internal/commands/debug.py,sha256=AesEID-4gPFDWTwPiPaGZuD4twdT-imaGuMR5ZfSn8s,6591 -pip/_internal/commands/download.py,sha256=LwKEyYMG2L67nQRyGo8hQdNEeMU2bmGWqJfcB8JDXas,5289 -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=cGQVSA5dAs7caQ9sz4kllYvaI4ZpGiq1WhCgaImXNSA,4793 -pip/_internal/commands/inspect.py,sha256=2wSPt9yfr3r6g-s2S5L6PvRtaHNVyb4TuodMStJ39cw,3188 -pip/_internal/commands/install.py,sha256=3vT9tnHOV-p6dPMaKDqzivqmcq_kPAI-jVkxOEwN5C4,32389 -pip/_internal/commands/list.py,sha256=Fk1TSxB33NlRS4qlLQ0xwnytnF9-zkQJbKQYv2xc4Q4,12343 -pip/_internal/commands/search.py,sha256=sbBZiARRc050QquOKcCvOr2K3XLsoYebLKZGRi__iUI,5697 -pip/_internal/commands/show.py,sha256=t5jia4zcYJRJZy4U_Von7zMl03hJmmcofj6oDNTnj7Y,6419 -pip/_internal/commands/uninstall.py,sha256=OIqO9tqadY8kM4HwhFf1Q62fUIp7v8KDrTRo8yWMz7Y,3886 -pip/_internal/commands/wheel.py,sha256=mbFJd4dmUfrVFJkQbK8n2zHyRcD3AI91f7EUo9l3KYg,7396 -pip/_internal/configuration.py,sha256=uBKTus43pDIO6IzT2mLWQeROmHhtnoabhniKNjPYvD0,13529 -pip/_internal/distributions/__init__.py,sha256=Hq6kt6gXBgjNit5hTTWLAzeCNOKoB-N0pGYSqehrli8,858 -pip/_internal/distributions/__pycache__/__init__.cpython-310.pyc,, -pip/_internal/distributions/__pycache__/base.cpython-310.pyc,, -pip/_internal/distributions/__pycache__/installed.cpython-310.pyc,, -pip/_internal/distributions/__pycache__/sdist.cpython-310.pyc,, -pip/_internal/distributions/__pycache__/wheel.cpython-310.pyc,, -pip/_internal/distributions/base.py,sha256=jrF1Vi7eGyqFqMHrieh1PIOrGU7KeCxhYPZnbvtmvGY,1221 -pip/_internal/distributions/installed.py,sha256=NI2OgsgH9iBq9l5vB-56vOg5YsybOy-AU4VE5CSCO2I,729 -pip/_internal/distributions/sdist.py,sha256=SQBdkatXSigKGG_SaD0U0p1Jwdfrg26UCNcHgkXZfdA,6494 -pip/_internal/distributions/wheel.py,sha256=m-J4XO-gvFerlYsFzzSXYDvrx8tLZlJFTCgDxctn8ig,1164 -pip/_internal/exceptions.py,sha256=cU4dz7x-1uFGrf2A1_Np9tKcy599bRJKRJkikgARxW4,24244 -pip/_internal/index/__init__.py,sha256=vpt-JeTZefh8a-FC22ZeBSXFVbuBcXSGiILhQZJaNpQ,30 -pip/_internal/index/__pycache__/__init__.cpython-310.pyc,, -pip/_internal/index/__pycache__/collector.cpython-310.pyc,, -pip/_internal/index/__pycache__/package_finder.cpython-310.pyc,, -pip/_internal/index/__pycache__/sources.cpython-310.pyc,, -pip/_internal/index/collector.py,sha256=3OmYZ3tCoRPGOrELSgQWG-03M-bQHa2-VCA3R_nJAaU,16504 -pip/_internal/index/package_finder.py,sha256=rrUw4vj7QE_eMt022jw--wQiKznMaUgVBkJ1UCrVUxo,37873 -pip/_internal/index/sources.py,sha256=SVyPitv08-Qalh2_Bk5diAJ9GAA_d-a93koouQodAG0,6557 -pip/_internal/locations/__init__.py,sha256=Dh8LJWG8LRlDK4JIj9sfRF96TREzE--N_AIlx7Tqoe4,15365 -pip/_internal/locations/__pycache__/__init__.cpython-310.pyc,, -pip/_internal/locations/__pycache__/_distutils.cpython-310.pyc,, -pip/_internal/locations/__pycache__/_sysconfig.cpython-310.pyc,, -pip/_internal/locations/__pycache__/base.cpython-310.pyc,, -pip/_internal/locations/_distutils.py,sha256=cmi6h63xYNXhQe7KEWEMaANjHFy5yQOPt_1_RCWyXMY,6100 -pip/_internal/locations/_sysconfig.py,sha256=jyNVtUfMIf0mtyY-Xp1m9yQ8iwECozSVVFmjkN9a2yw,7680 -pip/_internal/locations/base.py,sha256=RQiPi1d4FVM2Bxk04dQhXZ2PqkeljEL2fZZ9SYqIQ78,2556 -pip/_internal/main.py,sha256=r-UnUe8HLo5XFJz8inTcOOTiu_sxNhgHb6VwlGUllOI,340 -pip/_internal/metadata/__init__.py,sha256=84j1dPJaIoz5Q2ZTPi0uB1iaDAHiUNfKtYSGQCfFKpo,4280 -pip/_internal/metadata/__pycache__/__init__.cpython-310.pyc,, -pip/_internal/metadata/__pycache__/_json.cpython-310.pyc,, -pip/_internal/metadata/__pycache__/base.cpython-310.pyc,, -pip/_internal/metadata/__pycache__/pkg_resources.cpython-310.pyc,, -pip/_internal/metadata/_json.py,sha256=BTkWfFDrWFwuSodImjtbAh8wCL3isecbnjTb5E6UUDI,2595 -pip/_internal/metadata/base.py,sha256=vIwIo1BtoqegehWMAXhNrpLGYBq245rcaCNkBMPnTU8,25277 -pip/_internal/metadata/importlib/__init__.py,sha256=9ZVO8BoE7NEZPmoHp5Ap_NJo0HgNIezXXg-TFTtt3Z4,107 -pip/_internal/metadata/importlib/__pycache__/__init__.cpython-310.pyc,, -pip/_internal/metadata/importlib/__pycache__/_compat.cpython-310.pyc,, -pip/_internal/metadata/importlib/__pycache__/_dists.cpython-310.pyc,, -pip/_internal/metadata/importlib/__pycache__/_envs.cpython-310.pyc,, -pip/_internal/metadata/importlib/_compat.py,sha256=GAe_prIfCE4iUylrnr_2dJRlkkBVRUbOidEoID7LPoE,1882 -pip/_internal/metadata/importlib/_dists.py,sha256=BUV8y6D0PePZrEN3vfJL-m1FDqZ6YPRgAiBeBinHhNg,8181 -pip/_internal/metadata/importlib/_envs.py,sha256=7BxanCh3T7arusys__O2ZHJdnmDhQXFmfU7x1-jB5xI,7457 -pip/_internal/metadata/pkg_resources.py,sha256=WjwiNdRsvxqxL4MA5Tb5a_q3Q3sUhdpbZF8wGLtPMI0,9773 -pip/_internal/models/__init__.py,sha256=3DHUd_qxpPozfzouoqa9g9ts1Czr5qaHfFxbnxriepM,63 -pip/_internal/models/__pycache__/__init__.cpython-310.pyc,, -pip/_internal/models/__pycache__/candidate.cpython-310.pyc,, -pip/_internal/models/__pycache__/direct_url.cpython-310.pyc,, -pip/_internal/models/__pycache__/format_control.cpython-310.pyc,, -pip/_internal/models/__pycache__/index.cpython-310.pyc,, -pip/_internal/models/__pycache__/installation_report.cpython-310.pyc,, -pip/_internal/models/__pycache__/link.cpython-310.pyc,, -pip/_internal/models/__pycache__/scheme.cpython-310.pyc,, -pip/_internal/models/__pycache__/search_scope.cpython-310.pyc,, -pip/_internal/models/__pycache__/selection_prefs.cpython-310.pyc,, -pip/_internal/models/__pycache__/target_python.cpython-310.pyc,, -pip/_internal/models/__pycache__/wheel.cpython-310.pyc,, -pip/_internal/models/candidate.py,sha256=6pcABsaR7CfIHlbJbr2_kMkVJFL_yrYjTx6SVWUnCPQ,990 -pip/_internal/models/direct_url.py,sha256=f3WiKUwWPdBkT1xm7DlolS32ZAMYh3jbkkVH-BUON5A,6626 -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/installation_report.py,sha256=Hymmzv9-e3WhtewYm2NIOeMyAB6lXp736mpYqb9scZ0,2617 -pip/_internal/models/link.py,sha256=nfybVSpXgVHeU0MkC8hMkN2IgMup8Pdaudg74_sQEC8,18602 -pip/_internal/models/scheme.py,sha256=3EFQp_ICu_shH1-TBqhl0QAusKCPDFOlgHFeN4XowWs,738 -pip/_internal/models/search_scope.py,sha256=iGPQQ6a4Lau8oGQ_FWj8aRLik8A21o03SMO5KnSt-Cg,4644 -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=YqazoIZyma_Q1ejFa1C7NHKQRRWlvWkdK96VRKmDBeI,3600 -pip/_internal/network/__init__.py,sha256=jf6Tt5nV_7zkARBrKojIXItgejvoegVJVKUbhAa5Ioc,50 -pip/_internal/network/__pycache__/__init__.cpython-310.pyc,, -pip/_internal/network/__pycache__/auth.cpython-310.pyc,, -pip/_internal/network/__pycache__/cache.cpython-310.pyc,, -pip/_internal/network/__pycache__/download.cpython-310.pyc,, -pip/_internal/network/__pycache__/lazy_wheel.cpython-310.pyc,, -pip/_internal/network/__pycache__/session.cpython-310.pyc,, -pip/_internal/network/__pycache__/utils.cpython-310.pyc,, -pip/_internal/network/__pycache__/xmlrpc.cpython-310.pyc,, -pip/_internal/network/auth.py,sha256=MQVP0k4hUXk8ReYEfsGQ5t7_TS7cNHQuaHJuBlJLHxU,16507 -pip/_internal/network/cache.py,sha256=hgXftU-eau4MWxHSLquTMzepYq5BPC2zhCkhN3glBy8,2145 -pip/_internal/network/download.py,sha256=HvDDq9bVqaN3jcS3DyVJHP7uTqFzbShdkf7NFSoHfkw,6096 -pip/_internal/network/lazy_wheel.py,sha256=PbPyuleNhtEq6b2S7rufoGXZWMD15FAGL4XeiAQ8FxA,7638 -pip/_internal/network/session.py,sha256=BpDOJ7_Xw5VkgPYWsePzcaqOfcyRZcB2AW7W0HGBST0,18443 -pip/_internal/network/utils.py,sha256=6A5SrUJEEUHxbGtbscwU2NpCyz-3ztiDlGWHpRRhsJ8,4073 -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-310.pyc,, -pip/_internal/operations/__pycache__/check.cpython-310.pyc,, -pip/_internal/operations/__pycache__/freeze.cpython-310.pyc,, -pip/_internal/operations/__pycache__/prepare.cpython-310.pyc,, -pip/_internal/operations/build/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 -pip/_internal/operations/build/__pycache__/__init__.cpython-310.pyc,, -pip/_internal/operations/build/__pycache__/build_tracker.cpython-310.pyc,, -pip/_internal/operations/build/__pycache__/metadata.cpython-310.pyc,, -pip/_internal/operations/build/__pycache__/metadata_editable.cpython-310.pyc,, -pip/_internal/operations/build/__pycache__/metadata_legacy.cpython-310.pyc,, -pip/_internal/operations/build/__pycache__/wheel.cpython-310.pyc,, -pip/_internal/operations/build/__pycache__/wheel_editable.cpython-310.pyc,, -pip/_internal/operations/build/__pycache__/wheel_legacy.cpython-310.pyc,, -pip/_internal/operations/build/build_tracker.py,sha256=vf81EwomN3xe9G8qRJED0VGqNikmRQRQoobNsxi5Xrs,4133 -pip/_internal/operations/build/metadata.py,sha256=9S0CUD8U3QqZeXp-Zyt8HxwU90lE4QrnYDgrqZDzBnc,1422 -pip/_internal/operations/build/metadata_editable.py,sha256=VLL7LvntKE8qxdhUdEJhcotFzUsOSI8NNS043xULKew,1474 -pip/_internal/operations/build/metadata_legacy.py,sha256=o-eU21As175hDC7dluM1fJJ_FqokTIShyWpjKaIpHZw,2198 -pip/_internal/operations/build/wheel.py,sha256=sT12FBLAxDC6wyrDorh8kvcZ1jG5qInCRWzzP-UkJiQ,1075 -pip/_internal/operations/build/wheel_editable.py,sha256=yOtoH6zpAkoKYEUtr8FhzrYnkNHQaQBjWQ2HYae1MQg,1417 -pip/_internal/operations/build/wheel_legacy.py,sha256=C9j6rukgQI1n_JeQLoZGuDdfUwzCXShyIdPTp6edbMQ,3064 -pip/_internal/operations/check.py,sha256=WsN7z0_QSgJjw0JsWWcqOHj4wWTaFv0J7mxgUByDCOg,5122 -pip/_internal/operations/freeze.py,sha256=mwTZ2uML8aQgo3k8MR79a7SZmmmvdAJqdyaknKbavmg,9784 -pip/_internal/operations/install/__init__.py,sha256=mX7hyD2GNBO2mFGokDQ30r_GXv7Y_PLdtxcUv144e-s,51 -pip/_internal/operations/install/__pycache__/__init__.cpython-310.pyc,, -pip/_internal/operations/install/__pycache__/editable_legacy.cpython-310.pyc,, -pip/_internal/operations/install/__pycache__/legacy.cpython-310.pyc,, -pip/_internal/operations/install/__pycache__/wheel.cpython-310.pyc,, -pip/_internal/operations/install/editable_legacy.py,sha256=ee4kfJHNuzTdKItbfAsNOSEwq_vD7DRPGkBdK48yBhU,1354 -pip/_internal/operations/install/legacy.py,sha256=cHdcHebyzf8w7OaOLwcsTNSMSSV8WBoAPFLay_9CjE8,4105 -pip/_internal/operations/install/wheel.py,sha256=CxzEg2wTPX4SxNTPIx0ozTqF1X7LhpCyP3iM2FjcKUE,27407 -pip/_internal/operations/prepare.py,sha256=BeYXrLFpRoV5XBnRXQHxRA2plyC36kK9Pms5D9wjCo4,25091 -pip/_internal/pyproject.py,sha256=QqSZR5AGwtf3HTa8NdbDq2yj9T2r9S2h9gnU4aX2Kvg,6987 -pip/_internal/req/__init__.py,sha256=rUQ9d_Sh3E5kNYqX9pkN0D06YL-LrtcbJQ-LiIonq08,2807 -pip/_internal/req/__pycache__/__init__.cpython-310.pyc,, -pip/_internal/req/__pycache__/constructors.cpython-310.pyc,, -pip/_internal/req/__pycache__/req_file.cpython-310.pyc,, -pip/_internal/req/__pycache__/req_install.cpython-310.pyc,, -pip/_internal/req/__pycache__/req_set.cpython-310.pyc,, -pip/_internal/req/__pycache__/req_uninstall.cpython-310.pyc,, -pip/_internal/req/constructors.py,sha256=ypjtq1mOQ3d2mFkFPMf_6Mr8SLKeHQk3tUKHA1ddG0U,16611 -pip/_internal/req/req_file.py,sha256=N6lPO3c0to_G73YyGAnk7VUYmed5jV4Qxgmt1xtlXVg,17646 -pip/_internal/req/req_install.py,sha256=X4WNQlTtvkeATwWdSiJcNLihwbYI_EnGDgE99p-Aa00,35763 -pip/_internal/req/req_set.py,sha256=j3esG0s6SzoVReX9rWn4rpYNtyET_fwxbwJPRimvRxo,2858 -pip/_internal/req/req_uninstall.py,sha256=ZFQfgSNz6H1BMsgl87nQNr2iaQCcbFcmXpW8rKVQcic,24045 -pip/_internal/resolution/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 -pip/_internal/resolution/__pycache__/__init__.cpython-310.pyc,, -pip/_internal/resolution/__pycache__/base.cpython-310.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-310.pyc,, -pip/_internal/resolution/legacy/__pycache__/resolver.cpython-310.pyc,, -pip/_internal/resolution/legacy/resolver.py,sha256=9em8D5TcSsEN4xZM1WreaRShOnyM4LlvhMSHpUPsocE,24129 -pip/_internal/resolution/resolvelib/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 -pip/_internal/resolution/resolvelib/__pycache__/__init__.cpython-310.pyc,, -pip/_internal/resolution/resolvelib/__pycache__/base.cpython-310.pyc,, -pip/_internal/resolution/resolvelib/__pycache__/candidates.cpython-310.pyc,, -pip/_internal/resolution/resolvelib/__pycache__/factory.cpython-310.pyc,, -pip/_internal/resolution/resolvelib/__pycache__/found_candidates.cpython-310.pyc,, -pip/_internal/resolution/resolvelib/__pycache__/provider.cpython-310.pyc,, -pip/_internal/resolution/resolvelib/__pycache__/reporter.cpython-310.pyc,, -pip/_internal/resolution/resolvelib/__pycache__/requirements.cpython-310.pyc,, -pip/_internal/resolution/resolvelib/__pycache__/resolver.cpython-310.pyc,, -pip/_internal/resolution/resolvelib/base.py,sha256=u1O4fkvCO4mhmu5i32xrDv9AX5NgUci_eYVyBDQhTIM,5220 -pip/_internal/resolution/resolvelib/candidates.py,sha256=6kQZeMzwibnL4lO6bW0hUQQjNEvXfADdFphRRkRvOtc,18963 -pip/_internal/resolution/resolvelib/factory.py,sha256=OnjkLIgyk5Tol7uOOqapA1D4qiRHWmPU18DF1yN5N8o,27878 -pip/_internal/resolution/resolvelib/found_candidates.py,sha256=hvL3Hoa9VaYo-qEOZkBi2Iqw251UDxPz-uMHVaWmLpE,5705 -pip/_internal/resolution/resolvelib/provider.py,sha256=Vd4jW_NnyifB-HMkPYtZIO70M3_RM0MbL5YV6XyBM-w,9914 -pip/_internal/resolution/resolvelib/reporter.py,sha256=3ZVVYrs5PqvLFJkGLcuXoMK5mTInFzl31xjUpDBpZZk,2526 -pip/_internal/resolution/resolvelib/requirements.py,sha256=B1ndvKPSuyyyTEXt9sKhbwminViSWnBrJa7qO2ln4Z0,5455 -pip/_internal/resolution/resolvelib/resolver.py,sha256=nYZ9bTFXj5c1ILKnkSgU7tUCTYyo5V5J-J0sKoA7Wzg,11533 -pip/_internal/self_outdated_check.py,sha256=pnqBuKKZQ8OxKP0MaUUiDHl3AtyoMJHHG4rMQ7YcYXY,8167 -pip/_internal/utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 -pip/_internal/utils/__pycache__/__init__.cpython-310.pyc,, -pip/_internal/utils/__pycache__/_log.cpython-310.pyc,, -pip/_internal/utils/__pycache__/appdirs.cpython-310.pyc,, -pip/_internal/utils/__pycache__/compat.cpython-310.pyc,, -pip/_internal/utils/__pycache__/compatibility_tags.cpython-310.pyc,, -pip/_internal/utils/__pycache__/datetime.cpython-310.pyc,, -pip/_internal/utils/__pycache__/deprecation.cpython-310.pyc,, -pip/_internal/utils/__pycache__/direct_url_helpers.cpython-310.pyc,, -pip/_internal/utils/__pycache__/distutils_args.cpython-310.pyc,, -pip/_internal/utils/__pycache__/egg_link.cpython-310.pyc,, -pip/_internal/utils/__pycache__/encoding.cpython-310.pyc,, -pip/_internal/utils/__pycache__/entrypoints.cpython-310.pyc,, -pip/_internal/utils/__pycache__/filesystem.cpython-310.pyc,, -pip/_internal/utils/__pycache__/filetypes.cpython-310.pyc,, -pip/_internal/utils/__pycache__/glibc.cpython-310.pyc,, -pip/_internal/utils/__pycache__/hashes.cpython-310.pyc,, -pip/_internal/utils/__pycache__/inject_securetransport.cpython-310.pyc,, -pip/_internal/utils/__pycache__/logging.cpython-310.pyc,, -pip/_internal/utils/__pycache__/misc.cpython-310.pyc,, -pip/_internal/utils/__pycache__/models.cpython-310.pyc,, -pip/_internal/utils/__pycache__/packaging.cpython-310.pyc,, -pip/_internal/utils/__pycache__/setuptools_build.cpython-310.pyc,, -pip/_internal/utils/__pycache__/subprocess.cpython-310.pyc,, -pip/_internal/utils/__pycache__/temp_dir.cpython-310.pyc,, -pip/_internal/utils/__pycache__/unpacking.cpython-310.pyc,, -pip/_internal/utils/__pycache__/urls.cpython-310.pyc,, -pip/_internal/utils/__pycache__/virtualenv.cpython-310.pyc,, -pip/_internal/utils/__pycache__/wheel.cpython-310.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=OLc7GzDwPob9y8jscDYCKUNBV-9CWwqFplBOJPLOpBM,5764 -pip/_internal/utils/direct_url_helpers.py,sha256=6F1tc2rcKaCZmgfVwsE6ObIe_Pux23mUVYA-2D9wCFc,3206 -pip/_internal/utils/distutils_args.py,sha256=bYUt4wfFJRaeGO4VHia6FNaA8HlYXMcKuEq1zYijY5g,1115 -pip/_internal/utils/egg_link.py,sha256=ZryCchR_yQSCsdsMkCpxQjjLbQxObA5GDtLG0RR5mGc,2118 -pip/_internal/utils/encoding.py,sha256=qqsXDtiwMIjXMEiIVSaOjwH5YmirCaK-dIzb6-XJsL0,1169 -pip/_internal/utils/entrypoints.py,sha256=YlhLTRl2oHBAuqhc-zmL7USS67TPWVHImjeAQHreZTQ,3064 -pip/_internal/utils/filesystem.py,sha256=RhMIXUaNVMGjc3rhsDahWQ4MavvEQDdqXqgq-F6fpw8,5122 -pip/_internal/utils/filetypes.py,sha256=i8XAQ0eFCog26Fw9yV0Yb1ygAqKYB1w9Cz9n0fj8gZU,716 -pip/_internal/utils/glibc.py,sha256=tDfwVYnJCOC0BNVpItpy8CGLP9BjkxFHdl0mTS0J7fc,3110 -pip/_internal/utils/hashes.py,sha256=1WhkVNIHNfuYLafBHThIjVKGplxFJXSlQtuG2mXNlJI,4831 -pip/_internal/utils/inject_securetransport.py,sha256=o-QRVMGiENrTJxw3fAhA7uxpdEdw6M41TjHYtSVRrcg,795 -pip/_internal/utils/logging.py,sha256=U2q0i1n8hPS2gQh8qcocAg5dovGAa_bR24akmXMzrk4,11632 -pip/_internal/utils/misc.py,sha256=XLtMDOmy8mWiNLuPIhxPdO1bWIleLdN6JnWDZsXfTgE,22253 -pip/_internal/utils/models.py,sha256=5GoYU586SrxURMvDn_jBMJInitviJg4O5-iOU-6I0WY,1193 -pip/_internal/utils/packaging.py,sha256=5Wm6_x7lKrlqVjPI5MBN_RurcRHwVYoQ7Ksrs84de7s,2108 -pip/_internal/utils/setuptools_build.py,sha256=4i3CuS34yNrkePnZ73rR47pyDzpZBo-SX9V5PNDSSHY,5662 -pip/_internal/utils/subprocess.py,sha256=0EMhgfPGFk8FZn6Qq7Hp9PN6YHuQNWiVby4DXcTCON4,9200 -pip/_internal/utils/temp_dir.py,sha256=aCX489gRa4Nu0dMKRFyGhV6maJr60uEynu5uCbKR4Qg,7702 -pip/_internal/utils/unpacking.py,sha256=SBb2iV1crb89MDRTEKY86R4A_UOWApTQn9VQVcMDOlE,8821 -pip/_internal/utils/urls.py,sha256=AhaesUGl-9it6uvG6fsFPOr9ynFpGaTMk4t5XTX7Z_Q,1759 -pip/_internal/utils/virtualenv.py,sha256=S6f7csYorRpiD6cvn3jISZYc3I8PJC43H5iMFpRAEDU,3456 -pip/_internal/utils/wheel.py,sha256=lXOgZyTlOm5HmK8tw5iw0A3_5A6wRzsXHOaQkIvvloU,4549 -pip/_internal/vcs/__init__.py,sha256=UAqvzpbi0VbZo3Ub6skEeZAw-ooIZR-zX_WpCbxyCoU,596 -pip/_internal/vcs/__pycache__/__init__.cpython-310.pyc,, -pip/_internal/vcs/__pycache__/bazaar.cpython-310.pyc,, -pip/_internal/vcs/__pycache__/git.cpython-310.pyc,, -pip/_internal/vcs/__pycache__/mercurial.cpython-310.pyc,, -pip/_internal/vcs/__pycache__/subversion.cpython-310.pyc,, -pip/_internal/vcs/__pycache__/versioncontrol.cpython-310.pyc,, -pip/_internal/vcs/bazaar.py,sha256=j0oin0fpGRHcCFCxEcpPCQoFEvA-DMLULKdGP8Nv76o,3519 -pip/_internal/vcs/git.py,sha256=mjhwudCx9WlLNkxZ6_kOKmueF0rLoU2i1xeASKF6yiQ,18116 -pip/_internal/vcs/mercurial.py,sha256=Bzbd518Jsx-EJI0IhIobiQqiRsUv5TWYnrmRIFWE0Gw,5238 -pip/_internal/vcs/subversion.py,sha256=vhZs8L-TNggXqM1bbhl-FpbxE3TrIB6Tgnx8fh3S2HE,11729 -pip/_internal/vcs/versioncontrol.py,sha256=KUOc-hN51em9jrqxKwUR3JnkgSE-xSOqMiiJcSaL6B8,22811 -pip/_internal/wheel_builder.py,sha256=8cObBCu4mIsMJqZM7xXI9DO3vldiAnRNa1Gt6izPPTs,13079 -pip/_vendor/__init__.py,sha256=fNxOSVD0auElsD8fN9tuq5psfgMQ-RFBtD4X5gjlRkg,4966 -pip/_vendor/__pycache__/__init__.cpython-310.pyc,, -pip/_vendor/__pycache__/six.cpython-310.pyc,, -pip/_vendor/__pycache__/typing_extensions.cpython-310.pyc,, -pip/_vendor/cachecontrol/__init__.py,sha256=hrxlv3q7upsfyMw8k3gQ9vagBax1pYHSGGqYlZ0Zk0M,465 -pip/_vendor/cachecontrol/__pycache__/__init__.cpython-310.pyc,, -pip/_vendor/cachecontrol/__pycache__/_cmd.cpython-310.pyc,, -pip/_vendor/cachecontrol/__pycache__/adapter.cpython-310.pyc,, -pip/_vendor/cachecontrol/__pycache__/cache.cpython-310.pyc,, -pip/_vendor/cachecontrol/__pycache__/compat.cpython-310.pyc,, -pip/_vendor/cachecontrol/__pycache__/controller.cpython-310.pyc,, -pip/_vendor/cachecontrol/__pycache__/filewrapper.cpython-310.pyc,, -pip/_vendor/cachecontrol/__pycache__/heuristics.cpython-310.pyc,, -pip/_vendor/cachecontrol/__pycache__/serialize.cpython-310.pyc,, -pip/_vendor/cachecontrol/__pycache__/wrapper.cpython-310.pyc,, -pip/_vendor/cachecontrol/_cmd.py,sha256=lxUXqfNTVx84zf6tcWbkLZHA6WVBRtJRpfeA9ZqhaAY,1379 -pip/_vendor/cachecontrol/adapter.py,sha256=ew9OYEQHEOjvGl06ZsuX8W3DAvHWsQKHwWAxISyGug8,5033 -pip/_vendor/cachecontrol/cache.py,sha256=Tty45fOjH40fColTGkqKQvQQmbYsMpk-nCyfLcv2vG4,1535 -pip/_vendor/cachecontrol/caches/__init__.py,sha256=h-1cUmOz6mhLsjTjOrJ8iPejpGdLCyG4lzTftfGZvLg,242 -pip/_vendor/cachecontrol/caches/__pycache__/__init__.cpython-310.pyc,, -pip/_vendor/cachecontrol/caches/__pycache__/file_cache.cpython-310.pyc,, -pip/_vendor/cachecontrol/caches/__pycache__/redis_cache.cpython-310.pyc,, -pip/_vendor/cachecontrol/caches/file_cache.py,sha256=GpexcE29LoY4MaZwPUTcUBZaDdcsjqyLxZFznk8Hbr4,5271 -pip/_vendor/cachecontrol/caches/redis_cache.py,sha256=mp-QWonP40I3xJGK3XVO-Gs9a3UjzlqqEmp9iLJH9F4,1033 -pip/_vendor/cachecontrol/compat.py,sha256=LNx7vqBndYdHU8YuJt53ab_8rzMGTXVrvMb7CZJkxG0,778 -pip/_vendor/cachecontrol/controller.py,sha256=bAYrt7x_VH4toNpI066LQxbHpYGpY1MxxmZAhspplvw,16416 -pip/_vendor/cachecontrol/filewrapper.py,sha256=X4BAQOO26GNOR7nH_fhTzAfeuct2rBQcx_15MyFBpcs,3946 -pip/_vendor/cachecontrol/heuristics.py,sha256=8kAyuZLSCyEIgQr6vbUwfhpqg9ows4mM0IV6DWazevI,4154 -pip/_vendor/cachecontrol/serialize.py,sha256=_U1NU_C-SDgFzkbAxAsPDgMTHeTWZZaHCQnZN_jh0U8,7105 -pip/_vendor/cachecontrol/wrapper.py,sha256=X3-KMZ20Ho3VtqyVaXclpeQpFzokR5NE8tZSfvKVaB8,774 -pip/_vendor/certifi/__init__.py,sha256=bK_nm9bLJzNvWZc2oZdiTwg2KWD4HSPBWGaM0zUDvMw,94 -pip/_vendor/certifi/__main__.py,sha256=1k3Cr95vCxxGRGDljrW3wMdpZdL3Nhf0u1n-k2qdsCY,255 -pip/_vendor/certifi/__pycache__/__init__.cpython-310.pyc,, -pip/_vendor/certifi/__pycache__/__main__.cpython-310.pyc,, -pip/_vendor/certifi/__pycache__/core.cpython-310.pyc,, -pip/_vendor/certifi/cacert.pem,sha256=LBHDzgj_xA05AxnHK8ENT5COnGNElNZe0svFUHMf1SQ,275233 -pip/_vendor/certifi/core.py,sha256=ZwiOsv-sD_ouU1ft8wy_xZ3LQ7UbcVzyqj2XNyrsZis,4279 -pip/_vendor/chardet/__init__.py,sha256=57R-HSxj0PWmILMN0GFmUNqEMfrEVSamXyjD-W6_fbs,4797 -pip/_vendor/chardet/__pycache__/__init__.cpython-310.pyc,, -pip/_vendor/chardet/__pycache__/big5freq.cpython-310.pyc,, -pip/_vendor/chardet/__pycache__/big5prober.cpython-310.pyc,, -pip/_vendor/chardet/__pycache__/chardistribution.cpython-310.pyc,, -pip/_vendor/chardet/__pycache__/charsetgroupprober.cpython-310.pyc,, -pip/_vendor/chardet/__pycache__/charsetprober.cpython-310.pyc,, -pip/_vendor/chardet/__pycache__/codingstatemachine.cpython-310.pyc,, -pip/_vendor/chardet/__pycache__/codingstatemachinedict.cpython-310.pyc,, -pip/_vendor/chardet/__pycache__/cp949prober.cpython-310.pyc,, -pip/_vendor/chardet/__pycache__/enums.cpython-310.pyc,, -pip/_vendor/chardet/__pycache__/escprober.cpython-310.pyc,, -pip/_vendor/chardet/__pycache__/escsm.cpython-310.pyc,, -pip/_vendor/chardet/__pycache__/eucjpprober.cpython-310.pyc,, -pip/_vendor/chardet/__pycache__/euckrfreq.cpython-310.pyc,, -pip/_vendor/chardet/__pycache__/euckrprober.cpython-310.pyc,, -pip/_vendor/chardet/__pycache__/euctwfreq.cpython-310.pyc,, -pip/_vendor/chardet/__pycache__/euctwprober.cpython-310.pyc,, -pip/_vendor/chardet/__pycache__/gb2312freq.cpython-310.pyc,, -pip/_vendor/chardet/__pycache__/gb2312prober.cpython-310.pyc,, -pip/_vendor/chardet/__pycache__/hebrewprober.cpython-310.pyc,, -pip/_vendor/chardet/__pycache__/jisfreq.cpython-310.pyc,, -pip/_vendor/chardet/__pycache__/johabfreq.cpython-310.pyc,, -pip/_vendor/chardet/__pycache__/johabprober.cpython-310.pyc,, -pip/_vendor/chardet/__pycache__/jpcntx.cpython-310.pyc,, -pip/_vendor/chardet/__pycache__/langbulgarianmodel.cpython-310.pyc,, -pip/_vendor/chardet/__pycache__/langgreekmodel.cpython-310.pyc,, -pip/_vendor/chardet/__pycache__/langhebrewmodel.cpython-310.pyc,, -pip/_vendor/chardet/__pycache__/langhungarianmodel.cpython-310.pyc,, -pip/_vendor/chardet/__pycache__/langrussianmodel.cpython-310.pyc,, -pip/_vendor/chardet/__pycache__/langthaimodel.cpython-310.pyc,, -pip/_vendor/chardet/__pycache__/langturkishmodel.cpython-310.pyc,, -pip/_vendor/chardet/__pycache__/latin1prober.cpython-310.pyc,, -pip/_vendor/chardet/__pycache__/macromanprober.cpython-310.pyc,, -pip/_vendor/chardet/__pycache__/mbcharsetprober.cpython-310.pyc,, -pip/_vendor/chardet/__pycache__/mbcsgroupprober.cpython-310.pyc,, -pip/_vendor/chardet/__pycache__/mbcssm.cpython-310.pyc,, -pip/_vendor/chardet/__pycache__/resultdict.cpython-310.pyc,, -pip/_vendor/chardet/__pycache__/sbcharsetprober.cpython-310.pyc,, -pip/_vendor/chardet/__pycache__/sbcsgroupprober.cpython-310.pyc,, -pip/_vendor/chardet/__pycache__/sjisprober.cpython-310.pyc,, -pip/_vendor/chardet/__pycache__/universaldetector.cpython-310.pyc,, -pip/_vendor/chardet/__pycache__/utf1632prober.cpython-310.pyc,, -pip/_vendor/chardet/__pycache__/utf8prober.cpython-310.pyc,, -pip/_vendor/chardet/__pycache__/version.cpython-310.pyc,, -pip/_vendor/chardet/big5freq.py,sha256=ltcfP-3PjlNHCoo5e4a7C4z-2DhBTXRfY6jbMbB7P30,31274 -pip/_vendor/chardet/big5prober.py,sha256=lPMfwCX6v2AaPgvFh_cSWZcgLDbWiFCHLZ_p9RQ9uxE,1763 -pip/_vendor/chardet/chardistribution.py,sha256=13B8XUG4oXDuLdXvfbIWwLFeR-ZU21AqTS1zcdON8bU,10032 -pip/_vendor/chardet/charsetgroupprober.py,sha256=UKK3SaIZB2PCdKSIS0gnvMtLR9JJX62M-fZJu3OlWyg,3915 -pip/_vendor/chardet/charsetprober.py,sha256=L3t8_wIOov8em-vZWOcbkdsrwe43N6_gqNh5pH7WPd4,5420 -pip/_vendor/chardet/cli/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 -pip/_vendor/chardet/cli/__pycache__/__init__.cpython-310.pyc,, -pip/_vendor/chardet/cli/__pycache__/chardetect.cpython-310.pyc,, -pip/_vendor/chardet/cli/chardetect.py,sha256=zibMVg5RpKb-ME9_7EYG4ZM2Sf07NHcQzZ12U-rYJho,3242 -pip/_vendor/chardet/codingstatemachine.py,sha256=K7k69sw3jY5DmTXoSJQVsUtFIQKYPQVOSJJhBuGv_yE,3732 -pip/_vendor/chardet/codingstatemachinedict.py,sha256=0GY3Hi2qIZvDrOOJ3AtqppM1RsYxr_66ER4EHjuMiMc,542 -pip/_vendor/chardet/cp949prober.py,sha256=0jKRV7fECuWI16rNnks0ZECKA1iZYCIEaP8A1ZvjUSI,1860 -pip/_vendor/chardet/enums.py,sha256=TzECiZoCKNMqgwU76cPCeKWFBqaWvAdLMev5_bCkhY8,1683 -pip/_vendor/chardet/escprober.py,sha256=Kho48X65xE0scFylIdeJjM2bcbvRvv0h0WUbMWrJD3A,4006 -pip/_vendor/chardet/escsm.py,sha256=AqyXpA2FQFD7k-buBty_7itGEYkhmVa8X09NLRul3QM,12176 -pip/_vendor/chardet/eucjpprober.py,sha256=5KYaM9fsxkRYzw1b5k0fL-j_-ezIw-ij9r97a9MHxLY,3934 -pip/_vendor/chardet/euckrfreq.py,sha256=3mHuRvXfsq_QcQysDQFb8qSudvTiol71C6Ic2w57tKM,13566 -pip/_vendor/chardet/euckrprober.py,sha256=hiFT6wM174GIwRvqDsIcuOc-dDsq2uPKMKbyV8-1Xnc,1753 -pip/_vendor/chardet/euctwfreq.py,sha256=2alILE1Lh5eqiFJZjzRkMQXolNJRHY5oBQd-vmZYFFM,36913 -pip/_vendor/chardet/euctwprober.py,sha256=NxbpNdBtU0VFI0bKfGfDkpP7S2_8_6FlO87dVH0ogws,1753 -pip/_vendor/chardet/gb2312freq.py,sha256=49OrdXzD-HXqwavkqjo8Z7gvs58hONNzDhAyMENNkvY,20735 -pip/_vendor/chardet/gb2312prober.py,sha256=KPEBueaSLSvBpFeINMu0D6TgHcR90e5PaQawifzF4o0,1759 -pip/_vendor/chardet/hebrewprober.py,sha256=96T_Lj_OmW-fK7JrSHojYjyG3fsGgbzkoTNleZ3kfYE,14537 -pip/_vendor/chardet/jisfreq.py,sha256=mm8tfrwqhpOd3wzZKS4NJqkYBQVcDfTM2JiQ5aW932E,25796 -pip/_vendor/chardet/johabfreq.py,sha256=dBpOYG34GRX6SL8k_LbS9rxZPMjLjoMlgZ03Pz5Hmqc,42498 -pip/_vendor/chardet/johabprober.py,sha256=O1Qw9nVzRnun7vZp4UZM7wvJSv9W941mEU9uDMnY3DU,1752 -pip/_vendor/chardet/jpcntx.py,sha256=uhHrYWkLxE_rF5OkHKInm0HUsrjgKHHVQvtt3UcvotA,27055 -pip/_vendor/chardet/langbulgarianmodel.py,sha256=vmbvYFP8SZkSxoBvLkFqKiH1sjma5ihk3PTpdy71Rr4,104562 -pip/_vendor/chardet/langgreekmodel.py,sha256=JfB7bupjjJH2w3X_mYnQr9cJA_7EuITC2cRW13fUjeI,98484 -pip/_vendor/chardet/langhebrewmodel.py,sha256=3HXHaLQPNAGcXnJjkIJfozNZLTvTJmf4W5Awi6zRRKc,98196 -pip/_vendor/chardet/langhungarianmodel.py,sha256=WxbeQIxkv8YtApiNqxQcvj-tMycsoI4Xy-fwkDHpP_Y,101363 -pip/_vendor/chardet/langrussianmodel.py,sha256=s395bTZ87ESTrZCOdgXbEjZ9P1iGPwCl_8xSsac_DLY,128035 -pip/_vendor/chardet/langthaimodel.py,sha256=7bJlQitRpTnVGABmbSznHnJwOHDy3InkTvtFUx13WQI,102774 -pip/_vendor/chardet/langturkishmodel.py,sha256=XY0eGdTIy4eQ9Xg1LVPZacb-UBhHBR-cq0IpPVHowKc,95372 -pip/_vendor/chardet/latin1prober.py,sha256=p15EEmFbmQUwbKLC7lOJVGHEZwcG45ubEZYTGu01J5g,5380 -pip/_vendor/chardet/macromanprober.py,sha256=9anfzmY6TBfUPDyBDOdY07kqmTHpZ1tK0jL-p1JWcOY,6077 -pip/_vendor/chardet/mbcharsetprober.py,sha256=Wr04WNI4F3X_VxEverNG-H25g7u-MDDKlNt-JGj-_uU,3715 -pip/_vendor/chardet/mbcsgroupprober.py,sha256=iRpaNBjV0DNwYPu_z6TiHgRpwYahiM7ztI_4kZ4Uz9A,2131 -pip/_vendor/chardet/mbcssm.py,sha256=hUtPvDYgWDaA2dWdgLsshbwRfm3Q5YRlRogdmeRUNQw,30391 -pip/_vendor/chardet/metadata/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 -pip/_vendor/chardet/metadata/__pycache__/__init__.cpython-310.pyc,, -pip/_vendor/chardet/metadata/__pycache__/languages.cpython-310.pyc,, -pip/_vendor/chardet/metadata/languages.py,sha256=FhvBIdZFxRQ-dTwkb_0madRKgVBCaUMQz9I5xqjE5iQ,13560 -pip/_vendor/chardet/resultdict.py,sha256=ez4FRvN5KaSosJeJ2WzUyKdDdg35HDy_SSLPXKCdt5M,402 -pip/_vendor/chardet/sbcharsetprober.py,sha256=-nd3F90i7GpXLjehLVHqVBE0KlWzGvQUPETLBNn4o6U,6400 -pip/_vendor/chardet/sbcsgroupprober.py,sha256=gcgI0fOfgw_3YTClpbra_MNxwyEyJ3eUXraoLHYb59E,4137 -pip/_vendor/chardet/sjisprober.py,sha256=aqQufMzRw46ZpFlzmYaYeT2-nzmKb-hmcrApppJ862k,4007 -pip/_vendor/chardet/universaldetector.py,sha256=xYBrg4x0dd9WnT8qclfADVD9ondrUNkqPmvte1pa520,14848 -pip/_vendor/chardet/utf1632prober.py,sha256=pw1epGdMj1hDGiCu1AHqqzOEfjX8MVdiW7O1BlT8-eQ,8505 -pip/_vendor/chardet/utf8prober.py,sha256=8m08Ub5490H4jQ6LYXvFysGtgKoKsHUd2zH_i8_TnVw,2812 -pip/_vendor/chardet/version.py,sha256=lGtJcxGM44Qz4Cbk4rbbmrKxnNr1-97U25TameLehZw,244 -pip/_vendor/colorama/__init__.py,sha256=wePQA4U20tKgYARySLEC047ucNX-g8pRLpYBuiHlLb8,266 -pip/_vendor/colorama/__pycache__/__init__.cpython-310.pyc,, -pip/_vendor/colorama/__pycache__/ansi.cpython-310.pyc,, -pip/_vendor/colorama/__pycache__/ansitowin32.cpython-310.pyc,, -pip/_vendor/colorama/__pycache__/initialise.cpython-310.pyc,, -pip/_vendor/colorama/__pycache__/win32.cpython-310.pyc,, -pip/_vendor/colorama/__pycache__/winterm.cpython-310.pyc,, -pip/_vendor/colorama/ansi.py,sha256=Top4EeEuaQdBWdteKMEcGOTeKeF19Q-Wo_6_Cj5kOzQ,2522 -pip/_vendor/colorama/ansitowin32.py,sha256=vPNYa3OZbxjbuFyaVo0Tmhmy1FZ1lKMWCnT7odXpItk,11128 -pip/_vendor/colorama/initialise.py,sha256=-hIny86ClXo39ixh5iSCfUIa2f_h_bgKRDW7gqs-KLU,3325 -pip/_vendor/colorama/tests/__init__.py,sha256=MkgPAEzGQd-Rq0w0PZXSX2LadRWhUECcisJY8lSrm4Q,75 -pip/_vendor/colorama/tests/__pycache__/__init__.cpython-310.pyc,, -pip/_vendor/colorama/tests/__pycache__/ansi_test.cpython-310.pyc,, -pip/_vendor/colorama/tests/__pycache__/ansitowin32_test.cpython-310.pyc,, -pip/_vendor/colorama/tests/__pycache__/initialise_test.cpython-310.pyc,, -pip/_vendor/colorama/tests/__pycache__/isatty_test.cpython-310.pyc,, -pip/_vendor/colorama/tests/__pycache__/utils.cpython-310.pyc,, -pip/_vendor/colorama/tests/__pycache__/winterm_test.cpython-310.pyc,, -pip/_vendor/colorama/tests/ansi_test.py,sha256=FeViDrUINIZcr505PAxvU4AjXz1asEiALs9GXMhwRaE,2839 -pip/_vendor/colorama/tests/ansitowin32_test.py,sha256=RN7AIhMJ5EqDsYaCjVo-o4u8JzDD4ukJbmevWKS70rY,10678 -pip/_vendor/colorama/tests/initialise_test.py,sha256=BbPy-XfyHwJ6zKozuQOvNvQZzsx9vdb_0bYXn7hsBTc,6741 -pip/_vendor/colorama/tests/isatty_test.py,sha256=Pg26LRpv0yQDB5Ac-sxgVXG7hsA1NYvapFgApZfYzZg,1866 -pip/_vendor/colorama/tests/utils.py,sha256=1IIRylG39z5-dzq09R_ngufxyPZxgldNbrxKxUGwGKE,1079 -pip/_vendor/colorama/tests/winterm_test.py,sha256=qoWFPEjym5gm2RuMwpf3pOis3a5r_PJZFCzK254JL8A,3709 -pip/_vendor/colorama/win32.py,sha256=YQOKwMTwtGBbsY4dL5HYTvwTeP9wIQra5MvPNddpxZs,6181 -pip/_vendor/colorama/winterm.py,sha256=XCQFDHjPi6AHYNdZwy0tA02H-Jh48Jp-HvCjeLeLp3U,7134 -pip/_vendor/distlib/__init__.py,sha256=acgfseOC55dNrVAzaBKpUiH3Z6V7Q1CaxsiQ3K7pC-E,581 -pip/_vendor/distlib/__pycache__/__init__.cpython-310.pyc,, -pip/_vendor/distlib/__pycache__/compat.cpython-310.pyc,, -pip/_vendor/distlib/__pycache__/database.cpython-310.pyc,, -pip/_vendor/distlib/__pycache__/index.cpython-310.pyc,, -pip/_vendor/distlib/__pycache__/locators.cpython-310.pyc,, -pip/_vendor/distlib/__pycache__/manifest.cpython-310.pyc,, -pip/_vendor/distlib/__pycache__/markers.cpython-310.pyc,, -pip/_vendor/distlib/__pycache__/metadata.cpython-310.pyc,, -pip/_vendor/distlib/__pycache__/resources.cpython-310.pyc,, -pip/_vendor/distlib/__pycache__/scripts.cpython-310.pyc,, -pip/_vendor/distlib/__pycache__/util.cpython-310.pyc,, -pip/_vendor/distlib/__pycache__/version.cpython-310.pyc,, -pip/_vendor/distlib/__pycache__/wheel.cpython-310.pyc,, -pip/_vendor/distlib/compat.py,sha256=tfoMrj6tujk7G4UC2owL6ArgDuCKabgBxuJRGZSmpko,41259 -pip/_vendor/distlib/database.py,sha256=o_mw0fAr93NDAHHHfqG54Y1Hi9Rkfrp2BX15XWZYK50,51697 -pip/_vendor/distlib/index.py,sha256=HFiDG7LMoaBs829WuotrfIwcErOOExUOR_AeBtw_TCU,20834 -pip/_vendor/distlib/locators.py,sha256=wNzG-zERzS_XGls-nBPVVyLRHa2skUlkn0-5n0trMWA,51991 -pip/_vendor/distlib/manifest.py,sha256=nQEhYmgoreaBZzyFzwYsXxJARu3fo4EkunU163U16iE,14811 -pip/_vendor/distlib/markers.py,sha256=TpHHHLgkzyT7YHbwj-2i6weRaq-Ivy2-MUnrDkjau-U,5058 -pip/_vendor/distlib/metadata.py,sha256=g_DIiu8nBXRzA-mWPRpatHGbmFZqaFoss7z9TG7QSUU,39801 -pip/_vendor/distlib/resources.py,sha256=LwbPksc0A1JMbi6XnuPdMBUn83X7BPuFNWqPGEKI698,10820 -pip/_vendor/distlib/scripts.py,sha256=BmkTKmiTk4m2cj-iueliatwz3ut_9SsABBW51vnQnZU,18102 -pip/_vendor/distlib/t32.exe,sha256=a0GV5kCoWsMutvliiCKmIgV98eRZ33wXoS-XrqvJQVs,97792 -pip/_vendor/distlib/t64-arm.exe,sha256=68TAa32V504xVBnufojh0PcenpR3U4wAqTqf-MZqbPw,182784 -pip/_vendor/distlib/t64.exe,sha256=gaYY8hy4fbkHYTTnA4i26ct8IQZzkBG2pRdy0iyuBrc,108032 -pip/_vendor/distlib/util.py,sha256=31dPXn3Rfat0xZLeVoFpuniyhe6vsbl9_QN-qd9Lhlk,66262 -pip/_vendor/distlib/version.py,sha256=WG__LyAa2GwmA6qSoEJtvJE8REA1LZpbSizy8WvhJLk,23513 -pip/_vendor/distlib/w32.exe,sha256=R4csx3-OGM9kL4aPIzQKRo5TfmRSHZo6QWyLhDhNBks,91648 -pip/_vendor/distlib/w64-arm.exe,sha256=xdyYhKj0WDcVUOCb05blQYvzdYIKMbmJn2SZvzkcey4,168448 -pip/_vendor/distlib/w64.exe,sha256=ejGf-rojoBfXseGLpya6bFTFPWRG21X5KvU8J5iU-K0,101888 -pip/_vendor/distlib/wheel.py,sha256=Rgqs658VsJ3R2845qwnZD8XQryV2CzWw2mghwLvxxsI,43898 -pip/_vendor/distro/__init__.py,sha256=2fHjF-SfgPvjyNZ1iHh_wjqWdR_Yo5ODHwZC0jLBPhc,981 -pip/_vendor/distro/__main__.py,sha256=bu9d3TifoKciZFcqRBuygV3GSuThnVD_m2IK4cz96Vs,64 -pip/_vendor/distro/__pycache__/__init__.cpython-310.pyc,, -pip/_vendor/distro/__pycache__/__main__.cpython-310.pyc,, -pip/_vendor/distro/__pycache__/distro.cpython-310.pyc,, -pip/_vendor/distro/distro.py,sha256=UZO1LjIhtFCMdlbiz39gj3raV-Amf3SBwzGzfApiMHw,49330 -pip/_vendor/idna/__init__.py,sha256=KJQN1eQBr8iIK5SKrJ47lXvxG0BJ7Lm38W4zT0v_8lk,849 -pip/_vendor/idna/__pycache__/__init__.cpython-310.pyc,, -pip/_vendor/idna/__pycache__/codec.cpython-310.pyc,, -pip/_vendor/idna/__pycache__/compat.cpython-310.pyc,, -pip/_vendor/idna/__pycache__/core.cpython-310.pyc,, -pip/_vendor/idna/__pycache__/idnadata.cpython-310.pyc,, -pip/_vendor/idna/__pycache__/intranges.cpython-310.pyc,, -pip/_vendor/idna/__pycache__/package_data.cpython-310.pyc,, -pip/_vendor/idna/__pycache__/uts46data.cpython-310.pyc,, -pip/_vendor/idna/codec.py,sha256=6ly5odKfqrytKT9_7UrlGklHnf1DSK2r9C6cSM4sa28,3374 -pip/_vendor/idna/compat.py,sha256=0_sOEUMT4CVw9doD3vyRhX80X19PwqFoUBs7gWsFME4,321 -pip/_vendor/idna/core.py,sha256=1JxchwKzkxBSn7R_oCE12oBu3eVux0VzdxolmIad24M,12950 -pip/_vendor/idna/idnadata.py,sha256=xUjqKqiJV8Ho_XzBpAtv5JFoVPSupK-SUXvtjygUHqw,44375 -pip/_vendor/idna/intranges.py,sha256=YBr4fRYuWH7kTKS2tXlFjM24ZF1Pdvcir-aywniInqg,1881 -pip/_vendor/idna/package_data.py,sha256=C_jHJzmX8PI4xq0jpzmcTMxpb5lDsq4o5VyxQzlVrZE,21 -pip/_vendor/idna/uts46data.py,sha256=zvjZU24s58_uAS850Mcd0NnD0X7_gCMAMjzWNIeUJdc,206539 -pip/_vendor/msgpack/__init__.py,sha256=NryGaKLDk_Egd58ZxXpnuI7OWO27AXz7S6CBFRM3sAY,1132 -pip/_vendor/msgpack/__pycache__/__init__.cpython-310.pyc,, -pip/_vendor/msgpack/__pycache__/exceptions.cpython-310.pyc,, -pip/_vendor/msgpack/__pycache__/ext.cpython-310.pyc,, -pip/_vendor/msgpack/__pycache__/fallback.cpython-310.pyc,, -pip/_vendor/msgpack/exceptions.py,sha256=dCTWei8dpkrMsQDcjQk74ATl9HsIBH0ybt8zOPNqMYc,1081 -pip/_vendor/msgpack/ext.py,sha256=TuldJPkYu8Wo_Xh0tFGL2l06-gY88NSR8tOje9fo2Wg,6080 -pip/_vendor/msgpack/fallback.py,sha256=OORDn86-fHBPlu-rPlMdM10KzkH6S_Rx9CHN1b7o4cg,34557 -pip/_vendor/packaging/__about__.py,sha256=ugASIO2w1oUyH8_COqQ2X_s0rDhjbhQC3yJocD03h2c,661 -pip/_vendor/packaging/__init__.py,sha256=b9Kk5MF7KxhhLgcDmiUWukN-LatWFxPdNug0joPhHSk,497 -pip/_vendor/packaging/__pycache__/__about__.cpython-310.pyc,, -pip/_vendor/packaging/__pycache__/__init__.cpython-310.pyc,, -pip/_vendor/packaging/__pycache__/_manylinux.cpython-310.pyc,, -pip/_vendor/packaging/__pycache__/_musllinux.cpython-310.pyc,, -pip/_vendor/packaging/__pycache__/_structures.cpython-310.pyc,, -pip/_vendor/packaging/__pycache__/markers.cpython-310.pyc,, -pip/_vendor/packaging/__pycache__/requirements.cpython-310.pyc,, -pip/_vendor/packaging/__pycache__/specifiers.cpython-310.pyc,, -pip/_vendor/packaging/__pycache__/tags.cpython-310.pyc,, -pip/_vendor/packaging/__pycache__/utils.cpython-310.pyc,, -pip/_vendor/packaging/__pycache__/version.cpython-310.pyc,, -pip/_vendor/packaging/_manylinux.py,sha256=XcbiXB-qcjv3bcohp6N98TMpOP4_j3m-iOA8ptK2GWY,11488 -pip/_vendor/packaging/_musllinux.py,sha256=_KGgY_qc7vhMGpoqss25n2hiLCNKRtvz9mCrS7gkqyc,4378 -pip/_vendor/packaging/_structures.py,sha256=q3eVNmbWJGG_S0Dit_S3Ao8qQqz_5PYTXFAKBZe5yr4,1431 -pip/_vendor/packaging/markers.py,sha256=AJBOcY8Oq0kYc570KuuPTkvuqjAlhufaE2c9sCUbm64,8487 -pip/_vendor/packaging/requirements.py,sha256=NtDlPBtojpn1IUC85iMjPNsUmufjpSlwnNA-Xb4m5NA,4676 -pip/_vendor/packaging/specifiers.py,sha256=LRQ0kFsHrl5qfcFNEEJrIFYsnIHQUJXY9fIsakTrrqE,30110 -pip/_vendor/packaging/tags.py,sha256=lmsnGNiJ8C4D_Pf9PbM0qgbZvD9kmB9lpZBQUZa3R_Y,15699 -pip/_vendor/packaging/utils.py,sha256=dJjeat3BS-TYn1RrUFVwufUMasbtzLfYRoy_HXENeFQ,4200 -pip/_vendor/packaging/version.py,sha256=_fLRNrFrxYcHVfyo8vk9j8s6JM8N_xsSxVFr6RJyco8,14665 -pip/_vendor/pkg_resources/__init__.py,sha256=NnpQ3g6BCHzpMgOR_OLBmYtniY4oOzdKpwqghfq_6ug,108287 -pip/_vendor/pkg_resources/__pycache__/__init__.cpython-310.pyc,, -pip/_vendor/pkg_resources/__pycache__/py31compat.cpython-310.pyc,, -pip/_vendor/pkg_resources/py31compat.py,sha256=CRk8fkiPRDLsbi5pZcKsHI__Pbmh_94L8mr9Qy9Ab2U,562 -pip/_vendor/platformdirs/__init__.py,sha256=9iY4Z8iJDZB0djln6zHHwrPVWpB54TCygcnh--MujU0,12936 -pip/_vendor/platformdirs/__main__.py,sha256=ZmsnTxEOxtTvwa-Y_Vfab_JN3X4XCVeN8X0yyy9-qnc,1176 -pip/_vendor/platformdirs/__pycache__/__init__.cpython-310.pyc,, -pip/_vendor/platformdirs/__pycache__/__main__.cpython-310.pyc,, -pip/_vendor/platformdirs/__pycache__/android.cpython-310.pyc,, -pip/_vendor/platformdirs/__pycache__/api.cpython-310.pyc,, -pip/_vendor/platformdirs/__pycache__/macos.cpython-310.pyc,, -pip/_vendor/platformdirs/__pycache__/unix.cpython-310.pyc,, -pip/_vendor/platformdirs/__pycache__/version.cpython-310.pyc,, -pip/_vendor/platformdirs/__pycache__/windows.cpython-310.pyc,, -pip/_vendor/platformdirs/android.py,sha256=GKizhyS7ESRiU67u8UnBJLm46goau9937EchXWbPBlk,4068 -pip/_vendor/platformdirs/api.py,sha256=MXKHXOL3eh_-trSok-JUTjAR_zjmmKF3rjREVABjP8s,4910 -pip/_vendor/platformdirs/macos.py,sha256=-3UXQewbT0yMhMdkzRXfXGAntmLIH7Qt4a9Hlf8I5_Y,2655 -pip/_vendor/platformdirs/unix.py,sha256=P-WQjSSieE38DXjMDa1t4XHnKJQ5idEaKT0PyXwm8KQ,6911 -pip/_vendor/platformdirs/version.py,sha256=qaN-fw_htIgKUVXoAuAEVgKxQu3tZ9qE2eiKkWIS7LA,160 -pip/_vendor/platformdirs/windows.py,sha256=LOrXLgI0CjQldDo2zhOZYGYZ6g4e_cJOCB_pF9aMRWQ,6596 -pip/_vendor/pygments/__init__.py,sha256=5oLcMLXD0cTG8YcHBPITtK1fS0JBASILEvEnWkTezgE,2999 -pip/_vendor/pygments/__main__.py,sha256=p0_rz3JZmNZMNZBOqDojaEx1cr9wmA9FQZX_TYl74lQ,353 -pip/_vendor/pygments/__pycache__/__init__.cpython-310.pyc,, -pip/_vendor/pygments/__pycache__/__main__.cpython-310.pyc,, -pip/_vendor/pygments/__pycache__/cmdline.cpython-310.pyc,, -pip/_vendor/pygments/__pycache__/console.cpython-310.pyc,, -pip/_vendor/pygments/__pycache__/filter.cpython-310.pyc,, -pip/_vendor/pygments/__pycache__/formatter.cpython-310.pyc,, -pip/_vendor/pygments/__pycache__/lexer.cpython-310.pyc,, -pip/_vendor/pygments/__pycache__/modeline.cpython-310.pyc,, -pip/_vendor/pygments/__pycache__/plugin.cpython-310.pyc,, -pip/_vendor/pygments/__pycache__/regexopt.cpython-310.pyc,, -pip/_vendor/pygments/__pycache__/scanner.cpython-310.pyc,, -pip/_vendor/pygments/__pycache__/sphinxext.cpython-310.pyc,, -pip/_vendor/pygments/__pycache__/style.cpython-310.pyc,, -pip/_vendor/pygments/__pycache__/token.cpython-310.pyc,, -pip/_vendor/pygments/__pycache__/unistring.cpython-310.pyc,, -pip/_vendor/pygments/__pycache__/util.cpython-310.pyc,, -pip/_vendor/pygments/cmdline.py,sha256=rc0fah4eknRqFgn1wKNEwkq0yWnSqYOGaA4PaIeOxVY,23685 -pip/_vendor/pygments/console.py,sha256=hQfqCFuOlGk7DW2lPQYepsw-wkOH1iNt9ylNA1eRymM,1697 -pip/_vendor/pygments/filter.py,sha256=NglMmMPTRRv-zuRSE_QbWid7JXd2J4AvwjCW2yWALXU,1938 -pip/_vendor/pygments/filters/__init__.py,sha256=b5YuXB9rampSy2-cMtKxGQoMDfrG4_DcvVwZrzTlB6w,40386 -pip/_vendor/pygments/filters/__pycache__/__init__.cpython-310.pyc,, -pip/_vendor/pygments/formatter.py,sha256=6-TS2Y8pUMeWIUolWwr1O8ruC-U6HydWDwOdbAiJgJQ,2917 -pip/_vendor/pygments/formatters/__init__.py,sha256=YTqGeHS17fNXCLMZpf7oCxBCKLB9YLsZ8IAsjGhawyg,4810 -pip/_vendor/pygments/formatters/__pycache__/__init__.cpython-310.pyc,, -pip/_vendor/pygments/formatters/__pycache__/_mapping.cpython-310.pyc,, -pip/_vendor/pygments/formatters/__pycache__/bbcode.cpython-310.pyc,, -pip/_vendor/pygments/formatters/__pycache__/groff.cpython-310.pyc,, -pip/_vendor/pygments/formatters/__pycache__/html.cpython-310.pyc,, -pip/_vendor/pygments/formatters/__pycache__/img.cpython-310.pyc,, -pip/_vendor/pygments/formatters/__pycache__/irc.cpython-310.pyc,, -pip/_vendor/pygments/formatters/__pycache__/latex.cpython-310.pyc,, -pip/_vendor/pygments/formatters/__pycache__/other.cpython-310.pyc,, -pip/_vendor/pygments/formatters/__pycache__/pangomarkup.cpython-310.pyc,, -pip/_vendor/pygments/formatters/__pycache__/rtf.cpython-310.pyc,, -pip/_vendor/pygments/formatters/__pycache__/svg.cpython-310.pyc,, -pip/_vendor/pygments/formatters/__pycache__/terminal.cpython-310.pyc,, -pip/_vendor/pygments/formatters/__pycache__/terminal256.cpython-310.pyc,, -pip/_vendor/pygments/formatters/_mapping.py,sha256=fCZgvsM6UEuZUG7J6lr47eVss5owKd_JyaNbDfxeqmQ,4104 -pip/_vendor/pygments/formatters/bbcode.py,sha256=JrL4ITjN-KzPcuQpPMBf1pm33eW2sDUNr8WzSoAJsJA,3314 -pip/_vendor/pygments/formatters/groff.py,sha256=xrOFoLbafSA9uHsSLRogy79_Zc4GWJ8tMK2hCdTJRsw,5086 -pip/_vendor/pygments/formatters/html.py,sha256=QNt9prPgxmbKx2M-nfDwoR1bIg06-sNouQuWnE434Wc,35441 -pip/_vendor/pygments/formatters/img.py,sha256=h75Y7IRZLZxDEIwyoOsdRLTwm7kLVPbODKkgEiJ0iKI,21938 -pip/_vendor/pygments/formatters/irc.py,sha256=iwk5tDJOxbCV64SCmOFyvk__x6RD60ay0nUn7ko9n7U,5871 -pip/_vendor/pygments/formatters/latex.py,sha256=thPbytJCIs2AUXsO3NZwqKtXJ-upOlcXP4CXsx94G4w,19351 -pip/_vendor/pygments/formatters/other.py,sha256=PczqK1Rms43lz6iucOLPeBMxIncPKOGBt-195w1ynII,5073 -pip/_vendor/pygments/formatters/pangomarkup.py,sha256=ZZzMsKJKXrsDniFeMTkIpe7aQ4VZYRHu0idWmSiUJ2U,2212 -pip/_vendor/pygments/formatters/rtf.py,sha256=abrKlWjipBkQvhIICxtjYTUNv6WME0iJJObFvqVuudE,5014 -pip/_vendor/pygments/formatters/svg.py,sha256=6MM9YyO8NhU42RTQfTWBiagWMnsf9iG5gwhqSriHORE,7335 -pip/_vendor/pygments/formatters/terminal.py,sha256=NpEGvwkC6LgMLQTjVzGrJXji3XcET1sb5JCunSCzoRo,4674 -pip/_vendor/pygments/formatters/terminal256.py,sha256=4v4OVizvsxtwWBpIy_Po30zeOzE5oJg_mOc1-rCjMDk,11753 -pip/_vendor/pygments/lexer.py,sha256=ZPB_TGn_qzrXodRFwEdPzzJk6LZBo9BlfSy3lacc6zg,32005 -pip/_vendor/pygments/lexers/__init__.py,sha256=8d80-XfL5UKDCC1wRD1a_ZBZDkZ2HOe7Zul8SsnNYFE,11174 -pip/_vendor/pygments/lexers/__pycache__/__init__.cpython-310.pyc,, -pip/_vendor/pygments/lexers/__pycache__/_mapping.cpython-310.pyc,, -pip/_vendor/pygments/lexers/__pycache__/python.cpython-310.pyc,, -pip/_vendor/pygments/lexers/_mapping.py,sha256=zEiCV5FPiBioMJQJjw9kk7IJ5Y9GwknS4VJPYlcNchs,70232 -pip/_vendor/pygments/lexers/python.py,sha256=gZROs9iNSOA18YyVghP1cUCD0OwYZ04a6PCwgSOCeSA,53376 -pip/_vendor/pygments/modeline.py,sha256=gIbMSYrjSWPk0oATz7W9vMBYkUyTK2OcdVyKjioDRvA,986 -pip/_vendor/pygments/plugin.py,sha256=5rPxEoB_89qQMpOs0nI4KyLOzAHNlbQiwEMOKxqNmv8,2591 -pip/_vendor/pygments/regexopt.py,sha256=c6xcXGpGgvCET_3VWawJJqAnOp0QttFpQEdOPNY2Py0,3072 -pip/_vendor/pygments/scanner.py,sha256=F2T2G6cpkj-yZtzGQr-sOBw5w5-96UrJWveZN6va2aM,3092 -pip/_vendor/pygments/sphinxext.py,sha256=F8L0211sPnXaiWutN0lkSUajWBwlgDMIEFFAbMWOvZY,4630 -pip/_vendor/pygments/style.py,sha256=RRnussX1YiK9Z7HipIvKorImxu3-HnkdpPCO4u925T0,6257 -pip/_vendor/pygments/styles/__init__.py,sha256=iZDZ7PBKb55SpGlE1--cx9cbmWx5lVTH4bXO87t2Vok,3419 -pip/_vendor/pygments/styles/__pycache__/__init__.cpython-310.pyc,, -pip/_vendor/pygments/token.py,sha256=vA2yNHGJBHfq4jNQSah7C9DmIOp34MmYHPA8P-cYAHI,6184 -pip/_vendor/pygments/unistring.py,sha256=gP3gK-6C4oAFjjo9HvoahsqzuV4Qz0jl0E0OxfDerHI,63187 -pip/_vendor/pygments/util.py,sha256=KgwpWWC3By5AiNwxGTI7oI9aXupH2TyZWukafBJe0Mg,9110 -pip/_vendor/pyparsing/__init__.py,sha256=ZPdI7pPo4IYXcABw-51AcqOzsxVvDtqnQbyn_qYWZvo,9171 -pip/_vendor/pyparsing/__pycache__/__init__.cpython-310.pyc,, -pip/_vendor/pyparsing/__pycache__/actions.cpython-310.pyc,, -pip/_vendor/pyparsing/__pycache__/common.cpython-310.pyc,, -pip/_vendor/pyparsing/__pycache__/core.cpython-310.pyc,, -pip/_vendor/pyparsing/__pycache__/exceptions.cpython-310.pyc,, -pip/_vendor/pyparsing/__pycache__/helpers.cpython-310.pyc,, -pip/_vendor/pyparsing/__pycache__/results.cpython-310.pyc,, -pip/_vendor/pyparsing/__pycache__/testing.cpython-310.pyc,, -pip/_vendor/pyparsing/__pycache__/unicode.cpython-310.pyc,, -pip/_vendor/pyparsing/__pycache__/util.cpython-310.pyc,, -pip/_vendor/pyparsing/actions.py,sha256=wU9i32e0y1ymxKE3OUwSHO-SFIrt1h_wv6Ws0GQjpNU,6426 -pip/_vendor/pyparsing/common.py,sha256=lFL97ooIeR75CmW5hjURZqwDCTgruqltcTCZ-ulLO2Q,12936 -pip/_vendor/pyparsing/core.py,sha256=AzTm1KFT1FIhiw2zvXZJmrpQoAwB0wOmeDCiR6SYytw,213344 -pip/_vendor/pyparsing/diagram/__init__.py,sha256=KW0PV_TvWKnL7jysz0pQbZ24nzWWu2ZfNaeyUIIywIg,23685 -pip/_vendor/pyparsing/diagram/__pycache__/__init__.cpython-310.pyc,, -pip/_vendor/pyparsing/exceptions.py,sha256=3LbSafD32NYb1Tzt85GHNkhEAU1eZkTtNSk24cPMemo,9023 -pip/_vendor/pyparsing/helpers.py,sha256=QpUOjW0-psvueMwWb9bQpU2noqKCv98_wnw1VSzSdVo,39129 -pip/_vendor/pyparsing/results.py,sha256=HgNvWVXBdQP-Q6PtJfoCEeOJk2nwEvG-2KVKC5sGA30,25341 -pip/_vendor/pyparsing/testing.py,sha256=7tu4Abp4uSeJV0N_yEPRmmNUhpd18ZQP3CrX41DM814,13402 -pip/_vendor/pyparsing/unicode.py,sha256=fwuhMj30SQ165Cv7HJpu-rSxGbRm93kN9L4Ei7VGc1Y,10787 -pip/_vendor/pyparsing/util.py,sha256=kq772O5YSeXOSdP-M31EWpbH_ayj7BMHImBYo9xPD5M,6805 -pip/_vendor/pyproject_hooks/__init__.py,sha256=kCehmy0UaBa9oVMD7ZIZrnswfnP3LXZ5lvnNJAL5JBM,491 -pip/_vendor/pyproject_hooks/__pycache__/__init__.cpython-310.pyc,, -pip/_vendor/pyproject_hooks/__pycache__/_compat.cpython-310.pyc,, -pip/_vendor/pyproject_hooks/__pycache__/_impl.cpython-310.pyc,, -pip/_vendor/pyproject_hooks/_compat.py,sha256=by6evrYnqkisiM-MQcvOKs5bgDMzlOSgZqRHNqf04zE,138 -pip/_vendor/pyproject_hooks/_impl.py,sha256=61GJxzQip0IInhuO69ZI5GbNQ82XEDUB_1Gg5_KtUoc,11920 -pip/_vendor/pyproject_hooks/_in_process/__init__.py,sha256=9gQATptbFkelkIy0OfWFEACzqxXJMQDWCH9rBOAZVwQ,546 -pip/_vendor/pyproject_hooks/_in_process/__pycache__/__init__.cpython-310.pyc,, -pip/_vendor/pyproject_hooks/_in_process/__pycache__/_in_process.cpython-310.pyc,, -pip/_vendor/pyproject_hooks/_in_process/_in_process.py,sha256=m2b34c917IW5o-Q_6TYIHlsK9lSUlNiyrITTUH_zwew,10927 -pip/_vendor/requests/__init__.py,sha256=64HgJ8cke-XyNrj1ErwNq0F9SqyAThUTh5lV6m7-YkI,5178 -pip/_vendor/requests/__pycache__/__init__.cpython-310.pyc,, -pip/_vendor/requests/__pycache__/__version__.cpython-310.pyc,, -pip/_vendor/requests/__pycache__/_internal_utils.cpython-310.pyc,, -pip/_vendor/requests/__pycache__/adapters.cpython-310.pyc,, -pip/_vendor/requests/__pycache__/api.cpython-310.pyc,, -pip/_vendor/requests/__pycache__/auth.cpython-310.pyc,, -pip/_vendor/requests/__pycache__/certs.cpython-310.pyc,, -pip/_vendor/requests/__pycache__/compat.cpython-310.pyc,, -pip/_vendor/requests/__pycache__/cookies.cpython-310.pyc,, -pip/_vendor/requests/__pycache__/exceptions.cpython-310.pyc,, -pip/_vendor/requests/__pycache__/help.cpython-310.pyc,, -pip/_vendor/requests/__pycache__/hooks.cpython-310.pyc,, -pip/_vendor/requests/__pycache__/models.cpython-310.pyc,, -pip/_vendor/requests/__pycache__/packages.cpython-310.pyc,, -pip/_vendor/requests/__pycache__/sessions.cpython-310.pyc,, -pip/_vendor/requests/__pycache__/status_codes.cpython-310.pyc,, -pip/_vendor/requests/__pycache__/structures.cpython-310.pyc,, -pip/_vendor/requests/__pycache__/utils.cpython-310.pyc,, -pip/_vendor/requests/__version__.py,sha256=h48zn-oFukaXrYHocdadp_hIszWyd_PGrS8Eiii6aoc,435 -pip/_vendor/requests/_internal_utils.py,sha256=aSPlF4uDhtfKxEayZJJ7KkAxtormeTfpwKSBSwtmAUw,1397 -pip/_vendor/requests/adapters.py,sha256=GFEz5koZaMZD86v0SHXKVB5SE9MgslEjkCQzldkNwVM,21443 -pip/_vendor/requests/api.py,sha256=dyvkDd5itC9z2g0wHl_YfD1yf6YwpGWLO7__8e21nks,6377 -pip/_vendor/requests/auth.py,sha256=h-HLlVx9j8rKV5hfSAycP2ApOSglTz77R0tz7qCbbEE,10187 -pip/_vendor/requests/certs.py,sha256=PVPooB0jP5hkZEULSCwC074532UFbR2Ptgu0I5zwmCs,575 -pip/_vendor/requests/compat.py,sha256=IhK9quyX0RRuWTNcg6d2JGSAOUbM6mym2p_2XjLTwf4,1286 -pip/_vendor/requests/cookies.py,sha256=kD3kNEcCj-mxbtf5fJsSaT86eGoEYpD3X0CSgpzl7BM,18560 -pip/_vendor/requests/exceptions.py,sha256=FA-_kVwBZ2jhXauRctN_ewHVK25b-fj0Azyz1THQ0Kk,3823 -pip/_vendor/requests/help.py,sha256=FnAAklv8MGm_qb2UilDQgS6l0cUttiCFKUjx0zn2XNA,3879 -pip/_vendor/requests/hooks.py,sha256=CiuysiHA39V5UfcCBXFIx83IrDpuwfN9RcTUgv28ftQ,733 -pip/_vendor/requests/models.py,sha256=dDZ-iThotky-Noq9yy97cUEJhr3wnY6mv-xR_ePg_lk,35288 -pip/_vendor/requests/packages.py,sha256=njJmVifY4aSctuW3PP5EFRCxjEwMRDO6J_feG2dKWsI,695 -pip/_vendor/requests/sessions.py,sha256=KUqJcRRLovNefUs7ScOXSUVCcfSayTFWtbiJ7gOSlTI,30180 -pip/_vendor/requests/status_codes.py,sha256=FvHmT5uH-_uimtRz5hH9VCbt7VV-Nei2J9upbej6j8g,4235 -pip/_vendor/requests/structures.py,sha256=-IbmhVz06S-5aPSZuUthZ6-6D9XOjRuTXHOabY041XM,2912 -pip/_vendor/requests/utils.py,sha256=0gzSOcx9Ya4liAbHnHuwt4jM78lzCZZoDFgkmsInNUg,33240 -pip/_vendor/resolvelib/__init__.py,sha256=UL-B2BDI0_TRIqkfGwLHKLxY-LjBlomz7941wDqzB1I,537 -pip/_vendor/resolvelib/__pycache__/__init__.cpython-310.pyc,, -pip/_vendor/resolvelib/__pycache__/providers.cpython-310.pyc,, -pip/_vendor/resolvelib/__pycache__/reporters.cpython-310.pyc,, -pip/_vendor/resolvelib/__pycache__/resolvers.cpython-310.pyc,, -pip/_vendor/resolvelib/__pycache__/structs.cpython-310.pyc,, -pip/_vendor/resolvelib/compat/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 -pip/_vendor/resolvelib/compat/__pycache__/__init__.cpython-310.pyc,, -pip/_vendor/resolvelib/compat/__pycache__/collections_abc.cpython-310.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=fW91NKf-lK8XN7i6Yd_rczL5QeOT3sc6AKhpaTEnP3E,1583 -pip/_vendor/resolvelib/resolvers.py,sha256=2wYzVGBGerbmcIpH8cFmgSKgLSETz8jmwBMGjCBMHG4,17592 -pip/_vendor/resolvelib/structs.py,sha256=IVIYof6sA_N4ZEiE1C1UhzTX495brCNnyCdgq6CYq28,4794 -pip/_vendor/rich/__init__.py,sha256=dRxjIL-SbFVY0q3IjSMrfgBTHrm1LZDgLOygVBwiYZc,6090 -pip/_vendor/rich/__main__.py,sha256=TT8sb9PTnsnKhhrGuHkLN0jdN0dtKhtPkEr9CidDbPM,8478 -pip/_vendor/rich/__pycache__/__init__.cpython-310.pyc,, -pip/_vendor/rich/__pycache__/__main__.cpython-310.pyc,, -pip/_vendor/rich/__pycache__/_cell_widths.cpython-310.pyc,, -pip/_vendor/rich/__pycache__/_emoji_codes.cpython-310.pyc,, -pip/_vendor/rich/__pycache__/_emoji_replace.cpython-310.pyc,, -pip/_vendor/rich/__pycache__/_export_format.cpython-310.pyc,, -pip/_vendor/rich/__pycache__/_extension.cpython-310.pyc,, -pip/_vendor/rich/__pycache__/_inspect.cpython-310.pyc,, -pip/_vendor/rich/__pycache__/_log_render.cpython-310.pyc,, -pip/_vendor/rich/__pycache__/_loop.cpython-310.pyc,, -pip/_vendor/rich/__pycache__/_null_file.cpython-310.pyc,, -pip/_vendor/rich/__pycache__/_palettes.cpython-310.pyc,, -pip/_vendor/rich/__pycache__/_pick.cpython-310.pyc,, -pip/_vendor/rich/__pycache__/_ratio.cpython-310.pyc,, -pip/_vendor/rich/__pycache__/_spinners.cpython-310.pyc,, -pip/_vendor/rich/__pycache__/_stack.cpython-310.pyc,, -pip/_vendor/rich/__pycache__/_timer.cpython-310.pyc,, -pip/_vendor/rich/__pycache__/_win32_console.cpython-310.pyc,, -pip/_vendor/rich/__pycache__/_windows.cpython-310.pyc,, -pip/_vendor/rich/__pycache__/_windows_renderer.cpython-310.pyc,, -pip/_vendor/rich/__pycache__/_wrap.cpython-310.pyc,, -pip/_vendor/rich/__pycache__/abc.cpython-310.pyc,, -pip/_vendor/rich/__pycache__/align.cpython-310.pyc,, -pip/_vendor/rich/__pycache__/ansi.cpython-310.pyc,, -pip/_vendor/rich/__pycache__/bar.cpython-310.pyc,, -pip/_vendor/rich/__pycache__/box.cpython-310.pyc,, -pip/_vendor/rich/__pycache__/cells.cpython-310.pyc,, -pip/_vendor/rich/__pycache__/color.cpython-310.pyc,, -pip/_vendor/rich/__pycache__/color_triplet.cpython-310.pyc,, -pip/_vendor/rich/__pycache__/columns.cpython-310.pyc,, -pip/_vendor/rich/__pycache__/console.cpython-310.pyc,, -pip/_vendor/rich/__pycache__/constrain.cpython-310.pyc,, -pip/_vendor/rich/__pycache__/containers.cpython-310.pyc,, -pip/_vendor/rich/__pycache__/control.cpython-310.pyc,, -pip/_vendor/rich/__pycache__/default_styles.cpython-310.pyc,, -pip/_vendor/rich/__pycache__/diagnose.cpython-310.pyc,, -pip/_vendor/rich/__pycache__/emoji.cpython-310.pyc,, -pip/_vendor/rich/__pycache__/errors.cpython-310.pyc,, -pip/_vendor/rich/__pycache__/file_proxy.cpython-310.pyc,, -pip/_vendor/rich/__pycache__/filesize.cpython-310.pyc,, -pip/_vendor/rich/__pycache__/highlighter.cpython-310.pyc,, -pip/_vendor/rich/__pycache__/json.cpython-310.pyc,, -pip/_vendor/rich/__pycache__/jupyter.cpython-310.pyc,, -pip/_vendor/rich/__pycache__/layout.cpython-310.pyc,, -pip/_vendor/rich/__pycache__/live.cpython-310.pyc,, -pip/_vendor/rich/__pycache__/live_render.cpython-310.pyc,, -pip/_vendor/rich/__pycache__/logging.cpython-310.pyc,, -pip/_vendor/rich/__pycache__/markup.cpython-310.pyc,, -pip/_vendor/rich/__pycache__/measure.cpython-310.pyc,, -pip/_vendor/rich/__pycache__/padding.cpython-310.pyc,, -pip/_vendor/rich/__pycache__/pager.cpython-310.pyc,, -pip/_vendor/rich/__pycache__/palette.cpython-310.pyc,, -pip/_vendor/rich/__pycache__/panel.cpython-310.pyc,, -pip/_vendor/rich/__pycache__/pretty.cpython-310.pyc,, -pip/_vendor/rich/__pycache__/progress.cpython-310.pyc,, -pip/_vendor/rich/__pycache__/progress_bar.cpython-310.pyc,, -pip/_vendor/rich/__pycache__/prompt.cpython-310.pyc,, -pip/_vendor/rich/__pycache__/protocol.cpython-310.pyc,, -pip/_vendor/rich/__pycache__/region.cpython-310.pyc,, -pip/_vendor/rich/__pycache__/repr.cpython-310.pyc,, -pip/_vendor/rich/__pycache__/rule.cpython-310.pyc,, -pip/_vendor/rich/__pycache__/scope.cpython-310.pyc,, -pip/_vendor/rich/__pycache__/screen.cpython-310.pyc,, -pip/_vendor/rich/__pycache__/segment.cpython-310.pyc,, -pip/_vendor/rich/__pycache__/spinner.cpython-310.pyc,, -pip/_vendor/rich/__pycache__/status.cpython-310.pyc,, -pip/_vendor/rich/__pycache__/style.cpython-310.pyc,, -pip/_vendor/rich/__pycache__/styled.cpython-310.pyc,, -pip/_vendor/rich/__pycache__/syntax.cpython-310.pyc,, -pip/_vendor/rich/__pycache__/table.cpython-310.pyc,, -pip/_vendor/rich/__pycache__/terminal_theme.cpython-310.pyc,, -pip/_vendor/rich/__pycache__/text.cpython-310.pyc,, -pip/_vendor/rich/__pycache__/theme.cpython-310.pyc,, -pip/_vendor/rich/__pycache__/themes.cpython-310.pyc,, -pip/_vendor/rich/__pycache__/traceback.cpython-310.pyc,, -pip/_vendor/rich/__pycache__/tree.cpython-310.pyc,, -pip/_vendor/rich/_cell_widths.py,sha256=2n4EiJi3X9sqIq0O16kUZ_zy6UYMd3xFfChlKfnW1Hc,10096 -pip/_vendor/rich/_emoji_codes.py,sha256=hu1VL9nbVdppJrVoijVshRlcRRe_v3dju3Mmd2sKZdY,140235 -pip/_vendor/rich/_emoji_replace.py,sha256=n-kcetsEUx2ZUmhQrfeMNc-teeGhpuSQ5F8VPBsyvDo,1064 -pip/_vendor/rich/_export_format.py,sha256=nHArqOljIlYn6NruhWsAsh-fHo7oJC3y9BDJyAa-QYQ,2114 -pip/_vendor/rich/_extension.py,sha256=Xt47QacCKwYruzjDi-gOBq724JReDj9Cm9xUi5fr-34,265 -pip/_vendor/rich/_inspect.py,sha256=oZJGw31e64dwXSCmrDnvZbwVb1ZKhWfU8wI3VWohjJk,9695 -pip/_vendor/rich/_log_render.py,sha256=1ByI0PA1ZpxZY3CGJOK54hjlq4X-Bz_boIjIqCd8Kns,3225 -pip/_vendor/rich/_loop.py,sha256=hV_6CLdoPm0va22Wpw4zKqM0RYsz3TZxXj0PoS-9eDQ,1236 -pip/_vendor/rich/_null_file.py,sha256=cTaTCU_xuDXGGa9iqK-kZ0uddZCSvM-RgM2aGMuMiHs,1643 -pip/_vendor/rich/_palettes.py,sha256=cdev1JQKZ0JvlguV9ipHgznTdnvlIzUFDBb0It2PzjI,7063 -pip/_vendor/rich/_pick.py,sha256=evDt8QN4lF5CiwrUIXlOJCntitBCOsI3ZLPEIAVRLJU,423 -pip/_vendor/rich/_ratio.py,sha256=2lLSliL025Y-YMfdfGbutkQDevhcyDqc-DtUYW9mU70,5472 -pip/_vendor/rich/_spinners.py,sha256=U2r1_g_1zSjsjiUdAESc2iAMc3i4ri_S8PYP6kQ5z1I,19919 -pip/_vendor/rich/_stack.py,sha256=-C8OK7rxn3sIUdVwxZBBpeHhIzX0eI-VM3MemYfaXm0,351 -pip/_vendor/rich/_timer.py,sha256=zelxbT6oPFZnNrwWPpc1ktUeAT-Vc4fuFcRZLQGLtMI,417 -pip/_vendor/rich/_win32_console.py,sha256=P0vxI2fcndym1UU1S37XAzQzQnkyY7YqAKmxm24_gug,22820 -pip/_vendor/rich/_windows.py,sha256=dvNl9TmfPzNVxiKk5WDFihErZ5796g2UC9-KGGyfXmk,1926 -pip/_vendor/rich/_windows_renderer.py,sha256=t74ZL3xuDCP3nmTp9pH1L5LiI2cakJuQRQleHCJerlk,2783 -pip/_vendor/rich/_wrap.py,sha256=xfV_9t0Sg6rzimmrDru8fCVmUlalYAcHLDfrJZnbbwQ,1840 -pip/_vendor/rich/abc.py,sha256=ON-E-ZqSSheZ88VrKX2M3PXpFbGEUUZPMa_Af0l-4f0,890 -pip/_vendor/rich/align.py,sha256=FV6_GS-8uhIyViMng3hkIWSFaTgMohK1Oqyjl8I8mGE,10368 -pip/_vendor/rich/ansi.py,sha256=THex7-qjc82-ZRtmDPAYlVEObYOEE_ARB1692Fk-JHs,6819 -pip/_vendor/rich/bar.py,sha256=a7UD303BccRCrEhGjfMElpv5RFYIinaAhAuqYqhUvmw,3264 -pip/_vendor/rich/box.py,sha256=FJ6nI3jD7h2XNFU138bJUt2HYmWOlRbltoCEuIAZhew,9842 -pip/_vendor/rich/cells.py,sha256=zMjFI15wCpgjLR14lHdfFMVC6qMDi5OsKIB0PYZBBMk,4503 -pip/_vendor/rich/color.py,sha256=GTITgffj47On3YK1v_I5T2CPZJGSnyWipPID_YkYXqw,18015 -pip/_vendor/rich/color_triplet.py,sha256=3lhQkdJbvWPoLDO-AnYImAWmJvV5dlgYNCVZ97ORaN4,1054 -pip/_vendor/rich/columns.py,sha256=HUX0KcMm9dsKNi11fTbiM_h2iDtl8ySCaVcxlalEzq8,7131 -pip/_vendor/rich/console.py,sha256=w3tJfrILZpS359wrNqaldGmyk3PEhEmV8Pg2g2GjXWI,97992 -pip/_vendor/rich/constrain.py,sha256=1VIPuC8AgtKWrcncQrjBdYqA3JVWysu6jZo1rrh7c7Q,1288 -pip/_vendor/rich/containers.py,sha256=aKgm5UDHn5Nmui6IJaKdsZhbHClh_X7D-_Wg8Ehrr7s,5497 -pip/_vendor/rich/control.py,sha256=DSkHTUQLorfSERAKE_oTAEUFefZnZp4bQb4q8rHbKws,6630 -pip/_vendor/rich/default_styles.py,sha256=WqVh-RPNEsx0Wxf3fhS_fCn-wVqgJ6Qfo-Zg7CoCsLE,7954 -pip/_vendor/rich/diagnose.py,sha256=an6uouwhKPAlvQhYpNNpGq9EJysfMIOvvCbO3oSoR24,972 -pip/_vendor/rich/emoji.py,sha256=omTF9asaAnsM4yLY94eR_9dgRRSm1lHUszX20D1yYCQ,2501 -pip/_vendor/rich/errors.py,sha256=5pP3Kc5d4QJ_c0KFsxrfyhjiPVe7J1zOqSFbFAzcV-Y,642 -pip/_vendor/rich/file_proxy.py,sha256=4gCbGRXg0rW35Plaf0UVvj3dfENHuzc_n8I_dBqxI7o,1616 -pip/_vendor/rich/filesize.py,sha256=9fTLAPCAwHmBXdRv7KZU194jSgNrRb6Wx7RIoBgqeKY,2508 -pip/_vendor/rich/highlighter.py,sha256=3WW6PACGlq0e3YDjfqiMBQ0dYZwu7pcoFYUgJy01nb0,9585 -pip/_vendor/rich/json.py,sha256=TmeFm96Utaov-Ff5miavBPNo51HRooM8S78HEwrYEjA,5053 -pip/_vendor/rich/jupyter.py,sha256=QyoKoE_8IdCbrtiSHp9TsTSNyTHY0FO5whE7jOTd9UE,3252 -pip/_vendor/rich/layout.py,sha256=RFYL6HdCFsHf9WRpcvi3w-fpj-8O5dMZ8W96VdKNdbI,14007 -pip/_vendor/rich/live.py,sha256=emVaLUua-FKSYqZXmtJJjBIstO99CqMOuA6vMAKVkO0,14172 -pip/_vendor/rich/live_render.py,sha256=zElm3PrfSIvjOce28zETHMIUf9pFYSUA5o0AflgUP64,3667 -pip/_vendor/rich/logging.py,sha256=uB-cB-3Q4bmXDLLpbOWkmFviw-Fde39zyMV6tKJ2WHQ,11903 -pip/_vendor/rich/markup.py,sha256=xzF4uAafiEeEYDJYt_vUnJOGoTU8RrH-PH7WcWYXjCg,8198 -pip/_vendor/rich/measure.py,sha256=HmrIJX8sWRTHbgh8MxEay_83VkqNW_70s8aKP5ZcYI8,5305 -pip/_vendor/rich/padding.py,sha256=kTFGsdGe0os7tXLnHKpwTI90CXEvrceeZGCshmJy5zw,4970 -pip/_vendor/rich/pager.py,sha256=SO_ETBFKbg3n_AgOzXm41Sv36YxXAyI3_R-KOY2_uSc,828 -pip/_vendor/rich/palette.py,sha256=lInvR1ODDT2f3UZMfL1grq7dY_pDdKHw4bdUgOGaM4Y,3396 -pip/_vendor/rich/panel.py,sha256=wGMe40J8KCGgQoM0LyjRErmGIkv2bsYA71RCXThD0xE,10574 -pip/_vendor/rich/pretty.py,sha256=dAbLqSF3jJnyfBLJ7QjQ3B2J-WGyBnAdGXeuBVIyMyA,37414 -pip/_vendor/rich/progress.py,sha256=eg-OURdfZW3n3bib1-zP3SZl6cIm2VZup1pr_96CyLk,59836 -pip/_vendor/rich/progress_bar.py,sha256=cEoBfkc3lLwqba4XKsUpy4vSQKDh2QQ5J2J94-ACFoo,8165 -pip/_vendor/rich/prompt.py,sha256=x0mW-pIPodJM4ry6grgmmLrl8VZp99kqcmdnBe70YYA,11303 -pip/_vendor/rich/protocol.py,sha256=5hHHDDNHckdk8iWH5zEbi-zuIVSF5hbU2jIo47R7lTE,1391 -pip/_vendor/rich/region.py,sha256=rNT9xZrVZTYIXZC0NYn41CJQwYNbR-KecPOxTgQvB8Y,166 -pip/_vendor/rich/repr.py,sha256=eJObQe6_c5pUjRM85sZ2rrW47_iF9HT3Z8DrgVjvOl8,4436 -pip/_vendor/rich/rule.py,sha256=V6AWI0wCb6DB0rvN967FRMlQrdlG7HoZdfEAHyeG8CM,4773 -pip/_vendor/rich/scope.py,sha256=TMUU8qo17thyqQCPqjDLYpg_UU1k5qVd-WwiJvnJVas,2843 -pip/_vendor/rich/screen.py,sha256=YoeReESUhx74grqb0mSSb9lghhysWmFHYhsbMVQjXO8,1591 -pip/_vendor/rich/segment.py,sha256=6XdX0MfL18tUCaUWDWncIqx0wpq3GiaqzhYP779JvRA,24224 -pip/_vendor/rich/spinner.py,sha256=7b8MCleS4fa46HX0AzF98zfu6ZM6fAL0UgYzPOoakF4,4374 -pip/_vendor/rich/status.py,sha256=gJsIXIZeSo3urOyxRUjs6VrhX5CZrA0NxIQ-dxhCnwo,4425 -pip/_vendor/rich/style.py,sha256=odBbAlrgdEbAj7pmtPbQtWJNS8upyNhhy--Ks6KwAKk,26332 -pip/_vendor/rich/styled.py,sha256=eZNnzGrI4ki_54pgY3Oj0T-x3lxdXTYh4_ryDB24wBU,1258 -pip/_vendor/rich/syntax.py,sha256=W1xtdBA1-EVP-weYofKXusUlV5zghCOv1nWMHHfNmiY,34995 -pip/_vendor/rich/table.py,sha256=-WzesL-VJKsaiDU3uyczpJMHy6VCaSewBYJwx8RudI8,39684 -pip/_vendor/rich/terminal_theme.py,sha256=1j5-ufJfnvlAo5Qsi_ACZiXDmwMXzqgmFByObT9-yJY,3370 -pip/_vendor/rich/text.py,sha256=andXaxWW_wBveMiZZpd5viQwucWo7SPopcM3ZCQeO0c,45686 -pip/_vendor/rich/theme.py,sha256=GKNtQhDBZKAzDaY0vQVQQFzbc0uWfFe6CJXA-syT7zQ,3627 -pip/_vendor/rich/themes.py,sha256=0xgTLozfabebYtcJtDdC5QkX5IVUEaviqDUJJh4YVFk,102 -pip/_vendor/rich/traceback.py,sha256=6LkGguCEAxKv8v8xmKfMeYPPJ1UXUEHDv4726To6FiQ,26070 -pip/_vendor/rich/tree.py,sha256=BMbUYNjS9uodNPfvtY_odmU09GA5QzcMbQ5cJZhllQI,9169 -pip/_vendor/six.py,sha256=TOOfQi7nFGfMrIvtdr6wX4wyHH8M7aknmuLfo2cBBrM,34549 -pip/_vendor/tenacity/__init__.py,sha256=rjcWJVq5PcNJNC42rt-TAGGskM-RUEkZbDKu1ra7IPo,18364 -pip/_vendor/tenacity/__pycache__/__init__.cpython-310.pyc,, -pip/_vendor/tenacity/__pycache__/_asyncio.cpython-310.pyc,, -pip/_vendor/tenacity/__pycache__/_utils.cpython-310.pyc,, -pip/_vendor/tenacity/__pycache__/after.cpython-310.pyc,, -pip/_vendor/tenacity/__pycache__/before.cpython-310.pyc,, -pip/_vendor/tenacity/__pycache__/before_sleep.cpython-310.pyc,, -pip/_vendor/tenacity/__pycache__/nap.cpython-310.pyc,, -pip/_vendor/tenacity/__pycache__/retry.cpython-310.pyc,, -pip/_vendor/tenacity/__pycache__/stop.cpython-310.pyc,, -pip/_vendor/tenacity/__pycache__/tornadoweb.cpython-310.pyc,, -pip/_vendor/tenacity/__pycache__/wait.cpython-310.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=Cy504Ss3UrRV7lnYgvymF66WD1wJ2dbM869kDcjuDes,7550 -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=tdLTESRm5E237VHG0SxCDXRa0DHKPKVq285kslHVURc,8011 -pip/_vendor/tomli/__init__.py,sha256=JhUwV66DB1g4Hvt1UQCVMdfCu-IgAV8FXmvDU9onxd4,396 -pip/_vendor/tomli/__pycache__/__init__.cpython-310.pyc,, -pip/_vendor/tomli/__pycache__/_parser.cpython-310.pyc,, -pip/_vendor/tomli/__pycache__/_re.cpython-310.pyc,, -pip/_vendor/tomli/__pycache__/_types.cpython-310.pyc,, -pip/_vendor/tomli/_parser.py,sha256=g9-ENaALS-B8dokYpCuzUFalWlog7T-SIYMjLZSWrtM,22633 -pip/_vendor/tomli/_re.py,sha256=dbjg5ChZT23Ka9z9DHOXfdtSpPwUfdgMXnj8NOoly-w,2943 -pip/_vendor/tomli/_types.py,sha256=-GTG2VUqkpxwMqzmVO4F7ybKddIbAnuAHXfmWQcTi3Q,254 -pip/_vendor/typing_extensions.py,sha256=VKZ_nHsuzDbKOVUY2CTdavwBgfZ2EXRyluZHRzUYAbg,80114 -pip/_vendor/urllib3/__init__.py,sha256=iXLcYiJySn0GNbWOOZDDApgBL1JgP44EZ8i1760S8Mc,3333 -pip/_vendor/urllib3/__pycache__/__init__.cpython-310.pyc,, -pip/_vendor/urllib3/__pycache__/_collections.cpython-310.pyc,, -pip/_vendor/urllib3/__pycache__/_version.cpython-310.pyc,, -pip/_vendor/urllib3/__pycache__/connection.cpython-310.pyc,, -pip/_vendor/urllib3/__pycache__/connectionpool.cpython-310.pyc,, -pip/_vendor/urllib3/__pycache__/exceptions.cpython-310.pyc,, -pip/_vendor/urllib3/__pycache__/fields.cpython-310.pyc,, -pip/_vendor/urllib3/__pycache__/filepost.cpython-310.pyc,, -pip/_vendor/urllib3/__pycache__/poolmanager.cpython-310.pyc,, -pip/_vendor/urllib3/__pycache__/request.cpython-310.pyc,, -pip/_vendor/urllib3/__pycache__/response.cpython-310.pyc,, -pip/_vendor/urllib3/_collections.py,sha256=Rp1mVyBgc_UlAcp6M3at1skJBXR5J43NawRTvW2g_XY,10811 -pip/_vendor/urllib3/_version.py,sha256=JWE--BUVy7--9FsXILONIpQ43irftKGjT9j2H_fdF2M,64 -pip/_vendor/urllib3/connection.py,sha256=8976wL6sGeVMW0JnXvx5mD00yXu87uQjxtB9_VL8dx8,20070 -pip/_vendor/urllib3/connectionpool.py,sha256=vS4UaHLoR9_5aGLXSQ776y_jTxgqqjx0YsjkYksWGOo,39095 -pip/_vendor/urllib3/contrib/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 -pip/_vendor/urllib3/contrib/__pycache__/__init__.cpython-310.pyc,, -pip/_vendor/urllib3/contrib/__pycache__/_appengine_environ.cpython-310.pyc,, -pip/_vendor/urllib3/contrib/__pycache__/appengine.cpython-310.pyc,, -pip/_vendor/urllib3/contrib/__pycache__/ntlmpool.cpython-310.pyc,, -pip/_vendor/urllib3/contrib/__pycache__/pyopenssl.cpython-310.pyc,, -pip/_vendor/urllib3/contrib/__pycache__/securetransport.cpython-310.pyc,, -pip/_vendor/urllib3/contrib/__pycache__/socks.cpython-310.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-310.pyc,, -pip/_vendor/urllib3/contrib/_securetransport/__pycache__/bindings.cpython-310.pyc,, -pip/_vendor/urllib3/contrib/_securetransport/__pycache__/low_level.cpython-310.pyc,, -pip/_vendor/urllib3/contrib/_securetransport/bindings.py,sha256=4Xk64qIkPBt09A5q-RIFUuDhNc9mXilVapm7WnYnzRw,17632 -pip/_vendor/urllib3/contrib/_securetransport/low_level.py,sha256=B2JBB2_NRP02xK6DCa1Pa9IuxrPwxzDzZbixQkb7U9M,13922 -pip/_vendor/urllib3/contrib/appengine.py,sha256=VR68eAVE137lxTgjBDwCna5UiBZTOKa01Aj_-5BaCz4,11036 -pip/_vendor/urllib3/contrib/ntlmpool.py,sha256=NlfkW7WMdW8ziqudopjHoW299og1BTWi0IeIibquFwk,4528 -pip/_vendor/urllib3/contrib/pyopenssl.py,sha256=hDJh4MhyY_p-oKlFcYcQaVQRDv6GMmBGuW9yjxyeejM,17081 -pip/_vendor/urllib3/contrib/securetransport.py,sha256=yhZdmVjY6PI6EeFbp7qYOp6-vp1Rkv2NMuOGaEj7pmc,34448 -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=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 -pip/_vendor/urllib3/packages/__pycache__/__init__.cpython-310.pyc,, -pip/_vendor/urllib3/packages/__pycache__/six.cpython-310.pyc,, -pip/_vendor/urllib3/packages/backports/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 -pip/_vendor/urllib3/packages/backports/__pycache__/__init__.cpython-310.pyc,, -pip/_vendor/urllib3/packages/backports/__pycache__/makefile.cpython-310.pyc,, -pip/_vendor/urllib3/packages/backports/makefile.py,sha256=nbzt3i0agPVP07jqqgjhaYjMmuAi_W5E0EywZivVO8E,1417 -pip/_vendor/urllib3/packages/six.py,sha256=b9LM0wBXv7E7SrbCjAm4wwN-hrH-iNxv18LgWNMMKPo,34665 -pip/_vendor/urllib3/poolmanager.py,sha256=0KOOJECoeLYVjUHvv-0h4Oq3FFQQ2yb-Fnjkbj8gJO0,19786 -pip/_vendor/urllib3/request.py,sha256=ZFSIqX0C6WizixecChZ3_okyu7BEv0lZu1VT0s6h4SM,5985 -pip/_vendor/urllib3/response.py,sha256=fmDJAFkG71uFTn-sVSTh2Iw0WmcXQYqkbRjihvwBjU8,30641 -pip/_vendor/urllib3/util/__init__.py,sha256=JEmSmmqqLyaw8P51gUImZh8Gwg9i1zSe-DoqAitn2nc,1155 -pip/_vendor/urllib3/util/__pycache__/__init__.cpython-310.pyc,, -pip/_vendor/urllib3/util/__pycache__/connection.cpython-310.pyc,, -pip/_vendor/urllib3/util/__pycache__/proxy.cpython-310.pyc,, -pip/_vendor/urllib3/util/__pycache__/queue.cpython-310.pyc,, -pip/_vendor/urllib3/util/__pycache__/request.cpython-310.pyc,, -pip/_vendor/urllib3/util/__pycache__/response.cpython-310.pyc,, -pip/_vendor/urllib3/util/__pycache__/retry.cpython-310.pyc,, -pip/_vendor/urllib3/util/__pycache__/ssl_.cpython-310.pyc,, -pip/_vendor/urllib3/util/__pycache__/ssl_match_hostname.cpython-310.pyc,, -pip/_vendor/urllib3/util/__pycache__/ssltransport.cpython-310.pyc,, -pip/_vendor/urllib3/util/__pycache__/timeout.cpython-310.pyc,, -pip/_vendor/urllib3/util/__pycache__/url.cpython-310.pyc,, -pip/_vendor/urllib3/util/__pycache__/wait.cpython-310.pyc,, -pip/_vendor/urllib3/util/connection.py,sha256=5Lx2B1PW29KxBn2T0xkN1CBgRBa3gGVJBKoQoRogEVk,4901 -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=C0OUt2tcU6LRiQJ7YYNP9GvPrSvl7ziIBekQ-5nlBZk,3997 -pip/_vendor/urllib3/util/response.py,sha256=GJpg3Egi9qaJXRwBh5wv-MNuRWan5BIu40oReoxWP28,3510 -pip/_vendor/urllib3/util/retry.py,sha256=4laWh0HpwGijLiBmdBIYtbhYekQnNzzhx2W9uys0RHA,22003 -pip/_vendor/urllib3/util/ssl_.py,sha256=X4-AqW91aYPhPx6-xbf66yHFQKbqqfC_5Zt4WkLX1Hc,17177 -pip/_vendor/urllib3/util/ssl_match_hostname.py,sha256=Ir4cZVEjmAk8gUAIHWSi7wtOO83UCYABY2xFD1Ql_WA,5758 -pip/_vendor/urllib3/util/ssltransport.py,sha256=NA-u5rMTrDFDFC8QzRKUEKMG0561hOD4qBTr3Z4pv6E,6895 -pip/_vendor/urllib3/util/timeout.py,sha256=QSbBUNOB9yh6AnDn61SrLQ0hg5oz0I9-uXEG91AJuIg,10003 -pip/_vendor/urllib3/util/url.py,sha256=HLCLEKt8D-QMioTNbneZSzGTGyUkns4w_lSJP1UzE2E,14298 -pip/_vendor/urllib3/util/wait.py,sha256=fOX0_faozG2P7iVojQoE1mbydweNyTcm-hXEfFrTtLI,5403 -pip/_vendor/vendor.txt,sha256=3i3Zr7_kRDD9UEva0I8YOMroCZ8xuZ9OWd_Q4jmazqE,476 -pip/_vendor/webencodings/__init__.py,sha256=qOBJIuPy_4ByYH6W_bNgJF-qYQ2DoU-dKsDu5yRWCXg,10579 -pip/_vendor/webencodings/__pycache__/__init__.cpython-310.pyc,, -pip/_vendor/webencodings/__pycache__/labels.cpython-310.pyc,, -pip/_vendor/webencodings/__pycache__/mklabels.cpython-310.pyc,, -pip/_vendor/webencodings/__pycache__/tests.cpython-310.pyc,, -pip/_vendor/webencodings/__pycache__/x_user_defined.cpython-310.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/gestao_raul/Lib/site-packages/pip-25.0.1.dist-info/AUTHORS.txt b/gestao_raul/Lib/site-packages/pip-25.0.1.dist-info/AUTHORS.txt new file mode 100644 index 0000000..f42daec --- /dev/null +++ b/gestao_raul/Lib/site-packages/pip-25.0.1.dist-info/AUTHORS.txt @@ -0,0 +1,806 @@ +@Switch01 +A_Rog +Aakanksha Agrawal +Abhinav Sagar +ABHYUDAY PRATAP SINGH +abs51295 +AceGentile +Adam Chainz +Adam Tse +Adam Wentz +admin +Adolfo Ochagavía +Adrien Morison +Agus +ahayrapetyan +Ahilya +AinsworthK +Akash Srivastava +Alan Yee +Albert Tugushev +Albert-Guan +albertg +Alberto Sottile +Aleks Bunin +Ales Erjavec +Alethea Flowers +Alex Gaynor +Alex Grönholm +Alex Hedges +Alex Loosley +Alex Morega +Alex Stachowiak +Alexander Shtyrov +Alexandre Conrad +Alexey Popravka +Aleš Erjavec +Alli +Ami Fischman +Ananya Maiti +Anatoly Techtonik +Anders Kaseorg +Andre Aguiar +Andreas Lutro +Andrei Geacar +Andrew Gaul +Andrew Shymanel +Andrey Bienkowski +Andrey Bulgakov +Andrés Delfino +Andy Freeland +Andy Kluger +Ani Hayrapetyan +Aniruddha Basak +Anish Tambe +Anrs Hu +Anthony Sottile +Antoine Musso +Anton Ovchinnikov +Anton Patrushev +Anton Zelenov +Antonio Alvarado Hernandez +Antony Lee +Antti Kaihola +Anubhav Patel +Anudit Nagar +Anuj Godase +AQNOUCH Mohammed +AraHaan +arena +arenasys +Arindam Choudhury +Armin Ronacher +Arnon Yaari +Artem +Arun Babu Neelicattu +Ashley Manton +Ashwin Ramaswami +atse +Atsushi Odagiri +Avinash Karhana +Avner Cohen +Awit (Ah-Wit) Ghirmai +Baptiste Mispelon +Barney Gale +barneygale +Bartek Ogryczak +Bastian Venthur +Ben Bodenmiller +Ben Darnell +Ben Hoyt +Ben Mares +Ben Rosser +Bence Nagy +Benjamin Peterson +Benjamin VanEvery +Benoit Pierre +Berker Peksag +Bernard +Bernard Tyers +Bernardo B. Marques +Bernhard M. Wiedemann +Bertil Hatt +Bhavam Vidyarthi +Blazej Michalik +Bogdan Opanchuk +BorisZZZ +Brad Erickson +Bradley Ayers +Branch Vincent +Brandon L. Reiss +Brandt Bucher +Brannon Dorsey +Brett Randall +Brett Rosen +Brian Cristante +Brian Rosner +briantracy +BrownTruck +Bruno Oliveira +Bruno Renié +Bruno S +Bstrdsmkr +Buck Golemon +burrows +Bussonnier Matthias +bwoodsend +c22 +Caleb Brown +Caleb Martinez +Calvin Smith +Carl Meyer +Carlos Liam +Carol Willing +Carter Thayer +Cass +Chandrasekhar Atina +Charlie Marsh +charwick +Chih-Hsuan Yen +Chris Brinker +Chris Hunt +Chris Jerdonek +Chris Kuehl +Chris Markiewicz +Chris McDonough +Chris Pawley +Chris Pryer +Chris Wolfe +Christian Clauss +Christian Heimes +Christian Oudard +Christoph Reiter +Christopher Hunt +Christopher Snyder +chrysle +cjc7373 +Clark Boylan +Claudio Jolowicz +Clay McClure +Cody +Cody Soyland +Colin Watson +Collin Anderson +Connor Osborn +Cooper Lees +Cooper Ry Lees +Cory Benfield +Cory Wright +Craig Kerstiens +Cristian Sorinel +Cristina +Cristina Muñoz +ctg123 +Curtis Doty +cytolentino +Daan De Meyer +Dale +Damian +Damian Quiroga +Damian Shaw +Dan Black +Dan Savilonis +Dan Sully +Dane Hillard +daniel +Daniel Collins +Daniel Hahler +Daniel Holth +Daniel Jost +Daniel Katz +Daniel Shaulov +Daniele Esposti +Daniele Nicolodi +Daniele Procida +Daniil Konovalenko +Danny Hermes +Danny McClanahan +Darren Kavanagh +Dav Clark +Dave Abrahams +Dave Jones +David Aguilar +David Black +David Bordeynik +David Caro +David D Lowe +David Evans +David Hewitt +David Linke +David Poggi +David Poznik +David Pursehouse +David Runge +David Tucker +David Wales +Davidovich +ddelange +Deepak Sharma +Deepyaman Datta +Denise Yu +dependabot[bot] +derwolfe +Desetude +Devesh Kumar Singh +devsagul +Diego Caraballo +Diego Ramirez +DiegoCaraballo +Dimitri Merejkowsky +Dimitri Papadopoulos +Dimitri Papadopoulos Orfanos +Dirk Stolle +Dmitry Gladkov +Dmitry Volodin +Domen Kožar +Dominic Davis-Foster +Donald Stufft +Dongweiming +doron zarhi +Dos Moonen +Douglas Thor +DrFeathers +Dustin Ingram +Dustin Rodrigues +Dwayne Bailey +Ed Morley +Edgar Ramírez +Edgar Ramírez Mondragón +Ee Durbin +Efflam Lemaillet +efflamlemaillet +Eitan Adler +ekristina +elainechan +Eli Schwartz +Elisha Hollander +Ellen Marie Dash +Emil Burzo +Emil Styrke +Emmanuel Arias +Endoh Takanao +enoch +Erdinc Mutlu +Eric Cousineau +Eric Gillingham +Eric Hanchrow +Eric Hopper +Erik M. Bray +Erik Rose +Erwin Janssen +Eugene Vereshchagin +everdimension +Federico +Felipe Peter +Felix Yan +fiber-space +Filip Kokosiński +Filipe Laíns +Finn Womack +finnagin +Flavio Amurrio +Florian Briand +Florian Rathgeber +Francesco +Francesco Montesano +Fredrik Orderud +Frost Ming +Gabriel Curio +Gabriel de Perthuis +Garry Polley +gavin +gdanielson +Geoffrey Sneddon +George Song +Georgi Valkov +Georgy Pchelkin +ghost +Giftlin Rajaiah +gizmoguy1 +gkdoc +Godefroid Chapelle +Gopinath M +GOTO Hayato +gousaiyang +gpiks +Greg Roodt +Greg Ward +Guilherme Espada +Guillaume Seguin +gutsytechster +Guy Rozendorn +Guy Tuval +gzpan123 +Hanjun Kim +Hari Charan +Harsh Vardhan +harupy +Harutaka Kawamura +hauntsaninja +Henrich Hartzer +Henry Schreiner +Herbert Pfennig +Holly Stotelmyer +Honnix +Hsiaoming Yang +Hugo Lopes Tavares +Hugo van Kemenade +Hugues Bruant +Hynek Schlawack +Ian Bicking +Ian Cordasco +Ian Lee +Ian Stapleton Cordasco +Ian Wienand +Igor Kuzmitshov +Igor Sobreira +Ikko Ashimine +Ilan Schnell +Illia Volochii +Ilya Baryshev +Inada Naoki +Ionel Cristian Mărieș +Ionel Maries Cristian +Itamar Turner-Trauring +Ivan Pozdeev +J. Nick Koston +Jacob Kim +Jacob Walls +Jaime Sanz +jakirkham +Jakub Kuczys +Jakub Stasiak +Jakub Vysoky +Jakub Wilk +James Cleveland +James Curtin +James Firth +James Gerity +James Polley +Jan Pokorný +Jannis Leidel +Jarek Potiuk +jarondl +Jason Curtis +Jason R. Coombs +JasonMo +JasonMo1 +Jay Graves +Jean Abou Samra +Jean-Christophe Fillion-Robin +Jeff Barber +Jeff Dairiki +Jeff Widman +Jelmer Vernooij +jenix21 +Jeremy Fleischman +Jeremy Stanley +Jeremy Zafran +Jesse Rittner +Jiashuo Li +Jim Fisher +Jim Garrison +Jinzhe Zeng +Jiun Bae +Jivan Amara +Joe Bylund +Joe Michelini +John Paton +John Sirois +John T. Wodder II +John-Scott Atlakson +johnthagen +Jon Banafato +Jon Dufresne +Jon Parise +Jonas Nockert +Jonathan Herbert +Joonatan Partanen +Joost Molenaar +Jorge Niedbalski +Joseph Bylund +Joseph Long +Josh Bronson +Josh Cannon +Josh Hansen +Josh Schneier +Joshua +JoshuaPerdue +Juan Luis Cano Rodríguez +Juanjo Bazán +Judah Rand +Julian Berman +Julian Gethmann +Julien Demoor +July Tikhonov +Jussi Kukkonen +Justin van Heek +jwg4 +Jyrki Pulliainen +Kai Chen +Kai Mueller +Kamal Bin Mustafa +Karolina Surma +kasium +kaustav haldar +keanemind +Keith Maxwell +Kelsey Hightower +Kenneth Belitzky +Kenneth Reitz +Kevin Burke +Kevin Carter +Kevin Frommelt +Kevin R Patterson +Kexuan Sun +Kit Randel +Klaas van Schelven +KOLANICH +konstin +kpinc +Krishna Oza +Kumar McMillan +Kuntal Majumder +Kurt McKee +Kyle Persohn +lakshmanaram +Laszlo Kiss-Kollar +Laurent Bristiel +Laurent LAPORTE +Laurie O +Laurie Opperman +layday +Leon Sasson +Lev Givon +Lincoln de Sousa +Lipis +lorddavidiii +Loren Carvalho +Lucas Cimon +Ludovic Gasc +Luis Medel +Lukas Geiger +Lukas Juhrich +Luke Macken +Luo Jiebin +luojiebin +luz.paz +László Kiss Kollár +M00nL1ght +Marc Abramowitz +Marc Tamlyn +Marcus Smith +Mariatta +Mark Kohler +Mark McLoughlin +Mark Williams +Markus Hametner +Martey Dodoo +Martin Fischer +Martin Häcker +Martin Pavlasek +Masaki +Masklinn +Matej Stuchlik +Mathew Jennings +Mathieu Bridon +Mathieu Kniewallner +Matt Bacchi +Matt Good +Matt Maker +Matt Robenolt +Matt Wozniski +matthew +Matthew Einhorn +Matthew Feickert +Matthew Gilliard +Matthew Hughes +Matthew Iversen +Matthew Treinish +Matthew Trumbell +Matthew Willson +Matthias Bussonnier +mattip +Maurits van Rees +Max W Chase +Maxim Kurnikov +Maxime Rouyrre +mayeut +mbaluna +mdebi +memoselyk +meowmeowcat +Michael +Michael Aquilina +Michael E. Karpeles +Michael Klich +Michael Mintz +Michael Williamson +michaelpacer +Michał Górny +Mickaël Schoentgen +Miguel Araujo Perez +Mihir Singh +Mike +Mike Hendricks +Min RK +MinRK +Miro Hrončok +Monica Baluna +montefra +Monty Taylor +morotti +mrKazzila +Muha Ajjan +Nadav Wexler +Nahuel Ambrosini +Nate Coraor +Nate Prewitt +Nathan Houghton +Nathaniel J. Smith +Nehal J Wani +Neil Botelho +Nguyễn Gia Phong +Nicholas Serra +Nick Coghlan +Nick Stenning +Nick Timkovich +Nicolas Bock +Nicole Harris +Nikhil Benesch +Nikhil Ladha +Nikita Chepanov +Nikolay Korolev +Nipunn Koorapati +Nitesh Sharma +Niyas Sait +Noah +Noah Gorny +Nowell Strite +NtaleGrey +nvdv +OBITORASU +Ofek Lev +ofrinevo +Oliver Freund +Oliver Jeeves +Oliver Mannion +Oliver Tonnhofer +Olivier Girardot +Olivier Grisel +Ollie Rutherfurd +OMOTO Kenji +Omry Yadan +onlinejudge95 +Oren Held +Oscar Benjamin +Oz N Tiram +Pachwenko +Patrick Dubroy +Patrick Jenkins +Patrick Lawson +patricktokeeffe +Patrik Kopkan +Paul Ganssle +Paul Kehrer +Paul Moore +Paul Nasrat +Paul Oswald +Paul van der Linden +Paulus Schoutsen +Pavel Safronov +Pavithra Eswaramoorthy +Pawel Jasinski +Paweł Szramowski +Pekka Klärck +Peter Gessler +Peter Lisák +Peter Shen +Peter Waller +Petr Viktorin +petr-tik +Phaneendra Chiruvella +Phil Elson +Phil Freo +Phil Pennock +Phil Whelan +Philip Jägenstedt +Philip Molloy +Philippe Ombredanne +Pi Delport +Pierre-Yves Rofes +Pieter Degroote +pip +Prabakaran Kumaresshan +Prabhjyotsing Surjit Singh Sodhi +Prabhu Marappan +Pradyun Gedam +Prashant Sharma +Pratik Mallya +pre-commit-ci[bot] +Preet Thakkar +Preston Holmes +Przemek Wrzos +Pulkit Goyal +q0w +Qiangning Hong +Qiming Xu +Quentin Lee +Quentin Pradet +R. David Murray +Rafael Caricio +Ralf Schmitt +Ran Benita +Randy Döring +Razzi Abuissa +rdb +Reece Dunham +Remi Rampin +Rene Dudfield +Riccardo Magliocchetti +Riccardo Schirone +Richard Jones +Richard Si +Ricky Ng-Adam +Rishi +rmorotti +RobberPhex +Robert Collins +Robert McGibbon +Robert Pollak +Robert T. McGibbon +robin elisha robinson +Roey Berman +Rohan Jain +Roman Bogorodskiy +Roman Donchenko +Romuald Brunet +ronaudinho +Ronny Pfannschmidt +Rory McCann +Ross Brattain +Roy Wellington Ⅳ +Ruairidh MacLeod +Russell Keith-Magee +Ryan Shepherd +Ryan Wooden +ryneeverett +S. Guliaev +Sachi King +Salvatore Rinchiera +sandeepkiran-js +Sander Van Balen +Savio Jomton +schlamar +Scott Kitterman +Sean +seanj +Sebastian Jordan +Sebastian Schaetz +Segev Finer +SeongSoo Cho +Sergey Vasilyev +Seth Michael Larson +Seth Woodworth +Shahar Epstein +Shantanu +shenxianpeng +shireenrao +Shivansh-007 +Shixian Sheng +Shlomi Fish +Shovan Maity +Simeon Visser +Simon Cross +Simon Pichugin +sinoroc +sinscary +snook92 +socketubs +Sorin Sbarnea +Srinivas Nyayapati +Srishti Hegde +Stavros Korokithakis +Stefan Scherfke +Stefano Rivera +Stephan Erb +Stephen Rosen +stepshal +Steve (Gadget) Barnes +Steve Barnes +Steve Dower +Steve Kowalik +Steven Myint +Steven Silvester +stonebig +studioj +Stéphane Bidoul +Stéphane Bidoul (ACSONE) +Stéphane Klein +Sumana Harihareswara +Surbhi Sharma +Sviatoslav Sydorenko +Sviatoslav Sydorenko (Святослав Сидоренко) +Swat009 +Sylvain +Takayuki SHIMIZUKAWA +Taneli Hukkinen +tbeswick +Thiago +Thijs Triemstra +Thomas Fenzl +Thomas Grainger +Thomas Guettler +Thomas Johansson +Thomas Kluyver +Thomas Smith +Thomas VINCENT +Tim D. Smith +Tim Gates +Tim Harder +Tim Heap +tim smith +tinruufu +Tobias Hermann +Tom Forbes +Tom Freudenheim +Tom V +Tomas Hrnciar +Tomas Orsava +Tomer Chachamu +Tommi Enenkel | AnB +Tomáš Hrnčiar +Tony Beswick +Tony Narlock +Tony Zhaocheng Tan +TonyBeswick +toonarmycaptain +Toshio Kuratomi +toxinu +Travis Swicegood +Tushar Sadhwani +Tzu-ping Chung +Valentin Haenel +Victor Stinner +victorvpaulo +Vikram - Google +Viktor Szépe +Ville Skyttä +Vinay Sajip +Vincent Philippon +Vinicyus Macedo +Vipul Kumar +Vitaly Babiy +Vladimir Fokow +Vladimir Rutsky +W. Trevor King +Wil Tan +Wilfred Hughes +William Edwards +William ML Leslie +William T Olson +William Woodruff +Wilson Mo +wim glenn +Winson Luk +Wolfgang Maier +Wu Zhenyu +XAMES3 +Xavier Fernandez +Xianpeng Shen +xoviat +xtreak +YAMAMOTO Takashi +Yen Chi Hsuan +Yeray Diaz Diaz +Yoval P +Yu Jian +Yuan Jing Vincent Yan +Yusuke Hayashi +Zearin +Zhiping Deng +ziebam +Zvezdan Petkovic +Łukasz Langa +Роман Донченко +Семён Марьясин diff --git a/gestao_raul/Lib/site-packages/pip-25.0.1.dist-info/INSTALLER b/gestao_raul/Lib/site-packages/pip-25.0.1.dist-info/INSTALLER new file mode 100644 index 0000000..a1b589e --- /dev/null +++ b/gestao_raul/Lib/site-packages/pip-25.0.1.dist-info/INSTALLER @@ -0,0 +1 @@ +pip diff --git a/gestao_raul/Lib/site-packages/pip-23.0.1.dist-info/LICENSE.txt b/gestao_raul/Lib/site-packages/pip-25.0.1.dist-info/LICENSE.txt similarity index 100% rename from gestao_raul/Lib/site-packages/pip-23.0.1.dist-info/LICENSE.txt rename to gestao_raul/Lib/site-packages/pip-25.0.1.dist-info/LICENSE.txt diff --git a/gestao_raul/Lib/site-packages/pip-23.0.1.dist-info/METADATA b/gestao_raul/Lib/site-packages/pip-25.0.1.dist-info/METADATA similarity index 73% rename from gestao_raul/Lib/site-packages/pip-23.0.1.dist-info/METADATA rename to gestao_raul/Lib/site-packages/pip-25.0.1.dist-info/METADATA index 984f9ad..3315c06 100644 --- a/gestao_raul/Lib/site-packages/pip-23.0.1.dist-info/METADATA +++ b/gestao_raul/Lib/site-packages/pip-25.0.1.dist-info/METADATA @@ -1,11 +1,10 @@ -Metadata-Version: 2.1 +Metadata-Version: 2.2 Name: pip -Version: 23.0.1 +Version: 25.0.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 +Author-email: The pip developers License: MIT +Project-URL: Homepage, https://pip.pypa.io/ 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/ @@ -16,24 +15,35 @@ 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.7 Classifier: Programming Language :: Python :: 3.8 Classifier: Programming Language :: Python :: 3.9 Classifier: Programming Language :: Python :: 3.10 Classifier: Programming Language :: Python :: 3.11 +Classifier: Programming Language :: Python :: 3.12 +Classifier: Programming Language :: Python :: 3.13 Classifier: Programming Language :: Python :: Implementation :: CPython Classifier: Programming Language :: Python :: Implementation :: PyPy -Requires-Python: >=3.7 +Requires-Python: >=3.8 +Description-Content-Type: text/x-rst License-File: LICENSE.txt +License-File: AUTHORS.txt pip - The Python Package Installer ================================== -.. image:: https://img.shields.io/pypi/v/pip.svg +.. |pypi-version| image:: https://img.shields.io/pypi/v/pip.svg :target: https://pypi.org/project/pip/ + :alt: PyPI -.. image:: https://readthedocs.org/projects/pip/badge/?version=latest +.. |python-versions| image:: https://img.shields.io/pypi/pyversions/pip + :target: https://pypi.org/project/pip + :alt: PyPI - Python Version + +.. |docs-badge| image:: https://readthedocs.org/projects/pip/badge/?version=latest :target: https://pip.pypa.io/en/latest + :alt: Documentation + +|pypi-version| |python-versions| |docs-badge| pip is the `package installer`_ for Python. You can use pip to install packages from the `Python Package Index`_ and other indexes. @@ -47,10 +57,6 @@ We release updates regularly, with a new version every 3 months. Find more detai * `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`_ @@ -77,10 +83,6 @@ rooms, and mailing lists is expected to follow the `PSF Code of Conduct`_. .. _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 .. _User IRC: https://kiwiirc.com/nextclient/#ircs://irc.libera.chat:+6697/pypa diff --git a/gestao_raul/Lib/site-packages/pip-25.0.1.dist-info/RECORD b/gestao_raul/Lib/site-packages/pip-25.0.1.dist-info/RECORD new file mode 100644 index 0000000..f3408bb --- /dev/null +++ b/gestao_raul/Lib/site-packages/pip-25.0.1.dist-info/RECORD @@ -0,0 +1,854 @@ +../../Scripts/pip.exe,sha256=rlkowZcywaz7LW5J-c_NHbreEw0b0s9SHlcR3VTvZ-o,108420 +../../Scripts/pip3.10.exe,sha256=rlkowZcywaz7LW5J-c_NHbreEw0b0s9SHlcR3VTvZ-o,108420 +../../Scripts/pip3.exe,sha256=rlkowZcywaz7LW5J-c_NHbreEw0b0s9SHlcR3VTvZ-o,108420 +pip-25.0.1.dist-info/AUTHORS.txt,sha256=HqzpBVLfT1lBthqQfiDlVeFkg65hJ7ZQvvWhoq-BAsA,11018 +pip-25.0.1.dist-info/INSTALLER,sha256=zuuue4knoyJ-UwPPXg8fezS7VCrXJQrAP7zeNuwvFQg,4 +pip-25.0.1.dist-info/LICENSE.txt,sha256=Y0MApmnUmurmWxLGxIySTFGkzfPR_whtw0VtyLyqIQQ,1093 +pip-25.0.1.dist-info/METADATA,sha256=T6cxjPMPl523zsRcEsu8K0-IoV8S7vv1mmKR0KA6-SY,3677 +pip-25.0.1.dist-info/RECORD,, +pip-25.0.1.dist-info/REQUESTED,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +pip-25.0.1.dist-info/WHEEL,sha256=In9FTNxeP60KnTkGw7wk6mJPYd_dQSjEZmXdBdMCI-8,91 +pip-25.0.1.dist-info/entry_points.txt,sha256=eeIjuzfnfR2PrhbjnbzFU6MnSS70kZLxwaHHq6M-bD0,87 +pip-25.0.1.dist-info/top_level.txt,sha256=zuuue4knoyJ-UwPPXg8fezS7VCrXJQrAP7zeNuwvFQg,4 +pip/__init__.py,sha256=aKiv_sTe7UbE7qmtCinJutFjqN0MndZQZ1fKLNwFFLE,357 +pip/__main__.py,sha256=WzbhHXTbSE6gBY19mNN9m4s5o_365LOvTYSgqgbdBhE,854 +pip/__pip-runner__.py,sha256=cPPWuJ6NK_k-GzfvlejLFgwzmYUROmpAR6QC3Q-vkXQ,1450 +pip/__pycache__/__init__.cpython-310.pyc,, +pip/__pycache__/__main__.cpython-310.pyc,, +pip/__pycache__/__pip-runner__.cpython-310.pyc,, +pip/_internal/__init__.py,sha256=MfcoOluDZ8QMCFYal04IqOJ9q6m2V7a0aOsnI-WOxUo,513 +pip/_internal/__pycache__/__init__.cpython-310.pyc,, +pip/_internal/__pycache__/build_env.cpython-310.pyc,, +pip/_internal/__pycache__/cache.cpython-310.pyc,, +pip/_internal/__pycache__/configuration.cpython-310.pyc,, +pip/_internal/__pycache__/exceptions.cpython-310.pyc,, +pip/_internal/__pycache__/main.cpython-310.pyc,, +pip/_internal/__pycache__/pyproject.cpython-310.pyc,, +pip/_internal/__pycache__/self_outdated_check.cpython-310.pyc,, +pip/_internal/__pycache__/wheel_builder.cpython-310.pyc,, +pip/_internal/build_env.py,sha256=Dv4UCClSg4uNaal_hL-trg5-zl3Is9CuIDxkChCkXF4,10700 +pip/_internal/cache.py,sha256=Jb698p5PNigRtpW5o26wQNkkUv4MnQ94mc471wL63A0,10369 +pip/_internal/cli/__init__.py,sha256=FkHBgpxxb-_gd6r1FjnNhfMOzAUYyXoXKJ6abijfcFU,132 +pip/_internal/cli/__pycache__/__init__.cpython-310.pyc,, +pip/_internal/cli/__pycache__/autocompletion.cpython-310.pyc,, +pip/_internal/cli/__pycache__/base_command.cpython-310.pyc,, +pip/_internal/cli/__pycache__/cmdoptions.cpython-310.pyc,, +pip/_internal/cli/__pycache__/command_context.cpython-310.pyc,, +pip/_internal/cli/__pycache__/index_command.cpython-310.pyc,, +pip/_internal/cli/__pycache__/main.cpython-310.pyc,, +pip/_internal/cli/__pycache__/main_parser.cpython-310.pyc,, +pip/_internal/cli/__pycache__/parser.cpython-310.pyc,, +pip/_internal/cli/__pycache__/progress_bars.cpython-310.pyc,, +pip/_internal/cli/__pycache__/req_command.cpython-310.pyc,, +pip/_internal/cli/__pycache__/spinners.cpython-310.pyc,, +pip/_internal/cli/__pycache__/status_codes.cpython-310.pyc,, +pip/_internal/cli/autocompletion.py,sha256=Lli3Mr6aDNu7ZkJJFFvwD2-hFxNI6Avz8OwMyS5TVrs,6865 +pip/_internal/cli/base_command.py,sha256=NZin6KMzW9NSYzKk4Tc8isb_TQYKR4CKd5j9mSm46PI,8625 +pip/_internal/cli/cmdoptions.py,sha256=V3BB22F4_v_RkHaZ5onWnszhbBtjYZvNhbn9M0NO0HI,30116 +pip/_internal/cli/command_context.py,sha256=RHgIPwtObh5KhMrd3YZTkl8zbVG-6Okml7YbFX4Ehg0,774 +pip/_internal/cli/index_command.py,sha256=i_sgNlPmXC5iHUaY-dmmrHKKTgc5O4hWzisr5Al1rr0,5677 +pip/_internal/cli/main.py,sha256=BDZef-bWe9g9Jpr4OVs4dDf-845HJsKw835T7AqEnAc,2817 +pip/_internal/cli/main_parser.py,sha256=laDpsuBDl6kyfywp9eMMA9s84jfH2TJJn-vmL0GG90w,4338 +pip/_internal/cli/parser.py,sha256=VCMtduzECUV87KaHNu-xJ-wLNL82yT3x16V4XBxOAqI,10825 +pip/_internal/cli/progress_bars.py,sha256=9GcgusWtwfqou2zhAQp1XNbQHIDslqyyz9UwLzw7Jgc,2717 +pip/_internal/cli/req_command.py,sha256=DqeFhmUMs6o6Ev8qawAcOoYNdAZsfyKS0MZI5jsJYwQ,12250 +pip/_internal/cli/spinners.py,sha256=hIJ83GerdFgFCdobIA23Jggetegl_uC4Sp586nzFbPE,5118 +pip/_internal/cli/status_codes.py,sha256=sEFHUaUJbqv8iArL3HAtcztWZmGOFX01hTesSytDEh0,116 +pip/_internal/commands/__init__.py,sha256=5oRO9O3dM2vGuh0bFw4HOVletryrz5HHMmmPWwJrH9U,3882 +pip/_internal/commands/__pycache__/__init__.cpython-310.pyc,, +pip/_internal/commands/__pycache__/cache.cpython-310.pyc,, +pip/_internal/commands/__pycache__/check.cpython-310.pyc,, +pip/_internal/commands/__pycache__/completion.cpython-310.pyc,, +pip/_internal/commands/__pycache__/configuration.cpython-310.pyc,, +pip/_internal/commands/__pycache__/debug.cpython-310.pyc,, +pip/_internal/commands/__pycache__/download.cpython-310.pyc,, +pip/_internal/commands/__pycache__/freeze.cpython-310.pyc,, +pip/_internal/commands/__pycache__/hash.cpython-310.pyc,, +pip/_internal/commands/__pycache__/help.cpython-310.pyc,, +pip/_internal/commands/__pycache__/index.cpython-310.pyc,, +pip/_internal/commands/__pycache__/inspect.cpython-310.pyc,, +pip/_internal/commands/__pycache__/install.cpython-310.pyc,, +pip/_internal/commands/__pycache__/list.cpython-310.pyc,, +pip/_internal/commands/__pycache__/search.cpython-310.pyc,, +pip/_internal/commands/__pycache__/show.cpython-310.pyc,, +pip/_internal/commands/__pycache__/uninstall.cpython-310.pyc,, +pip/_internal/commands/__pycache__/wheel.cpython-310.pyc,, +pip/_internal/commands/cache.py,sha256=IOezTicHjGE5sWdBx2nwPVgbjuJHM3s-BZEkpZLemuY,8107 +pip/_internal/commands/check.py,sha256=Hr_4eiMd9cgVDgEvjtIdw915NmL7ROIWW8enkr8slPQ,2268 +pip/_internal/commands/completion.py,sha256=HT4lD0bgsflHq2IDgYfiEdp7IGGtE7s6MgI3xn0VQEw,4287 +pip/_internal/commands/configuration.py,sha256=n98enwp6y0b5G6fiRQjaZo43FlJKYve_daMhN-4BRNc,9766 +pip/_internal/commands/debug.py,sha256=DNDRgE9YsKrbYzU0s3VKi8rHtKF4X13CJ_br_8PUXO0,6797 +pip/_internal/commands/download.py,sha256=0qB0nys6ZEPsog451lDsjL5Bx7Z97t-B80oFZKhpzKM,5273 +pip/_internal/commands/freeze.py,sha256=2Vt72BYTSm9rzue6d8dNzt8idxWK4Db6Hd-anq7GQ80,3203 +pip/_internal/commands/hash.py,sha256=EVVOuvGtoPEdFi8SNnmdqlCQrhCxV-kJsdwtdcCnXGQ,1703 +pip/_internal/commands/help.py,sha256=gcc6QDkcgHMOuAn5UxaZwAStsRBrnGSn_yxjS57JIoM,1132 +pip/_internal/commands/index.py,sha256=RAXxmJwFhVb5S1BYzb5ifX3sn9Na8v2CCVYwSMP8pao,4731 +pip/_internal/commands/inspect.py,sha256=PGrY9TRTRCM3y5Ml8Bdk8DEOXquWRfscr4DRo1LOTPc,3189 +pip/_internal/commands/install.py,sha256=r3yHQUxvxt7gD5j9n6zRDslAvtx9CT_whLuQJcktp6M,29390 +pip/_internal/commands/list.py,sha256=oiIzSjLP6__d7dIS3q0Xb5ywsaOThBWRqMyjjKzkPdM,12769 +pip/_internal/commands/search.py,sha256=fWkUQVx_gm8ebbFAlCgqtxKXT9rNahpJ-BI__3HNZpg,5626 +pip/_internal/commands/show.py,sha256=0YBhCga3PAd81vT3l7UWflktSpB5-aYqQcJxBVPazVM,7857 +pip/_internal/commands/uninstall.py,sha256=7pOR7enK76gimyxQbzxcG1OsyLXL3DvX939xmM8Fvtg,3892 +pip/_internal/commands/wheel.py,sha256=eJRhr_qoNNxWAkkdJCNiQM7CXd4E1_YyQhsqJnBPGGg,6414 +pip/_internal/configuration.py,sha256=-KOok6jh3hFzXMPQFPJ1_EFjBpAsge-RSreQuLHLmzo,14005 +pip/_internal/distributions/__init__.py,sha256=Hq6kt6gXBgjNit5hTTWLAzeCNOKoB-N0pGYSqehrli8,858 +pip/_internal/distributions/__pycache__/__init__.cpython-310.pyc,, +pip/_internal/distributions/__pycache__/base.cpython-310.pyc,, +pip/_internal/distributions/__pycache__/installed.cpython-310.pyc,, +pip/_internal/distributions/__pycache__/sdist.cpython-310.pyc,, +pip/_internal/distributions/__pycache__/wheel.cpython-310.pyc,, +pip/_internal/distributions/base.py,sha256=QeB9qvKXDIjLdPBDE5fMgpfGqMMCr-govnuoQnGuiF8,1783 +pip/_internal/distributions/installed.py,sha256=QinHFbWAQ8oE0pbD8MFZWkwlnfU1QYTccA1vnhrlYOU,842 +pip/_internal/distributions/sdist.py,sha256=PlcP4a6-R6c98XnOM-b6Lkb3rsvh9iG4ok8shaanrzs,6751 +pip/_internal/distributions/wheel.py,sha256=THBYfnv7VVt8mYhMYUtH13S1E7FDwtDyDfmUcl8ai0E,1317 +pip/_internal/exceptions.py,sha256=2_byISIv3kSnI_9T-Esfxrt0LnTRgcUHyxu0twsHjQY,26481 +pip/_internal/index/__init__.py,sha256=vpt-JeTZefh8a-FC22ZeBSXFVbuBcXSGiILhQZJaNpQ,30 +pip/_internal/index/__pycache__/__init__.cpython-310.pyc,, +pip/_internal/index/__pycache__/collector.cpython-310.pyc,, +pip/_internal/index/__pycache__/package_finder.cpython-310.pyc,, +pip/_internal/index/__pycache__/sources.cpython-310.pyc,, +pip/_internal/index/collector.py,sha256=RdPO0JLAlmyBWPAWYHPyRoGjz3GNAeTngCNkbGey_mE,16265 +pip/_internal/index/package_finder.py,sha256=mJHAljlHeHuclyuxtjvBZO6DtovKjsZjF_tCh_wux5E,38076 +pip/_internal/index/sources.py,sha256=lPBLK5Xiy8Q6IQMio26Wl7ocfZOKkgGklIBNyUJ23fI,8632 +pip/_internal/locations/__init__.py,sha256=UaAxeZ_f93FyouuFf4p7SXYF-4WstXuEvd3LbmPCAno,14925 +pip/_internal/locations/__pycache__/__init__.cpython-310.pyc,, +pip/_internal/locations/__pycache__/_distutils.cpython-310.pyc,, +pip/_internal/locations/__pycache__/_sysconfig.cpython-310.pyc,, +pip/_internal/locations/__pycache__/base.cpython-310.pyc,, +pip/_internal/locations/_distutils.py,sha256=x6nyVLj7X11Y4khIdf-mFlxMl2FWadtVEgeb8upc_WI,6013 +pip/_internal/locations/_sysconfig.py,sha256=IGzds60qsFneRogC-oeBaY7bEh3lPt_v47kMJChQXsU,7724 +pip/_internal/locations/base.py,sha256=RQiPi1d4FVM2Bxk04dQhXZ2PqkeljEL2fZZ9SYqIQ78,2556 +pip/_internal/main.py,sha256=r-UnUe8HLo5XFJz8inTcOOTiu_sxNhgHb6VwlGUllOI,340 +pip/_internal/metadata/__init__.py,sha256=CU8jK1TZso7jOLdr0sX9xDjrcs5iy8d7IRK-hvaIO5Y,4337 +pip/_internal/metadata/__pycache__/__init__.cpython-310.pyc,, +pip/_internal/metadata/__pycache__/_json.cpython-310.pyc,, +pip/_internal/metadata/__pycache__/base.cpython-310.pyc,, +pip/_internal/metadata/__pycache__/pkg_resources.cpython-310.pyc,, +pip/_internal/metadata/_json.py,sha256=ezrIYazHCINM2QUk1eA9wEAMj3aeGWeDVgGalgUzKpc,2707 +pip/_internal/metadata/base.py,sha256=ft0K5XNgI4ETqZnRv2-CtvgYiMOMAeGMAzxT-f6VLJA,25298 +pip/_internal/metadata/importlib/__init__.py,sha256=jUUidoxnHcfITHHaAWG1G2i5fdBYklv_uJcjo2x7VYE,135 +pip/_internal/metadata/importlib/__pycache__/__init__.cpython-310.pyc,, +pip/_internal/metadata/importlib/__pycache__/_compat.cpython-310.pyc,, +pip/_internal/metadata/importlib/__pycache__/_dists.cpython-310.pyc,, +pip/_internal/metadata/importlib/__pycache__/_envs.cpython-310.pyc,, +pip/_internal/metadata/importlib/_compat.py,sha256=c6av8sP8BBjAZuFSJow1iWfygUXNM3xRTCn5nqw6B9M,2796 +pip/_internal/metadata/importlib/_dists.py,sha256=ftmYiyfUGUIjnVwt6W-Ijsimy5c28KgmXly5Q5IQ2P4,8279 +pip/_internal/metadata/importlib/_envs.py,sha256=UUB980XSrDWrMpQ1_G45i0r8Hqlg_tg3IPQ63mEqbNc,7431 +pip/_internal/metadata/pkg_resources.py,sha256=U07ETAINSGeSRBfWUG93E4tZZbaW_f7PGzEqZN0hulc,10542 +pip/_internal/models/__init__.py,sha256=3DHUd_qxpPozfzouoqa9g9ts1Czr5qaHfFxbnxriepM,63 +pip/_internal/models/__pycache__/__init__.cpython-310.pyc,, +pip/_internal/models/__pycache__/candidate.cpython-310.pyc,, +pip/_internal/models/__pycache__/direct_url.cpython-310.pyc,, +pip/_internal/models/__pycache__/format_control.cpython-310.pyc,, +pip/_internal/models/__pycache__/index.cpython-310.pyc,, +pip/_internal/models/__pycache__/installation_report.cpython-310.pyc,, +pip/_internal/models/__pycache__/link.cpython-310.pyc,, +pip/_internal/models/__pycache__/scheme.cpython-310.pyc,, +pip/_internal/models/__pycache__/search_scope.cpython-310.pyc,, +pip/_internal/models/__pycache__/selection_prefs.cpython-310.pyc,, +pip/_internal/models/__pycache__/target_python.cpython-310.pyc,, +pip/_internal/models/__pycache__/wheel.cpython-310.pyc,, +pip/_internal/models/candidate.py,sha256=zzgFRuw_kWPjKpGw7LC0ZUMD2CQ2EberUIYs8izjdCA,753 +pip/_internal/models/direct_url.py,sha256=uBtY2HHd3TO9cKQJWh0ThvE5FRr-MWRYChRU4IG9HZE,6578 +pip/_internal/models/format_control.py,sha256=wtsQqSK9HaUiNxQEuB-C62eVimw6G4_VQFxV9-_KDBE,2486 +pip/_internal/models/index.py,sha256=tYnL8oxGi4aSNWur0mG8DAP7rC6yuha_MwJO8xw0crI,1030 +pip/_internal/models/installation_report.py,sha256=zRVZoaz-2vsrezj_H3hLOhMZCK9c7TbzWgC-jOalD00,2818 +pip/_internal/models/link.py,sha256=GQ8hq7x-FDFPv25Nbn2veIM-MlBrGZDGLd7aZeF4Xrg,21448 +pip/_internal/models/scheme.py,sha256=PakmHJM3e8OOWSZFtfz1Az7f1meONJnkGuQxFlt3wBE,575 +pip/_internal/models/search_scope.py,sha256=67NEnsYY84784S-MM7ekQuo9KXLH-7MzFntXjapvAo0,4531 +pip/_internal/models/selection_prefs.py,sha256=qaFfDs3ciqoXPg6xx45N1jPLqccLJw4N0s4P0PyHTQ8,2015 +pip/_internal/models/target_python.py,sha256=2XaH2rZ5ZF-K5wcJbEMGEl7SqrTToDDNkrtQ2v_v_-Q,4271 +pip/_internal/models/wheel.py,sha256=G7dND_s4ebPkEL7RJ1qCY0QhUUWIIK6AnjWgRATF5no,4539 +pip/_internal/network/__init__.py,sha256=jf6Tt5nV_7zkARBrKojIXItgejvoegVJVKUbhAa5Ioc,50 +pip/_internal/network/__pycache__/__init__.cpython-310.pyc,, +pip/_internal/network/__pycache__/auth.cpython-310.pyc,, +pip/_internal/network/__pycache__/cache.cpython-310.pyc,, +pip/_internal/network/__pycache__/download.cpython-310.pyc,, +pip/_internal/network/__pycache__/lazy_wheel.cpython-310.pyc,, +pip/_internal/network/__pycache__/session.cpython-310.pyc,, +pip/_internal/network/__pycache__/utils.cpython-310.pyc,, +pip/_internal/network/__pycache__/xmlrpc.cpython-310.pyc,, +pip/_internal/network/auth.py,sha256=D4gASjUrqoDFlSt6gQ767KAAjv6PUyJU0puDlhXNVRE,20809 +pip/_internal/network/cache.py,sha256=0yGMA3Eet59xBSLtbPAenvI53dl29oUOeqZ2c0QL2Ss,4614 +pip/_internal/network/download.py,sha256=FLOP29dPYECBiAi7eEjvAbNkyzaKNqbyjOT2m8HPW8U,6048 +pip/_internal/network/lazy_wheel.py,sha256=PBdoMoNQQIA84Fhgne38jWF52W4x_KtsHjxgv4dkRKA,7622 +pip/_internal/network/session.py,sha256=msM4es16LmmNEYNkrYyg8fTc7gAHbKFltawfKP27LOI,18771 +pip/_internal/network/utils.py,sha256=Inaxel-NxBu4PQWkjyErdnfewsFCcgHph7dzR1-FboY,4088 +pip/_internal/network/xmlrpc.py,sha256=sAxzOacJ-N1NXGPvap9jC3zuYWSnnv3GXtgR2-E2APA,1838 +pip/_internal/operations/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +pip/_internal/operations/__pycache__/__init__.cpython-310.pyc,, +pip/_internal/operations/__pycache__/check.cpython-310.pyc,, +pip/_internal/operations/__pycache__/freeze.cpython-310.pyc,, +pip/_internal/operations/__pycache__/prepare.cpython-310.pyc,, +pip/_internal/operations/build/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +pip/_internal/operations/build/__pycache__/__init__.cpython-310.pyc,, +pip/_internal/operations/build/__pycache__/build_tracker.cpython-310.pyc,, +pip/_internal/operations/build/__pycache__/metadata.cpython-310.pyc,, +pip/_internal/operations/build/__pycache__/metadata_editable.cpython-310.pyc,, +pip/_internal/operations/build/__pycache__/metadata_legacy.cpython-310.pyc,, +pip/_internal/operations/build/__pycache__/wheel.cpython-310.pyc,, +pip/_internal/operations/build/__pycache__/wheel_editable.cpython-310.pyc,, +pip/_internal/operations/build/__pycache__/wheel_legacy.cpython-310.pyc,, +pip/_internal/operations/build/build_tracker.py,sha256=-ARW_TcjHCOX7D2NUOGntB4Fgc6b4aolsXkAK6BWL7w,4774 +pip/_internal/operations/build/metadata.py,sha256=9S0CUD8U3QqZeXp-Zyt8HxwU90lE4QrnYDgrqZDzBnc,1422 +pip/_internal/operations/build/metadata_editable.py,sha256=xlAwcP9q_8_fmv_3I39w9EZ7SQV9hnJZr9VuTsq2Y68,1510 +pip/_internal/operations/build/metadata_legacy.py,sha256=8i6i1QZX9m_lKPStEFsHKM0MT4a-CD408JOw99daLmo,2190 +pip/_internal/operations/build/wheel.py,sha256=sT12FBLAxDC6wyrDorh8kvcZ1jG5qInCRWzzP-UkJiQ,1075 +pip/_internal/operations/build/wheel_editable.py,sha256=yOtoH6zpAkoKYEUtr8FhzrYnkNHQaQBjWQ2HYae1MQg,1417 +pip/_internal/operations/build/wheel_legacy.py,sha256=K-6kNhmj-1xDF45ny1yheMerF0ui4EoQCLzEoHh6-tc,3045 +pip/_internal/operations/check.py,sha256=L24vRL8VWbyywdoeAhM89WCd8zLTnjIbULlKelUgIec,5912 +pip/_internal/operations/freeze.py,sha256=1_M79jAQKnCxWr-KCCmHuVXOVFGaUJHmoWLfFzgh7K4,9843 +pip/_internal/operations/install/__init__.py,sha256=mX7hyD2GNBO2mFGokDQ30r_GXv7Y_PLdtxcUv144e-s,51 +pip/_internal/operations/install/__pycache__/__init__.cpython-310.pyc,, +pip/_internal/operations/install/__pycache__/editable_legacy.cpython-310.pyc,, +pip/_internal/operations/install/__pycache__/wheel.cpython-310.pyc,, +pip/_internal/operations/install/editable_legacy.py,sha256=PoEsNEPGbIZ2yQphPsmYTKLOCMs4gv5OcCdzW124NcA,1283 +pip/_internal/operations/install/wheel.py,sha256=X5Iz9yUg5LlK5VNQ9g2ikc6dcRu8EPi_SUi5iuEDRgo,27615 +pip/_internal/operations/prepare.py,sha256=joWJwPkuqGscQgVNImLK71e9hRapwKvRCM8HclysmvU,28118 +pip/_internal/pyproject.py,sha256=GLJ6rWRS5_2noKdajohoLyDty57Z7QXhcUAYghmTnWc,7286 +pip/_internal/req/__init__.py,sha256=HxBFtZy_BbCclLgr26waMtpzYdO5T3vxePvpGAXSt5s,2653 +pip/_internal/req/__pycache__/__init__.cpython-310.pyc,, +pip/_internal/req/__pycache__/constructors.cpython-310.pyc,, +pip/_internal/req/__pycache__/req_file.cpython-310.pyc,, +pip/_internal/req/__pycache__/req_install.cpython-310.pyc,, +pip/_internal/req/__pycache__/req_set.cpython-310.pyc,, +pip/_internal/req/__pycache__/req_uninstall.cpython-310.pyc,, +pip/_internal/req/constructors.py,sha256=v1qzCN1mIldwx-nCrPc8JO4lxkm3Fv8M5RWvt8LISjc,18430 +pip/_internal/req/req_file.py,sha256=eys82McgaICOGic2UZRHjD720piKJPwmeSYdXlWwl6w,20234 +pip/_internal/req/req_install.py,sha256=BMptxHYg2uG_b-7HFEULPb3nuw0FMAbuea8zTq2rE7w,35786 +pip/_internal/req/req_set.py,sha256=j3esG0s6SzoVReX9rWn4rpYNtyET_fwxbwJPRimvRxo,2858 +pip/_internal/req/req_uninstall.py,sha256=qzDIxJo-OETWqGais7tSMCDcWbATYABT-Tid3ityF0s,23853 +pip/_internal/resolution/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +pip/_internal/resolution/__pycache__/__init__.cpython-310.pyc,, +pip/_internal/resolution/__pycache__/base.cpython-310.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-310.pyc,, +pip/_internal/resolution/legacy/__pycache__/resolver.cpython-310.pyc,, +pip/_internal/resolution/legacy/resolver.py,sha256=3HZiJBRd1FTN6jQpI4qRO8-TbLYeIbUTS6PFvXnXs2w,24068 +pip/_internal/resolution/resolvelib/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +pip/_internal/resolution/resolvelib/__pycache__/__init__.cpython-310.pyc,, +pip/_internal/resolution/resolvelib/__pycache__/base.cpython-310.pyc,, +pip/_internal/resolution/resolvelib/__pycache__/candidates.cpython-310.pyc,, +pip/_internal/resolution/resolvelib/__pycache__/factory.cpython-310.pyc,, +pip/_internal/resolution/resolvelib/__pycache__/found_candidates.cpython-310.pyc,, +pip/_internal/resolution/resolvelib/__pycache__/provider.cpython-310.pyc,, +pip/_internal/resolution/resolvelib/__pycache__/reporter.cpython-310.pyc,, +pip/_internal/resolution/resolvelib/__pycache__/requirements.cpython-310.pyc,, +pip/_internal/resolution/resolvelib/__pycache__/resolver.cpython-310.pyc,, +pip/_internal/resolution/resolvelib/base.py,sha256=DCf669FsqyQY5uqXeePDHQY1e4QO-pBzWH8O0s9-K94,5023 +pip/_internal/resolution/resolvelib/candidates.py,sha256=5UZ1upNnmqsP-nmEZaDYxaBgCoejw_e2WVGmmAvBxXc,20001 +pip/_internal/resolution/resolvelib/factory.py,sha256=MJOLSZJY8_28PPdcutoQ6gjJ_1eBDt6Z1edtfTJyR4E,32659 +pip/_internal/resolution/resolvelib/found_candidates.py,sha256=9hrTyQqFvl9I7Tji79F1AxHv39Qh1rkJ_7deSHSMfQc,6383 +pip/_internal/resolution/resolvelib/provider.py,sha256=bcsFnYvlmtB80cwVdW1fIwgol8ZNr1f1VHyRTkz47SM,9935 +pip/_internal/resolution/resolvelib/reporter.py,sha256=00JtoXEkTlw0-rl_sl54d71avwOsJHt9GGHcrj5Sza0,3168 +pip/_internal/resolution/resolvelib/requirements.py,sha256=7JG4Z72e5Yk4vU0S5ulGvbqTy4FMQGYhY5zQhX9zTtY,8065 +pip/_internal/resolution/resolvelib/resolver.py,sha256=nLJOsVMEVi2gQUVJoUFKMZAeu2f7GRMjGMvNSWyz0Bc,12592 +pip/_internal/self_outdated_check.py,sha256=1PFtttvLAeyCVR3tPoBq2sOlPD0IJ-KSqU6bc1HUk9c,8318 +pip/_internal/utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +pip/_internal/utils/__pycache__/__init__.cpython-310.pyc,, +pip/_internal/utils/__pycache__/_jaraco_text.cpython-310.pyc,, +pip/_internal/utils/__pycache__/_log.cpython-310.pyc,, +pip/_internal/utils/__pycache__/appdirs.cpython-310.pyc,, +pip/_internal/utils/__pycache__/compat.cpython-310.pyc,, +pip/_internal/utils/__pycache__/compatibility_tags.cpython-310.pyc,, +pip/_internal/utils/__pycache__/datetime.cpython-310.pyc,, +pip/_internal/utils/__pycache__/deprecation.cpython-310.pyc,, +pip/_internal/utils/__pycache__/direct_url_helpers.cpython-310.pyc,, +pip/_internal/utils/__pycache__/egg_link.cpython-310.pyc,, +pip/_internal/utils/__pycache__/entrypoints.cpython-310.pyc,, +pip/_internal/utils/__pycache__/filesystem.cpython-310.pyc,, +pip/_internal/utils/__pycache__/filetypes.cpython-310.pyc,, +pip/_internal/utils/__pycache__/glibc.cpython-310.pyc,, +pip/_internal/utils/__pycache__/hashes.cpython-310.pyc,, +pip/_internal/utils/__pycache__/logging.cpython-310.pyc,, +pip/_internal/utils/__pycache__/misc.cpython-310.pyc,, +pip/_internal/utils/__pycache__/packaging.cpython-310.pyc,, +pip/_internal/utils/__pycache__/retry.cpython-310.pyc,, +pip/_internal/utils/__pycache__/setuptools_build.cpython-310.pyc,, +pip/_internal/utils/__pycache__/subprocess.cpython-310.pyc,, +pip/_internal/utils/__pycache__/temp_dir.cpython-310.pyc,, +pip/_internal/utils/__pycache__/unpacking.cpython-310.pyc,, +pip/_internal/utils/__pycache__/urls.cpython-310.pyc,, +pip/_internal/utils/__pycache__/virtualenv.cpython-310.pyc,, +pip/_internal/utils/__pycache__/wheel.cpython-310.pyc,, +pip/_internal/utils/_jaraco_text.py,sha256=M15uUPIh5NpP1tdUGBxRau6q1ZAEtI8-XyLEETscFfE,3350 +pip/_internal/utils/_log.py,sha256=-jHLOE_THaZz5BFcCnoSL9EYAtJ0nXem49s9of4jvKw,1015 +pip/_internal/utils/appdirs.py,sha256=swgcTKOm3daLeXTW6v5BUS2Ti2RvEnGRQYH_yDXklAo,1665 +pip/_internal/utils/compat.py,sha256=ckkFveBiYQjRWjkNsajt_oWPS57tJvE8XxoC4OIYgCY,2399 +pip/_internal/utils/compatibility_tags.py,sha256=OWq5axHpW-MEEPztGdvgADrgJPAcV9a88Rxm4Z8VBs8,6272 +pip/_internal/utils/datetime.py,sha256=m21Y3wAtQc-ji6Veb6k_M5g6A0ZyFI4egchTdnwh-pQ,242 +pip/_internal/utils/deprecation.py,sha256=k7Qg_UBAaaTdyq82YVARA6D7RmcGTXGv7fnfcgigj4Q,3707 +pip/_internal/utils/direct_url_helpers.py,sha256=r2MRtkVDACv9AGqYODBUC9CjwgtsUU1s68hmgfCJMtA,3196 +pip/_internal/utils/egg_link.py,sha256=0FePZoUYKv4RGQ2t6x7w5Z427wbA_Uo3WZnAkrgsuqo,2463 +pip/_internal/utils/entrypoints.py,sha256=YlhLTRl2oHBAuqhc-zmL7USS67TPWVHImjeAQHreZTQ,3064 +pip/_internal/utils/filesystem.py,sha256=ajvA-q4ocliW9kPp8Yquh-4vssXbu-UKbo5FV9V4X64,4950 +pip/_internal/utils/filetypes.py,sha256=i8XAQ0eFCog26Fw9yV0Yb1ygAqKYB1w9Cz9n0fj8gZU,716 +pip/_internal/utils/glibc.py,sha256=vUkWq_1pJuzcYNcGKLlQmABoUiisK8noYY1yc8Wq4w4,3734 +pip/_internal/utils/hashes.py,sha256=XGGLL0AG8-RhWnyz87xF6MFZ--BKadHU35D47eApCKI,4972 +pip/_internal/utils/logging.py,sha256=ONfbrhaD248akkosK79if97n20EABxwjOxp5dE5RCRY,11845 +pip/_internal/utils/misc.py,sha256=DWnYxBUItjRp7hhxEg4ih6P6YpKrykM86dbi_EcU8SQ,23450 +pip/_internal/utils/packaging.py,sha256=cm-X_0HVHV_jRwUVZh6AuEWqSitzf8EpaJ7Uv2UGu6A,2142 +pip/_internal/utils/retry.py,sha256=mhFbykXjhTnZfgzeuy-vl9c8nECnYn_CMtwNJX2tYzQ,1392 +pip/_internal/utils/setuptools_build.py,sha256=ouXpud-jeS8xPyTPsXJ-m34NPvK5os45otAzdSV_IJE,4435 +pip/_internal/utils/subprocess.py,sha256=EsvqSRiSMHF98T8Txmu6NLU3U--MpTTQjtNgKP0P--M,8988 +pip/_internal/utils/temp_dir.py,sha256=5qOXe8M4JeY6vaFQM867d5zkp1bSwMZ-KT5jymmP0Zg,9310 +pip/_internal/utils/unpacking.py,sha256=_gVdyzTRDMYktpnYljn4OoxrZTtMCf4xknSm4rK0WaA,11967 +pip/_internal/utils/urls.py,sha256=qceSOZb5lbNDrHNsv7_S4L4Ytszja5NwPKUMnZHbYnM,1599 +pip/_internal/utils/virtualenv.py,sha256=S6f7csYorRpiD6cvn3jISZYc3I8PJC43H5iMFpRAEDU,3456 +pip/_internal/utils/wheel.py,sha256=b442jkydFHjXzDy6cMR7MpzWBJ1Q82hR5F33cmcHV3g,4494 +pip/_internal/vcs/__init__.py,sha256=UAqvzpbi0VbZo3Ub6skEeZAw-ooIZR-zX_WpCbxyCoU,596 +pip/_internal/vcs/__pycache__/__init__.cpython-310.pyc,, +pip/_internal/vcs/__pycache__/bazaar.cpython-310.pyc,, +pip/_internal/vcs/__pycache__/git.cpython-310.pyc,, +pip/_internal/vcs/__pycache__/mercurial.cpython-310.pyc,, +pip/_internal/vcs/__pycache__/subversion.cpython-310.pyc,, +pip/_internal/vcs/__pycache__/versioncontrol.cpython-310.pyc,, +pip/_internal/vcs/bazaar.py,sha256=EKStcQaKpNu0NK4p5Q10Oc4xb3DUxFw024XrJy40bFQ,3528 +pip/_internal/vcs/git.py,sha256=3tpc9LQA_J4IVW5r5NvWaaSeDzcmJOrSFZN0J8vIKfU,18177 +pip/_internal/vcs/mercurial.py,sha256=oULOhzJ2Uie-06d1omkL-_Gc6meGaUkyogvqG9ZCyPs,5249 +pip/_internal/vcs/subversion.py,sha256=ddTugHBqHzV3ebKlU5QXHPN4gUqlyXbOx8q8NgXKvs8,11735 +pip/_internal/vcs/versioncontrol.py,sha256=cvf_-hnTAjQLXJ3d17FMNhQfcO1AcKWUF10tfrYyP-c,22440 +pip/_internal/wheel_builder.py,sha256=DL3A8LKeRj_ACp11WS5wSgASgPFqeyAeXJKdXfmaWXU,11799 +pip/_vendor/__init__.py,sha256=JYuAXvClhInxIrA2FTp5p-uuWVL7WV6-vEpTs46-Qh4,4873 +pip/_vendor/__pycache__/__init__.cpython-310.pyc,, +pip/_vendor/__pycache__/typing_extensions.cpython-310.pyc,, +pip/_vendor/cachecontrol/__init__.py,sha256=LMC5CBe94ZRL5xhlzwyPDmHXvBD0p7lT4R3Z73D6a_I,677 +pip/_vendor/cachecontrol/__pycache__/__init__.cpython-310.pyc,, +pip/_vendor/cachecontrol/__pycache__/_cmd.cpython-310.pyc,, +pip/_vendor/cachecontrol/__pycache__/adapter.cpython-310.pyc,, +pip/_vendor/cachecontrol/__pycache__/cache.cpython-310.pyc,, +pip/_vendor/cachecontrol/__pycache__/controller.cpython-310.pyc,, +pip/_vendor/cachecontrol/__pycache__/filewrapper.cpython-310.pyc,, +pip/_vendor/cachecontrol/__pycache__/heuristics.cpython-310.pyc,, +pip/_vendor/cachecontrol/__pycache__/serialize.cpython-310.pyc,, +pip/_vendor/cachecontrol/__pycache__/wrapper.cpython-310.pyc,, +pip/_vendor/cachecontrol/_cmd.py,sha256=iist2EpzJvDVIhMAxXq8iFnTBsiZAd6iplxfmNboNyk,1737 +pip/_vendor/cachecontrol/adapter.py,sha256=febjY4LV87iiCIK3jcl8iH58iaSA7b9WkovsByIDK0Y,6348 +pip/_vendor/cachecontrol/cache.py,sha256=OXwv7Fn2AwnKNiahJHnjtvaKLndvVLv_-zO-ltlV9qI,1953 +pip/_vendor/cachecontrol/caches/__init__.py,sha256=dtrrroK5BnADR1GWjCZ19aZ0tFsMfvFBtLQQU1sp_ag,303 +pip/_vendor/cachecontrol/caches/__pycache__/__init__.cpython-310.pyc,, +pip/_vendor/cachecontrol/caches/__pycache__/file_cache.cpython-310.pyc,, +pip/_vendor/cachecontrol/caches/__pycache__/redis_cache.cpython-310.pyc,, +pip/_vendor/cachecontrol/caches/file_cache.py,sha256=b7oMgsRSqPmEsonVJw6uFEYUlFgD6GF8TyacOGG1x3M,5399 +pip/_vendor/cachecontrol/caches/redis_cache.py,sha256=9rmqwtYu_ljVkW6_oLqbC7EaX_a8YT_yLuna-eS0dgo,1386 +pip/_vendor/cachecontrol/controller.py,sha256=glbPj2iZlGqdBg8z09D2DtQOzoOGXnWvy7K2LEyBsEQ,18576 +pip/_vendor/cachecontrol/filewrapper.py,sha256=2ktXNPE0KqnyzF24aOsKCA58HQq1xeC6l2g6_zwjghc,4291 +pip/_vendor/cachecontrol/heuristics.py,sha256=gqMXU8w0gQuEQiSdu3Yg-0vd9kW7nrWKbLca75rheGE,4881 +pip/_vendor/cachecontrol/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +pip/_vendor/cachecontrol/serialize.py,sha256=HQd2IllQ05HzPkVLMXTF2uX5mjEQjDBkxCqUJUODpZk,5163 +pip/_vendor/cachecontrol/wrapper.py,sha256=hsGc7g8QGQTT-4f8tgz3AM5qwScg6FO0BSdLSRdEvpU,1417 +pip/_vendor/certifi/__init__.py,sha256=p_GYZrjUwPBUhpLlCZoGb0miKBKSqDAyZC5DvIuqbHQ,94 +pip/_vendor/certifi/__main__.py,sha256=1k3Cr95vCxxGRGDljrW3wMdpZdL3Nhf0u1n-k2qdsCY,255 +pip/_vendor/certifi/__pycache__/__init__.cpython-310.pyc,, +pip/_vendor/certifi/__pycache__/__main__.cpython-310.pyc,, +pip/_vendor/certifi/__pycache__/core.cpython-310.pyc,, +pip/_vendor/certifi/cacert.pem,sha256=lO3rZukXdPyuk6BWUJFOKQliWaXH6HGh9l1GGrUgG0c,299427 +pip/_vendor/certifi/core.py,sha256=2SRT5rIcQChFDbe37BQa-kULxAgJ8qN6l1jfqTp4HIs,4486 +pip/_vendor/certifi/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +pip/_vendor/distlib/__init__.py,sha256=dcwgYGYGQqAEawBXPDtIx80DO_3cOmFv8HTc8JMzknQ,625 +pip/_vendor/distlib/__pycache__/__init__.cpython-310.pyc,, +pip/_vendor/distlib/__pycache__/compat.cpython-310.pyc,, +pip/_vendor/distlib/__pycache__/database.cpython-310.pyc,, +pip/_vendor/distlib/__pycache__/index.cpython-310.pyc,, +pip/_vendor/distlib/__pycache__/locators.cpython-310.pyc,, +pip/_vendor/distlib/__pycache__/manifest.cpython-310.pyc,, +pip/_vendor/distlib/__pycache__/markers.cpython-310.pyc,, +pip/_vendor/distlib/__pycache__/metadata.cpython-310.pyc,, +pip/_vendor/distlib/__pycache__/resources.cpython-310.pyc,, +pip/_vendor/distlib/__pycache__/scripts.cpython-310.pyc,, +pip/_vendor/distlib/__pycache__/util.cpython-310.pyc,, +pip/_vendor/distlib/__pycache__/version.cpython-310.pyc,, +pip/_vendor/distlib/__pycache__/wheel.cpython-310.pyc,, +pip/_vendor/distlib/compat.py,sha256=2jRSjRI4o-vlXeTK2BCGIUhkc6e9ZGhSsacRM5oseTw,41467 +pip/_vendor/distlib/database.py,sha256=mHy_LxiXIsIVRb-T0-idBrVLw3Ffij5teHCpbjmJ9YU,51160 +pip/_vendor/distlib/index.py,sha256=lTbw268rRhj8dw1sib3VZ_0EhSGgoJO3FKJzSFMOaeA,20797 +pip/_vendor/distlib/locators.py,sha256=oBeAZpFuPQSY09MgNnLfQGGAXXvVO96BFpZyKMuK4tM,51026 +pip/_vendor/distlib/manifest.py,sha256=3qfmAmVwxRqU1o23AlfXrQGZzh6g_GGzTAP_Hb9C5zQ,14168 +pip/_vendor/distlib/markers.py,sha256=X6sDvkFGcYS8gUW8hfsWuKEKAqhQZAJ7iXOMLxRYjYk,5164 +pip/_vendor/distlib/metadata.py,sha256=zil3sg2EUfLXVigljY2d_03IJt-JSs7nX-73fECMX2s,38724 +pip/_vendor/distlib/resources.py,sha256=LwbPksc0A1JMbi6XnuPdMBUn83X7BPuFNWqPGEKI698,10820 +pip/_vendor/distlib/scripts.py,sha256=BJliaDAZaVB7WAkwokgC3HXwLD2iWiHaVI50H7C6eG8,18608 +pip/_vendor/distlib/t32.exe,sha256=a0GV5kCoWsMutvliiCKmIgV98eRZ33wXoS-XrqvJQVs,97792 +pip/_vendor/distlib/t64-arm.exe,sha256=68TAa32V504xVBnufojh0PcenpR3U4wAqTqf-MZqbPw,182784 +pip/_vendor/distlib/t64.exe,sha256=gaYY8hy4fbkHYTTnA4i26ct8IQZzkBG2pRdy0iyuBrc,108032 +pip/_vendor/distlib/util.py,sha256=vMPGvsS4j9hF6Y9k3Tyom1aaHLb0rFmZAEyzeAdel9w,66682 +pip/_vendor/distlib/version.py,sha256=s5VIs8wBn0fxzGxWM_aA2ZZyx525HcZbMvcTlTyZ3Rg,23727 +pip/_vendor/distlib/w32.exe,sha256=R4csx3-OGM9kL4aPIzQKRo5TfmRSHZo6QWyLhDhNBks,91648 +pip/_vendor/distlib/w64-arm.exe,sha256=xdyYhKj0WDcVUOCb05blQYvzdYIKMbmJn2SZvzkcey4,168448 +pip/_vendor/distlib/w64.exe,sha256=ejGf-rojoBfXseGLpya6bFTFPWRG21X5KvU8J5iU-K0,101888 +pip/_vendor/distlib/wheel.py,sha256=DFIVguEQHCdxnSdAO0dfFsgMcvVZitg7bCOuLwZ7A_s,43979 +pip/_vendor/distro/__init__.py,sha256=2fHjF-SfgPvjyNZ1iHh_wjqWdR_Yo5ODHwZC0jLBPhc,981 +pip/_vendor/distro/__main__.py,sha256=bu9d3TifoKciZFcqRBuygV3GSuThnVD_m2IK4cz96Vs,64 +pip/_vendor/distro/__pycache__/__init__.cpython-310.pyc,, +pip/_vendor/distro/__pycache__/__main__.cpython-310.pyc,, +pip/_vendor/distro/__pycache__/distro.cpython-310.pyc,, +pip/_vendor/distro/distro.py,sha256=XqbefacAhDT4zr_trnbA15eY8vdK4GTghgmvUGrEM_4,49430 +pip/_vendor/distro/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +pip/_vendor/idna/__init__.py,sha256=MPqNDLZbXqGaNdXxAFhiqFPKEQXju2jNQhCey6-5eJM,868 +pip/_vendor/idna/__pycache__/__init__.cpython-310.pyc,, +pip/_vendor/idna/__pycache__/codec.cpython-310.pyc,, +pip/_vendor/idna/__pycache__/compat.cpython-310.pyc,, +pip/_vendor/idna/__pycache__/core.cpython-310.pyc,, +pip/_vendor/idna/__pycache__/idnadata.cpython-310.pyc,, +pip/_vendor/idna/__pycache__/intranges.cpython-310.pyc,, +pip/_vendor/idna/__pycache__/package_data.cpython-310.pyc,, +pip/_vendor/idna/__pycache__/uts46data.cpython-310.pyc,, +pip/_vendor/idna/codec.py,sha256=PEew3ItwzjW4hymbasnty2N2OXvNcgHB-JjrBuxHPYY,3422 +pip/_vendor/idna/compat.py,sha256=RzLy6QQCdl9784aFhb2EX9EKGCJjg0P3PilGdeXXcx8,316 +pip/_vendor/idna/core.py,sha256=YJYyAMnwiQEPjVC4-Fqu_p4CJ6yKKuDGmppBNQNQpFs,13239 +pip/_vendor/idna/idnadata.py,sha256=W30GcIGvtOWYwAjZj4ZjuouUutC6ffgNuyjJy7fZ-lo,78306 +pip/_vendor/idna/intranges.py,sha256=amUtkdhYcQG8Zr-CoMM_kVRacxkivC1WgxN1b63KKdU,1898 +pip/_vendor/idna/package_data.py,sha256=q59S3OXsc5VI8j6vSD0sGBMyk6zZ4vWFREE88yCJYKs,21 +pip/_vendor/idna/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +pip/_vendor/idna/uts46data.py,sha256=rt90K9J40gUSwppDPCrhjgi5AA6pWM65dEGRSf6rIhM,239289 +pip/_vendor/msgpack/__init__.py,sha256=reRaiOtEzSjPnr7TpxjgIvbfln5pV66FhricAs2eC-g,1109 +pip/_vendor/msgpack/__pycache__/__init__.cpython-310.pyc,, +pip/_vendor/msgpack/__pycache__/exceptions.cpython-310.pyc,, +pip/_vendor/msgpack/__pycache__/ext.cpython-310.pyc,, +pip/_vendor/msgpack/__pycache__/fallback.cpython-310.pyc,, +pip/_vendor/msgpack/exceptions.py,sha256=dCTWei8dpkrMsQDcjQk74ATl9HsIBH0ybt8zOPNqMYc,1081 +pip/_vendor/msgpack/ext.py,sha256=kteJv03n9tYzd5oo3xYopVTo4vRaAxonBQQJhXohZZo,5726 +pip/_vendor/msgpack/fallback.py,sha256=0g1Pzp0vtmBEmJ5w9F3s_-JMVURP8RS4G1cc5TRaAsI,32390 +pip/_vendor/packaging/__init__.py,sha256=dk4Ta_vmdVJxYHDcfyhvQNw8V3PgSBomKNXqg-D2JDY,494 +pip/_vendor/packaging/__pycache__/__init__.cpython-310.pyc,, +pip/_vendor/packaging/__pycache__/_elffile.cpython-310.pyc,, +pip/_vendor/packaging/__pycache__/_manylinux.cpython-310.pyc,, +pip/_vendor/packaging/__pycache__/_musllinux.cpython-310.pyc,, +pip/_vendor/packaging/__pycache__/_parser.cpython-310.pyc,, +pip/_vendor/packaging/__pycache__/_structures.cpython-310.pyc,, +pip/_vendor/packaging/__pycache__/_tokenizer.cpython-310.pyc,, +pip/_vendor/packaging/__pycache__/markers.cpython-310.pyc,, +pip/_vendor/packaging/__pycache__/metadata.cpython-310.pyc,, +pip/_vendor/packaging/__pycache__/requirements.cpython-310.pyc,, +pip/_vendor/packaging/__pycache__/specifiers.cpython-310.pyc,, +pip/_vendor/packaging/__pycache__/tags.cpython-310.pyc,, +pip/_vendor/packaging/__pycache__/utils.cpython-310.pyc,, +pip/_vendor/packaging/__pycache__/version.cpython-310.pyc,, +pip/_vendor/packaging/_elffile.py,sha256=cflAQAkE25tzhYmq_aCi72QfbT_tn891tPzfpbeHOwE,3306 +pip/_vendor/packaging/_manylinux.py,sha256=vl5OCoz4kx80H5rwXKeXWjl9WNISGmr4ZgTpTP9lU9c,9612 +pip/_vendor/packaging/_musllinux.py,sha256=p9ZqNYiOItGee8KcZFeHF_YcdhVwGHdK6r-8lgixvGQ,2694 +pip/_vendor/packaging/_parser.py,sha256=s_TvTvDNK0NrM2QB3VKThdWFM4Nc0P6JnkObkl3MjpM,10236 +pip/_vendor/packaging/_structures.py,sha256=q3eVNmbWJGG_S0Dit_S3Ao8qQqz_5PYTXFAKBZe5yr4,1431 +pip/_vendor/packaging/_tokenizer.py,sha256=J6v5H7Jzvb-g81xp_2QACKwO7LxHQA6ikryMU7zXwN8,5273 +pip/_vendor/packaging/licenses/__init__.py,sha256=A116-FU49_Dz4162M4y1uAiZN4Rgdc83FxNd8EjlfqI,5727 +pip/_vendor/packaging/licenses/__pycache__/__init__.cpython-310.pyc,, +pip/_vendor/packaging/licenses/__pycache__/_spdx.cpython-310.pyc,, +pip/_vendor/packaging/licenses/_spdx.py,sha256=oAm1ztPFwlsmCKe7lAAsv_OIOfS1cWDu9bNBkeu-2ns,48398 +pip/_vendor/packaging/markers.py,sha256=c89TNzB7ZdGYhkovm6PYmqGyHxXlYVaLW591PHUNKD8,10561 +pip/_vendor/packaging/metadata.py,sha256=YJibM7GYe4re8-0a3OlXmGS-XDgTEoO4tlBt2q25Bng,34762 +pip/_vendor/packaging/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +pip/_vendor/packaging/requirements.py,sha256=gYyRSAdbrIyKDY66ugIDUQjRMvxkH2ALioTmX3tnL6o,2947 +pip/_vendor/packaging/specifiers.py,sha256=hGU6kuCd77bL-msIL6yLCp6MNT75RSMUKZDuju26c8U,40098 +pip/_vendor/packaging/tags.py,sha256=CFqrJzAzc2XNGexerH__T-Y5Iwq7WbsYXsiLERLWxY0,21014 +pip/_vendor/packaging/utils.py,sha256=0F3Hh9OFuRgrhTgGZUl5K22Fv1YP2tZl1z_2gO6kJiA,5050 +pip/_vendor/packaging/version.py,sha256=oiHqzTUv_p12hpjgsLDVcaF5hT7pDaSOViUNMD4GTW0,16688 +pip/_vendor/pkg_resources/__init__.py,sha256=jrhDRbOubP74QuPXxd7U7Po42PH2l-LZ2XfcO7llpZ4,124463 +pip/_vendor/pkg_resources/__pycache__/__init__.cpython-310.pyc,, +pip/_vendor/platformdirs/__init__.py,sha256=JueR2cRLkxY7iwik-qNWJCwKOrAlBgVgcZ_IHQzqGLE,22344 +pip/_vendor/platformdirs/__main__.py,sha256=jBJ8zb7Mpx5ebcqF83xrpO94MaeCpNGHVf9cvDN2JLg,1505 +pip/_vendor/platformdirs/__pycache__/__init__.cpython-310.pyc,, +pip/_vendor/platformdirs/__pycache__/__main__.cpython-310.pyc,, +pip/_vendor/platformdirs/__pycache__/android.cpython-310.pyc,, +pip/_vendor/platformdirs/__pycache__/api.cpython-310.pyc,, +pip/_vendor/platformdirs/__pycache__/macos.cpython-310.pyc,, +pip/_vendor/platformdirs/__pycache__/unix.cpython-310.pyc,, +pip/_vendor/platformdirs/__pycache__/version.cpython-310.pyc,, +pip/_vendor/platformdirs/__pycache__/windows.cpython-310.pyc,, +pip/_vendor/platformdirs/android.py,sha256=kV5oL3V3DZ6WZKu9yFiQupv18yp_jlSV2ChH1TmPcds,9007 +pip/_vendor/platformdirs/api.py,sha256=2dfUDNbEXeDhDKarqtR5NY7oUikUZ4RZhs3ozstmhBQ,9246 +pip/_vendor/platformdirs/macos.py,sha256=UlbyFZ8Rzu3xndCqQEHrfsYTeHwYdFap1Ioz-yxveT4,6154 +pip/_vendor/platformdirs/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +pip/_vendor/platformdirs/unix.py,sha256=uRPJWRyQEtv7yOSvU94rUmsblo5XKDLA1SzFg55kbK0,10393 +pip/_vendor/platformdirs/version.py,sha256=oH4KgTfK4AklbTYVcV_yynvJ9JLI3pyvDVay0hRsLCs,411 +pip/_vendor/platformdirs/windows.py,sha256=IFpiohUBwxPtCzlyKwNtxyW4Jk8haa6W8o59mfrDXVo,10125 +pip/_vendor/pygments/__init__.py,sha256=7N1oiaWulw_nCsTY4EEixYLz15pWY5u4uPAFFi-ielU,2983 +pip/_vendor/pygments/__main__.py,sha256=isIhBxLg65nLlXukG4VkMuPfNdd7gFzTZ_R_z3Q8diY,353 +pip/_vendor/pygments/__pycache__/__init__.cpython-310.pyc,, +pip/_vendor/pygments/__pycache__/__main__.cpython-310.pyc,, +pip/_vendor/pygments/__pycache__/cmdline.cpython-310.pyc,, +pip/_vendor/pygments/__pycache__/console.cpython-310.pyc,, +pip/_vendor/pygments/__pycache__/filter.cpython-310.pyc,, +pip/_vendor/pygments/__pycache__/formatter.cpython-310.pyc,, +pip/_vendor/pygments/__pycache__/lexer.cpython-310.pyc,, +pip/_vendor/pygments/__pycache__/modeline.cpython-310.pyc,, +pip/_vendor/pygments/__pycache__/plugin.cpython-310.pyc,, +pip/_vendor/pygments/__pycache__/regexopt.cpython-310.pyc,, +pip/_vendor/pygments/__pycache__/scanner.cpython-310.pyc,, +pip/_vendor/pygments/__pycache__/sphinxext.cpython-310.pyc,, +pip/_vendor/pygments/__pycache__/style.cpython-310.pyc,, +pip/_vendor/pygments/__pycache__/token.cpython-310.pyc,, +pip/_vendor/pygments/__pycache__/unistring.cpython-310.pyc,, +pip/_vendor/pygments/__pycache__/util.cpython-310.pyc,, +pip/_vendor/pygments/cmdline.py,sha256=LIVzmAunlk9sRJJp54O4KRy9GDIN4Wu13v9p9QzfGPM,23656 +pip/_vendor/pygments/console.py,sha256=yhP9UsLAVmWKVQf2446JJewkA7AiXeeTf4Ieg3Oi2fU,1718 +pip/_vendor/pygments/filter.py,sha256=_ADNPCskD8_GmodHi6_LoVgPU3Zh336aBCT5cOeTMs0,1910 +pip/_vendor/pygments/filters/__init__.py,sha256=RdedK2KWKXlKwR7cvkfr3NUj9YiZQgMgilRMFUg2jPA,40392 +pip/_vendor/pygments/filters/__pycache__/__init__.cpython-310.pyc,, +pip/_vendor/pygments/formatter.py,sha256=jDWBTndlBH2Z5IYZFVDnP0qn1CaTQjTWt7iAGtCnJEg,4390 +pip/_vendor/pygments/formatters/__init__.py,sha256=8No-NUs8rBTSSBJIv4hSEQt2M0cFB4hwAT0snVc2QGE,5385 +pip/_vendor/pygments/formatters/__pycache__/__init__.cpython-310.pyc,, +pip/_vendor/pygments/formatters/__pycache__/_mapping.cpython-310.pyc,, +pip/_vendor/pygments/formatters/__pycache__/bbcode.cpython-310.pyc,, +pip/_vendor/pygments/formatters/__pycache__/groff.cpython-310.pyc,, +pip/_vendor/pygments/formatters/__pycache__/html.cpython-310.pyc,, +pip/_vendor/pygments/formatters/__pycache__/img.cpython-310.pyc,, +pip/_vendor/pygments/formatters/__pycache__/irc.cpython-310.pyc,, +pip/_vendor/pygments/formatters/__pycache__/latex.cpython-310.pyc,, +pip/_vendor/pygments/formatters/__pycache__/other.cpython-310.pyc,, +pip/_vendor/pygments/formatters/__pycache__/pangomarkup.cpython-310.pyc,, +pip/_vendor/pygments/formatters/__pycache__/rtf.cpython-310.pyc,, +pip/_vendor/pygments/formatters/__pycache__/svg.cpython-310.pyc,, +pip/_vendor/pygments/formatters/__pycache__/terminal.cpython-310.pyc,, +pip/_vendor/pygments/formatters/__pycache__/terminal256.cpython-310.pyc,, +pip/_vendor/pygments/formatters/_mapping.py,sha256=1Cw37FuQlNacnxRKmtlPX4nyLoX9_ttko5ZwscNUZZ4,4176 +pip/_vendor/pygments/formatters/bbcode.py,sha256=3JQLI45tcrQ_kRUMjuab6C7Hb0XUsbVWqqbSn9cMjkI,3320 +pip/_vendor/pygments/formatters/groff.py,sha256=M39k0PaSSZRnxWjqBSVPkF0mu1-Vr7bm6RsFvs-CNN4,5106 +pip/_vendor/pygments/formatters/html.py,sha256=SE2jc3YCqbMS3rZW9EAmDlAUhdVxJ52gA4dileEvCGU,35669 +pip/_vendor/pygments/formatters/img.py,sha256=MwA4xWPLOwh6j7Yc6oHzjuqSPt0M1fh5r-5BTIIUfsU,23287 +pip/_vendor/pygments/formatters/irc.py,sha256=dp1Z0l_ObJ5NFh9MhqLGg5ptG5hgJqedT2Vkutt9v0M,4981 +pip/_vendor/pygments/formatters/latex.py,sha256=XMmhOCqUKDBQtG5mGJNAFYxApqaC5puo5cMmPfK3944,19306 +pip/_vendor/pygments/formatters/other.py,sha256=56PMJOliin-rAUdnRM0i1wsV1GdUPd_dvQq0_UPfF9c,5034 +pip/_vendor/pygments/formatters/pangomarkup.py,sha256=y16U00aVYYEFpeCfGXlYBSMacG425CbfoG8oKbKegIg,2218 +pip/_vendor/pygments/formatters/rtf.py,sha256=ZT90dmcKyJboIB0mArhL7IhE467GXRN0G7QAUgG03To,11957 +pip/_vendor/pygments/formatters/svg.py,sha256=KKsiophPupHuxm0So-MsbQEWOT54IAiSF7hZPmxtKXE,7174 +pip/_vendor/pygments/formatters/terminal.py,sha256=AojNG4MlKq2L6IsC_VnXHu4AbHCBn9Otog6u45XvxeI,4674 +pip/_vendor/pygments/formatters/terminal256.py,sha256=kGkNUVo3FpwjytIDS0if79EuUoroAprcWt3igrcIqT0,11753 +pip/_vendor/pygments/lexer.py,sha256=TYHDt___gNW4axTl2zvPZff-VQi8fPaIh5OKRcVSjUM,35349 +pip/_vendor/pygments/lexers/__init__.py,sha256=pIlxyQJuu_syh9lE080cq8ceVbEVcKp0osAFU5fawJU,12115 +pip/_vendor/pygments/lexers/__pycache__/__init__.cpython-310.pyc,, +pip/_vendor/pygments/lexers/__pycache__/_mapping.cpython-310.pyc,, +pip/_vendor/pygments/lexers/__pycache__/python.cpython-310.pyc,, +pip/_vendor/pygments/lexers/_mapping.py,sha256=61-h3zr103m01OS5BUq_AfUiL9YI06Ves9ipQ7k4vr4,76097 +pip/_vendor/pygments/lexers/python.py,sha256=2J_YJrPTr_A6fJY_qKiKv0GpgPwHMrlMSeo59qN3fe4,53687 +pip/_vendor/pygments/modeline.py,sha256=gtRYZBS-CKOCDXHhGZqApboHBaZwGH8gznN3O6nuxj4,1005 +pip/_vendor/pygments/plugin.py,sha256=ioeJ3QeoJ-UQhZpY9JL7vbxsTVuwwM7BCu-Jb8nN0AU,1891 +pip/_vendor/pygments/regexopt.py,sha256=Hky4EB13rIXEHQUNkwmCrYqtIlnXDehNR3MztafZ43w,3072 +pip/_vendor/pygments/scanner.py,sha256=NDy3ofK_fHRFK4hIDvxpamG871aewqcsIb6sgTi7Fhk,3092 +pip/_vendor/pygments/sphinxext.py,sha256=iOptJBcqOGPwMEJ2p70PvwpZPIGdvdZ8dxvq6kzxDgA,7981 +pip/_vendor/pygments/style.py,sha256=rSCZWFpg1_DwFMXDU0nEVmAcBHpuQGf9RxvOPPQvKLQ,6420 +pip/_vendor/pygments/styles/__init__.py,sha256=qUk6_1z5KmT8EdJFZYgESmG6P_HJF_2vVrDD7HSCGYY,2042 +pip/_vendor/pygments/styles/__pycache__/__init__.cpython-310.pyc,, +pip/_vendor/pygments/styles/__pycache__/_mapping.cpython-310.pyc,, +pip/_vendor/pygments/styles/_mapping.py,sha256=6lovFUE29tz6EsV3XYY4hgozJ7q1JL7cfO3UOlgnS8w,3312 +pip/_vendor/pygments/token.py,sha256=qZwT7LSPy5YBY3JgDjut642CCy7JdQzAfmqD9NmT5j0,6226 +pip/_vendor/pygments/unistring.py,sha256=p5c1i-HhoIhWemy9CUsaN9o39oomYHNxXll0Xfw6tEA,63208 +pip/_vendor/pygments/util.py,sha256=2tj2nS1X9_OpcuSjf8dOET2bDVZhs8cEKd_uT6-Fgg8,10031 +pip/_vendor/pyproject_hooks/__init__.py,sha256=cPB_a9LXz5xvsRbX1o2qyAdjLatZJdQ_Lc5McNX-X7Y,691 +pip/_vendor/pyproject_hooks/__pycache__/__init__.cpython-310.pyc,, +pip/_vendor/pyproject_hooks/__pycache__/_impl.cpython-310.pyc,, +pip/_vendor/pyproject_hooks/_impl.py,sha256=jY-raxnmyRyB57ruAitrJRUzEexuAhGTpgMygqx67Z4,14936 +pip/_vendor/pyproject_hooks/_in_process/__init__.py,sha256=MJNPpfIxcO-FghxpBbxkG1rFiQf6HOUbV4U5mq0HFns,557 +pip/_vendor/pyproject_hooks/_in_process/__pycache__/__init__.cpython-310.pyc,, +pip/_vendor/pyproject_hooks/_in_process/__pycache__/_in_process.cpython-310.pyc,, +pip/_vendor/pyproject_hooks/_in_process/_in_process.py,sha256=qcXMhmx__MIJq10gGHW3mA4Tl8dy8YzHMccwnNoKlw0,12216 +pip/_vendor/pyproject_hooks/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +pip/_vendor/requests/__init__.py,sha256=HlB_HzhrzGtfD_aaYUwUh1zWXLZ75_YCLyit75d0Vz8,5057 +pip/_vendor/requests/__pycache__/__init__.cpython-310.pyc,, +pip/_vendor/requests/__pycache__/__version__.cpython-310.pyc,, +pip/_vendor/requests/__pycache__/_internal_utils.cpython-310.pyc,, +pip/_vendor/requests/__pycache__/adapters.cpython-310.pyc,, +pip/_vendor/requests/__pycache__/api.cpython-310.pyc,, +pip/_vendor/requests/__pycache__/auth.cpython-310.pyc,, +pip/_vendor/requests/__pycache__/certs.cpython-310.pyc,, +pip/_vendor/requests/__pycache__/compat.cpython-310.pyc,, +pip/_vendor/requests/__pycache__/cookies.cpython-310.pyc,, +pip/_vendor/requests/__pycache__/exceptions.cpython-310.pyc,, +pip/_vendor/requests/__pycache__/help.cpython-310.pyc,, +pip/_vendor/requests/__pycache__/hooks.cpython-310.pyc,, +pip/_vendor/requests/__pycache__/models.cpython-310.pyc,, +pip/_vendor/requests/__pycache__/packages.cpython-310.pyc,, +pip/_vendor/requests/__pycache__/sessions.cpython-310.pyc,, +pip/_vendor/requests/__pycache__/status_codes.cpython-310.pyc,, +pip/_vendor/requests/__pycache__/structures.cpython-310.pyc,, +pip/_vendor/requests/__pycache__/utils.cpython-310.pyc,, +pip/_vendor/requests/__version__.py,sha256=FVfglgZmNQnmYPXpOohDU58F5EUb_-VnSTaAesS187g,435 +pip/_vendor/requests/_internal_utils.py,sha256=nMQymr4hs32TqVo5AbCrmcJEhvPUh7xXlluyqwslLiQ,1495 +pip/_vendor/requests/adapters.py,sha256=J7VeVxKBvawbtlX2DERVo05J9BXTcWYLMHNd1Baa-bk,27607 +pip/_vendor/requests/api.py,sha256=_Zb9Oa7tzVIizTKwFrPjDEY9ejtm_OnSRERnADxGsQs,6449 +pip/_vendor/requests/auth.py,sha256=kF75tqnLctZ9Mf_hm9TZIj4cQWnN5uxRz8oWsx5wmR0,10186 +pip/_vendor/requests/certs.py,sha256=kHDlkK_beuHXeMPc5jta2wgl8gdKeUWt5f2nTDVrvt8,441 +pip/_vendor/requests/compat.py,sha256=Mo9f9xZpefod8Zm-n9_StJcVTmwSukXR2p3IQyyVXvU,1485 +pip/_vendor/requests/cookies.py,sha256=bNi-iqEj4NPZ00-ob-rHvzkvObzN3lEpgw3g6paS3Xw,18590 +pip/_vendor/requests/exceptions.py,sha256=D1wqzYWne1mS2rU43tP9CeN1G7QAy7eqL9o1god6Ejw,4272 +pip/_vendor/requests/help.py,sha256=hRKaf9u0G7fdwrqMHtF3oG16RKktRf6KiwtSq2Fo1_0,3813 +pip/_vendor/requests/hooks.py,sha256=CiuysiHA39V5UfcCBXFIx83IrDpuwfN9RcTUgv28ftQ,733 +pip/_vendor/requests/models.py,sha256=x4K4CmH-lC0l2Kb-iPfMN4dRXxHEcbOaEWBL_i09AwI,35483 +pip/_vendor/requests/packages.py,sha256=_ZQDCJTJ8SP3kVWunSqBsRZNPzj2c1WFVqbdr08pz3U,1057 +pip/_vendor/requests/sessions.py,sha256=ykTI8UWGSltOfH07HKollH7kTBGw4WhiBVaQGmckTw4,30495 +pip/_vendor/requests/status_codes.py,sha256=iJUAeA25baTdw-6PfD0eF4qhpINDJRJI-yaMqxs4LEI,4322 +pip/_vendor/requests/structures.py,sha256=-IbmhVz06S-5aPSZuUthZ6-6D9XOjRuTXHOabY041XM,2912 +pip/_vendor/requests/utils.py,sha256=L79vnFbzJ3SFLKtJwpoWe41Tozi3RlZv94pY1TFIyow,33631 +pip/_vendor/resolvelib/__init__.py,sha256=h509TdEcpb5-44JonaU3ex2TM15GVBLjM9CNCPwnTTs,537 +pip/_vendor/resolvelib/__pycache__/__init__.cpython-310.pyc,, +pip/_vendor/resolvelib/__pycache__/providers.cpython-310.pyc,, +pip/_vendor/resolvelib/__pycache__/reporters.cpython-310.pyc,, +pip/_vendor/resolvelib/__pycache__/resolvers.cpython-310.pyc,, +pip/_vendor/resolvelib/__pycache__/structs.cpython-310.pyc,, +pip/_vendor/resolvelib/compat/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +pip/_vendor/resolvelib/compat/__pycache__/__init__.cpython-310.pyc,, +pip/_vendor/resolvelib/compat/__pycache__/collections_abc.cpython-310.pyc,, +pip/_vendor/resolvelib/compat/collections_abc.py,sha256=uy8xUZ-NDEw916tugUXm8HgwCGiMO0f-RcdnpkfXfOs,156 +pip/_vendor/resolvelib/providers.py,sha256=fuuvVrCetu5gsxPB43ERyjfO8aReS3rFQHpDgiItbs4,5871 +pip/_vendor/resolvelib/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +pip/_vendor/resolvelib/reporters.py,sha256=TSbRmWzTc26w0ggsV1bxVpeWDB8QNIre6twYl7GIZBE,1601 +pip/_vendor/resolvelib/resolvers.py,sha256=G8rsLZSq64g5VmIq-lB7UcIJ1gjAxIQJmTF4REZleQ0,20511 +pip/_vendor/resolvelib/structs.py,sha256=0_1_XO8z_CLhegP3Vpf9VJ3zJcfLm0NOHRM-i0Ykz3o,4963 +pip/_vendor/rich/__init__.py,sha256=dRxjIL-SbFVY0q3IjSMrfgBTHrm1LZDgLOygVBwiYZc,6090 +pip/_vendor/rich/__main__.py,sha256=eO7Cq8JnrgG8zVoeImiAs92q3hXNMIfp0w5lMsO7Q2Y,8477 +pip/_vendor/rich/__pycache__/__init__.cpython-310.pyc,, +pip/_vendor/rich/__pycache__/__main__.cpython-310.pyc,, +pip/_vendor/rich/__pycache__/_cell_widths.cpython-310.pyc,, +pip/_vendor/rich/__pycache__/_emoji_codes.cpython-310.pyc,, +pip/_vendor/rich/__pycache__/_emoji_replace.cpython-310.pyc,, +pip/_vendor/rich/__pycache__/_export_format.cpython-310.pyc,, +pip/_vendor/rich/__pycache__/_extension.cpython-310.pyc,, +pip/_vendor/rich/__pycache__/_fileno.cpython-310.pyc,, +pip/_vendor/rich/__pycache__/_inspect.cpython-310.pyc,, +pip/_vendor/rich/__pycache__/_log_render.cpython-310.pyc,, +pip/_vendor/rich/__pycache__/_loop.cpython-310.pyc,, +pip/_vendor/rich/__pycache__/_null_file.cpython-310.pyc,, +pip/_vendor/rich/__pycache__/_palettes.cpython-310.pyc,, +pip/_vendor/rich/__pycache__/_pick.cpython-310.pyc,, +pip/_vendor/rich/__pycache__/_ratio.cpython-310.pyc,, +pip/_vendor/rich/__pycache__/_spinners.cpython-310.pyc,, +pip/_vendor/rich/__pycache__/_stack.cpython-310.pyc,, +pip/_vendor/rich/__pycache__/_timer.cpython-310.pyc,, +pip/_vendor/rich/__pycache__/_win32_console.cpython-310.pyc,, +pip/_vendor/rich/__pycache__/_windows.cpython-310.pyc,, +pip/_vendor/rich/__pycache__/_windows_renderer.cpython-310.pyc,, +pip/_vendor/rich/__pycache__/_wrap.cpython-310.pyc,, +pip/_vendor/rich/__pycache__/abc.cpython-310.pyc,, +pip/_vendor/rich/__pycache__/align.cpython-310.pyc,, +pip/_vendor/rich/__pycache__/ansi.cpython-310.pyc,, +pip/_vendor/rich/__pycache__/bar.cpython-310.pyc,, +pip/_vendor/rich/__pycache__/box.cpython-310.pyc,, +pip/_vendor/rich/__pycache__/cells.cpython-310.pyc,, +pip/_vendor/rich/__pycache__/color.cpython-310.pyc,, +pip/_vendor/rich/__pycache__/color_triplet.cpython-310.pyc,, +pip/_vendor/rich/__pycache__/columns.cpython-310.pyc,, +pip/_vendor/rich/__pycache__/console.cpython-310.pyc,, +pip/_vendor/rich/__pycache__/constrain.cpython-310.pyc,, +pip/_vendor/rich/__pycache__/containers.cpython-310.pyc,, +pip/_vendor/rich/__pycache__/control.cpython-310.pyc,, +pip/_vendor/rich/__pycache__/default_styles.cpython-310.pyc,, +pip/_vendor/rich/__pycache__/diagnose.cpython-310.pyc,, +pip/_vendor/rich/__pycache__/emoji.cpython-310.pyc,, +pip/_vendor/rich/__pycache__/errors.cpython-310.pyc,, +pip/_vendor/rich/__pycache__/file_proxy.cpython-310.pyc,, +pip/_vendor/rich/__pycache__/filesize.cpython-310.pyc,, +pip/_vendor/rich/__pycache__/highlighter.cpython-310.pyc,, +pip/_vendor/rich/__pycache__/json.cpython-310.pyc,, +pip/_vendor/rich/__pycache__/jupyter.cpython-310.pyc,, +pip/_vendor/rich/__pycache__/layout.cpython-310.pyc,, +pip/_vendor/rich/__pycache__/live.cpython-310.pyc,, +pip/_vendor/rich/__pycache__/live_render.cpython-310.pyc,, +pip/_vendor/rich/__pycache__/logging.cpython-310.pyc,, +pip/_vendor/rich/__pycache__/markup.cpython-310.pyc,, +pip/_vendor/rich/__pycache__/measure.cpython-310.pyc,, +pip/_vendor/rich/__pycache__/padding.cpython-310.pyc,, +pip/_vendor/rich/__pycache__/pager.cpython-310.pyc,, +pip/_vendor/rich/__pycache__/palette.cpython-310.pyc,, +pip/_vendor/rich/__pycache__/panel.cpython-310.pyc,, +pip/_vendor/rich/__pycache__/pretty.cpython-310.pyc,, +pip/_vendor/rich/__pycache__/progress.cpython-310.pyc,, +pip/_vendor/rich/__pycache__/progress_bar.cpython-310.pyc,, +pip/_vendor/rich/__pycache__/prompt.cpython-310.pyc,, +pip/_vendor/rich/__pycache__/protocol.cpython-310.pyc,, +pip/_vendor/rich/__pycache__/region.cpython-310.pyc,, +pip/_vendor/rich/__pycache__/repr.cpython-310.pyc,, +pip/_vendor/rich/__pycache__/rule.cpython-310.pyc,, +pip/_vendor/rich/__pycache__/scope.cpython-310.pyc,, +pip/_vendor/rich/__pycache__/screen.cpython-310.pyc,, +pip/_vendor/rich/__pycache__/segment.cpython-310.pyc,, +pip/_vendor/rich/__pycache__/spinner.cpython-310.pyc,, +pip/_vendor/rich/__pycache__/status.cpython-310.pyc,, +pip/_vendor/rich/__pycache__/style.cpython-310.pyc,, +pip/_vendor/rich/__pycache__/styled.cpython-310.pyc,, +pip/_vendor/rich/__pycache__/syntax.cpython-310.pyc,, +pip/_vendor/rich/__pycache__/table.cpython-310.pyc,, +pip/_vendor/rich/__pycache__/terminal_theme.cpython-310.pyc,, +pip/_vendor/rich/__pycache__/text.cpython-310.pyc,, +pip/_vendor/rich/__pycache__/theme.cpython-310.pyc,, +pip/_vendor/rich/__pycache__/themes.cpython-310.pyc,, +pip/_vendor/rich/__pycache__/traceback.cpython-310.pyc,, +pip/_vendor/rich/__pycache__/tree.cpython-310.pyc,, +pip/_vendor/rich/_cell_widths.py,sha256=fbmeyetEdHjzE_Vx2l1uK7tnPOhMs2X1lJfO3vsKDpA,10209 +pip/_vendor/rich/_emoji_codes.py,sha256=hu1VL9nbVdppJrVoijVshRlcRRe_v3dju3Mmd2sKZdY,140235 +pip/_vendor/rich/_emoji_replace.py,sha256=n-kcetsEUx2ZUmhQrfeMNc-teeGhpuSQ5F8VPBsyvDo,1064 +pip/_vendor/rich/_export_format.py,sha256=RI08pSrm5tBSzPMvnbTqbD9WIalaOoN5d4M1RTmLq1Y,2128 +pip/_vendor/rich/_extension.py,sha256=Xt47QacCKwYruzjDi-gOBq724JReDj9Cm9xUi5fr-34,265 +pip/_vendor/rich/_fileno.py,sha256=HWZxP5C2ajMbHryvAQZseflVfQoGzsKOHzKGsLD8ynQ,799 +pip/_vendor/rich/_inspect.py,sha256=QM05lEFnFoTaFqpnbx-zBEI6k8oIKrD3cvjEOQNhKig,9655 +pip/_vendor/rich/_log_render.py,sha256=1ByI0PA1ZpxZY3CGJOK54hjlq4X-Bz_boIjIqCd8Kns,3225 +pip/_vendor/rich/_loop.py,sha256=hV_6CLdoPm0va22Wpw4zKqM0RYsz3TZxXj0PoS-9eDQ,1236 +pip/_vendor/rich/_null_file.py,sha256=ADGKp1yt-k70FMKV6tnqCqecB-rSJzp-WQsD7LPL-kg,1394 +pip/_vendor/rich/_palettes.py,sha256=cdev1JQKZ0JvlguV9ipHgznTdnvlIzUFDBb0It2PzjI,7063 +pip/_vendor/rich/_pick.py,sha256=evDt8QN4lF5CiwrUIXlOJCntitBCOsI3ZLPEIAVRLJU,423 +pip/_vendor/rich/_ratio.py,sha256=Zt58apszI6hAAcXPpgdWKpu3c31UBWebOeR4mbyptvU,5471 +pip/_vendor/rich/_spinners.py,sha256=U2r1_g_1zSjsjiUdAESc2iAMc3i4ri_S8PYP6kQ5z1I,19919 +pip/_vendor/rich/_stack.py,sha256=-C8OK7rxn3sIUdVwxZBBpeHhIzX0eI-VM3MemYfaXm0,351 +pip/_vendor/rich/_timer.py,sha256=zelxbT6oPFZnNrwWPpc1ktUeAT-Vc4fuFcRZLQGLtMI,417 +pip/_vendor/rich/_win32_console.py,sha256=BSaDRIMwBLITn_m0mTRLPqME5q-quGdSMuYMpYeYJwc,22755 +pip/_vendor/rich/_windows.py,sha256=aBwaD_S56SbgopIvayVmpk0Y28uwY2C5Bab1wl3Bp-I,1925 +pip/_vendor/rich/_windows_renderer.py,sha256=t74ZL3xuDCP3nmTp9pH1L5LiI2cakJuQRQleHCJerlk,2783 +pip/_vendor/rich/_wrap.py,sha256=FlSsom5EX0LVkA3KWy34yHnCfLtqX-ZIepXKh-70rpc,3404 +pip/_vendor/rich/abc.py,sha256=ON-E-ZqSSheZ88VrKX2M3PXpFbGEUUZPMa_Af0l-4f0,890 +pip/_vendor/rich/align.py,sha256=Rh-3adnDaN1Ao07EjR2PhgE62PGLPgO8SMwJBku1urQ,10469 +pip/_vendor/rich/ansi.py,sha256=Avs1LHbSdcyOvDOdpELZUoULcBiYewY76eNBp6uFBhs,6921 +pip/_vendor/rich/bar.py,sha256=ldbVHOzKJOnflVNuv1xS7g6dLX2E3wMnXkdPbpzJTcs,3263 +pip/_vendor/rich/box.py,sha256=nr5fYIUghB_iUCEq6y0Z3LlCT8gFPDrzN9u2kn7tJl4,10831 +pip/_vendor/rich/cells.py,sha256=KrQkj5-LghCCpJLSNQIyAZjndc4bnEqOEmi5YuZ9UCY,5130 +pip/_vendor/rich/color.py,sha256=3HSULVDj7qQkXUdFWv78JOiSZzfy5y1nkcYhna296V0,18211 +pip/_vendor/rich/color_triplet.py,sha256=3lhQkdJbvWPoLDO-AnYImAWmJvV5dlgYNCVZ97ORaN4,1054 +pip/_vendor/rich/columns.py,sha256=HUX0KcMm9dsKNi11fTbiM_h2iDtl8ySCaVcxlalEzq8,7131 +pip/_vendor/rich/console.py,sha256=nKjrEx_7xy8KGmDVT-BgNII0R5hm1cexhAHDwdwNVqg,100156 +pip/_vendor/rich/constrain.py,sha256=1VIPuC8AgtKWrcncQrjBdYqA3JVWysu6jZo1rrh7c7Q,1288 +pip/_vendor/rich/containers.py,sha256=c_56TxcedGYqDepHBMTuZdUIijitAQgnox-Qde0Z1qo,5502 +pip/_vendor/rich/control.py,sha256=DSkHTUQLorfSERAKE_oTAEUFefZnZp4bQb4q8rHbKws,6630 +pip/_vendor/rich/default_styles.py,sha256=dZxgaSD9VUy7SXQShO33aLYiAWspCr2sCQZFX_JK1j4,8159 +pip/_vendor/rich/diagnose.py,sha256=an6uouwhKPAlvQhYpNNpGq9EJysfMIOvvCbO3oSoR24,972 +pip/_vendor/rich/emoji.py,sha256=omTF9asaAnsM4yLY94eR_9dgRRSm1lHUszX20D1yYCQ,2501 +pip/_vendor/rich/errors.py,sha256=5pP3Kc5d4QJ_c0KFsxrfyhjiPVe7J1zOqSFbFAzcV-Y,642 +pip/_vendor/rich/file_proxy.py,sha256=Tl9THMDZ-Pk5Wm8sI1gGg_U5DhusmxD-FZ0fUbcU0W0,1683 +pip/_vendor/rich/filesize.py,sha256=_iz9lIpRgvW7MNSeCZnLg-HwzbP4GETg543WqD8SFs0,2484 +pip/_vendor/rich/highlighter.py,sha256=G_sn-8DKjM1sEjLG_oc4ovkWmiUpWvj8bXi0yed2LnY,9586 +pip/_vendor/rich/json.py,sha256=vVEoKdawoJRjAFayPwXkMBPLy7RSTs-f44wSQDR2nJ0,5031 +pip/_vendor/rich/jupyter.py,sha256=QyoKoE_8IdCbrtiSHp9TsTSNyTHY0FO5whE7jOTd9UE,3252 +pip/_vendor/rich/layout.py,sha256=ajkSFAtEVv9EFTcFs-w4uZfft7nEXhNzL7ZVdgrT5rI,14004 +pip/_vendor/rich/live.py,sha256=DhzAPEnjTxQuq9_0Y2xh2MUwQcP_aGPkenLfKETslwM,14270 +pip/_vendor/rich/live_render.py,sha256=zJtB471jGziBtEwxc54x12wEQtH4BuQr1SA8v9kU82w,3666 +pip/_vendor/rich/logging.py,sha256=ZgpKMMBY_BuMAI_BYzo-UtXak6t5oH9VK8m9Q2Lm0f4,12458 +pip/_vendor/rich/markup.py,sha256=3euGKP5s41NCQwaSjTnJxus5iZMHjxpIM0W6fCxra38,8451 +pip/_vendor/rich/measure.py,sha256=HmrIJX8sWRTHbgh8MxEay_83VkqNW_70s8aKP5ZcYI8,5305 +pip/_vendor/rich/padding.py,sha256=KVEI3tOwo9sgK1YNSuH__M1_jUWmLZwRVV_KmOtVzyM,4908 +pip/_vendor/rich/pager.py,sha256=SO_ETBFKbg3n_AgOzXm41Sv36YxXAyI3_R-KOY2_uSc,828 +pip/_vendor/rich/palette.py,sha256=lInvR1ODDT2f3UZMfL1grq7dY_pDdKHw4bdUgOGaM4Y,3396 +pip/_vendor/rich/panel.py,sha256=fFRHcviXvWhk3V3zx5Zwmsb_RL9KJ3esD-sU0NYEVyw,11235 +pip/_vendor/rich/pretty.py,sha256=gy3S72u4FRg2ytoo7N1ZDWDIvB4unbzd5iUGdgm-8fc,36391 +pip/_vendor/rich/progress.py,sha256=MtmCjTk5zYU_XtRHxRHTAEHG6hF9PeF7EMWbEPleIC0,60357 +pip/_vendor/rich/progress_bar.py,sha256=mZTPpJUwcfcdgQCTTz3kyY-fc79ddLwtx6Ghhxfo064,8162 +pip/_vendor/rich/prompt.py,sha256=l0RhQU-0UVTV9e08xW1BbIj0Jq2IXyChX4lC0lFNzt4,12447 +pip/_vendor/rich/protocol.py,sha256=5hHHDDNHckdk8iWH5zEbi-zuIVSF5hbU2jIo47R7lTE,1391 +pip/_vendor/rich/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +pip/_vendor/rich/region.py,sha256=rNT9xZrVZTYIXZC0NYn41CJQwYNbR-KecPOxTgQvB8Y,166 +pip/_vendor/rich/repr.py,sha256=5MZJZmONgC6kud-QW-_m1okXwL2aR6u6y-pUcUCJz28,4431 +pip/_vendor/rich/rule.py,sha256=0fNaS_aERa3UMRc3T5WMpN_sumtDxfaor2y3of1ftBk,4602 +pip/_vendor/rich/scope.py,sha256=TMUU8qo17thyqQCPqjDLYpg_UU1k5qVd-WwiJvnJVas,2843 +pip/_vendor/rich/screen.py,sha256=YoeReESUhx74grqb0mSSb9lghhysWmFHYhsbMVQjXO8,1591 +pip/_vendor/rich/segment.py,sha256=otnKeKGEV-WRlQVosfJVeFDcDxAKHpvJ_hLzSu5lumM,24743 +pip/_vendor/rich/spinner.py,sha256=PT5qgXPG3ZpqRj7n3EZQ6NW56mx3ldZqZCU7gEMyZk4,4364 +pip/_vendor/rich/status.py,sha256=kkPph3YeAZBo-X-4wPp8gTqZyU466NLwZBA4PZTTewo,4424 +pip/_vendor/rich/style.py,sha256=aSoUNbVgfP1PAnduAqgbbl4AMQy668qs2S1FEwr3Oqs,27067 +pip/_vendor/rich/styled.py,sha256=eZNnzGrI4ki_54pgY3Oj0T-x3lxdXTYh4_ryDB24wBU,1258 +pip/_vendor/rich/syntax.py,sha256=qqAnEUZ4K57Po81_5RBxnsuU4KRzSdvDPAhKw8ma_3E,35763 +pip/_vendor/rich/table.py,sha256=yXYUr0YsPpG466N50HCAw2bpb5ZUuuzdc-G66Zk-oTc,40103 +pip/_vendor/rich/terminal_theme.py,sha256=1j5-ufJfnvlAo5Qsi_ACZiXDmwMXzqgmFByObT9-yJY,3370 +pip/_vendor/rich/text.py,sha256=AO7JPCz6-gaN1thVLXMBntEmDPVYFgFNG1oM61_sanU,47552 +pip/_vendor/rich/theme.py,sha256=oNyhXhGagtDlbDye3tVu3esWOWk0vNkuxFw-_unlaK0,3771 +pip/_vendor/rich/themes.py,sha256=0xgTLozfabebYtcJtDdC5QkX5IVUEaviqDUJJh4YVFk,102 +pip/_vendor/rich/traceback.py,sha256=z8UoN7NbTQKW6YDDUVwOh7F8snZf6gYnUWtOrKsLE1w,31797 +pip/_vendor/rich/tree.py,sha256=yWnQ6rAvRGJ3qZGqBrxS2SW2TKBTNrP0SdY8QxOFPuw,9451 +pip/_vendor/tomli/__init__.py,sha256=PhNw_eyLgdn7McJ6nrAN8yIm3dXC75vr1sVGVVwDSpA,314 +pip/_vendor/tomli/__pycache__/__init__.cpython-310.pyc,, +pip/_vendor/tomli/__pycache__/_parser.cpython-310.pyc,, +pip/_vendor/tomli/__pycache__/_re.cpython-310.pyc,, +pip/_vendor/tomli/__pycache__/_types.cpython-310.pyc,, +pip/_vendor/tomli/_parser.py,sha256=9w8LG0jB7fwmZZWB0vVXbeejDHcl4ANIJxB2scEnDlA,25591 +pip/_vendor/tomli/_re.py,sha256=sh4sBDRgO94KJZwNIrgdcyV_qQast50YvzOAUGpRDKA,3171 +pip/_vendor/tomli/_types.py,sha256=-GTG2VUqkpxwMqzmVO4F7ybKddIbAnuAHXfmWQcTi3Q,254 +pip/_vendor/tomli/py.typed,sha256=8PjyZ1aVoQpRVvt71muvuq5qE-jTFZkK-GLHkhdebmc,26 +pip/_vendor/truststore/__init__.py,sha256=WIDeyzWm7EVX44g354M25vpRXbeY1lsPH6EmUJUcq4o,1264 +pip/_vendor/truststore/__pycache__/__init__.cpython-310.pyc,, +pip/_vendor/truststore/__pycache__/_api.cpython-310.pyc,, +pip/_vendor/truststore/__pycache__/_macos.cpython-310.pyc,, +pip/_vendor/truststore/__pycache__/_openssl.cpython-310.pyc,, +pip/_vendor/truststore/__pycache__/_ssl_constants.cpython-310.pyc,, +pip/_vendor/truststore/__pycache__/_windows.cpython-310.pyc,, +pip/_vendor/truststore/_api.py,sha256=GeXRNTlxPZ3kif4kNoh6JY0oE4QRzTGcgXr6l_X_Gk0,10555 +pip/_vendor/truststore/_macos.py,sha256=nZlLkOmszUE0g6ryRwBVGY5COzPyudcsiJtDWarM5LQ,20503 +pip/_vendor/truststore/_openssl.py,sha256=LLUZ7ZGaio-i5dpKKjKCSeSufmn6T8pi9lDcFnvSyq0,2324 +pip/_vendor/truststore/_ssl_constants.py,sha256=NUD4fVKdSD02ri7-db0tnO0VqLP9aHuzmStcW7tAl08,1130 +pip/_vendor/truststore/_windows.py,sha256=rAHyKYD8M7t-bXfG8VgOVa3TpfhVhbt4rZQlO45YuP8,17993 +pip/_vendor/truststore/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +pip/_vendor/typing_extensions.py,sha256=78hFl0HpDY-ylHUVCnWdU5nTHxUP2-S-3wEZk6CQmLk,134499 +pip/_vendor/urllib3/__init__.py,sha256=iXLcYiJySn0GNbWOOZDDApgBL1JgP44EZ8i1760S8Mc,3333 +pip/_vendor/urllib3/__pycache__/__init__.cpython-310.pyc,, +pip/_vendor/urllib3/__pycache__/_collections.cpython-310.pyc,, +pip/_vendor/urllib3/__pycache__/_version.cpython-310.pyc,, +pip/_vendor/urllib3/__pycache__/connection.cpython-310.pyc,, +pip/_vendor/urllib3/__pycache__/connectionpool.cpython-310.pyc,, +pip/_vendor/urllib3/__pycache__/exceptions.cpython-310.pyc,, +pip/_vendor/urllib3/__pycache__/fields.cpython-310.pyc,, +pip/_vendor/urllib3/__pycache__/filepost.cpython-310.pyc,, +pip/_vendor/urllib3/__pycache__/poolmanager.cpython-310.pyc,, +pip/_vendor/urllib3/__pycache__/request.cpython-310.pyc,, +pip/_vendor/urllib3/__pycache__/response.cpython-310.pyc,, +pip/_vendor/urllib3/_collections.py,sha256=pyASJJhW7wdOpqJj9QJA8FyGRfr8E8uUUhqUvhF0728,11372 +pip/_vendor/urllib3/_version.py,sha256=t9wGB6ooOTXXgiY66K1m6BZS1CJyXHAU8EoWDTe6Shk,64 +pip/_vendor/urllib3/connection.py,sha256=ttIA909BrbTUzwkqEe_TzZVh4JOOj7g61Ysei2mrwGg,20314 +pip/_vendor/urllib3/connectionpool.py,sha256=e2eiAwNbFNCKxj4bwDKNK-w7HIdSz3OmMxU_TIt-evQ,40408 +pip/_vendor/urllib3/contrib/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +pip/_vendor/urllib3/contrib/__pycache__/__init__.cpython-310.pyc,, +pip/_vendor/urllib3/contrib/__pycache__/_appengine_environ.cpython-310.pyc,, +pip/_vendor/urllib3/contrib/__pycache__/appengine.cpython-310.pyc,, +pip/_vendor/urllib3/contrib/__pycache__/ntlmpool.cpython-310.pyc,, +pip/_vendor/urllib3/contrib/__pycache__/pyopenssl.cpython-310.pyc,, +pip/_vendor/urllib3/contrib/__pycache__/securetransport.cpython-310.pyc,, +pip/_vendor/urllib3/contrib/__pycache__/socks.cpython-310.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-310.pyc,, +pip/_vendor/urllib3/contrib/_securetransport/__pycache__/bindings.cpython-310.pyc,, +pip/_vendor/urllib3/contrib/_securetransport/__pycache__/low_level.cpython-310.pyc,, +pip/_vendor/urllib3/contrib/_securetransport/bindings.py,sha256=4Xk64qIkPBt09A5q-RIFUuDhNc9mXilVapm7WnYnzRw,17632 +pip/_vendor/urllib3/contrib/_securetransport/low_level.py,sha256=B2JBB2_NRP02xK6DCa1Pa9IuxrPwxzDzZbixQkb7U9M,13922 +pip/_vendor/urllib3/contrib/appengine.py,sha256=VR68eAVE137lxTgjBDwCna5UiBZTOKa01Aj_-5BaCz4,11036 +pip/_vendor/urllib3/contrib/ntlmpool.py,sha256=NlfkW7WMdW8ziqudopjHoW299og1BTWi0IeIibquFwk,4528 +pip/_vendor/urllib3/contrib/pyopenssl.py,sha256=hDJh4MhyY_p-oKlFcYcQaVQRDv6GMmBGuW9yjxyeejM,17081 +pip/_vendor/urllib3/contrib/securetransport.py,sha256=Fef1IIUUFHqpevzXiDPbIGkDKchY2FVKeVeLGR1Qq3g,34446 +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=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +pip/_vendor/urllib3/packages/__pycache__/__init__.cpython-310.pyc,, +pip/_vendor/urllib3/packages/__pycache__/six.cpython-310.pyc,, +pip/_vendor/urllib3/packages/backports/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +pip/_vendor/urllib3/packages/backports/__pycache__/__init__.cpython-310.pyc,, +pip/_vendor/urllib3/packages/backports/__pycache__/makefile.cpython-310.pyc,, +pip/_vendor/urllib3/packages/backports/__pycache__/weakref_finalize.cpython-310.pyc,, +pip/_vendor/urllib3/packages/backports/makefile.py,sha256=nbzt3i0agPVP07jqqgjhaYjMmuAi_W5E0EywZivVO8E,1417 +pip/_vendor/urllib3/packages/backports/weakref_finalize.py,sha256=tRCal5OAhNSRyb0DhHp-38AtIlCsRP8BxF3NX-6rqIA,5343 +pip/_vendor/urllib3/packages/six.py,sha256=b9LM0wBXv7E7SrbCjAm4wwN-hrH-iNxv18LgWNMMKPo,34665 +pip/_vendor/urllib3/poolmanager.py,sha256=aWyhXRtNO4JUnCSVVqKTKQd8EXTvUm1VN9pgs2bcONo,19990 +pip/_vendor/urllib3/request.py,sha256=YTWFNr7QIwh7E1W9dde9LM77v2VWTJ5V78XuTTw7D1A,6691 +pip/_vendor/urllib3/response.py,sha256=fmDJAFkG71uFTn-sVSTh2Iw0WmcXQYqkbRjihvwBjU8,30641 +pip/_vendor/urllib3/util/__init__.py,sha256=JEmSmmqqLyaw8P51gUImZh8Gwg9i1zSe-DoqAitn2nc,1155 +pip/_vendor/urllib3/util/__pycache__/__init__.cpython-310.pyc,, +pip/_vendor/urllib3/util/__pycache__/connection.cpython-310.pyc,, +pip/_vendor/urllib3/util/__pycache__/proxy.cpython-310.pyc,, +pip/_vendor/urllib3/util/__pycache__/queue.cpython-310.pyc,, +pip/_vendor/urllib3/util/__pycache__/request.cpython-310.pyc,, +pip/_vendor/urllib3/util/__pycache__/response.cpython-310.pyc,, +pip/_vendor/urllib3/util/__pycache__/retry.cpython-310.pyc,, +pip/_vendor/urllib3/util/__pycache__/ssl_.cpython-310.pyc,, +pip/_vendor/urllib3/util/__pycache__/ssl_match_hostname.cpython-310.pyc,, +pip/_vendor/urllib3/util/__pycache__/ssltransport.cpython-310.pyc,, +pip/_vendor/urllib3/util/__pycache__/timeout.cpython-310.pyc,, +pip/_vendor/urllib3/util/__pycache__/url.cpython-310.pyc,, +pip/_vendor/urllib3/util/__pycache__/wait.cpython-310.pyc,, +pip/_vendor/urllib3/util/connection.py,sha256=5Lx2B1PW29KxBn2T0xkN1CBgRBa3gGVJBKoQoRogEVk,4901 +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=C0OUt2tcU6LRiQJ7YYNP9GvPrSvl7ziIBekQ-5nlBZk,3997 +pip/_vendor/urllib3/util/response.py,sha256=GJpg3Egi9qaJXRwBh5wv-MNuRWan5BIu40oReoxWP28,3510 +pip/_vendor/urllib3/util/retry.py,sha256=6ENvOZ8PBDzh8kgixpql9lIrb2dxH-k7ZmBanJF2Ng4,22050 +pip/_vendor/urllib3/util/ssl_.py,sha256=QDuuTxPSCj1rYtZ4xpD7Ux-r20TD50aHyqKyhQ7Bq4A,17460 +pip/_vendor/urllib3/util/ssl_match_hostname.py,sha256=Ir4cZVEjmAk8gUAIHWSi7wtOO83UCYABY2xFD1Ql_WA,5758 +pip/_vendor/urllib3/util/ssltransport.py,sha256=NA-u5rMTrDFDFC8QzRKUEKMG0561hOD4qBTr3Z4pv6E,6895 +pip/_vendor/urllib3/util/timeout.py,sha256=cwq4dMk87mJHSBktK1miYJ-85G-3T3RmT20v7SFCpno,10168 +pip/_vendor/urllib3/util/url.py,sha256=lCAE7M5myA8EDdW0sJuyyZhVB9K_j38ljWhHAnFaWoE,14296 +pip/_vendor/urllib3/util/wait.py,sha256=fOX0_faozG2P7iVojQoE1mbydweNyTcm-hXEfFrTtLI,5403 +pip/_vendor/vendor.txt,sha256=EW-E3cE5XEAtVFzGInikArOMDxGP0DLUWzXpY4RZfFY,333 +pip/py.typed,sha256=EBVvvPRTn_eIpz5e5QztSCdrMX7Qwd7VP93RSoIlZ2I,286 diff --git a/gestao_raul/Lib/site-packages/pip-25.0.1.dist-info/REQUESTED b/gestao_raul/Lib/site-packages/pip-25.0.1.dist-info/REQUESTED new file mode 100644 index 0000000..e69de29 diff --git a/gestao_raul/Lib/site-packages/pip-25.0.1.dist-info/WHEEL b/gestao_raul/Lib/site-packages/pip-25.0.1.dist-info/WHEEL new file mode 100644 index 0000000..505164b --- /dev/null +++ b/gestao_raul/Lib/site-packages/pip-25.0.1.dist-info/WHEEL @@ -0,0 +1,5 @@ +Wheel-Version: 1.0 +Generator: setuptools (75.8.0) +Root-Is-Purelib: true +Tag: py3-none-any + diff --git a/gestao_raul/Lib/site-packages/pip-23.0.1.dist-info/entry_points.txt b/gestao_raul/Lib/site-packages/pip-25.0.1.dist-info/entry_points.txt similarity index 70% rename from gestao_raul/Lib/site-packages/pip-23.0.1.dist-info/entry_points.txt rename to gestao_raul/Lib/site-packages/pip-25.0.1.dist-info/entry_points.txt index ab909c9..25fcf7e 100644 --- a/gestao_raul/Lib/site-packages/pip-23.0.1.dist-info/entry_points.txt +++ b/gestao_raul/Lib/site-packages/pip-25.0.1.dist-info/entry_points.txt @@ -1,4 +1,3 @@ [console_scripts] pip = pip._internal.cli.main:main pip3 = pip._internal.cli.main:main -pip3.9 = pip._internal.cli.main:main diff --git a/gestao_raul/Lib/site-packages/pip-25.0.1.dist-info/top_level.txt b/gestao_raul/Lib/site-packages/pip-25.0.1.dist-info/top_level.txt new file mode 100644 index 0000000..a1b589e --- /dev/null +++ b/gestao_raul/Lib/site-packages/pip-25.0.1.dist-info/top_level.txt @@ -0,0 +1 @@ +pip diff --git a/gestao_raul/Lib/site-packages/pip/__init__.py b/gestao_raul/Lib/site-packages/pip/__init__.py index 42f6c45..d628f93 100644 --- a/gestao_raul/Lib/site-packages/pip/__init__.py +++ b/gestao_raul/Lib/site-packages/pip/__init__.py @@ -1,6 +1,6 @@ from typing import List, Optional -__version__ = "23.0.1" +__version__ = "25.0.1" def main(args: Optional[List[str]] = None) -> int: diff --git a/gestao_raul/Lib/site-packages/pip/__main__.py b/gestao_raul/Lib/site-packages/pip/__main__.py index fe34a7b..5991326 100644 --- a/gestao_raul/Lib/site-packages/pip/__main__.py +++ b/gestao_raul/Lib/site-packages/pip/__main__.py @@ -1,6 +1,5 @@ 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 @@ -20,12 +19,6 @@ if __package__ == "": 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/gestao_raul/Lib/site-packages/pip/__pip-runner__.py b/gestao_raul/Lib/site-packages/pip/__pip-runner__.py index 49a148a..c633787 100644 --- a/gestao_raul/Lib/site-packages/pip/__pip-runner__.py +++ b/gestao_raul/Lib/site-packages/pip/__pip-runner__.py @@ -8,8 +8,8 @@ an import statement. import sys -# Copied from setup.py -PYTHON_REQUIRES = (3, 7) +# Copied from pyproject.toml +PYTHON_REQUIRES = (3, 8) def version_str(version): # type: ignore diff --git a/gestao_raul/Lib/site-packages/pip/__pycache__/__init__.cpython-310.pyc b/gestao_raul/Lib/site-packages/pip/__pycache__/__init__.cpython-310.pyc index 2c5e09c7da1b290ce0a518d1f94f5a7e7b0ab2a0..e9310b7303d49ed097bef49396bb229e93d859a6 100644 GIT binary patch delta 41 wcmey)@{xr*pO=@50SFfPt)9qT%xJo?UYC*4XYyJ`N!FksCs*gm7a5lU0PUg+@&Et; delta 47 zcmey!@|}e{pO=@50SKypgihoxW;EVdugl07GS5T2QA>ROW^MFJ6DARzJRNf1T6NDmb}V0V~QGYNI?XO zG&GKZE4qU!YSBh0Fo>XCMYmKX8W`*S$2EfnQ|fq9fhI%DTvrY=5BY{D`jd^+V+Ue@pM0&<+CKq%Z0AWagkgW zdD5~f!Fua3tT+_3*sY($G>Y!5{92^BF1s8F!6d?pc=)DcmG$)s|_0Qno>>yno zn$g8C;^Zdx4g3U(i(XQ1c#rqT^E~hKX1y~C&!X|ECYt;HFo+W0*LD;p zQsHfDcjqeTUj|{6gx>BLRT{~pLpARQ8HQ5bXnQEdD8>$GR(Lzhn#xpL=}oHnBv33d z&Zm##ZD$b087hMclIoQsyi#alOyKz(PB)=_ST$XArR<>@UPsvrQEP^kc8M8MDFuty@c!ef0j6IA&ll7P+S%ZR{T%9)uF-0;nMonJB Gx)A_y;SP!b delta 57 zcmcc4bC-uVpO=@50SKypgr+aq$UB*lk$v()#vaCq$$CtZ-07*sC5id*MTw<3n|+uf MnHg_QUdFl+0PO`5SO5S3 diff --git a/gestao_raul/Lib/site-packages/pip/_internal/__init__.py b/gestao_raul/Lib/site-packages/pip/_internal/__init__.py index 6afb5c6..1a5b7f8 100644 --- a/gestao_raul/Lib/site-packages/pip/_internal/__init__.py +++ b/gestao_raul/Lib/site-packages/pip/_internal/__init__.py @@ -1,6 +1,5 @@ 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() @@ -8,7 +7,7 @@ from pip._internal.utils import _log _log.init_logging() -def main(args: (Optional[List[str]]) = None) -> int: +def main(args: Optional[List[str]] = None) -> int: """This is preserved for old console scripts that may still be referencing it. diff --git a/gestao_raul/Lib/site-packages/pip/_internal/__pycache__/__init__.cpython-310.pyc b/gestao_raul/Lib/site-packages/pip/_internal/__pycache__/__init__.cpython-310.pyc index 86392ef801e0160ec65d5e2584da4ac136dbf403..7500622dbbd9a3e3fe5b0449fe83b56ff23d86ac 100644 GIT binary patch delta 170 zcmeysx}KFcpO=@50SFfPtxjj0$Scd}GErMHAeSYIg^?kZWdZ9#21bSyjue(urc}mM zHc19ah7{IR_B56hwiNaj)+mk?=3oX*&X*t~G?{L(_+%EB+~V*rD9OyvOU%(^yu}iq zlb`OlagIJCW7y;~jFPNDK~ApDlRq%pF>+1TXA%|Wyv0^hS&*5RUc>}6qlg(uOzvQc Q;^6=?1Q>XjI9L>z0dAfrh5!Hn delta 232 zcmWlUu}Z`+9EX!M$@T86xHuFMbZ}6iE>42Cc#9xzx0FCB&EFEqB_T->arFgCeE@v| z@pU@-1dfi@-|$V}@clm756f(pEzq==-%WenXNUN%KhG~qDv?Yy+wziQ1pIyWfiRM( zq(A^enxh;^2J;6hxtzVSav@3Y4(9i#c%+rK?bq7{J`p!pViUjz@dP?rv9?XO1rvj4 zA;j8NzV7t!jaPU%9FzU^a^&&ZDbso~75QYsc;=KVDrF*gQ|qFON{2$3M`&Udpy@nB aUz^~pk7F{q!!0Ry{~zt4ll;VnQDHjleL)wN2@d!#$BV0k`dNz)o-L*5j z4T)JRhX^DjDyZgylolM2B2cADD1rkLcO>`=Rzj#(4qQ0${AOaZqxt6d{l4eStmgMu zK7Y;ZrBWJ#?~B(TwtueQGrzt*ixI&j;pE-9#+<-Or{ESFMYq%_x#dP#aGEpkRvHzz z+NcU$ch0%BMonPD`R30SW;@b*x%kbc)vGHvmg+c4x9wn^+S_+J)Mmd)$9Rq1lk>6F z)vHU_PQI0=F`hX2Nnwhbfp%#6gd~4RWu`cOlZ#0%rrDL;GB!^3ax2n)3K$*cHJJX7 z7@+`lambsOh)k4F?n)#^R1znNwmysn@<=&CL9DB8VOk7hqc}+(VT?R|Y)JrrLGT*q ziGCfuT^g!EGQ?diR1c(K9IQGqLUm-2)IKqfq#PpYQ7SOQcz=;(Ht_*I!W$9~->ySg zdYA|kbVGzqgb6a4M{QvRJVns^QXWB(=zX3yAZ`Uu!KDU92g zq2CF;$n|#wG=vF`B^3J#a-`WDk&fTI?bueo)3UVmc)!MXMTZ4pU1x*Tn6|KP^ zFp#aC9rmEmTaH^+pZ0e51|~SrJAPmjYqRGE1J$xxHVp`1jxkSCohz5Nx05Ft#t8IOs;;2FSEN<4?oNPsy@Qc zvxnzK_zCuEZFzbG&Cut#c!rBbF7C6hYB$;9LPa+~jbyl4nqtnv`8q$7CY}T7@pZ(+w1l2W)pwKiEZMK04^k`IUzVjNn0V(rfSocx~VM7vvJnlT_>}X zrigWOus}k90L>9f9S{=bP^q#wB7Q)BK+)b1Hx9j0wIFq7V#JQ#XPEF`*#hYvIY+ng%9Bd!j zF6nQt_d5qXA=vKP0crPJxP9P`f045grpJ#Js>Em5HSzQqC4V)nEazJsG8_zgI)4tD z;}7$j(vitLDzi0a0f7Jz(1RgwN&3etDs5FW!FiB})(&#^Ld zpoS{GCd!OZMP>nXMVRp^1U{AufE|(?Bt?c5CQqXK8-7e&WSUDcohgx}iL9AWn`E_E z#1fH|h@`{RB;tlgus4nG3X#l2WCnjC_F1v#eX0|th2l~uN76&!z=2LOC?6`{fP2yq zewi54-Qn(7f$7{c(tF?6HD@Old7JR@!(Ioia zQW#U7nHn9Hs|%WB!8p`}Y3!{*OC+i%_|N#S@(l@=>DfvTR_LS3r?5`nt@`jy`g8Rm ze2ZSMjo>_eUOSilo*(@-hZPR19KNGh>sO0Wde7NgZr!$h)W^#m8xv>8!MxX~N*~s9 zCjNia0yY*8>a`S~he&31c#1x$FG7p{TQ9va%|*pXrFlFjbRD1A*l)Ybo=w`QP1<6- o=x2+c!x5c*71f{)bxDUA)|$>tVO*0=$);i^XDl-VjxrlB0ZH%~@&Et; diff --git a/gestao_raul/Lib/site-packages/pip/_internal/__pycache__/cache.cpython-310.pyc b/gestao_raul/Lib/site-packages/pip/_internal/__pycache__/cache.cpython-310.pyc index 96cb4d0dce7f91c240339febc0564a54fc1d4b7c..b496dbd293c08aa7f67f905e51aa8de4f9208d16 100644 GIT binary patch delta 4178 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 delta 1316 zcmYL}e`s4(6vyAW@8w5dlD8P!Bu&#_>1OiUw6;Ymv|zh5s|`pkx~*8FA=`V&Qq#P8 zleDf&)^3&g;~%A$?LVQ}A0nv82sp&QWPd139HOXu_>YKxOc)|46vfqZUpxBXesb^k zo^#%P=bW3}#jh6>!{dR*t)F4D zw$mLK>d~G;sa(;s+T=aJ7^-O6a|T_`R@e>Otj~>-69};r@}E<31C29}eGi71$8ouH z5I5-%$Kwc7ET1o%_7$q<3a`;&_L1X9m~6i8{8xezw&{5frr8&fN97Y}TID`7Y(j~L zse0(YoLw;`s;^LboQnx|MM>BXrr#(XFw1^deuCr8TSvM963t(|E&}o9AHI{|N^pk- zj(Bsf^)G0%ggGv>9B#1%|LtB0*Ib*%Q7$4dIYL7K{9S^i@KT&j2O=yVh_(%_0iX`T z3pieNXd+J@`!+B}RGFoMUH1J1u;pNTt18iXj79St=MX03*eAh|--mN2QHUG7q8l0B zBb(Ac?C;=*kYJ7WLHL>7X}<$Wo*dgE8voL~8Tu4r<2+D^gTKXeX!>fYS}an7ORF3& zawOQ*@F;qJ6^_Au_GdVS^NG$My4SdqH&f!JEEd*vE%SP1Q-jBhyg^J4V zM()8NyVW-V+ib5dXnPmcCt3LDa~s<@yChUF$yP6t2B~9rYNQIZwIVJ_HONDboW@j_ z?0lUU_E!~*Tqmg5YZluNbS#&{Ef}LUFh(${bEl;S4R8x}u_n@|&|bFeW18N@R&#DQ}dbWXXj>8PiJOQ&zzW3-BuCkRr~}~%pt#g_q&cEmwzn69%%DObp6a)qK!FXDz7D4#Q`MJ-b_vKk9S!_jqArvUqs z7oKb?PA7Q5jknJyIzIAH? z&(!NsW$FGUyfS60=l*YSyvv^iHwXLG6FSr#lD$ diff --git a/gestao_raul/Lib/site-packages/pip/_internal/__pycache__/exceptions.cpython-310.pyc b/gestao_raul/Lib/site-packages/pip/_internal/__pycache__/exceptions.cpython-310.pyc index debb1ce15c22111da54bf5ea8692096163d3c8c9..dc66ed96151c5ded1df89b4ddc72701e41f8c7d8 100644 GIT binary patch delta 9639 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 WudB?a)@X|JR+*!0N7=lpS^o<*@0b4o delta 7567 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 delta 62 zcmaFN@{)x+pO=@50SKypgl^=X!>AhJY!wq)oLW>IQ=Xbrk{{!epIn-onpaXBlb%{! Ql9(S~lvtWG`55C|0DHU^dH?_b diff --git a/gestao_raul/Lib/site-packages/pip/_internal/__pycache__/pyproject.cpython-310.pyc b/gestao_raul/Lib/site-packages/pip/_internal/__pycache__/pyproject.cpython-310.pyc index 7417c3e1279122a9dc33d5c4564a4212bd593e50..f90cc0edcff9a0f31d83ab4f56d2fa5e650375f5 100644 GIT binary patch delta 1137 zcmY*X&u<(x7_~i~-Psw>Z1z{On{3)7G=;6oHWIW%2!hlWAvpBVDnc4XthTYUoy7A4 z&+L|z4HZyM2%*XXaX_do2PCMt@CU%P6-Q2ULgG}3BjQjAian94Fp{6Y@A*BCzt8@* z`~9L9yRHq?ckj{$|#_a10NPM@=-AxzM*EsacKG`)Ea}A!m?iuE#C?& zegy(%?AjFXnc`&OaC|2!smSCcbbY7rl(-jG{b~`H`Ak^zYhm55hYi0`a3hO1!klL*$$u$rE99uD)bdL z-vK)|ouzZivq0e$&}-lR^Yn4_$WX;TauoDnZf0@F0~OTYj3z@KP`M7@X{fw9V%b2j zcgKNXA&WBkCH(G0Q<)yWec|P;&6J6B>pJ6Eymc|&9&1Iqb@}r7*DuHsx(Mgwee}Z0 zjFRV=2WgfYL(Y3pc#08vmqTbtXf)kfm8VES7mAKtF~r&Vr;0+`Qfb}@hkI<0>?b1L zW!u>x8D`hCu5fx#9Fq@>PvLKJ6W@WS<=^-WYfb^hV<6t2;^anV?>ct~weLa#o@S2D z4nU!U>4$HDkKh!fpHO@SOs&HEIVB@VUFv;}4y=NM=@(i@t5a(N#W(T;vjgwTugvB0 zj~HaN{a@uT<{RZdsCz&t`N=EY#S6K4{TgHZMm=TOILYFeryH-nxYl3qugQn@swDwDRr#6o(i+jqjs|_J!qrgG za9lyJDo*HlRl`XQ&&t1?b+{y-C++!VO+2GvMZ?jn8IX2KucWu+0Xf$s7!in`5QP3A zWsEVj5SBlajn&tbrq|8AAWUMBsWbJ*S-{0vy`QcjH`4u7F1n|d$wa-HAdUt>v=fUp zz2+oA(jQD%L}MW=x#>Q4Q=dF<7km(9OhiN8XYXyZBvaP3Xu@Hgy6k-M|3dxiw4V&O z_lBb&8Wp|B@m1CG!v@uqM;z0jdn5GOj})!Tza)z1X1x-|bj;ZXR9t#afdwpRK?0l5 eMm8jfpe7<_-Kb-PEr_2Wv!wcij*JrW{{0UlMG(XQ delta 982 zcmYk4NpI9J6vyq1CzF{hvv#A?p)3WaLPLSF2tg0D5&~{TTtcB5u&1OrO>jJ|TBcMg za6nKYE}@ z=5+skr@Hc1Mi^j7feVvSb2T|?H02`~L6u9(ue{Zr(4r1;6MPrIsN&Hb|+3a2DroBDai9QjtofHIA@_Z7FpTgq<0H^H1Ro z&F#hoA`AKeE=prbzU8FAAl-eSmBSU>C2M*xJOk?8q5yXf!Z^(XpL%sIE}fj4Z&D9W zlB;cx5ueQQ*c9jB1@RHS7%s^T|2#i_Wa?~0STwajC=aG4f=g}Xi>78s#GAo1YqqI) zpiRJ{_^j>U>d2xPQ7__gs!3@bGD|800gF_~fqdjC2SZ&`+M z*>7GU)8S&sf?0BjPlru@x$>vdfvhTir0&2E;ud-Whs2Kbo)xA8R2bb;PMq%;^N>B{b|-}k zYf#o2INt}Bv)t)qZ@}m|&&x~^m)5jZD88k;GA|L}#l`pHSNcTe3$~XnY`#9FucQ8@ zQbc$=r{a@&Xv9>m9tCx6nW2zT7?7yv*;X~*rm$UMNQ_#CVNLi}@21U4*rG6~ z@c*xRZ1w7Dfv6+iSqCk%1g#W82pXC$GWOWuQJJgv#*XKQ0prxW*l2T)vVCeD)wh_n zhaEHY!p8JGnZp5Nx_D#n(v!{%@zt(jwV92c)fQrOQJ&7mM)E3CRZuN3^{xM!`*%x> fqke$fl#D^?h#C?GFrWo1(9#O9qLnh@u2cIB6j0$e diff --git a/gestao_raul/Lib/site-packages/pip/_internal/__pycache__/self_outdated_check.cpython-310.pyc b/gestao_raul/Lib/site-packages/pip/_internal/__pycache__/self_outdated_check.cpython-310.pyc index a27fdb89b907eaee62d6571a3295fd7cd8f5c30d..771e6067f0e4f47d5abbe07cae44058882244b76 100644 GIT binary patch delta 2925 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 diff --git a/gestao_raul/Lib/site-packages/pip/_internal/__pycache__/wheel_builder.cpython-310.pyc b/gestao_raul/Lib/site-packages/pip/_internal/__pycache__/wheel_builder.cpython-310.pyc index c8195f9b9df0f84be95da77972443c1a17124074..366028ce58027a4b8749ffd27d2a5a7bcba997fe 100644 GIT binary patch delta 3154 zcmZ`*&2JRR74Pcl>6z)7X@7e>V0*^)*m!Jg^KBLkS=+F{W-$t0iEINI+EZn_p}S|O z?tz7j7^pJzILQmYaTT_LE;fo;G{w&Skp zwOMUmyVWk+y4&G(TAfl(xLsbi)$R3IJ+hs2d%c{M^ZKkl*-p86Z=bbK%7(k&>$m!) zoOTDiL2FRT8MojSts=;qgl63#Z`c}^3ez3&N>)kAZSJTyW{pX?-96xqTjO5YD$90< zJK;@QlTz+<4|-G9l$5*NX>Z1wk#e_t$UAHumU54K#5-yoB?=>79b?D8Ce{h2eKkva zH<@<(%+Qfw}-fWHx10(PEmqQgU4}A0D3_hkK^D}1-48l zfL)aAB(Mh|fGG&{bY7v;uirB=s1$OmCOt$CLyvQBdc4!x0`m+#LXU#^d1=1m5a*-Q zWAr#^KAD@dogx`jFHH2e9HW=;?~y6 zYGg1!XmD1c4v$jncCcPqbzHXH5kE_^1F%V-D|{GU|G6%1==u27s|)8B#V_=q%#8vW zr~qc1m*5q}IJ+AeK4Y|Uf1NS6iprfI${PF^;U8QS#l-vB;ihssv8>P-M5u{x5_Pql z6#J4lH_IwV=X?wS$8Nz0NKv*Dtk)VYt*kU0mrel{6anY= z7(WKDcMif2ffoFJzz>7Kk02aH*zM6YM$;c7c^u)y_BrD-lE+!{g8-4{I{uwVcY?~j zYQX!&_vxhtT>G*ngNxEYS61xm9p=+WTd@Nc#n`9e?jg|4n?n)%Ph)6F z71+`6FQ=9wvwdOn3aVpXu(mgaY4qi+KB&}u_De7d<^W96PE0suNjzt-v{$BP zkj`CgT}y&al{q$0df69Ki2=6BSNxicq}B-QjZhXG{T>tj9VIfgJ>TIFG9_MgULNR0 ztHhP%^PJZ>FU!__oBNKx#wSHj*Vqm8(^?dqWjWQF&QFp31i?bMj(}$;O4>YhR_$sS z5ymefz3a@Ofzc`_IMHv!Z@cD6b^E)n7lhmpk9syCW%1sL5@smM1}tpUEAQB`tifFd=sqjvHxS4RSOguH zE#Uqt{+@e8Zi#x|2DvW&(bu@%hnDLIm<2w8fHUKH1T0Cs4iLo|rm7rkpHa|-4ZvQQRQ$18BOHf|X@pCm&rw_HM~h>>pB>rjTv2LCx~77%uAPH|~)^q@=`R?oTFgTt@BRpbJ@7qQ@)kfAMZi;^u z3ZzZ+6pN%?*h5|7QZYw5gk3zUH^Y_P%IK(2Vy@pfRXdoewn-)z+l+yU@8 z6B(B-EM2*JesLbEN)i2}7w`k(DhnEJ$S>o7c=yRK8F}B!%bcG;ZXQAAT-F_#_*=-~ zM&_83T`80Ma70lGP&aPCwFiYZ=(t;bMJwOj3s lsY#WnuT)iism6@|sza@o@e;mdB#)9fGm<9*;@Zg7{{eB%%{Kr5 delta 3589 zcmZ`5TWlOjae8)kc09XYzaQ(@u46mSI*IK#iSu$^cAl5S3GqdNIp-#m?e=<;nVr3! z*@Rp+S}x8V_XE<=f*%A*Ku8yHKPW$ZAcS-Xfspt_x{=_6A3#FhtJUhYS#6Tm-FC0T>X3NC?ew~=F0b3_mbBsac)eDym$5REZgTs)eyd;NraRyb zT7wc#xjxjI)*+T)V@1Lauc#TtI>M5yiH&8H29&&`w3p4( z3`l6SkM`f!tc50(&d~ujMhDqpI>bzNB%??PgJx;&e%v}HM{!PFqr-F)Ogb)EBkYJ2 z)afW41MZ1+L6aTMD6qh0Iu6{ElDmaIATm@8?zlkS2kZ#|##n)nOSDY~1^g7g_Fy`d0&(&-+$7e>y~ zeaygUQ8e{U%V${I(Ulb4PY;0jIjSxx`Gex;>ak=zG8P=yb*{PWaV$1V>T0z4EGs&N z+o#Jx2qPDn6ZqwGr64Gki z%JL*KOJ&N+q3!y`d@M3qIjC}G(-M!GR-IrqW3QB47PXfG`xY){ml|d;`qJ_;Bc7Qpm9b%E`Fd_VvG4^(V4hX zkIZVo>q{!3^teB!TVv1cLT`Bcph=|kZ(nRp=p3|z@lb5SoNze zwXao6E}a2ZfI!zZRVNy}D#E9lrm0$1)#Dn`RYTQPjigkAfEdt7X)2!;r;LHwAO+Jy z@ETf~`VGva*y7uHA}x4C_$-V9C5?K)6wzyp)K_qI+=f()?}cBKc`fQTq?~_?(E^HX zJc!5PlhIED(pbKR24E0lizo8x3nAD8BEXO~>;rr~Ca8jsi;s=5HW$!92cT*?(Vy}C zkAG@>Kr$E^z5_s{xux=rNQX4MSqOMeTr?LA%$&T&^Wsx;VCV(kQ2u$C3l8{H6@N0v z$#G#Ozvv#p;U>w(H0K9^=Eudqk~6wA@Pycr>Y6)=+*fp_?IH{9=QFe(DtLfiWzNg+b!gS3*;af^A5w=iR>PDRNunm_FTh`Pd1a&%?8h;4J-6Iq#3BP<| zF;d>&BR*@+r|%5&yW4U_Kg=N}{?I%}W<_6mYX-?&Dae)mFyGD-7`tf%ZDKjyYh!{& z`ijpzC*&>2$EZcIAmmZvCiIJvU*-m~T0Isz)CnDXgWZhcczp9F6fjHB_Mn%P3oPH% zNT{>ox9R!%+c+BYg5s;2mPA#hmD{#oWG?kc8YiZ3S?awJ)Gl&5c z?x=~_)7}_LLUlehp7CXAhF=XU)ljxc9rcTEwrnCZkAKoqB4kGNx1Afzpj_ho(s9mx z&L<^x%i(3{+I(7k*tU5YHF1m$M<+Mjxq^&$5!eW>BET|;42OrM6{iqJgz>Y;ekDE4 zMoU3QKNpGiqh$5*>GmHJ;)s8A)XB7{c211qu0+iNo&$E}wq0?;Rasw+b>xb!_`LIG z>kuv=_iz_tH^ham&THreFCgeZa2`QBf=&b;fGATfSKvH?J|6g0ICC&WtPuMAHeW=c z3n-*r_e*8oho~N`R>P7TX`T;poD#q4ni`d5DC6*I2twvnWYL}#neM4f5jDOX14 zS6zwABk!na8~jT0Td3u00P>5XGB{vjazrX;{5|oV!EA!-KwJIdkAvMQ%#WbaR1ERO z;7ATTf$RxUN2OGmgtItgyzID>vNiLhXv=kosiCCaC@yhiXy9ZT=V0%NGB3~Ze9GKl z5|0;-?nixZ9G6}}Kl|a(1Zfw)8``O32}E1Pr$eJncH>gOJH@W-$hIyV$iA#a`Y=gZ z1&YB5vESikf%k|nXNO5I7@TSKNQ4@yM|4vg0w^Uhg!RFL-Y=PoG>ofARRjQRqXXs9TQg str: 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: + def __init__(self, cache_dir: 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 + # just reuse 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: @@ -91,16 +78,10 @@ class Cache: 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 + return [(candidate, path) for candidate in os.listdir(path)] + return [] def get_path_for_link(self, link: Link) -> str: """Return a directory to store cached items in for link.""" @@ -121,8 +102,8 @@ class Cache: 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 __init__(self, cache_dir: str) -> None: + super().__init__(cache_dir) def get_path_for_link(self, link: Link) -> str: """Return a directory to store cached wheels for link @@ -191,13 +172,13 @@ class SimpleWheelCache(Cache): class EphemWheelCache(SimpleWheelCache): """A SimpleWheelCache that creates it's own temporary cache directory""" - def __init__(self, format_control: FormatControl) -> None: + def __init__(self) -> None: self._temp_dir = TempDirectory( kind=tempdir_kinds.EPHEM_WHEEL_CACHE, globally_managed=True, ) - super().__init__(self._temp_dir.path, format_control) + super().__init__(self._temp_dir.path) class CacheEntry: @@ -211,7 +192,17 @@ class CacheEntry: self.origin: Optional[DirectUrl] = None origin_direct_url_path = Path(self.link.file_path).parent / ORIGIN_JSON_NAME if origin_direct_url_path.exists(): - self.origin = DirectUrl.from_json(origin_direct_url_path.read_text()) + try: + self.origin = DirectUrl.from_json( + origin_direct_url_path.read_text(encoding="utf-8") + ) + except Exception as e: + logger.warning( + "Ignoring invalid cache entry origin file %s for %s (%s)", + origin_direct_url_path, + link.filename, + e, + ) class WheelCache(Cache): @@ -221,14 +212,10 @@ class WheelCache(Cache): when a certain link is not found in the simple wheel cache first. """ - def __init__( - self, cache_dir: str, format_control: Optional[FormatControl] = None - ) -> None: - if format_control is None: - format_control = FormatControl() - super().__init__(cache_dir, format_control, {"binary"}) - self._wheel_cache = SimpleWheelCache(cache_dir, format_control) - self._ephem_cache = EphemWheelCache(format_control) + def __init__(self, cache_dir: str) -> None: + super().__init__(cache_dir) + self._wheel_cache = SimpleWheelCache(cache_dir) + self._ephem_cache = EphemWheelCache() def get_path_for_link(self, link: Link) -> str: return self._wheel_cache.get_path_for_link(link) @@ -278,16 +265,26 @@ class WheelCache(Cache): @staticmethod def record_download_origin(cache_dir: str, download_info: DirectUrl) -> None: origin_path = Path(cache_dir) / ORIGIN_JSON_NAME - if origin_path.is_file(): - origin = DirectUrl.from_json(origin_path.read_text()) - # TODO: use DirectUrl.equivalent when https://github.com/pypa/pip/pull/10564 - # is merged. - if origin.url != download_info.url: + if origin_path.exists(): + try: + origin = DirectUrl.from_json(origin_path.read_text(encoding="utf-8")) + except Exception as e: logger.warning( - "Origin URL %s in cache entry %s does not match download URL %s. " - "This is likely a pip bug or a cache corruption issue.", - origin.url, - cache_dir, - download_info.url, + "Could not read origin file %s in cache entry (%s). " + "Will attempt to overwrite it.", + origin_path, + e, ) + else: + # TODO: use DirectUrl.equivalent when + # https://github.com/pypa/pip/pull/10564 is merged. + if origin.url != download_info.url: + logger.warning( + "Origin URL %s in cache entry %s does not match download URL " + "%s. This is likely a pip bug or a cache corruption issue. " + "Will overwrite it with the new value.", + origin.url, + cache_dir, + download_info.url, + ) origin_path.write_text(download_info.to_json(), encoding="utf-8") diff --git a/gestao_raul/Lib/site-packages/pip/_internal/cli/__pycache__/__init__.cpython-310.pyc b/gestao_raul/Lib/site-packages/pip/_internal/cli/__pycache__/__init__.cpython-310.pyc index 6472b5d394651835d969693758284c07c5716f59..c52271078bf3353536faff0cb274f5ed744c81d7 100644 GIT binary patch delta 33 ncmbQh)WyV|&&$ij00fKtR!`*aXN;OSTaq;>$jQ}t;{HGYg_sF9 delta 39 tcmeBTn!v=J&&$ij00h-PLML+fGbT)&Eyh(2t65C1B2HMcNRcJ*~5l~WST2zXfmL#H3NQ237jGe?zj<@MW zy98uPoQF!KhbJzQ%|)W(p`aomo)ABP+w1buH`GVo5E2bDoAmO)uFmY7nKSdvd~^1P z!cV*7^?2N2_6tjUK@#8103Y zXKk&+gdzB4o@Z;|>Y-iFvnKfLlHCFiy*Y+HcAC|qI&+PSPXVJ>m}~4+R)h1*HJi)_ z*K%!);$`M*g8O<4j~DR@|f)X=2)?_x~5-V}wY|ao_PAdBaV$m`FBx7#hXMXc+nV{YbaV(-9)(#j5FQ z2G3>Jw3b%wc6+M5bDI3c(^j=v5Gg7P?b+6fR?TG@)%66@vh=;^LKka+FgA!K+R3}7 zuj&|>4*Sur3+>0ZJ29@o_o7_)`Zp!W@HsU?Zvof{KPkKqw zlV^Skzeb*6$U_?z!9_0>AhL5jw5CK3%S>VCDeC+xELpV^A|ED&YG0VP%j;_Qdr;j% z!*U1OTfMFh`02Z2!#t~r%#R_xefRyr~#u6Np;0I z1aGLHjl3~Fe)#C9`pX!D1L|3`yrSbF`gIz;D9X%ZQ4q!Op`jWcl3UOt2T+XRYM3ZY=770AL$%y}I4TCN30&%ic?u@3 zS!ZCUdd+$mCe_g8{EM0;^P8uE=^V(8?uO4yj7yH+9U}^;lpQ7Z*!4A@@-L z;RNwnSznm0xFuP9bG{Vl)q15?$OOjB`MMPHkow4JseRGspEl&96q6^>M`AmP-6V*U zAXYr*)@SMqi}NM7ltfG86BLf7Lr#4aeQ9S59I)5-?fI=x+;P4*f`QT5ctVZS<=&J7a!bqMU)%6zF-Tqr#-p0nusLanBs$xcyh3Pm9*_me(IVo3dw z?%zFwYGBP*8m_2F`2y|CN`uk`Mx}wag1rf=1~Yqh5cffZ*q){{8*qZsh4*s=wGUN2 xGYli@(@ZuRHXcGgsea6;o{-;ZI(~pe*wlzBcOS|un84R@H0$&=xpQZ0?mug7gtY(w delta 1528 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 delta 3320 zcmb7GO>7&-72cU$E|=tTMg8$dqAALjWwW+rE3VzxaTEX6u%jrhBge?b&4%KvXfpf5 z&MqZOrOGA}5cl8$!J?NUY2}`pLwjg@?4c-n=&AQE3iJ>ZXio(S^anxz-W$r66T}6w zi+TIzy*F>>y?OJ^{^;aij~jkAo0j1D#y@X0e^`0XC|4JVBr(a97-7^QCJ|q1Qt_2d z`rh@)K6R325(KiNxSFXEG*+CHn>N#K#>}|7sk>P->l&sZbO~q3O`18utIn`HVvYzt z>5RH#=9u6$XWY%3dADE|L_g&e-I7^yC(H?V(wub5W?9J7&c41|F)QwrIptQ(syl5? zyZg=k?g8_FJ7dlWql|OVoi%3#uRDj_!{%YPX4XVM>wLjIVjgjinny+7aE`fi=5fIf z0e`|g;m(`$qMvh~aZj2jfgf%X^NTj!Ic1-ISR&?^u1ai#4R3?O9@~=5XBmA(s*Oh9 zBG2U#v3$W>kF`s6$EhzncJvD}5&e<;m?Wc!cE;n;TVBfxLez#W-@C%O&!b`aBl6qm zZ}KeImX#?o8J$y3y*6y?wo;OqW)Iov0lz{^(u%^y*!Z?$=3x3q7Fm$ySplTOpOO|? z38W+MN{VET!ZOQzI{K6HF*y)@l$aeo2-_cLm>o2DtAh*ThoZ7NeFEit7D)!l0VI=1 zbRcokvY6kntXS>Td0=xs6}jp>NkuZT=pAX z*Y?8TPSb`&_!h5so#u$Z}Sq&c+buWw)7Ix#L<2Rcv zuNiB>-EPSIHIKiD%lKsIv4Y0SQ6YCKodUHCEjS&$nmgB*+G>xsHE1bD9?0L8fJ^gZ zjE0%E&g660&+;=&*)foNNQ68gT#X}|{z>?isxiQR`3&IuS>1*V0QEESfqR#|$FUs2wbRtU>5eOup@H}=7( zeZkv385U64BAberLT*zDr`lDPWyS-XT04+Tx8{OT6~8jgix&A8WA5 z)=JlF%<;pJ*9L&#m* z@lf7T80-S3JCxfACgy#BJ@vMvO0U5tY|?K69u2;01jZ-VZ|siG!+0%B_2?E6yNn+C zdoI#Xb&(16FdG^x%6j+zxZ3md^u-LVfA@)CG?wUp&S-M$KP3{r;V@Ifk@hG{V*K}^ zX4~U$5&n}f-!AORv65BHipXPe{WrTKAqz~~%|QPXNqlTvTL0Z6|9xV<9H69WsV zy!7J6@ar9J2Y@oic&l;uYt@6nM*hmZhAp79+VWO>?h2egy9BtT+4mY23O6ViR6&I_B4mOVy0J2cg31%;Mn>-6Do=3d~xE;0{ zbtjgCkaGhSV@R;P_%M=jBqK;l(J!+FgD(OfCoW&Pcu{9d&j=gF-me+NcVF|a<%>Z!Gb`%5J#V>1(*E=1Xe*lVL2?(VcF^CFHkNQSQ zr9}Uip+@f;NBRqo&{aU-+&RaG2!iM5AZ(js_5!Qx-39n{Y-Yh6dlsKDVNHoscz8qK zcY-*9%Lq80GLCRwqk~1i1^kDEw^7t51KD}##Kosg`aRGFDiBScAj*l2BHaOz8wF+i@1|3y}w>wBJB+Ecz1qO#a zhis}*Z``#l*5bU3`XUOGYjqBPElsYV2(uceMIlMijTL zkE76NP&poQ=aIYwqy;U&=nX}e4Qj}gDg^5aPa-o@HjbTogke*k#?CXjf@vg)4aLy1G00?QIviIruj z9ey0G&LBb17r}6Zei88?fFyQtwfqJW3?R;0R>P?WLBn<&aJYAGe;G~A16ktJK#xHS z@NA|f9adYV>B@*ak=ifkl}fU9hMxcxcaVq!YV4k?IVhHuR+FDZ%_0sN!EvkA78{$q5J%aDj)P=c2zC zDpLY41XLjS41h$y2VxB`L`%gPQjFG%(`pF?6VXnwqKeN=?5fBK$b=jG07M9&GyGcmg zum~z(n*vVps)&Y1uj1oYi5FWfJ}TDMYOmf_t?TWz7OmRX)oXnrke)O9<*`9`fAim& zGv}N+a~?CZU-pwvo+L$qZbwPMz>K;k*6k( zCt&adX^6Jd4%$h#(=OWGYip{FP2xP zJEZC|dNbVxEGo3!^p;+0)8aU;U4{X-(%a}Bx|i-_lQv&VZ>Qe_6RwNn+&g5#_h~Pf zutaX|2XsHZf@aak0Xh>*SQ;m?e@NsYy#qw*jXenZLl`YHMu+H~FlsPH|3>eE(Q;#S zH@yc&E9hA8<6%}rCqheQcA7@jmPC3lJp!{U(H9YVAHARU(WCSj?DROx+pW+OY$g2> z{r6sb)2cYL9ssi*WXV!#8cS`l(3A8bP}KMx%REdUf!WpHG5aX}515UtF)aQueGG=z z8>7eRDHyGluIi^x(Ep^TArw#2pFkki#ToSk7=^n_W9jf+Pm5$0rLm$c1$!+T{V9D4 zbTxgu84>z4{TWPekV~DR&%pNt+dwx{m8H;UcN6+tZ$eXZ+>*~2v45Wa9KI@j0itec z+8D?4bA#tBeUbh`8vl|s{)RZN7b_zQ{UuA1anb0n=*wV=lV*dH)7TWS{nzvrpxkJ9 ze;`$@O)QS<4+hu&(szO9k90<_xv3?N<6VQ}J^Cklj=oPn zkO}WGcp|Zy|FgmLA^k`$^|54XjZ^f|ckbyg^slfduiVq$=-)wuO8+4>Y-Xu&qWs;^ z{(mrcf_Wjd3G@@#$`+Oyf$2{T#g`Y#|I^Pvu}>=gC;gm$0q#7(eDq8D75y6WVr!g% zUl_}rr{B^3QRA^(t?BFQ5 zmN`_BNEhF~xrS|+p!5SjK-O0$NH$p(%bW1qRw@QzWuIg+;w z`0}7Sn(1liOj6K4QNkzr!7G_iXWZ&4)%y#!jM)T1`tWVquBAY2J;COz#zhB6OfH)UdP7PNA> zTEe3g%^q6xD&Uv{ZBTYD^sknIsxV}GM#)}-MyRw>)0~3h%IKD7-gJY!@60R z^>{Gt=H06{?O@|r5uEt4Sb??${h=_l#d^slo0-F{v;!o7Y0$4=sq#Bb$;)5{Zq#(zPNtvy9Y> z<(VRV8S*y(M6HyyxY~UoUf=&k=2>EqGxhz?W$huE4pUSO_@kykOH0(mU7h?!km#-# zt8(VfEY^XrQ7<&aEA)Wh;V^R)k7}W=HWszITLWG<3-U&w@p^GO$3f!!I zTiXIW6ip1aZvr-0G|0VZ>jQOut26bdr0>Nb(hZ<=w!51Z){_3Z%dcn+3Iz->RXw+)#djFx9Xt)O6VKV zuws4Cuwp%CSg}5A*v8TkPMd1D&*9L(bz{L#6ulAi81zJAt}9iBM0&~al*YlPUrG_HK zGlmsOJB%5o|1-ue$A*PyN6(}smR-0`k9c)bd$yF8JaX}&E%F_Zwi85Xa%#>dq9~uG zf(RDO@Yiyl-zM&#e2Vn+ubMKB#54^niP?b*p{7g`nPw(k;&4F@xm{LI&m^15cZ)X) zrjZ_Tp&&3qeuT+`@)N|7smV$Ez!JU(X$PbZ`xMZzPyBW&>Nr2O)$;v8{>)T<5c-Eu zpcjb;M+!VTt4bOJcBwlpxH?};rEDa z$6p=8Q6Bb=boLRHtp|vjg51sT7Ns-R+vEx=4EE0`PI?2?si;mB4;JN%_h%Fi8r6rw zcZ;l|1(uj0!dX?mN;@Qj47?IM3bJXDl7?I=nZTZ%~|Asyiu!U=@qBJavf zp%rH&eE_QXgGf6m3W_&aq_zJ3TZ?ZVnJ|(%vXu1FjOGVG>LlT_P}%t(D*~*U}?^vEvHIX6Y{WtC6}GV$wv@IEr`2P!G-)$ zoWxOgVo6Dx&lPG3@U8p`AVh6L!ycSJBX-Qu#l9==Be(V!&LpZ$I*sscV&*IdsSq1x z?ID%o+^hwpKopcuCr^p`^1NEil8_QscavtdN9!?%&6Kngo<-HLdRV2Vu=%iZMC-AH zNZ1rs!WMY)nTQhB!luot(?m(5;xLPo<#UKG-YeIuy44E(q#Db#98e8e_Z0l_sR(x? zlp@u7SuWz#PsP&N6&cmAZFy(eEjE%$QixsUXZrhQA1ARRZ20UL9mW1lbIzz_p3o~M zk!NLcuc^pRyAAc(K))SsKRamT&xu_Xr?YyIo&xk(!eP=`E@)Q%0+ird*GiaJ)ZMs( zvlh4jHhKMc9~jqeP!DtfF&Jp)ZZ#MhVQ3wza%crn-M$4N7Q=%+^PgM#R39mXqeE! zX0d!hUM+=$3Bik>T5eIo=2~Sp*-e6l)JkoAYS?^~99C$;5mS!_35Lm|Q4=N)O@!nz zIW?I)N#fJWlKvML93oA)9ft~+Hw(45g#rOzFlz2>Wz6TsS{nR-?TQ91h%Fc3W+kj_ zOz0sYWix?g$x(8>LX>SPRT_9SbwHi?zU2;#rWQGZpqIPv>w$feb zgj=2Z;F%S0!maLXV{Nl%&MB?*1>7!Qu&T7u!~AS}8?Wjv6TXFI&D~}l`1S52crXM* z@K%7A!XofLMkQ*3G1s9dLlaFLRtOOs5h3KrLcsEY8jrp7g2GfYt^6VeZamO!c8#Q1 zG;JJFRU5Gkr~@gQ-Nb(nQ{DEG63|@|GnT(8*3@*yl4v-hGM(zhdo{)6UXfC}u0ac1 zI~0Cx$P%`OwJarM-L3MfSijE}wj3o8HE?H)61I3$?7?FiX;LQEcW4dg$-MJodu@q3 zA)3(U;vsLy8}ReVxS{(IWM0a<4d2^p7OsJ*L8iHaxsv;MZ9@dF1ta+59YF`4D zDFoLF=eSM$WXZOq$6- z2meXPNE*3qT=o~1UOo2*7%&|qZDt$Xr0H-bYxv&;lGtX!Q#g^R1KL2gnSTaM-IkIP zT%7+y1nMtKWEsf%{%`89A|u|aM(C;=_QD^Hmm6xv{u-A=kB)=9unq9@B7gY=EB_r( zc%7(TK66BY$oR(eiapEsiN!05#Ml*%r0#?kS1?pUSzAzSTT%V3@7P!<#Vae;B-?$= z<8pVExET)xg}(CCjGa-d(@6tvr!$%o`#S)CGfLY-ULSuQ42fEO0gng%^6;wu3oB2M z$RZ?KkjOaqqp9+AFG8}m364izfy9LfH3+o`%K@TeoKBbD9|*ay_<~L+Ux8Dr5w1sA zi?9x1J;DZrW`vChHz2SGq6eWBVJku#LI|M~L9*NbSE2)82~ zK*0Ag7YK(C?m@T@p$`FHUtGS2j$`kHRF3Z)z763igfj@G2s06`M0gJ21%$H*c;)ez z5Ppg9D}LGud8(~s;geTW>sAyhZ<8j+kwgnVD%J5{tI2|_%N6ggOA*gr{}xFR&#%uAkE|^w$>Qy`y=02;tecaWHuO#y zdWw$!QcVHL>@gada9&NsHw`jr;&1DYRBCWtXqQy;;7do&sOo@fQZH&+_UCF!{0zum dLb{f&s$jrW@!ER(*blQWX}YQ!OJB&p^e@Z~sImY6 delta 5887 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 diff --git a/gestao_raul/Lib/site-packages/pip/_internal/cli/__pycache__/command_context.cpython-310.pyc b/gestao_raul/Lib/site-packages/pip/_internal/cli/__pycache__/command_context.cpython-310.pyc index 9506fb7a35a160f4a9f1db045ffd6464eec7509f..05d5d545aad659e1998e2d1e58f7f18aface3e1e 100644 GIT binary patch delta 57 zcmZ3$HH(WopO=@50SFfPt=`CegHb-w*(xTqIJKxaraU#LBtOO_Ke;qFHLs*NCMd|s L)p;`qlLRvW?EewJ delta 63 zcmbQmwSbE|pO=@50SKypgl^=%!Kj+IQ=Xbrk{{!epIn-onpaXBlb%{! Rl9(S~lvtXxnTbh)8321k6&e5l diff --git a/gestao_raul/Lib/site-packages/pip/_internal/cli/__pycache__/index_command.cpython-310.pyc b/gestao_raul/Lib/site-packages/pip/_internal/cli/__pycache__/index_command.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..e02bbbdb2ab6f4e7453d73c337f53dd682bd3468 GIT binary patch literal 4955 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 L)p_$9=Hu)D`%)8m delta 63 zcmZ20zFC|*pO=@50SKypgl^>C!>pR@Y!wq)oLW>IQ=Xbrk{{!epIn-onpaXBlb%{! Rl9(S~lvtXx`5E(Zb^wZF7SsR$ diff --git a/gestao_raul/Lib/site-packages/pip/_internal/cli/__pycache__/parser.cpython-310.pyc b/gestao_raul/Lib/site-packages/pip/_internal/cli/__pycache__/parser.cpython-310.pyc index 06f22bf2dcade8a2b926c73e7b43b717e78894fe..acdc7a7b7ec4d37953975c59017335ee51de56d2 100644 GIT binary patch delta 2775 zcmZ8jU2Gf25x%`UlE;6Fq9{=msiQ5)rQ`T7F_JiT;`k?4YxyT~o!GQ&g5s@MO2?n> z9V6SJ>cTQC1qBi~3$zA`1XAG^b=v>|l$Z9oMU$5RMS-H&M*~ICzNLL?TGXA{i)g7N z?&Hktw==W5vvYiW_Mc~?t!Ol)z~?9Dep&nG{b-Je`_Eju-H4T9jd&?e6pL6sJJIMX z^-0-pCma2x{zj^ll6t@%XrxQ&#$aiXD3q)X(abt24WCvl!wTM2tRPkAv&&j(1S}yd z43;n*0X+wL#EOC*1x6k$qhN_yaj?XxZxjsX{r@~i0(?Ko^&96})70&-rZCR8-FmB8 zvH29aMLy%dCwI?8sgY4Eof>nxHDqP(>ZO=9Ot)II)(BYRR*o809vHZKj;aS4DiSP`F&3b-#|hUK#&2p2_{Mfgfae3;KBHA5Wi9nhosM<%A}7MaNO)cVdF(3L&)=dIyf;b2`|H#&>Bu{ zD~o>+{7d)<&Uy)9H@_3w_3Tj;UqN^kps0BPj)N?Gc4d~@+dTX!^g#hL+Lq1PO@l`* z@OQ(X?KC%yMOCPK_Y2*wH|Zn7E^OLafxD46UVR;Op!l4&U3b|b)O0V0^T(y!PA_}V6)(H`~Zfc6VqU2{-AFu+`9k_ z(|`EvJ|JucZ-C5t1mUZ(R;Rtie}R9Q{QIsJu!Nu9aB0)}x{!p%s3S;y8&^%8z5W(@ zyo_)KXKD4O%QRH4q8j#2?6eHS&|%kiK|sCy228E?U9>!e4DQ z=jt_igbXWeb8{p`PVeoIS0pCRl?jdTFVhFZSQ|oHpf}k9-#fTLuJXr&yT@|Kl4bKf zlolk3-l%R_Sz%-U&~Z{QVMtn`4ZMM}jNG%rh2oiq&kw*zG2o3Yfh>G=mo^;Xw_CLu zWx{9C*-njJLI-<1ZjLVu@6XG~0f$zx;WC+wi6jXH{_ElQh{Y$fIr0xamo>?s`AYWC ziBq@yZm_E@lO^pfrTK}jxS^XTiGtr%buHZ0ehi&@RRQ#UsIL>ETv3`IE-I^J-mv@& zDtq6J@PB6ux34Y27=Ew7<3`-jGI>7&QgqX|rRvbPmo=g^jRT6)*~X7`H8;AfvgNL3 z1r`+c-v7lmyx7fY88--VA9l61_`0&BttcyGMV+0~yZczr zkBO38?nnHmW6#_kVB5PQD>3|BH$4+9Rat{+n|q8 z3Lt!ha2>(yK^`T{LWQO{HU7f*EXc)z3@!rLH0sTo7chfVTpfFb|9t#VzL-Tnf;tQoV>jyY_} b(L@!tePS#*Mj~p0BuGe2YKiHjnM(f;{;6|D delta 2897 zcmai0O>7&-72cU$E|<$6Q55yVABmJL$)Qu%wj3jF?8Ir})P)lzwFJvC9fw|NR|F;g zb#`T2F;&%;P|+>mG@hhrksy!)0fAGaEg+<~qPYa<$t{W^1r|NE$R&sN&>o7Qsr%ln zMN+<0gg(A`^UeF4nK%6B#9t@EwQyLM;P3js&lSJgz?x(REIOZ9mGeo^=w=W! zK`RO46pTY=7{*~>q(L(Xnuys2nl5V)#zQ8Z;(l_7`1mn0$V+62e8T@m)`m4xv9vkG z9554WNKNdSEOm2;TsLD_87dXC(Yr zfzN|a;nF7&9^)JOz5~ZmJb~~uKu-1?JPWexD;qObd6$KM>34=PqFvFvxTEl>8UA7L zcY9kE$WfPm{gA7aOI7PGVK2AH8Ga{p_T(uT1I1_8%O!^$!I9#{Fo8^@yMd~8wSenw z&%;@q5j8r__k@oIM{qm}kn83%;Ulw2T%jtweSAC`KlxkI1wjIXyB6knMF@%!{ zXAoXOz-qYRhxa{4BhEIPxMqumnmG>ssBYng!FEgJa`(dwvmTpfMMt8- zarI6`osKmf^onY(3EfGdaIEcO8xSN{&^rUA0^* z7A@xbOlxMb$fnT1evg~tx08p4glE5P&Ef@OBA8Cwe@WgZGkhU6NWS2=Qd#mR{!!}a z%JXliPM{&Ll4be4RK2H2j=uC9k?_-`8$naq2sPxUv`IG!kuFHpcdtrKGOwAw1_$U2 z)dh+DPz2@g45~UQ0@5I$jfT7t-ISK)b!nZf(>d7;nEIO5kWWdNVD)Li3b+ zN-*`gNt?6)R5;{e{{6vEGnMPh*^-^D)|{-7y<(J0CgP%%ovX3z^<_RY^jc=?|8Rag zv`+T()0q?Fcp!3wt>Kq<2wigJuI!zbENHz>CeDp$o|F9J%;bt#mhkSkI*smaHUn%| z6|vaRuAy_ji5eYxXaU+eop`zU=6Ag7A7Tp3E^nahIK_3u1G zTSyeS2*~hX?42ji@WjYza*7)xJx6XJU9}w(4YXYE{1kcSk>xmikAFDw_)47ZZtC6( zC7L>h?J6_1T3K|>j%N#Zg!vHs2)O-BLBR4dQIemd^d16Mx+C;74#i$v28mCPJ~4_y zE+agJr?V<-48N00Kqj}8-!N5_U$?CebEPmT?x@FiyAkOkn7yd;{X zm(?v^A4`pgaUP#hH{`ug-@zXojLoC|GD5qs53Bo|v5{DsglLpRiB4m3bTXEW_x%q$ C^M;lH diff --git a/gestao_raul/Lib/site-packages/pip/_internal/cli/__pycache__/progress_bars.cpython-310.pyc b/gestao_raul/Lib/site-packages/pip/_internal/cli/__pycache__/progress_bars.cpython-310.pyc index a7bed679ee1ff1304e7941d065612f71c07ad1a9..ba65e2b79f33ac3971b1b7382e92018145ce9b7c 100644 GIT binary patch delta 1259 zcmZux&2Jk;6rVR=-fY$;X%agQ2_&LLEKpM+K1vl5@llD2DuP6CSP2>983)7KYi8F9 zi8eBjTziQ2f&`TkZipjCE?j!&hO`nl4*Uf@(3bLMt)?I9NbfiE-uunWoA=)CKb0G^ zm8e{H367sOe%Ze69#t0W5(rU5K}dq}3<01{!=v@N$(|E9V9hK%YMvYQW`dbQ<>72^ zE|@FUBCPgmK@EszTIl&Y*#<4`+@W<6)Ri1tRY@->N0;=Ib)qIT*YgS#bQtm+<*La; z9xR@6AJ2P9Do>S>xP)6PKf)tN);m%?p{5RH@RWir;!hvl{M(z{Y$f_?x7SUy`Snlu z9YAE?vro^?U=ngU94K_>EYyA9F|%kha~7%=R$J*Tv@M+n3+TBK{G~ zXE*qpqx0x$WBQ6==MsuUX`{qnBYcaAO)!}#Oc9KaD{;v8sgnCFg~2q=Ji&Jyz`jUn z%2Iwnfu!VJ^2y@9Oj$xxc>u2yWQ${VLgMq5^CdN}A$xR>E{^#L!EN$m#IKeV!N)rr zd8s`#M)wo5f{~b-jf*1O8+L62-a?6=LrBOMa7-1X^*XKElcjH{fiHe3vE_MuNJr|vD7=P|l)4)5%vDloN0$#*b zUMYypfr*L}-$Gl=5f-2Vdw$cjc20fG&swIj8b<9_7?0K(4{tQK2HPk&{#f@#&bs*e zGpLzo5prR4OYPbz)`?#l*Sje7E0%K_U*H++ie@4FCfrw zs)BO|9B`=v9!!CYYX|r(a}nJ?gQ;e&Si1N!Dk(MymeaGj$6}Kd6uri_tev5~R@kvs z6u(BdNWwAuBD*5K`*7Z#MDKTN&M-~p4YcCBCpyD^JBgw&&P#)qNxH4j*k&$;~; z%q6Qo@T#mVpIO;NV{CsAPH74wt^lWI9aaBnW1nX(WbetHrG-Iv&}d?AwduFQMmy{_ z;z76H*CsY+vftzi%w&H_f7iTf_ncl_obNQ)ycn!fJ4lKh3>XkjH lQpzOIyOhy8lGEFsaBtDG)*{j3arZW@$-C6*mPIT7{ST9F7&ZU^ delta 555 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 literal 13091 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 z zqFAySn`o7Tt_J7G4YKHSt$*!u;;v!W@iV7JtPNk83>&bYaW|6LG5egmci=j_yDu#C z6x)0D&T8#b_G_z%N8++121}dZ{Hln~0^*1Ych^IQd?>@KXePb8b;!QTR~*p;*E_&i zX6@7I#RRtg&cJ^udJ;i?8IV~-NV|maf4J^!xb@4zONP^P=Bo-a43ep|mTm_^WrzD0 z{0<@HGCpt((OL5AaQw1@2R(9_rbXB6B4aXw3o}42x}QhwBl(Y*6aGQcw-G5|V_A;j zL;e$$=rqGW)8{A>v}2~xl_lIe)g}Lh8hwwFZ3s4%*?QSAIq5O|8(|soz2P+M+M(kQ zj6zE7=0~lgJ5cG4gTW7->cxeHGmB@=$lt@b3%GfQ=iv4z7JE54*j$1^6Z_TvX!A0y zpRGtixr3BUQbJB*27z3q9O1HDp@hxL-=!QmMPz}J1C;y)B_<{0>y&>-$#*Fkr{w#T z_>}aZ#U8TbRCXN+oa{>UXUG(keF))As$gP8FtDFcd>V}JBRE^L__TH#b^l`)w4b8I zPc*CaW9?DROu^VmjUV>+GdZrE_S3rkv>%&8+K+}y+7GpI=?B`==C+wk)4Hv_jFo^% z8yqL6bx@o<9S?DGTDkmrB-7_OUYO+R&L5PZzOYP@0wytH_7U3~NdY2+MGX6*6Eogu zPzTZvQlB(KkwH%2O(q8If+}DCAm~@dw$%hadnA*Cca_gloE>Dr7qcZP)5(2zH_GZe zmxN@A+U*%^Cpx!5A{Mpm*-!2nY(w6)Ylu^1M3@pAX&rrrRN7{cNEqXi`v)76Jr+c> z+v%8SHrY02)^va`GyZK~U|q!Pp}dSiIm(w_Y}sb%LF~YaCmnB=eL881%aN%gk;o*W zsAAuq`nrIR;EV;+%l7ktPC-E&D8g_@g)-G}QU!>WqP-ZpvTtx`>VpT|BoM4WRkp#r z(;%~nnF_aWyJwLyJ}}{K#{<673=!?IPnVrn9HvhW3@!*ZFiwU2L*)Eo)^RTuE^PwL zHVjM~_ae7x`0^+Jn4(7A4my>2V#-5!Xoy&!l&Bo(1Pg1M`Mb$QPh# y(apXCux;sG!eycK-AVVTB{R)Ws->KPR=5PGk4}xhX53HOnema8A3r#G;C}&!?Iyec diff --git a/gestao_raul/Lib/site-packages/pip/_internal/cli/__pycache__/spinners.cpython-310.pyc b/gestao_raul/Lib/site-packages/pip/_internal/cli/__pycache__/spinners.cpython-310.pyc index 949e974e02d07bb43b712063509ab88232bd01e5..ae8d01af223de2e02866fb7b569b9292ea0b5381 100644 GIT binary patch delta 57 zcmaE)c1MjnpO=@50SFfPt=`D}mr*{-*(xTqIJKxaraU#LBtOO_Ke;qFHLs*NCMd|s L)p@fnlc^v88+j7x delta 63 zcmcbk_DGF8pO=@50SKypgl^>i%cz>*Y!wq)oLW>IQ=Xbrk{{!epIn-onpaXBlb%{! Rl9(S~lvtXxS)IvL5CE>r7DNC5 diff --git a/gestao_raul/Lib/site-packages/pip/_internal/cli/__pycache__/status_codes.cpython-310.pyc b/gestao_raul/Lib/site-packages/pip/_internal/cli/__pycache__/status_codes.cpython-310.pyc index 03bf54e8a65db6be94609387dfec4e53e5456229..ba537cc18d50484590d594ace018ab0e99bb8d9e 100644 GIT binary patch delta 33 ncmcc5bd!lYpO=@50SFfPt)9qzfiZ649ZA-pASYMnNsRFTp1TRG delta 39 tcmcb~bf1YkpO=@50SKypgihqXz?d@ejwE+_YH>+oetc14Y0ku7@c{BL4g~-J diff --git a/gestao_raul/Lib/site-packages/pip/_internal/cli/autocompletion.py b/gestao_raul/Lib/site-packages/pip/_internal/cli/autocompletion.py index 226fe84..f3f70ac 100644 --- a/gestao_raul/Lib/site-packages/pip/_internal/cli/autocompletion.py +++ b/gestao_raul/Lib/site-packages/pip/_internal/cli/autocompletion.py @@ -17,6 +17,10 @@ def autocomplete() -> None: # Don't complete if user hasn't sourced bash_completion file. if "PIP_AUTO_COMPLETE" not in os.environ: return + # Don't complete if autocompletion environment variables + # are not present + if not os.environ.get("COMP_WORDS") or not os.environ.get("COMP_CWORD"): + return cwords = os.environ["COMP_WORDS"].split()[1:] cword = int(os.environ["COMP_CWORD"]) try: @@ -71,8 +75,9 @@ def autocomplete() -> None: 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)) + options += [ + (opt_str, opt.nargs) for opt_str in opt._long_opts + opt._short_opts + ] # filter out previously specified options from available options prev_opts = [x.split("=")[0] for x in cwords[1 : cword - 1]] diff --git a/gestao_raul/Lib/site-packages/pip/_internal/cli/base_command.py b/gestao_raul/Lib/site-packages/pip/_internal/cli/base_command.py index 5bd7e67..362f84b 100644 --- a/gestao_raul/Lib/site-packages/pip/_internal/cli/base_command.py +++ b/gestao_raul/Lib/site-packages/pip/_internal/cli/base_command.py @@ -1,6 +1,5 @@ """Base Command class, and related routines""" -import functools import logging import logging.config import optparse @@ -8,8 +7,9 @@ import os import sys import traceback from optparse import Values -from typing import Any, Callable, List, Optional, Tuple +from typing import List, Optional, Tuple +from pip._vendor.rich import reconfigure from pip._vendor.rich import traceback as rich_traceback from pip._internal.cli import cmdoptions @@ -28,8 +28,8 @@ from pip._internal.exceptions import ( InstallationError, NetworkConnectionError, PreviousBuildDirError, - UninstallationError, ) +from pip._internal.utils.deprecation import deprecated 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 @@ -91,6 +91,63 @@ class Command(CommandContextMixIn): def run(self, options: Values, args: List[str]) -> int: raise NotImplementedError + def _run_wrapper(self, level_number: int, options: Values, args: List[str]) -> int: + def _inner_run() -> int: + try: + return self.run(options, args) + finally: + self.handle_pip_version_check(options) + + if options.debug_mode: + rich_traceback.install(show_locals=True) + return _inner_run() + + try: + status = _inner_run() + assert isinstance(status, int) + return status + except DiagnosticPipError as exc: + logger.error("%s", exc, extra={"rich": True}) + logger.debug("Exception information:", exc_info=True) + + return ERROR + except PreviousBuildDirError as exc: + logger.critical(str(exc)) + logger.debug("Exception information:", exc_info=True) + + return PREVIOUS_BUILD_DIR_ERROR + except ( + InstallationError, + 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 + def parse_args(self, args: List[str]) -> Tuple[Values, List[str]]: # factored out for testability return self.parser.parse_args(args) @@ -116,12 +173,33 @@ class Command(CommandContextMixIn): # Set verbosity so that it can be used elsewhere. self.verbosity = options.verbose - options.quiet + reconfigure(no_color=options.no_color) level_number = setup_logging( verbosity=self.verbosity, no_color=options.no_color, user_log_file=options.log, ) + always_enabled_features = set(options.features_enabled) & set( + cmdoptions.ALWAYS_ENABLED_FEATURES + ) + if always_enabled_features: + logger.warning( + "The following features are always enabled: %s. ", + ", ".join(sorted(always_enabled_features)), + ) + + # Make sure that the --python argument isn't specified after the + # subcommand. We can tell, because if --python was specified, + # we should only reach this point if we're running in the created + # subprocess, which has the _PIP_RUNNING_IN_SUBPROCESS environment + # variable set. + if options.python and "_PIP_RUNNING_IN_SUBPROCESS" not in os.environ: + logger.critical( + "The --python option must be placed before the pip subcommand name" + ) + sys.exit(ERROR) + # 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. @@ -151,66 +229,12 @@ class Command(CommandContextMixIn): ) options.cache_dir = None - 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 DiagnosticPipError as exc: - logger.error("[present-rich] %s", exc) - logger.debug("Exception information:", exc_info=True) + if options.no_python_version_warning: + deprecated( + reason="--no-python-version-warning is deprecated.", + replacement="to remove the flag as it's a no-op", + gone_in="25.1", + issue=13154, + ) - return ERROR - 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 - - try: - if not options.debug_mode: - run = intercepts_unhandled_exc(self.run) - else: - run = self.run - rich_traceback.install(show_locals=True) - return run(options, args) - finally: - self.handle_pip_version_check(options) + return self._run_wrapper(level_number, options, args) diff --git a/gestao_raul/Lib/site-packages/pip/_internal/cli/cmdoptions.py b/gestao_raul/Lib/site-packages/pip/_internal/cli/cmdoptions.py index 1f80409..eeb7e65 100644 --- a/gestao_raul/Lib/site-packages/pip/_internal/cli/cmdoptions.py +++ b/gestao_raul/Lib/site-packages/pip/_internal/cli/cmdoptions.py @@ -92,10 +92,10 @@ def check_dist_restriction(options: Values, check_target: bool = False) -> None: ) if check_target: - if dist_restriction_set and not options.target_dir: + if not options.dry_run and dist_restriction_set and not options.target_dir: raise CommandError( "Can not use any platform or abi specific options unless " - "installing via '--target'" + "installing via '--target' or using '--dry-run'" ) @@ -226,9 +226,9 @@ progress_bar: Callable[..., Option] = partial( "--progress-bar", dest="progress_bar", type="choice", - choices=["on", "off"], + choices=["on", "off", "raw"], default="on", - help="Specify whether the progress bar should be used [on, off] (default: on)", + help="Specify whether the progress bar should be used [on, off, raw] (default: on)", ) log: Callable[..., Option] = partial( @@ -252,6 +252,19 @@ no_input: Callable[..., Option] = partial( help="Disable prompting for input.", ) +keyring_provider: Callable[..., Option] = partial( + Option, + "--keyring-provider", + dest="keyring_provider", + choices=["auto", "disabled", "import", "subprocess"], + default="auto", + help=( + "Enable the credential lookup via the keyring library if user input is allowed." + " Specify which mechanism to use [auto, disabled, import, subprocess]." + " (default: %default)" + ), +) + proxy: Callable[..., Option] = partial( Option, "--proxy", @@ -569,10 +582,7 @@ def _handle_python_version( """ version_info, error_msg = _convert_python_version(value) if error_msg is not None: - msg = "invalid --python-version value: {!r}: {}".format( - value, - error_msg, - ) + msg = f"invalid --python-version value: {value!r}: {error_msg}" raise_option_error(parser, option=option, msg=msg) parser.values.python_version = version_info @@ -657,7 +667,10 @@ def prefer_binary() -> Option: dest="prefer_binary", action="store_true", default=False, - help="Prefer older binary packages over newer source packages.", + help=( + "Prefer binary packages over source packages, even if the " + "source packages are newer." + ), ) @@ -770,10 +783,14 @@ def _handle_no_use_pep517( """ raise_option_error(parser, option=option, msg=msg) - # If user doesn't wish to use pep517, we check if setuptools is installed + # If user doesn't wish to use pep517, we check if setuptools and wheel are installed # and raise error if it is not. - if not importlib.util.find_spec("setuptools"): - msg = "It is not possible to use --no-use-pep517 without setuptools installed." + packages = ("setuptools", "wheel") + if not all(importlib.util.find_spec(package) for package in packages): + msg = ( + f"It is not possible to use --no-use-pep517 " + f"without {' and '.join(packages)} installed." + ) raise_option_error(parser, option=option, msg=msg) # Otherwise, --no-use-pep517 was passed via the command-line. @@ -806,16 +823,23 @@ def _handle_config_settings( ) -> None: key, sep, val = value.partition("=") if sep != "=": - parser.error(f"Arguments to {opt_str} must be of the form KEY=VAL") # noqa + parser.error(f"Arguments to {opt_str} must be of the form KEY=VAL") dest = getattr(parser.values, option.dest) if dest is None: dest = {} setattr(parser.values, option.dest, dest) - dest[key] = val + if key in dest: + if isinstance(dest[key], list): + dest[key].append(val) + else: + dest[key] = [dest[key], val] + else: + dest[key] = val config_settings: Callable[..., Option] = partial( Option, + "-C", "--config-settings", dest="config_settings", type=str, @@ -827,17 +851,6 @@ config_settings: Callable[..., Option] = partial( "to pass multiple keys to the backend.", ) -install_options: Callable[..., Option] = partial( - Option, - "--install-option", - dest="install_options", - action="append", - metavar="options", - help="This option is deprecated. Using this option with location-changing " - "options may cause unexpected behavior. " - "Use pip-level options like --user, --prefix, --root, and --target.", -) - build_options: Callable[..., Option] = partial( Option, "--build-option", @@ -890,7 +903,7 @@ root_user_action: Callable[..., Option] = partial( dest="root_user_action", default="warn", choices=["warn", "ignore"], - help="Action if pip is run as a root user. By default, a warning message is shown.", + help="Action if pip is run as a root user [warn, ignore] (default: warn)", ) @@ -905,13 +918,13 @@ def _handle_merge_hash( algo, digest = value.split(":", 1) except ValueError: parser.error( - "Arguments to {} must be a hash name " # noqa + f"Arguments to {opt_str} must be a hash name " "followed by a value, like --hash=sha256:" - "abcde...".format(opt_str) + "abcde..." ) if algo not in STRONG_HASHES: parser.error( - "Allowed hash algorithms for {} are {}.".format( # noqa + "Allowed hash algorithms for {} are {}.".format( opt_str, ", ".join(STRONG_HASHES) ) ) @@ -981,6 +994,12 @@ no_python_version_warning: Callable[..., Option] = partial( ) +# Features that are now always on. A warning is printed if they are used. +ALWAYS_ENABLED_FEATURES = [ + "truststore", # always on since 24.2 + "no-binary-enable-wheel-cache", # always on since 23.1 +] + use_new_feature: Callable[..., Option] = partial( Option, "--use-feature", @@ -990,9 +1009,8 @@ use_new_feature: Callable[..., Option] = partial( default=[], choices=[ "fast-deps", - "truststore", - "no-binary-enable-wheel-cache", - ], + ] + + ALWAYS_ENABLED_FEATURES, help="Enable new functionality, that may be backward incompatible.", ) @@ -1005,6 +1023,7 @@ use_deprecated_feature: Callable[..., Option] = partial( default=[], choices=[ "legacy-resolver", + "legacy-certs", ], help=("Enable deprecated functionality, that will be removed in the future."), ) @@ -1027,6 +1046,7 @@ general_group: Dict[str, Any] = { quiet, log, no_input, + keyring_provider, proxy, retries, timeout, diff --git a/gestao_raul/Lib/site-packages/pip/_internal/cli/index_command.py b/gestao_raul/Lib/site-packages/pip/_internal/cli/index_command.py new file mode 100644 index 0000000..295108e --- /dev/null +++ b/gestao_raul/Lib/site-packages/pip/_internal/cli/index_command.py @@ -0,0 +1,171 @@ +""" +Contains command classes which may interact with an index / the network. + +Unlike its sister module, req_command, this module still uses lazy imports +so commands which don't always hit the network (e.g. list w/o --outdated or +--uptodate) don't need waste time importing PipSession and friends. +""" + +import logging +import os +import sys +from optparse import Values +from typing import TYPE_CHECKING, List, Optional + +from pip._vendor import certifi + +from pip._internal.cli.base_command import Command +from pip._internal.cli.command_context import CommandContextMixIn + +if TYPE_CHECKING: + from ssl import SSLContext + + from pip._internal.network.session import PipSession + +logger = logging.getLogger(__name__) + + +def _create_truststore_ssl_context() -> Optional["SSLContext"]: + if sys.version_info < (3, 10): + logger.debug("Disabling truststore because Python version isn't 3.10+") + return None + + try: + import ssl + except ImportError: + logger.warning("Disabling truststore since ssl support is missing") + return None + + try: + from pip._vendor import truststore + except ImportError: + logger.warning("Disabling truststore because platform isn't supported") + return None + + ctx = truststore.SSLContext(ssl.PROTOCOL_TLS_CLIENT) + ctx.load_verify_locations(certifi.where()) + return ctx + + +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": + from pip._internal.network.session import PipSession + + cache_dir = options.cache_dir + assert not cache_dir or os.path.isabs(cache_dir) + + if "legacy-certs" not in options.deprecated_features_enabled: + ssl_context = _create_truststore_ssl_context() + else: + ssl_context = None + + session = PipSession( + cache=os.path.join(cache_dir, "http-v2") if 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), + ssl_context=ssl_context, + ) + + # 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, + } + session.trust_env = False + session.pip_proxy = options.proxy + + # Determine if we can prompt the user for authentication or not + session.auth.prompting = not options.no_input + session.auth.keyring_provider = options.keyring_provider + + return session + + +def _pip_self_version_check(session: "PipSession", options: Values) -> None: + from pip._internal.self_outdated_check import pip_self_version_check as check + + check(session, options) + + +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. + """ + + def handle_pip_version_check(self, options: Values) -> 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: + return + + try: + # Otherwise, check if we're using the latest version of pip available. + session = self._build_session( + options, + retries=0, + timeout=min(5, options.timeout), + ) + with session: + _pip_self_version_check(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) diff --git a/gestao_raul/Lib/site-packages/pip/_internal/cli/main.py b/gestao_raul/Lib/site-packages/pip/_internal/cli/main.py index 0e31221..563ac79 100644 --- a/gestao_raul/Lib/site-packages/pip/_internal/cli/main.py +++ b/gestao_raul/Lib/site-packages/pip/_internal/cli/main.py @@ -1,9 +1,11 @@ """Primary application entrypoint. """ + import locale import logging import os import sys +import warnings from typing import List, Optional from pip._internal.cli.autocompletion import autocomplete @@ -46,6 +48,14 @@ def main(args: Optional[List[str]] = None) -> int: if args is None: args = sys.argv[1:] + # Suppress the pkg_resources deprecation warning + # Note - we use a module of .*pkg_resources to cover + # the normal case (pip._vendor.pkg_resources) and the + # devendored case (a bare pkg_resources) + warnings.filterwarnings( + action="ignore", category=DeprecationWarning, module=".*pkg_resources" + ) + # Configure our deprecation warnings to be sent through loggers deprecation.install_warning_logger() diff --git a/gestao_raul/Lib/site-packages/pip/_internal/cli/parser.py b/gestao_raul/Lib/site-packages/pip/_internal/cli/parser.py index c762cf2..bc4aca0 100644 --- a/gestao_raul/Lib/site-packages/pip/_internal/cli/parser.py +++ b/gestao_raul/Lib/site-packages/pip/_internal/cli/parser.py @@ -6,7 +6,7 @@ import shutil import sys import textwrap from contextlib import suppress -from typing import Any, Dict, Generator, List, Tuple +from typing import Any, Dict, Generator, List, NoReturn, Optional, Tuple from pip._internal.cli.status_codes import UNKNOWN_ERROR from pip._internal.configuration import Configuration, ConfigurationError @@ -67,7 +67,7 @@ class PrettyHelpFormatter(optparse.IndentedHelpFormatter): msg = "\nUsage: {}\n".format(self.indent_lines(textwrap.dedent(usage), " ")) return msg - def format_description(self, description: str) -> str: + def format_description(self, description: Optional[str]) -> str: # leave full control over description to us if description: if hasattr(self.parser, "main"): @@ -85,7 +85,7 @@ class PrettyHelpFormatter(optparse.IndentedHelpFormatter): else: return "" - def format_epilog(self, epilog: str) -> str: + def format_epilog(self, epilog: Optional[str]) -> str: # leave full control over epilog to us if epilog: return epilog @@ -229,9 +229,9 @@ class ConfigOptionParser(CustomOptionParser): val = strtobool(val) except ValueError: self.error( - "{} is not a valid value for {} option, " # noqa + f"{val} is not a valid value for {key} option, " "please specify a boolean value like yes/no, " - "true/false or 1/0 instead.".format(val, key) + "true/false or 1/0 instead." ) elif option.action == "count": with suppress(ValueError): @@ -240,10 +240,10 @@ class ConfigOptionParser(CustomOptionParser): val = int(val) if not isinstance(val, int) or val < 0: self.error( - "{} is not a valid value for {} option, " # noqa + f"{val} is not a valid value for {key} option, " "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) + "which is equivalent to 1/0." ) elif option.action == "append": val = val.split() @@ -289,6 +289,6 @@ class ConfigOptionParser(CustomOptionParser): defaults[option.dest] = option.check_value(opt_str, default) return optparse.Values(defaults) - def error(self, msg: str) -> None: + def error(self, msg: str) -> NoReturn: self.print_usage(sys.stderr) self.exit(UNKNOWN_ERROR, f"{msg}\n") diff --git a/gestao_raul/Lib/site-packages/pip/_internal/cli/progress_bars.py b/gestao_raul/Lib/site-packages/pip/_internal/cli/progress_bars.py index 0ad1403..3d9dde8 100644 --- a/gestao_raul/Lib/site-packages/pip/_internal/cli/progress_bars.py +++ b/gestao_raul/Lib/site-packages/pip/_internal/cli/progress_bars.py @@ -1,4 +1,5 @@ import functools +import sys from typing import Callable, Generator, Iterable, Iterator, Optional, Tuple from pip._vendor.rich.progress import ( @@ -14,6 +15,7 @@ from pip._vendor.rich.progress import ( TransferSpeedColumn, ) +from pip._internal.cli.spinners import RateLimiter from pip._internal.utils.logging import get_indentation DownloadProgressRenderer = Callable[[Iterable[bytes]], Iterator[bytes]] @@ -23,7 +25,7 @@ def _rich_progress_bar( iterable: Iterable[bytes], *, bar_type: str, - size: int, + size: Optional[int], ) -> Generator[bytes, None, None]: assert bar_type == "on", "This should only be used in the default mode." @@ -47,7 +49,7 @@ def _rich_progress_bar( TimeRemainingColumn(), ) - progress = Progress(*columns, refresh_per_second=30) + progress = Progress(*columns, refresh_per_second=5) task_id = progress.add_task(" " * (get_indentation() + 2), total=total) with progress: for chunk in iterable: @@ -55,6 +57,28 @@ def _rich_progress_bar( progress.update(task_id, advance=len(chunk)) +def _raw_progress_bar( + iterable: Iterable[bytes], + *, + size: Optional[int], +) -> Generator[bytes, None, None]: + def write_progress(current: int, total: int) -> None: + sys.stdout.write(f"Progress {current} of {total}\n") + sys.stdout.flush() + + current = 0 + total = size or 0 + rate_limiter = RateLimiter(0.25) + + write_progress(current, total) + for chunk in iterable: + current += len(chunk) + if rate_limiter.ready() or current == total: + write_progress(current, total) + rate_limiter.reset() + yield chunk + + def get_download_progress_renderer( *, bar_type: str, size: Optional[int] = None ) -> DownloadProgressRenderer: @@ -64,5 +88,7 @@ def get_download_progress_renderer( """ if bar_type == "on": return functools.partial(_rich_progress_bar, bar_type=bar_type, size=size) + elif bar_type == "raw": + return functools.partial(_raw_progress_bar, size=size) else: return iter # no-op, when passed an iterator diff --git a/gestao_raul/Lib/site-packages/pip/_internal/cli/req_command.py b/gestao_raul/Lib/site-packages/pip/_internal/cli/req_command.py index 1044809..92900f9 100644 --- a/gestao_raul/Lib/site-packages/pip/_internal/cli/req_command.py +++ b/gestao_raul/Lib/site-packages/pip/_internal/cli/req_command.py @@ -1,21 +1,19 @@ -"""Contains the Command base classes that depend on PipSession. +"""Contains the RequirementCommand base class. -The classes in this module are in a separate module so the commands not -needing download / PackageFinder capability don't unnecessarily import the +This class is in a separate module so the commands that do not always +need PackageFinder capability don't unnecessarily import the PackageFinder machinery and all its vendored dependencies, etc. """ import logging -import os -import sys from functools import partial from optparse import Values -from typing import TYPE_CHECKING, Any, List, Optional, Tuple +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.cli.index_command import IndexGroupCommand +from pip._internal.cli.index_command import SessionCommandMixin as SessionCommandMixin from pip._internal.exceptions import CommandError, PreviousBuildDirError from pip._internal.index.collector import LinkCollector from pip._internal.index.package_finder import PackageFinder @@ -33,163 +31,15 @@ from pip._internal.req.constructors import ( from pip._internal.req.req_file import parse_requirements from pip._internal.req.req_install import InstallRequirement from pip._internal.resolution.base import BaseResolver -from pip._internal.self_outdated_check import pip_self_version_check from pip._internal.utils.temp_dir import ( TempDirectory, TempDirectoryTypeRegistry, tempdir_kinds, ) -from pip._internal.utils.virtualenv import running_under_virtualenv - -if TYPE_CHECKING: - from ssl import SSLContext logger = logging.getLogger(__name__) -def _create_truststore_ssl_context() -> Optional["SSLContext"]: - if sys.version_info < (3, 10): - raise CommandError("The truststore feature is only available for Python 3.10+") - - try: - import ssl - except ImportError: - logger.warning("Disabling truststore since ssl support is missing") - return None - - try: - import truststore - except ImportError: - raise CommandError( - "To use the truststore feature, 'truststore' must be installed into " - "pip's current environment." - ) - - return truststore.SSLContext(ssl.PROTOCOL_TLS_CLIENT) - - -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, - fallback_to_certifi: bool = False, - ) -> PipSession: - cache_dir = options.cache_dir - assert not cache_dir or os.path.isabs(cache_dir) - - if "truststore" in options.features_enabled: - try: - ssl_context = _create_truststore_ssl_context() - except Exception: - if not fallback_to_certifi: - raise - ssl_context = None - else: - ssl_context = None - - session = PipSession( - cache=os.path.join(cache_dir, "http") if 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), - ssl_context=ssl_context, - ) - - # 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. - """ - - def handle_pip_version_check(self, options: Values) -> 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: - return - - # Otherwise, check if we're using the latest version of pip available. - session = self._build_session( - options, - retries=0, - timeout=min(5, options.timeout), - # This is set to ensure the function does not fail when truststore is - # specified in use-feature but cannot be loaded. This usually raises a - # CommandError and shows a nice user-facing error, but this function is not - # called in that try-except block. - fallback_to_certifi=True, - ) - with session: - pip_self_version_check(session, options) - - KEEPABLE_TEMPDIR_TYPES = [ tempdir_kinds.BUILD_ENV, tempdir_kinds.EPHEM_WHEEL_CACHE, @@ -197,36 +47,6 @@ KEEPABLE_TEMPDIR_TYPES = [ ] -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. @@ -267,7 +87,7 @@ class RequirementCommand(IndexGroupCommand): if "legacy-resolver" in options.deprecated_features_enabled: return "legacy" - return "2020-resolver" + return "resolvelib" @classmethod def make_requirement_preparer( @@ -286,9 +106,10 @@ class RequirementCommand(IndexGroupCommand): """ temp_build_dir_path = temp_build_dir.path assert temp_build_dir_path is not None + legacy_resolver = False resolver_variant = cls.determine_resolver_variant(options) - if resolver_variant == "2020-resolver": + if resolver_variant == "resolvelib": lazy_wheel = "fast-deps" in options.features_enabled if lazy_wheel: logger.warning( @@ -299,6 +120,7 @@ class RequirementCommand(IndexGroupCommand): "production." ) else: + legacy_resolver = True lazy_wheel = False if "fast-deps" in options.features_enabled: logger.warning( @@ -319,6 +141,7 @@ class RequirementCommand(IndexGroupCommand): use_user_site=use_user_site, lazy_wheel=lazy_wheel, verbosity=verbosity, + legacy_resolver=legacy_resolver, ) @classmethod @@ -343,13 +166,12 @@ class RequirementCommand(IndexGroupCommand): install_req_from_req_string, isolated=options.isolated_mode, use_pep517=use_pep517, - config_settings=getattr(options, "config_settings", None), ) 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": + if resolver_variant == "resolvelib": import pip._internal.resolution.resolvelib.resolver return pip._internal.resolution.resolvelib.resolver.Resolver( @@ -410,7 +232,7 @@ class RequirementCommand(IndexGroupCommand): for req in args: req_to_add = install_req_from_line( req, - None, + comes_from=None, isolated=options.isolated_mode, use_pep517=options.use_pep517, user_supplied=True, @@ -438,6 +260,11 @@ class RequirementCommand(IndexGroupCommand): isolated=options.isolated_mode, use_pep517=options.use_pep517, user_supplied=True, + config_settings=( + parsed_req.options.get("config_settings") + if parsed_req.options + else None + ), ) requirements.append(req_to_add) diff --git a/gestao_raul/Lib/site-packages/pip/_internal/commands/__pycache__/__init__.cpython-310.pyc b/gestao_raul/Lib/site-packages/pip/_internal/commands/__pycache__/__init__.cpython-310.pyc index 73d2c2035bd0ff7a097fb5b6e252449d28c20ac9..1dad24f314302b3314af8c1fb3b0dc24a9e5511f 100644 GIT binary patch delta 57 zcmdlixmJ=ppO=@50SFfPt=`Dp&M6=7Y!wq)oLW>IQ=Xbrk{{!epIn-onpaXB6BOj+ L>b!Y7=N~2j^y(8) delta 63 zcmZ20xml7spO=@50SKypgl^<+=TuE~wu%WYPAw{qDNoHQ$&Yc#PcF?(%_}L6Nlz^< RNz9KgN-WLUypi({699t+7OVgO diff --git a/gestao_raul/Lib/site-packages/pip/_internal/commands/__pycache__/cache.cpython-310.pyc b/gestao_raul/Lib/site-packages/pip/_internal/commands/__pycache__/cache.cpython-310.pyc index 45edb41074991b3cda35df0397261c6ac4ae2851..3e016649554c9f097c3dfa3e9b38cdef45cdf650 100644 GIT binary patch delta 2294 zcmZuyPi)&{6!&L4w&Nsj`Y$Qj)_G%Nb+>k9-M@DKVBHwfM#?&YkSSzo>?L7#(tV%X zZowso?gE0tWQhx!luTUEI83TI!vQ1?NSrueA#t7%T)0)B@}ARmRYarj*Z1D{{Jzic z&(Gn+CzDz|l~OtQdz61%e!TaAHro^(*;P!1a2999oVcr+s+%wqkuEt&H)W<=&D0`Y zc6!{jnT}+|>2>?ezDSNc{qBG{KsdY49$X`4<_c%2R^mQqC2VC)FtZl9!5PV?cyit# zq4ajqS+beIhr)y3W)7*hs*cU>G0%2kGhVj6YxQ#3rl2Hl)u~(b3ar|&*A4QwKzf5c zv2PCSfk+$kGt={LF`Kga72EOZ^Ox$SCD*QbY<_O;;^mp(pV-yJ2spAn0Ew*6NiXrI z_km1h07Ig?QPvUA8Y-1y&2k_f?MIc^6p!h^aPUO=dSV>)7ZJt)z7o13?DR*ck>Jz# z87%=~9M%jh_9*xze!1y$Ezu`dtj({=UaTd-lKohlME|8W$#QM7s(_~WGDvYR-cl{F ze~|EFzT_*u;LE<~$1V9Yxs_~ltE!i3X};PfSP#gxlBXx&xR8u)$Q93999upXiYSEA zO2w9JhZT46!Cm!qN*`IQF6zt2CdVfa8^IIx@@}VIDtgs=O&_T{mQ8ioXU4StA!vp5 zb@eXUEru+O^6KflGJt4cIhcvC{w|QHaK; zNs>>JBtcC%MEFf{Qx!#l2Z>Jr?)Zs+i39u}+E8Ox(28e+?^7QgJ_K>1tWtu~DTH1C zXrxzBRuHhrG#$9wk;$&^k{64fXVY33i`u>Wx})&m{op5Un#=}r&#!y8vlH@l7K-q2 zB~%uQ%&rw(o2tQP&v4%a9`-W8vtFJJj;0R`?C4r_xCRge<@D=K9wZ4?)QLI>KB1b& zwTMMpyeIf%jkMv{>7l5P_&mK1euhZ5??a!T%6IBE3m)CC^9I;juo#{vk|82)HiCD1 z$21(h?K^xIeBL|PRDIEseclpZ;J)B2<)LtjTNQnQO?hG~=8MsV#MPKDT;kpvT$TKo zC&9SjI4IzWS{yaPfxl{@%oFa;InWZ8>T$lXM!cjSgO?Mw#v_rZ+tq9YSNl#hv6>A{ z2fER>>ZI@AAp0BYobA?^ZA(AM8kyISr*zt}OoK@uImiqn)m{IK5G+bqD6bT0ty(M7 zIWUDH^NL<5vksqy(o)T-)^3OLvfZQ$bzriHT5w@(M}wB1}S>9}q-d1xp-EL?s%@1vmTOKZ@KD zHMqfd+8Tq~ zYs5y!S1L|J8jJqZ1u*YCmFB?^#({}#2aoMO2$S%0@bBOeq6MRwH=BDwr#u3tDHNDT zL!nyp=y9|O2>6|&NO=^AB$|1OGf1P#VU;?`z<217)bmnA(lBnM0Mf9S4xqr?ike8& zgGw%$({oa8G}Dtw<;2{sjFb_E<;dL_ih7$~35K)BgO9VNtl1A=jPU~857@5gj4ydr zhXG?f&F;H{-@3KRqh MK8+at6lm}N0Lv8Yy8r+H delta 2004 zcmZuy+m91f7@u=yI=4=zmo42=VW|Yr0kROe?t)yhfVis#xtY|}T9~0*nQ7NEQ;0Bi zqwr)Tk(>t;A4oUyVxrN6_~?^~CjJLbjPbz-O*FyyV&p-;?-Z9!<4(@6-}%n%yZpXy z-`kb!w7Z#%DZ$^3zs|SruD@fSS|Yv{=u{$7U`5?`OstG{58*yy7R}n zmwJKMiNg7o7e>u)gEf0TA5-VjPr>%E0HD(QZFLLXzX4>X0XQnFpge(q+C*Pyc3dBB zWqF(ukKtoOSjWHBKi#<<=T9PR1NcN9xncEw+_Z&%Y#gvLvO0_z7~w7cn{oX0C^b;y z)H3O7LQ+A}BW<9&pnJoJQ?VAyu^KC}?y9%dfw?U8jVL{^Vq=+LXd!G`jqQR96S6f? z7NTe|QLim{o*y>9Ad^U{?j1eomy6+3`1g>Voc(E=|FVRbYHn1DKr5T8(p zPHdVZ7PW{8pCVI2|Dk3PepWu^fl{Eq+a>O^Ut!=WRCxm{eHtr7!ukI69o=0B>Kf>=yjTb z$By!!aubC~d~656e*~K2x%{T$DyraylK{8*$^6MB1tb-QNIym{CZU2UY)O3@lVj4W zT3?RoK#FBd?wfi<2Gk`3IZ|SJlPtscDCM-qUWD^bik*QUwqh)MY?3m}-W;xRezK25{Sbd3o1fk&Vb6gF#Ym|i|UHnoJQy`HaL?y~Bm zq*XWG=x@Akp7Db2RnM(%4zK4=AZ@E`sF?ut|}>TzqW@7O9}ELx*I=^K3W5$i-Vh_Z9!S=uV-j>=c5?EcO~_b+5sC8a;gk zbYJs#*6du8K|<1r{FOn7B_J1ZA@F^QWAw(cAAFUW}~lT(7%BZD#&#U$i%Ods$`bGUwVn`<3E;4dtQNM=Mg_epl9(VLv*eG zyAq4~JMN5cClP2looP6A26QcokLKkZKNlGk2EBT;2&fhIJ_`~wVY5Wht8VI6V(STI}Ua>6E e4+dSg=X-~+7ltJOUBbf6LFpnwV+HON<$nP~I*pS6 diff --git a/gestao_raul/Lib/site-packages/pip/_internal/commands/__pycache__/check.cpython-310.pyc b/gestao_raul/Lib/site-packages/pip/_internal/commands/__pycache__/check.cpython-310.pyc index c18de3affb06973024534212e432d8330bc239ee..c7889209ed2cbc1b3b0b7c770c921efbfe83dab2 100644 GIT binary patch delta 1135 zcmY*YPjB2r6rZuj|GnOXO_QcXm7x&Wwpvv^K!pm2Zc$Z%Qq;o5TCkj*$=0d=?2gBY zsBGonegJ|$01XGE3UTKGpMsOchv0^U1m(>pMZx3uH1GHR`n~59_ou#>_j)#h=lh)> zXTO`r-WLA$_}cv)j3}Z;;-m?I5DYM4==mDEaDs#N zdx+Z9d4{ON^hOOfD1L;7?(q-r-ND_)jERu4y{Jq?$g+c&=UK`!F;u(N>0>s163(OP zlW4}mf{9m9nHA-Ho^!$I@gLi6PsTVy+Esl0)=j9Lp#W19C=>@ORRTiQK%<1|RAUA+ zHxbpDwWm{qn$JjJQwvJ6+XcRdKW~4=w~zV|!U7rt6~6%!s6i8@R%;?~r8XGuTCEF3 zsDd=;xpsnt-k?TlaBWoDUG(KfZB}Xpnf8s^sx)~6)TwP@Qe2spRoPV8L=C}cabP8jO)};FI;8r&r%De0Vuqlrd-We%(K8e^owt_nlKsT=-co{Qp|+ z=b0}a13FJ4v6u6-HC6w}<#J`X39KVYTnH}P#|Ug&lah?_2 zktW6g;{}M^m6FM$!!V0d#x)s42R7_?q+rP&_aq|6(>do>qup1xx14i}(YbS;@3W~m zjWcM!Q?K3Vj5C)Pi2D%YugUm>$rlBro*c47tOddYG^YOU-Qyss42@H$R zfZ5o^3LFy?to%b>nnrt{TpgO01PL7d?-h+;Qz7{2%2+P%I8W0kqa$8sJ42`ahK$w* z@hrCJKzmTo>--HayqRz25B-R5q04ijIO$3P`!DV%c4==W!R&K7(87GH-Vn!#M!7uw~o zmh-US5BoHq%^2rbWC%Su6=Z4W%JrovYwpb3X-><8eS|?O)`6MGh4#713h*`TYA&{w GHT7SeiY80| delta 730 zcmY*XOHUL*5bpOpcJ=`h1ytlDS&1YPLJSfwOM)6>OpwcD&1TtdR$ym`?U}_yd*WgF z1Ek{}E+!tl_!B&M_Uil+6DfZeGtRWK9QhtyV(>>;13Y{zq|EyM<5A zmY=RBQ5<0;k@N=Dq!!mOQs}&{8W%X8+D6is!6}k~5)&FvOT2@c;n}zK8B$L5-l*PD z=eXND>h@J9Q@P#1ckKu-t*wBHLNS&oCKAU~l9)-VxMWHwZw^VW{Cy#X^iEkENFSO8 z_6Od!vt;u_703Zt3oJVa$k7C~NkI#iV?!qxd|n8{x6tbwg=eUNj)$c14R;=7D@Bk~ ziH&D`6G$?LCJdv|?5Ju4e4YP~BmQw}ZCZpyrHIym3N3*enb1@w0;sE_CBw5PMu0K> zEN43is@Mc$lyexK+edWIey4X+!TV|A zrl9~O&2nARgJG`cUCs@01?F7n{-Xw1=1%J)h8bC)m)YhuyDi4{r&tv360~n0cnh(+ zfimc;{CV03Eq&9)V(>R`&8`Ss>N%Ct-%L_D9;n9{qHG$#M-hfi8n}TY7LpnI2l`K; Ab^rhX diff --git a/gestao_raul/Lib/site-packages/pip/_internal/commands/__pycache__/completion.cpython-310.pyc b/gestao_raul/Lib/site-packages/pip/_internal/commands/__pycache__/completion.cpython-310.pyc index bb982ffbc466f645e4710bbf25a079d39eebefc9..7cf986cba31bff02a03f8febdc6b829b1139befe 100644 GIT binary patch delta 460 zcmX@0a6^$dpO=@50SFfPtxn&+k=K&R<254#1D666C@1IV7Nn%6Dd+|$6l4}e8|Yf< z#VW(4vN1(24+l$6Qmm>l?=LxX}`{X%pNH8mAtxF#QD6rFq%h~1dQ z>ft(SYvIhyG==DB1(mAejQG^D#GLr#{JfIXijrtu!&n7dTZNqb#FWI+lKiyNykv#g zSZjrnjMO~1W(5Uh1&}OAl|oukey&1VL1IaUjzV%`PL2XdPf2Eeo( delta 274 zcmcbictC+SpO=@50SKypgr+NQY;8K8sw9>rflFa-(h4_NZg81b8+=84` zFu%GQu0}y2CqFqcN1;5wD5Y2-8AKt;6{RMoDCjySL!>bzlJn4Xa4IMir55B=+G}E5T73_@Z zlkam&a;K*jmn7!L7bTYFO#aIq!05Btk7ofRWAWzqyvB@-1(TKecQLw8zQ_NWotuf9 I?SY6T03FUvGynhq diff --git a/gestao_raul/Lib/site-packages/pip/_internal/commands/__pycache__/configuration.cpython-310.pyc b/gestao_raul/Lib/site-packages/pip/_internal/commands/__pycache__/configuration.cpython-310.pyc index 61a13e635e89cd2311fb4021a9a0e79ee4e3dc15..7496d437d7bb05dbc635a5524e41ba213547e1de 100644 GIT binary patch delta 335 zcmWlSzfQtX6vpqlZJ{aPr)*0_vsE|FU5mKJgJpY; z(RK#+6Km?ZMz7cGw8FL2P{csE-B_X(ra!xLsM70P73&gx$<1gw--Zgk%$G$4#5s=q zGW|%U={jFKOR}C8Ter#Jp#T;TaAS^SO{Pm^VhUQO<7tFCIks1BUz@Mfg?SkuW7DQMnJ~{9I3BafEw!g^^r6(U>3Jqd43!1&W#JX}`CYMs{m@+F@5Sd-vQOyPW*nEA z;?yebBoQcp|2Qd~ohC$MU95K^z@z|X5Xd8$=6f&~#?VX(&_WI|lLI`1H<9(w2+=|S zJ$XxNi;uQsVxHC-(Bc=`!MPtE>J{h79zVEFRX6-l?~+OXexUoIVbUW}LqWjA^eT25 zVFRh&W5$a_H))7Ktf1{O_1xQ7i?HoWpD(W?W&FH3l4DiCaarqBI CRa83w diff --git a/gestao_raul/Lib/site-packages/pip/_internal/commands/__pycache__/debug.cpython-310.pyc b/gestao_raul/Lib/site-packages/pip/_internal/commands/__pycache__/debug.cpython-310.pyc index 1114de5d2e9a6db443a917f73f10488893882cb3..d06ef1b4ef82496511c2e4d55d1e5cc9dd2a858a 100644 GIT binary patch delta 2857 zcmZt{TWlOjak^)AW_EVHUa#%7ckT7tvB%DBo(2>WpK$EpJDtp3oP^7e)85)W-dlTS z$Eg|H#EfN;wZxs!af1H1j{veGBslTb{UXF4_W|M;jriaP&>@5b5g|w7-rPf z)z#Hi)%EK4FaCZiiN|{*?1fPzonxo$5~?s!{1_WY%K6Vq%w!XL5}UBQnzD6)kwwWo&3{FH z)SmO!?M5ZAzZg`&_Pq^Qw)qy_%e7-%p##AO5_IGA=nij@3yJI3XXdW*bMh@xRtn4VQqq^$Um+0q=dj&DinBCIs2(TTrcA| z{wQKPj;lEQ1q1;m6{Ai1UfT|)3{&=`P}(Q_*Gi$autkU@{@XYL%KxD}d``i`#NJRp zihw}`3m*^|7K;%9p0#6My{5{LMKb@1+LwK13rSHY|3#v+YZOsGjUY`_Sta^m@4s_8 zl)0e|@^8vX(%@5CKi%%&H?)!R=cPqSkplhRCyvYuF*VmHOa;kRgC*A_n7WPWx+vY3 zwj|Twp*CHNi~u(Lzz;mIP5QBnnm!g4W~TVhwAl+$>LqvGgJ2H81L(nxD7|Tek1np% z8!Mhk;0zLkC+AE@yr8-pzrA3kK^tIHK zcW6jpGNk@wNLI0YH;CWKzp9UtN&ZuPP@NH~uJGUL^W#Emq`Ds4aBO&4EM&W}87Zvp z2hUkEpByg5G0h>9j)v$oLpz8;6fr0)@VAraGk0(k!z&#~v(g)5{G(+5R3@OI(j*9J zldQ=w%;b4bFQulgpU8+F|1EE;Qe6%YI%`6wNEU;rR7ZCX9l}li%k(MoNB-CJ)Y(7|)PM$V*2&Az4%45`V3w>w?yl-kU%U83U2r(Z!iS5A`My=kCsg8dO;_M5)Yp zB9lL8F<*C{tx1vOW@-UGDem?vf^B19Jg7p=4lWJAYl6^r)pOUeS1dX9Kv1puNEg+5 z#HYBF;qV6%X8MP^s0?HIeMtji;fE zG>q<&=i5ileF+7aNw_8CB=K;?sk`-n|2Q+hd&1Yr*w;e7hs^$I1Q=3uur4bYSS%%K zkUW-F2J=_YvpA=bo_R!-p?^UI4@By+*I237mhp8w{zP#<8UE|I5Djim+I^Dvq83Bq zw=j88s$rr(B=1OHkyZ#xFm+E4$*ibWEC;`jX^RrmLb55rSV;B>(?oQbzK`{LAUb_= z;eRx%sBjU7KY-vZOo2DjcjyiZ+(ilE6(t9h;luR}dY7UEIU?maA|S2+;|NR{L_3V+ zHTxc%6V#KQyX@P+GRAfKYq;x+mOdbD4=z_LOB)U5*m27$Uv|9Zs^d?WA9K_7Y5up? zrQESFlg4`BBDb@{tueVEw2dL){Qc~eVHrfdMJm{?w`oVps#kBIb#EfkQXPBKc6^>~ zD}E+EE6N0ffGG34CGR557c4mps|c}y9a241Fw6os2&{3h?T4h3mvSHW9-DV0D^+Ez z;;oCv&i^j|OU@*>KFqg&kM@bmjkDoXClKiYqDUgS-U#5!V);}|jKx84aO2xJ;zv=(%1{)A z8niC~Vh8RcFfYQFaEdg?tJQ=P#NCb_FC9G=x87K3#Q)SaMW%VFdxk9XH@iP771!(Q zWlWR6hDOyXZv=J6FN=(-29V_=g+bEBuNC@sg-4?#I_VWuVFNUUhPbDSD;#+}_Hx`^ z<9AE+eGo178Slk0i0%GASB><`NAKITr~v;m0v%s4@$)|vdb`uapn2I)@>)Kf&lOvZ L&YYg>>uCEgo#|}9 delta 2566 zcmZ7%TWnlM_0HVc``EYF_S(Dgt~Ykp^|f2a3GqitlPalW(h}UXB>^sl_1ZIb*S>ex zoqO%j_^u4KLH&WMnh%husx=Z)iA04|)L-~P>K6}*4|IPh5G#7WBczSO`{q`p5`Kjv5OVfU0q?~5``0P z0x;wAl*oAT3c+RwNdKkH@{A9*=954s6&z%RH3#WTD?f5;tH z^uFm8{SkLWEi7-;FS#W}+g{l}<(^V>(i`(DZbi{4uj-GxZQ~M3&Lin!J9jtcwWDaN}{K~nUTtl$%o~hqBu)R=hXJRT$iK_ z#e*$>+haa!ht06nX*b$UpDDwAFe=_4^Qa>3kxKPt*b!=*sD~+{_z1r}(1jA9a5YpuT8}Nlh*omK|q?i9U_EF++qAJ%l0Lu>I6LK*r!AZ4Ojirf1Y=dhZ z9(t|S*yb$g?C>=f#CB(!wHqP(PAJ|ts*hR!lQDTQj||;F)`PMC7A$@i496+ILw7u; zZng%se*BZP0pD}*1y{vW=D1ik&kzW=C3@y%4CubOI0#v1nhPmL_AP?;2l{3!Sxh zV?tX&_}EduwkIpkfIN_?vrrlloW(;ZiHQ6#e?k1)KEL9E5VD{hX^Yyore4Ke)P*c{ z^$O;j-)>6B`AqdL?Zo&AnkQR6A%zX zyp{X|S`c4PonPAPI(MylaOqM#s0YiA5hq$9^8@~ZyhLWZ$phBdWjugtijDOS_nYCv z3Iqiw!M_ZM&x?;!3y&qwO4sUA6qEtv2|*Uz5M%tnAbG$B!k-lg`4_(lm0b~DdULj4 z*3z2HGgno86DUZSI^$$Tp-gFb1!RHDS`r!9g6K^=;4g`@nJM&laXYiH--Fvn`T>d( zN4RT*iJlP|M^Mj^wrNshOXC+G%F!0#7pd7bBN&ho`aTSduHMGf>YAZ-puIfv^6$byR6M$ltSGD>Nw)D2^n7P1gszRYoOuS zTn-3+3xKe5*OyO(UmCE3*E)BU`PX0>$ohvILmn)hK&I0ukCUhf-IRr@mi#`_+>(4b%lIWJv=^^k zy|uh}#cUk-;~QoW*+6u2f@4W1+oV$uto^MNnA~EDd7hIoD1ri?7u~G$4?QTmI@Jo z*z`IZ8xS5-U7MFhG|z_jaRatMjt`{~)mYNm zetcCt)lgF}hMcTiPPP+qQqfi(e*RM8N9C%xSFRS5xTq&d(JZ8ksd6qkT(AnYp`rf) D6K^+B diff --git a/gestao_raul/Lib/site-packages/pip/_internal/commands/__pycache__/download.cpython-310.pyc b/gestao_raul/Lib/site-packages/pip/_internal/commands/__pycache__/download.cpython-310.pyc index 0235cf2e376190abd933042a0f6a32d53391a77a..4ae4efe2d357a5e7c8227d165549f01745531109 100644 GIT binary patch delta 814 zcmY*WO-xfk5Z--#eSLph3T>e+EfgY1HBo{PV=$tC5{)(n;nKvE%05d=UmtE;P0ThX zVnRG%LiWVLq*ZU;H1Tdcd*IrOoaG`{FFISI(M@*tn{Rf$nVmgOAEt>%h>2jm$-Xb{ z?~xS#uy?j`86%3QSqZz5T*Qs$qHce#zsp&b0XLS5VdS7z+)1=?Zg2@vo01oZ635#1 z<&t}cI~af5!Cy3O3WR^=#a%t_UtXTSz98y))))t}HV;M|=n3&n*Tj*&fp3TvSeBPjH@PA6>&hO zM?#9KgurNpifqi1JIF* zRoe_Gr_;C_$)q}gidQU_szsI&pM$@YPE7phiG1#3{99ih(W&d;_=0X#ujU(8`rV{b}22tC?EC2ui delta 854 zcmZWmO-~a+7@pbPZuhe-v;_(+R!oS6_zj4nu?mSsu#liJX<};ajBA&+3)8JioW?{n z!~+pBC-u@EJsP8bfU|#KjTAs`e1Rer)8_D0)<=h>wG@~PkF_HW4$P~gUCm_n*jnT9BILny?x1X6djw$53S z>O$upgYN;p2T^!OZ5tGHhG?h@c@4u&Q4K+)?MQ9Y0d0$#?r>+M3l_kgRNJPun?|4o z$S!9Y&S3N6i|gPSqmHd zFlwavYhD}kV>A4@fqk!4t)Y@n%9S-t$gI%R`_%^GMnC&yOvLhBA|jUL1dOv;vjC5< zZFA1Fh0rg+VxP_FVG$76xZz_`s(Ac(>=RwMqbzM@qFIjAywZI5db)Sz;pC~V)Jk`%~( z+G*Iwh9YwprbTjCfFwZX5XeoR1ah_EleiT!Zpuvstt!s zu#b@giJ0ttbkwv&e(z5sEQpSsj&eKD9qcdhX#OW`JW?jAcx zwpL;zA#PZWI3gYggb)Yd2LAww1J}86^k3kBs2&SKB6?Kc)MKXltLo}s=YE*)RAJ~L zSYP$O8%~3h&JzCg{YX32!FL(} zKt`Q^z?^$Bc5G?9>^UJLzDLmV~RVxMJjCHUqDR*kW)fLM_`RPzWC3W8geR zEI2|VM6|E*+vpe_DgJuD(Z|{Niuxn=NCw@=q=#qjn1>@u^XP1Y2*<{FZ^$1M!g}yS z<0gb2Br2jz?f_WW(gJK~>^v9`5d#}pAR8cjLvG@QH6yl2NNnQ3so8Lj4)LfhD^_CjmqPVgb{R{1AVPZ%SWVTb+j#Or1o3pvwJcDcuEWOaD>c(e|||`ssJ=Gu(R| z+)Quf2hL^bnk6>nJ#)!ynaj`3%NHLl*G~yasniTZPpsQ3 z3{nat@Dv~GNBFMB!z29*T^LjJCB_ImCc7YA`z`#eylr25VFf;Kuoun3uu#DiWA?Q2 zS@oEtg0=)2hu$0HHKClD@;7^FqMFMV6kJm96hLE)Q!#47j8{4QN0Oo&2eNQ3+il~cP=4dA zPiC`WSuvV0x?gATKA`16W7a$!(#FrLVFCk1(}J^gwU?S%W&l9tf;DzrOubH)`t2L-r? P0~q+Tr=y=U=G?ylR#y+S delta 899 zcmZva&1=*^7{)W1WHOs%w_Cfm^aHhG)wNWl6%i>#YD*Dq5lbtCg(d8ayIYgZIy0da zD+OC99t6vPXFssu&EnC!f`3B1conaL;>npP=)nYjdES|M-)H8X91MJ{l#*i6HPmze z$4Yb8+bfNLjlJ>FEnpCXSdks00Oi__oEQf<*C;B)Zs6wHiM-ek{9NOx7?*+)Fj@vF zyaYkdfoUvqJ zj(D)!?q>FSi_%EGGlyoURWdaKK#ag7Ab`XSECK_Y_yiGW#|jX^)FB0mX<<;Efx5R* zz6&exh^_pKau`06ui%7VRHZV+s7P5yeuBf`jrV0Y|_k& zl4hL?M#Gr1(`ufX8c;!z?NSXkt};-z>yccV^{O$>VD=a|8vRkwCYb9(HWqv^go0RAE?*N JsT4LV@E57*)Bpeg diff --git a/gestao_raul/Lib/site-packages/pip/_internal/commands/__pycache__/hash.cpython-310.pyc b/gestao_raul/Lib/site-packages/pip/_internal/commands/__pycache__/hash.cpython-310.pyc index f1436cf1c45f5d62f4ba20b10406ef5f1783a0c6..daf2dfe54e1a15d82bf2848ddd8142972adda186 100644 GIT binary patch delta 57 zcmaDNa8H0cpO=@50SFfPt=`Dp&MY78Y!wq)oLW>IQ=Xbrk{{!epIn-onpaXB6BOj+ L>b!Y7^I8@F1ZfjQ delta 63 zcmca7@I-(+pO=@50SKypgl^<+XI4#gwu%WYPAw{qDNoHQ$&Yc#PcF?(%_}L6Nlz^< RNz9KgN-WLUypee=3jmZE7M}nB diff --git a/gestao_raul/Lib/site-packages/pip/_internal/commands/__pycache__/help.cpython-310.pyc b/gestao_raul/Lib/site-packages/pip/_internal/commands/__pycache__/help.cpython-310.pyc index 391df0aa54b6f91891156e8cf78d71c8474a0ebf..7a71db2c9f88d9e1013246b2928ee3fd469c30a7 100644 GIT binary patch delta 57 zcmbQsHJyt)pO=@50SFfPt=`Bj%Pb%5Y!wq)oLW>IQ=Xbrk{{!epIn-onpaXB6BOj+ L>b%*P`2r&V(JK-5 delta 63 zcmbQvHJ6J!pO=@50SKypgl^=PWmZjewu%WYPAw{qDNoHQ$&Yc#PcF?(%_}L6Nlz^< RNz9KgN-WLU?9P0F5dd1!6;S{H diff --git a/gestao_raul/Lib/site-packages/pip/_internal/commands/__pycache__/index.cpython-310.pyc b/gestao_raul/Lib/site-packages/pip/_internal/commands/__pycache__/index.cpython-310.pyc index 206157f0aac41f376ced7bf86b0aed409802b20c..d127770be0c8297400319f6b64c131a7e961c5d6 100644 GIT binary patch delta 1187 zcmZva&u<$=6vub`W4-I$_3k>cx11yB_gg2|K1EujMFnaw6PrpGX_;BrQd*}rbFiayiB_14UFKm= ztqtn4Dy}MR(kV8Lr&$fxSRL0@tW0NE12>em=q#JVb4uH^$>#CA(hj|Fge~9&wW!de ztc6=jyYv`a#EVEH+MR$b9Uy%CH7)WY|E3oC#M#f|>FfqPqihFNX}VT=;qExXd~1Zl3PGl@OkEuMwKY-B;uOn2}MMba!@M+1kA86kpG6 zfkE5_gaAt-)Oi59{ZBMAF84+el{aO2ub&R%QHBVI8c(n+z9~hhDgG)Qptd+LR;B*c zSb66~xU9%M`IqT^PI@WfRX8;d@L{(!QR)SV!WrHKyaYG{n5ZO|SxtOp*2JFqE;} z^17$yoG32x*4x%ZO+l=$(aYkoH8ZyX?VS5>Pkd86WzV8OykQ4oWIr3gars91B;{d_ z!?7%XmGH??#C`knsa&glh{BKS8&`Wn+S{X~C9@LgaB{kJ{S$r?uJN)wB_r-YSwmcM z+WJ|LP4R^@dl9UZWk|{^5PSwugP8ta%vmqxryycWgyjjZ)nkL#S@DB0;U96BU!EC` zBH85$@u$=BCMSEVj*XvS-E88CO0p1AL|kuM&3Cs0*1{5G1BdBOY8aMrjo zywbTOhah~^qn&X&q)CSjll~J|%>hZz$Af`1X$Si3sAd8GGeu^cVR1C3~4OoF_V~`s7*mbYpoJ3!3IKKtO^$)j+t>yxp$Y| zohTARXyZR12c)2stdG9>B-r`~_y-76=!1Q#4}FxPFWz%STub-iv)^;hoOAAc?>r4& z1y0X#Oili_|Gm(8a@Uz6|J*%%be9{{AX==&1y<%JHMvDC6&IP!9qK5pvkG^qt8|HZ z+^0UT(yEFLR^uadMCmdc<#k%;4cg#M+Eh7{jq!0huC&D__#~ZF+GbO{MbETU;IIRH znocWSVF&pPol)9l0iUI_L`$^&x#ZA*(D`#(?8W{aE%p<4FHhUxkp?M3n;d9n#S7id zUN_8T&RWumHf~)^L|-Nzuae($!~~=8n?5fccykq=7sjkk(odt_x`?*eUyq;h&j5`k0SqYXDoF`0rtN&~V0JH`>I9~txK zzrtZfQI&t0z9Et*O~eRxwGcI|mWEcHz%2HNDa0wnX~giR+44>D8XlB?s_t923j?x8 zekO4_Ht%Su4U6Vd!-*ZN+%6AtdxU7I6Ib@F*o9qlqTqceK7(J)B~QKD&_4Lfykrfp zS+Ra0XW&n(G5!sn;Ou{nf#C|c_86Ii&<=9jJ8&gG3X$Cka7swBd_NUoPGEPIzmbSf zUgDvBy;R!XnQqHI*BP%K#U3xqv!p9roNdBMr@gz361~W3*EYNHdc@fJhP;W*SUTBP zF3LSgDm;8fzt$5xO2u*PY9NjwDiWbNWV5SOL|kvFoYl6<2g}+`);5cSS-Ucw;@097j8f-cQi=L&I?Ed zR=t*`tVC~w4?wr02`x@7Dvl{n%_+%`ami0E%}vcKDUL}` uEiOsSk1t9r&DosJqQoX9Taa0x7oV9|l3J9Pn4_1Rlc`sfS~z(D*B1b2)gVv+ diff --git a/gestao_raul/Lib/site-packages/pip/_internal/commands/__pycache__/install.cpython-310.pyc b/gestao_raul/Lib/site-packages/pip/_internal/commands/__pycache__/install.cpython-310.pyc index 30cffbc39e789eb9ffe4f232533b419e44f8f957..8314dbd9ea20c550ef46ad68dd6d4c96ebc1b475 100644 GIT binary patch delta 5967 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 delta 8145 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 diff --git a/gestao_raul/Lib/site-packages/pip/_internal/commands/__pycache__/list.cpython-310.pyc b/gestao_raul/Lib/site-packages/pip/_internal/commands/__pycache__/list.cpython-310.pyc index a04d11424afd374324c3474bbeccf4b6bf9c063c..474880c652f5144939b2a1c8de9f15d534a50a78 100644 GIT binary patch delta 2905 zcmZ`*TWlOx8J;t@y?C!)d%e59t#|FUH+42LQL7fIjqtju8eC)SrU}!8)oRbNz4q+I zXVyuu)?Gv_qKKvtowlKrT-BEdRRWnxd8x_^QYBPWctGtSR8k~f5Kk?L7SZzmv%VxI z%<6pm&-ef5%sKyU=FaSo<^wgq-z&j&YvyN*cPB0f`pDenhhFKZB#Z=+s6;!=%fIPw zRfdcqA~B7x0~Ih+m9&v|)IoE&GGdGn=_!eZXn0eiVHQ8H7#ZeanYd((GIC>#Wp5JW z09bU=2v|f|1S}q+U9_7M*m$~3K9+%=$`+q@>OA9)U(fFon9HhO8UDI)(dubog zIZEcGY`=JkthimzF>aM>Rq;=9M4XV1h&SX+?`>lHXN#qk;vzd*u2ROc#P-gX>+{Uo z`jcEC#3#P4W(J?nfA!RH3+A6X%gjdY)KsmsR$Z7I_W&!t<)0@maVC=_$HbM)*rT{FTQ6}29^(5ijwcnL2FJ8t zfbfYJ3aygkLWG9MmUt`lohZ)(&8HAT2ss45mRChNvF6FeyJx2bXL1(lh2}E zL5z0}kvGIl=PWVB_0FrX^y87ZW`Od2@qA=qz(g~QcRR#;aV`V*p7;yn)!KDVm{kSrC87EZ8z?@#tHakG_nvJC;bp5 zry|aP^!KfI6ORx-#*%LUWC@(=u0J9M`aC2i#`@k4VOrR3UOZc<7AuUeihuNFCU&1; zt5BjvTVG;D=*jmyXD=cvus}pi_kXkZ8b0Paz^9s9kA_kTz*frD2Cv{P<|xOE;+O;+y9dW;aC8;N zRc!xu4=XX#-05SEOP@j$Cw?O!WnfsC+-^xFs;&~R5!p=qhqy`u5OZB0j=?bC2^ZRkaf``~%va4J87`30%92!H$*f^(F;6u}T26}M8~ z7{rJg?&(^o*npO6c%H6WjUqHYZcAA|&x=qx9{UNd@H!fHU|Md!3wTOAmd^J76nNVM zA!|>|y7`-E?zD>QqLm&Q#()`Wo!6Fah1bsR-^-6d{g`++of`BhsvIIdg6PEovQKu) z98I_>Ji~9c)=^wVz@77-Bj6VJTL`@feF(nT?KAIoF2*QC}j_c7e`jU-4Ack9JsDZYdlwX zzN^aB#oUfBF>*%Ov4N~*yjnDKC9}-^$PfMxpTjS*bA?j-Rmub6P-ZxZt=*2@Z_Cb= zSREs4@sRjcrcV!p5$_ZqXAY2vm>5kS>UzMewMN;ra+R`Ga*EI?KR$~yW5Pe0hOaFU z69`ptYc!)f@wqB~JDQn%0$8`?hR6*=>@a>X;D>Q_z5<;4knHw)m5?H}q?X*hQ#?^D Ho`e4dqkyd3 delta 2680 zcmZuyYit}>6`ngU@B881^?KLd^?D!P-89)YiAqHkti(=BTijr35}}bBXR`O&S?}y4 zcV?9mHZqV1Xd!LVOCq%hh>HYDQ3c5T!5<`~O8hCJYAdR0#19Y>5>f^KP!&}z=ZtZk zn9k^abMAM}xpVG0_i=6Mw~LWpI2@4R`NoGQ*B*M{dSsHEzJA}0Ad#p~%ZgEBepbs! zMxBvc``CS(#MloO37Q0pB#VQ^0h*#?G|dz`&H`)%-bO~sNZa34Ia8HZb(*2sE2?on zo%qzW0qi8r0s8X53!Bz$~Y? ze7x5jbXeE1m)Dr>n7tKl4lJ>z&XKfuRo%C76tZgn1As{ep^_m}VklHLRH_&nEl{0~ zK;%00u@UNLKB_W5%qKvDzy>@v#DXl8kw6m$O_)YN6QNNW^Rz0B0gH)Njp!a0lDh$P zY!3}t1~$ISvQe7OU~6l%*^?~-DLgvI9{<*D30$(E}Bz_WnmK+kbP)j5F9o;W(hE6QGBldO)nhK<9 z=g~k=q0K|H_W?N4IvL7CLdjM6lH$k|Qx!S&_pBhq_`PbdQjsr zaCP-2XQsn=5<5ztGad)2uJKv;@M8#b2#+8t|6$vPW@dh1DMK zm`jfLR^m5v|pf~_;vhzX#pgcP+o%XHk6SG9I;@aX0Owq zy)BN9e!bxOdIN_-c+~I>`c4l;9z~}HLP)$jIz2vyu0Hlm(;84_yZWH-nI%Lh@q9W0 z%6lgB1UjA+ze!A!m&Ln@MbZ@IjSq7=NPm21nMUN>N><% zo@kMOisvVW^N%C11Gq}Z?1R!pP^-B=FsNP{yn; zL9=}TlnkXLbnEhoJLG^jBd7;?X7394KG@d5+pC#Rx_CrcYY5@H9BN>Uyu$<wlVHe{GM(5f7Js;CDyhhVpK&H%s&TaRtHR zIgKA!;PBxuA$U{To!1HAj)=qMFHd2)4c|hqY2syP_#f}WEe7``ccprmpAwtpOzb+2 z@FD_c6_(#S<$6wl==z~#+vas2e+8At5N?X`N`>4Ivz5H|0uc8Lvr?RjDXJVJA%Ymd z269OD$sA31Q@m1nZR0$OxcN8+#($20f8xJH_;dsESD_2>-4zt-y+C)(PyN3Szm42M z09T`fPTz)w)kMmR`$i2#+)}RE>cTmXzuB9+9|E^5{xeh8QK}ylm1cZ_#UtI@Pt4bIN5z*&#iArFgxRm&ATtljZ@E#X{eeXN1)9sF)i#G=U;qX7~V z!Dy`%N0+gCT{_G$;R-N0-cdXuzFONylHyOb5=n`TT7is-TebWl+)myeGA2ITy>S+f zL!LpiECLfB)n-E~Zn{2W_vq|V?(=@1K3M-dd)Fwy`*$0Q2VTlafrKR-bxkkrSRpH}?PZ)y$T2tT z<(yo|s@v!FJN;hX$%pf}JKzmEgCT2f!7Dn&kP~jnD?8VUwf|BhDz1?mtIPeF{#UN7C5h5sPFlIE!;fvNMkRNCWrtJA+|O!FfEuS5LM5dwtDn}ZM7uzKmBAWK1HL*9tpz6jEu3ev8DBVBbvJ(jS{pYdbq zp1c;nMpc~`+kIvQ+&5AxbE8)gUN-;E~+eR^(3tdyS+|=6-?HeTW+x86W?!j+BD6|@zeQu zxH!dgdWjI{1KMh@Q-gW&pf=63{Q?&SG^8N|5ahrD3!x`!M12Q6GNMe?K8EVaeeEZJ z8MdpB=dW=;Ek2Wypy#e z#u->X`OSD2((@uS!ZYirhbAWJ0_&P3_=p{wS73$xYL1Tz2W<+Q8jzh}n>IIl@>AXD zwA$1b@nv>CT^_h8a8k&EkZ0ePUT3$`m*GA3b^7qED?*E0>OlJh|L?U#zX$yG5f>fk zJoBt#*5i|2a>sM&=IX?%+v4YlzQjJUUPe@9KU*~=&JA>t&DwpeU?)LiV|EP^d_Jt` zB9vr1cBy2DGP%vx=EO>?9T3`Xx)UA=nz$J>X^MSiSNK`{(H?>{`^&C^#Rf7Z_G0F& zxh!hDCgi-3dA6S!z4{7ARZ`*U&_Ra+=!g$6IsZ3gWFk$mB113a3Mh*}eyjj`q9F8- N5!Z3r5_L$X5M)P;d(o*Zk37%pHq(!Y>9Tw-j;R9}gVYiMZiU1ZB4zanqj+rraqI z@cjh2#~K*+wV>iwKv)(~5~WTAl){yM%zXw6k1pVgpMYCsiiK>Z*x1IIzT`fO(%8T{ zuHo8_m>2Q_%3uSf^1_aUvM6^VxzlI_*HE6#41ygQ70@X2&ZwXQn&jCi^)gEv!zQk? zwfNu4gB4Ul<0nJzCFHP8YEkhTD?EY9ti&vWRiQdXzXk^+`V&-WTzsroVW7Tww~NuD z*Q8&G-&LAd=Qh`RnDjRHu^)Ce7dy?p0Jp>5<}U7qjm{Qn?D_OzY!UKjKgWIp7^XiA zy$;n+^D=-z3-MdB&R&cp=wW;bo~Pf&SKxh`R<2wgm4qAH_qXFZQm`kCm~7nVUCWTY2NEL-3tF){wK) z@O+G%Tg?u_bIu`Oj^EM_dm-`KyT?^=AaU0~K6g}2`cxT(B>h8~k>#BZ2^!Q<3#{>Z zHN3FI8t*v_WY9!SG(m(cSRh41{zs9Ncf`Lhgl9A95NiT99%k|T88&%Kh>8z+_6b@s}QyIIWv1A10BdZebFjry380D z2Z2wz&3e=K*grxRsAnzEFDyq^&eMx_j{a&HpwhprNziD~o{|$>(&@5Ydd1*1vR$uR z-}2faChdk_4{+E(jj%zYdo27Y-`f+AqQBTBi65WJ>F1K$ ue2*0lFL79>H?$nxN)OxDnW+d0oDUsz7@-f+IZcP8sL58W`~rQHF8m9F#zfDAzz9WicM) zdxjJi=PDm%gpp<6kg}|@1WUf57ROkM`}ye59)+d(ILp8r=i|#7%d#Ap^Nd_j3Ik4t zyp$^tH}!nuwX#uTi+rtJ6THqF*6lL6NvFnPLib)heQfEX$%VOeof}qjX}(!$ql>w; zxOnQ!X=hMv?rz38p=Vxpqb*TuSS7*Dwqcnf117N#NeoEAFUFAHi)0dr z>tAbgvF--9{c&U=NgmBU(QX`YKJq_7(#{wDbF&j@rbq(PY+Azg!Fb{j>UM*7dJriv zB%EF#JC0lh-ba2ukWRpB{>Hf-_*ucnp^|e74{)d|@JZnPo+Rbe926Exm~k4x-yTaD zwF+;Tyu@#`U;<{X*>H8JkXSFZnvj(@{e?nMOv4aj2FYP0N1a!+@v;Ax?$cn#*WB;C ztxX=$h)yy@phg@-k_J*CK(>FV2*HchG=EB+zi6G_EpjE&^>+eqDz<+}=?1>1G(xIk zh1VB|g3o1TZSK0#Nm$fdTy|hHvZc%`8^j8&=qz@Vc7qU;f|%&~nipeH@QQ6IyB?R7 z27z88U{USBL$N&#f^`}ELob-ctE8*-1ESDToF%qMH)MxaVBNCRP0|fROax+*>+gCo zRizvDBEUbjrF0{9gr(bx_<*ImdP9X_BO9cv+kusIH)=;WGb~e8wrDrj10jnm9)!3Z zH}BZ7dF9GvH(@7Ma%_MNvZ0%FiFT8qNp22o!RBMb=nd_NY=>aDl$~Out5p2ePHdta zCotc&53OPLR83)fVAv6durX*yp&f^IPwPvT1HP9BVGNiFI|y{ItpS|`-8i&U(B^NE zR!q9?lX>sQyuo%rCjJrpGWqN>@LJStRgo&$7&U;(yX_RUvQq%tItR~ zqFjNB7oZW(Ao-stqh@+hFQfS-=MVa|*&U~XZ#UHSwN|U|5jRw8m{!>^INROwVgZ6L zIj!g{Z26x@KRk&&z_=0Y6UXi6;F5lj93c+|H#BE*FM;oaXd+DHl+GgH(wK8Ae$cra z+e4mnGVzIt=fU(I5f`A@9U0=Qyn$Q!_>yxe-pm%!d=81^^1!(R(9-~U)%i4j=^|nW zc3~p2TvKf2ioZ*2vZDNiuF(r#&js>G(mui0zE(JK5uy$31`|#>TZz5B?Rfx3`&RjS zN1a?ae6o{x7+Pkm8`iU6*H$@i@dh&&I+1gtxxy>f^u@)qozQd5I-hQptK3!YkwbS7 zGtj+WzG1eEnstv%yQCyefZF?gj+ zQ4;0rB_=Dz8cto{~a)pD%61A4Z zWLLxP8s$1KMv!|APD{+)D7R$|322URa}W+UP_j^gq-`NrI{*{6P2Tq?`jwSaM;K0A2%L^JyeNG#a2f#W>BM zBE!_vLoff<)Btz|C~!XdI(-mO=~t?s-d6+kULZ)ngb`n-U+5wFxgMsyyK02~OV#OT zdX)ZCkI_%{IQ@s7pr5Eo`gb*@{Z0K?rtC%;0F9_!ZCg-lQ%vDp@QP8v4Y~b8ya>XJ zE71G^RzD+Mp9PzAgTP_%F~Gmt^)uS_*(&p`sv^^~2vau*Q7mftEYGKibb>!^;(^viCJjhXT9(sx*2bP}F zz(Hal#`-~V;NvpL59ef}O~f_uNP;%e_einyCdw&HQzn+_Yto*^rsCHSlLa4t-y;Wn zrq2)Hgh9^EE4?ehZV+4tZ8^ua9|J$sH|L;ap{^#a8lIRKzV;5t!+noI@CbH8(nHo_ z?H4u?e*$@=?=b`uP{c=|8AZ(+R&z-98WKAdAkC+*WVc4e)C7HF;7&veYL2&o15(N<7hu6fjR@D-?`{2pRort>_ zpBOwkb$&N68$kcUgcBG%zTe&3s7TCUa_)fqUNw*Li~BIKMLoFEaW zGB`za=gq;X9$xb0CEm@+c(~tk(I^`;+ev#+oB%g>@KF!gsD?RHubCC^V}t-;&o--7 zKr(qTmY9x*sCUstAoq587b74E9;>FMt2nd$kl#~%OhpEJ8Lpp_FtVhqVTWZ6G6o<=OGh zk6qmp$EHUUvXD>Ogb7o-}vxqH8=cPYLxu`wNp#ohFA88#xxeMXBydZwvj96 zly24Yje+t2(YUrZ$P4?VJoL22Z06k7n8TC1dU+W11am=mxdnQWC3&2W3~MaK4PIn~ zku`l-TQgXidAE)7D9i8|FM>VG$5;+Zif6{wES6^jU>;}WS*`V`|Wz*3mmF1CeW;lcJqY%UF>rtEA!^%i<4-kC`@Jc z1JToK%|M*Owu4}Wum_O=k%r>CAS}%whG|fTj=Lfw-!{j{UHNPC^(m9X`f!7J^BSy- z(v+T=hc$x5$jKkZe{sTv&lTG%8!Z^o7x-zHN^$Wp)M5t3XHcA$uUZr1|8FX@V8-Gf zlfSZ#e%2*0f1jPL(1;B=K6pH@`BB$&fdi`DbrajQTNHlzxw9WY~EuhS0 z$=h0J?j`oMMQxV^_PWbbcW5Ub(9j6YLoL=$68w@Zy-zxJXs@T3$1-WavQGr$Sef?~`k=nw#@#t7qQ1 zmpDquxcseqWaMBQ)p2y@S#32~Z8bI)uE^13^-*QVO)61w7Ao-wivNkK*Zh9eGiW|9 zf112G_rR&7AB6Vwja${XNYAb{fm8K5X9r{u7a;gK`9f+A$na|Fmyci%FfJw&HEuMA z9*Kg~2x{K;ywCd+cu{^Yy-B_zKT1zcJq>|x5pf0M5BpYmlfS$n7RqwLYk4oA`4S3+ zCggkGC|Qy{@7gjF(Z@0f;+tBiT{k-->Dl9GIDx*#I-~}H#1%0Vr?JsG&$piv0*1JT zYOLPc;zG{mo?LhyeJ}&`EK%87X;vCsJorBGd9*%`Vjf-MRUWLsk?83FN-0s2zsXHh zzYeCdqmpPp{;L@91r(2=DRVewtpxn#Kz&EqS*z8#zfuce*;I~Jb5W;2?X}9C)6fH+ zYX95v2l>K`Wl`e7YY_U$sGcR1I>ZCr0^QOrViJp*6bk5${3Jizg@{+^hptWk;X3pK zH$ngIy7YZFN&n`i=wID5{fptzKN}hAPsSewj@C;upo*y7Xa}`c(-)Zg)bC?e2Xz0z z6OZ{H_s0(*XEM^!12})XWKp~R?lSEdofxB?t{xgpzh#JgK$x*hhz4~mjIGmMs;~)I zk8m8Y5n&5(EW$QmGr|twc!U#xtq8k-ZNyMJEZHXFYcNu(i)!Qof8IR|ara5ol8IW9 z{g#l5Hy|hrKB>qf2RI#J$fc@#556$oF~Jk^D%v(*0z4R5GhnqL?V~lm*Uj#0%H>5V|ssl^8sQGXHC?w(@=tGf59=<>mKY^BEY}v$B%BzlT6=m<;@Aqx6=|J-0&KYMC zp34IMjFZ7lK3Qw7wS+uZcwBy`a7BJxI7cqavqSscfu7BqaBmP5IC&oI-yv2beHCjJ zF%=;d1r^=4^F=YuS<~$_g`5k&Y9?0nvl;G7v#O-H~|I} z3#l6wpRd3Vqfu!xk$|RSCSF8DQkF(WO_eFq^8Cnn7uTX^1GO)-s*tSuw+fY6@CMVr zCty11)5N&ZYSjgfcqo-Vm~_vYZ?ssu&KK}L;hzLyX)c+>SyNAO)}fy69iPn8r;x3{ OWcqKa(~qf<`shtm`N+ee_N)*iJ$q~yHkD9oTD8^Do=E)ZrT|{pQmnRnG#b>6) z7nSD4Cl<#S<>!}d7GbhrVN96p%O=Sh6y)UUJh_m~pHXx3LAG`#M()X;oF-BrhZXUF z2u=_o4 zCdr+iT3nKtA77MMnlm|@&7Ve$TC9!3kvEl0a3ST9KSuP?DLSR}8lGmLRG$(4->n$=*CF$~+)*K(0eK hp|m73r&upHvp9M3be?bl0Y)A$6krr!;bIkI1^@&}Uwi-n diff --git a/gestao_raul/Lib/site-packages/pip/_internal/commands/__pycache__/wheel.cpython-310.pyc b/gestao_raul/Lib/site-packages/pip/_internal/commands/__pycache__/wheel.cpython-310.pyc index 32d7d5393387a8d78d9156e1683812f9a0f507b5..f00c48f59f64e641058049d04d9900216c8890e2 100644 GIT binary patch delta 1300 zcmY*Y&2Jk;6rZCq%fCC2-OA-NSvU@@;@Lh94zjf_y>>>ym1IpcBJ3F_j|vY_vX#a*Owk& zv_s1>2!7w({-JIcPwaX4?c{R*HV~iqx!^);rZUqiR*GZa3}#z%mASEP1@o;^rPNxe zEC8WoP^ODRs4TrneA{OP9}&p^A1#9w#CKiOh>YwPvR zYhuN?m3tb=sDhw@=o(+a&tfW9KI#DnPmNO?nraV#a56~8T8|7NNyiyvb(8quE56!S z6AhzTu5jQft`1X4CN|K{^b{a*4z*?v5}lK##Wm#9TtywO>!*;j{d8YXvS>LxD|xPC z?8rr!@U^~{7`XT(PYq=eMl;Vdm^9N@l3bl6CeJksgQ+38PTnsh7Pp$yY>#IL7q}($ zd-viQZuNj2a&u5T<1jvZHczVJIc|=V&YJ|YmOA}9IYMKhb5bY1-cR3E5<79YjY+PK zla$#IQgqRq>0xn7=85+Q*bN z?seI7l7C((&O2~PY&p-|u_aNEU`d@t+c9NcEyUj^F_UkAIWnNPL$4OlYJ23?Y3wn& zx8Gp2h4P4*Qk9ab>^QqDPdM)U>|2tvTGd^O6QVG{BF-w?bjw%)b)S88LW;C%r$gKR zXtBd+r^=`oG}^n=KbOaAg^V&+CYzP;-(G%nD=)k#ec1)}vV`jr#+|u_)+meh&{`a_ z?kI(YM@+Va-4L%$Y+sSjg^l4QDOK5iyN*V5j9@4x4g*X@Q8Z9+Xn(t!0fr*}n7E?2 ziYQHPLSED+*I`{eoGjgF|G(P#b=f2acNDAgtFL?K&&V zB|dnR&d-AQF7Jx_1xDb*+s;UxX#?y_R lFJ+`}v_gMBpsxTbqGbe~=%9lshhlc8oFItBm$ delta 1765 zcmY*ZO>Epm6rS;Vy??gX*=*Z1*)&d@wxrFb(27c>r5yT0e*z7vs=z9+a&~4nyY+Hzr?17qb#8vMr#(QWcv~RBRM<* zgd@eO2{app2^$L^rIvGhggTgSA5Y)Ghfadw@1--ZEMD^{^A=aB&E3VbZmrv<4)+!t z)Z><0WmeY?f6iRa%>vx3fKa6Hc=q#+KQTf+>LVX-;UEDT_OYMXk^-4aK5ivo$UP}Y z@+4?V54=@{rv^F}k!hakA&6CY7OXiH5lkeK*h~Z|@Txv!@ny&;2WhT>p5}Th-%CJ8 zWx#J3HxN5NDAmJ3(kX&bZVj=kyg-sfAu>skG|6lxF?ybmk6Ob%5b+g10R?~@$%3s& za+~QO1KJKhBkaB)z7xhSqHZbyVEQAzyoG^$wzYf1PXk+RQwnko6sUf#HQFEBLTAyt z#X$45R*8M$XZqv5CIVLO@;$!R!|Z{t_9vd%Oka(QOsdeu*51z74e{OA`KE!0zL{K< z0zJt4I^;YN=bU2SLFTDe$@}5b2D*)5vfq1j3AFVrKhQrY=8!QdvOnz;+Id_l=e9!FLs}B0l5idzcv46YMcBlc65I zjrlBW(ZZWiay9%^J-D%6a@_J#)3MlEnL5^zP0Opxl-lK*Ra>U(AD7F|{AR7o7;G$i z%_L1vKs}RDi!_~vS!ZtBD28mb!s$*#*u@xv+E{z&8|0a#LVJyWzuA(8y~Lb_cI8s%SVsRzBHYT z6rkt1PLyM`V_P*Ujzy%_sU@mc>$cU{A0?Zf*QHUa;X1V1bk0wwBc0QBrz(h(Dx_wo z!=Kc*$LGZ9I}IYr#hj{fZ6*#CI~ZQj%;C3$Q@KG|v%bcT3j49}mUaan34heeXJz5d z#6co!q}N^6ws^JXI-I#SGep2nA@TyL0awamFTKf`xW(8|SklcIO{l8CBo{86J2w{@ zPgdkr2Y-;TeFCC`2UgaM{k#HKz|7K-1k(R(FNwV;O@3Ec>Uo?(~%f>mp zBYbF_#IJ_G8RHjMpA~t&94mrD+?t-~SsKY$R6*Iz*3VZQT_^>eP#I1{)nQ2fy2brPU zHw8*8IW9S9#q%tq^r^N>x;8xxmooCEK%`L`dZ3C|Qn4}6a1pCXp&K|W6%+pfXnoT4 diff --git a/gestao_raul/Lib/site-packages/pip/_internal/commands/cache.py b/gestao_raul/Lib/site-packages/pip/_internal/commands/cache.py index c5f0330..ad65641 100644 --- a/gestao_raul/Lib/site-packages/pip/_internal/commands/cache.py +++ b/gestao_raul/Lib/site-packages/pip/_internal/commands/cache.py @@ -3,11 +3,12 @@ import textwrap from optparse import Values from typing import Any, List -import pip._internal.utils.filesystem as filesystem from pip._internal.cli.base_command import Command from pip._internal.cli.status_codes import ERROR, SUCCESS from pip._internal.exceptions import CommandError, PipError +from pip._internal.utils import filesystem from pip._internal.utils.logging import getLogger +from pip._internal.utils.misc import format_size logger = getLogger(__name__) @@ -37,7 +38,6 @@ class CacheCommand(Command): """ def add_options(self) -> None: - self.cmd_opts.add_option( "--format", action="store", @@ -94,24 +94,30 @@ class CacheCommand(Command): num_http_files = len(self._find_http_files(options)) num_packages = len(self._find_wheels(options, "*")) - http_cache_location = self._cache_dir(options, "http") + http_cache_location = self._cache_dir(options, "http-v2") + old_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) + http_cache_size = filesystem.format_size( + filesystem.directory_size(http_cache_location) + + filesystem.directory_size(old_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 location (pip v23.3+): {http_cache_location} + Package index page cache location (older pips): {old_http_cache_location} Package index page cache size: {http_cache_size} Number of HTTP files: {num_http_files} Locally built wheels location: {wheels_cache_location} Locally built wheels size: {wheels_cache_size} Number of locally built wheels: {package_count} - """ + """ # noqa: E501 ) .format( http_cache_location=http_cache_location, + old_http_cache_location=old_http_cache_location, http_cache_size=http_cache_size, num_http_files=num_http_files, wheels_cache_location=wheels_cache_location, @@ -152,14 +158,8 @@ class CacheCommand(Command): 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))) + if files: + logger.info("\n".join(sorted(files))) def remove_cache_items(self, options: Values, args: List[Any]) -> None: if len(args) > 1: @@ -176,15 +176,17 @@ class CacheCommand(Command): files += self._find_http_files(options) else: # Add the pattern to the log message - no_matching_msg += ' for pattern "{}"'.format(args[0]) + no_matching_msg += f' for pattern "{args[0]}"' if not files: logger.warning(no_matching_msg) + bytes_removed = 0 for filename in files: + bytes_removed += os.stat(filename).st_size os.unlink(filename) logger.verbose("Removed %s", filename) - logger.info("Files removed: %s", len(files)) + logger.info("Files removed: %s (%s)", len(files), format_size(bytes_removed)) def purge_cache(self, options: Values, args: List[Any]) -> None: if args: @@ -196,8 +198,11 @@ class CacheCommand(Command): 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, "*") + old_http_dir = self._cache_dir(options, "http") + new_http_dir = self._cache_dir(options, "http-v2") + return filesystem.find_files(old_http_dir, "*") + filesystem.find_files( + new_http_dir, "*" + ) def _find_wheels(self, options: Values, pattern: str) -> List[str]: wheel_dir = self._cache_dir(options, "wheels") diff --git a/gestao_raul/Lib/site-packages/pip/_internal/commands/check.py b/gestao_raul/Lib/site-packages/pip/_internal/commands/check.py index 3864220..f54a16d 100644 --- a/gestao_raul/Lib/site-packages/pip/_internal/commands/check.py +++ b/gestao_raul/Lib/site-packages/pip/_internal/commands/check.py @@ -4,10 +4,13 @@ from typing import List from pip._internal.cli.base_command import Command from pip._internal.cli.status_codes import ERROR, SUCCESS +from pip._internal.metadata import get_default_environment from pip._internal.operations.check import ( check_package_set, + check_unsupported, create_package_set_from_installed, ) +from pip._internal.utils.compatibility_tags import get_supported from pip._internal.utils.misc import write_output logger = logging.getLogger(__name__) @@ -16,13 +19,19 @@ logger = logging.getLogger(__name__) class CheckCommand(Command): """Verify installed packages have compatible dependencies.""" + ignore_require_venv = True 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) + unsupported = list( + check_unsupported( + get_default_environment().iter_installed_distributions(), + get_supported(), + ) + ) for project_name in missing: version = package_set[project_name].version @@ -45,8 +54,13 @@ class CheckCommand(Command): dep_name, dep_version, ) - - if missing or conflicting or parsing_probs: + for package in unsupported: + write_output( + "%s %s is not supported on this platform", + package.raw_name, + package.version, + ) + if missing or conflicting or parsing_probs or unsupported: return ERROR else: write_output("No broken requirements found.") diff --git a/gestao_raul/Lib/site-packages/pip/_internal/commands/completion.py b/gestao_raul/Lib/site-packages/pip/_internal/commands/completion.py index deaa308..9e89e27 100644 --- a/gestao_raul/Lib/site-packages/pip/_internal/commands/completion.py +++ b/gestao_raul/Lib/site-packages/pip/_internal/commands/completion.py @@ -22,15 +22,19 @@ COMPLETION_SCRIPTS = { 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 )) + #compdef -P pip[0-9.]# + __pip() {{ + compadd $( COMP_WORDS="$words[*]" \\ + COMP_CWORD=$((CURRENT-1)) \\ + PIP_AUTO_COMPLETE=1 $words[1] 2>/dev/null ) }} - compctl -K _pip_completion {prog} + if [[ $zsh_eval_context[-1] == loadautofunc ]]; then + # autoload from fpath, call function directly + __pip "$@" + else + # eval/source/. command, register function for later + compdef __pip -P 'pip[0-9.]#' + fi """, "fish": """ function __fish_complete_pip diff --git a/gestao_raul/Lib/site-packages/pip/_internal/commands/configuration.py b/gestao_raul/Lib/site-packages/pip/_internal/commands/configuration.py index 84b134e..1a1dc6b 100644 --- a/gestao_raul/Lib/site-packages/pip/_internal/commands/configuration.py +++ b/gestao_raul/Lib/site-packages/pip/_internal/commands/configuration.py @@ -242,17 +242,15 @@ class ConfigurationCommand(Command): e.filename = editor raise except subprocess.CalledProcessError as e: - raise PipError( - "Editor Subprocess exited with exit code {}".format(e.returncode) - ) + raise PipError(f"Editor Subprocess exited with exit code {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) + f"Got unexpected number of arguments, expected {n}. " + f'(example: "{get_prog()} config {example}")' + ) raise PipError(msg) if n == 1: diff --git a/gestao_raul/Lib/site-packages/pip/_internal/commands/debug.py b/gestao_raul/Lib/site-packages/pip/_internal/commands/debug.py index 2a3e7d2..567ca96 100644 --- a/gestao_raul/Lib/site-packages/pip/_internal/commands/debug.py +++ b/gestao_raul/Lib/site-packages/pip/_internal/commands/debug.py @@ -1,4 +1,3 @@ -import importlib.resources import locale import logging import os @@ -17,6 +16,7 @@ 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.compat import open_text_resource from pip._internal.utils.logging import indent_log from pip._internal.utils.misc import get_pip_version @@ -35,7 +35,7 @@ def show_sys_implementation() -> None: def create_vendor_txt_map() -> Dict[str, str]: - with importlib.resources.open_text("pip._vendor", "vendor.txt") as f: + with open_text_resource("pip._vendor", "vendor.txt") as f: # Purge non version specifying lines. # Also, remove any space prefix or suffixes (including comments). lines = [ @@ -46,22 +46,29 @@ def create_vendor_txt_map() -> Dict[str, str]: return dict(line.split("==", 1) for line in lines) -def get_module_from_module_name(module_name: str) -> ModuleType: +def get_module_from_module_name(module_name: str) -> Optional[ModuleType]: # Module name can be uppercase in vendor.txt for some reason... module_name = module_name.lower().replace("-", "_") # 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) + try: + __import__(f"pip._vendor.{module_name}", globals(), locals(), level=0) + return getattr(pip._vendor, module_name) + except ImportError: + # We allow 'truststore' to fail to import due + # to being unavailable on Python 3.9 and earlier. + if module_name == "truststore" and sys.version_info < (3, 10): + return None + raise 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: + if module and not version: # Try to find version in debundled module info. assert module.__file__ is not None env = get_environment([os.path.dirname(module.__file__)]) @@ -88,7 +95,7 @@ def show_actual_vendor_versions(vendor_txt_versions: Dict[str, str]) -> None: elif parse_version(actual_version) != parse_version(expected_version): extra_message = ( " (CONFLICT: vendor.txt suggests version should" - " be {})".format(expected_version) + f" be {expected_version})" ) logger.info("%s==%s%s", module_name, actual_version, extra_message) @@ -105,7 +112,7 @@ def show_tags(options: Values) -> None: tag_limit = 10 target_python = make_target_python(options) - tags = target_python.get_tags() + tags = target_python.get_sorted_tags() # Display the target options that were explicitly provided. formatted_target = target_python.format_given() @@ -113,7 +120,7 @@ def show_tags(options: Values) -> None: if formatted_target: suffix = f" (target: {formatted_target})" - msg = "Compatible tags: {}{}".format(len(tags), suffix) + msg = f"Compatible tags: {len(tags)}{suffix}" logger.info(msg) if options.verbose < 1 and len(tags) > tag_limit: @@ -127,17 +134,12 @@ def show_tags(options: Values) -> None: logger.info(str(tag)) if tags_limited: - msg = ( - "...\n[First {tag_limit} tags shown. Pass --verbose to show all.]" - ).format(tag_limit=tag_limit) + msg = f"...\n[First {tag_limit} tags shown. Pass --verbose to show all.]" logger.info(msg) def ca_bundle_info(config: Configuration) -> str: - levels = set() - for key, _ in config.items(): - levels.add(key.split(".")[0]) - + levels = {key.split(".", 1)[0] for key, _ in config.items()} if not levels: return "Not specified" diff --git a/gestao_raul/Lib/site-packages/pip/_internal/commands/download.py b/gestao_raul/Lib/site-packages/pip/_internal/commands/download.py index 4132e08..917bbb9 100644 --- a/gestao_raul/Lib/site-packages/pip/_internal/commands/download.py +++ b/gestao_raul/Lib/site-packages/pip/_internal/commands/download.py @@ -8,10 +8,7 @@ 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.operations.build.build_tracker import get_build_tracker -from pip._internal.req.req_install import ( - LegacySetupPyOptionsCheckMode, - check_legacy_setup_py_options, -) +from pip._internal.req.req_install import check_legacy_setup_py_options from pip._internal.utils.misc import ensure_dir, normalize_path, write_output from pip._internal.utils.temp_dir import TempDirectory @@ -79,7 +76,6 @@ class DownloadCommand(RequirementCommand): @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. @@ -109,9 +105,7 @@ class DownloadCommand(RequirementCommand): ) reqs = self.get_requirements(args, options, finder, session) - check_legacy_setup_py_options( - options, reqs, LegacySetupPyOptionsCheckMode.DOWNLOAD - ) + check_legacy_setup_py_options(options, reqs) preparer = self.make_requirement_preparer( temp_build_dir=directory, @@ -143,6 +137,9 @@ class DownloadCommand(RequirementCommand): assert req.name is not None preparer.save_linked_requirement(req) downloaded.append(req.name) + + preparer.prepare_linked_requirements_more(requirement_set.requirements.values()) + if downloaded: write_output("Successfully downloaded %s", " ".join(downloaded)) diff --git a/gestao_raul/Lib/site-packages/pip/_internal/commands/freeze.py b/gestao_raul/Lib/site-packages/pip/_internal/commands/freeze.py index 5fa6d39..885fdfe 100644 --- a/gestao_raul/Lib/site-packages/pip/_internal/commands/freeze.py +++ b/gestao_raul/Lib/site-packages/pip/_internal/commands/freeze.py @@ -1,6 +1,6 @@ import sys from optparse import Values -from typing import List +from typing import AbstractSet, List from pip._internal.cli import cmdoptions from pip._internal.cli.base_command import Command @@ -8,7 +8,18 @@ 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"} + +def _should_suppress_build_backends() -> bool: + return sys.version_info < (3, 12) + + +def _dev_pkgs() -> AbstractSet[str]: + pkgs = {"pip"} + + if _should_suppress_build_backends(): + pkgs |= {"setuptools", "distribute", "wheel"} + + return pkgs class FreezeCommand(Command): @@ -18,6 +29,7 @@ class FreezeCommand(Command): packages are listed in a case-insensitive sorted order. """ + ignore_require_venv = True usage = """ %prog [options]""" log_streams = ("ext://sys.stderr", "ext://sys.stderr") @@ -61,7 +73,7 @@ class FreezeCommand(Command): action="store_true", help=( "Do not skip these packages in the output:" - " {}".format(", ".join(DEV_PKGS)) + " {}".format(", ".join(_dev_pkgs())) ), ) self.cmd_opts.add_option( @@ -77,7 +89,7 @@ class FreezeCommand(Command): def run(self, options: Values, args: List[str]) -> int: skip = set(stdlib_pkgs) if not options.freeze_all: - skip.update(DEV_PKGS) + skip.update(_dev_pkgs()) if options.excludes: skip.update(options.excludes) diff --git a/gestao_raul/Lib/site-packages/pip/_internal/commands/index.py b/gestao_raul/Lib/site-packages/pip/_internal/commands/index.py index 7267eff..2e2661b 100644 --- a/gestao_raul/Lib/site-packages/pip/_internal/commands/index.py +++ b/gestao_raul/Lib/site-packages/pip/_internal/commands/index.py @@ -1,8 +1,8 @@ import logging from optparse import Values -from typing import Any, Iterable, List, Optional, Union +from typing import Any, Iterable, List, Optional -from pip._vendor.packaging.version import LegacyVersion, Version +from pip._vendor.packaging.version import Version from pip._internal.cli import cmdoptions from pip._internal.cli.req_command import IndexGroupCommand @@ -115,7 +115,7 @@ class IndexCommand(IndexGroupCommand): ignore_requires_python=options.ignore_requires_python, ) - versions: Iterable[Union[LegacyVersion, Version]] = ( + versions: Iterable[Version] = ( candidate.version for candidate in finder.find_all_candidates(query) ) @@ -128,12 +128,12 @@ class IndexCommand(IndexGroupCommand): if not versions: raise DistributionNotFound( - "No matching distribution found for {}".format(query) + f"No matching distribution found for {query}" ) formatted_versions = [str(ver) for ver in sorted(versions, reverse=True)] latest = formatted_versions[0] - write_output("{} ({})".format(query, latest)) + write_output(f"{query} ({latest})") write_output("Available versions: {}".format(", ".join(formatted_versions))) print_dist_installation_info(query, latest) diff --git a/gestao_raul/Lib/site-packages/pip/_internal/commands/inspect.py b/gestao_raul/Lib/site-packages/pip/_internal/commands/inspect.py index 27c8fa3..e810c13 100644 --- a/gestao_raul/Lib/site-packages/pip/_internal/commands/inspect.py +++ b/gestao_raul/Lib/site-packages/pip/_internal/commands/inspect.py @@ -7,7 +7,7 @@ from pip._vendor.rich import print_json from pip import __version__ from pip._internal.cli import cmdoptions -from pip._internal.cli.req_command import Command +from pip._internal.cli.base_command import Command from pip._internal.cli.status_codes import SUCCESS from pip._internal.metadata import BaseDistribution, get_environment from pip._internal.utils.compat import stdlib_pkgs diff --git a/gestao_raul/Lib/site-packages/pip/_internal/commands/install.py b/gestao_raul/Lib/site-packages/pip/_internal/commands/install.py index b20aedd..232a34a 100644 --- a/gestao_raul/Lib/site-packages/pip/_internal/commands/install.py +++ b/gestao_raul/Lib/site-packages/pip/_internal/commands/install.py @@ -5,39 +5,38 @@ import os import shutil import site from optparse import SUPPRESS_HELP, Values -from typing import Iterable, List, Optional +from typing import List, Optional from pip._vendor.packaging.utils import canonicalize_name from pip._vendor.rich import print_json +# Eagerly import self_outdated_check to avoid crashes. Otherwise, +# this module would be imported *after* pip was replaced, resulting +# in crashes if the new self_outdated_check module was incompatible +# with the rest of pip that's already imported, or allowing a +# wheel to execute arbitrary code on install by replacing +# self_outdated_check. +import pip._internal.self_outdated_check # noqa: F401 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.models.installation_report import InstallationReport from pip._internal.operations.build.build_tracker import get_build_tracker 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, - LegacySetupPyOptionsCheckMode, check_legacy_setup_py_options, ) from pip._internal.utils.compat import WINDOWS -from pip._internal.utils.deprecation import ( - LegacyInstallReasonFailedBdistWheel, - deprecated, -) -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 ( @@ -45,6 +44,7 @@ from pip._internal.utils.misc import ( ensure_dir, get_pip_version, protect_pip_from_modification_on_windows, + warn_if_run_as_root, write_output, ) from pip._internal.utils.temp_dir import TempDirectory @@ -52,26 +52,11 @@ from pip._internal.utils.virtualenv import ( running_under_virtualenv, virtualenv_no_global, ) -from pip._internal.wheel_builder import ( - BdistWheelAllowedPredicate, - build, - should_build_for_install_command, -) +from pip._internal.wheel_builder import build, should_build_for_install_command logger = getLogger(__name__) -def get_check_bdist_wheel_allowed( - format_control: FormatControl, -) -> BdistWheelAllowedPredicate: - 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: @@ -156,7 +141,12 @@ class InstallCommand(RequirementCommand): default=None, help=( "Installation prefix where lib, bin and other top-level " - "folders are placed" + "folders are placed. Note that the resulting installation may " + "contain scripts and other resources which reference the " + "Python interpreter of pip, and not that of ``--prefix``. " + "See also the ``--python`` option if the intention is to " + "install packages into another (possibly pip-free) " + "environment." ), ) @@ -218,7 +208,6 @@ class InstallCommand(RequirementCommand): self.cmd_opts.add_option(cmdoptions.override_externally_managed()) self.cmd_opts.add_option(cmdoptions.config_settings()) - self.cmd_opts.add_option(cmdoptions.install_options()) self.cmd_opts.add_option(cmdoptions.global_options()) self.cmd_opts.add_option( @@ -309,8 +298,6 @@ class InstallCommand(RequirementCommand): 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, @@ -361,28 +348,9 @@ class InstallCommand(RequirementCommand): try: reqs = self.get_requirements(args, options, finder, session) - check_legacy_setup_py_options( - options, reqs, LegacySetupPyOptionsCheckMode.INSTALL - ) + check_legacy_setup_py_options(options, reqs) - if "no-binary-enable-wheel-cache" in options.features_enabled: - # TODO: remove format_control from WheelCache when the deprecation cycle - # is over - wheel_cache = WheelCache(options.cache_dir) - else: - if options.format_control.no_binary: - deprecated( - reason=( - "--no-binary currently disables reading from " - "the cache of locally built wheels. In the future " - "--no-binary will not influence the wheel cache." - ), - replacement="to use the --no-cache-dir option", - feature_flag="no-binary-enable-wheel-cache", - issue=11453, - gone_in="23.1", - ) - wheel_cache = WheelCache(options.cache_dir, options.format_control) + wheel_cache = WheelCache(options.cache_dir) # Only when installing is it permitted to use PEP 660. # In other circumstances (pip wheel, pip download) we generate @@ -390,8 +358,6 @@ class InstallCommand(RequirementCommand): 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, @@ -412,6 +378,7 @@ class InstallCommand(RequirementCommand): force_reinstall=options.force_reinstall, upgrade_strategy=upgrade_strategy, use_pep517=options.use_pep517, + py_version_info=options.python_version, ) self.trace_basic_info(finder) @@ -450,14 +417,10 @@ class InstallCommand(RequirementCommand): modifying_pip = pip_req.satisfied_by is None protect_pip_from_modification_on_windows(modifying_pip=modifying_pip) - check_bdist_wheel_allowed = get_check_bdist_wheel_allowed( - finder.format_control - ) - reqs_to_build = [ r for r in requirement_set.requirements.values() - if should_build_for_install_command(r, check_bdist_wheel_allowed) + if should_build_for_install_command(r) ] _, build_failures = build( @@ -468,26 +431,14 @@ class InstallCommand(RequirementCommand): global_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: + if build_failures: raise InstallationError( - "Could not build wheels for {}, which is required to " - "install pyproject.toml-based projects".format( - ", ".join(pep517_build_failure_names) + "Failed to build installable wheels for some " + "pyproject.toml based projects ({})".format( + ", ".join(r.name for r in build_failures) # type: ignore ) ) - # 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 = LegacyInstallReasonFailedBdistWheel - to_install = resolver.get_installation_order(requirement_set) # Check for conflicts in the package set we're installing. @@ -506,7 +457,6 @@ class InstallCommand(RequirementCommand): installed = install_given_reqs( to_install, - install_options, global_options, root=options.root_path, home=target_temp_dir_path, @@ -525,17 +475,21 @@ class InstallCommand(RequirementCommand): ) env = get_environment(lib_locations) + # Display a summary of installed packages, with extra care to + # display a package name as it was requested by the user. 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) + summary = [] + installed_versions = {} + for distribution in env.iter_all_distributions(): + installed_versions[distribution.canonical_name] = distribution.version + for package in installed: + display_name = package.name + version = installed_versions.get(canonicalize_name(display_name), None) + if version: + text = f"{display_name}-{version}" + else: + text = display_name + summary.append(text) if conflicts is not None: self._warn_about_conflicts( @@ -543,7 +497,7 @@ class InstallCommand(RequirementCommand): resolver_variant=self.determine_resolver_variant(options), ) - installed_desc = " ".join(items) + installed_desc = " ".join(summary) if installed_desc: write_output( "Successfully installed %s", @@ -557,7 +511,7 @@ class InstallCommand(RequirementCommand): show_traceback, options.use_user_site, ) - logger.error(message, exc_info=show_traceback) # noqa + logger.error(message, exc_info=show_traceback) return ERROR @@ -651,7 +605,7 @@ class InstallCommand(RequirementCommand): "source of the following dependency conflicts." ) else: - assert resolver_variant == "2020-resolver" + assert resolver_variant == "resolvelib" parts.append( "pip's dependency resolver does not currently take into account " "all the packages that are installed. This behaviour is the " @@ -663,12 +617,8 @@ class InstallCommand(RequirementCommand): version = package_set[project_name][0] for dependency in missing[project_name]: message = ( - "{name} {version} requires {requirement}, " + f"{project_name} {version} requires {dependency[1]}, " "which is not installed." - ).format( - name=project_name, - version=version, - requirement=dependency[1], ) parts.append(message) @@ -684,7 +634,7 @@ class InstallCommand(RequirementCommand): requirement=req, dep_name=dep_name, dep_version=dep_version, - you=("you" if resolver_variant == "2020-resolver" else "you'll"), + you=("you" if resolver_variant == "resolvelib" else "you'll"), ) parts.append(message) @@ -777,45 +727,6 @@ def decide_user_install( 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: diff --git a/gestao_raul/Lib/site-packages/pip/_internal/commands/list.py b/gestao_raul/Lib/site-packages/pip/_internal/commands/list.py index 8e1426d..8494370 100644 --- a/gestao_raul/Lib/site-packages/pip/_internal/commands/list.py +++ b/gestao_raul/Lib/site-packages/pip/_internal/commands/list.py @@ -4,21 +4,20 @@ from optparse import Values from typing import TYPE_CHECKING, Generator, List, Optional, Sequence, Tuple, cast from pip._vendor.packaging.utils import canonicalize_name +from pip._vendor.packaging.version import Version from pip._internal.cli import cmdoptions -from pip._internal.cli.req_command import IndexGroupCommand +from pip._internal.cli.index_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 if TYPE_CHECKING: - from pip._internal.metadata.base import DistributionVersion + from pip._internal.index.package_finder import PackageFinder + from pip._internal.network.session import PipSession class _DistWithLatestInfo(BaseDistribution): """Give the distribution object a couple of extra fields. @@ -27,7 +26,7 @@ if TYPE_CHECKING: makes the rest of the code much cleaner. """ - latest_version: DistributionVersion + latest_version: Version latest_filetype: str _ProcessedDists = Sequence[_DistWithLatestInfo] @@ -103,7 +102,10 @@ class ListCommand(IndexGroupCommand): dest="list_format", default="columns", choices=("columns", "freeze", "json"), - help="Select the output format among: columns (default), freeze, or json", + help=( + "Select the output format among: columns (default), freeze, or json. " + "The 'freeze' format cannot be used with the --outdated option." + ), ) self.cmd_opts.add_option( @@ -132,12 +134,20 @@ class ListCommand(IndexGroupCommand): self.parser.insert_option_group(0, index_opts) self.parser.insert_option_group(0, self.cmd_opts) + def handle_pip_version_check(self, options: Values) -> None: + if options.outdated or options.uptodate: + super().handle_pip_version_check(options) + def _build_package_finder( - self, options: Values, session: PipSession - ) -> PackageFinder: + self, options: Values, session: "PipSession" + ) -> "PackageFinder": """ Create a package finder appropriate to this list command. """ + # Lazy import the heavy index modules as most list invocations won't need 'em. + from pip._internal.index.collector import LinkCollector + from pip._internal.index.package_finder import PackageFinder + link_collector = LinkCollector.create(session, options=options) # Pass allow_yanked=False to ignore yanked versions. @@ -157,7 +167,7 @@ class ListCommand(IndexGroupCommand): if options.outdated and options.list_format == "freeze": raise CommandError( - "List format 'freeze' can not be used with the --outdated option." + "List format 'freeze' cannot be used with the --outdated option." ) cmdoptions.check_list_path_option(options) @@ -166,7 +176,7 @@ class ListCommand(IndexGroupCommand): if options.excludes: skip.update(canonicalize_name(n) for n in options.excludes) - packages: "_ProcessedDists" = [ + packages: _ProcessedDists = [ cast("_DistWithLatestInfo", d) for d in get_environment(options.path).iter_installed_distributions( local_only=options.local, @@ -294,7 +304,7 @@ class ListCommand(IndexGroupCommand): # Create and add a separator. if len(data) > 0: - pkg_strings.insert(1, " ".join(map(lambda x: "-" * x, sizes))) + pkg_strings.insert(1, " ".join("-" * x for x in sizes)) for val in pkg_strings: write_output(val) @@ -326,7 +336,7 @@ def format_for_columns( 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)] + row = [proj.raw_name, proj.raw_version] if running_outdated: row.append(str(proj.latest_version)) diff --git a/gestao_raul/Lib/site-packages/pip/_internal/commands/search.py b/gestao_raul/Lib/site-packages/pip/_internal/commands/search.py index 03ed925..74b8d65 100644 --- a/gestao_raul/Lib/site-packages/pip/_internal/commands/search.py +++ b/gestao_raul/Lib/site-packages/pip/_internal/commands/search.py @@ -5,7 +5,7 @@ import textwrap import xmlrpc.client from collections import OrderedDict from optparse import Values -from typing import TYPE_CHECKING, Dict, List, Optional +from typing import TYPE_CHECKING, Dict, List, Optional, TypedDict from pip._vendor.packaging.version import parse as parse_version @@ -20,7 +20,6 @@ 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 @@ -76,9 +75,8 @@ class SearchCommand(Command, SessionCommandMixin): 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, + message = ( + f"XMLRPC request failed [code: {fault.faultCode}]\n{fault.faultString}" ) raise CommandError(message) assert isinstance(hits, list) @@ -91,7 +89,7 @@ def transform_hits(hits: List[Dict[str, str]]) -> List["TransformedHit"]: packages with the list of versions stored inline. This converts the list from pypi into one we can use. """ - packages: Dict[str, "TransformedHit"] = OrderedDict() + packages: Dict[str, TransformedHit] = OrderedDict() for hit in hits: name = hit["name"] summary = hit["summary"] diff --git a/gestao_raul/Lib/site-packages/pip/_internal/commands/show.py b/gestao_raul/Lib/site-packages/pip/_internal/commands/show.py index 3f10701..b47500c 100644 --- a/gestao_raul/Lib/site-packages/pip/_internal/commands/show.py +++ b/gestao_raul/Lib/site-packages/pip/_internal/commands/show.py @@ -2,6 +2,7 @@ import logging from optparse import Values from typing import Generator, Iterable, Iterator, List, NamedTuple, Optional +from pip._vendor.packaging.requirements import InvalidRequirement from pip._vendor.packaging.utils import canonicalize_name from pip._internal.cli.base_command import Command @@ -65,6 +66,7 @@ class _PackageInfo(NamedTuple): author: str author_email: str license: str + license_expression: str entry_points: List[str] files: Optional[List[str]] @@ -100,8 +102,19 @@ def search_packages_info(query: List[str]) -> Generator[_PackageInfo, None, None 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: + requires = sorted( + # Avoid duplicates in requirements (e.g. due to environment markers). + {req.name for req in dist.iter_dependencies()}, + key=str.lower, + ) + except InvalidRequirement: + requires = sorted(dist.iter_raw_dependencies(), key=str.lower) + + try: + required_by = sorted(_get_requiring_packages(dist), key=str.lower) + except InvalidRequirement: + required_by = ["#N/A"] try: entry_points_text = dist.read_text("entry_points.txt") @@ -117,9 +130,25 @@ def search_packages_info(query: List[str]) -> Generator[_PackageInfo, None, None metadata = dist.metadata + project_urls = metadata.get_all("Project-URL", []) + homepage = metadata.get("Home-page", "") + if not homepage: + # It's common that there is a "homepage" Project-URL, but Home-page + # remains unset (especially as PEP 621 doesn't surface the field). + # + # This logic was taken from PyPI's codebase. + for url in project_urls: + url_label, url = url.split(",", maxsplit=1) + normalized_label = ( + url_label.casefold().replace("-", "").replace("_", "").strip() + ) + if normalized_label == "homepage": + homepage = url.strip() + break + yield _PackageInfo( name=dist.raw_name, - version=str(dist.version), + version=dist.raw_version, location=dist.location or "", editable_project_location=dist.editable_project_location, requires=requires, @@ -128,11 +157,12 @@ def search_packages_info(query: List[str]) -> Generator[_PackageInfo, None, None metadata_version=dist.metadata_version or "", classifiers=metadata.get_all("Classifier", []), summary=metadata.get("Summary", ""), - homepage=metadata.get("Home-page", ""), - project_urls=metadata.get_all("Project-URL", []), + homepage=homepage, + project_urls=project_urls, author=metadata.get("Author", ""), author_email=metadata.get("Author-email", ""), license=metadata.get("License", ""), + license_expression=metadata.get("License-Expression", ""), entry_points=entry_points, files=files, ) @@ -152,13 +182,18 @@ def print_results( if i > 0: write_output("---") + metadata_version_tuple = tuple(map(int, dist.metadata_version.split("."))) + 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) + if metadata_version_tuple >= (2, 4) and dist.license_expression: + write_output("License-Expression: %s", dist.license_expression) + else: + write_output("License: %s", dist.license) write_output("Location: %s", dist.location) if dist.editable_project_location is not None: write_output( diff --git a/gestao_raul/Lib/site-packages/pip/_internal/commands/uninstall.py b/gestao_raul/Lib/site-packages/pip/_internal/commands/uninstall.py index f198fc3..bc0edea 100644 --- a/gestao_raul/Lib/site-packages/pip/_internal/commands/uninstall.py +++ b/gestao_raul/Lib/site-packages/pip/_internal/commands/uninstall.py @@ -6,7 +6,7 @@ from pip._vendor.packaging.utils import canonicalize_name from pip._internal.cli import cmdoptions 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.index_command import SessionCommandMixin from pip._internal.cli.status_codes import SUCCESS from pip._internal.exceptions import InstallationError from pip._internal.req import parse_requirements @@ -17,6 +17,7 @@ from pip._internal.req.constructors import ( from pip._internal.utils.misc import ( check_externally_managed, protect_pip_from_modification_on_windows, + warn_if_run_as_root, ) logger = logging.getLogger(__name__) diff --git a/gestao_raul/Lib/site-packages/pip/_internal/commands/wheel.py b/gestao_raul/Lib/site-packages/pip/_internal/commands/wheel.py index 1afbd56..278719f 100644 --- a/gestao_raul/Lib/site-packages/pip/_internal/commands/wheel.py +++ b/gestao_raul/Lib/site-packages/pip/_internal/commands/wheel.py @@ -12,10 +12,8 @@ from pip._internal.exceptions import CommandError from pip._internal.operations.build.build_tracker import get_build_tracker from pip._internal.req.req_install import ( InstallRequirement, - LegacySetupPyOptionsCheckMode, check_legacy_setup_py_options, ) -from pip._internal.utils.deprecation import deprecated 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 @@ -44,7 +42,6 @@ class WheelCommand(RequirementCommand): %prog [options] ...""" def add_options(self) -> None: - self.cmd_opts.add_option( "-w", "--wheel-dir", @@ -108,7 +105,6 @@ class WheelCommand(RequirementCommand): 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) @@ -122,28 +118,9 @@ class WheelCommand(RequirementCommand): ) reqs = self.get_requirements(args, options, finder, session) - check_legacy_setup_py_options( - options, reqs, LegacySetupPyOptionsCheckMode.WHEEL - ) + check_legacy_setup_py_options(options, reqs) - if "no-binary-enable-wheel-cache" in options.features_enabled: - # TODO: remove format_control from WheelCache when the deprecation cycle - # is over - wheel_cache = WheelCache(options.cache_dir) - else: - if options.format_control.no_binary: - deprecated( - reason=( - "--no-binary currently disables reading from " - "the cache of locally built wheels. In the future " - "--no-binary will not influence the wheel cache." - ), - replacement="to use the --no-cache-dir option", - feature_flag="no-binary-enable-wheel-cache", - issue=11453, - gone_in="23.1", - ) - wheel_cache = WheelCache(options.cache_dir, options.format_control) + wheel_cache = WheelCache(options.cache_dir) preparer = self.make_requirement_preparer( temp_build_dir=directory, @@ -176,6 +153,8 @@ class WheelCommand(RequirementCommand): elif should_build_for_wheel_command(req): reqs_to_build.append(req) + preparer.prepare_linked_requirements_more(requirement_set.requirements.values()) + # build wheels build_successes, build_failures = build( reqs_to_build, diff --git a/gestao_raul/Lib/site-packages/pip/_internal/configuration.py b/gestao_raul/Lib/site-packages/pip/_internal/configuration.py index 8fd46c9..ffeda1d 100644 --- a/gestao_raul/Lib/site-packages/pip/_internal/configuration.py +++ b/gestao_raul/Lib/site-packages/pip/_internal/configuration.py @@ -59,8 +59,8 @@ 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) + f"Perhaps you wanted to use 'global.{name}' instead?" + ) raise ConfigurationError(error_message) return name.split(".", 1) @@ -210,8 +210,15 @@ class Configuration: # Ensure directory exists. ensure_dir(os.path.dirname(fname)) - with open(fname, "w") as f: - parser.write(f) + # Ensure directory's permission(need to be writeable) + try: + with open(fname, "w") as f: + parser.write(f) + except OSError as error: + raise ConfigurationError( + f"An error occurred while writing to the configuration file " + f"{fname}: {error}" + ) # # Private routines @@ -320,33 +327,35 @@ class Configuration: 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. + This should be treated like items of a dictionary. The order + here doesn't affect what gets overridden. That is controlled + by OVERRIDE_ORDER. However this does control the order they are + displayed to the user. It's probably most ergonomic to display + things in the same order as OVERRIDE_ORDER """ # 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, [] - + env_config_file = os.environ.get("PIP_CONFIG_FILE", None) config_files = get_configuration_files() - # at the base we have any global configuration yield kinds.GLOBAL, config_files[kinds.GLOBAL] - # per-user configuration next + # per-user config is not loaded when env_config_file exists should_load_user_config = not self.isolated and not ( - config_file and os.path.exists(config_file) + env_config_file and os.path.exists(env_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 + # virtualenv config yield kinds.SITE, config_files[kinds.SITE] + if env_config_file is not None: + yield kinds.ENV, [env_config_file] + else: + yield kinds.ENV, [] + def get_values_in_config(self, variant: Kind) -> Dict[str, Any]: """Get values present in a config file""" return self._config[variant] diff --git a/gestao_raul/Lib/site-packages/pip/_internal/distributions/__pycache__/__init__.cpython-310.pyc b/gestao_raul/Lib/site-packages/pip/_internal/distributions/__pycache__/__init__.cpython-310.pyc index f56b71f4f72b12cdae0ab25056cabb44dd10c76c..7c78bc58d56313d75d3ae560ed8091f65eeda96f 100644 GIT binary patch delta 57 zcmbQwHj|AzpO=@50SFfPt=`Dp#VDWRY!wq)oLW>IQ=Xbrk{{!epIn-onpaXB6BOj+ L>b!XuV=5y6;=U4Q delta 63 zcmbQqHlK|SVpPp?wu%WYPAw{qDNoHQ$&Yc#PcF?(%_}L6Nlz^< RNz9KgN-WLUyoE895dd!m6~O=i diff --git a/gestao_raul/Lib/site-packages/pip/_internal/distributions/__pycache__/base.cpython-310.pyc b/gestao_raul/Lib/site-packages/pip/_internal/distributions/__pycache__/base.cpython-310.pyc index ad977bfa4b1d874cd3eba9772f8287eb76192631..8a307e5a706f58c84182fe79dffeab4868537f67 100644 GIT binary patch delta 1274 zcmZuxyKmb@7{3#b6eUZFZ0BM3kz4}gp}-L`7fBmiaa|**5~K}~5Dq9xcd{=&lFE^) z;Vc>&phF*k!T+E`0i#2QZXLRJ>(qfj(V$?!M>me)k=JYy33d zi0kz#f$??s+s(h6y~bOU$FLJbP)$6XOPYoyuM}FIMR9Lw7TTU&teJMgvR9@=mJA1* zt=+KVRVY~_!V%?{M3g0YRu%4-mNz5lN2FEx1B-QArM&*}lLxDQ=Y!SGz4h)|?%p4z zDvkoZ_xbgu7R~Dqg28sMDc@I-kY<2U$46zlNj};8`NmLI7Rj(A%EEogKBZn&I?rZ= zC2OFoh-#s$7rGfy6Lr}T4frg22@q%V)64xNHNhagt6*0Bae?fc z@9)uCX;S4lZg4f^JCa9I3ZBMX#C#_<+gwFF-IBaNRvPq>V_TXfbPUHy%KMTBeJwFy zQ%2GRDJb|jQqRZoATQ@wG1^2IC1jMU;ck)9$me5aWVisj6RTv8tfzNepar;PiPS@b zn|+#Be1D*WB=P-y@=vex&c>renq*@~>NMWC8xO`Iq)av*K3rMtWPe*7y9RORvpekm zq(xu+vV4SSD@dnU_3j}!B@=+B5`Kse;Q{v7NN86N56IVtycj9~mv|6~qh!5aJKMA0o?L77dVEJ|4Jitu2Z7d7w1I&6Zk(=%BQ5cuQmh&i zn|*5Pa7@!Y60@+%o5jWX(~I+!xCGjy1j2D%Tt2BS+6NKUe?ziuw#dyKCdQX#=24tM zajaPOBRfy8XTP!)+c;p$F4(tk{x_z@4j?XI=pu?Y{-5Lv`x0$u-`Vfc+3ZidJ+aXN zuP?WP{vdA#(>@-VcqC1_YplWsEoRQ*s&VKL%5*ChhGG0Uw6K00Yx5>9>(l-jNUeSU z*dZF|jkK9Eh#5lWNP>L1gweBejGd;eoPFh-yNYIb(iNx@6s_2*84kMKNq0xk>;?%o zR`$DdaS!yxVQ{;K^{c!SuEZlb3 zmmXCp;))M9<|x5FMqsO4O^8n_n{X}BeH|%x6{=DFSfM&oo*2}4qxvRA2a0EY1>%8+ zO6Or1Jq;&pKb}%17RyU#BM7Y@Yvp8*7Jn}f#+Vw^JSMM@Z!ul6TC7HEtWN9lQz;pn z)TT}qw_htn@g3REEnB;zEEi#v_hWg-qj?^u)6jYM7TLJCMvnG%*~P;p$rv9CaF(dF zf*|5ymIc95`7!QYA0B2*WW(o-=jpJYM)QPC^K3X_Sstc=2{M&Y*zNJ3^$wL!vID!u=18;+x(bdk(2xu{5S=$ z1+ZTJ-Z+nTiZ8}(EA$&T8<8 zaUKL~J#5Hs0B90GTh^%zg0>ojY#^dygfaeuRs6ey3I2t(*3T+gKDH$rht)LNLaw;&SSh#`j!B&aYfglwueY@FR$x@VDi z5lr#`Ltj1VDFh!wA7b9Xo8Zkq>>gb`XhVHeb=6m2RrjaheIw4Is7~y8(>p)dWJTPD z_2Tx;yGW3y-q=rkAdd*v&^saMNp{Qwodfl_Qu^HDb0ON;T-Cp~*7Ndia` zijXkLk;@KA@S{FXt<+u9|EZPY-Z;ZqD(|~b(r%uRgfxT@n(QZS4}qQl delta 403 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 CoHc3y diff --git a/gestao_raul/Lib/site-packages/pip/_internal/distributions/__pycache__/wheel.cpython-310.pyc b/gestao_raul/Lib/site-packages/pip/_internal/distributions/__pycache__/wheel.cpython-310.pyc index ba8e5de575b0ce8f6bcc863cb78554ea03ae8943..3df2fc13649690559021f8126a12a77b02ef12a0 100644 GIT binary patch delta 783 zcmZuvy>HV%6u(c~No7@$UFyw7vuAM z9xm?QHxVGf2}-fRDG>zQm?Si1f|Wi^cNfB(`Tk8*dH~YQYw+5?)cgLOPaW;vP`P0t)b$6kS zi(oB!@F*I~8}S6Bnjf_`2c}jcfdL5uSWwA;NG_cw8WEtt_Sqg5uE}{O=HTozQ2`e` zsK_c*jS;AgJn$hfCpD-UL80En&pX&Ow$?NDnHd1Ife!KD5E&h8CXoH3Gh%>|Cui?IlrmX~XSs^Ew(W|Yf9bD2;4xlx zZGX>#o!=(vgn1SGu`T~IT-9y1IhOe_m3ahF9u48I<}Lk+_PMGUmcGKSUQ)jCRA9j_ z&}L;@b;>4ATWJ0|QlUOz7w|d#hIO&8U4D7D@TMx8N|o;@YG?&DOQ;1~;8?J07Hlia z64kQt?;ASytWstFG3(404S0xQ!W%fGq)G_+PAK_C7&#(5{8};x?XYn2ooPH7D}v08 zlymhneg-rBk}qMdfAGaxIsN#)^gDiW*=}3b|4%~Ub<+&C6S-_Z@XU&=BcJ%Bftlmu G2K@g-TqodZSklsrF#}>d(es?QV=OZSXidM>^hLyDM^+dL=fz; zJuEqi{sZ1b{|ir^7sRvv1tK0y#$OnCAHMG;eBVpR$L{C6TX#Bb64uji2a{7a?`}N0 zA2K8enp7YGqNbWwiA)-uXjXB_8_jfDWiqRT6je*MfZQd>F+Cxes^mo?+n7BheeoqW zn7Zd55(VBv}pme!f_aOTQ-y6WGtJN^gT8CVuPk%T#5zwz%g z(}@$TMyy5jB4TT^ None: super().__init__() self.req = req + @abc.abstractproperty + def build_tracker_id(self) -> Optional[str]: + """A string that uniquely identifies this requirement to the build tracker. + + If None, then this dist has no work to do in the build tracker, and + ``.prepare_distribution_metadata()`` will not be called.""" + raise NotImplementedError() + @abc.abstractmethod def get_metadata_distribution(self) -> BaseDistribution: raise NotImplementedError() @@ -32,7 +46,7 @@ class AbstractDistribution(metaclass=abc.ABCMeta): @abc.abstractmethod def prepare_distribution_metadata( self, - finder: PackageFinder, + finder: "PackageFinder", build_isolation: bool, check_build_deps: bool, ) -> None: diff --git a/gestao_raul/Lib/site-packages/pip/_internal/distributions/installed.py b/gestao_raul/Lib/site-packages/pip/_internal/distributions/installed.py index edb38aa..ab8d53b 100644 --- a/gestao_raul/Lib/site-packages/pip/_internal/distributions/installed.py +++ b/gestao_raul/Lib/site-packages/pip/_internal/distributions/installed.py @@ -1,3 +1,5 @@ +from typing import Optional + from pip._internal.distributions.base import AbstractDistribution from pip._internal.index.package_finder import PackageFinder from pip._internal.metadata import BaseDistribution @@ -10,6 +12,10 @@ class InstalledDistribution(AbstractDistribution): been computed. """ + @property + def build_tracker_id(self) -> Optional[str]: + return None + def get_metadata_distribution(self) -> BaseDistribution: assert self.req.satisfied_by is not None, "not actually installed" return self.req.satisfied_by diff --git a/gestao_raul/Lib/site-packages/pip/_internal/distributions/sdist.py b/gestao_raul/Lib/site-packages/pip/_internal/distributions/sdist.py index 4c25647..28ea5ce 100644 --- a/gestao_raul/Lib/site-packages/pip/_internal/distributions/sdist.py +++ b/gestao_raul/Lib/site-packages/pip/_internal/distributions/sdist.py @@ -1,13 +1,15 @@ import logging -from typing import Iterable, Set, Tuple +from typing import TYPE_CHECKING, Iterable, Optional, 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 +if TYPE_CHECKING: + from pip._internal.index.package_finder import PackageFinder + logger = logging.getLogger(__name__) @@ -18,12 +20,18 @@ class SourceDistribution(AbstractDistribution): generated, either using PEP 517 or using the legacy `setup.py egg_info`. """ + @property + def build_tracker_id(self) -> Optional[str]: + """Identify this requirement uniquely by its link.""" + assert self.req.link + return self.req.link.url_without_fragment + def get_metadata_distribution(self) -> BaseDistribution: return self.req.get_dist() def prepare_distribution_metadata( self, - finder: PackageFinder, + finder: "PackageFinder", build_isolation: bool, check_build_deps: bool, ) -> None: @@ -60,7 +68,7 @@ class SourceDistribution(AbstractDistribution): self._raise_missing_reqs(missing) self.req.prepare_metadata() - def _prepare_build_backend(self, finder: PackageFinder) -> None: + def _prepare_build_backend(self, finder: "PackageFinder") -> None: # Isolate in a BuildEnvironment and install the build-time # requirements. pyproject_requires = self.req.pyproject_requires @@ -104,14 +112,14 @@ class SourceDistribution(AbstractDistribution): with backend.subprocess_runner(runner): return backend.get_requires_for_build_editable() - def _install_build_reqs(self, finder: PackageFinder) -> None: + 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() + and self.req.supports_pyproject_editable ): build_reqs = self._get_build_requires_editable() else: diff --git a/gestao_raul/Lib/site-packages/pip/_internal/distributions/wheel.py b/gestao_raul/Lib/site-packages/pip/_internal/distributions/wheel.py index 03aac77..bfadd39 100644 --- a/gestao_raul/Lib/site-packages/pip/_internal/distributions/wheel.py +++ b/gestao_raul/Lib/site-packages/pip/_internal/distributions/wheel.py @@ -1,13 +1,17 @@ +from typing import TYPE_CHECKING, Optional + 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, ) +if TYPE_CHECKING: + from pip._internal.index.package_finder import PackageFinder + class WheelDistribution(AbstractDistribution): """Represents a wheel distribution. @@ -15,6 +19,10 @@ class WheelDistribution(AbstractDistribution): This does not need any preparation as wheels can be directly unpacked. """ + @property + def build_tracker_id(self) -> Optional[str]: + return None + 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 @@ -27,7 +35,7 @@ class WheelDistribution(AbstractDistribution): def prepare_distribution_metadata( self, - finder: PackageFinder, + finder: "PackageFinder", build_isolation: bool, check_build_deps: bool, ) -> None: diff --git a/gestao_raul/Lib/site-packages/pip/_internal/exceptions.py b/gestao_raul/Lib/site-packages/pip/_internal/exceptions.py index d452729..45a876a 100644 --- a/gestao_raul/Lib/site-packages/pip/_internal/exceptions.py +++ b/gestao_raul/Lib/site-packages/pip/_internal/exceptions.py @@ -13,16 +13,18 @@ import pathlib import re import sys from itertools import chain, groupby, repeat -from typing import TYPE_CHECKING, Dict, Iterator, List, Optional, Union +from typing import TYPE_CHECKING, Dict, Iterator, List, Literal, Optional, Union -from pip._vendor.requests.models import Request, Response +from pip._vendor.packaging.requirements import InvalidRequirement +from pip._vendor.packaging.version import InvalidVersion from pip._vendor.rich.console import Console, ConsoleOptions, RenderResult from pip._vendor.rich.markup import escape from pip._vendor.rich.text import Text if TYPE_CHECKING: from hashlib import _Hash - from typing import Literal + + from pip._vendor.requests.models import Request, Response from pip._internal.metadata import BaseDistribution from pip._internal.req.req_install import InstallRequirement @@ -184,10 +186,6 @@ class InstallationError(PipError): """General exception during installation""" -class UninstallationError(PipError): - """General exception during uninstallation""" - - class MissingPyProjectBuildRequires(DiagnosticPipError): """Raised when pyproject.toml has `build-system`, but no `build-system.requires`.""" @@ -247,10 +245,7 @@ class NoneMetadataError(PipError): 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, - ) + return f"None {self.metadata_name} metadata found for distribution: {self.dist}" class UserInstallationInvalid(InstallationError): @@ -297,8 +292,8 @@ class NetworkConnectionError(PipError): def __init__( self, error_msg: str, - response: Optional[Response] = None, - request: Optional[Request] = None, + response: Optional["Response"] = None, + request: Optional["Request"] = None, ) -> None: """ Initialize NetworkConnectionError with `request` and `response` @@ -361,18 +356,15 @@ class MetadataInconsistent(InstallationError): ) -class LegacyInstallFailure(DiagnosticPipError): - """Error occurred while executing `setup.py install`""" +class MetadataInvalid(InstallationError): + """Metadata is invalid.""" - reference = "legacy-install-failure" + def __init__(self, ireq: "InstallRequirement", error: str) -> None: + self.ireq = ireq + self.error = error - def __init__(self, package_details: str) -> None: - super().__init__( - message="Encountered error while trying to install package.", - context=package_details, - hint_stmt="See above for output from the failure.", - note_stmt="This is an issue with the package mentioned above, not pip.", - ) + def __str__(self) -> str: + return f"Requested {self.ireq} has invalid metadata: {self.error}" class InstallationSubprocessError(DiagnosticPipError, InstallationError): @@ -439,7 +431,7 @@ class HashErrors(InstallationError): """Multiple HashError instances rolled into one for reporting""" def __init__(self) -> None: - self.errors: List["HashError"] = [] + self.errors: List[HashError] = [] def append(self, error: "HashError") -> None: self.errors.append(error) @@ -558,7 +550,7 @@ class HashMissing(HashError): # so the output can be directly copied into the requirements file. package = ( self.req.original_link - if self.req.original_link + if self.req.is_direct # In case someone feeds something downright stupid # to InstallRequirement's constructor. else getattr(self.req, "req", None) @@ -608,7 +600,7 @@ class HashMismatch(HashError): self.gots = gots def body(self) -> str: - return " {}:\n{}".format(self._requirement_name(), self._hash_comparison()) + return f" {self._requirement_name()}:\n{self._hash_comparison()}" def _hash_comparison(self) -> str: """ @@ -630,11 +622,9 @@ class HashMismatch(HashError): 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.extend((f" Expected {next(prefix)} {e}") for e in expecteds) lines.append( - " Got {}\n".format(self.gots[hash_name].hexdigest()) + f" Got {self.gots[hash_name].hexdigest()}\n" ) return "\n".join(lines) @@ -745,3 +735,75 @@ class ExternallyManagedEnvironment(DiagnosticPipError): exc_info = logger.isEnabledFor(VERBOSE) logger.warning("Failed to read %s", config, exc_info=exc_info) return cls(None) + + +class UninstallMissingRecord(DiagnosticPipError): + reference = "uninstall-no-record-file" + + def __init__(self, *, distribution: "BaseDistribution") -> None: + installer = distribution.installer + if not installer or installer == "pip": + dep = f"{distribution.raw_name}=={distribution.version}" + hint = Text.assemble( + "You might be able to recover from this via: ", + (f"pip install --force-reinstall --no-deps {dep}", "green"), + ) + else: + hint = Text( + f"The package was installed by {installer}. " + "You should check if it can uninstall the package." + ) + + super().__init__( + message=Text(f"Cannot uninstall {distribution}"), + context=( + "The package's contents are unknown: " + f"no RECORD file was found for {distribution.raw_name}." + ), + hint_stmt=hint, + ) + + +class LegacyDistutilsInstall(DiagnosticPipError): + reference = "uninstall-distutils-installed-package" + + def __init__(self, *, distribution: "BaseDistribution") -> None: + super().__init__( + message=Text(f"Cannot uninstall {distribution}"), + context=( + "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." + ), + hint_stmt=None, + ) + + +class InvalidInstalledPackage(DiagnosticPipError): + reference = "invalid-installed-package" + + def __init__( + self, + *, + dist: "BaseDistribution", + invalid_exc: Union[InvalidRequirement, InvalidVersion], + ) -> None: + installed_location = dist.installed_location + + if isinstance(invalid_exc, InvalidRequirement): + invalid_type = "requirement" + else: + invalid_type = "version" + + super().__init__( + message=Text( + f"Cannot process installed package {dist} " + + (f"in {installed_location!r} " if installed_location else "") + + f"because it has an invalid {invalid_type}:\n{invalid_exc.args[0]}" + ), + context=( + "Starting with pip 24.1, packages with invalid " + f"{invalid_type}s can not be processed." + ), + hint_stmt="To proceed this package must be uninstalled.", + ) diff --git a/gestao_raul/Lib/site-packages/pip/_internal/index/__pycache__/__init__.cpython-310.pyc b/gestao_raul/Lib/site-packages/pip/_internal/index/__pycache__/__init__.cpython-310.pyc index 84d0c01dae2b2efec0ff0084225909221de462e8..e133f51b4c5b2a9417c72d15d4d65f981a3b8b5d 100644 GIT binary patch delta 33 ncmaFFc!!ZYpO=@50SFfPt)9po&loc?Taq;>$jQ}tVt+6Il(q>? delta 39 tcmcb^_=u4^pO=@50SKypgihp+XH1%yEymv0oj3Y;bkUlXhSnxIVY~vqm*jW31k;bz6#a zE|zI9R_{DG0K8%@k?A(NN%!%}xt>g~(VIyc$xNTo2Ta)4QexLS82w_aNQ?Be5@yB# z_lqR z**(0M>|Rk$V;*!W{2rbZ&Ad<4Qq6<1W}XsZQOS3O8F5*u<00P9(@QqvUS}5{;Z-8a z2gH4p_5hW;n-9{LF>8>`Nrd@MDn{pf_+BdVo0M`NAEJ~)B19?2$==V0$sS%*jQhFr zEfya|T{T=zK3SNYnw!k$@u*sj%j$@I+{_hnQ@P@8RRt_*e}WqPwXGkH;=gQR+o41I zhKI0RKLm;5F})UG5HHxz!|v;j{{jr-XU+xqZt<+^9C&Oe3WfQ6Ns}+sJZT8wUe6Rv z6rcCpQuQ#M0yBW$_r@x!CEZO>(q?lrSu=z`^$x+w;z!;i052B%e3byN;JuYM;1+^^ z1>VHR{mbw>^aWmVze8bpg+OEYx4;fPAjg`=-$X*T9MQLn@!&rI{($b#E%-CO8xjz} zuJ9hXUCf8C0~y<^UxW|wFV#u+;W(7^X)||5WbsUE)kEVHFPH(G8OjklrG_drVdF}g z37y_5z3qbLL0r45+0u;bhC?_>vlDj+eOlp8?xHPmaW^fx$2>;EPW}iO!*ew~YP-vY zb+tn%YSZ|9EyuFDQGB2-9x*S6o=CR9*~buDSi^U z3a}NQi+-R#E&VU!`B)t4@LFua_nZ`(3F4aBx%n~KP;YyN=yrUt;ePKHDOw4CBH1(e zYC{w%@WX}|^ff80~zlb;@OruxQfrV48R)xwPic($In|%!wnqw`SFR? zGu|>8VO1894CN^aY!JQpMKLbs1wWV@GNgE{?R|hJi-YYS0aRhEqZxjI2Rr)on=<$% ze5~WXO&Y}aJDT*Dqq{F2lH zTZ3h`49m*2N_|jSa;zw`%9^?Y>#(0K60T|M?40^FKlQGk?JFKyL0_{M9J9`KFc0GQ z67{fx=My8loRlO%&mFmC7ufJ!QIF(NnP(Y_g{%dQN|_o=Wcs+{6RDqp*S4dpz=n+>|aF%%{7Y`p23}`M1xl z-DMsRhLcBXx5~^x2^|C_x7EioqHrR|O%0z&#v;~cSxv#(czOBEwOggHbRFz&qx)H&Olppt`JdIx->Qcz^oyiu2 znVp<#7eAO1^VW4X{dh7Jp{BK(YJwpCHq}74^n+BCI_u}DhH=?a|3COtVP-Dho|(x{ znX=86D!xAU!&7;)M(Xx_?vy!26SUUFx*zqpu2D2RAgVEk v=AgFm)xQVF`Xe!y;!%RC*X^@=gF!9m3l45^dp$l)@rS@s;{~rDvA^Yih8GY} delta 2286 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 D`dnA| delta 8829 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 L#@~|sO7H&yrLPE{ diff --git a/gestao_raul/Lib/site-packages/pip/_internal/index/__pycache__/sources.cpython-310.pyc b/gestao_raul/Lib/site-packages/pip/_internal/index/__pycache__/sources.cpython-310.pyc index 3ebbdb67b0d33f0dc3fb7fe7feb80e3abc49bc77..0cfb5d3fb6d0829c4e6353f43bc605f3006acf6c 100644 GIT binary patch literal 8872 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 y& Iterable[Link]: - ... + def __call__(self, page: "IndexContent") -> Iterable[Link]: ... def with_cached_index_content(fn: ParseLinks) -> ParseLinks: @@ -254,29 +249,22 @@ def parse_links(page: "IndexContent") -> Iterable[Link]: yield link +@dataclass(frozen=True) class IndexContent: - """Represents one response (or page), along with its URL""" + """Represents one response (or page), along with its URL. - def __init__( - self, - content: bytes, - content_type: str, - 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.content_type = content_type - self.encoding = encoding - self.url = url - self.cache_link_parsing = cache_link_parsing + :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. + """ + + content: bytes + content_type: str + encoding: Optional[str] + url: str + cache_link_parsing: bool = True def __str__(self) -> str: return redact_auth_from_url(self.url) @@ -400,7 +388,6 @@ class CollectedSources(NamedTuple): class LinkCollector: - """ Responsible for collecting Link objects from all configured locations, making network requests as needed. @@ -473,6 +460,7 @@ class LinkCollector: page_validator=self.session.is_secure_origin, expand_dir=False, cache_link_parsing=False, + project_name=project_name, ) for loc in self.search_scope.get_index_urls_locations(project_name) ).values() @@ -483,6 +471,7 @@ class LinkCollector: page_validator=self.session.is_secure_origin, expand_dir=True, cache_link_parsing=True, + project_name=project_name, ) for loc in self.find_links ).values() diff --git a/gestao_raul/Lib/site-packages/pip/_internal/index/package_finder.py b/gestao_raul/Lib/site-packages/pip/_internal/index/package_finder.py index b6f8d57..85628ee 100644 --- a/gestao_raul/Lib/site-packages/pip/_internal/index/package_finder.py +++ b/gestao_raul/Lib/site-packages/pip/_internal/index/package_finder.py @@ -5,12 +5,13 @@ import functools import itertools import logging import re +from dataclasses import dataclass from typing import TYPE_CHECKING, 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 InvalidVersion, _BaseVersion from pip._vendor.packaging.version import parse as parse_version from pip._internal.exceptions import ( @@ -106,7 +107,6 @@ class LinkType(enum.Enum): class LinkEvaluator: - """ Responsible for evaluating links for a particular project. """ @@ -198,7 +198,7 @@ class LinkEvaluator: reason = f"wrong project name (not {self.project_name})" return (LinkType.different_project, reason) - supported_tags = self._target_python.get_tags() + supported_tags = self._target_python.get_unsorted_tags() if not wheel.supported(supported_tags): # Include the wheel's tags in the reason string to # simplify troubleshooting compatibility issues. @@ -323,67 +323,44 @@ def filter_unallowed_hashes( return filtered +@dataclass 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 + prefer_binary: bool = False + allow_all_prereleases: bool = False +@dataclass(frozen=True) 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. + + :param all_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. """ - 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) + all_candidates: List[InstallationCandidate] + applicable_candidates: List[InstallationCandidate] + best_candidate: Optional[InstallationCandidate] - if best_candidate is None: - assert not applicable_candidates + def __post_init__(self) -> None: + assert set(self.applicable_candidates) <= set(self.all_candidates) + + if self.best_candidate is None: + assert not self.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) + assert self.best_candidate in self.applicable_candidates class CandidateEvaluator: - """ Responsible for filtering and sorting candidates for installation based on what tags are valid. @@ -414,7 +391,7 @@ class CandidateEvaluator: if specifier is None: specifier = specifiers.SpecifierSet() - supported_tags = target_python.get_tags() + supported_tags = target_python.get_sorted_tags() return cls( project_name=project_name, @@ -461,24 +438,23 @@ class CandidateEvaluator: # 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), + + # 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(). + candidates_and_versions = [(c, str(c.version)) for c in candidates] + versions = set( + specifier.filter( + (v for _, v in candidates_and_versions), 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] + ) + applicable_candidates = [c for c, v in candidates_and_versions if v in versions] filtered_applicable_candidates = filter_unallowed_hashes( candidates=applicable_candidates, hashes=self._hashes, @@ -533,8 +509,8 @@ class CandidateEvaluator: ) except ValueError: raise UnsupportedWheel( - "{} is not a supported wheel for this platform. It " - "can't be sorted.".format(wheel.filename) + f"{wheel.filename} is not a supported wheel for this platform. It " + "can't be sorted." ) if self._prefer_binary: binary_preference = 1 @@ -685,11 +661,29 @@ class PackageFinder: def index_urls(self) -> List[str]: return self.search_scope.index_urls + @property + def proxy(self) -> Optional[str]: + return self._link_collector.session.pip_proxy + @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 custom_cert(self) -> Optional[str]: + # session.verify is either a boolean (use default bundle/no SSL + # verification) or a string path to a custom CA bundle to use. We only + # care about the latter. + verify = self._link_collector.session.verify + return verify if isinstance(verify, str) else None + + @property + def client_cert(self) -> Optional[str]: + cert = self._link_collector.session.cert + assert not isinstance(cert, tuple), "pip only supports PEM client certs" + return cert + @property def allow_all_prereleases(self) -> bool: return self._candidate_prefs.allow_all_prereleases @@ -742,6 +736,11 @@ class PackageFinder: return no_eggs + eggs def _log_skipped_link(self, link: Link, result: LinkType, detail: str) -> None: + # This is a hot method so don't waste time hashing links unless we're + # actually going to log 'em. + if not logger.isEnabledFor(logging.DEBUG): + return + entry = (link, result, detail) if entry not in self._logged_links: # Put the link at the end so the reason is more visible and because @@ -761,11 +760,14 @@ class PackageFinder: self._log_skipped_link(link, result, detail) return None - return InstallationCandidate( - name=link_evaluator.project_name, - link=link, - version=detail, - ) + try: + return InstallationCandidate( + name=link_evaluator.project_name, + link=link, + version=detail, + ) + except InvalidVersion: + return None def evaluate_links( self, link_evaluator: LinkEvaluator, links: Iterable[Link] @@ -936,12 +938,10 @@ class PackageFinder: "Could not find a version that satisfies the requirement %s " "(from versions: %s)", req, - _format_versions(best_candidate_result.iter_all()), + _format_versions(best_candidate_result.all_candidates), ) - raise DistributionNotFound( - "No matching distribution found for {}".format(req) - ) + raise DistributionNotFound(f"No matching distribution found for {req}") def _should_install_candidate( candidate: Optional[InstallationCandidate], @@ -972,7 +972,7 @@ class PackageFinder: logger.debug( "Using version %s (newest of versions: %s)", best_candidate.version, - _format_versions(best_candidate_result.iter_applicable()), + _format_versions(best_candidate_result.applicable_candidates), ) return best_candidate @@ -980,7 +980,7 @@ class PackageFinder: logger.debug( "Installed version (%s) is most up-to-date (past versions: %s)", installed_version, - _format_versions(best_candidate_result.iter_applicable()), + _format_versions(best_candidate_result.applicable_candidates), ) raise BestVersionAlreadyInstalled diff --git a/gestao_raul/Lib/site-packages/pip/_internal/index/sources.py b/gestao_raul/Lib/site-packages/pip/_internal/index/sources.py index eec3f12..3dafb30 100644 --- a/gestao_raul/Lib/site-packages/pip/_internal/index/sources.py +++ b/gestao_raul/Lib/site-packages/pip/_internal/index/sources.py @@ -1,8 +1,16 @@ import logging import mimetypes import os -import pathlib -from typing import Callable, Iterable, Optional, Tuple +from collections import defaultdict +from typing import Callable, Dict, Iterable, List, Optional, Tuple + +from pip._vendor.packaging.utils import ( + InvalidSdistFilename, + InvalidWheelFilename, + canonicalize_name, + parse_sdist_filename, + parse_wheel_filename, +) from pip._internal.models.candidate import InstallationCandidate from pip._internal.models.link import Link @@ -36,6 +44,53 @@ def _is_html_file(file_url: str) -> bool: return mimetypes.guess_type(file_url, strict=False)[0] == "text/html" +class _FlatDirectoryToUrls: + """Scans directory and caches results""" + + def __init__(self, path: str) -> None: + self._path = path + self._page_candidates: List[str] = [] + self._project_name_to_urls: Dict[str, List[str]] = defaultdict(list) + self._scanned_directory = False + + def _scan_directory(self) -> None: + """Scans directory once and populates both page_candidates + and project_name_to_urls at the same time + """ + for entry in os.scandir(self._path): + url = path_to_url(entry.path) + if _is_html_file(url): + self._page_candidates.append(url) + continue + + # File must have a valid wheel or sdist name, + # otherwise not worth considering as a package + try: + project_filename = parse_wheel_filename(entry.name)[0] + except InvalidWheelFilename: + try: + project_filename = parse_sdist_filename(entry.name)[0] + except InvalidSdistFilename: + continue + + self._project_name_to_urls[project_filename].append(url) + self._scanned_directory = True + + @property + def page_candidates(self) -> List[str]: + if not self._scanned_directory: + self._scan_directory() + + return self._page_candidates + + @property + def project_name_to_urls(self) -> Dict[str, List[str]]: + if not self._scanned_directory: + self._scan_directory() + + return self._project_name_to_urls + + class _FlatDirectorySource(LinkSource): """Link source specified by ``--find-links=``. @@ -45,30 +100,34 @@ class _FlatDirectorySource(LinkSource): * ``file_candidates``: Archives in the directory. """ + _paths_to_urls: Dict[str, _FlatDirectoryToUrls] = {} + def __init__( self, candidates_from_page: CandidatesFromPage, path: str, + project_name: str, ) -> None: self._candidates_from_page = candidates_from_page - self._path = pathlib.Path(os.path.realpath(path)) + self._project_name = canonicalize_name(project_name) + + # Get existing instance of _FlatDirectoryToUrls if it exists + if path in self._paths_to_urls: + self._path_to_urls = self._paths_to_urls[path] + else: + self._path_to_urls = _FlatDirectoryToUrls(path=path) + self._paths_to_urls[path] = self._path_to_urls @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 + for url in self._path_to_urls.page_candidates: 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 + for url in self._path_to_urls.project_name_to_urls[self._project_name]: yield Link(url) @@ -170,8 +229,8 @@ def build_source( page_validator: PageValidator, expand_dir: bool, cache_link_parsing: bool, + project_name: str, ) -> Tuple[Optional[str], Optional[LinkSource]]: - path: Optional[str] = None url: Optional[str] = None if os.path.exists(location): # Is a local path. @@ -204,6 +263,7 @@ def build_source( source = _FlatDirectorySource( candidates_from_page=candidates_from_page, path=path, + project_name=project_name, ) else: source = _IndexDirectorySource( diff --git a/gestao_raul/Lib/site-packages/pip/_internal/locations/__init__.py b/gestao_raul/Lib/site-packages/pip/_internal/locations/__init__.py index d54bc63..32382be 100644 --- a/gestao_raul/Lib/site-packages/pip/_internal/locations/__init__.py +++ b/gestao_raul/Lib/site-packages/pip/_internal/locations/__init__.py @@ -336,17 +336,6 @@ def get_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 = ( diff --git a/gestao_raul/Lib/site-packages/pip/_internal/locations/__pycache__/__init__.cpython-310.pyc b/gestao_raul/Lib/site-packages/pip/_internal/locations/__pycache__/__init__.cpython-310.pyc index 6686ea44f396b4575ee7b566a18f16443c09baf9..d66d029b570ce30ea7f7b9e371c1e07b9d10a169 100644 GIT binary patch delta 591 zcmZ9JKWGzi6vuz>{w6WGBp1*2+BBD>HeLd54pJPX#zipDDi)!F!%?Bjnd=!Gen*D{ z+O!--o`ax5Q?rN_48h4oT#Ac=B7%!lv7^$#QR44c1);yk`@sA6eeizwt_&}0ZXyvQ z>}}Pa-ncm3*R~Y6j(x?H=jLY4pBsEs?&?~G)uYTs=F2Vg&9m@z@WQ+WD@k{kMjWw0 z++E*nk|0G>-uHUWA6puCl1?fFci&IOiM!9b(hU-%Y1;c$&rx+VOQSUA=rrA4lFBcaEbWh(gY>FI7nsn$Q8y_ATd_ zLzs<(A`mV@)hfA`SP+9~5DRoa&sS328Rhj3)GL1B-vZe&L+S5Kd8}5J@rz~RZ1yVd zWM9GU!P-O(popJx+jz&i02%yjeZV*QQ$~v&#GB$6W!U5A`9V-GY-dukFqA|A;;IC~ zP!WXR5`HW6jW%z#Ib4o)jtzWLv?0Xz#TMKj%uhB1c#LnSP8$z_3G&}jViH6^V&?U5 zy!8C|f0^DPEgm*FHt}a^1fHRKV$V8g@AB-y>ccY_w@<=LoVKg5jw|+S=;BQIrqSU8 glN@=D5=R?%%CoS6W~B%{JX3iWwY4L+JiU$fPx-8cu|VB&a0x(9o}!4eeeC|vFyRsN7q%; z@Anb$%>TGnbd7DPFBB;7EhXGhoV1<1nX~eh>GqDYrl}!OU4DqGLI3c;wkJzn76Fgp$^Pf)~9GKzyj8{xwzA1?ujZ%RP8y@I;jO& z(ApR8W92?0XlM;+g4u~S+(l(~mDDt*HNgtb#hLqAoOzkg2r6Bdc*yIILRfl1O;jwGkO+1j+`YpoX}>SexuhQVuc$L5Ogqi zmfZB;kZRtVuh#9P@JiNgL@?ikxr@%gU%%gFL>uy-rc8`~k5(cXYQ@B7`s@+NNY=dA ztmBANycBy6_4a7rIKUuh@lEe1ms6RYp0p-;I&ld?+)jLqM(nB5Y|g%8-!f+krD85W zQ7TO5i@AwPkzYuj*6*P!jp!BF6=4(L50jf|pGyXMpisK6N%W_zPzbo_fhhsBHD1YM6S($k(5MA(xT@taUs^yCch|9;>1|K9gz z9`9Y{?}}I#BF^Z!<=kEATo)y{a(&;`O<>5;Xbd;=ZhpY=MxklD_J9+Ok!H~?5+_kK zMw=zK1kBTWW8Qcl+}(z0X!Mfe1e$2w1Wb8lOnVcU@v>goW;nDnXDOH4;bG#um+{J8 zxwgq|R!d<4?X8$w`KaONw90$=nu#M=+|u1iYFe&w9L3UB#GTrS#&DdX>78gdmMPkU z+V^ax^3zuf>*^sKhHdp09Ehk{UQ$c^5xi6rn%b0!PEvw@R_gxQd4{Hh8w@R}-(bH- zx^M*~_iNdh0Sd@d5Kzhd4o;kXoxtoFt~v z6a7sFtj;!=2@3ZAR|LV992I@zW`nR z8Qp*pbs)B(p2ViQ2Gw_Xa#2BYfXyVwCX=j5(j^Q zyplB^_R*X({wV@KtQspdE(DGG(%mreT_{diqt7|coHMgmJ+^XmPhMDG=jJHy3aqz- zOF_NSKCs+GUsILTp?D-*riZrrBQ`RzJ@kK3d!xO)zE-QR_%ZUgqrpb2zP6%%P2I~? c!&S4PoD5|l6i1y(pMZk8maf90dY<0@0mS6*ZvX%Q delta 1015 zcma)4OKcle6n*#2j3>6|<4B3e2#HUWQiv*O!L3v(p{da*_)XHO?AXk_ z6a}6YM53-JqIwIES|oeN0$5O~D{bLPFiJfdz;=R#?D_8O?d;+;i{I zJiYhz@*m6Qz%(-ipErNMxc%J?vkup8JaB!#U-C*o7-i{Rx$k(+jAwdozv5M9Jlm`G zYhDex!OUL0-|!kh0&RROSe$^jl(y0ezKE>JEN0&VmJ6CJA1t#%FdsBs!iq=hJk}PD zcnNtqCpt(g|vXx^Fa}RZIY?VXVkqXZ8mk|w-hD@^!H%Ii zexw%J5~}-|a)Gp#6S*mr;WgwI@_mG{Jt06sGBSB?gS?U*Ssce%L0DySK!qu+HS*eftSHjs0?SU| zDv3T7=D5h`F=Qe6*!*=m0U*3|K%#s219t=+X*+4$(&y-xkt?_wBaJ&(+_5e+w!liP z%qw!DmY43$s?{0RgvlJ2Oke`cb;-z1s`3Z*41iqGzF)ok?30~~aS+9w*MlA(bT$Uv z-F~pcl0)pvqgRJ*dl)zNcmJdQRnHt|H&nkAoub=&N`j zEbMamqkgwQRiIFSxxeV2s&0V+8Trjz6-x4#xfNKyZKc0b%##=qJ&n+!(YpNEXu+Dy znGN9b5z~cJx1Tqk0eD}&V^!g-tlBmCrL~Gj-^e@Cw^PO4DCmW+euVSCQG^UcZS1Ps zFC>Xd`=#hbB+)~MvlMd~4yM4OdYE5X+J6M2mo%{OE+ z)bf-FxG==>)bf@H)-aa{)o|DFHZwId)$r8t+AtK(DdA5M%VenGS;E-ISj%0*9n7F9 zzWD&(b!PS=exMzi!joqTRZNx=4iSywOU}uOkO1H z%EQ9Q!6?Sa$H>B1fvRKthFyg^`D`C>SUzGC6^XWAbMaH{OdtiO)7vldg`z6lS3%5h5D~F?fv6RufFFn*3?jn7qCiy=lbOU5 KS^fCfg;)SEkV+%~ delta 277 zcmeyY_d<_1pO=@50SKypgr+lW+g>)tsLj#5 zMvS_vO9WgPVg+h>N(5_|ON45;Yj~QOnwe^OON2q}8s27RMux&!HQd1rnqr%e@LgwS z(iEAzNT`DO7JKnz5#cDFTg=(1mA6>S5_3vZCpQbLGkQ&4E$qt0!6?AU$H>B16fikZ zRAjP%$U(uAKz9|h0SOf*7DgV%qEMiW%;bL}ZoC(Of}fdy1W+^rC@RYr2IOcm`4!m$ z>7ww-3Zim?If*4XnMqeb0+AphYV&GQD@K6;5IYn^M1VzsY9%J~iYK!A^05oC006jX BMvMRe diff --git a/gestao_raul/Lib/site-packages/pip/_internal/locations/__pycache__/base.cpython-310.pyc b/gestao_raul/Lib/site-packages/pip/_internal/locations/__pycache__/base.cpython-310.pyc index e880b6e90ff4f7bdda61b9d5701c6a2e354ddf9a..f11125df6deadcbdf0b452a48d4918053dc4eceb 100644 GIT binary patch delta 57 zcmca3bWMmmpO=@50SFfPt=`D(#v~u(Y!wq)oLW>IQ=Xbrk{{!epIn-onpaXB6BOj+ L>b$v(=@}aU_c{{r delta 63 zcmca6bVrCgpO=@50SKypgl^<^V^U3Wwu%WYPAw{qDNoHQ$&Yc#PcF?(%_}L6Nlz^< RNz9KgN-WLUT)^~<4FH8J7E1sC diff --git a/gestao_raul/Lib/site-packages/pip/_internal/locations/_distutils.py b/gestao_raul/Lib/site-packages/pip/_internal/locations/_distutils.py index 92bd931..3d85625 100644 --- a/gestao_raul/Lib/site-packages/pip/_internal/locations/_distutils.py +++ b/gestao_raul/Lib/site-packages/pip/_internal/locations/_distutils.py @@ -21,7 +21,7 @@ from distutils.cmd import Command as DistutilsCommand from distutils.command.install import SCHEME_KEYS from distutils.command.install import install as distutils_install_command from distutils.sysconfig import get_python_lib -from typing import Dict, List, Optional, Union, cast +from typing import Dict, List, Optional, Union from pip._internal.models.scheme import Scheme from pip._internal.utils.compat import WINDOWS @@ -56,8 +56,7 @@ def distutils_scheme( try: d.parse_config_files() except UnicodeDecodeError: - # Typeshed does not include find_config_files() for some reason. - paths = d.find_config_files() # type: ignore + paths = d.find_config_files() logger.warning( "Ignore distutils configs in %s due to encoding errors.", ", ".join(os.path.basename(p) for p in paths), @@ -65,7 +64,7 @@ def distutils_scheme( obj: Optional[DistutilsCommand] = None obj = d.get_command_obj("install", create=True) assert obj is not None - i = cast(distutils_install_command, obj) + i: 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. @@ -79,7 +78,7 @@ def distutils_scheme( i.root = root or i.root i.finalize_options() - scheme = {} + scheme: Dict[str, str] = {} for key in SCHEME_KEYS: scheme[key] = getattr(i, "install_" + key) @@ -89,7 +88,7 @@ def distutils_scheme( # 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)) + scheme.update({"purelib": i.install_lib, "platlib": i.install_lib}) if running_under_virtualenv(): if home: diff --git a/gestao_raul/Lib/site-packages/pip/_internal/locations/_sysconfig.py b/gestao_raul/Lib/site-packages/pip/_internal/locations/_sysconfig.py index 97aef1f..ca860ea 100644 --- a/gestao_raul/Lib/site-packages/pip/_internal/locations/_sysconfig.py +++ b/gestao_raul/Lib/site-packages/pip/_internal/locations/_sysconfig.py @@ -192,9 +192,10 @@ def get_scheme( data=paths["data"], ) if root is not None: + converted_keys = {} for key in SCHEME_KEYS: - value = change_root(root, getattr(scheme, key)) - setattr(scheme, key, value) + converted_keys[key] = change_root(root, getattr(scheme, key)) + scheme = Scheme(**converted_keys) return scheme diff --git a/gestao_raul/Lib/site-packages/pip/_internal/metadata/__init__.py b/gestao_raul/Lib/site-packages/pip/_internal/metadata/__init__.py index 9f73ca7..1ea1e7f 100644 --- a/gestao_raul/Lib/site-packages/pip/_internal/metadata/__init__.py +++ b/gestao_raul/Lib/site-packages/pip/_internal/metadata/__init__.py @@ -9,7 +9,7 @@ from pip._internal.utils.misc import strtobool from .base import BaseDistribution, BaseEnvironment, FilesystemWheel, MemoryWheel, Wheel if TYPE_CHECKING: - from typing import Protocol + from typing import Literal, Protocol else: Protocol = object @@ -30,7 +30,7 @@ def _should_use_importlib_metadata() -> bool: """Whether to use the ``importlib.metadata`` or ``pkg_resources`` backend. By default, pip uses ``importlib.metadata`` on Python 3.11+, and - ``pkg_resourcess`` otherwise. This can be overridden by a couple of ways: + ``pkg_resources`` otherwise. This can be overridden by a couple of ways: * If environment variable ``_PIP_USE_IMPORTLIB_METADATA`` is set, it dictates whether ``importlib.metadata`` is used, regardless of Python @@ -50,6 +50,7 @@ def _should_use_importlib_metadata() -> bool: class Backend(Protocol): + NAME: 'Literal["importlib", "pkg_resources"]' Distribution: Type[BaseDistribution] Environment: Type[BaseEnvironment] @@ -70,7 +71,7 @@ def get_default_environment() -> BaseEnvironment: 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. + to share instance state across calls. """ return select_backend().Environment.default() diff --git a/gestao_raul/Lib/site-packages/pip/_internal/metadata/__pycache__/__init__.cpython-310.pyc b/gestao_raul/Lib/site-packages/pip/_internal/metadata/__pycache__/__init__.cpython-310.pyc index 84aa080aaee5acfd00dcce71193404c2e427c67e..a58ce33f2592fdd5f413989d1ad2ff314e80a423 100644 GIT binary patch delta 1105 zcmZ8fOK;Oa5Z-m1wd=-tIE6MPX-lBcs1*VP2tmsusNw(xsfYtcVA9McO>yF~c7)1> z1HE#96>vu!khqZ}e*msT_hfeM;Q|m~zTS0Qr(1N3l=L({;uhNkjF;5i1t#C!(qIUzP2C;6NMIN;n*=hv z_$cL$ak^Fl3ie})abp;lh1{n8h`QsbXHm~X0rU2N!wt@OxkO4N@#s*55%g5*u#1<` zWVdwK4Wnq9fH7Wx(jO~>aoB^_NhtFvsG#+)$Ak%(M9*HiOrKj?Y+UX{Tr~W_7s@Do zD!*y32G3G&HFf}d{^7|bR!T1~*B39ydu)Tw$gixjb_iXZxD<%1T_-?!3bc8`b)GH} z+^3Q~OZNIaf%G*}W3f?hH1F~rJedA-;>~KOyB>(h@2phkrmE|A+n(TI&=*Y}R&T}n zmGeuBa>1xyj&q*Z==FlA5p{xI=y@WI1&AR9YBWNXx(yC0wT5sEB{UH%V$uxFQ&E#2 zj5ggbkC>xZXV4K7F^!903RH?Xicr(GtZKiLw}`e=D4{x;X&GuIB8u{bd6=5=z4`N! z2*Plx+3@}FkTr#0EhSW%m_vvS;H^gAkG2sf^(R&5F=7!V)DSX;$PaQ>n=bs%wpt?S zdh3m7HLOu_9HX}JBoqa-UHwauHAF!UhG*yr`FZ%`T*5Pp&N!R!Ku7Rq6o?JvI=O>O z#+ga`#y=t^P7RoSht~gdY}Imqm2)3&?6k_C-$9~O2Vn&z=_zjtXYe{Zt+6d0`6<6| z{EP}at6*oo%oiq(bXBstZZoG*_3OXHc~omvF@{S#)av)Ji@*;>1$8kgy+Zq;$SEHS zR@Sh^*uW>``}lOqDngAu8FxJ7i@w)vG*|i7h|~b$R2T`N?op^oCk@2um5qpp$+_EZ l{NLnabG{ou-{)s2ri3SnJm)wWhw7TCW$pZ^#pG?L{2LNa>}CJ} delta 1026 zcmZ8fO>fgc5Z!eg+i~N3xNXujNn6yfq(}%vL8Y`Hg-S?J!2uN^D^hU1o0Q_%Xzi#} z95}RB4%JFrIDioUAQvS51xKGba04y~6(KR}s1U{0Jny`jH?uqIPm8AuhHn@;g6GAr zozBM-ql#-M=l5S;Cx|Gn+%+u|BTu5^mf1l>eUGgPqS48=L{daQmaW2VM8-(^7?CtJ zj}lgq;{7RtiSY_UUJ>##Bzr6$VXFjw2K*e!gKnCbRHX_nmrx1C5t)pW35Zn4BrV?n z%4o}^K#D+B$rR0#5-rE9LZ(R>*cnoxv!n{_Swtfh;h3lN)_QX%pe$$}P&f3OTfWolQZEde9U6qT-(q&pXjuBQDk9) zENKVP1eHsOCJEjUYb9Pw8;B$xpt>BX4cmE2J;I->jXNv}QkDXUvaOcwd46bzPkb+E zwU`(=6Z;tg(TUXnR>1-VKu2ku!>q;?t%K*erxoun105l@03Rk&Vgb7dtGYB`#d@@= z3EVZXK=f6lG}dEdCLD2sf7L2D#gnPu+m6qIV9v2!H@KkB!BbB#p=B!okxFPAh7%4| zkB<;|7yL>{BG-+9qt8n%q~OLP@T9$4!C<~B{C|@@o!@_ zyvnE2pOv^yoqtaka#u&BykN{4kN)Wtw$^VLk8xul0X`bEKG>twg(-;WEQ2f*4h00^oB^=6fmmi+xeMGt`Lh6Ygq}4SN_9pf?Gewitve2?Vjg^ zzV8OC0zRAJZ}OdXr1-o0)CnUM{u0-PzoRUI;-=%_hh{stBi=Qa(itpEnv^keMLo&inw7r=0M}Ij diff --git a/gestao_raul/Lib/site-packages/pip/_internal/metadata/__pycache__/_json.cpython-310.pyc b/gestao_raul/Lib/site-packages/pip/_internal/metadata/__pycache__/_json.cpython-310.pyc index 7aa4e28836c29d233defd6a2edf0c3079e60088a..7208655eb717d9d9098696bece1c3bf72d5a7c56 100644 GIT binary patch delta 671 zcmYk3J#P~+7{||-d&|o;FG5g68VX2l(}>W4g{njfy+o==gH+Nb3OXHkZhG`yBHJmX zEfY*^kzrwiGDS>$fsV|~{tyfd3`ijCgjRU?+xkDh$9|s2Z}MOBW^9@%iLcZ4=RO^q z3xJF(_twL7Hw~n|Vv6fvQoi=(hY6OB3N7D-5r(%LF9rx=%zH%Bvjp0ciEyMAOXFM!*N+ z#^Io5(PJ%M7D;8mR7{XRK$Q!6dYMQ;cerfRygq*`g_6P$t)V3@EW6$4)UA4_Za23Y zE$cCFx24b9Nc<^F_aU(d&M1f-udJi%!qfPqhXFxiq)ZL@(PxPRIAZFd6AU5K|M9b4 ztDKsZoepu|Cb9ht$5Dlz=_|Q8Spf!6WK`o&yPTsx_4Y&YF1jm3l!r<}MEt+`UG&9_ ZjWG6x0jvQ|;0%{bat0KEAr}@)%3ng#uX_Lh delta 584 zcmYk2O=}ZD7{_-eo83)z*R;|~icJ(naP12%f}pg4Xj&|4J=k7CVAGbPqpZI>&Q0M5!ZgO?( zH^6YbaQhZ85(Am>&$#dnU4x^UCb{sDjHX;$RQkdvMNBnJRKs=G^#X9hl>< zbr{Tj{N)3&3csz+s@@ZWUR2M|{=GZBU4|*^J;xa*y$*>-1Dtc#OEBXR328LS#QoBi ze@)>GDwzVbAx=tHz$fvg^xiu*-Z*cK7uK;wyW+rn3@(UM^LOi#BBd4YkMd_smivbs zGwI+wCMeC5V)kE|*IbQ7dCF6U!+jhfOcw>Tj#l)71vG&YF0V*%Fab397o}xohQosOS|5bZi0C@j1Dsrp}?k1%~}+*QO4=4_-tREFD5SOM#ZM? zfF&U(;Zvr@i0}6GDF>Rs0VbsD3fc~8V#(Rwyr~QHWZKZ8Q~&+enG5Nx4G0=#xCIo! QJS8*G19jlQ^UbFD2e?F!>i_@% diff --git a/gestao_raul/Lib/site-packages/pip/_internal/metadata/__pycache__/base.cpython-310.pyc b/gestao_raul/Lib/site-packages/pip/_internal/metadata/__pycache__/base.cpython-310.pyc index 3cedfd734e93854a8963c0dd9c734ad5a2203c71..2cbf42cb471d2631469f8b095c4b64bee5d6ebca 100644 GIT binary patch delta 6827 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 diff --git a/gestao_raul/Lib/site-packages/pip/_internal/metadata/__pycache__/pkg_resources.cpython-310.pyc b/gestao_raul/Lib/site-packages/pip/_internal/metadata/__pycache__/pkg_resources.cpython-310.pyc index 43809324f995cfe167c7b1a48d24f813851a441e..2d6057f9d01317ed97297a632928218aa324dcf5 100644 GIT binary patch delta 4833 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 delta 3973 zcmZu!du$v>8NboqhKC&OZBW$8l0<)HF>=6DK51LrRnYhudXyv$i+gyS>h? zN-lD( zUT6-~2Lvsk4>pVSq8JDDq2_RXxLK-~#5|;rG|TmJvr@0XJWM0{XmhN7b^Rq zPG2MS9Y;$1h3soiIz#B+QcP7;tA{o}y`(r`2(o@1o?C ztCrzy@(muBt`i^sx%82-)FI8Zn09vA(u~#_m6`Bm2adKDjFXDBWP3lgq^dfvy5HDY zg_Sad56&IjJAc{)+4&V!w~YBiMq|0Dwk&ggQ8g{akeRZq^Y`6Hazzjyf{z&h2)P0z zKq7<{Z=dqKLn<|(u}Opt(`+23c0iW3mS)NFB(M7>JZOO5i4^!%U*AWkVNxS(2Yg+Z z*iQIj$nP}~SyD{7sagtEEM2B7BN)V7KGfPqET+Ay$--}5gV z7Ovea2+DSNRa12;>sm`S*&ejH3!!Hr$*o2l;l2Du;7m=(ZKo0I#w=?l)!1WvGI&C) z*)hGHN_;~_hoc0gk6|Q_@tZ;AQ4CpVc31m25`;ics3Er8lFbIw+SWlw|7fVPK7zwC zLIuF~%Q7_@vdnx)8by-#?5YJ@FpFc)S;NrTZsdtAapUL_gnbBJg#8Ey5H0*8Usr}&$|{RnxrW~jo(L2(~O`dy3}tpce8q>*#wa}_W?PA7meN_Wypbqq}j@hV7r=oFp4?5&RrinH1sbOxj+ zs2lphtR30f0c;P&elP{wf1)7)cK>iJ@jplW&%B2{?*h5tlA+C=axteOZLf@)-I_cM zGFwhq94_X_$C3UJz*=Uj+nH{~^Iyi^B{hDd?*N(O|LU6}$9O(I4wM7&{OC4D?bre{ zn&6tL4a;DwPx6cL&yeH%PjTh6=r6~?7bHIxEjx{XDOU5bGdO+*;aLO}v!ff8M74&+ zwsSYY|Bx6UGJi91j11j=Kk)>qWkL1t_u#MQwnNbVm}RbL))IRf?PdUKk}b{5vXfj% zrL!BkZin`vmxj@7?_cJZQ=d(L4rRl32s+oA)?Uzbm8JQ6smgo|Ehz|bgr2qdowZP8 zVJozW%+BKEVT8>^XgC%9H6-?I1v`72voxC)M<_9IIOyj(aeAW&b|YdD!mB)%VF!eQ zhb2JP4lrd!ZYfRG2{8qf$1{z2_X(7IXYpnH>2Ne>-#Ppowv9iNMj);09tA zvbJcUyC`yG-DoIyW4(qF%iPG);-fIEdD$VP;7aVE+-Amkjj9ax{y*7tW;=6P{&X%& zUgxv9vwKAlZWifU5LvNp5V3~RGFndQdY~vhK*Wx1@_YT6$2&_9Cn*{+cGFttqD1}P?euG= zjH&h}^7ism`DY74S@h}NK>3|~iQMG>%=4sh)8nL&@F~*L z-!NJhyb^jN2r^ZnvZcOYy~XbqZmpv*8%8Lh9lx`AQM^h~dsS{KZQH9^YSVPCpdjqE zrC~NOd~euZe9*K(QM?Y&i0wyB4elusN!YQ|HZ-6<4}8a+lW2oD7iE$FAFSh3$eKU9 zy?bzpK>2^GxMx^w(`GGx5%s=+ASyM<|682PU<6y*il~wre{!fi+>_O@jkkuZHQV|x z_*aGwt)q#b@gZ1g4+x=V{~?vyH(o#onS9PgX};cu6!Vk>GjHUgB*_lVO8 z=a4oFV22yJVw%vzmkjD;W)6At2)I?Ofglc;!N?AP)3(a2RTe;oIJXyYw1yxW$%{A& zyVe2W<6;E_tW`FEa0vk`kiCi^a=?wFeuS?fd=tR-H&xSA7FFB-lrv!8MjkGZ;dRQs zhwy!b&BPERadXb$bLa?s%)3 zG9(c^#m}JB{o1ylstfQN!1|kue^~h>ndT=)^Hm}E!)>IU`=|}SH_W>({?*a>k&e3? zC@jwRXpb6?jP*_29(#&Z@qD^nNAwVJV7OshqvLm~dFkISez*F1RCw{S z+bD8_e|dbeu=#u90lnXkXQU56Z+vghtJulHAE6Q4H1-38Ji<)`ky>6HVJl{DA&86- zxp@nxB7mRZXmcCINSwrVVEhF>oi}ls9Fg2{NPt0-bZ0$<2t$F|Zab Dict[str, Any]: key = json_name(field) if multi: value: Union[str, List[str]] = [ - sanitise_header(v) for v in msg.get_all(field) + sanitise_header(v) for v in msg.get_all(field) # type: ignore ] else: - value = sanitise_header(msg.get(field)) + value = sanitise_header(msg.get(field)) # type: ignore if key == "keywords": # Accept both comma-separated and space-separated # forms, for better compatibility with old data. @@ -77,7 +79,7 @@ def msg_to_json(msg: Message) -> Dict[str, Any]: value = value.split() result[key] = value - payload = msg.get_payload() + payload = cast(str, msg.get_payload()) if payload: result["description"] = payload diff --git a/gestao_raul/Lib/site-packages/pip/_internal/metadata/base.py b/gestao_raul/Lib/site-packages/pip/_internal/metadata/base.py index cafb79f..9eabcdb 100644 --- a/gestao_raul/Lib/site-packages/pip/_internal/metadata/base.py +++ b/gestao_raul/Lib/site-packages/pip/_internal/metadata/base.py @@ -8,7 +8,6 @@ import re import zipfile from typing import ( IO, - TYPE_CHECKING, Any, Collection, Container, @@ -18,14 +17,15 @@ from typing import ( List, NamedTuple, Optional, + Protocol, Tuple, Union, ) from pip._vendor.packaging.requirements import Requirement from pip._vendor.packaging.specifiers import InvalidSpecifier, SpecifierSet -from pip._vendor.packaging.utils import NormalizedName -from pip._vendor.packaging.version import LegacyVersion, Version +from pip._vendor.packaging.utils import NormalizedName, canonicalize_name +from pip._vendor.packaging.version import Version from pip._internal.exceptions import NoneMetadataError from pip._internal.locations import site_packages, user_site @@ -37,18 +37,10 @@ from pip._internal.models.direct_url import ( from pip._internal.utils.compat import stdlib_pkgs # TODO: Move definition here. from pip._internal.utils.egg_link import egg_link_path_from_sys_path from pip._internal.utils.misc import is_local, normalize_path -from pip._internal.utils.packaging import safe_extra from pip._internal.utils.urls import url_to_path from ._json import msg_to_json -if TYPE_CHECKING: - from typing import Protocol -else: - Protocol = object - -DistributionVersion = Union[LegacyVersion, Version] - InfoPath = Union[str, pathlib.PurePath] logger = logging.getLogger(__name__) @@ -146,10 +138,10 @@ class BaseDistribution(Protocol): raise NotImplementedError() def __repr__(self) -> str: - return f"{self.raw_name} {self.version} ({self.location})" + return f"{self.raw_name} {self.raw_version} ({self.location})" def __str__(self) -> str: - return f"{self.raw_name} {self.version}" + return f"{self.raw_name} {self.raw_version}" @property def location(self) -> Optional[str]: @@ -280,7 +272,11 @@ class BaseDistribution(Protocol): raise NotImplementedError() @property - def version(self) -> DistributionVersion: + def version(self) -> Version: + raise NotImplementedError() + + @property + def raw_version(self) -> str: raise NotImplementedError() @property @@ -386,15 +382,7 @@ class BaseDistribution(Protocol): def _metadata_impl(self) -> email.message.Message: raise NotImplementedError() - @functools.lru_cache(maxsize=1) - def _metadata_cached(self) -> email.message.Message: - # When we drop python 3.7 support, move this to the metadata property and use - # functools.cached_property instead of lru_cache. - metadata = self._metadata_impl() - self._add_egg_info_requires(metadata) - return metadata - - @property + @functools.cached_property def metadata(self) -> email.message.Message: """Metadata of distribution parsed from e.g. METADATA or PKG-INFO. @@ -403,7 +391,9 @@ class BaseDistribution(Protocol): :raises NoneMetadataError: If the metadata file is available, but does not contain valid metadata. """ - return self._metadata_cached() + metadata = self._metadata_impl() + self._add_egg_info_requires(metadata) + return metadata @property def metadata_dict(self) -> Dict[str, Any]: @@ -455,11 +445,19 @@ class BaseDistribution(Protocol): """ raise NotImplementedError() - def iter_provided_extras(self) -> Iterable[str]: + def iter_raw_dependencies(self) -> Iterable[str]: + """Raw Requires-Dist metadata.""" + return self.metadata.get_all("Requires-Dist", []) + + def iter_provided_extras(self) -> Iterable[NormalizedName]: """Extras provided by this distribution. For modern .dist-info distributions, this is the collection of "Provides-Extra:" entries in distribution metadata. + + The return value of this function is expected to be normalised names, + per PEP 685, with the returned value being handled appropriately by + `iter_dependencies`. """ raise NotImplementedError() @@ -537,10 +535,11 @@ class BaseDistribution(Protocol): """Get extras from the egg-info directory.""" known_extras = {""} for entry in self._iter_requires_txt_entries(): - if entry.extra in known_extras: + extra = canonicalize_name(entry.extra) + if extra in known_extras: continue - known_extras.add(entry.extra) - yield entry.extra + known_extras.add(extra) + yield extra def _iter_egg_info_dependencies(self) -> Iterable[str]: """Get distribution dependencies from the egg-info directory. @@ -556,10 +555,11 @@ class BaseDistribution(Protocol): all currently available PEP 517 backends, although not standardized. """ for entry in self._iter_requires_txt_entries(): - if entry.extra and entry.marker: - marker = f'({entry.marker}) and extra == "{safe_extra(entry.extra)}"' - elif entry.extra: - marker = f'extra == "{safe_extra(entry.extra)}"' + extra = canonicalize_name(entry.extra) + if extra and entry.marker: + marker = f'({entry.marker}) and extra == "{extra}"' + elif extra: + marker = f'extra == "{extra}"' elif entry.marker: marker = entry.marker else: diff --git a/gestao_raul/Lib/site-packages/pip/_internal/metadata/importlib/__init__.py b/gestao_raul/Lib/site-packages/pip/_internal/metadata/importlib/__init__.py index 5e7af9f..a779138 100644 --- a/gestao_raul/Lib/site-packages/pip/_internal/metadata/importlib/__init__.py +++ b/gestao_raul/Lib/site-packages/pip/_internal/metadata/importlib/__init__.py @@ -1,4 +1,6 @@ from ._dists import Distribution from ._envs import Environment -__all__ = ["Distribution", "Environment"] +__all__ = ["NAME", "Distribution", "Environment"] + +NAME = "importlib" diff --git a/gestao_raul/Lib/site-packages/pip/_internal/metadata/importlib/__pycache__/__init__.cpython-310.pyc b/gestao_raul/Lib/site-packages/pip/_internal/metadata/importlib/__pycache__/__init__.cpython-310.pyc index b77e5bd5fec5cbfc5596bb911f2025616a26f42a..25fde0997b05cdcea0dbe89e61d7a1e5ad6d3198 100644 GIT binary patch delta 144 zcmdnXbd`xWpO=@50SFfPtxj*B$ScdJF;QEZC!HaMc@bk2OA1RA>qI{-1x@B#EPjr@ zu0>2hrA5p@;udFSZb5!gNls>xpC;SHRwctC7NGD-h9Y*55)kn#)7dH}v^ce>IHo)` mrzAhdB|o_|H#M)MI3_5_$<=w{%_trYpgJA~9!3r(4kiFiMI^WY delta 99 zcmcc0w3mrDpO=@50SKypgr;Xt#1}6B diff --git a/gestao_raul/Lib/site-packages/pip/_internal/metadata/importlib/__pycache__/_compat.cpython-310.pyc b/gestao_raul/Lib/site-packages/pip/_internal/metadata/importlib/__pycache__/_compat.cpython-310.pyc index 249ccc15ea6cb0d2e84195da59b31bfc7b09ef02..b6cf8b2ef12d6c3d0ebff4ab7379177688aee783 100644 GIT binary patch delta 1769 zcmZux&2Jk;6yKTs^u|sclh8UJbX!`G5w%oRR3H@usj3PI8PrBStdKTa&)D8{Kdjj? zYAhQ|O|Bd&3vqx$+gnw{B@!nPe*pi%o{%^dapTql@ZPvFNyTdS?d*HM_jcy@K7L+( zygtb)6<34naqDUKPgwnqAIC2nK0bse{}BY!7>PBXs5kW~ylJc_hHoUMZzh&+CAM!T zj_(k}>TxM?eK%R~7l?L4V+J!1G-mShzV27x+hP+N6gIa&vB(@wc9(Xmti(;eSl2oR zbJ@ay;V-lD++u^RR@Y{-LlvsR76J9jF_a6wORNgo6-I7pjpb*sd9Bqj3;m;XuW&x? z%P333xOniBd&%4$^kZHa?J$=OS}e9Qk%VzHE-t=2iH*enDx_)i?3)v>6=?cxyFM{a_5liTgu$fqfRbdA~ zE=3SjrcY^lxrWBoIpQQ%l)&J?lUr)BMrwvA9e$$!L5wnJrazeV%3o-c+P-$5h{|-w zTwhxO#mj#+@JJieug%Mo*U(%+aR$Zzp{;%>cq%=#p93*m+6r_2StxtWnWfdB0(T%b zK{OokDy~nVI1K{N$g*}26i#1ceJxn5)JggmBW<6I$%rsA00%~IX_D;Hhx&-@8jr~5bWF$kWTZ3wE)^F>^r6X6t&fedIkrY7 z=!}uo0XM*yfO!Wn7W9Pmh%&pbjg67P2--1p!x;{5aOs5}rpF6Y=6%6M4tw`HB1=5k z<6gpL$U+%lsodP&8~sU_rCIF#6#{_6jHO$C2dsq)KX0 zg1V3q{-ZFJ1zeEsqH-c7&_$9bg_RFFo#@`oRnK|9uwR_}SY4>Bz6Eh}t{O4`dIAM| zFG~aDXO`|cFPGqdIo6+JJH#M0>X0hD9pca`NP~(i)9;+k$reCniDsk@`5zNemXPv& z7$TBN9ZG=i8e<~O5s}tD%{Qezf_yRkD|(+CAsfc<5Oaq)I?nN%xtGpoi^}UfQ{3Cx zNyBNq^rfk2oqkg~H&Nro5m#VS0()IxKMO3|89i>4M`I8**JB$bXx)7OABTTigSVQ|d3e}8iAgEL0 u4vrmSJ`W1#YLc-*%s(JFgmMhvXb#yRRa(`nrL`4Wwg~;FM%};HPX7yC)0-Or delta 988 zcmZuv&1(}u6rb6hon$wgHvO_qYPD3+=3uE5L`6jKqk8E@>tPA3Yi1HQ>_?cHAZnyw zd+{Km`v(Z#3Lb=d^&i=j;7JkBA_&ggNNc4F`Q`WK_uiZLG4JL-&1|LBs)O|R^yg;R zDatg27P7`}^|V_)^vXroD9|7cjG z9Y~d3!tZbEYLO^wXqq{ZJnD%3lU*dLTKJV*zuelCT*%fV9;vi-BW(|2o+#Psa;bvU z7r`LP&KmbH&4z|NUC}|iSh$cG5{zI>v%KW{QVHL8vMDoJ8wYW6-{Y{apjv>rNg!p^ zz>`GKy^rQMjP2~LwR{0azKipzja1!<`w@qlIJ+rCD#V1={=b|gLCovfZ)D4}Cs)24rRh>%q&?nN*^A1XY|&lX zDjozCFn$4d6s_e>D8oc=JZW=LGz^<*8lx9eG=I={QFRrnW}#F*jDAIXOUUd}2fLVH zu?+F!`D7UPQ=y{p;Y!R^z=ACmh+|sIse0TGlkTVnQ=bR|0CnZg{U93f(Ym3KVvJ%I m*c?DHl%hIpTdv; diff --git a/gestao_raul/Lib/site-packages/pip/_internal/metadata/importlib/__pycache__/_dists.cpython-310.pyc b/gestao_raul/Lib/site-packages/pip/_internal/metadata/importlib/__pycache__/_dists.cpython-310.pyc index 53c94701ad5d283327a21a0f732b160db9f6a8c2..f61b2b4e2c4f36fb0ad3cf08fba1480e47de7f04 100644 GIT binary patch delta 3903 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 Optional[BasePath]: return getattr(d, "_path", None) -def get_dist_name(dist: importlib.metadata.Distribution) -> str: - """Get the distribution's project name. +def parse_name_and_version_from_info_directory( + dist: importlib.metadata.Distribution, +) -> Tuple[Optional[str], Optional[str]]: + """Get a name and version from the metadata directory name. + + This is much faster than reading distribution metadata. + """ + info_location = get_info_location(dist) + if info_location is None: + return None, None + + stem, suffix = os.path.splitext(info_location.name) + if suffix == ".dist-info": + name, sep, version = stem.partition("-") + if sep: + return name, version + + if suffix == ".egg-info": + name = stem.split("-", 1)[0] + return name, None + + return None, None + + +def get_dist_canonical_name(dist: importlib.metadata.Distribution) -> NormalizedName: + """Get the distribution's normalized name. The ``name`` attribute is only available in Python 3.10 or later. We are targeting exactly that, but Mypy does not know this. """ + if name := parse_name_and_version_from_info_directory(dist)[0]: + return canonicalize_name(name) + name = cast(Any, dist).name if not isinstance(name, str): raise BadMetadata(dist, reason="invalid metadata entry 'name'") - return name + return canonicalize_name(name) diff --git a/gestao_raul/Lib/site-packages/pip/_internal/metadata/importlib/_dists.py b/gestao_raul/Lib/site-packages/pip/_internal/metadata/importlib/_dists.py index 65c043c..d220b61 100644 --- a/gestao_raul/Lib/site-packages/pip/_internal/metadata/importlib/_dists.py +++ b/gestao_raul/Lib/site-packages/pip/_internal/metadata/importlib/_dists.py @@ -1,8 +1,8 @@ import email.message import importlib.metadata -import os import pathlib import zipfile +from os import PathLike from typing import ( Collection, Dict, @@ -11,27 +11,32 @@ from typing import ( Mapping, Optional, Sequence, + Union, cast, ) from pip._vendor.packaging.requirements import Requirement from pip._vendor.packaging.utils import NormalizedName, canonicalize_name +from pip._vendor.packaging.version import Version from pip._vendor.packaging.version import parse as parse_version from pip._internal.exceptions import InvalidWheel, UnsupportedWheel from pip._internal.metadata.base import ( BaseDistribution, BaseEntryPoint, - DistributionVersion, InfoPath, Wheel, ) from pip._internal.utils.misc import normalize_path -from pip._internal.utils.packaging import safe_extra +from pip._internal.utils.packaging import get_requirement from pip._internal.utils.temp_dir import TempDirectory from pip._internal.utils.wheel import parse_wheel, read_wheel_metadata_file -from ._compat import BasePath, get_dist_name +from ._compat import ( + BasePath, + get_dist_canonical_name, + parse_name_and_version_from_info_directory, +) class WheelDistribution(importlib.metadata.Distribution): @@ -92,6 +97,11 @@ class WheelDistribution(importlib.metadata.Distribution): raise UnsupportedWheel(error) return text + def locate_file(self, path: Union[str, "PathLike[str]"]) -> pathlib.Path: + # This method doesn't make sense for our in-memory wheel, but the API + # requires us to define it. + raise NotImplementedError + class Distribution(BaseDistribution): def __init__( @@ -134,8 +144,6 @@ class Distribution(BaseDistribution): dist = WheelDistribution.from_zipfile(zf, name, wheel.location) except zipfile.BadZipFile as e: raise InvalidWheel(wheel.location, name) from e - except UnsupportedWheel as e: - raise UnsupportedWheel(f"{name} has an invalid wheel, {e}") return cls(dist, dist.info_location, pathlib.PurePosixPath(wheel.location)) @property @@ -156,27 +164,20 @@ class Distribution(BaseDistribution): return None return normalize_path(str(self._installed_location)) - def _get_dist_name_from_location(self) -> Optional[str]: - """Try to get the name from the metadata directory name. - - This is much faster than reading metadata. - """ - if self._info_location is None: - return None - stem, suffix = os.path.splitext(self._info_location.name) - if suffix not in (".dist-info", ".egg-info"): - return None - return stem.split("-", 1)[0] - @property def canonical_name(self) -> NormalizedName: - name = self._get_dist_name_from_location() or get_dist_name(self._dist) - return canonicalize_name(name) + return get_dist_canonical_name(self._dist) @property - def version(self) -> DistributionVersion: + def version(self) -> Version: + if version := parse_name_and_version_from_info_directory(self._dist)[1]: + return parse_version(version) return parse_version(self._dist.version) + @property + def raw_version(self) -> str: + return self._dist.version + def is_file(self, path: InfoPath) -> bool: return self._dist.read_text(str(path)) is not None @@ -196,7 +197,7 @@ class Distribution(BaseDistribution): return content def iter_entry_points(self) -> Iterable[BaseEntryPoint]: - # importlib.metadata's EntryPoint structure sasitfies BaseEntryPoint. + # importlib.metadata's EntryPoint structure satisfies BaseEntryPoint. return self._dist.entry_points def _metadata_impl(self) -> email.message.Message: @@ -207,15 +208,18 @@ class Distribution(BaseDistribution): # until upstream can improve the protocol. (python/cpython#94952) return cast(email.message.Message, self._dist.metadata) - def iter_provided_extras(self) -> Iterable[str]: - return ( - safe_extra(extra) for extra in self.metadata.get_all("Provides-Extra", []) - ) + def iter_provided_extras(self) -> Iterable[NormalizedName]: + return [ + canonicalize_name(extra) + for extra in self.metadata.get_all("Provides-Extra", []) + ] def iter_dependencies(self, extras: Collection[str] = ()) -> Iterable[Requirement]: - contexts: Sequence[Dict[str, str]] = [{"extra": safe_extra(e)} for e in extras] + contexts: Sequence[Dict[str, str]] = [{"extra": e} for e in extras] for req_string in self.metadata.get_all("Requires-Dist", []): - req = Requirement(req_string) + # strip() because email.message.Message.get_all() may return a leading \n + # in case a long header was wrapped. + req = get_requirement(req_string.strip()) if not req.marker: yield req elif not extras and req.marker.evaluate({"extra": ""}): diff --git a/gestao_raul/Lib/site-packages/pip/_internal/metadata/importlib/_envs.py b/gestao_raul/Lib/site-packages/pip/_internal/metadata/importlib/_envs.py index cbec59e..4d906fd 100644 --- a/gestao_raul/Lib/site-packages/pip/_internal/metadata/importlib/_envs.py +++ b/gestao_raul/Lib/site-packages/pip/_internal/metadata/importlib/_envs.py @@ -15,7 +15,7 @@ from pip._internal.models.wheel import Wheel from pip._internal.utils.deprecation import deprecated from pip._internal.utils.filetypes import WHEEL_EXTENSION -from ._compat import BadMetadata, BasePath, get_dist_name, get_info_location +from ._compat import BadMetadata, BasePath, get_dist_canonical_name, get_info_location from ._dists import Distribution logger = logging.getLogger(__name__) @@ -61,14 +61,13 @@ class _DistributionFinder: for dist in importlib.metadata.distributions(path=[location]): info_location = get_info_location(dist) try: - raw_name = get_dist_name(dist) + name = get_dist_canonical_name(dist) except BadMetadata as e: logger.warning("Skipping %s due to %s", info_location, e.reason) continue - normalized_name = canonicalize_name(raw_name) - if normalized_name in self._found_names: + if name in self._found_names: continue - self._found_names.add(normalized_name) + self._found_names.add(name) yield dist, info_location def find(self, location: str) -> Iterator[BaseDistribution]: @@ -150,8 +149,9 @@ class _DistributionFinder: def _emit_egg_deprecation(location: Optional[str]) -> None: deprecated( reason=f"Loading egg at {location} is deprecated.", - replacement="to use pip for package installation.", - gone_in=None, + replacement="to use pip for package installation", + gone_in="25.1", + issue=12330, ) @@ -174,15 +174,16 @@ class Environment(BaseEnvironment): for location in self._paths: yield from finder.find(location) for dist in finder.find_eggs(location): - # _emit_egg_deprecation(dist.location) # TODO: Enable this. + _emit_egg_deprecation(dist.location) yield dist # This must go last because that's how pkg_resources tie-breaks. yield from finder.find_linked(location) def get_distribution(self, name: str) -> Optional[BaseDistribution]: + canonical_name = canonicalize_name(name) matches = ( distribution for distribution in self.iter_all_distributions() - if distribution.canonical_name == canonicalize_name(name) + if distribution.canonical_name == canonical_name ) return next(matches, None) diff --git a/gestao_raul/Lib/site-packages/pip/_internal/metadata/pkg_resources.py b/gestao_raul/Lib/site-packages/pip/_internal/metadata/pkg_resources.py index f330ef1..4ea84f9 100644 --- a/gestao_raul/Lib/site-packages/pip/_internal/metadata/pkg_resources.py +++ b/gestao_raul/Lib/site-packages/pip/_internal/metadata/pkg_resources.py @@ -3,11 +3,20 @@ import email.parser import logging import os import zipfile -from typing import Collection, Iterable, Iterator, List, Mapping, NamedTuple, Optional +from typing import ( + Collection, + Iterable, + Iterator, + List, + Mapping, + 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 Version from pip._vendor.packaging.version import parse as parse_version from pip._internal.exceptions import InvalidWheel, NoneMetadataError, UnsupportedWheel @@ -19,13 +28,16 @@ from .base import ( BaseDistribution, BaseEntryPoint, BaseEnvironment, - DistributionVersion, InfoPath, Wheel, ) +__all__ = ["NAME", "Distribution", "Environment"] + logger = logging.getLogger(__name__) +NAME = "pkg_resources" + class EntryPoint(NamedTuple): name: str @@ -71,6 +83,18 @@ class InMemoryMetadata: class Distribution(BaseDistribution): def __init__(self, dist: pkg_resources.Distribution) -> None: self._dist = dist + # This is populated lazily, to avoid loading metadata for all possible + # distributions eagerly. + self.__extra_mapping: Optional[Mapping[NormalizedName, str]] = None + + @property + def _extra_mapping(self) -> Mapping[NormalizedName, str]: + if self.__extra_mapping is None: + self.__extra_mapping = { + canonicalize_name(extra): extra for extra in self._dist.extras + } + + return self.__extra_mapping @classmethod def from_directory(cls, directory: str) -> BaseDistribution: @@ -164,9 +188,13 @@ class Distribution(BaseDistribution): return canonicalize_name(self._dist.project_name) @property - def version(self) -> DistributionVersion: + def version(self) -> Version: return parse_version(self._dist.version) + @property + def raw_version(self) -> str: + return self._dist.version + def is_file(self, path: InfoPath) -> bool: return self._dist.has_metadata(str(path)) @@ -211,12 +239,15 @@ class Distribution(BaseDistribution): return feed_parser.close() 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) + if extras: + relevant_extras = set(self._extra_mapping) & set( + map(canonicalize_name, extras) + ) + extras = [self._extra_mapping[extra] for extra in relevant_extras] return self._dist.requires(extras) - def iter_provided_extras(self) -> Iterable[str]: - return self._dist.extras + def iter_provided_extras(self) -> Iterable[NormalizedName]: + return self._extra_mapping.keys() class Environment(BaseEnvironment): diff --git a/gestao_raul/Lib/site-packages/pip/_internal/models/__pycache__/__init__.cpython-310.pyc b/gestao_raul/Lib/site-packages/pip/_internal/models/__pycache__/__init__.cpython-310.pyc index 6fa33be204fa740492c5503fa13d8139436f6671..a3005761048c4f0a633107abd4b6f5cf6491348f 100644 GIT binary patch delta 33 ncmZo+`p3wf&&$ij00fKtR!`(^V2qvEBgq;RpNKEiOsSk1t9r&6&6=1OVOW4AKAq diff --git a/gestao_raul/Lib/site-packages/pip/_internal/models/__pycache__/candidate.cpython-310.pyc b/gestao_raul/Lib/site-packages/pip/_internal/models/__pycache__/candidate.cpython-310.pyc index 86154ce848fc55d3400ad8717d19c592d829f7a0..a046a5bb3ad12a17ad8337c5db4a5a2ba9a5e849 100644 GIT binary patch literal 1226 zcmZ`&%W4!s6s_v_JYqB^ppr-4+R-Wp4Fa)ipZk=1tbI-k9tgO@t+U3E|{vV5wU&dK(4xBx7wGYDy zrx_X0h*E>C%o^B{U11y8iQEc1nK$qwpAtd2%e}AkHQ_!F&Iu3BtTP$~y!Mu~>c4R# zY0)kkfMdTguxc<<2 z);&@PsQX!Dy6C*+V@v7793kX=ml8v(NetO(hsTPliEIDOZ=?>H3PMqdi z$ed+6gMy1p?JPuW55JT_jP+E<@m&+T(cl(c!#95T&(yT%+Y^ed^JefuzD+n2azZXF z$VX1-1xf~^h0*@zRYHx|!v%@((M*VN?1W5**R&-~0k){TjiFLuYS!SEK9n>n-h-p? zhmlP>-ufTaYG?Nv}$Ez@w*BoO+e8W zverg<Yx15ViL!X_^EC<*QQB!l^4kdO-*wgb+nS2hgBrYtetA9vm0y&Xqui{ zsVDveaO+?4feR4#T}UD z1_VI_RisZ-k0SPz-w)ED!oCXoQ5sQlpNK$&`$U8?+Vj(zh@O(9_61Ipgt~CRwUGdV zM|rUY|Cb)h?YrDav0nCJPd?7y=0%3t^P@gpnCAc_NvR;ICur(#0*j9{4TLX45x|76 zib&LY^#jtQqAnKpo5(?iJx?^m;(n0Ur>mxD!D``v1SD+$$F@83pfHvz#cf^|>%0)T z;8u>VJ&^+~jV!E*c|0gBpq#7tayCo39QR5c=X0k!iSL4f_ob`7mfFC5E>KXhj-UWt z!+GH@nXa6y1Fzl`XsX%52z2@w%H5JIY38hqMHU2wJ5FNIWQ?MUv>G-n|n4j>+xAz(wGPKDYlUrBA>Y z^r@q88W5_i!C{P@h1FMljsczi{rG<^lOzAFMPn`CfYBwS79VLBuTHxi@9f6hLQM1- zNY&>s{Kc%sn6W@?1@|sM7_A&D0!UlsC5u=L+MY4jU32V0Qzu&M#EQ~)#ni{LvXFBw=$^|2=$xcNlZZjD|6zLGH8f8s8{zcdhN#9TD7y0 z)YBC(R0n)sh*EbZE`!I=nHk^1Tkx>EP$kZs*O@r4Q@vay=a&E6AKF}*X_m$(TYYhk ZWJPz<?YdQH0I{{kw9XiNYA diff --git a/gestao_raul/Lib/site-packages/pip/_internal/models/__pycache__/direct_url.cpython-310.pyc b/gestao_raul/Lib/site-packages/pip/_internal/models/__pycache__/direct_url.cpython-310.pyc index 82a917eacfdabd35ffd49e1c0adcd3533c1edcec..612f00e91f1869b4a18ba454790ec00c634207e5 100644 GIT binary patch literal 7392 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 literal 7416 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 D;_Mo# diff --git a/gestao_raul/Lib/site-packages/pip/_internal/models/__pycache__/format_control.cpython-310.pyc b/gestao_raul/Lib/site-packages/pip/_internal/models/__pycache__/format_control.cpython-310.pyc index e5edcc67ee4c84d6dc454e95d2cec6383fe4c9ea..a88c2fcebfc95a2950016020d093ac7aba3b7134 100644 GIT binary patch delta 274 zcmdlex>S@mpO=@50SFfPtxn&zkvEo!F?n(}lO$_Ukdv$P=6)u1CM!0ev@;MF%K?cR zhAf6G#@P%hj6fC>kY)nX%s`rXE?Y2zCX3%MMvW>a9febbE zt!89X01xjpO=@50SKypgr?uv$Q#SVm^nF{Ns>D~wYVfPKfWljG-q=slRDGn)f~L~ zDU1skY8bK@vzUM+GZ3>ZWDaJ~Wb&)xs;jIaC?FC-ZYUG0II2;tW<+0LtCs0Xn)QGdVZ4BqKis WqK65j#}q`EO+Eos%{rNzYZd^i20Tgt diff --git a/gestao_raul/Lib/site-packages/pip/_internal/models/__pycache__/index.cpython-310.pyc b/gestao_raul/Lib/site-packages/pip/_internal/models/__pycache__/index.cpython-310.pyc index d6b183f5c15050cbb139691b23fc0baae8375b68..c267105008f655392715f3a1cd2b7d489a79bb86 100644 GIT binary patch delta 57 zcmX@hd7P6wpO=@50SFfPt=`D(%_JY?Y!wq)oLW>IQ=Xbrk{{!epIn-onpaXB6BOj+ L>b$v{DToOG>@N~9 delta 63 zcmX@kd6ttqpO=@50SKypgl^>aW>QUXwu%WYPAw{qDNoHQ$&Yc#PcF?(%_}L6Nlz^< RNz9KgN-WLUT*?&01ORyw6^j4> diff --git a/gestao_raul/Lib/site-packages/pip/_internal/models/__pycache__/installation_report.cpython-310.pyc b/gestao_raul/Lib/site-packages/pip/_internal/models/__pycache__/installation_report.cpython-310.pyc index cd82875dca27bbb52c0d9e7ac3f49001e99ce54d..e3348133aa00929f7112a9a78a38463b3d1a7562 100644 GIT binary patch delta 281 zcmX@jdx4iPpO=@50SFfPtxjj+-pIF;Q9i@jDkiizwWv6zJT<2zKgK0LximL5ucSC8 zD9FjxdGZ^^*<5TuEzUq(oG^JJle}9EV-^z-GZ%@2$SjsT#uN~rwT5v4+d_sc_7vth zthHc~B0ZouN0D9$Cx~ultYJ!Fv0K@7 delta 277 zcmcb>dzzOopO=@50SKypgr-|^ZRFd@sG8?&6%$&VT2vfUo|;pVALEjrT$-DjS5h34 zo?2Xzm>*x1Sei5W8RKj&R-i^_ATExW+|49!SHe`on8n=82qal*7#FZEWXNJmVVc8I z3le83(gKp~MOq~sC7d8uGb2zXQwp;ULk&|fgC@)54@?qFK#H4LX0j2pspu`1r2PDx zTfF&2ndzB%i8=8(nR(fh%b5*XS#mOqOC~R8b`}-_S}wxG!N$SD!otDK_JK!8X!3vN zHH?ar*RW_aYEQnwQYWbbR8zzQBET$O5K9b5s87ykZDmsgb0_~|)nk;LtjV?<01&N7 A0ssI2 diff --git a/gestao_raul/Lib/site-packages/pip/_internal/models/__pycache__/link.cpython-310.pyc b/gestao_raul/Lib/site-packages/pip/_internal/models/__pycache__/link.cpython-310.pyc index 4eb6f19ec71b34e41bd596720c8ac55cf53c3f73..792a90bddcc1dbceb7037335a6ece8427880491a 100644 GIT binary patch delta 8204 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 diff --git a/gestao_raul/Lib/site-packages/pip/_internal/models/__pycache__/scheme.cpython-310.pyc b/gestao_raul/Lib/site-packages/pip/_internal/models/__pycache__/scheme.cpython-310.pyc index 2ff9c7e76af0b68308349baaaf696e61324fba5b..cc1a8ba2d408f0efa9855acc7c97847d9d0e7fc9 100644 GIT binary patch delta 403 zcmYjNxlRKy5S{UQk6c`#NkzRvbd(_=4$+`30yImpT4hXxlFxI^1@r>V-JqezC${UR;aLl6D{;mM{u*Lt7T4!A(j@68WR>Z+^nDR znRlu4Tb1>utF6Nhk12?eoy0kNv9^p|>qpnMslt&}-bC!`DUeELv{2yMJ_0yo;S1UEx-P)2uL5K?*4Y z5ujaloOh$p)pnw+{k}*U%|8fw$%0k*bNJac?R?N4=5#$!9puW`&zDg5S>0L3Z-YTj AjQ{`u delta 564 zcmY+AyGlbr5Qb-G_gu`yYcFCKgfxPPs01R|NE*@N5IBVFCI*rm*gZke11Zc4NNO89 z-@)E@NU4pF;2mcIfn=8dV`q16%tJ5=Ye}(~1G3wXi}ou5ysKsbmy?z!?<6W_H*`(+NE09+qxjlk`NKh@*B9cZ$o<`$qNm3+_ zpzH>&E2lWeQtgBy}Zkp6jlIEai z`l+k8jY}IzY#W2__#KbRlQ51u{Z1Ok8$1wa`=KxRF&rI76pCH|tqAN24Wef+{;`EwdwD@nUb!FG+o`ExaS7|Vqx;bAY) SgRVKIH59<{4i$vqy8H)uRc53B diff --git a/gestao_raul/Lib/site-packages/pip/_internal/models/__pycache__/search_scope.cpython-310.pyc b/gestao_raul/Lib/site-packages/pip/_internal/models/__pycache__/search_scope.cpython-310.pyc index 44c8da5ea91108f4e1b2022af3631323b1c81534..a2a0cb111b8b52b06a43cd6d2b4172a1899e4d94 100644 GIT binary patch delta 1133 zcmZuw&1)1%6z}S;>8a`NNlY>-iOHbE4;q6+4=bxNW;cGJZj`97jDfK;RWr8fkJ+jU z>Rxg%%br#Ub@R0AO$0AF2p+t8@gK1FC%1qyYJ6^ zNAr5!v*3BU@VvJ8O)LN^QLQ)xQad+m-q6A~VC} z@Y*ella|x7xc!v0sHg~c)Pls$jJ4%c@EKqg_}94e73bf$ydoHPxz%MH(;9T3uH*<9Q;6b4O7tNnqx}}6vOZP>h^QCinXEha>R!fVEKcAmBPv{lW zG#}`N&DWI`G941=jbsq{%r5L>(}lAt6N#C=nnU0fwV9sC#Dl(^?V8)w%c9g+!5vS< zX+IHd48kOG6wMfJF~C$miM1TZrJD(z*ogptiPc9XavU~#(5T{wv$Q+wv;2lhM+Uw2YE9|taK+& z`?G82tbcV9dj;nlN7~i_0F-ehaLByyC&-F<>z^PC=CgllMLNhn3#J%sx1%h}b)@4w zQ|)#^m-9R+{Bn>}q3`Bg9!B;LXy(vtOWdkO;$0htPa))4)MhlW1L&LC2pWq6;n-wJ z3HQpqKq#t7-s{C#PmaJ!{)kWjy-4EaWBo|NbYWu)f9pmGC2d4p4b6fu$9xJ75Nby2 z``vO*#>}01gJD}DEnRcF-t1N}HO@>?>j`}o4ir-UgkU)$sQCX%DcDS!^VLMm5@0Bt VEoL#O1m6H(8!OvIJexTU@&ywB|4;w` delta 1311 zcmZ`&&u`pB6!wf~y6n^vn(BoI*uK}8@z2@+`~w2EZ8o>|A#_P8^% zY6_8ZXe!RtaOT&o=Uh1ee*>pMoDc^jB(8{3#G45vX$7|C^UU-6-h1Ek^C$B^%%A5I z6Ojkk$G>0A7iK;0Cwn-0`EXc+CHL;0XN%SJa2k0GeKEskzeK}hZ+Wy$!#$6NxACw? z(T3OW{9@_rcYpjquc5QM6b=2{qxdT{B&SU*K)@Vh8s9 zDHBPR3MFqAYD)xQGMGz4npAC>fNd92NfV?^!)hv8x<}qS8c5ej4==mNur9%pPXO$o9WU{A zFd*9T0WtM9ynAR}xT=XEl9eNIL=%vNt>ggCz|Mq8Qq+Y?5*OBL3xWVe=%e1oF_wyK zYa`(gA=qS77D}A5$Dn4aIrE5%DpiJj$cx%Z><8j3ywRVv zpF)fJ>-N*jk10KoGnE|B6r%|QO;y2b`7W^J1ptBw>VfnS@AtwhC|CrWn9y}6d;bNy zJ*=^HW6Tv3cH&J4AKeW`9}CMcK17Dzylg411lQ-u>N*HZnp;g_Rd4Gv(VYv26`lic zAier1DOxFEwlZEdt9SJG(dBctgOJAxJxl-w$8#B7vN`>0G>2~Jw0lv1+Fjl?-KAuy#7qai|7A$a rgm~R%brWSZ{g+r1u2h_kOSX!@L)ys+oetc14Y0l(-ECGxXll@s2 NGqO$o%({S)82|?=5_tds diff --git a/gestao_raul/Lib/site-packages/pip/_internal/models/__pycache__/target_python.cpython-310.pyc b/gestao_raul/Lib/site-packages/pip/_internal/models/__pycache__/target_python.cpython-310.pyc index 74686d014b873c677e5b44833f531f7033f36ee2..8d67b4b2f3250792c1a5315aa6ae46c9a0a93f02 100644 GIT binary patch delta 1264 zcmZWp&u`pB6!whAUfZ!Zn-s`qNm3WV!TqstMnEOf3JIZY)ugD}23hWUvT?Az%gk(O zsz{5}Ubs{Wb4S1pA;h6v;EcrIP~SOlKK{U9Y9M&$gCti6a;?1N0I%DFUF*{DqN%G}`U@XKBDg?33u7WHWoFS)$Q z{bggDrmb}04(rdSCUBh4cgg3((QP_-wVIFjk~~Xel?-Jpx$21~BoHltuJF+e^j-QI z$@PzP$PSD+xVLP6Xil4A4h}0*?#s&G<3d6eaaL}Rgp2!Zca)WtStMg{QR0XR>1z6U zv@nNQKv)Eb?21XAZ$HidOc45iYlu~NJh-v`=GN7Ygp^yK@?4F!E{q0~f|p8eUAgk^ z#dYmAHb`54)L3G+=@GrxxKCcxm!0!xUdA-EqTM$tHco`9`DU;NN0s~5keB@CSiJMT z{@FR-s!MId$zvg0_v&@5Au>gX0p`bizp_BU2|vaqUV-yXn9>2DpD`mO?BB?$RTImw zH+#>S!mtF&75$TYY8CmPsmTXLi$ul4Y>$^0?)~LnBh$JrjI3BzjPs~5QxPvjU^>x2 zc;Y1jSVl~&;BGDYX|O7WSAMMQYJSL7EJs4|Sxa04PuT(RY}<5*O&m(~uXC;G%4Q3{<`! zsvRE6q~Kv9!~dt4%Cq5(i3$Z*6H&@A388npo);dC&7Dk!_$|ipGD)dI&@miyQOj8l zc=w5G52VKighu5`oC7N&Gp&wY#R8TvDQk7!p2_nGzLO2$SxsWoTWim$a^ydAk5~^z z)Y5;>txvHVg#}QVS*gTHTt*1USJxpJTCXEKEv2?lMuC4YI3-@EV=&@aG@t}O?4d{L zqozs!@fiKvw&+7@dk>n?;tMY=*KtvkiY5KM-=V_NzxW}s^>6-JyKWpuF9mBI{2AA- T&*j#ag0|NtK5bE-ESmoTWnUSk delta 900 zcmZuuNlz3(6z*Djo9Ssr)-W;zHAWf?ns74{IB+l~fF>-O_Au$#P1D%Rq`DzaJV1gM zFD9h^ffvJ>n}5PHb@FPWCf*FV)$0)<#H#ey_1>%REngiszcuWvR;ws-z5Kow_V*pw zV`%+gy19-NU-3z-CYr02XBz8?;TnnQnx(DAm89xck#b-0HD76-_#t|Y zbUurp4J@;oB(gpUGpq_ni@(P=(FXsB!=oj#N@i;eCJ`j>=EB+uST1X}qjV!<2Keb# z7NvqDUPoRjSeb->&_<^mP0&1uH_j{kEdW()35N>1Dt{-Nd`us$hCyC3P&GHnVi*EauQ))sa_R7N2o ziPC~K!Mp{a0!#y(k5ryOYi3G-hI8n}P$)K3Y+(eOo>nmaWfT0fLh%nx#iv-SoY<4Y zgC)zUu_4J3TG8!9DR08`N3-yyfe2=;q diff --git a/gestao_raul/Lib/site-packages/pip/_internal/models/__pycache__/wheel.cpython-310.pyc b/gestao_raul/Lib/site-packages/pip/_internal/models/__pycache__/wheel.cpython-310.pyc index f072baded9dc810398ef2b028e624cfc684dde1f..7fa2c472a811f037344146a0464ca9cb67db39fb 100644 GIT binary patch delta 1573 zcmZux-ESL35Z~R~JD)H1IWg`>(h9CoC@}>K3KjH26{IEo5CkZq0Sn1oy&LDkeRc1g z56i(wsYHdSP;@Uy6(WJBs!vrOc<4WX#D8$`%u_{Qcmbi7*>e)7h)6ftnfcAkZ)V5) zVEnh|%%E5_5d8fxbGLPWWZgWB{qn27Q z5Yt)y24eX&QZF&`0je77o$rrUaasv&5%I>-Jm+p>&T+YKdmQWr4)s7bDx_Av^G>iNRiei1`U5r*KMxBFko@rfto3LD$ zE*MN7MYn;;cPca35G%0aEkMnpj}bFh>F3l}`~R2l66z`&DpMHUB&$&8CTa|I$p&Sm zO$_Hk_kF1hZ{m$28_7&&<}UBClrqaxdo06WqB+beY~Kz2CR#Ahqcxdqgqbju{Yg{# zy4NYq%4t|T)37=pT25s7L2NYx0Yi!170`rdyH3Pe&6;koZvtwCAmfU7!Iew;wB3J&<@kwb{SESo}BcIzGpW-vs=LblD`P! zW!X*4K&wKRerk(Wlq{%|y)hYcNZRu9o*J>;imIwOBF$M5qff%|=YmvkY)>M^TuAQ1 zl42YL_@Fr_ZZr;q7M%i7pcI=}!xd~`9TQvtjbNSVM0-S3LJ2Pasq0^m$Aw{yBoEYI zCS+);0EK??tU{JNf2PHKz8s3P7n5JLOJg+v_G@RD0q{WbP&qfe5b%|Bj}*wk<$=0ppDLN z^V^&_yPo`BvU?K}^QsiEhe%K;z3#bl@w`Ib2l63fVuYL%A#x>X- zp9P{8?yP359XoE+-{(n*&Q|weh6S=*__kZ)%S|4}@;OMKdD4?b*LI#)KxC_(m4C94 fV>=sq#tT^6$1Syui9+U=Ai delta 920 zcmZuv&rcIU6yDk0?k~2rDW#3r7%={5L6mqA5PJX;0tYXINNROiJJY&k={7Ul)ToIE zNaSY7Ts$d_7d>s@qUVk2g(m@x;Kp_s7-82gn}M|cR^yT+chWi3fN z;FZKl(MIaohBbD!=BVp2!p2sbyr_2gr^K6yVbRmc=Hgs+oe|2a9pZ;Ubt$N|w@EW( z)dpdq8#vT$`@Ewqqar`jW|e!T6hF}l=M5o_5)B%(Taivl%Xe#p!XM%ly;#YL108`B zv+nuC3Ec)ODf9x+vC`^1A;fpQW<8+L2OR|{fWmMD?S+n$6E_CDt*R)6G?YbIg`39L z%MghaVS1{K4Pvc1-ylu$v_;D|__48a>#9gRwT^T8iTMTz9Z`GR4MT#RUX#}knfYFx zDhXW)QILza<8sK0P&nWP_2`sb*w35;O@V(&7tjL#k^VIexsl~D?6IxDYlif8&$U0S$=a<}K*gZ< zxsq`oT!fqnfFc0APkIv|As|w~W(KY@z&rpv-$;EN1U@apz5h3RRj4ikHb2Vb$8$MV z&S*&fYl$t()}PUlI9eK_3!q-)zcY9Eqv6rJRD(Mx|7RH)^V 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, - ) + object.__setattr__(self, "name", name) + object.__setattr__(self, "version", parse_version(version)) + object.__setattr__(self, "link", link) def __str__(self) -> str: - return "{!r} candidate (version {} at {})".format( - self.name, - self.version, - self.link, - ) + return f"{self.name!r} candidate (version {self.version} at {self.link})" diff --git a/gestao_raul/Lib/site-packages/pip/_internal/models/direct_url.py b/gestao_raul/Lib/site-packages/pip/_internal/models/direct_url.py index c3de70a..fc5ec8d 100644 --- a/gestao_raul/Lib/site-packages/pip/_internal/models/direct_url.py +++ b/gestao_raul/Lib/site-packages/pip/_internal/models/direct_url.py @@ -1,8 +1,10 @@ """ PEP 610 """ + import json import re import urllib.parse -from typing import Any, Dict, Iterable, Optional, Type, TypeVar, Union +from dataclasses import dataclass +from typing import Any, ClassVar, Dict, Iterable, Optional, Type, TypeVar, Union __all__ = [ "DirectUrl", @@ -31,9 +33,7 @@ def _get( value = d[key] if not isinstance(value, expected_type): raise DirectUrlValidationError( - "{!r} has unexpected type for {} (expected {})".format( - value, key, expected_type - ) + f"{value!r} has unexpected type for {key} (expected {expected_type})" ) return value @@ -66,18 +66,13 @@ def _filter_none(**kwargs: Any) -> Dict[str, Any]: return {k: v for k, v in kwargs.items() if v is not None} +@dataclass class VcsInfo: - name = "vcs_info" + name: ClassVar = "vcs_info" - def __init__( - self, - vcs: str, - commit_id: str, - requested_revision: Optional[str] = None, - ) -> None: - self.vcs = vcs - self.requested_revision = requested_revision - self.commit_id = commit_id + vcs: str + commit_id: str + requested_revision: Optional[str] = None @classmethod def _from_dict(cls, d: Optional[Dict[str, Any]]) -> Optional["VcsInfo"]: @@ -105,22 +100,31 @@ class ArchiveInfo: hash: Optional[str] = None, hashes: Optional[Dict[str, str]] = None, ) -> None: - if hash is not None: + # set hashes before hash, since the hash setter will further populate hashes + self.hashes = hashes + self.hash = hash + + @property + def hash(self) -> Optional[str]: + return self._hash + + @hash.setter + def hash(self, value: Optional[str]) -> None: + if value is not None: # Auto-populate the hashes key to upgrade to the new format automatically. - # We don't back-populate the legacy hash key. + # We don't back-populate the legacy hash key from hashes. try: - hash_name, hash_value = hash.split("=", 1) + hash_name, hash_value = value.split("=", 1) except ValueError: raise DirectUrlValidationError( - f"invalid archive_info.hash format: {hash!r}" + f"invalid archive_info.hash format: {value!r}" ) - if hashes is None: - hashes = {hash_name: hash_value} - elif hash_name not in hash: - hashes = hashes.copy() - hashes[hash_name] = hash_value - self.hash = hash - self.hashes = hashes + if self.hashes is None: + self.hashes = {hash_name: hash_value} + elif hash_name not in self.hashes: + self.hashes = self.hashes.copy() + self.hashes[hash_name] = hash_value + self._hash = value @classmethod def _from_dict(cls, d: Optional[Dict[str, Any]]) -> Optional["ArchiveInfo"]: @@ -132,14 +136,11 @@ class ArchiveInfo: return _filter_none(hash=self.hash, hashes=self.hashes) +@dataclass class DirInfo: - name = "dir_info" + name: ClassVar = "dir_info" - def __init__( - self, - editable: bool = False, - ) -> None: - self.editable = editable + editable: bool = False @classmethod def _from_dict(cls, d: Optional[Dict[str, Any]]) -> Optional["DirInfo"]: @@ -154,16 +155,11 @@ class DirInfo: InfoType = Union[ArchiveInfo, DirInfo, VcsInfo] +@dataclass class DirectUrl: - def __init__( - self, - url: str, - info: InfoType, - subdirectory: Optional[str] = None, - ) -> None: - self.url = url - self.info = info - self.subdirectory = subdirectory + url: str + info: InfoType + subdirectory: Optional[str] = None def _remove_auth_from_netloc(self, netloc: str) -> str: if "@" not in netloc: diff --git a/gestao_raul/Lib/site-packages/pip/_internal/models/format_control.py b/gestao_raul/Lib/site-packages/pip/_internal/models/format_control.py index db3995e..ccd1127 100644 --- a/gestao_raul/Lib/site-packages/pip/_internal/models/format_control.py +++ b/gestao_raul/Lib/site-packages/pip/_internal/models/format_control.py @@ -33,9 +33,7 @@ class FormatControl: 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 - ) + return f"{self.__class__.__name__}({self.no_binary}, {self.only_binary})" @staticmethod def handle_mutual_excludes(value: str, target: Set[str], other: Set[str]) -> None: diff --git a/gestao_raul/Lib/site-packages/pip/_internal/models/installation_report.py b/gestao_raul/Lib/site-packages/pip/_internal/models/installation_report.py index b54afb1..b9c6330 100644 --- a/gestao_raul/Lib/site-packages/pip/_internal/models/installation_report.py +++ b/gestao_raul/Lib/site-packages/pip/_internal/models/installation_report.py @@ -14,7 +14,7 @@ class InstallationReport: def _install_req_to_dict(cls, ireq: InstallRequirement) -> Dict[str, Any]: assert ireq.download_info, f"No download_info for {ireq}" res = { - # PEP 610 json for the download URL. download_info.archive_info.hash may + # PEP 610 json for the download URL. download_info.archive_info.hashes may # be absent when the requirement was installed from the wheel cache # and the cache entry was populated by an older pip version that did not # record origin.json. @@ -22,7 +22,10 @@ class InstallationReport: # is_direct is true if the requirement was a direct URL reference (which # includes editable requirements), and false if the requirement was # downloaded from a PEP 503 index or --find-links. - "is_direct": bool(ireq.original_link), + "is_direct": ireq.is_direct, + # is_yanked is true if the requirement was yanked from the index, but + # was still selected by pip to conform to PEP 592. + "is_yanked": ireq.link.is_yanked if ireq.link else False, # requested is true if the requirement was specified by the user (aka # top level requirement), and false if it was installed as a dependency of a # requirement. https://peps.python.org/pep-0376/#requested @@ -33,7 +36,7 @@ class InstallationReport: } if ireq.user_supplied and ireq.extras: # For top level requirements, the list of requested extras, if any. - res["requested_extras"] = list(sorted(ireq.extras)) + res["requested_extras"] = sorted(ireq.extras) return res def to_dict(self) -> Dict[str, Any]: diff --git a/gestao_raul/Lib/site-packages/pip/_internal/models/link.py b/gestao_raul/Lib/site-packages/pip/_internal/models/link.py index a1e4d5a..27ad016 100644 --- a/gestao_raul/Lib/site-packages/pip/_internal/models/link.py +++ b/gestao_raul/Lib/site-packages/pip/_internal/models/link.py @@ -27,7 +27,6 @@ from pip._internal.utils.misc import ( 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: @@ -55,25 +54,25 @@ class LinkHash: name: str value: str - _hash_re = re.compile( + _hash_url_fragment_re = re.compile( # NB: we do not validate that the second group (.*) is a valid hex # digest. Instead, we simply keep that string in this class, and then check it # against Hashes when hash-checking is needed. This is easier to debug than # proactively discarding an invalid hex digest, as we handle incorrect hashes # and malformed hashes in the same place. - r"({choices})=(.*)".format( + r"[#&]({choices})=([^&]*)".format( choices="|".join(re.escape(hash_name) for hash_name in _SUPPORTED_HASHES) ), ) def __post_init__(self) -> None: - assert self._hash_re.match(f"{self.name}={self.value}") + assert self.name in _SUPPORTED_HASHES @classmethod @functools.lru_cache(maxsize=None) - def split_hash_name_and_value(cls, url: str) -> Optional["LinkHash"]: + def find_hash_url_fragment(cls, url: str) -> Optional["LinkHash"]: """Search a string for a checksum algorithm name and encoded output value.""" - match = cls._hash_re.search(url) + match = cls._hash_url_fragment_re.search(url) if match is None: return None name, value = match.groups() @@ -95,6 +94,28 @@ class LinkHash: return hashes.is_hash_allowed(self.name, hex_digest=self.value) +@dataclass(frozen=True) +class MetadataFile: + """Information about a core metadata file associated with a distribution.""" + + hashes: Optional[Dict[str, str]] + + def __post_init__(self) -> None: + if self.hashes is not None: + assert all(name in _SUPPORTED_HASHES for name in self.hashes) + + +def supported_hashes(hashes: Optional[Dict[str, str]]) -> Optional[Dict[str, str]]: + # Remove any unsupported hash types from the mapping. If this leaves no + # supported hashes, return None + if hashes is None: + return None + hashes = {n: v for n, v in hashes.items() if n in _SUPPORTED_HASHES} + if not hashes: + return None + return hashes + + def _clean_url_path_part(part: str) -> str: """ Clean a "part" of a URL path (i.e. after splitting on "@" characters). @@ -149,25 +170,38 @@ def _ensure_quoted_url(url: str) -> str: 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) + # `scheme://netloc/path?query#fragment`. + result = urllib.parse.urlsplit(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)) + return urllib.parse.urlunsplit(result._replace(path=path)) -class Link(KeyBasedCompareMixin): +def _absolute_link_url(base_url: str, url: str) -> str: + """ + A faster implementation of urllib.parse.urljoin with a shortcut + for absolute http/https URLs. + """ + if url.startswith(("https://", "http://")): + return url + else: + return urllib.parse.urljoin(base_url, url) + + +@functools.total_ordering +class Link: """Represents a parsed link from a Package Index's simple URL""" __slots__ = [ "_parsed_url", "_url", + "_path", "_hashes", "comes_from", "requires_python", "yanked_reason", - "dist_info_metadata", + "metadata_file_data", "cache_link_parsing", "egg_fragment", ] @@ -178,7 +212,7 @@ class Link(KeyBasedCompareMixin): comes_from: Optional[Union[str, "IndexContent"]] = None, requires_python: Optional[str] = None, yanked_reason: Optional[str] = None, - dist_info_metadata: Optional[str] = None, + metadata_file_data: Optional[MetadataFile] = None, cache_link_parsing: bool = True, hashes: Optional[Mapping[str, str]] = None, ) -> None: @@ -196,11 +230,10 @@ class Link(KeyBasedCompareMixin): 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 dist_info_metadata: the metadata attached to the file, or None if no such - metadata is provided. This is the value of the "data-dist-info-metadata" - attribute, if present, in a simple repository HTML link. This may be parsed - into its own `Link` by `self.metadata_link()`. See PEP 658 for more - information and the specification. + :param metadata_file_data: the metadata attached to the file, or None if + no such metadata is provided. This argument, if not None, indicates + that a separate metadata file exists, and also optionally supplies + hashes for that file. :param cache_link_parsing: A flag that is used elsewhere to determine whether resources retrieved from this link should be cached. PyPI URLs should generally have this set to False, for example. @@ -208,6 +241,10 @@ class Link(KeyBasedCompareMixin): determine the validity of a download. """ + # The comes_from, requires_python, and metadata_file_data arguments are + # only used by classmethods of this class, and are not used in client + # code directly. + # url can be a UNC windows share if url.startswith("\\\\"): url = path_to_url(url) @@ -216,8 +253,10 @@ class Link(KeyBasedCompareMixin): # Store the url as a private attribute to prevent accidentally # trying to set a new value. self._url = url + # The .path property is hot, so calculate its value ahead of time. + self._path = urllib.parse.unquote(self._parsed_url.path) - link_hash = LinkHash.split_hash_name_and_value(url) + link_hash = LinkHash.find_hash_url_fragment(url) hashes_from_link = {} if link_hash is None else link_hash.as_dict() if hashes is None: self._hashes = hashes_from_link @@ -227,9 +266,7 @@ class Link(KeyBasedCompareMixin): self.comes_from = comes_from self.requires_python = requires_python if requires_python else None self.yanked_reason = yanked_reason - self.dist_info_metadata = dist_info_metadata - - super().__init__(key=url, defining_class=Link) + self.metadata_file_data = metadata_file_data self.cache_link_parsing = cache_link_parsing self.egg_fragment = self._egg_fragment() @@ -247,12 +284,28 @@ class Link(KeyBasedCompareMixin): if file_url is None: return None - url = _ensure_quoted_url(urllib.parse.urljoin(page_url, file_url)) + url = _ensure_quoted_url(_absolute_link_url(page_url, file_url)) pyrequire = file_data.get("requires-python") yanked_reason = file_data.get("yanked") - dist_info_metadata = file_data.get("dist-info-metadata") hashes = file_data.get("hashes", {}) + # PEP 714: Indexes must use the name core-metadata, but + # clients should support the old name as a fallback for compatibility. + metadata_info = file_data.get("core-metadata") + if metadata_info is None: + metadata_info = file_data.get("dist-info-metadata") + + # The metadata info value may be a boolean, or a dict of hashes. + if isinstance(metadata_info, dict): + # The file exists, and hashes have been supplied + metadata_file_data = MetadataFile(supported_hashes(metadata_info)) + elif metadata_info: + # The file exists, but there are no hashes + metadata_file_data = MetadataFile(None) + else: + # False or not present: the file does not exist + metadata_file_data = None + # The Link.yanked_reason expects an empty string instead of a boolean. if yanked_reason and not isinstance(yanked_reason, str): yanked_reason = "" @@ -266,7 +319,7 @@ class Link(KeyBasedCompareMixin): requires_python=pyrequire, yanked_reason=yanked_reason, hashes=hashes, - dist_info_metadata=dist_info_metadata, + metadata_file_data=metadata_file_data, ) @classmethod @@ -283,17 +336,42 @@ class Link(KeyBasedCompareMixin): if not href: return None - url = _ensure_quoted_url(urllib.parse.urljoin(base_url, href)) + url = _ensure_quoted_url(_absolute_link_url(base_url, href)) pyrequire = anchor_attribs.get("data-requires-python") yanked_reason = anchor_attribs.get("data-yanked") - dist_info_metadata = anchor_attribs.get("data-dist-info-metadata") + + # PEP 714: Indexes must use the name data-core-metadata, but + # clients should support the old name as a fallback for compatibility. + metadata_info = anchor_attribs.get("data-core-metadata") + if metadata_info is None: + metadata_info = anchor_attribs.get("data-dist-info-metadata") + # The metadata info value may be the string "true", or a string of + # the form "hashname=hashval" + if metadata_info == "true": + # The file exists, but there are no hashes + metadata_file_data = MetadataFile(None) + elif metadata_info is None: + # The file does not exist + metadata_file_data = None + else: + # The file exists, and hashes have been supplied + hashname, sep, hashval = metadata_info.partition("=") + if sep == "=": + metadata_file_data = MetadataFile(supported_hashes({hashname: hashval})) + else: + # Error - data is wrong. Treat as no hashes supplied. + logger.debug( + "Index returned invalid data-dist-info-metadata value: %s", + metadata_info, + ) + metadata_file_data = MetadataFile(None) return cls( url, comes_from=page_url, requires_python=pyrequire, yanked_reason=yanked_reason, - dist_info_metadata=dist_info_metadata, + metadata_file_data=metadata_file_data, ) def __str__(self) -> str: @@ -302,15 +380,26 @@ class Link(KeyBasedCompareMixin): else: rp = "" if self.comes_from: - return "{} (from {}){}".format( - redact_auth_from_url(self._url), self.comes_from, rp - ) + return f"{redact_auth_from_url(self._url)} (from {self.comes_from}){rp}" else: return redact_auth_from_url(str(self._url)) def __repr__(self) -> str: return f"" + def __hash__(self) -> int: + return hash(self.url) + + def __eq__(self, other: Any) -> bool: + if not isinstance(other, Link): + return NotImplemented + return self.url == other.url + + def __lt__(self, other: Any) -> bool: + if not isinstance(other, Link): + return NotImplemented + return self.url < other.url + @property def url(self) -> str: return self._url @@ -346,7 +435,7 @@ class Link(KeyBasedCompareMixin): @property def path(self) -> str: - return urllib.parse.unquote(self._parsed_url.path) + return self._path def splitext(self) -> Tuple[str, str]: return splitext(posixpath.basename(self.path.rstrip("/"))) @@ -377,10 +466,10 @@ class Link(KeyBasedCompareMixin): project_name = match.group(1) if not self._project_name_re.match(project_name): deprecated( - reason=f"{self} contains an egg fragment with a non-PEP 508 name", + reason=f"{self} contains an egg fragment with a non-PEP 508 name.", replacement="to use the req @ url syntax, and remove the egg fragment", - gone_in="25.0", - issue=11617, + gone_in="25.1", + issue=13157, ) return project_name @@ -395,22 +484,13 @@ class Link(KeyBasedCompareMixin): return match.group(1) def metadata_link(self) -> Optional["Link"]: - """Implementation of PEP 658 parsing.""" - # Note that Link.from_element() parsing the "data-dist-info-metadata" attribute - # from an HTML anchor tag is typically how the Link.dist_info_metadata attribute - # gets set. - if self.dist_info_metadata is None: + """Return a link to the associated core metadata file (if any).""" + if self.metadata_file_data is None: return None metadata_url = f"{self.url_without_fragment}.metadata" - # If data-dist-info-metadata="true" is set, then the metadata file exists, - # but there is no information about its checksum or anything else. - if self.dist_info_metadata != "true": - link_hash = LinkHash.split_hash_name_and_value(self.dist_info_metadata) - else: - link_hash = None - if link_hash is None: + if self.metadata_file_data.hashes is None: return Link(metadata_url) - return Link(metadata_url, hashes=link_hash.as_dict()) + return Link(metadata_url, hashes=self.metadata_file_data.hashes) def as_hashes(self) -> Hashes: return Hashes({k: [v] for k, v in self._hashes.items()}) diff --git a/gestao_raul/Lib/site-packages/pip/_internal/models/scheme.py b/gestao_raul/Lib/site-packages/pip/_internal/models/scheme.py index f51190a..06a9a55 100644 --- a/gestao_raul/Lib/site-packages/pip/_internal/models/scheme.py +++ b/gestao_raul/Lib/site-packages/pip/_internal/models/scheme.py @@ -5,10 +5,12 @@ For a general overview of available schemes and their context, see https://docs.python.org/3/install/index.html#alternate-installation. """ +from dataclasses import dataclass SCHEME_KEYS = ["platlib", "purelib", "headers", "scripts", "data"] +@dataclass(frozen=True) class Scheme: """A Scheme holds paths which are used as the base directories for artifacts associated with a Python package. @@ -16,16 +18,8 @@ class Scheme: __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 + platlib: str + purelib: str + headers: str + scripts: str + data: str diff --git a/gestao_raul/Lib/site-packages/pip/_internal/models/search_scope.py b/gestao_raul/Lib/site-packages/pip/_internal/models/search_scope.py index a64af73..ee7bc86 100644 --- a/gestao_raul/Lib/site-packages/pip/_internal/models/search_scope.py +++ b/gestao_raul/Lib/site-packages/pip/_internal/models/search_scope.py @@ -3,6 +3,7 @@ import logging import os import posixpath import urllib.parse +from dataclasses import dataclass from typing import List from pip._vendor.packaging.utils import canonicalize_name @@ -14,14 +15,18 @@ from pip._internal.utils.misc import normalize_path, redact_auth_from_url logger = logging.getLogger(__name__) +@dataclass(frozen=True) class SearchScope: - """ Encapsulates the locations that pip is configured to search. """ __slots__ = ["find_links", "index_urls", "no_index"] + find_links: List[str] + index_urls: List[str] + no_index: bool + @classmethod def create( cls, @@ -64,22 +69,11 @@ class SearchScope: no_index=no_index, ) - def __init__( - self, - find_links: List[str], - index_urls: List[str], - no_index: bool, - ) -> None: - self.find_links = find_links - self.index_urls = index_urls - self.no_index = no_index - 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 diff --git a/gestao_raul/Lib/site-packages/pip/_internal/models/selection_prefs.py b/gestao_raul/Lib/site-packages/pip/_internal/models/selection_prefs.py index 977bc4c..e9b50aa 100644 --- a/gestao_raul/Lib/site-packages/pip/_internal/models/selection_prefs.py +++ b/gestao_raul/Lib/site-packages/pip/_internal/models/selection_prefs.py @@ -3,6 +3,8 @@ from typing import Optional from pip._internal.models.format_control import FormatControl +# TODO: This needs Python 3.10's improved slots support for dataclasses +# to be converted into a dataclass. class SelectionPreferences: """ Encapsulates the candidate selection preferences for downloading diff --git a/gestao_raul/Lib/site-packages/pip/_internal/models/target_python.py b/gestao_raul/Lib/site-packages/pip/_internal/models/target_python.py index 744bd7e..88925a9 100644 --- a/gestao_raul/Lib/site-packages/pip/_internal/models/target_python.py +++ b/gestao_raul/Lib/site-packages/pip/_internal/models/target_python.py @@ -1,5 +1,5 @@ import sys -from typing import List, Optional, Tuple +from typing import List, Optional, Set, Tuple from pip._vendor.packaging.tags import Tag @@ -8,7 +8,6 @@ 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. @@ -22,6 +21,7 @@ class TargetPython: "py_version", "py_version_info", "_valid_tags", + "_valid_tags_set", ] def __init__( @@ -61,8 +61,9 @@ class TargetPython: self.py_version = py_version self.py_version_info = py_version_info - # This is used to cache the return value of get_tags(). + # This is used to cache the return value of get_(un)sorted_tags. self._valid_tags: Optional[List[Tag]] = None + self._valid_tags_set: Optional[Set[Tag]] = None def format_given(self) -> str: """ @@ -84,7 +85,7 @@ class TargetPython: f"{key}={value!r}" for key, value in key_values if value is not None ) - def get_tags(self) -> List[Tag]: + def get_sorted_tags(self) -> List[Tag]: """ Return the supported PEP 425 tags to check wheel candidates against. @@ -108,3 +109,13 @@ class TargetPython: self._valid_tags = tags return self._valid_tags + + def get_unsorted_tags(self) -> Set[Tag]: + """Exactly the same as get_sorted_tags, but returns a set. + + This is important for performance. + """ + if self._valid_tags_set is None: + self._valid_tags_set = set(self.get_sorted_tags()) + + return self._valid_tags_set diff --git a/gestao_raul/Lib/site-packages/pip/_internal/models/wheel.py b/gestao_raul/Lib/site-packages/pip/_internal/models/wheel.py index a5dc12b..ea85600 100644 --- a/gestao_raul/Lib/site-packages/pip/_internal/models/wheel.py +++ b/gestao_raul/Lib/site-packages/pip/_internal/models/wheel.py @@ -1,12 +1,18 @@ """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._vendor.packaging.utils import ( + InvalidWheelFilename as PackagingInvalidWheelName, +) +from pip._vendor.packaging.utils import parse_wheel_filename from pip._internal.exceptions import InvalidWheelFilename +from pip._internal.utils.deprecation import deprecated class Wheel: @@ -28,9 +34,29 @@ class Wheel: 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("_", "-") + _version = wheel_info.group("ver") + if "_" in _version: + try: + parse_wheel_filename(filename) + except PackagingInvalidWheelName as e: + deprecated( + reason=( + f"Wheel filename {filename!r} is not correctly normalised. " + "Future versions of pip will raise the following error:\n" + f"{e.args[0]}\n\n" + ), + replacement=( + "to rename the wheel to use a correctly normalised " + "name (this may require updating the version in " + "the project metadata)" + ), + gone_in="25.1", + issue=12938, + ) + + _version = _version.replace("_", "-") + + self.version = _version self.build_tag = wheel_info.group("build") self.pyversions = wheel_info.group("pyver").split(".") self.abis = wheel_info.group("abi").split(".") diff --git a/gestao_raul/Lib/site-packages/pip/_internal/network/__pycache__/__init__.cpython-310.pyc b/gestao_raul/Lib/site-packages/pip/_internal/network/__pycache__/__init__.cpython-310.pyc index a8bcfc59982bb49abc6dc4496e423eb380b9db99..0cd48ee2fda652ec78ee7ea5a4fee64c39e8223d 100644 GIT binary patch delta 33 ncmeyt_=%A_pO=@50SFfPt)9qT%osPZUXnE^$jQ}t;^I&MoPr6t delta 39 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 jZV&MTL+`wCLeFOrkQ+cRg7IK`62 diff --git a/gestao_raul/Lib/site-packages/pip/_internal/network/__pycache__/cache.cpython-310.pyc b/gestao_raul/Lib/site-packages/pip/_internal/network/__pycache__/cache.cpython-310.pyc index 9cd48974853e9b698f836f7e37d225b9e93f4f2d..140477abdb4f3a62e33e3bcc1b776eb80f4fbb50 100644 GIT binary patch literal 4792 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 S&gv%pE}~twOna5B*8T&Ugs2Vx delta 1519 zcmZ8hO;6lb6!o*8JsxA5`3jVT!ia#XNt#j8v{BSn6osnUM062FQ7oj9nfC@Jvd7c+ z3>0caq(SPU3q&nds=9%y8@5#!{SWPit$#uPL8@%%y&g&?*z)naAAUaf+-v{2@Or|H z9LG}N`0n3l>%Mv9PLtn`ZqM!Oo*o*WK@>)q9uz{;GxN0(6hq6i@^v8?3vJKN*Jj{^ zuIGm1-gs^ogHl-b%CNS$&Bl18Lz&H-1L{?|2DZ-JDW#*baaKB@1LD;lE3C{a2MVij zbD){tHKsmQ8r7qJ9({aHOL z;Rg9GLnx)Y+Vm$iOtS&hSE_Ckn;1kr7gcby;d!r8@JM5i(lNQ5W>2b;gVYbiE^wY?0F&QX_ z4Wh(qqB1g25374xq8)4LL+d7)PgkwkwU4(6QSf{L7gL~gbtO~9T7!yt*ejPgqfwvt zGAg*wz@O7yz+fF9Bb}=}HK6$sgd{fDO3Pz&>7w&~Xn=J|^Z<-YqBJLZ7m3E&OM0v) z^n?t6SZpLPriad+p6JJgL_GoDbD&A#9B4%8nfDaAFj_)vCi=@_LVvU;_dgpAU~Q*l zrD46TOW-FcW)bQDSpgc`^FuC7wDfJ!jk!R^d2<@ZNaeTD`yoOdp@Hyrc(LwGo0dF& z2&6vq9dI_SJA`H9bq6o)YqNXeEu`cT$?FOL2U$n(x|(10ZfIG3B96En04d2mB$(r z;sNGiPG+^EUOdacjf3u*z~4n?#5?_NZ(V4ZgLJ%^^sGFi3O)V1yl@i-&AZX>_M5FO z-eZwy3jWO|{Cs3HjG#0r3Tdq}Z=eFAm@ZakJe-7#u0>HG%IL+vOU`6O!MujNwdUur e&t||E38cyE08}wG8yajwgW(QX(NtO^HS0g4_d6H> diff --git a/gestao_raul/Lib/site-packages/pip/_internal/network/__pycache__/download.cpython-310.pyc b/gestao_raul/Lib/site-packages/pip/_internal/network/__pycache__/download.cpython-310.pyc index 7c950a34e0472fceaae8f1193be166489fbeb015..3c3703309fa67c17643e58546b44c4d8719ba844 100644 GIT binary patch delta 2001 zcma)6&2Jk;6yI6zuGin+O&upr;?zytG@&1qQmN3=&<{jupYHV9P(h_nUcd=Kbc)tWN#0 zBhgMIq6&PzJoU}u+MUEOS-3NGv_}+5sP4qwgq4uC;UwLZm6CSYNxK;UTkPKimzi5U|wGv}N5lyUGgTJN?L7l!m(cJ(VaeLwZ`@ z13Pw4@#B{hS2TW*>dQu}@F;3lddY6cJ3$TLBi#@U!>rTNQ*qQ!V*cfD*BJNayWz8n zpX#bG&AhEHn_aUTULj|dTIAGCb#(F}5m~)Dp(v(OQv>r-o!kD64huA|d6U)Byacrb zMvM7QyTMIyQ9lq%1I1GaQSr6@{6G>-1E3b+C>kF^7#0upS1YKVl#maC6=duVXPr7{ zHf>*TIqfl+K;1+=MqHyI>*JXai_n%O-GdNZv&@1J|iFEJQEwKzhVc8IfRX>`6YB^UpCO1L7)f>VF6*&+F00E@bgf3 z^&?Zm=PwCg@kMs_^(BmGB3wq;BoE%s|D(|rn71mXa}&>@RhtRIHZ)?xwu1z7>rH3I zWu8}GWc&aooJ7F)mhTZOxr5@nT!k3o_gtBTg^?d6rkKc&kchaQFNGWR#u9@!tC=4s zF<{1G8#ja}#kcu#Pd;k$dCNe`AOe@*WP1_T;<7gEN1jK(S5Y2)pkKP-Gq2xy`;e8- uf$UD%*LdU{D|t#wsj7Sr&4X^6UUS&Xc&EM0VL(kW;nBfwp2WpsVeh|vlcC)J delta 2060 zcma)6O>7fK6y6!H*Bg8N6WjT9;)H}GI6y-Pf0>UXUM=nHCymCoW7*pPrm9Pn?~ZJXfB2)jqxT6M2`6=0Mj6n&^bT zKiI^vxf!1ef9^VW0&nh=S6y*=J@DrixF1x!vZ$;$^8Lu=mNrQD@k}VmkSs9>{YP}k zUm|ZI~gjfnpWivr)&h%f`P&MS{%G)OnJAhSW&VhzKe?Qg`U zw4k{`Au)EFu9*$95!)bBTFIQe8CzZJ-LtwTf7J(u#_wrbiH7FYiYNy+mU*cAwVS+@ z6lInS(p^ zRON!~jun$EZ~Ed=Uxais#CFVHVpiK+v}U z;!%^tVHH*c<{jVq(Hte~M{%T9if<2XMK7|z12GPk$fDci)?AK4`eAxuh5LS)zZdYj zU-Rl>A7+gq90DjspVCP!1s4}aAb(q{?Y$vaD8nS>#X!n{UjD6 z0MjKZ)N%~iC$G3r9A^uo{<2dG1U9BfBBTI72NX-4P#6y?0;{hGXL~(Q9Tp^oS(rCi zRtsR>^}6F#m=C;f0+?C21tw@Dze=~tZxeF~RTqy}?k{_FxS)f|t%_Put5%#a0hcpa@yk_@ad8Io zchn8_C9hT&qexESDBWA;^)PxJ#&RW<5~Y+7Gnk^9brySGi4YR5jyN>uYYtzo1dC!s zK1>aDJiiNAhf^+ZNSb!0ux-Q%gf|iJoe(<0BEplg$|@i?32+mBJ~odDuL`B~ZyKS0 zQ9b@=pD8Bg*Xa-bqw2*>aXZ&j<;4bo)0Aw?O9;DnSfxM3;%?%l7l}6-9t|M~{2bT~|A&kk{+;J)lc_%kOV)Dyek(ly_TrX*ozvX&J zT)ver#Hy9*B8NxoXuh9V!0bxw+zFAEALfhe>Q%#c?(uDgoAH{ru)u{-TfzPlEeNVr z@TkM+)f)l#w>#}HhQ<+8H>y6yBNn*ur({xs;W>roao1xj4nKjn*l!*O)HM^HI{fBI JMjmMy`xlAuu(tpJ diff --git a/gestao_raul/Lib/site-packages/pip/_internal/network/__pycache__/lazy_wheel.cpython-310.pyc b/gestao_raul/Lib/site-packages/pip/_internal/network/__pycache__/lazy_wheel.cpython-310.pyc index b5d84830fdfe75f580cba1c6a8c83b27047e722a..715c7a0217b3a9713432418214a80ae9f11479a3 100644 GIT binary patch delta 66 zcmaFhc*~JDpO=@50SFfPtxi9-k@pTGqub_JjM9wq3C>nAp~b01#WCfnIVJfqF8Rr& Vxv6<2#W6uaPOi?IwV1cb0s!P~7QFxf delta 72 zcmccR_`s1jpO=@50SKypgr;BH$a{y8F>UiJMrlUXG-s=r(Bjmh;+XQ(oRa()m;B_? a+|<01;+XW*;*!Mt_@czpoXslC+hhTjsTxQC diff --git a/gestao_raul/Lib/site-packages/pip/_internal/network/__pycache__/session.cpython-310.pyc b/gestao_raul/Lib/site-packages/pip/_internal/network/__pycache__/session.cpython-310.pyc index 7297e165d9c5eb5ac62bef6b25d359223941bbfa..ca7d2cdd9cc61d63b744c4cdef73dbdd8df163d7 100644 GIT binary patch delta 3028 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 k;lmQgB7w*Br%m4rY diff --git a/gestao_raul/Lib/site-packages/pip/_internal/network/__pycache__/utils.cpython-310.pyc b/gestao_raul/Lib/site-packages/pip/_internal/network/__pycache__/utils.cpython-310.pyc index b2d88d14e0798a5530799fab47da93e0124e2be8..87327e48c44f37db7365f65161282a0eee40380d 100644 GIT binary patch delta 420 zcmYk0&r1S96vt;~XV-OqS(cS#b_=9a$4Y}z$tV;Q2{vO7zFC#jmD!d40ndT#tz)Oc zOHhA}2mgy8I#jcEX<$C@@%=vD`_A-d-SkXTL*hMEXPwWfS#U7|1X5ofD7GSc3UUwI zF@~ASRF|X?i-VF!5VJK<8HG4#E(INo3AJ^mxfo2LTFihrBg_O%_);3V3M61d z4U}7*zNRsrE-G>lA&TDi@FPB#MU0%pRZ-?vHwZ=!jz$|U5p%vsw0arjPiI2$hLVVIG(l_(sKg#|g?x7SLw>*`hQwB!^k&FZDoxUkDS zx;2-2!+=}SXf{F=_aByr)cnAMai5)FVfq!fbHaL>J*b06oa^ipyY*DWFycgx}UbKxF_k>MK{F~qc~85R73 z>UCyJux|kd8|;uY5EPl&Myvn^vzQ&~tjJ3Dx?ci4#LQ8w3l6h@fXi&9YYh~d%wy$y z!}ploN3F`@wNWEkwR6!Mob(2?(;fECX#dndS$uTgHt_>KH2+0DG079pePUd!P65aXC?wxoP zP!Nd<3A1GyphI*-;#<&BT|>{OV8;#F;-}gF%=~v}_k;h#uVvM$qsaC3-uKbEIjyb0 zr|E^qx2_T(W}>C_pq~1H4~pDdNh56rO;9L&Zqd0f5VUs`ViV_3Ar93K<_{L$sX>QS z_LQzW{drXHLh0`9zoulX7!D~D51x~Z~Y0lqGzn{oWl|wv)a=v zOBi03sff!cR--6R2Asz#h|s~$3YQ2C={WnpcP#L%VuW`Et5=~*~N-S zi=I4$x!H>zJoIX>p8PZRFYx491<`qfVCV2-=6T=unP=v6^e$?MdOaX!z51~|`s2@MsszP92eT6swN!R+gS z=CBTJ{T@!Qw`o9YG-NidGmkcyOI_yEW{*4zXhd84P8_@?Hi>Iyv~%=eI zoL3A=XCADyjDuW5^(?9u+skARk8_+rtt#2`!o*tB-<>BA>P`2;y))S2VAUQ9!6n8l zo#D%zDQRJC1BLp(H)o9VBsu20j4fy`eS?nv;$HJ`*I$;G^>23tBHgPV@X{Z#d`pZ* zOv;Pc-8U%RjPIDgD*Z Optional[AuthInfo]: - ... + has_keyring: bool @abstractmethod - def save_auth_info(self, url: str, username: str, password: str) -> None: - ... + def get_auth_info( + self, url: str, username: Optional[str] + ) -> Optional[AuthInfo]: ... + + @abstractmethod + def save_auth_info(self, url: str, username: str, password: str) -> None: ... class KeyRingNullProvider(KeyRingBaseProvider): """Keyring null provider""" + has_keyring = False + def get_auth_info(self, url: str, username: Optional[str]) -> Optional[AuthInfo]: return None @@ -61,6 +71,8 @@ class KeyRingNullProvider(KeyRingBaseProvider): class KeyRingPythonProvider(KeyRingBaseProvider): """Keyring interface which uses locally imported `keyring`""" + has_keyring = True + def __init__(self) -> None: import keyring @@ -97,6 +109,8 @@ class KeyRingCliProvider(KeyRingBaseProvider): PATH. """ + has_keyring = True + def __init__(self, cmd: str) -> None: self.keyring = cmd @@ -123,7 +137,7 @@ class KeyRingCliProvider(KeyRingBaseProvider): res = subprocess.run( cmd, stdin=subprocess.DEVNULL, - capture_output=True, + stdout=subprocess.PIPE, env=env, ) if res.returncode: @@ -134,66 +148,89 @@ class KeyRingCliProvider(KeyRingBaseProvider): """Mirror the implementation of keyring.set_password using cli""" if self.keyring is None: return None - - cmd = [self.keyring, "set", service_name, username] - input_ = (password + os.linesep).encode("utf-8") env = os.environ.copy() env["PYTHONIOENCODING"] = "utf-8" - res = subprocess.run(cmd, input=input_, env=env) - res.check_returncode() + subprocess.run( + [self.keyring, "set", service_name, username], + input=f"{password}{os.linesep}".encode(), + env=env, + check=True, + ) return None -def get_keyring_provider() -> KeyRingBaseProvider: +@lru_cache(maxsize=None) +def get_keyring_provider(provider: str) -> KeyRingBaseProvider: + logger.verbose("Keyring provider requested: %s", provider) + # keyring has previously failed and been disabled - if not KEYRING_DISABLED: - # Default to trying to use Python provider + if KEYRING_DISABLED: + provider = "disabled" + if provider in ["import", "auto"]: try: - return KeyRingPythonProvider() + impl = KeyRingPythonProvider() + logger.verbose("Keyring provider set: import") + return impl except ImportError: pass except Exception as exc: # In the event of an unexpected exception # we should warn the user - logger.warning( - "Installed copy of keyring fails with exception %s, " - "trying to find a keyring executable as a fallback", - str(exc), - ) - - # Fallback to Cli Provider if `keyring` isn't installed + msg = "Installed copy of keyring fails with exception %s" + if provider == "auto": + msg = msg + ", trying to find a keyring executable as a fallback" + logger.warning(msg, exc, exc_info=logger.isEnabledFor(logging.DEBUG)) + if provider in ["subprocess", "auto"]: cli = shutil.which("keyring") + if cli and cli.startswith(sysconfig.get_path("scripts")): + # all code within this function is stolen from shutil.which implementation + @typing.no_type_check + def PATH_as_shutil_which_determines_it() -> str: + path = os.environ.get("PATH", None) + if path is None: + try: + path = os.confstr("CS_PATH") + except (AttributeError, ValueError): + # os.confstr() or CS_PATH is not available + path = os.defpath + # bpo-35755: Don't use os.defpath if the PATH environment variable is + # set to an empty string + + return path + + scripts = Path(sysconfig.get_path("scripts")) + + paths = [] + for path in PATH_as_shutil_which_determines_it().split(os.pathsep): + p = Path(path) + try: + if not p.samefile(scripts): + paths.append(path) + except FileNotFoundError: + pass + + path = os.pathsep.join(paths) + + cli = shutil.which("keyring", path=path) + if cli: + logger.verbose("Keyring provider set: subprocess with executable %s", cli) return KeyRingCliProvider(cli) + logger.verbose("Keyring provider set: disabled") return KeyRingNullProvider() -def get_keyring_auth(url: Optional[str], username: Optional[str]) -> Optional[AuthInfo]: - """Return the tuple auth for a given url from keyring.""" - # Do nothing if no url was provided - if not url: - return None - - keyring = get_keyring_provider() - try: - return keyring.get_auth_info(url, username) - except Exception as exc: - logger.warning( - "Keyring is skipped due to an exception: %s", - str(exc), - ) - global KEYRING_DISABLED - KEYRING_DISABLED = True - return None - - class MultiDomainBasicAuth(AuthBase): def __init__( - self, prompting: bool = True, index_urls: Optional[List[str]] = None + self, + prompting: bool = True, + index_urls: Optional[List[str]] = None, + keyring_provider: str = "auto", ) -> None: self.prompting = prompting self.index_urls = index_urls + self.keyring_provider = keyring_provider # type: ignore[assignment] 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, @@ -202,6 +239,51 @@ class MultiDomainBasicAuth(AuthBase): # ``save_credentials`` to save these. self._credentials_to_save: Optional[Credentials] = None + @property + def keyring_provider(self) -> KeyRingBaseProvider: + return get_keyring_provider(self._keyring_provider) + + @keyring_provider.setter + def keyring_provider(self, provider: str) -> None: + # The free function get_keyring_provider has been decorated with + # functools.cache. If an exception occurs in get_keyring_auth that + # cache will be cleared and keyring disabled, take that into account + # if you want to remove this indirection. + self._keyring_provider = provider + + @property + def use_keyring(self) -> bool: + # We won't use keyring when --no-input is passed unless + # a specific provider is requested because it might require + # user interaction + return self.prompting or self._keyring_provider not in ["auto", "disabled"] + + def _get_keyring_auth( + self, + url: Optional[str], + username: Optional[str], + ) -> Optional[AuthInfo]: + """Return the tuple auth for a given url from keyring.""" + # Do nothing if no url was provided + if not url: + return None + + try: + return self.keyring_provider.get_auth_info(url, username) + except Exception as exc: + # Log the full exception (with stacktrace) at debug, so it'll only + # show up when running in verbose mode. + logger.debug("Keyring is skipped due to an exception", exc_info=True) + # Always log a shortened version of the exception. + logger.warning( + "Keyring is skipped due to an exception: %s", + str(exc), + ) + global KEYRING_DISABLED + KEYRING_DISABLED = True + get_keyring_provider.cache_clear() + return None + def _get_index_url(self, url: str) -> Optional[str]: """Return the original index URL matching the requested URL. @@ -218,15 +300,42 @@ class MultiDomainBasicAuth(AuthBase): 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 + url = remove_auth_from_url(url).rstrip("/") + "/" + parsed_url = urllib.parse.urlsplit(url) + + candidates = [] + + for index in self.index_urls: + index = index.rstrip("/") + "/" + parsed_index = urllib.parse.urlsplit(remove_auth_from_url(index)) + if parsed_url == parsed_index: + return index + + if parsed_url.netloc != parsed_index.netloc: + continue + + candidate = urllib.parse.urlsplit(index) + candidates.append(candidate) + + if not candidates: + return None + + candidates.sort( + reverse=True, + key=lambda candidate: commonprefix( + [ + parsed_url.path, + candidate.path, + ] + ).rfind("/"), + ) + + return urllib.parse.urlunsplit(candidates[0]) def _get_new_credentials( self, original_url: str, + *, allow_netrc: bool = True, allow_keyring: bool = False, ) -> AuthInfo: @@ -270,8 +379,8 @@ class MultiDomainBasicAuth(AuthBase): # 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) + self._get_keyring_auth(index_url, username) or + self._get_keyring_auth(netloc, username) ) # fmt: on if kr_auth: @@ -348,18 +457,23 @@ class MultiDomainBasicAuth(AuthBase): def _prompt_for_password( self, netloc: str ) -> Tuple[Optional[str], Optional[str], bool]: - username = ask_input(f"User for {netloc}: ") + username = ask_input(f"User for {netloc}: ") if self.prompting else None 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 + if self.use_keyring: + auth = self._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 get_keyring_provider() is None: + if ( + not self.prompting + or not self.use_keyring + or not self.keyring_provider.has_keyring + ): return False return ask("Save credentials to keyring [y/N]: ", ["y", "n"]) == "y" @@ -369,19 +483,22 @@ class MultiDomainBasicAuth(AuthBase): if resp.status_code != 401: return resp + username, password = None, None + + # Query the keyring for credentials: + if self.use_keyring: + username, password = self._get_new_credentials( + resp.url, + allow_netrc=False, + allow_keyring=True, + ) + # We are not able to prompt the user so simply return the response - if not self.prompting: + if not self.prompting and not username and not password: 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: @@ -402,7 +519,9 @@ class MultiDomainBasicAuth(AuthBase): # Consume content and release the original connection to allow our new # request to reuse the same one. - resp.content + # The result of the assignment isn't used, it's just needed to consume + # the content. + _ = resp.content resp.raw.release_conn() # Add our new username and password to the request @@ -431,9 +550,8 @@ class MultiDomainBasicAuth(AuthBase): def save_credentials(self, resp: Response, **kwargs: Any) -> None: """Response callback to save credentials on success.""" - keyring = get_keyring_provider() - assert not isinstance( - keyring, KeyRingNullProvider + assert ( + self.keyring_provider.has_keyring ), "should never reach here without keyring" creds = self._credentials_to_save @@ -441,6 +559,8 @@ class MultiDomainBasicAuth(AuthBase): if creds and resp.status_code < 400: try: logger.info("Saving credentials to keyring") - keyring.save_auth_info(creds.url, creds.username, creds.password) + self.keyring_provider.save_auth_info( + creds.url, creds.username, creds.password + ) except Exception: logger.exception("Failed to save credentials") diff --git a/gestao_raul/Lib/site-packages/pip/_internal/network/cache.py b/gestao_raul/Lib/site-packages/pip/_internal/network/cache.py index a81a239..fca04e6 100644 --- a/gestao_raul/Lib/site-packages/pip/_internal/network/cache.py +++ b/gestao_raul/Lib/site-packages/pip/_internal/network/cache.py @@ -3,10 +3,11 @@ import os from contextlib import contextmanager -from typing import Generator, Optional +from datetime import datetime +from typing import BinaryIO, Generator, Optional, Union -from pip._vendor.cachecontrol.cache import BaseCache -from pip._vendor.cachecontrol.caches import FileCache +from pip._vendor.cachecontrol.cache import SeparateBodyBaseCache +from pip._vendor.cachecontrol.caches import SeparateBodyFileCache from pip._vendor.requests.models import Response from pip._internal.utils.filesystem import adjacent_tmp_file, replace @@ -28,10 +29,22 @@ def suppressed_cache_errors() -> Generator[None, None, None]: pass -class SafeFileCache(BaseCache): +class SafeFileCache(SeparateBodyBaseCache): """ A file based cache which is safe to use even when the target directory may not be accessible or writable. + + There is a race condition when two processes try to write and/or read the + same entry at the same time, since each entry consists of two separate + files (https://github.com/psf/cachecontrol/issues/324). We therefore have + additional logic that makes sure that both files to be present before + returning an entry; this fixes the read side of the race condition. + + For the write side, we assume that the server will only ever return the + same data for the same URL, which ought to be the case for files pip is + downloading. PyPI does not have a mechanism to swap out a wheel for + another wheel, for example. If this assumption is not true, the + CacheControl issue will need to be fixed. """ def __init__(self, directory: str) -> None: @@ -43,27 +56,63 @@ class SafeFileCache(BaseCache): # 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) + hashed = SeparateBodyFileCache.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) + # The cache entry is only valid if both metadata and body exist. + metadata_path = self._get_cache_path(key) + body_path = metadata_path + ".body" + if not (os.path.exists(metadata_path) and os.path.exists(body_path)): + return None with suppressed_cache_errors(): - with open(path, "rb") as f: + with open(metadata_path, "rb") as f: return f.read() - def set(self, key: str, value: bytes, expires: Optional[int] = None) -> None: - path = self._get_cache_path(key) + def _write(self, path: str, data: bytes) -> None: with suppressed_cache_errors(): ensure_dir(os.path.dirname(path)) with adjacent_tmp_file(path) as f: - f.write(value) + f.write(data) + # Inherit the read/write permissions of the cache directory + # to enable multi-user cache use-cases. + mode = ( + os.stat(self.directory).st_mode + & 0o666 # select read/write permissions of cache directory + | 0o600 # set owner read/write permissions + ) + # Change permissions only if there is no risk of following a symlink. + if os.chmod in os.supports_fd: + os.chmod(f.fileno(), mode) + elif os.chmod in os.supports_follow_symlinks: + os.chmod(f.name, mode, follow_symlinks=False) replace(f.name, path) + def set( + self, key: str, value: bytes, expires: Union[int, datetime, None] = None + ) -> None: + path = self._get_cache_path(key) + self._write(path, value) + def delete(self, key: str) -> None: path = self._get_cache_path(key) with suppressed_cache_errors(): os.remove(path) + with suppressed_cache_errors(): + os.remove(path + ".body") + + def get_body(self, key: str) -> Optional[BinaryIO]: + # The cache entry is only valid if both metadata and body exist. + metadata_path = self._get_cache_path(key) + body_path = metadata_path + ".body" + if not (os.path.exists(metadata_path) and os.path.exists(body_path)): + return None + with suppressed_cache_errors(): + return open(body_path, "rb") + + def set_body(self, key: str, body: bytes) -> None: + path = self._get_cache_path(key) + ".body" + self._write(path, body) diff --git a/gestao_raul/Lib/site-packages/pip/_internal/network/download.py b/gestao_raul/Lib/site-packages/pip/_internal/network/download.py index 79b82a5..5c3bce3 100644 --- a/gestao_raul/Lib/site-packages/pip/_internal/network/download.py +++ b/gestao_raul/Lib/site-packages/pip/_internal/network/download.py @@ -1,12 +1,13 @@ """Download files with progress indicators. """ + import email.message import logging import mimetypes import os from typing import Iterable, Optional, Tuple -from pip._vendor.requests.models import CONTENT_CHUNK_SIZE, Response +from pip._vendor.requests.models import Response from pip._internal.cli.progress_bars import get_download_progress_renderer from pip._internal.exceptions import NetworkConnectionError @@ -42,7 +43,7 @@ def _prepare_download( logged_url = redact_auth_from_url(url) if total_length: - logged_url = "{} ({})".format(logged_url, format_size(total_length)) + logged_url = f"{logged_url} ({format_size(total_length)})" if is_from_cache(resp): logger.info("Using cached %s", logged_url) @@ -55,12 +56,12 @@ def _prepare_download( show_progress = False elif not total_length: show_progress = True - elif total_length > (40 * 1000): + elif total_length > (512 * 1024): show_progress = True else: show_progress = False - chunks = response_chunks(resp, CONTENT_CHUNK_SIZE) + chunks = response_chunks(resp) if not show_progress: return chunks diff --git a/gestao_raul/Lib/site-packages/pip/_internal/network/lazy_wheel.py b/gestao_raul/Lib/site-packages/pip/_internal/network/lazy_wheel.py index 854a6fa..03f883c 100644 --- a/gestao_raul/Lib/site-packages/pip/_internal/network/lazy_wheel.py +++ b/gestao_raul/Lib/site-packages/pip/_internal/network/lazy_wheel.py @@ -6,7 +6,7 @@ from bisect import bisect_left, bisect_right from contextlib import contextmanager from tempfile import NamedTemporaryFile from typing import Any, Dict, Generator, List, Optional, Tuple -from zipfile import BadZipfile, ZipFile +from zipfile import BadZipFile, ZipFile from pip._vendor.packaging.utils import canonicalize_name from pip._vendor.requests.models import CONTENT_CHUNK_SIZE, Response @@ -159,8 +159,8 @@ class LazyZipOverHTTP: try: # For read-only ZIP files, ZipFile only needs # methods read, seek, seekable and tell. - ZipFile(self) # type: ignore - except BadZipfile: + ZipFile(self) + except BadZipFile: pass else: break diff --git a/gestao_raul/Lib/site-packages/pip/_internal/network/session.py b/gestao_raul/Lib/site-packages/pip/_internal/network/session.py index e512ac7..5e10f8f 100644 --- a/gestao_raul/Lib/site-packages/pip/_internal/network/session.py +++ b/gestao_raul/Lib/site-packages/pip/_internal/network/session.py @@ -3,6 +3,7 @@ network request configuration and behavior. """ import email.utils +import functools import io import ipaddress import json @@ -106,6 +107,7 @@ def looks_like_ci() -> bool: return any(name in os.environ for name in CI_ENVIRONMENT_VARIABLES) +@functools.lru_cache(maxsize=1) def user_agent() -> str: """ Return a string representing the user agent. @@ -230,7 +232,7 @@ class LocalFSAdapter(BaseAdapter): # 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")) + resp.raw = io.BytesIO(f"{resp.reason}: {exc}".encode()) else: modified = email.utils.formatdate(stats.st_mtime, usegmt=True) content_type = mimetypes.guess_type(pathname)[0] or "text/plain" @@ -316,7 +318,6 @@ class InsecureCacheControlAdapter(CacheControlAdapter): class PipSession(requests.Session): - timeout: Optional[int] = None def __init__( @@ -338,6 +339,7 @@ class PipSession(requests.Session): # 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]]] = [] + self.pip_proxy = None # Attach our User Agent to the request self.headers["User-Agent"] = user_agent() @@ -356,8 +358,9 @@ class PipSession(requests.Session): # is typically considered a transient error so we'll go ahead and # retry it. # A 500 may indicate transient error in Amazon S3 + # A 502 may be a transient error from a CDN like CloudFlare or CloudFront # A 520 or 527 - may indicate transient error in CloudFlare - status_forcelist=[500, 503, 520, 527], + status_forcelist=[500, 502, 503, 520, 527], # Add a small amount of back off between failed requests in # order to prevent hammering the service. backoff_factor=0.25, @@ -420,15 +423,17 @@ class PipSession(requests.Session): 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) + parsed_host, parsed_port = parse_netloc(host) + if parsed_host is None: + raise ValueError(f"Trusted host URL must include a host part: {host!r}") + if (parsed_host, parsed_port) not in self.pip_trusted_origins: + self.pip_trusted_origins.append((parsed_host, parsed_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]: + if not parsed_port: self.mount( build_url_from_netloc(host, scheme="http") + ":", self._trusted_host_adapter, diff --git a/gestao_raul/Lib/site-packages/pip/_internal/network/utils.py b/gestao_raul/Lib/site-packages/pip/_internal/network/utils.py index 134848a..bba4c26 100644 --- a/gestao_raul/Lib/site-packages/pip/_internal/network/utils.py +++ b/gestao_raul/Lib/site-packages/pip/_internal/network/utils.py @@ -1,6 +1,6 @@ from typing import Dict, Generator -from pip._vendor.requests.models import CONTENT_CHUNK_SIZE, Response +from pip._vendor.requests.models import Response from pip._internal.exceptions import NetworkConnectionError @@ -25,6 +25,8 @@ from pip._internal.exceptions import NetworkConnectionError # possible to make this work. HEADERS: Dict[str, str] = {"Accept-Encoding": "identity"} +DOWNLOAD_CHUNK_SIZE = 256 * 1024 + def raise_for_status(resp: Response) -> None: http_error_msg = "" @@ -55,7 +57,7 @@ def raise_for_status(resp: Response) -> None: def response_chunks( - response: Response, chunk_size: int = CONTENT_CHUNK_SIZE + response: Response, chunk_size: int = DOWNLOAD_CHUNK_SIZE ) -> Generator[bytes, None, None]: """Given a requests Response, provide the data chunks.""" try: diff --git a/gestao_raul/Lib/site-packages/pip/_internal/network/xmlrpc.py b/gestao_raul/Lib/site-packages/pip/_internal/network/xmlrpc.py index 4a7d55d..22ec8d2 100644 --- a/gestao_raul/Lib/site-packages/pip/_internal/network/xmlrpc.py +++ b/gestao_raul/Lib/site-packages/pip/_internal/network/xmlrpc.py @@ -13,6 +13,8 @@ from pip._internal.network.utils import raise_for_status if TYPE_CHECKING: from xmlrpc.client import _HostType, _Marshallable + from _typeshed import SizedBuffer + logger = logging.getLogger(__name__) @@ -33,7 +35,7 @@ class PipXmlrpcTransport(xmlrpc.client.Transport): self, host: "_HostType", handler: str, - request_body: bytes, + request_body: "SizedBuffer", verbose: bool = False, ) -> Tuple["_Marshallable", ...]: assert isinstance(host, str) diff --git a/gestao_raul/Lib/site-packages/pip/_internal/operations/__pycache__/__init__.cpython-310.pyc b/gestao_raul/Lib/site-packages/pip/_internal/operations/__pycache__/__init__.cpython-310.pyc index ee846ad1668d9594208cd75a57bb57d3b8deabac..56405675b693bc98a906490e6f4ca82820b13179 100644 GIT binary patch delta 54 zcmX@YxQ~%LpO=@50SFfPt)9qjBcJGO6%$&VT2vfUo|;pVALEjrT$-DjS5h1k6y)UU IJTWH%0JV$}wEzGB delta 60 zcmdnTc!ZHVpO=@50SKypgihqPQB8NYiU}=FEh>&FPt7UGk8#OQF3nBND=CgiPc1G< O%#SZhEX|pi76AY`#1#+# diff --git a/gestao_raul/Lib/site-packages/pip/_internal/operations/__pycache__/check.cpython-310.pyc b/gestao_raul/Lib/site-packages/pip/_internal/operations/__pycache__/check.cpython-310.pyc index 8adcfe211bed7364ada1a0b687dc0930844df223..152f81ff1a3d32869c7a24e09a25a2479c25232a 100644 GIT binary patch delta 2126 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 g{z&kzErT_o{ delta 2029 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 BYfJzD delta 7332 zcmZ`d{c{_~b+?DZ;Q)dlNPr(8LGnn79}p#qq9{tDXoX+6$>lW7zE&~{Q!l9`NKPwGx*I_)&6f9OnarvE@%xAo+g z#;vWsw?~Sk(tx~oZ{NP%d%N%L``FLc|FIe?H#bKl_}%&MtIL7KZ^Y8%jc<$()@4gE z6iR5o3fiin+94xkYldcrjWCgbu2>Pf$!HRI(2Cm4Mzg?GD`vMCEdmc&al6%MwcCs~ zJ7Fa3q>;4Sjdr`k=&(DDPP@zK5`3DKvb&9LfrqUgJ8h)vcCXPZ2obB#?l<}c-el?a zfH5HOs5NL08AAeZwhq|C#;`qNjEHv38nwraF*{>qM7za0XpbA?0*_mV?8C-kfwx){ z_7UTVz}u`z`>1i$o-(GOT_-eQ9kZv6Y5TZwTrec98T*8BLg4MzN&A#>%APf5?bF6- zd(M~>^bYG0`;2i$;GNc4d)}BAc$f94{h09>kxbHf+&s5Mj3;QyJVLw8!?efjrfKs@ z+6zygnO=(0eyZ1BSB&#?z#O21<^?)rK1KVeyrj_sbQpRro|otd9erJ*qnonvbXX3{ z^tj+2Ge>B~44W5H5~Z3QP=C^>G< zvT}=-nWY8Be;T}#QNgA)cpitxSpeWlHEEM<1Z$*0YSI>Yr;SLpU_<65HI)i%NtdOg zlGC?Jh=hOF;ep-&Z>UqM!a^_s|D`(mQUZ{S$_~PdjUzaO;4p#-0A6!$5ya2sT@b`^ z?@8y4iag*qt^2nieGr zQHgp#a$i&8|EnqNIR7-Xrk#XNkRZdEcIenJG}tMmC~OAt69|ySYr36xvWvO=Ewe<0 z6h4^d|D+}BPXmX8TNEWx(oNVIK=bhI`(gh)JkAIJQ!)sZ44D!$KxI=g17KPKsw}BA zNLA2mkSd_dkf%IZuuM;>>CdP<6Uj`mAWrfG z0@U#yFpbT#0G@-#Q2=OCA7N+tcO&nTIX>GoKt}nErqtv-ba`$06*GS;n_JGI8E0|d z#NdqPYxE*8G1M1(hW~NX)F3YBp^tgdWz)^BxNap|WtPEz-PBL6@>KNg`X&5AcnQS! zCq{|<*@OP<{=`VVjNl4_-R0m){K>@>FgXK?uumnZfaxeQSg5RoA|yiCHR#Ku(d_&} z?;mLXSJH*%xNwiKXW*TQcq*J&uuXP`r&{_b4q{gUcpA`GS4`7lV@R7vAaobnW7=Xj zaKh~^0nAfSxQC^VR7({we%z3+@^@QC>o6%mvT$U8c)z%-Jqpq~*uMv}p@d?1tHA0-Z?P>Wv3VR;NwyHSIUe>2%b4)JvI$gr?& z-&4l+=mhZ{XX&i-SCe+VfG)9(qQgv}V+41Ykv)l_DQA*i(5ZsY^&M0ZNUVTh900gF z2fSmUTw-0=3}<&tigjYU1;U1#U)iOK7$+?7L7-zc8VxHUf2``5Su3}`wtak0@^7~v zsmItkl)JRdSq-q4xgaCw@ zz!HR-V(3ns@1sK?-R*B3>z`B#6tX&7}aUj)ZMb413?a( zuRvOb`?QFeAS8>-%)4c_rjOm($V}*0Rtk;||5o9aX{|jN319H@M;&8q9dkt&%wKm` za<0CVgYZH12^|H3v5O|o56NhyTyhGKQ|h@A)k|ep2OF%~*jaE4I$V(Fy&M zW#$}nhXx!t$_2?pWS_`Hd~M#4q(#Y#IOQtKi)@t{up2^YUb|Uxs?5x;?)Drj_!?s{7c=vhf}C3RJs;a0x^it5m1>TqJd1*&m&Qc1rbI0 zALah~A@EU2{=M!g@*@A|?h}0?{~7}AY0i)v-jrTLO+q)g*AEJbKk1ny2YFvQ)!Bffw?!(+n$%E0*5DS}o4ml^OFx!WnGhC_f)}LbVs+U& zz&{-9{EO>M!DyGF$YNg`90>;$qjl<_DAGx%Q9k?uo^` zh&ebg3?>0)u>!fRQm&XKHjh+=nK{Z5$dwcA5=`xBEVr6Pj5Px>6A~L7^5=esf4~1^ za{ofvSAosqzv`bRF+QfBBQx*Y`m3Z~#d*>DFfiI}NAi1!bs)eGGR*cEM}Qv23*Ckq z2jdEsBoKirR>5T=P+;E3QUEeRU*EXvUeM3?!~{5Gp9UZWXI}&2w|I51LEhpWLl;Pr zXNN|*ULLHGbJFir}&3M=R;mQ~ zx6Cz&!AQjAcr8{r503RgmdxKdpvQ%S{4Vl{v-Ldx@IddBaG0@&qN7-ehNDHzL$;%o z*yCv)8y*_^3$z&>=89=bPy-|O6K71s;z|sv42|#`!&k@${D;Ho`gy!EfB*zpC?!?G zM!=Ayq5^NJ0Y%>eNFoKrO%g+5p+YI9Pl9Y%l;h7rM9P|S56@>i0L z)PmO}8NRX;o}j9d8cpD>VI%pKkwoI!zCeX1DZtl9W~Q#}1f>n!84*yPMobvUTZmmk za2tV8=-d21M$(g8(1x1zLD2E{^abP+4&*zC?J-I|JK8_~@y@PAlnCsQ5@>^+ixW+b z%aMQvjzA{y|B56Ie6l_Pu3+N*4@O7HF`Ohr*!S@zd-BAjZ}xlUh8{06XF(Xrm+i`# zPYLhHyeL9arpYfVgr)q}72(vLnybJeqzo6v{scefpE7n23BqDT1Qx3k>lCK+kQf-2 z@Y*A5@lP_H@+X9=2k+ER!n#p~PVl1db|o|hxU>-Jfzm_ri{cF^O&V}tQ!aNuwF&hcR3A zfQZ)6^%ZrMK%oLt;?yZ=BUDq^^EIUrtA()U0XG+-5<~B!&j=KmP z1emD$wu5;(iz2AMhVVhby{B#~l$Oe#X3~O-H&(14_`FB~vOl;AD&x)Bpc`Oj>R{AVUEJ6(HyDdO^Nzm*CbZ<4`-eHmCH0m!jsIFFETN8tpDauP18@J}Y%XE9AA72w$hwY&2D zsHzBe7YRfl1BnLZ`2e|2aw%%CY=P0Yb_HSM9Gl z3!T1CM~VDEw1@*#XQk>EEKkXoD{Fo-jA3af8r?6Rm+p`1rB@ zOMiywZ?iG4#lN^JEM-Mf?uf!|Usn1f9KUB*`5zq{NKrJUN$80MqcWNi8VuYaea=5V z_U(Ceb49qF#Z7hP23#;gu_b6lWlO&9`T|MWc$ui!KB&6H73@(n_|6-G7cgTTO#rs$UG#GRqb2Nhe+MKn)=LO z;&*X1eb5tABX|J7@cEBto~=KL%;ynY0N{nPP)+BdfPD%{cys6}i{-M#(%9}n(2B%B zq2&4{doR*Nlod`$$ENT^ZHT>%0MjV=@-gfe%TJq9f% z4*E}!uEMo0l3};E7pfo@*KG^c5r(( ztajq)E?%1*X~Kk78Q4jPcft^bxqpNciPJ2M@Nckr2EkbbR}ox8a1+5L1gM=o7B6fB&BN2? z>@uxdCe~+?gXX13nu>Ys5sh>~fPg?WQI~Ia=qoS2{{~x-tfaw4L diff --git a/gestao_raul/Lib/site-packages/pip/_internal/operations/build/__pycache__/__init__.cpython-310.pyc b/gestao_raul/Lib/site-packages/pip/_internal/operations/build/__pycache__/__init__.cpython-310.pyc index a22a918e635d3cd5d61d1d00f20332fd2fb5d6ec..8b901ae2f970dd0bb727b8be1a144b826c74ce6c 100644 GIT binary patch delta 54 zcmX@bc!ZHVpO=@50SFfPt)9qjBcJYU6%$&VT2vfUo|;pVALEjrT$-DjS5h1k6y)UU IJTWH@0Jz!_%>V!Z delta 60 zcmX@Yc#4rbpO=@50SKypgihqPQO$L>iU}=FEh>&FPt7UGk8#OQF3nBND=CgiPc1G< O%#SZhEX|pi76$-5eibMH diff --git a/gestao_raul/Lib/site-packages/pip/_internal/operations/build/__pycache__/build_tracker.cpython-310.pyc b/gestao_raul/Lib/site-packages/pip/_internal/operations/build/__pycache__/build_tracker.cpython-310.pyc index 6eeeb4ad5a29e8178c67ae75f2f3af13fbfc58e9..9c61aba96ed2c5b5894a8d2f2deff46e37a52001 100644 GIT binary patch literal 4968 zcma)A+in}j8J^h_mlUa!6~%I#bP>Qwh}v?KCQYI`MPge?-56>r+c83@Sg$xEX(e)( zo?S{NO9Dxi+aM266p(sRAm~k>py)I7s-4?j^%at~>G#i)vM41$m)O}k{B!uv-!QG! zDh$sb*8a5p$9cy7NsZHwhsL{jv%jJcOz;+K6kp!prfoGW^R*i`zE;a=yA78UjotFv zrADdkH~e#lZg$IV=qKah!3QJyO8|FViqBZicKML!)*%~OF&o+gc4Qy3+w9jbY*<5Q==S{qA2>^FU=N%d>>*2P4$Gb1 zOPtYfU={tJu!JA5flIVE*yCFNMZrGC_(RMat@o^1&l`9HtIO1TMEMST{6_8$yxcpq zvY-Eg{gz|2Sm6!9?tS0fa5VSc$=t1px%Up(SA4Br(pH-3l1%nvl_uItH+LZ@?Z&xm zXWIWz_EwdG&?|8klXR1&)OMDudP$Ltw3kO}Tju&gk|v>i5@$K29=0R3CzY;d(Y_Sn ze$?th;7$^?r7kD(py<)lsfxE_D6(jO#nf|H^6S>Em5m3PRN2OXY~|_3?X=k?U1l5W z>o-?#Z9sW>l!hwmwl?m@n;RLL!i96TBILW2L!q?Ld84b)MyS~|tTcRk# z95#jnE_ZtRQnw?bT!xT9*i13+2^~MdT56gM;72H|Pd&@C9X`t~yjA?HZ!4B%`Fz&) zxzDGq3SanUT(iDW&tp>E*43M|CmA$0J7Z-wNXmH0^s+yrD6H(r68xACS#BRW$Lz~n zLq34V!WLd0@FO?(geB}RK(SjIGSlN@+@T)M^72tdxC3@LKloZ6sm%pR*SyqR!P1z+*qSlf-!(wc@@MfuRfxWt?mWQ65~$>Qy6lH3MpG zlVw##T4}|by1e=%&hO=rr>?;wq#CPCktns(iSivIeC@T;ZKzPYLT+}q)e9JgLL8N* zxwf166I~je(AZp2T&6YVuxDsaHnx&i(4AdEVSQSKqJ2JZjGzMbzwqt!*OvF<*XoBD zo(LjnL$0F`J&THD6qXT^Il{38@!7gOvWz>Tzk(R{xGP(|AQoUO-s+J=;AiydsB|CQ zBFNJq-;t-~1{+?hJK7IJa;`Acl`w3lqT8Z+H4Gnjqt@TI~EH=uSw# zW~q_U2kBPu=+WsgvTW@3mHMMc%fTI-=kzgxY$rX)0&})zS7q@&Eb1!Oj5D*SisB5r zgGKqIDNPm~o%}vXU~XwA3${|V7i^~O%`A}ZO)1FmaIiLL$?T}iElNfV8v1xLO7||vSZ_+skFL~U9^Y)*akms1HN$xs+sD8o% z;1>|U5jV%SD7p?P{?V~lDF}V%vF)d)RIg$IM8F^8bISWnxG9Ik6#`lK0Y;7cO>>9$ z7tfq=M5KLaF3bt`l&FT(sy)-S*`)K1AF7iYj0&o#0I{%RL?jZps-XjsxzudQDCu_U zPI0uKpj*93#amRI7bo&N#Q7lxGg`drofBn2q3u1{n=lC*C=DRv@hN>>+KI9q3jSWU6TSA@>)=rA-1lC#ifHo)I9RL@ju==mndS(iqX?D}m+* zeYcx$U3&{A=o?*Pw0{}v!;!9JXO@#HxT1gx$ceQBJeMGgV^ux(e%z94Y5soNO+*1w zomQOe>8ZPEy4UTPF7+Bsa}N|SqFO-xtXGx_BO%=>V=0wWsd#J?7A8+v6Iqsv*H{y! zW#cLA2srN8=n;Cc2i7~dUmUrJNJei)PX<)#NJH0dMwwh4qbx<~Qms%yS}pvCa>i43jM*p(A$ocw zj?pz#kwvKcR6MmbQ!~(=02Y~CMrP_WhtK;J7eUCf{_EM+e>}(fx8+v8nfDi+#pfzz z#|wDD*^=2!-M}1iQc>n>JdYdq^2v>R8QGCu zbeR8Q6mh99PttVrxRovAABIjSVpZJT%D8vkHFvf`(8lRLrcF)QrW>`nWfcM>roT%X m+P_g;e||;?&VWz4&CsvPFY~HZ7%Q6rP#=@p`>pJC2jaY1*VoOXG^9KeRwmCHjXzC90rlX|aS>PG;iR@lP19 zo1Z#zA>{_Ds=acsC4_{K5K@m+LR{gYzw{PFRdB5Mh`R#@8 z4!DhE(kAe`_2;$Hq4Yg>p;L1T4kes$y_&4K1y}J#HC0O&(uy~$eYH#>Ly2JBev$3b z!hj%^K^_x(xFswe&yfY4+dOec-=u{h^$q0?$Qe&^SIKj45}xAeJA|hY@O-Jv4uk}-UAoy9IG}E9h`vPhl9ZLWk>dQrcQH~;ORvV>~ zkfFiFT&pCt#XxnzAVl!37HQ*H74j(@U4;USfFwiR`VMm zf)pqx1;(k+IO7^rMCZmGy`b}9Zt@s#22{%wF=6FMj_^3}z;PR%P(iiF;tB46rp=Qg z!I?lSE>D5P;c1cFvfIZqAaO745cTsch*EqnAK-()rA1#Q6MYx`e2;3-5YMSbWVr^V zACY4awLF3(8GLQ+AH?@IZ4;09bd$i7`C3;GezB%zjnMF9qv3~I6Ix_>qVCJGXv#_4 zod=RWa!HxLRvH$nWX*5FRad<@a-)=(OLw`bg z-kIQGyz+WVsfMxnswmc5%XvN8brQFpLh|x+j6e)x6=OIXd~T0-^eVt=o`K?%p9YK$ z>jJFiK_EWq(l)KIuGS+x+SPkxgZW0q?8e%pVzpV1%@V0%iHEVpVso)to(s+9V)4X@ zlVP?ctKLf4Uu?8|Z$TDIHAo>eMSZ@(MHs)aC{}qH@hcTV4}-r@uQbZ_s1RC|(rFZ% zXj|~zRY|BOta%9Nw=iZ5J{z&5G{_v5W$WqlI9aYngJl}rJq1YYq5(^F?hG*7o%3mzwGWZ5hN7OT1=L0F z8e4S%jPj`FRxs@r=i*WJ2({2`)e-yh9K1wHn^M#oH^r`8zhYatqTa4l-v!wstR^DM z)-ucq{%{Wk53JE_W-~V{G<0LCz+`( zMzK7{d1$CxU=@vG>g=}7OzP4j>zSuoskHJ;CP7Dy*)9HZeju1K4-P7T$rJeXB_!Bp z84Dit4Ru~cHjYF!2(RiLF{$KnIEC(f17_l?Un|y&aEnPi{c;w`cD)pb_n3+Sr=r59 zMKaVj0G*8eYijHtQ)iEuVgH@6GWx;Hh;8fU2#vztE76&J4M-Tn`?6dw$#k%mIW{h_ z0AX&qygUul9S%*sSe>rHbgMR}6~N-bmzfD_2R~-UFQ~gW4wvbSx^v}Kv^t681`<4P i>Qa_d$c-V{okno7e=Ivj9p+Gn+DzAmsGiHxjPoB`+1JYe diff --git a/gestao_raul/Lib/site-packages/pip/_internal/operations/build/__pycache__/metadata.cpython-310.pyc b/gestao_raul/Lib/site-packages/pip/_internal/operations/build/__pycache__/metadata.cpython-310.pyc index bab51de168ca20e547339153c8e9be0f76234ebc..6460d1f3f6998d55dde50942d58ebeb4aab1ec1f 100644 GIT binary patch delta 37 rcmbQuJ(Zg~pO=@50SFfPt=`Ceg_$vZ@&jf`)}SCKSLe+vEYleQviAwl delta 43 xcmbQrJ)4_5pO=@50SKypgl^=%!pxXE`2n*ecY11ZNn(C{QDSM%=6}r7837I@4k`cu diff --git a/gestao_raul/Lib/site-packages/pip/_internal/operations/build/__pycache__/metadata_editable.cpython-310.pyc b/gestao_raul/Lib/site-packages/pip/_internal/operations/build/__pycache__/metadata_editable.cpython-310.pyc index a5358a576d6107c806298a583fdf7a9c6c7605f4..d9933f55777fd4cc5a8c0f07ef2329dddf0fdde6 100644 GIT binary patch delta 78 zcmdnXeUzIwpO=@50SFfPtxkWok#{~LlW)>kv096AW@&Et; diff --git a/gestao_raul/Lib/site-packages/pip/_internal/operations/build/__pycache__/metadata_legacy.cpython-310.pyc b/gestao_raul/Lib/site-packages/pip/_internal/operations/build/__pycache__/metadata_legacy.cpython-310.pyc index 5ac0969b54221c09d3e06c541115a568b7ef72b2..5407eec6249782008282d0cce502e4648ac3013b 100644 GIT binary patch delta 216 zcmX>mv`vUNpO=@50SFfPtxoUT$g9C5P{S~rVJ=fMV-sTuLl(;d*2%6+3*_^htztrp zQ;UjY%2RVn@?%``lS^|`^Gb?if`Xh}ohNfKZ)Vh^Ygm zB`KLjMJzzETg*ABd6NZM!WktuXR^#?VicRq&MvDX2~y5kBn703q(OuXh>!&lav(wx wNZevcEJ`mfQk@*YUcson`6N3pqnJ8KoVmE9s0d`jEtaJG{G1}~$!|EK06gtE3;+NC delta 216 zcmdlcbWDghpO=@50SKypgr-m1$g9C5uz;n8VIgBPV-sTuLl)}-w#lwc3sg&-tztrp zQ;UjY%2RVn@?%``lS^|`^Gb?i(o>5|67%DW5=(O?voLRF)SbM8SzDvJwuljEswVp_ zru^bt>^YgmB`KLjMJzzETg*ABdAHco@{4j4OC~e2gfmKQj%1n3#3(-bJDV(<6i6HA zWO;T`L3tpvNC~8cC9x>IxJYfX1A7Id&gPx$yo_QRV55plii$uwZm}fg=jRmZOuoYr F1pwIQ=Xbrk{{!epIn-onpaXB6BOj+ L>byCJIhGLs>5vj2 delta 63 zcmX@id6JVmpO=@50SKypgl^=vVOGs@wu%WYPAw{qDNoHQ$&Yc#PcF?(%_}L6Nlz^< RNz9KgN-WLUoW>l>2mp2~6?*^x diff --git a/gestao_raul/Lib/site-packages/pip/_internal/operations/build/__pycache__/wheel_editable.cpython-310.pyc b/gestao_raul/Lib/site-packages/pip/_internal/operations/build/__pycache__/wheel_editable.cpython-310.pyc index f1de6867bda712266b93d3db17db58c0a5df5fc8..65fa7a3cb174cc0e4c0b031a55cf876476441797 100644 GIT binary patch delta 36 qcmZ3_?W^JW#6Rz?7)atS~H delta 42 wcmZ3?y^@i!pvAaiA9n-J+-(bF+aX2u{3A197`)B0Q#*An*aa+ diff --git a/gestao_raul/Lib/site-packages/pip/_internal/operations/build/__pycache__/wheel_legacy.cpython-310.pyc b/gestao_raul/Lib/site-packages/pip/_internal/operations/build/__pycache__/wheel_legacy.cpython-310.pyc index 3ea7a627104fad8157cbf7ff94bf9ec6f1512436..fd9cc6401114c9ea624015c6d8f8f7da4a527afc 100644 GIT binary patch delta 415 zcmZ{eKT88K7>AQwa(6x34%&(y7HRzh=ipML)J>~{i$jYba!`tQwAHp(l1Ncf9XdH@ zEQMBZQbZ9aKY)v$pt~PH(7EQ&)pvN_U-G_B$XoI@84F@D3#hu;zpH*c#fY|eTG(_C zm`|D8@f$pFcY@=yrr+YsEf%+T3o@s@UI}GzAV3dx6`Acpf%?cp1FcI0;ZSG-_fQUW z2}eUskP(Ey(@KEj(DCporW=0_5ugt|eL(&f}V}TsX;uSPJp$glSb_Y;|hB-zZmTm5rmU tU2m0}K4X=tPaXMXUe9LLl9Qlu)sBpSt+y+@MpIHo9`*2jnw5Lj8RCx`}Oh=LFZh$1%n1co#c2#2>O(Zow;S46X?MJjFg z0Za;eMXY=P8$qzV7w`!L8^OKG%7OW2hHrku+~;5O*)W@Rk%{4Vz4iT=Wma*pyVa-* z4x(|+yE1I-g@?ak|ji7olvL*G$9n4kpCHJAE(BS!U_d!-fY%T*}mM_=TZy0jVt83Y~T)^hbayqs}2$Bb}eH22^m%7R>mONuQX^LH(Gf8oV5aJN> zlcO%4B2ajGXV2I!nk`t-x2dm%wWM7%5~sQyA%hM;!A#{0%;`I4b{R^E=bpDY?>2pC wi8v$rozrHI3*omotm+TvW~Q1T(~vXeAQg)BzAxLbs0Zl>JGll`U2?B}0nlx4SO5S3 diff --git a/gestao_raul/Lib/site-packages/pip/_internal/operations/build/build_tracker.py b/gestao_raul/Lib/site-packages/pip/_internal/operations/build/build_tracker.py index 6621549..0ed8dd2 100644 --- a/gestao_raul/Lib/site-packages/pip/_internal/operations/build/build_tracker.py +++ b/gestao_raul/Lib/site-packages/pip/_internal/operations/build/build_tracker.py @@ -3,9 +3,8 @@ import hashlib import logging import os from types import TracebackType -from typing import Dict, Generator, Optional, Set, Type, Union +from typing import Dict, Generator, Optional, 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 @@ -51,10 +50,22 @@ def get_build_tracker() -> Generator["BuildTracker", None, None]: yield tracker +class TrackerId(str): + """Uniquely identifying string provided to the build tracker.""" + + class BuildTracker: + """Ensure that an sdist cannot request itself as a setup requirement. + + When an sdist is prepared, it identifies its setup requirements in the + context of ``BuildTracker.track()``. If a requirement shows up recursively, this + raises an exception. + + This stops fork bombs embedded in malicious packages.""" + def __init__(self, root: str) -> None: self._root = root - self._entries: Set[InstallRequirement] = set() + self._entries: Dict[TrackerId, InstallRequirement] = {} logger.debug("Created build tracker: %s", self._root) def __enter__(self) -> "BuildTracker": @@ -69,16 +80,15 @@ class BuildTracker: ) -> None: self.cleanup() - def _entry_path(self, link: Link) -> str: - hashed = hashlib.sha224(link.url_without_fragment.encode()).hexdigest() + def _entry_path(self, key: TrackerId) -> str: + hashed = hashlib.sha224(key.encode()).hexdigest() return os.path.join(self._root, hashed) - def add(self, req: InstallRequirement) -> None: + def add(self, req: InstallRequirement, key: TrackerId) -> 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) + entry_path = self._entry_path(key) # Try reading from the file. If it exists and can be read from, a build # is already in progress, so a LookupError is raised. @@ -88,37 +98,41 @@ class BuildTracker: except FileNotFoundError: pass else: - message = "{} is already being built: {}".format(req.link, contents) + message = f"{req.link} is already being built: {contents}" raise LookupError(message) # If we're here, req should really not be building already. - assert req not in self._entries + assert key 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) + self._entries[key] = req logger.debug("Added %s to build tracker %r", req, self._root) - def remove(self, req: InstallRequirement) -> None: + def remove(self, req: InstallRequirement, key: TrackerId) -> 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) + # Delete the created file and the corresponding entry. + os.unlink(self._entry_path(key)) + del self._entries[key] logger.debug("Removed %s from build tracker %r", req, self._root) def cleanup(self) -> None: - for req in set(self._entries): - self.remove(req) + for key, req in list(self._entries.items()): + self.remove(req, key) logger.debug("Removed build tracker: %r", self._root) @contextlib.contextmanager - def track(self, req: InstallRequirement) -> Generator[None, None, None]: - self.add(req) + def track(self, req: InstallRequirement, key: str) -> Generator[None, None, None]: + """Ensure that `key` cannot install itself as a setup requirement. + + :raises LookupError: If `key` was already provided in a parent invocation of + the context introduced by this method.""" + tracker_id = TrackerId(key) + self.add(req, tracker_id) yield - self.remove(req) + self.remove(req, tracker_id) diff --git a/gestao_raul/Lib/site-packages/pip/_internal/operations/build/metadata_editable.py b/gestao_raul/Lib/site-packages/pip/_internal/operations/build/metadata_editable.py index 27c69f0..3397ccf 100644 --- a/gestao_raul/Lib/site-packages/pip/_internal/operations/build/metadata_editable.py +++ b/gestao_raul/Lib/site-packages/pip/_internal/operations/build/metadata_editable.py @@ -38,4 +38,5 @@ def generate_editable_metadata( except InstallationSubprocessError as error: raise MetadataGenerationFailed(package_details=details) from error + assert distinfo_dir is not None return os.path.join(metadata_dir, distinfo_dir) diff --git a/gestao_raul/Lib/site-packages/pip/_internal/operations/build/metadata_legacy.py b/gestao_raul/Lib/site-packages/pip/_internal/operations/build/metadata_legacy.py index e60988d..c01dd1c 100644 --- a/gestao_raul/Lib/site-packages/pip/_internal/operations/build/metadata_legacy.py +++ b/gestao_raul/Lib/site-packages/pip/_internal/operations/build/metadata_legacy.py @@ -27,7 +27,7 @@ def _find_egg_info(directory: str) -> str: if len(filenames) > 1: raise InstallationError( - "More than one .egg-info directory found in {}".format(directory) + f"More than one .egg-info directory found in {directory}" ) return os.path.join(directory, filenames[0]) diff --git a/gestao_raul/Lib/site-packages/pip/_internal/operations/build/wheel_legacy.py b/gestao_raul/Lib/site-packages/pip/_internal/operations/build/wheel_legacy.py index c5f0492..3ee2a70 100644 --- a/gestao_raul/Lib/site-packages/pip/_internal/operations/build/wheel_legacy.py +++ b/gestao_raul/Lib/site-packages/pip/_internal/operations/build/wheel_legacy.py @@ -40,16 +40,16 @@ def get_legacy_build_wheel_path( # Sort for determinism. names = sorted(names) if not names: - msg = ("Legacy build of wheel for {!r} created no files.\n").format(name) + msg = f"Legacy build of wheel for {name!r} created no files.\n" 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) + f"Legacy build of wheel for {name!r} created more than one file.\n" + f"Filenames (choosing first): {names}\n" + ) msg += format_command_result(command_args, command_output) logger.warning(msg) diff --git a/gestao_raul/Lib/site-packages/pip/_internal/operations/check.py b/gestao_raul/Lib/site-packages/pip/_internal/operations/check.py index e3bce69..4b6fbc4 100644 --- a/gestao_raul/Lib/site-packages/pip/_internal/operations/check.py +++ b/gestao_raul/Lib/site-packages/pip/_internal/operations/check.py @@ -2,28 +2,44 @@ """ import logging -from typing import Callable, Dict, List, NamedTuple, Optional, Set, Tuple +from contextlib import suppress +from email.parser import Parser +from functools import reduce +from typing import ( + Callable, + Dict, + FrozenSet, + Generator, + Iterable, + List, + NamedTuple, + Optional, + Set, + Tuple, +) from pip._vendor.packaging.requirements import Requirement +from pip._vendor.packaging.tags import Tag, parse_tag from pip._vendor.packaging.utils import NormalizedName, canonicalize_name +from pip._vendor.packaging.version import Version 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.metadata.base import BaseDistribution from pip._internal.req.req_install import InstallRequirement logger = logging.getLogger(__name__) class PackageDetails(NamedTuple): - version: DistributionVersion + version: Version dependencies: List[Requirement] # Shorthands PackageSet = Dict[NormalizedName, PackageDetails] Missing = Tuple[NormalizedName, Requirement] -Conflicting = Tuple[NormalizedName, DistributionVersion, Requirement] +Conflicting = Tuple[NormalizedName, Version, Requirement] MissingDict = Dict[NormalizedName, List[Missing]] ConflictingDict = Dict[NormalizedName, List[Conflicting]] @@ -43,7 +59,7 @@ def create_package_set_from_installed() -> Tuple[PackageSet, bool]: 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) + logger.warning("Error parsing dependencies of %s: %s", name, e) problems = True return package_set, problems @@ -113,6 +129,22 @@ def check_install_conflicts(to_install: List[InstallRequirement]) -> ConflictDet ) +def check_unsupported( + packages: Iterable[BaseDistribution], + supported_tags: Iterable[Tag], +) -> Generator[BaseDistribution, None, None]: + for p in packages: + with suppress(FileNotFoundError): + wheel_file = p.read_text("WHEEL") + wheel_tags: FrozenSet[Tag] = reduce( + frozenset.union, + map(parse_tag, Parser().parsestr(wheel_file).get_all("Tag", [])), + frozenset(), + ) + if wheel_tags.isdisjoint(supported_tags): + yield p + + def _simulate_installation_of( to_install: List[InstallRequirement], package_set: PackageSet ) -> Set[NormalizedName]: diff --git a/gestao_raul/Lib/site-packages/pip/_internal/operations/freeze.py b/gestao_raul/Lib/site-packages/pip/_internal/operations/freeze.py index 930d4c6..ae5dd37 100644 --- a/gestao_raul/Lib/site-packages/pip/_internal/operations/freeze.py +++ b/gestao_raul/Lib/site-packages/pip/_internal/operations/freeze.py @@ -1,10 +1,11 @@ import collections import logging import os +from dataclasses import dataclass, field from typing import Container, Dict, Generator, Iterable, List, NamedTuple, Optional, Set -from pip._vendor.packaging.utils import canonicalize_name -from pip._vendor.packaging.version import Version +from pip._vendor.packaging.utils import NormalizedName, canonicalize_name +from pip._vendor.packaging.version import InvalidVersion from pip._internal.exceptions import BadCommand, InstallationError from pip._internal.metadata import BaseDistribution, get_environment @@ -145,9 +146,13 @@ def freeze( 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}" + try: + dist_version = dist.version + except InvalidVersion: + # legacy version + return f"{dist.raw_name}==={dist.raw_version}" + else: + return f"{dist.raw_name}=={dist_version}" def _get_editable_info(dist: BaseDistribution) -> _EditableInfo: @@ -216,19 +221,16 @@ def _get_editable_info(dist: BaseDistribution) -> _EditableInfo: ) +@dataclass(frozen=True) 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 + name: str + req: str + editable: bool + comments: Iterable[str] = field(default_factory=tuple) + + @property + def canonical_name(self) -> NormalizedName: + return canonicalize_name(self.name) @classmethod def from_dist(cls, dist: BaseDistribution) -> "FrozenRequirement": diff --git a/gestao_raul/Lib/site-packages/pip/_internal/operations/install/__pycache__/__init__.cpython-310.pyc b/gestao_raul/Lib/site-packages/pip/_internal/operations/install/__pycache__/__init__.cpython-310.pyc index 4854ba692928d09601711d773a2139d7db120132..4968530d0dc0beea9ed79aa8d735beedf17a4715 100644 GIT binary patch delta 33 ncmZo+`p3wf&&$ij00fKtR!`(EVa%M^AjujOEekmOEJEiOsSk1t9r&6zka0RY_i48{Ne diff --git a/gestao_raul/Lib/site-packages/pip/_internal/operations/install/__pycache__/editable_legacy.cpython-310.pyc b/gestao_raul/Lib/site-packages/pip/_internal/operations/install/__pycache__/editable_legacy.cpython-310.pyc index 65c65b31988624927629787c15d676f1cfe18e3b..7d1da677e8d26d3c6c265656c12040c108433b9e 100644 GIT binary patch delta 604 zcmYjNJ8#rL5Z;-6_;J3olUxKB2_!-y-6aJrLI_2ikSGvELgmH^?8XAwXSBXF$S4I+ zA&5@fP@#klQPU$)(o$VZ%OBuEIMx=A%xJ#(W@mP0c3%cxTAM|??Gr2S?tVxqC*)fl zoRzK(wyc$JCYu)yfJl%me1*<$sE7#Uxx}XX=*8>2O)p)P5k*j)j5W+%lhN zKb*2%otE#3K5rAV#|BuBZ*SkcH8kr?UJdPG*|!jchzS2x%v?|Wi`~3C_)d|gN>AM+8SUmON%V4^q2*Xl+5Mu( znpVwPXP{TtxYzSS?q})-*r>c_ff1KR5MThc`iN8@{t^^V1;d}n@dO3V(7_+(gh#&t D!y9;N delta 659 zcmYjM&1(}u6rZpC$bMv#G_6#vQV?v?gLoBNlz0&FB2t7U5Yx;wM0R)T%tjGMJk*<( zHq6mWi(WkVe+a#J&egNvQN8HQ(nH?k{oe1*d%StSv+#Yi$>TTx#$Ny489#6U_+g7h zTQS8Q6Y}$HbM0;Jqz(iWQj)p3mwFXThwP?(mv~D6Xyum!$G`vO8-U^MEX!{*WmneD+I?J?hSuRhP?gEva|vy6nV_WTCU5%Wk}wEOnN2*^8HxmClMT zSK`%Vt+R#N!V|NzMHXioOVqxkxjY-O zGW)O6t7Hwnby_DIVC4#wH{riU9dZ@^+A_V`+a}xOC9u3r@UGEnj$Xe*`(gK}8Kqo= zaU6;$OPe{%x|H)*no*m!n;&v226;Q5D}C7ZzEqyR+bT)(PQ-yfcVmay$JfVp*EdRJ5>M_~nI(ZZnoKxjbFMtmC~fiU&*$uXGQ>v`+(;Wdf@9 zZufvDs>7ox2bF+C3~F0R_<#m_jUvlp9?Z59gsjh@f0GT;l(JwLiGzUWk**}Ly|Ay0 zRqxRxzZEgs6&X8{J`^%Wf;dVkm!_Iq)){>m5X!qO(%Y0a1COw@TT)(_JwE&$_*5Hz z27(}A5G;(I`Fo=WP$T9Oe_SezTgLB}#->1rcv33NQ#7^;Yhn`X6tQMeDy(BP1|X*1 z!z!^SR)ImIEbO9uj2@%DF?O_t?Xg*ylk%xCcC{s^aAEw-Le~!6H=w<6CZ6uAfK~Sx z74|9ELdL^3^!TR+GDNkokD*0t)e4)GPx06j^}-|0F@CxHc%lmdIDb@G`Dh6~{xXQqV8p=S zo-hv41Q##|_Y1HgN}m~pajam9?zT*cGtL%4Us@3l_c>F}ZXw63s^XaFO}~^`+GbR^m-n49{?oyULNH;03tyd0D33O zDbrEGcV@uaiFL?8KuAAlG^Z)i7~Oy+a2v!jGLeTz?+h8(J%=MDK`)9a4|*(1F2Z#R zxb}@W>xMCZyM58*$ZgYp|9X`6veA=|$4wHEW||3zRuXkXL7UG3lIFM9Y+P5vA)zob2@EPO)gRN^t6}-}&Z(jP~L^y|DrYJ*} zXTdMsln!Ts?x@Y^wbs=JXGf)1fO>3InO;$1P1%3t|2f!Y7{S{hRxQW&k%t^W2Y!w% zyM&)PmWdr`@!`D!e+Si|w2EFnV?R_g>BRso2bm@wE^GZb+YkR!HxDxKuML>#MUP~4 zz-a&<3lyTIn;&(vB!`_zn``ovRgHikKMM5ToQP+@`IJaUah!I5yRTR~py@|)W00z- z0O;~;z`B}or##tJem{SddsO{h`1orO;6?e+7}tc(v?u84<8giTD}fJ76SJrvmPiR` zrXj4tDNtb)jRF^DQB%}cxIjYYNoBksY+@DOAB;a@pu@$Y^0bDGVzF2#d}5#A%OsRK zKtXR^q#!+4xo7~D+!xNoC914PT_P`M7sxDKG!5Y$9Ux;2IeTP_3ecZ>f{LZbm_XYn zOG7j?gkLm{(bL*^xmcc5PmM_psCVU}HNA>YF0SIgdQUF)0?n?#&a0Y6Js`QtU6of< z@`0>mK7bG(EzW}N`ivtW)>5xAMX3PL3&ovhBmI}L=_RF`)^Ljphmz_TB#0Y6c# zwKSXJqno9@sLx)9#?jReAVDeun6txd+9m{R6LNN`n-CB~GFtyYPuNrwHm`BbMZIj0 zlJ{WE^%;XgsuYmK`Mp*{mZ!_$tg6;9rv`RSRVzxUyeVz^2(A%a+HuzJQzk7!_XmCH z-hR}j8u_fObic23O$IxY9?#=Q=q#;6rM0SEGIfsT1HEhI3%zx{RrZFe{#1#dDe+AZ|!-sGfVZZU+$&n2f#ID z>tpC_UDi>FOWpo>dp`v3QF&QzURFsmLSx>Zk`QxWFwsB&V%kXrmn=>8-@9yJ+I``Y zr{O&RYNl v-`XaAW?T4Q*v8-BGX5ua@YmSI|G*ypJFeibu#f+StN5?DhW~==wLkwGD+;S9 diff --git a/gestao_raul/Lib/site-packages/pip/_internal/operations/install/__pycache__/wheel.cpython-310.pyc b/gestao_raul/Lib/site-packages/pip/_internal/operations/install/__pycache__/wheel.cpython-310.pyc index 3fdc039eb0861cfb75944b46a1b5cc1954ef67aa..66c1cdf0620dbe2e65fb7aa44fb4d61e332c7766 100644 GIT binary patch delta 6611 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 W;D4CdY})Cp<}H(5q=E-0TmBbp_m6D= delta 6575 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 IVygN70Ml=P!vFvP diff --git a/gestao_raul/Lib/site-packages/pip/_internal/operations/install/editable_legacy.py b/gestao_raul/Lib/site-packages/pip/_internal/operations/install/editable_legacy.py index bb548cd..9aaa699 100644 --- a/gestao_raul/Lib/site-packages/pip/_internal/operations/install/editable_legacy.py +++ b/gestao_raul/Lib/site-packages/pip/_internal/operations/install/editable_legacy.py @@ -1,7 +1,8 @@ """Legacy editable installation process, i.e. `setup.py develop`. """ + import logging -from typing import List, Optional, Sequence +from typing import Optional, Sequence from pip._internal.build_env import BuildEnvironment from pip._internal.utils.logging import indent_log @@ -12,7 +13,7 @@ logger = logging.getLogger(__name__) def install_editable( - install_options: List[str], + *, global_options: Sequence[str], prefix: Optional[str], home: Optional[str], @@ -31,7 +32,6 @@ def install_editable( args = make_setuptools_develop_args( setup_py_path, global_options=global_options, - install_options=install_options, no_user_config=isolated, prefix=prefix, home=home, diff --git a/gestao_raul/Lib/site-packages/pip/_internal/operations/install/legacy.py b/gestao_raul/Lib/site-packages/pip/_internal/operations/install/legacy.py deleted file mode 100644 index 290967d..0000000 --- a/gestao_raul/Lib/site-packages/pip/_internal/operations/install/legacy.py +++ /dev/null @@ -1,120 +0,0 @@ -"""Legacy installation process, i.e. `setup.py install`. -""" - -import logging -import os -from typing import List, Optional, Sequence - -from pip._internal.build_env import BuildEnvironment -from pip._internal.exceptions import InstallationError, LegacyInstallFailure -from pip._internal.locations.base import change_root -from pip._internal.models.scheme import Scheme -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__) - - -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 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(package_details=req_name) 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/gestao_raul/Lib/site-packages/pip/_internal/operations/install/wheel.py b/gestao_raul/Lib/site-packages/pip/_internal/operations/install/wheel.py index c799413..aef42aa 100644 --- a/gestao_raul/Lib/site-packages/pip/_internal/operations/install/wheel.py +++ b/gestao_raul/Lib/site-packages/pip/_internal/operations/install/wheel.py @@ -28,6 +28,7 @@ from typing import ( List, NewType, Optional, + Protocol, Sequence, Set, Tuple, @@ -50,7 +51,7 @@ from pip._internal.metadata import ( 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.misc import StreamWrapper, ensure_dir, hash_file, partition from pip._internal.utils.unpacking import ( current_umask, is_within_directory, @@ -60,7 +61,6 @@ from pip._internal.utils.unpacking import ( from pip._internal.utils.wheel import parse_wheel if TYPE_CHECKING: - from typing import Protocol class File(Protocol): src_record_path: "RecordPath" @@ -143,16 +143,18 @@ def message_about_scripts_not_on_PATH(scripts: Sequence[str]) -> Optional[str]: # We don't want to warn for directories that are on PATH. not_warn_dirs = [ - os.path.normcase(i).rstrip(os.sep) + os.path.normcase(os.path.normpath(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))) + not_warn_dirs.append( + os.path.normcase(os.path.normpath(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 os.path.normcase(os.path.normpath(parent_dir)) not in not_warn_dirs } if not warn_for: return None @@ -162,16 +164,14 @@ def message_about_scripts_not_on_PATH(scripts: Sequence[str]) -> Optional[str]: 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]) + start_text = f"script {sorted_scripts[0]} is" 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 - ) + f"The {start_text} installed in '{parent_dir}' which is not on PATH." ) last_line_fmt = ( @@ -265,9 +265,9 @@ def get_csv_rows_for_installed( 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 + return installed_rows + [ + (installed_record_path, "", "") for installed_record_path in installed.values() + ] def get_console_script_specs(console: Dict[str, str]) -> List[str]: @@ -288,17 +288,15 @@ def get_console_script_specs(console: Dict[str, str]) -> List[str]: # 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 + # such versioned entry points. + # Currently, 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 + # we need to use universal wheels. As a workaround, 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. + # correct ones. # # 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 @@ -319,9 +317,7 @@ def get_console_script_specs(console: Dict[str, str]) -> List[str]: 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{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 @@ -334,9 +330,7 @@ def get_console_script_specs(console: Dict[str, str]) -> List[str]: scripts_to_generate.append("easy_install = " + easy_install_script) scripts_to_generate.append( - "easy_install-{} = {}".format( - get_major_minor_version(), easy_install_script - ) + f"easy_install-{get_major_minor_version()} = {easy_install_script}" ) # Delete any other versioned easy_install entry points easy_install_ep = [ @@ -364,12 +358,6 @@ class ZipBackedFile: 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 @@ -383,9 +371,13 @@ class ZipBackedFile: zipinfo = self._getinfo() - with self._zip_file.open(zipinfo) as f: - with open(self.dest_path, "wb") as dest: - shutil.copyfileobj(f, dest) + # optimization: the file is created by open(), + # skip the decompression when there is 0 bytes to decompress. + with open(self.dest_path, "wb") as dest: + if zipinfo.file_size > 0: + with self._zip_file.open(zipinfo) as f: + blocksize = min(zipinfo.file_size, 1024 * 1024) + shutil.copyfileobj(f, dest, blocksize) if zip_item_is_executable(zipinfo): set_extracted_file_to_default_mode_plus_executable(self.dest_path) @@ -406,10 +398,10 @@ class ScriptFile: class MissingCallableSuffix(InstallationError): def __init__(self, entry_point: str) -> None: super().__init__( - "Invalid script entry point: {} - A callable " + f"Invalid script entry point: {entry_point} - A callable " "suffix is required. Cf https://packaging.python.org/" "specifications/entry-points/#use-for-scripts for more " - "information.".format(entry_point) + "information." ) @@ -427,7 +419,7 @@ class PipScriptMaker(ScriptMaker): return super().make(specification, options) -def _install_wheel( +def _install_wheel( # noqa: C901, PLR0915 function is too long name: str, wheel_zip: ZipFile, wheel_path: str, @@ -511,9 +503,9 @@ def _install_wheel( _, 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) + f"Unexpected file in {wheel_path}: {record_path!r}. .data directory" + " contents should be named like: '/'." + ) raise InstallationError(message) try: @@ -521,10 +513,11 @@ def _install_wheel( 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) + f"Unknown scheme key used in {wheel_path}: {scheme_key} " + f"(for file {record_path!r}). .data directory contents " + f"should be in subdirectories named with a valid scheme " + f"key ({valid_scheme_keys})" + ) raise InstallationError(message) dest_path = os.path.join(scheme_path, dest_subpath) @@ -585,7 +578,15 @@ def _install_wheel( script_scheme_files = map(ScriptFile, script_scheme_files) files = chain(files, script_scheme_files) + existing_parents = set() for file in files: + # 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(file.dest_path) + if parent_dir not in existing_parents: + ensure_dir(parent_dir) + existing_parents.add(parent_dir) file.save() record_installed(file.src_record_path, file.dest_path, file.changed) @@ -608,7 +609,9 @@ def _install_wheel( # Compile all of the pyc files for the installed files if pycompile: - with captured_stdout() as stdout: + with contextlib.redirect_stdout( + StreamWrapper.from_stream(sys.stdout) + ) as stdout: with warnings.catch_warnings(): warnings.filterwarnings("ignore") for path in pyc_source_file_paths(): @@ -710,7 +713,7 @@ def req_error_context(req_description: str) -> Generator[None, None, None]: try: yield except InstallationError as e: - message = "For req: {}. {}".format(req_description, e.args[0]) + message = f"For req: {req_description}. {e.args[0]}" raise InstallationError(message) from e diff --git a/gestao_raul/Lib/site-packages/pip/_internal/operations/prepare.py b/gestao_raul/Lib/site-packages/pip/_internal/operations/prepare.py index 4bf414c..e6aa344 100644 --- a/gestao_raul/Lib/site-packages/pip/_internal/operations/prepare.py +++ b/gestao_raul/Lib/site-packages/pip/_internal/operations/prepare.py @@ -4,10 +4,11 @@ # 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 dataclasses import dataclass +from pathlib import Path from typing import Dict, Iterable, List, Optional from pip._vendor.packaging.utils import canonicalize_name @@ -21,7 +22,6 @@ from pip._internal.exceptions import ( InstallationError, MetadataInconsistent, NetworkConnectionError, - PreviousBuildDirError, VcsHashUnsupported, ) from pip._internal.index.package_finder import PackageFinder @@ -37,6 +37,7 @@ from pip._internal.network.lazy_wheel import ( from pip._internal.network.session import PipSession from pip._internal.operations.build.build_tracker import BuildTracker from pip._internal.req.req_install import InstallRequirement +from pip._internal.utils._log import getLogger from pip._internal.utils.direct_url_helpers import ( direct_url_for_editable, direct_url_from_link, @@ -47,13 +48,13 @@ from pip._internal.utils.misc import ( display_path, hash_file, hide_url, - is_installable_dir, + redact_auth_from_requirement, ) 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__) +logger = getLogger(__name__) def _get_prepared_distribution( @@ -65,10 +66,12 @@ def _get_prepared_distribution( ) -> BaseDistribution: """Prepare a distribution for installation.""" abstract_dist = make_distribution_for_install_requirement(req) - with build_tracker.track(req): - abstract_dist.prepare_distribution_metadata( - finder, build_isolation, check_build_deps - ) + tracker_id = abstract_dist.build_tracker_id + if tracker_id is not None: + with build_tracker.track(req, tracker_id): + abstract_dist.prepare_distribution_metadata( + finder, build_isolation, check_build_deps + ) return abstract_dist.get_metadata_distribution() @@ -78,13 +81,14 @@ def unpack_vcs_link(link: Link, location: str, verbosity: int) -> None: vcs_backend.unpack(location, url=hide_url(link.url), verbosity=verbosity) +@dataclass 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 + path: str + content_type: Optional[str] = None + + def __post_init__(self) -> None: + if self.content_type is None: + self.content_type = mimetypes.guess_type(self.path)[0] def get_http_url( @@ -179,7 +183,10 @@ def unpack_url( def _check_download_dir( - link: Link, download_dir: str, hashes: Optional[Hashes] + link: Link, + download_dir: str, + hashes: Optional[Hashes], + warn_on_hash_mismatch: bool = True, ) -> Optional[str]: """Check download_dir for previously downloaded file with correct hash If a correct file is found return its path else None @@ -195,10 +202,11 @@ def _check_download_dir( try: hashes.check_against_path(download_path) except HashMismatch: - logger.warning( - "Previously-downloaded file %s has bad hash. Re-downloading.", - download_path, - ) + if warn_on_hash_mismatch: + logger.warning( + "Previously-downloaded file %s has bad hash. Re-downloading.", + download_path, + ) os.unlink(download_path) return None return download_path @@ -222,6 +230,7 @@ class RequirementPreparer: use_user_site: bool, lazy_wheel: bool, verbosity: int, + legacy_resolver: bool, ) -> None: super().__init__() @@ -255,6 +264,9 @@ class RequirementPreparer: # How verbose should underlying tooling be? self.verbosity = verbosity + # Are we using the legacy resolver? + self.legacy_resolver = legacy_resolver + # Memoized downloaded files, as mapping of url: path. self._downloaded: Dict[str, str] = {} @@ -263,18 +275,28 @@ class RequirementPreparer: 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: + if req.link.is_file and not req.is_wheel_from_cache: message = "Processing %s" information = str(display_path(req.link.file_path)) else: message = "Collecting %s" - information = str(req.req or req) + information = redact_auth_from_requirement(req.req) if req.req else str(req) + + # If we used req.req, inject requirement source if available (this + # would already be included if we used req directly) + if req.req and req.comes_from: + if isinstance(req.comes_from, str): + comes_from: Optional[str] = req.comes_from + else: + comes_from = req.comes_from.from_path() + if comes_from: + information += f" (from {comes_from})" 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: + if req.is_wheel_from_cache: with indent_log(): logger.info("Using cached %s", req.link.filename) @@ -299,21 +321,7 @@ class RequirementPreparer: 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) - ) + req.ensure_pristine_source_checkout() def _get_linked_req_hashes(self, req: InstallRequirement) -> Hashes: # By the time this is called, the requirement's link should have @@ -338,7 +346,7 @@ class RequirementPreparer: # 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: + if not req.is_direct and not req.is_pinned: raise HashUnpinned() # If known-good hashes are missing for this requirement, @@ -351,6 +359,11 @@ class RequirementPreparer: self, req: InstallRequirement, ) -> Optional[BaseDistribution]: + if self.legacy_resolver: + logger.debug( + "Metadata-only fetching is not used in the legacy resolver", + ) + return None if self.require_hashes: logger.debug( "Metadata-only fetching is not used as hash checking is required", @@ -371,7 +384,7 @@ class RequirementPreparer: if metadata_link is None: return None assert req.req is not None - logger.info( + logger.verbose( "Obtaining dependency information for %s from %s", req.req, metadata_link, @@ -396,7 +409,7 @@ class RequirementPreparer: # NB: raw_name will fall back to the name from the install requirement if # the Name: field is not present, but it's noted in the raw_name docstring # that that should NEVER happen anyway. - if metadata_dist.raw_name != req.req.name: + if canonicalize_name(metadata_dist.raw_name) != canonicalize_name(req.req.name): raise MetadataInconsistent( req, "Name", req.req.name, metadata_dist.raw_name ) @@ -456,7 +469,19 @@ class RequirementPreparer: for link, (filepath, _) in batch_download: logger.debug("Downloading link %s to %s", link, filepath) req = links_to_fully_download[link] + # Record the downloaded file path so wheel reqs can extract a Distribution + # in .get_dist(). req.local_file_path = filepath + # Record that the file is downloaded so we don't do it again in + # _prepare_linked_requirement(). + self._downloaded[req.link.url] = filepath + + # If this is an sdist, we need to unpack it after downloading, but the + # .source_dir won't be set up until we are in _prepare_linked_requirement(). + # Add the downloaded archive to the install requirement to unpack after + # preparing the source dir. + if not req.is_wheel: + req.needs_unpacked_archive(Path(filepath)) # This step is necessary to ensure all lazy wheels are processed # successfully by the 'download', 'wheel', and 'install' commands. @@ -475,7 +500,18 @@ class RequirementPreparer: file_path = None 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) + file_path = _check_download_dir( + req.link, + self.download_dir, + hashes, + # When a locally built wheel has been found in cache, we don't warn + # about re-downloading when the already downloaded wheel hash does + # not match. This is because the hash must be checked against the + # original link, not the cached link. It that case the already + # downloaded file will be removed and re-fetched from cache (which + # implies a hash check against the cache entry's origin.json). + warn_on_hash_mismatch=not req.is_wheel_from_cache, + ) if file_path is not None: # The file is already available, so mark it as downloaded @@ -526,9 +562,35 @@ class RequirementPreparer: assert req.link link = req.link - self._ensure_link_req_src_dir(req, parallel_builds) hashes = self._get_linked_req_hashes(req) + if hashes and req.is_wheel_from_cache: + assert req.download_info is not None + assert link.is_wheel + assert link.is_file + # We need to verify hashes, and we have found the requirement in the cache + # of locally built wheels. + if ( + isinstance(req.download_info.info, ArchiveInfo) + and req.download_info.info.hashes + and hashes.has_one_of(req.download_info.info.hashes) + ): + # At this point we know the requirement was built from a hashable source + # artifact, and we verified that the cache entry's hash of the original + # artifact matches one of the hashes we expect. We don't verify hashes + # against the cached wheel, because the wheel is not the original. + hashes = None + else: + logger.warning( + "The hashes of the source archive found in cache entry " + "don't match, ignoring cached built wheel " + "and re-downloading source." + ) + req.link = req.cached_wheel_source_link + link = req.link + + self._ensure_link_req_src_dir(req, parallel_builds) + if link.is_existing_dir(): local_file = None elif link.url not in self._downloaded: @@ -543,8 +605,8 @@ class RequirementPreparer: ) except NetworkConnectionError as exc: raise InstallationError( - "Could not install requirement {} because of HTTP " - "error {} for URL {}".format(req, exc, link) + f"Could not install requirement {req} because of HTTP " + f"error {exc} for URL {link}" ) else: file_path = self._downloaded[link.url] @@ -561,12 +623,15 @@ class RequirementPreparer: # Make sure we have a hash in download_info. If we got it as part of the # URL, it will have been verified and we can rely on it. Otherwise we # compute it from the downloaded file. + # FIXME: https://github.com/pypa/pip/issues/11943 if ( isinstance(req.download_info.info, ArchiveInfo) - and not req.download_info.info.hash + and not req.download_info.info.hashes and local_file ): hash = hash_file(local_file.path)[0].hexdigest() + # We populate info.hash for backward compatibility. + # This will automatically populate info.hashes. req.download_info.info.hash = f"sha256={hash}" # For use in later processing, @@ -621,9 +686,9 @@ class RequirementPreparer: with indent_log(): if self.require_hashes: raise InstallationError( - "The editable requirement {} cannot be installed when " + f"The editable requirement {req} cannot be installed when " "requiring hashes, because there is no single file to " - "hash.".format(req) + "hash." ) req.ensure_has_source_dir(self.src_dir) req.update_editable() @@ -651,7 +716,7 @@ class RequirementPreparer: 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) + f"is set to {req.satisfied_by}" ) logger.info( "Requirement %s: %s (%s)", skip_reason, req, req.satisfied_by.version diff --git a/gestao_raul/Lib/site-packages/pip/_internal/pyproject.py b/gestao_raul/Lib/site-packages/pip/_internal/pyproject.py index 1de9f0f..0e8452f 100644 --- a/gestao_raul/Lib/site-packages/pip/_internal/pyproject.py +++ b/gestao_raul/Lib/site-packages/pip/_internal/pyproject.py @@ -1,16 +1,22 @@ import importlib.util import os +import sys from collections import namedtuple from typing import Any, List, Optional -from pip._vendor import tomli -from pip._vendor.packaging.requirements import InvalidRequirement, Requirement +if sys.version_info >= (3, 11): + import tomllib +else: + from pip._vendor import tomli as tomllib + +from pip._vendor.packaging.requirements import InvalidRequirement from pip._internal.exceptions import ( InstallationError, InvalidPyProjectBuildRequires, MissingPyProjectBuildRequires, ) +from pip._internal.utils.packaging import get_requirement def _is_list_of_str(obj: Any) -> bool: @@ -61,13 +67,13 @@ def load_pyproject_toml( if has_pyproject: with open(pyproject_toml, encoding="utf-8") as f: - pp_toml = tomli.loads(f.read()) + pp_toml = tomllib.loads(f.read()) 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 + # We check for use_pep517 being non-None and falsy 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 @@ -91,14 +97,19 @@ def load_pyproject_toml( # 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 - # or if we cannot import setuptools. + # or if we cannot import setuptools or wheels. - # We fallback to PEP 517 when without setuptools, + # We fallback to PEP 517 when without setuptools or without the wheel package, # so setuptools can be installed as a default build backend. # For more info see: # https://discuss.python.org/t/pip-without-setuptools-could-the-experience-be-improved/11810/9 + # https://github.com/pypa/pip/issues/8559 elif use_pep517 is None: - use_pep517 = has_pyproject or not importlib.util.find_spec("setuptools") + use_pep517 = ( + has_pyproject + or not importlib.util.find_spec("setuptools") + or not importlib.util.find_spec("wheel") + ) # At this point, we know whether we're going to use PEP 517. assert use_pep517 is not None @@ -118,7 +129,7 @@ def load_pyproject_toml( # a version of setuptools that supports that backend. build_system = { - "requires": ["setuptools>=40.8.0", "wheel"], + "requires": ["setuptools>=40.8.0"], "build-backend": "setuptools.build_meta:__legacy__", } @@ -146,7 +157,7 @@ def load_pyproject_toml( # Each requirement must be valid as per PEP 508 for requirement in requires: try: - Requirement(requirement) + get_requirement(requirement) except InvalidRequirement as error: raise InvalidPyProjectBuildRequires( package=req_name, diff --git a/gestao_raul/Lib/site-packages/pip/_internal/req/__init__.py b/gestao_raul/Lib/site-packages/pip/_internal/req/__init__.py index 8d56359..422d851 100644 --- a/gestao_raul/Lib/site-packages/pip/_internal/req/__init__.py +++ b/gestao_raul/Lib/site-packages/pip/_internal/req/__init__.py @@ -1,5 +1,6 @@ import collections import logging +from dataclasses import dataclass from typing import Generator, List, Optional, Sequence, Tuple from pip._internal.utils.logging import indent_log @@ -18,12 +19,9 @@ __all__ = [ logger = logging.getLogger(__name__) +@dataclass(frozen=True) class InstallationResult: - def __init__(self, name: str) -> None: - self.name = name - - def __repr__(self) -> str: - return f"InstallationResult(name={self.name!r})" + name: str def _validate_requirements( @@ -36,7 +34,6 @@ def _validate_requirements( def install_given_reqs( requirements: List[InstallRequirement], - install_options: List[str], global_options: Sequence[str], root: Optional[str], home: Optional[str], @@ -71,7 +68,6 @@ def install_given_reqs( try: requirement.install( - install_options, global_options, root=root, home=home, diff --git a/gestao_raul/Lib/site-packages/pip/_internal/req/__pycache__/__init__.cpython-310.pyc b/gestao_raul/Lib/site-packages/pip/_internal/req/__pycache__/__init__.cpython-310.pyc index 6cf4836edb755e4d8b3e1e16321d16478068f927..2248d232c0348276698a45f56b0cf81404223936 100644 GIT binary patch delta 1293 zcmaJ=OK%)S5bo~jdG74f8}Gwr;}8T|VI(7QLP3gfqDUNkNU)-eHd-z2-qo6U#64q- zqgffU5jP9LNSt?bLp~rRj{F4Z|VRud2JNtIwKWG&ZAh z*&)!L?3_*R!{{fRJl|Geavdb*^s~+N6G{XTn$H8>(*wgZ0@E`C%d-O8vx_zEJ3+}S z!B`iD?*?VBT#QY>5>&lvF}D0#Q1|MTOo*_bP_H5BVnsHW)Vm}#;fT^Hy+wp8%8!XC z&)J-MtD+(eS?!z| z=vCPfEs!=y6@srql!oYtE=1`HdWZDae!)cS^l5I3Q8L=|M=_1FP5Nlh1-mLCVDj?D zG>nsx?++)_4`eu0@*sW}yo|Am9?EbJDF101%&vpPs{oRCR1lBt5~)cp=rtl3?5$<% ztgG$x_3Rt1|5jcd4o6`aC8J~-h4FCsB~j>Hz*BGg&B1OgRXjM7ei99CM0L?KM>eI=aLhz#%RxEV&DZJ)A08@N+}S{jplU6AIL!s?+efPuy{j8N?fa%%>iJO#=ge+*nQZlDYIJU@aJ?8d#qA^XJm zzWV~?K=lwVBWxgCL3lAcFgG?ZeYxRBlZjM0pN8Wo=ljt#%=!EBI968nwK;tiAG2RB z9!9OB@BajS$GX+~r&d%8+4vk+LE;^NN;Uh++8R0MuI(_3GRl5;42#wn``P)E_i8`# zUg6MRQ!fEMH}P!KaFUmveTrDdis6!x96x{+g$1s#&XkT|Aeh;fePs)aBDbKFhU2L( z|NcECoL>B(;#1`&T4I?fH~ZLbzfnj3ml5#Zs)_T+*?!$P$-9pP*oKc$W1fj#lh=M#ttRH zQBac;QiUQ*ToBSOw~9mm1O5lDzVUH@f1nK!0^W0yHU%-(`@N5O^XAQ)H~zZyeS2}> zx)y=)`O)p(Q;>c^<@}fc6?@YBD9$I>wX<%UDRT$ zZ~Jy78?n=OeYcX$*y}g^1|>Zr_;=KAN;({qtr7Ldmx!nf>wpMrpZRTJOI^AhA{?nn zQ%*=XWS~(&L#-o8s0&wk2f9D`%&`FrCcvdBjf#)STE$zZeEgKR<&>BJngnuSO}j(F zwwMyr5N%q}Tcq3h9gn_TEYSyhHb@FL&~5;w zivW`NR1lvDDmB4`28ly;U@KiPsfA1!!UU}*G}xGzt(zzDSF>o4yf4$@I;*dghLYKq zN|x6cL_8ZPBfSZfVum@*NdOlCf#~uhsywiDS*fQo4lCsmQ7y0?-z^SV$L>iu$skax zTXFH2UE3>p5JX9o1;Hdn#LyPqnfX^jTXFWYKH`c4kYF}PIrd_q%gf(5N#(-66p1?S$n3<9rDhN8DRhfDJm)VJ5*C=kX?z^gu z!SFceB4P;?hE*;AHg;+NaMGeJt+JI4-0N1PWM3v(sv0m`OlzNAR8@*h&48iQz~@}l z@#3*I)4hn%@GjUFTx(O0>VGM;m5sB$8EoLqrp3?N?LF+Mvw;1s z)jBP=(Yx~Wz|&c`ICkPgy6YA{=vVgKody_fXd;$txt`Z@BR6v{%!izkJ0uy?N#<<# zD8VmxRS4d08s_fM8-e8kxsTROv;w-r23m7#*v!Uq8xKLr=G+}344vp?U&FauLD%Log_iZMT5mDGp_y`EI19wp(R)Yk`5QtF?` z?Nph?p%HPs-L9u*3dfvvUI?*ZF3nY4@VphU^b0`gdjMXu_|m+(!l-rRSQg`yQTC^0 zaN1<-SL<*6Qu8PMlENk3j(P=HX<{x>(kqQ@djq(_*Q4+`DEu3!8iG;G@XJ?C5K9it z6NFJLPyQ-4s;3=N{cK7TEvd|uUBrC)?i8-?BH*di1%#>y`n|y*u2MPIi_eZ#@@xHp w*ox&F_&U>f060{7mO2bR>QK%s)6*C)e&cg(!(hkEWPdQuj#!;NH7xJRKTzsQT>t<8 diff --git a/gestao_raul/Lib/site-packages/pip/_internal/req/__pycache__/constructors.cpython-310.pyc b/gestao_raul/Lib/site-packages/pip/_internal/req/__pycache__/constructors.cpython-310.pyc index 67b95036aeae42a18f04399a1394d1f1f5480ec6..4372502997cf235f61b52c35db87cfb94f616aa1 100644 GIT binary patch literal 13950 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 delta 5780 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 delta 10299 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%0AGVy|>y$zj=f>N=PGoAUg& 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 delta 43 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 diff --git a/gestao_raul/Lib/site-packages/pip/_internal/req/constructors.py b/gestao_raul/Lib/site-packages/pip/_internal/req/constructors.py index dea7c3b..56a964f 100644 --- a/gestao_raul/Lib/site-packages/pip/_internal/req/constructors.py +++ b/gestao_raul/Lib/site-packages/pip/_internal/req/constructors.py @@ -8,10 +8,12 @@ These are meant to be used elsewhere within pip to create instances of InstallRequirement. """ +import copy import logging import os import re -from typing import Any, Dict, Optional, Set, Tuple, Union +from dataclasses import dataclass +from typing import Collection, Dict, List, Optional, Set, Tuple, Union from pip._vendor.packaging.markers import Marker from pip._vendor.packaging.requirements import InvalidRequirement, Requirement @@ -57,6 +59,31 @@ def convert_extras(extras: Optional[str]) -> Set[str]: return get_requirement("placeholder" + extras.lower()).extras +def _set_requirement_extras(req: Requirement, new_extras: Set[str]) -> Requirement: + """ + Returns a new requirement based on the given one, with the supplied extras. If the + given requirement already has extras those are replaced (or dropped if no new extras + are given). + """ + match: Optional[re.Match[str]] = re.fullmatch( + # see https://peps.python.org/pep-0508/#complete-grammar + r"([\w\t .-]+)(\[[^\]]*\])?(.*)", + str(req), + flags=re.ASCII, + ) + # ireq.req is a valid requirement so the regex should always match + assert ( + match is not None + ), f"regex match on requirement {req} failed, this should never happen" + pre: Optional[str] = match.group(1) + post: Optional[str] = match.group(3) + assert ( + pre is not None and post is not None + ), f"regex group selection for requirement {req} failed, this should never happen" + extras: str = "[{}]".format(",".join(sorted(new_extras)) if new_extras else "") + return get_requirement(f"{pre}{extras}{post}") + + def parse_editable(editable_req: str) -> Tuple[Optional[str], str, Set[str]]: """Parses an editable requirement into: - a requirement name @@ -106,8 +133,8 @@ def parse_editable(editable_req: str) -> Tuple[Optional[str], str, Set[str]]: 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) + f"Could not detect requirement name for '{editable_req}', " + "please specify one with #egg=your_package_name" ) return package_name, url, set() @@ -136,7 +163,7 @@ def check_first_requirement_in_file(filename: str) -> None: # If there is a line continuation, drop it, and append the next line. if line.endswith("\\"): line = line[:-2].strip() + next(lines, "") - Requirement(line) + get_requirement(line) return @@ -165,18 +192,12 @@ def deduce_helpful_msg(req: str) -> str: return msg +@dataclass(frozen=True) 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 + requirement: Optional[Requirement] + link: Optional[Link] + markers: Optional[Marker] + extras: Set[str] def parse_req_from_editable(editable_req: str) -> RequirementParts: @@ -184,9 +205,9 @@ def parse_req_from_editable(editable_req: str) -> RequirementParts: if name is not None: try: - req: Optional[Requirement] = Requirement(name) - except InvalidRequirement: - raise InstallationError(f"Invalid requirement: '{name}'") + req: Optional[Requirement] = get_requirement(name) + except InvalidRequirement as exc: + raise InstallationError(f"Invalid requirement: {name!r}: {exc}") else: req = None @@ -201,15 +222,16 @@ def parse_req_from_editable(editable_req: str) -> RequirementParts: 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, + global_options: Optional[List[str]] = None, + hash_options: Optional[Dict[str, List[str]]] = None, constraint: bool = False, user_supplied: bool = False, permit_editable_wheels: bool = False, - config_settings: Optional[Dict[str, str]] = None, + config_settings: Optional[Dict[str, Union[str, List[str]]]] = None, ) -> InstallRequirement: - parts = parse_req_from_editable(editable_req) return InstallRequirement( @@ -222,9 +244,8 @@ def install_req_from_editable( 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 {}, + global_options=global_options, + hash_options=hash_options, config_settings=config_settings, extras=parts.extras, ) @@ -338,8 +359,8 @@ def parse_req_from_line(name: str, line_source: Optional[str]) -> RequirementPar def _parse_req_string(req_as_string: str) -> Requirement: try: - req = get_requirement(req_as_string) - except InvalidRequirement: + return get_requirement(req_as_string) + except InvalidRequirement as exc: if os.path.sep in req_as_string: add_msg = "It looks like a path." add_msg += deduce_helpful_msg(req_as_string) @@ -349,21 +370,10 @@ def parse_req_from_line(name: str, line_source: Optional[str]) -> RequirementPar add_msg = "= is not a valid operator. Did you mean == ?" else: add_msg = "" - msg = with_source(f"Invalid requirement: {req_as_string!r}") + msg = with_source(f"Invalid requirement: {req_as_string!r}: {exc}") 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) @@ -376,13 +386,15 @@ def parse_req_from_line(name: str, line_source: Optional[str]) -> RequirementPar 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, + global_options: Optional[List[str]] = None, + hash_options: Optional[Dict[str, List[str]]] = None, constraint: bool = False, line_source: Optional[str] = None, user_supplied: bool = False, - config_settings: Optional[Dict[str, str]] = None, + config_settings: Optional[Dict[str, Union[str, List[str]]]] = None, ) -> InstallRequirement: """Creates an InstallRequirement from a name, which might be a requirement, directory containing 'setup.py', filename, or URL. @@ -399,9 +411,8 @@ def install_req_from_line( 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 {}, + global_options=global_options, + hash_options=hash_options, config_settings=config_settings, constraint=constraint, extras=parts.extras, @@ -415,12 +426,11 @@ def install_req_from_req_string( isolated: bool = False, use_pep517: Optional[bool] = None, user_supplied: bool = False, - config_settings: Optional[Dict[str, str]] = None, ) -> InstallRequirement: try: req = get_requirement(req_string) - except InvalidRequirement: - raise InstallationError(f"Invalid requirement: '{req_string}'") + except InvalidRequirement as exc: + raise InstallationError(f"Invalid requirement: {req_string!r}: {exc}") domains_not_allowed = [ PyPI.file_storage_domain, @@ -436,7 +446,7 @@ def install_req_from_req_string( 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) + f"{comes_from.name} depends on {req} " ) return InstallRequirement( @@ -445,7 +455,6 @@ def install_req_from_req_string( isolated=isolated, use_pep517=use_pep517, user_supplied=user_supplied, - config_settings=config_settings, ) @@ -454,7 +463,7 @@ def install_req_from_parsed_requirement( isolated: bool = False, use_pep517: Optional[bool] = None, user_supplied: bool = False, - config_settings: Optional[Dict[str, str]] = None, + config_settings: Optional[Dict[str, Union[str, List[str]]]] = None, ) -> InstallRequirement: if parsed_req.is_editable: req = install_req_from_editable( @@ -473,7 +482,14 @@ def install_req_from_parsed_requirement( comes_from=parsed_req.comes_from, use_pep517=use_pep517, isolated=isolated, - options=parsed_req.options, + global_options=( + parsed_req.options.get("global_options", []) + if parsed_req.options + else [] + ), + hash_options=( + parsed_req.options.get("hashes", {}) if parsed_req.options else {} + ), constraint=parsed_req.constraint, line_source=parsed_req.line_source, user_supplied=user_supplied, @@ -493,9 +509,52 @@ def install_req_from_link_and_ireq( 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, config_settings=ireq.config_settings, user_supplied=ireq.user_supplied, ) + + +def install_req_drop_extras(ireq: InstallRequirement) -> InstallRequirement: + """ + Creates a new InstallationRequirement using the given template but without + any extras. Sets the original requirement as the new one's parent + (comes_from). + """ + return InstallRequirement( + req=( + _set_requirement_extras(ireq.req, set()) if ireq.req is not None else None + ), + comes_from=ireq, + editable=ireq.editable, + link=ireq.link, + markers=ireq.markers, + use_pep517=ireq.use_pep517, + isolated=ireq.isolated, + global_options=ireq.global_options, + hash_options=ireq.hash_options, + constraint=ireq.constraint, + extras=[], + config_settings=ireq.config_settings, + user_supplied=ireq.user_supplied, + permit_editable_wheels=ireq.permit_editable_wheels, + ) + + +def install_req_extend_extras( + ireq: InstallRequirement, + extras: Collection[str], +) -> InstallRequirement: + """ + Returns a copy of an installation requirement with some additional extras. + Makes a shallow copy of the ireq object. + """ + result = copy.copy(ireq) + result.extras = {*ireq.extras, *extras} + result.req = ( + _set_requirement_extras(ireq.req, result.extras) + if ireq.req is not None + else None + ) + return result diff --git a/gestao_raul/Lib/site-packages/pip/_internal/req/req_file.py b/gestao_raul/Lib/site-packages/pip/_internal/req/req_file.py index 11ec699..f6ba70f 100644 --- a/gestao_raul/Lib/site-packages/pip/_internal/req/req_file.py +++ b/gestao_raul/Lib/site-packages/pip/_internal/req/req_file.py @@ -2,11 +2,16 @@ Requirements file parsing """ +import codecs +import locale +import logging import optparse import os import re import shlex +import sys import urllib.parse +from dataclasses import dataclass from optparse import Values from typing import ( TYPE_CHECKING, @@ -16,6 +21,7 @@ from typing import ( Generator, Iterable, List, + NoReturn, Optional, Tuple, ) @@ -23,17 +29,10 @@ from typing import ( 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 + from pip._internal.network.session import PipSession __all__ = ["parse_requirements"] @@ -69,63 +68,87 @@ SUPPORTED_OPTIONS: List[Callable[..., optparse.Option]] = [ # options to be passed to requirements SUPPORTED_OPTIONS_REQ: List[Callable[..., optparse.Option]] = [ - cmdoptions.install_options, cmdoptions.global_options, cmdoptions.hash, + cmdoptions.config_settings, ] +SUPPORTED_OPTIONS_EDITABLE_REQ: List[Callable[..., optparse.Option]] = [ + cmdoptions.config_settings, +] + + # the 'dest' string values SUPPORTED_OPTIONS_REQ_DEST = [str(o().dest) for o in SUPPORTED_OPTIONS_REQ] +SUPPORTED_OPTIONS_EDITABLE_REQ_DEST = [ + str(o().dest) for o in SUPPORTED_OPTIONS_EDITABLE_REQ +] + +# order of BOMS is important: codecs.BOM_UTF16_LE is a prefix of codecs.BOM_UTF32_LE +# so data.startswith(BOM_UTF16_LE) would be true for UTF32_LE data +BOMS: List[Tuple[bytes, str]] = [ + (codecs.BOM_UTF8, "utf-8"), + (codecs.BOM_UTF32, "utf-32"), + (codecs.BOM_UTF32_BE, "utf-32-be"), + (codecs.BOM_UTF32_LE, "utf-32-le"), + (codecs.BOM_UTF16, "utf-16"), + (codecs.BOM_UTF16_BE, "utf-16-be"), + (codecs.BOM_UTF16_LE, "utf-16-le"), +] + +PEP263_ENCODING_RE = re.compile(rb"coding[:=]\s*([-\w.]+)") +DEFAULT_ENCODING = "utf-8" + +logger = logging.getLogger(__name__) +@dataclass(frozen=True) 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 + # TODO: replace this with slots=True when dropping Python 3.9 support. + __slots__ = ( + "requirement", + "is_editable", + "comes_from", + "constraint", + "options", + "line_source", + ) + + requirement: str + is_editable: bool + comes_from: str + constraint: bool + options: Optional[Dict[str, Any]] + line_source: Optional[str] +@dataclass(frozen=True) 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 + __slots__ = ("filename", "lineno", "args", "opts", "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 + filename: str + lineno: int + args: str + opts: Values + constraint: bool + + @property + def is_editable(self) -> bool: + return bool(self.opts.editables) + + @property + def requirement(self) -> Optional[str]: + if self.args: + return self.args + elif self.is_editable: # We don't support multiple -e on one line - self.requirement = opts.editables[0] - else: - self.is_requirement = False + return self.opts.editables[0] + return None def parse_requirements( filename: str, - session: PipSession, + session: "PipSession", finder: Optional["PackageFinder"] = None, options: Optional[optparse.Values] = None, constraint: bool = False, @@ -166,7 +189,6 @@ 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", @@ -174,33 +196,27 @@ def handle_requirement_line( line.lineno, ) - assert line.is_requirement + assert line.requirement is not None + # get the options that apply to requirements 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, - ) + supported_dest = SUPPORTED_OPTIONS_EDITABLE_REQ_DEST else: - # 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] + supported_dest = SUPPORTED_OPTIONS_REQ_DEST + req_options = {} + for dest in supported_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, - ) + 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( @@ -209,8 +225,14 @@ def handle_option_line( lineno: int, finder: Optional["PackageFinder"] = None, options: Optional[optparse.Values] = None, - session: Optional[PipSession] = None, + session: Optional["PipSession"] = None, ) -> None: + if opts.hashes: + logger.warning( + "%s line %s has --hash but no requirement, and will be ignored.", + filename, + lineno, + ) if options: # percolate options upward @@ -271,7 +293,7 @@ def handle_line( line: ParsedLine, options: Optional[optparse.Values] = None, finder: Optional["PackageFinder"] = None, - session: Optional[PipSession] = None, + session: Optional["PipSession"] = None, ) -> Optional[ParsedRequirement]: """Handle a single parsed requirements line; This can result in creating/yielding requirements, or updating the finder. @@ -296,7 +318,7 @@ def handle_line( affect the finder. """ - if line.is_requirement: + if line.requirement is not None: parsed_req = handle_requirement_line(line, options) return parsed_req else: @@ -314,7 +336,7 @@ def handle_line( class RequirementsFileParser: def __init__( self, - session: PipSession, + session: "PipSession", line_parser: LineParser, ) -> None: self._session = session @@ -324,13 +346,18 @@ class RequirementsFileParser: self, filename: str, constraint: bool ) -> Generator[ParsedLine, None, None]: """Parse a given file, yielding parsed lines.""" - yield from self._parse_and_recurse(filename, constraint) + yield from self._parse_and_recurse( + filename, constraint, [{os.path.abspath(filename): None}] + ) def _parse_and_recurse( - self, filename: str, constraint: bool + self, + filename: str, + constraint: bool, + parsed_files_stack: List[Dict[str, Optional[str]]], ) -> Generator[ParsedLine, None, None]: for line in self._parse_file(filename, constraint): - if not line.is_requirement and ( + if line.requirement is None and ( line.opts.requirements or line.opts.constraints ): # parse a nested requirements file @@ -348,12 +375,30 @@ class RequirementsFileParser: # 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, + # and then abspath so that we can identify recursive references + req_path = os.path.abspath( + os.path.join( + os.path.dirname(filename), + req_path, + ) ) - - yield from self._parse_and_recurse(req_path, nested_constraint) + parsed_files = parsed_files_stack[0] + if req_path in parsed_files: + initial_file = parsed_files[req_path] + tail = ( + f" and again in {initial_file}" + if initial_file is not None + else "" + ) + raise RequirementsFileParseError( + f"{req_path} recursively references itself in {filename}{tail}" + ) + # Keeping a track where was each file first included in + new_parsed_files = parsed_files.copy() + new_parsed_files[req_path] = filename + yield from self._parse_and_recurse( + req_path, nested_constraint, [new_parsed_files, *parsed_files_stack] + ) else: yield line @@ -519,7 +564,7 @@ def expand_env_variables(lines_enum: ReqFileLines) -> ReqFileLines: yield line_number, line -def get_file_content(url: str, session: PipSession) -> Tuple[str, str]: +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. @@ -527,10 +572,12 @@ def get_file_content(url: str, session: PipSession) -> Tuple[str, str]: :param url: File path or url. :param session: PipSession instance. """ - scheme = get_url_scheme(url) - + scheme = urllib.parse.urlsplit(url).scheme # Pip has special support for file:// URLs (LocalFSAdapter). if scheme in ["http", "https", "file"]: + # Delay importing heavy network modules until absolutely necessary. + from pip._internal.network.utils import raise_for_status + resp = session.get(url) raise_for_status(resp) return resp.url, resp.text @@ -538,7 +585,39 @@ def get_file_content(url: str, session: PipSession) -> Tuple[str, str]: # Assume this is a bare path. try: with open(url, "rb") as f: - content = auto_decode(f.read()) + raw_content = f.read() except OSError as exc: raise InstallationError(f"Could not open requirements file: {exc}") + + content = _decode_req_file(raw_content, url) + return url, content + + +def _decode_req_file(data: bytes, url: str) -> str: + for bom, encoding in BOMS: + if data.startswith(bom): + return data[len(bom) :].decode(encoding) + + for line in data.split(b"\n")[:2]: + if line[0:1] == b"#": + result = PEP263_ENCODING_RE.search(line) + if result is not None: + encoding = result.groups()[0].decode("ascii") + return data.decode(encoding) + + try: + return data.decode(DEFAULT_ENCODING) + except UnicodeDecodeError: + locale_encoding = locale.getpreferredencoding(False) or sys.getdefaultencoding() + logging.warning( + "unable to decode data from %s with default encoding %s, " + "falling back to encoding from locale: %s. " + "If this is intentional you should specify the encoding with a " + "PEP-263 style comment, e.g. '# -*- coding: %s -*-'", + url, + DEFAULT_ENCODING, + locale_encoding, + locale_encoding, + ) + return data.decode(locale_encoding) diff --git a/gestao_raul/Lib/site-packages/pip/_internal/req/req_install.py b/gestao_raul/Lib/site-packages/pip/_internal/req/req_install.py index bb38ec0..3262d82 100644 --- a/gestao_raul/Lib/site-packages/pip/_internal/req/req_install.py +++ b/gestao_raul/Lib/site-packages/pip/_internal/req/req_install.py @@ -1,6 +1,3 @@ -# The following comment should be removed at some point in the future. -# mypy: strict-optional=False - import functools import logging import os @@ -8,8 +5,8 @@ import shutil import sys import uuid import zipfile -from enum import Enum from optparse import Values +from pathlib import Path from typing import Any, Collection, Dict, Iterable, List, Optional, Sequence, Union from pip._vendor.packaging.markers import Marker @@ -21,7 +18,7 @@ from pip._vendor.packaging.version import parse as parse_version from pip._vendor.pyproject_hooks import BuildBackendHookCaller from pip._internal.build_env import BuildEnvironment, NoOpBuildEnvironment -from pip._internal.exceptions import InstallationError, LegacyInstallFailure +from pip._internal.exceptions import InstallationError, PreviousBuildDirError from pip._internal.locations import get_scheme from pip._internal.metadata import ( BaseDistribution, @@ -40,15 +37,10 @@ from pip._internal.operations.build.metadata_legacy import ( from pip._internal.operations.install.editable_legacy import ( install_editable as install_editable_legacy, ) -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 LegacyInstallReason, deprecated -from pip._internal.utils.direct_url_helpers import ( - direct_url_for_editable, - direct_url_from_link, -) +from pip._internal.utils.deprecation import deprecated from pip._internal.utils.hashes import Hashes from pip._internal.utils.misc import ( ConfiguredBuildBackendHookCaller, @@ -56,11 +48,14 @@ from pip._internal.utils.misc import ( backup_dir, display_path, hide_url, + is_installable_dir, + redact_auth_from_requirement, redact_auth_from_url, ) -from pip._internal.utils.packaging import safe_extra +from pip._internal.utils.packaging import get_requirement from pip._internal.utils.subprocess import runner_with_spinner_message from pip._internal.utils.temp_dir import TempDirectory, tempdir_kinds +from pip._internal.utils.unpacking import unpack_file from pip._internal.utils.virtualenv import running_under_virtualenv from pip._internal.vcs import vcs @@ -83,10 +78,10 @@ class InstallRequirement: 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, - config_settings: Optional[Dict[str, str]] = None, + config_settings: Optional[Dict[str, Union[str, List[str]]]] = None, constraint: bool = False, extras: Collection[str] = (), user_supplied: bool = False, @@ -98,7 +93,6 @@ class InstallRequirement: self.constraint = constraint self.editable = editable self.permit_editable_wheels = permit_editable_wheels - self.legacy_install_reason: Optional[LegacyInstallReason] = None # source_dir is the local directory where the linked requirement is # located, or unpacked. In case unpacking is needed, creating and @@ -111,11 +105,17 @@ class InstallRequirement: if link.is_file: self.source_dir = os.path.normpath(os.path.abspath(link.file_path)) + # original_link is the direct URL that was provided by the user for the + # requirement, either directly or via a constraints file. 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 + + # When this InstallRequirement is a wheel obtained from the cache of locally + # built wheels, this is the source link corresponding to the cache entry, which + # was used to download and build the cached wheel. + self.cached_wheel_source_link: Optional[Link] = None # Information about the location of the artifact that was downloaded . This # property is guaranteed to be set in resolver results. @@ -129,7 +129,7 @@ class InstallRequirement: if extras: self.extras = extras elif req: - self.extras = {safe_extra(extra) for extra in req.extras} + self.extras = req.extras else: self.extras = set() if markers is None and req: @@ -146,7 +146,6 @@ class InstallRequirement: # 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 {} self.config_settings = config_settings @@ -182,14 +181,27 @@ class InstallRequirement: # but after loading this flag should be treated as read only. self.use_pep517 = use_pep517 + # If config settings are provided, enforce PEP 517. + if self.config_settings: + if self.use_pep517 is False: + logger.warning( + "--no-use-pep517 ignored for %s " + "because --config-settings are specified.", + self, + ) + self.use_pep517 = True + # This requirement needs more preparation before it can be built self.needs_more_preparation = False + # This requirement needs to be unpacked before it can be installed. + self._archive_source: Optional[Path] = None + def __str__(self) -> str: if self.req: - s = str(self.req) + s = redact_auth_from_requirement(self.req) if self.link: - s += " from {}".format(redact_auth_from_url(self.link.url)) + s += f" from {redact_auth_from_url(self.link.url)}" elif self.link: s = redact_auth_from_url(self.link.url) else: @@ -210,8 +222,9 @@ class InstallRequirement: return s def __repr__(self) -> str: - return "<{} object: {} editable={!r}>".format( - self.__class__.__name__, str(self), self.editable + return ( + f"<{self.__class__.__name__} object: " + f"{str(self)} editable={self.editable!r}>" ) def format_debug(self) -> str: @@ -219,7 +232,7 @@ class InstallRequirement: attributes = vars(self) names = sorted(attributes) - state = ("{}={!r}".format(attr, attributes[attr]) for attr in sorted(names)) + state = (f"{attr}={attributes[attr]!r}" for attr in sorted(names)) return "<{name} object: {{{state}}}>".format( name=self.__class__.__name__, state=", ".join(state), @@ -232,7 +245,7 @@ class InstallRequirement: return None return self.req.name - @functools.lru_cache() # use cached_property in python 3.8+ + @functools.cached_property def supports_pyproject_editable(self) -> bool: if not self.use_pep517: return False @@ -246,15 +259,22 @@ class InstallRequirement: @property def specifier(self) -> SpecifierSet: + assert self.req is not None return self.req.specifier + @property + def is_direct(self) -> bool: + """Whether this requirement was specified as a direct URL.""" + return self.original_link is not None + @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 + assert self.req is not None + specifiers = self.req.specifier return len(specifiers) == 1 and next(iter(specifiers)).operator in {"==", "==="} def match_markers(self, extras_requested: Optional[Iterable[str]] = None) -> bool: @@ -295,8 +315,14 @@ class InstallRequirement: """ good_hashes = self.hash_options.copy() - link = self.link if trust_internet else self.original_link + if trust_internet: + link = self.link + elif self.is_direct and self.user_supplied: + link = self.original_link + else: + link = None if link and link.hash: + assert link.hash_name is not None good_hashes.setdefault(link.hash_name, []).append(link.hash) return Hashes(good_hashes) @@ -306,6 +332,7 @@ class InstallRequirement: return None s = str(self.req) if self.comes_from: + comes_from: Optional[str] if isinstance(self.comes_from, str): comes_from = self.comes_from else: @@ -337,7 +364,7 @@ class InstallRequirement: # 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) + dir_name: str = canonicalize_name(self.req.name) if parallel_builds: dir_name = f"{dir_name}_{uuid.uuid4().hex}" @@ -369,7 +396,7 @@ class InstallRequirement: else: op = "===" - self.req = Requirement( + self.req = get_requirement( "".join( [ self.metadata["Name"], @@ -380,6 +407,7 @@ class InstallRequirement: ) def warn_on_mismatching_name(self) -> None: + assert self.req is not None metadata_name = canonicalize_name(self.metadata["Name"]) if canonicalize_name(self.req.name) == metadata_name: # Everything is fine. @@ -394,7 +422,7 @@ class InstallRequirement: metadata_name, self.name, ) - self.req = Requirement(metadata_name) + self.req = get_requirement(metadata_name) def check_if_exists(self, use_user_site: bool) -> None: """Find an installed distribution that satisfies or conflicts @@ -440,9 +468,16 @@ class InstallRequirement: return False return self.link.is_wheel + @property + def is_wheel_from_cache(self) -> bool: + # When True, it means that this InstallRequirement is a local wheel file in the + # cache of locally built wheels. + return self.cached_wheel_source_link is not None + # Things valid for sdists @property def unpacked_source_directory(self) -> str: + assert self.source_dir, f"No source dir for {self}" return os.path.join( self.source_dir, self.link and self.link.subdirectory_fragment or "" ) @@ -479,6 +514,7 @@ class InstallRequirement: ) if pyproject_toml_data is None: + assert not self.config_settings self.use_pep517 = False return @@ -502,7 +538,7 @@ class InstallRequirement: if ( self.editable and self.use_pep517 - and not self.supports_pyproject_editable() + and not self.supports_pyproject_editable and not os.path.isfile(self.setup_py_path) and not os.path.isfile(self.setup_cfg_path) ): @@ -520,7 +556,7 @@ class InstallRequirement: 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 + assert self.source_dir, f"No source dir for {self}" details = self.name or f"from {self.link}" if self.use_pep517: @@ -528,7 +564,7 @@ class InstallRequirement: if ( self.editable and self.permit_editable_wheels - and self.supports_pyproject_editable() + and self.supports_pyproject_editable ): self.metadata_directory = generate_editable_metadata( build_env=self.build_env, @@ -569,8 +605,10 @@ class InstallRequirement: if self.metadata_directory: return get_directory_distribution(self.metadata_directory) elif self.local_file_path and self.is_wheel: + assert self.req is not None return get_wheel_distribution( - FilesystemWheel(self.local_file_path), canonicalize_name(self.name) + FilesystemWheel(self.local_file_path), + canonicalize_name(self.req.name), ) raise AssertionError( f"InstallRequirement {self} has no metadata directory and no wheel: " @@ -578,9 +616,9 @@ class InstallRequirement: ) def assert_source_matches_version(self) -> None: - assert self.source_dir + assert self.source_dir, f"No source dir for {self}" version = self.metadata["version"] - if self.req.specifier and version not in self.req.specifier: + if self.req and self.req.specifier and version not in self.req.specifier: logger.warning( "Requested %s, but installing version %s", self, @@ -617,6 +655,27 @@ class InstallRequirement: parallel_builds=parallel_builds, ) + def needs_unpacked_archive(self, archive_source: Path) -> None: + assert self._archive_source is None + self._archive_source = archive_source + + def ensure_pristine_source_checkout(self) -> None: + """Ensure the source directory has not yet been built in.""" + assert self.source_dir is not None + if self._archive_source is not None: + unpack_file(str(self._archive_source), self.source_dir) + elif is_installable_dir(self.source_dir): + # If a checkout exists, it's unwise to keep going. + # version inconsistencies are logged later, but do not fail + # the installation. + raise PreviousBuildDirError( + f"pip can't proceed with requirements '{self}' due to a " + f"pre-existing build directory ({self.source_dir}). 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." + ) + # For editable installations def update_editable(self) -> None: if not self.link: @@ -673,9 +732,10 @@ class InstallRequirement: name = name.replace(os.path.sep, "/") return name + assert self.req is not None path = os.path.join(parentdir, path) name = _clean_zip_name(path, rootdir) - return self.name + "/" + name + return self.req.name + "/" + name def archive(self, build_dir: Optional[str]) -> None: """Saves archive to provided build_dir. @@ -692,8 +752,8 @@ class InstallRequirement: 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)), + f"The file {display_path(archive_path)} exists. (i)gnore, (w)ipe, " + "(b)ackup, (a)bort ", ("i", "w", "b", "a"), ) if response == "i": @@ -746,7 +806,6 @@ class InstallRequirement: def install( self, - install_options: List[str], global_options: Optional[Sequence[str]] = None, root: Optional[str] = None, home: Optional[str] = None, @@ -755,8 +814,9 @@ class InstallRequirement: use_user_site: bool = False, pycompile: bool = True, ) -> None: + assert self.req is not None scheme = get_scheme( - self.name, + self.req.name, user=use_user_site, home=home, root=root, @@ -764,99 +824,60 @@ class InstallRequirement: 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, + deprecated( + reason=( + f"Legacy editable install of {self} (setup.py develop) " + "is deprecated." + ), + replacement=( + "to add a pyproject.toml or enable --use-pep517, " + "and use setuptools >= 64. " + "If the resulting installation is not behaving as expected, " + "try using --config-settings editable_mode=compat. " + "Please consult the setuptools documentation for more information" + ), + gone_in="25.1", + issue=11457, ) - self.install_succeeded = True - return - - if self.is_wheel: - assert self.local_file_path - direct_url = None - # TODO this can be refactored to direct_url = self.download_info - 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, + if self.config_settings: + logger.warning( + "--config-settings ignored for legacy editable install of %s. " + "Consider upgrading to a version of setuptools " + "that supports PEP 660 (>= 64).", + self, ) - 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, + install_editable_legacy( + global_options=global_options if global_options is not None else [], + prefix=prefix, + home=home, + use_user_site=use_user_site, + name=self.req.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 - # TODO: Why don't we do this for editable installs? + assert self.is_wheel + assert self.local_file_path - # 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: - if ( - self.legacy_install_reason is not None - and self.legacy_install_reason.emit_before_install - ): - self.legacy_install_reason.emit_deprecation(self.name) - 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 - except Exception: - self.install_succeeded = True - raise - - self.install_succeeded = success - - if ( - success - and self.legacy_install_reason is not None - and self.legacy_install_reason.emit_after_success - ): - self.legacy_install_reason.emit_deprecation(self.name) + install_wheel( + self.req.name, + self.local_file_path, + scheme=scheme, + req_description=str(self.req), + pycompile=pycompile, + warn_script_location=warn_script_location, + direct_url=self.download_info if self.is_direct else None, + requested=self.user_supplied, + ) + self.install_succeeded = True def check_invalid_constraint_type(req: InstallRequirement) -> str: - # Check for unsupported forms problem = "" if not req.name: @@ -893,54 +914,21 @@ def _has_option(options: Values, reqs: List[InstallRequirement], option: str) -> return False -def _install_option_ignored( - install_options: List[str], reqs: List[InstallRequirement] -) -> bool: - for req in reqs: - if (install_options or req.install_options) and not req.use_pep517: - return False - return True - - -class LegacySetupPyOptionsCheckMode(Enum): - INSTALL = 1 - WHEEL = 2 - DOWNLOAD = 3 - - def check_legacy_setup_py_options( options: Values, reqs: List[InstallRequirement], - mode: LegacySetupPyOptionsCheckMode, ) -> None: - has_install_options = _has_option(options, reqs, "install_options") has_build_options = _has_option(options, reqs, "build_options") has_global_options = _has_option(options, reqs, "global_options") - legacy_setup_py_options_present = ( - has_install_options or has_build_options or has_global_options - ) - if not legacy_setup_py_options_present: - return - - options.format_control.disallow_binaries() - logger.warning( - "Implying --no-binary=:all: due to the presence of " - "--build-option / --global-option / --install-option. " - "Consider using --config-settings for more flexibility.", - ) - if mode == LegacySetupPyOptionsCheckMode.INSTALL and has_install_options: - if _install_option_ignored(options.install_options, reqs): - logger.warning( - "Ignoring --install-option when building using PEP 517", - ) - else: - deprecated( - reason=( - "--install-option is deprecated because " - "it forces pip to use the 'setup.py install' " - "command which is itself deprecated." - ), - issue=11358, - replacement="to use --config-settings", - gone_in="23.1", - ) + if has_build_options or has_global_options: + deprecated( + reason="--build-option and --global-option are deprecated.", + issue=11859, + replacement="to use --config-settings", + gone_in=None, + ) + logger.warning( + "Implying --no-binary=:all: due to the presence of " + "--build-option / --global-option. " + ) + options.format_control.disallow_binaries() diff --git a/gestao_raul/Lib/site-packages/pip/_internal/req/req_uninstall.py b/gestao_raul/Lib/site-packages/pip/_internal/req/req_uninstall.py index 15b6738..26df208 100644 --- a/gestao_raul/Lib/site-packages/pip/_internal/req/req_uninstall.py +++ b/gestao_raul/Lib/site-packages/pip/_internal/req/req_uninstall.py @@ -5,14 +5,15 @@ import sysconfig from importlib.util import cache_from_source from typing import Any, Callable, Dict, Generator, Iterable, List, Optional, Set, Tuple -from pip._internal.exceptions import UninstallationError +from pip._internal.exceptions import LegacyDistutilsInstall, UninstallMissingRecord from pip._internal.locations import get_bin_prefix, get_bin_user from pip._internal.metadata import BaseDistribution 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, is_local, normalize_path, renames, rmtree +from pip._internal.utils.misc import ask, normalize_path, renames, rmtree from pip._internal.utils.temp_dir import AdjacentTempDirectory, TempDirectory +from pip._internal.utils.virtualenv import running_under_virtualenv logger = getLogger(__name__) @@ -60,7 +61,7 @@ def uninstallation_paths(dist: BaseDistribution) -> Generator[str, None, None]: UninstallPathSet.add() takes care of the __pycache__ .py[co]. - If RECORD is not found, raises UninstallationError, + If RECORD is not found, raises an error, with possible information from the INSTALLER file. https://packaging.python.org/specifications/recording-installed-packages/ @@ -70,17 +71,7 @@ def uninstallation_paths(dist: BaseDistribution) -> Generator[str, None, None]: entries = dist.iter_declared_entries() if entries is None: - msg = "Cannot uninstall {dist}, RECORD file not found.".format(dist=dist) - installer = dist.installer - if not installer or installer == "pip": - dep = "{}=={}".format(dist.raw_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) + raise UninstallMissingRecord(distribution=dist) for entry in entries: path = os.path.join(location, entry) @@ -171,8 +162,7 @@ def compress_for_output_listing(paths: Iterable[str]) -> Tuple[Set[str], Set[str 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 + _normcased_files = set(map(os.path.normcase, files)) folders = compact(folders) @@ -273,7 +263,7 @@ class StashedUninstallPathSet: def commit(self) -> None: """Commits the uninstall by removing stashed files.""" - for _, save_dir in self._save_dirs.items(): + for save_dir in self._save_dirs.values(): save_dir.cleanup() self._moves = [] self._save_dirs = {} @@ -312,6 +302,10 @@ class UninstallPathSet: self._pth: Dict[str, UninstallPthEntries] = {} self._dist = dist self._moved_paths = StashedUninstallPathSet() + # Create local cache of normalize_path results. Creating an UninstallPathSet + # can result in hundreds/thousands of redundant calls to normalize_path with + # the same args, which hurts performance. + self._normalize_path_cached = functools.lru_cache(normalize_path) def _permitted(self, path: str) -> bool: """ @@ -319,14 +313,17 @@ class UninstallPathSet: remove/modify, False otherwise. """ - return is_local(path) + # aka is_local, but caching normalized sys.prefix + if not running_under_virtualenv(): + return True + return path.startswith(self._normalize_path_cached(sys.prefix)) 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)) + path = os.path.join(self._normalize_path_cached(head), os.path.normcase(tail)) if not os.path.exists(path): return @@ -341,7 +338,7 @@ class UninstallPathSet: self.add(cache_from_source(path)) def add_pth(self, pth_file: str, entry: str) -> None: - pth_file = normalize_path(pth_file) + pth_file = self._normalize_path_cached(pth_file) if self._permitted(pth_file): if pth_file not in self._pth: self._pth[pth_file] = UninstallPthEntries(pth_file) @@ -360,7 +357,7 @@ class UninstallPathSet: ) return - dist_name_version = f"{self._dist.raw_name}-{self._dist.version}" + dist_name_version = f"{self._dist.raw_name}-{self._dist.raw_version}" logger.info("Uninstalling %s:", dist_name_version) with indent_log(): @@ -502,13 +499,7 @@ class UninstallPathSet: paths_to_remove.add(f"{path}.pyo") elif dist.installed_by_distutils: - 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.raw_name, - ) - ) + raise LegacyDistutilsInstall(distribution=dist) elif dist.installed_as_egg: # package installed by easy_install @@ -531,12 +522,14 @@ class UninstallPathSet: # above, so this only covers the setuptools-style editable. with open(develop_egg_link) as fh: link_pointer = os.path.normcase(fh.readline().strip()) - normalized_link_pointer = normalize_path(link_pointer) + normalized_link_pointer = paths_to_remove._normalize_path_cached( + link_pointer + ) assert os.path.samefile( normalized_link_pointer, normalized_dist_location ), ( - f"Egg-link {link_pointer} does not match installed location of " - f"{dist.raw_name} (at {dist_location})" + f"Egg-link {develop_egg_link} (to {link_pointer}) does not match " + f"installed location of {dist.raw_name} (at {dist_location})" ) paths_to_remove.add(develop_egg_link) easy_install_pth = os.path.join( diff --git a/gestao_raul/Lib/site-packages/pip/_internal/resolution/__pycache__/__init__.cpython-310.pyc b/gestao_raul/Lib/site-packages/pip/_internal/resolution/__pycache__/__init__.cpython-310.pyc index 25fff47b7a2aa6a203aa24ccfce70d8d32575daf..f58b85d81e40529f72822866209d7c3519ee01ae 100644 GIT binary patch delta 54 zcmX@YxQ~%LpO=@50SFfPt)9qjBcJGO6%$&VT2vfUo|;pVALEjrT$-DjS5h1k6y)UU IJTWH%0JV$}wEzGB delta 60 zcmdnTc!ZHVpO=@50SKypgihqPQB8NYiU}=FEh>&FPt7UGk8#OQF3nBND=CgiPc1G< O%#SZhEX|pi76AY`#1#+# diff --git a/gestao_raul/Lib/site-packages/pip/_internal/resolution/__pycache__/base.cpython-310.pyc b/gestao_raul/Lib/site-packages/pip/_internal/resolution/__pycache__/base.cpython-310.pyc index 89f8b04d15082fa0646fc46ce8bf674dfd82480c..2f6d539749838e7d339a4fd56fdb6c216d3db68c 100644 GIT binary patch delta 57 zcmbQiF^PjapO=@50SFfPt=`DJmQg;|*(xTqIJKxaraU#LBtOO_Ke;qFHLs*NCMd|s L)p_$>Mr$Sj{Y!wq)oLW>IQ=Xbrk{{!epIn-onpaXBlb%{! Rl9(S~lvtXx`8uOD6993~70mzu diff --git a/gestao_raul/Lib/site-packages/pip/_internal/resolution/legacy/__pycache__/__init__.cpython-310.pyc b/gestao_raul/Lib/site-packages/pip/_internal/resolution/legacy/__pycache__/__init__.cpython-310.pyc index cb8c11a153cf31ef324e7643ab469b70a39e98bb..5606f8316b947e226c20daa541e70510902d27ac 100644 GIT binary patch delta 54 zcmX@jc$ASlpO=@50SFfPt)9qjBcI`H6%$&VT2vfUo|;pVALEjrT$-DjS5h1k6y)UU IJTWI80J&!o(EtDd delta 60 zcmX@gc$$$rpO=@50SKypgihqPQO$F&FPt7UGk8#OQF3nBND=CgiPc1G< O%#SZhEX|pi77qYE9ThA9 diff --git a/gestao_raul/Lib/site-packages/pip/_internal/resolution/legacy/__pycache__/resolver.cpython-310.pyc b/gestao_raul/Lib/site-packages/pip/_internal/resolution/legacy/__pycache__/resolver.cpython-310.pyc index 7b7b14d551165f45583b20b57fd74f0f8d77dd80..91ba362d16d283da729b214a8a758f130dbccfa8 100644 GIT binary patch delta 2754 zcmZ8jYitzP6`p%{c4l|IyT`@bR8gvi`w!QNoi>qB)JL+Fs;E&~^+zl9N7|}YrLI~;(*jNe~1;;b81tS#~&xC#Pv+z*IATZdvGBG@J)@9tCd5PscXJ*n# z7q7xpcjnZo@gox=8Odm9=sqjH6&Z_12qo$ReAEYgsPy~D0PQLV8F1iR)t=MiT3*(j zTkLTP`Ngd`Vo!Fir@)xa>{4&+4U!s##rPP)R}iKUjv!1ROd{+?7#IJJPpW7whN@fl zN}aTmGme7(E-8miGo80w*EBhjQjyS|RvGYDq^%GD2Dg~v2q z=JAU{t!-=RM+3Ra7fY3OaHx~N&hChb+A(rTtkxbUzZQR}y_oQWxex>;uud@`KF!6& zXkF7&)jr)MMDb~c*mRDbR+d6O+1Li-flackpHm7|s^Zm%mAYLw6H&$SeLYtTqqXx? z%5{J=hp6Z3a`hgNN?AwR^w&Oap!JE!|pbR?i;zw>f%DL_HG^#9z{V@L!HVexQ6g#pWzzyswUpEt= zi}T;uQIO-_4zJNm!pz!L0&h6RDj8Q+$tr=-T90fr*)booH&?qE0H^2~(Bt;0xV1Y_ z67{nIvPb-P$N7WFNvAlQXOEH?BV%N;*BPd6%;>W6oLTlF=I@f;Z4|7lY-Ee1mfFQD zjqP-4Lj0uhGHDhy$u_3tk|?}IbMql`QM}N6ap*8CJjD+Ip5Y^asX(P7=0WDj`Yz>?=|xmL z#!P(Lyo2l)!ItNHyJ5&DImISL;_Al~NJk|{cpP;(%4=-u6Ek2FK(Gy`so-OQ7W8$@4cL%WZT+6lH15+^GBYXJ>2CMf$TRqxZ!h0!@iJ`k5X z_og33vGtf@R~idMFc-u~!lQZmDxC7wz%unIMw`!gp^dPuLggu&6e_G@7b!wF1zi=O z)R$~^hyiup@0jd~NfkD~#n$*D3NeGxOQPyttHVJ^w|vmaC+l3AM}@pL9;#TyPeO zd2pnhc^kd-GJr~NNO8$(}a|GU%b*?ATNlm?%8%ulv^Yhu{Efr zgIG(q=tdQ4Hin z@t?lu!0xMiPn&X+q-+@F&;n-*7Kh%qhRY2h97m8>XcbC91W9HWO30{OeZ_KdS^N=! z{g=xYBzaDV&-RY@4WLy`7E<4|*#axrtdPz!Hx;f_ilizlw*%LFUD*5jN92Jd^>tLr z>-hpmpJ2RS1R)xQ2-8S_LTi-OaZlAcXlPqJ5GCSI`}$*_sU7rQhOX#f{Rd=*tv^s5BpVy6($vKkAAPny-%Tubj>hGSH;eO`6F&3OsgoN55PJ18wL^$iKl2UrSv{H>Yk=X zKBuQEqlx<*XQjwgYJ$Iq`{;QmlYth;pD%qh@F^uf7C#@_J^EAJq=X<70_Qwdlahx# he(3O3$1djCC`3qc@zkmkii+0ZUQ#Dc3^$O0{{ad^tlj_s delta 2660 zcmZ8jYfK#16`p%%cJ{$8i)q)VyE$|HTV&mcrxq^>s^+e^_^K_ z%xsBFe#A_?d3|16*6N5V}5U+f7vapENq`H&R-nify%wykLl z{b9ohrvYvi?uI|5p~I>~!4OPMl7aw6QVYFViaN|x(-Q&qsNnx}%U2BaxOZ>l;~gLJB9Ue5bm zAG_;>3=e3fkbk^SRDkQX?}3KBU+8s(UXZA?--lZ&?FR|T^`b4X=dm_m&tv__r7I~< zsumZi+Ibq3@_yIPehMm7RDtHAV}{rDYL&1KvtJrMpus`q zn|GzAIgwm6Gb7DV%AIN(%toY5D|qgd;)+c)^v>)I&X@^Rg3B+9Gnr)or! z{dO*!wU}cXY!7C(pD)#)D!+{RSIt`v(``1xe^-C1S`^216nPCnN0{YZ4X@NaTMX<9 zaDD~<_P6+V8XB4uqKGa~d~`cNC{eamPk;bL1G2is|IpCh`lL}5A24W8@e!3)fuJH& zIN+noCa-HeLT32I#%p6^aP>)c6mXi20>Yi zJ=5F-d>9iF^SUHOQj`S@;u1|ZC?J$2ccUYFr_aR{HUW~wV5vourlHL)@kh~)vR!xc z&1iku2?9>5AX}~$+MCK1GRpf~ua96`7Q^uyW_(^t&S~bYr0v+^PIenurKZj!wS*wr zHi6VJ{+rg;KHrOdZW*|O3IV1H%Q)N z(3I-RuE&typ?THuuKD<YUZ7)e8S%sd}$uiw86MPyrWr6>^#P`_RhWiXjl(IFF?$@6MFvb_Gk@z6U~$t?8I)<`S05sqIWPkw{!H@5Hc)9NagiA@dWBU{?-Bl=ygWvy&34M7!my^9`q zqQ{{iiBRxZ_zmAppQoHeh*}_Bi-e5vTkxEX^GDC0Cii$u;c?Scf|g0YBH> zs+J7li`^Yf|5qC!EnzyE0hOk~Q}%QIuscIu=AAvW)$>Gpi>?LUBB`=0>TmD0zOPduWlG9;^X~&Um`ls_f543 zrS+o0i@q!~vpR#3^<6xTPcA#h|IydTBL^cD!WuCRgh`Y9z`+v-hVb4!NylWGVP?&Y zVP@h<(}rRex`h>@$=dOP9kUkh=6y}sD;!QeLjO|Q=w{$ErLE$RN?T$2P?Eq1`$hj7jbggW;AAOY!e9(qjKZwFdbq3V z*?6!G;GN;`9?lL5#s{!04Pjy24{<5tR)b03nFR2A!pdkCGfZ}rj|~h$L*)jB$Qiyd zaA+UC{0t`*t3zl&&=5QbSNPUI?Mcxa_i$Z}AR>+4vmXN#Lpwhx;$}MiBW0L(cfFk+A Y{MC`(+6qclWfRo~cMPFmNY&8)0F$Pkz5oCK diff --git a/gestao_raul/Lib/site-packages/pip/_internal/resolution/legacy/resolver.py b/gestao_raul/Lib/site-packages/pip/_internal/resolution/legacy/resolver.py index fb49d41..1dd0d70 100644 --- a/gestao_raul/Lib/site-packages/pip/_internal/resolution/legacy/resolver.py +++ b/gestao_raul/Lib/site-packages/pip/_internal/resolution/legacy/resolver.py @@ -10,9 +10,6 @@ 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 @@ -52,7 +49,7 @@ from pip._internal.utils.packaging import check_requires_python logger = logging.getLogger(__name__) -DiscoveredDependencies = DefaultDict[str, List[InstallRequirement]] +DiscoveredDependencies = DefaultDict[Optional[str], List[InstallRequirement]] def _check_dist_requires_python( @@ -104,9 +101,8 @@ def _check_dist_requires_python( return raise UnsupportedPythonVersion( - "Package {!r} requires a different Python: {} not in {!r}".format( - dist.raw_name, version, requires_python - ) + f"Package {dist.raw_name!r} requires a different Python: " + f"{version} not in {requires_python!r}" ) @@ -231,9 +227,7 @@ class Resolver(BaseResolver): tags = compatibility_tags.get_supported() if requirement_set.check_supported_wheels and not wheel.supported(tags): raise InstallationError( - "{} is not a supported wheel on this platform.".format( - wheel.filename - ) + f"{wheel.filename} is not a supported wheel on this platform." ) # This next bit is really a sanity check. @@ -248,9 +242,9 @@ class Resolver(BaseResolver): return [install_req], None try: - existing_req: Optional[ - InstallRequirement - ] = requirement_set.get_requirement(install_req.name) + existing_req: Optional[InstallRequirement] = ( + requirement_set.get_requirement(install_req.name) + ) except KeyError: existing_req = None @@ -265,9 +259,8 @@ class Resolver(BaseResolver): ) if has_conflicting_requirement: raise InstallationError( - "Double requirement given: {} (already in {}, name={!r})".format( - install_req, existing_req, install_req.name - ) + f"Double requirement given: {install_req} " + f"(already in {existing_req}, name={install_req.name!r})" ) # When no existing requirement exists, add the requirement as a @@ -287,9 +280,9 @@ class Resolver(BaseResolver): ) if does_not_satisfy_constraint: raise InstallationError( - "Could not satisfy constraints for '{}': " + f"Could not satisfy constraints for '{install_req.name}': " "installation from path or url cannot be " - "constrained to a version".format(install_req.name) + "constrained to a version" ) # If we're now installing a constraint, mark the existing # object for real installation. @@ -325,6 +318,7 @@ class Resolver(BaseResolver): """ # Don't uninstall the conflict if doing a user install and the # conflict is not a user install. + assert req.satisfied_by is not None if not self.use_user_site or req.satisfied_by.in_usersite: req.should_reinstall = True req.satisfied_by = None @@ -398,9 +392,9 @@ class Resolver(BaseResolver): # "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) + f"yanked version: {best_candidate}\n" + f"Reason for being yanked: {reason}" + ) logger.warning(msg) return link @@ -423,6 +417,8 @@ class Resolver(BaseResolver): if self.wheel_cache is None or self.preparer.require_hashes: return + + assert req.link is not None, "_find_requirement_link unexpectedly returned None" cache_entry = self.wheel_cache.get_cache_entry( link=req.link, package_name=req.name, @@ -431,12 +427,12 @@ class Resolver(BaseResolver): 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.cached_wheel_source_link = req.link if cache_entry.origin is not None: req.download_info = cache_entry.origin else: # Legacy cache entry that does not have origin.json. - # download_info may miss the archive_info.hash field. + # download_info may miss the archive_info.hashes field. req.download_info = direct_url_from_link( req.link, link_is_in_wheel_cache=cache_entry.persistent ) @@ -536,6 +532,7 @@ class Resolver(BaseResolver): with indent_log(): # We add req_to_install before its dependencies, so that we # can refer to it when adding dependencies. + assert req_to_install.name is not None if not requirement_set.has_requirement(req_to_install.name): # 'unnamed' requirements will get added here # 'unnamed' requirements can only come from being directly diff --git a/gestao_raul/Lib/site-packages/pip/_internal/resolution/resolvelib/__pycache__/__init__.cpython-310.pyc b/gestao_raul/Lib/site-packages/pip/_internal/resolution/resolvelib/__pycache__/__init__.cpython-310.pyc index f0dd8f666bcea1d19b6ea9f88d7b71835d644599..6f9454a5f26108d32939e8c6fea4eda441c75287 100644 GIT binary patch delta 54 zcmX@lc#@GjpO=@50SFfPt)9qjBcJ1J6%$&VT2vfUo|;pVALEjrT$-DjS5h1k6y)UU IJTWI30K1zJ;Q#;t delta 60 zcmX@fc%G3vpO=@50SKypgihqPQ7v+|iU}=FEh>&FPt7UGk8#OQF3nBND=CgiPc1G< O%#SZhEX|pimJ9$unH4+$ diff --git a/gestao_raul/Lib/site-packages/pip/_internal/resolution/resolvelib/__pycache__/base.cpython-310.pyc b/gestao_raul/Lib/site-packages/pip/_internal/resolution/resolvelib/__pycache__/base.cpython-310.pyc index 0e90a5d73e701165d7817646e2210ebd67871b22..233a95ddbb3442c47542259d3ab42b646c6442d0 100644 GIT binary patch delta 2163 zcmZuy-ES0C6rVdgJDu6to&DbK(gH1|z!v1ADUpvtphXaY<)c(|gsf}tU09geY40pr zo0^ieiHVVDy&6r7pNS+5KIvbe55DnWd}53w_-4X`KB!4!jOW}HsNg2^+jGwS-E+@9 zA2VMK-r8pSi9}3+-{+N^7eC1^+TC;aK%)vJuHq4g5R_F{^&(Eh(;Ur!NZo;!2+etu<-bQYy%Nnueo zmo6!FwWK&X8e=hPu?UNm6dGswx=s_+UeKHZBQ!}<*U1rurfFtDp_zGgo;aPLXK4=f z+`Q@(X`b1%Kuy?Ng1w!z2zyrnr$kNQn84|xtHzXa*DsiXG6_vuYZ%kZwn`9G>dV}#X)&kwG_}r_xjTuHOHIJ2v_<&5$Y2aZLo?rvOED5w(Wek$|snQ~| zWS)FRUQ=h445yMJ@9#p(Q9F0*kZ(3+$#elp;d*VPF$+Gjph~T72-p)uh%TQ!J2?06Yk2qIci+rd2aGbG+LOJq>oFb86lvdYuwyi43Rx1I@; z)oQKT^jozSYz?Yap1{Qj0=`T_OOBAoT9rLfDM39bqp*r|8XP`>|{V zcmjl&VyFg*6IF#Lk|Va3i4KabN5pg@QT9? zP9cLILwM+13?$R~vuHaZ4kr7pVHEcv>=#qX?9Rg=hLNDf`O|2WNx(D14vX)TB?~24Z@xqPp4`>@4Cv4WR^VUd6HGP*x1{Yp3vQMl z1d9VtpabZTQH}6H$YM^sk@`-z!N_s6x=oJvDyuWUii%Ybi|OC=f3F8#Vi$7c6DnIl%2V*}2>(|7ep|j-_K8L*|?&LH20#Z+i zKk|DXcZZy@LQ#Lc&6z43XmeI}10IR>d!x;{Q|R+obORbsA{YpmR(=XWwuOljrl;K? zvY*bOif?2&S{yIKH3ZoX&!Z%V3v0ZxZ?Lj2iuXDPy1GLP`m6m}V*yuTA=F#1PBxks z#jVZ@Vq39?m}0!RR>$GxmY6B_k+}G{*i)8seHyJYNc?cL->&j-*~Qpj+!ptW8`j}l bCax4o9A-97QWA6Os)*5%B6fdaO-BC*;r`OG delta 2542 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 literal 18591 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 diff --git a/gestao_raul/Lib/site-packages/pip/_internal/resolution/resolvelib/__pycache__/factory.cpython-310.pyc b/gestao_raul/Lib/site-packages/pip/_internal/resolution/resolvelib/__pycache__/factory.cpython-310.pyc index 464ddd890d59c5f237f53e98858345acd4380c74..fcbb933f222a46b9ee3e7fc5552b4378277a1972 100644 GIT binary patch literal 21670 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 delta 8459 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 F_J3e3#d`n% diff --git a/gestao_raul/Lib/site-packages/pip/_internal/resolution/resolvelib/__pycache__/found_candidates.cpython-310.pyc b/gestao_raul/Lib/site-packages/pip/_internal/resolution/resolvelib/__pycache__/found_candidates.cpython-310.pyc index a5a25b7dce72c1e041ca32c49e51399afadb5e95..9fa712a1ac05446660a3714981abfee6cbc9288b 100644 GIT binary patch delta 1530 zcmZux&2QX96rUN-dL3uKviaIg^Wl^xbOTx1KvXGBQ`D5A(59ePrNRU(voqPc^4iJR zNt$TWq)HDQxKu_Q;F45u2t9DfKfsj>mtK(1hzkc!z4Snt=Pe;ru{FPWGr!-PdGkEa zJEMP`&iUD_j^y+B`jh%!rAN8`ii#0p$V3b?;$jmgJu!*w6<29clVaeg`{={+RwH9( zl3~itHgaYzu~j$UD3}FlrT>sBTjZZdDk8`yLpD^xK>A8=fyHwB&}xla8+F6 z6z0rck8o=CvNqnvd&-FEvIi|??JV<Bj?K&*Fpj5Y1nWJ{uYO)1iNqB%l zw1YNr6J181U05KSWK(I9CSFA%zpQSgnu=uUZR8D86yo(sj5bpkZFGlZS7BHxQ+Mgz zR5P_F)7iwkYLo0?jBcY(5F?wZ`>AEM)vw_-)TAdFSwZ6bvf88{qoWQWlhG?1Poj(3 zl}M+2Yh!7y?)k#;>c%P;f#Z9|NMQJjfPv%HxZ#Ax9Xl|b*7=Oa%kxg@BZ2;r%k6+0 zE3z#)OVbnYRL>gDqOtC;7#`=$2>pZ$?>ND~%U7>g(y%G zocp7BeGprbt5@*w!8iH@!GqB+nV-gA16{KFDX>Ofag)PXvnp)Xo#ItQZugpk2Y%Cf$Ve$Rh! zwhF{s0A~Oa-I45qN7}Mn?pfCNAb2~n3IjM3Z5FPMC)-0b^2&JY$NI`tec}7AW&IdE zD>TQlAf_-Qw8YQxLIKxBP=E=5DS-3QcO89$GhqG~&0$`|Nl9!)Pdh4QuqyrH5-6`o zh|_Sj<&};y#l?3^vOucxW61-1wp-=*YJ4e_R$M+Kf6pj@V^E~&n!MttaE8FElMKFG={Y*;GX4P<8&{tI delta 1213 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 NEX^X0{L9i){{>NPRKfrN delta 2418 zcmZuzU5pb|6rOu$I-Sl=|989Fc7I?Ol_EciAb;y>_*W1yfJog~O7HFNNT;oLX2r!e zYXU?})MRs`iP0E%GR7yfFT|MmtaNg}d*;kJ=bpbg z(;ucjos75Qaa)7mTYsIH`Fb%vLT_k`>xXsEC@;Q{UmzOOnBM5~oU#M7!6J>gmnbK^ zWI5@j$|=P&8)+|7&L}$C$a?+dexh+*90y$sbO*`<%1*42^9IX<@NAH$c%n}8T6u^& zNb`JMhr2?Pa;IG2F=k&NaId5vzbvgLU5zrJjN1 zkIQuAr=zUM9X8D4EXu9A$wt^HI6Sb-$#5sH)eSbrRslE12O&fgg2=E8gxu3u&BiYp zkd7f{K~NJ*yUl(|hU7`>y-^H8{0C!j8(Nc%s&|G}r|Oc#u5BJikqLw~2oE7VjIdIz zQgNGZP^p}f*JJMEkAO&th$3!OJb?V#o*WzJPXOusi3Ym$laxbTr$IpVXS;h87s}Cy0hu5P8k)#^2HEgjt|&-E({* zh_aY6ndq5h_Mp~Hp3<87IgQ!fWG4xRtqz&gVArq2Is~m7*R3lkV7neXugHlAUr3cUZaj$7NxEBg9Ja2UuO80&7jh2 z9B>9{3??+&RROK?1?e@D@(=q}o$#UDo87k-eNtxcdPLZRPWf1Vl^r-3+CC5F+Ci(; z@JmjppLg4#UTw~Y#u;FVO?akth|lj6q9w#yG+jcT?zv5YE{6IH4@6Rq^cO}{f2-lJ z4F$I&>_FHBAbJ1WYi-6G)%i*=>-u5xOtp445CD~0bq>ad3g#fnk4Z9+J#-dGA5)tt zIK(6lHE&yH21W*@34$D(n7}I-^oC*CBt?oL0@6LYt z{lK0SGvALu??jLE=GoBFs@!3^br6L1L;W|xt_G9J0i+V+3T^bW(h`gdp*-ysKwcdx zkniL-LodZ~j+G)klc(iaeqy1D94plQK#1r6wYnauI6xTTUOSiW(3nhF^$B$ zd4A}q+de8f+8}HQ)`=F2KpqX)!i(_(KVf}$#yN5~FulUu#_3JKYl{52@E>-#l zdUOmyxz)=J-g*GP!tyDAP2^%>aox%`6;mj=LU9l9ewT-fPm>Muy<&c+ItEV&+Jh5wLoyqM`0Winib_&S#N8!0(rM5&>tph#(jU*oLBlfDNv4BicZP z4ty&Ex90I+w#5VS4ZGR-~a#s diff --git a/gestao_raul/Lib/site-packages/pip/_internal/resolution/resolvelib/__pycache__/reporter.cpython-310.pyc b/gestao_raul/Lib/site-packages/pip/_internal/resolution/resolvelib/__pycache__/reporter.cpython-310.pyc index 07d01963ac21162040dfb38909a7f9bc3714cb63..282c0f5e0c66a9030464b136480b40d9b8759652 100644 GIT binary patch delta 1522 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 diff --git a/gestao_raul/Lib/site-packages/pip/_internal/resolution/resolvelib/__pycache__/resolver.cpython-310.pyc b/gestao_raul/Lib/site-packages/pip/_internal/resolution/resolvelib/__pycache__/resolver.cpython-310.pyc index 7cd8bd8fa3d04f1c0c403f10e156ff0c528c5fdd..1907f670da2cd5c377d717d35e16f4e4af0efe59 100644 GIT binary patch delta 2595 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 Yi?T5l$q^OlkyJDrmHLqxo}C&05B}5qKmY&$ diff --git a/gestao_raul/Lib/site-packages/pip/_internal/resolution/resolvelib/base.py b/gestao_raul/Lib/site-packages/pip/_internal/resolution/resolvelib/base.py index b206692..0f31dc9 100644 --- a/gestao_raul/Lib/site-packages/pip/_internal/resolution/resolvelib/base.py +++ b/gestao_raul/Lib/site-packages/pip/_internal/resolution/resolvelib/base.py @@ -1,31 +1,29 @@ -from typing import FrozenSet, Iterable, Optional, Tuple, Union +from dataclasses import dataclass +from typing import FrozenSet, Iterable, Optional, Tuple from pip._vendor.packaging.specifiers import SpecifierSet -from pip._vendor.packaging.utils import NormalizedName, canonicalize_name -from pip._vendor.packaging.version import LegacyVersion, Version +from pip._vendor.packaging.utils import NormalizedName +from pip._vendor.packaging.version import Version from pip._internal.models.link import Link, links_equivalent from pip._internal.req.req_install import InstallRequirement from pip._internal.utils.hashes import Hashes CandidateLookup = Tuple[Optional["Candidate"], Optional[InstallRequirement]] -CandidateVersion = Union[LegacyVersion, Version] -def format_name(project: str, extras: FrozenSet[str]) -> str: +def format_name(project: NormalizedName, extras: FrozenSet[NormalizedName]) -> str: if not extras: return project - canonical_extras = sorted(canonicalize_name(e) for e in extras) - return "{}[{}]".format(project, ",".join(canonical_extras)) + extras_expr = ",".join(sorted(extras)) + return f"{project}[{extras_expr}]" +@dataclass(frozen=True) class Constraint: - def __init__( - self, specifier: SpecifierSet, hashes: Hashes, links: FrozenSet[Link] - ) -> None: - self.specifier = specifier - self.hashes = hashes - self.links = links + specifier: SpecifierSet + hashes: Hashes + links: FrozenSet[Link] @classmethod def empty(cls) -> "Constraint": @@ -116,7 +114,7 @@ class Candidate: raise NotImplementedError("Override in subclass") @property - def version(self) -> CandidateVersion: + def version(self) -> Version: raise NotImplementedError("Override in subclass") @property diff --git a/gestao_raul/Lib/site-packages/pip/_internal/resolution/resolvelib/candidates.py b/gestao_raul/Lib/site-packages/pip/_internal/resolution/resolvelib/candidates.py index f5bc343..6617644 100644 --- a/gestao_raul/Lib/site-packages/pip/_internal/resolution/resolvelib/candidates.py +++ b/gestao_raul/Lib/site-packages/pip/_internal/resolution/resolvelib/candidates.py @@ -2,13 +2,16 @@ import logging import sys from typing import TYPE_CHECKING, Any, FrozenSet, Iterable, Optional, Tuple, Union, cast +from pip._vendor.packaging.requirements import InvalidRequirement from pip._vendor.packaging.utils import NormalizedName, canonicalize_name from pip._vendor.packaging.version import Version from pip._internal.exceptions import ( HashError, InstallationSubprocessError, + InvalidInstalledPackage, MetadataInconsistent, + MetadataInvalid, ) from pip._internal.metadata import BaseDistribution from pip._internal.models.link import Link, links_equivalent @@ -21,7 +24,7 @@ from pip._internal.req.req_install import InstallRequirement from pip._internal.utils.direct_url_helpers import direct_url_from_link from pip._internal.utils.misc import normalize_version_info -from .base import Candidate, CandidateVersion, Requirement, format_name +from .base import Candidate, Requirement, format_name if TYPE_CHECKING: from .factory import Factory @@ -65,15 +68,13 @@ def make_install_req_from_link( 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, - ), + global_options=template.global_options, + hash_options=template.hash_options, config_settings=template.config_settings, ) ireq.original_link = template.original_link ireq.link = link + ireq.extras = template.extras return ireq @@ -81,7 +82,7 @@ def make_install_req_from_editable( link: Link, template: InstallRequirement ) -> InstallRequirement: assert template.editable, "template not editable" - return install_req_from_editable( + ireq = install_req_from_editable( link.url, user_supplied=template.user_supplied, comes_from=template.comes_from, @@ -89,13 +90,12 @@ def make_install_req_from_editable( 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, - ), + global_options=template.global_options, + hash_options=template.hash_options, config_settings=template.config_settings, ) + ireq.extras = template.extras + return ireq def _make_install_req_from_dist( @@ -114,11 +114,8 @@ def _make_install_req_from_dist( 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, - ), + global_options=template.global_options, + hash_options=template.hash_options, config_settings=template.config_settings, ) ireq.satisfied_by = dist @@ -151,7 +148,7 @@ class _InstallRequirementBackedCandidate(Candidate): ireq: InstallRequirement, factory: "Factory", name: Optional[NormalizedName] = None, - version: Optional[CandidateVersion] = None, + version: Optional[Version] = None, ) -> None: self._link = link self._source_link = source_link @@ -160,18 +157,20 @@ class _InstallRequirementBackedCandidate(Candidate): self._name = name self._version = version self.dist = self._prepare() + self._hash: Optional[int] = None 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), - ) + return f"{self.__class__.__name__}({str(self._link)!r})" def __hash__(self) -> int: - return hash((self.__class__, self._link)) + if self._hash is not None: + return self._hash + + self._hash = hash((self.__class__, self._link)) + return self._hash def __eq__(self, other: Any) -> bool: if isinstance(other, self.__class__): @@ -194,16 +193,15 @@ class _InstallRequirementBackedCandidate(Candidate): return self.project_name @property - def version(self) -> CandidateVersion: + def version(self) -> Version: 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, + return ( + f"{self.name} {self.version} " + f"(from {self._link.file_path if self._link.is_file else self._link})" ) def _prepare_distribution(self) -> BaseDistribution: @@ -225,6 +223,13 @@ class _InstallRequirementBackedCandidate(Candidate): str(self._version), str(dist.version), ) + # check dependencies are valid + # TODO performance: this means we iterate the dependencies at least twice, + # we may want to cache parsed Requires-Dist + try: + list(dist.iter_dependencies(list(dist.iter_provided_extras()))) + except InvalidRequirement as e: + raise MetadataInvalid(self._ireq, str(e)) def _prepare(self) -> BaseDistribution: try: @@ -246,7 +251,7 @@ class _InstallRequirementBackedCandidate(Candidate): 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 from self._factory.make_requirements_from_spec(str(r), self._ireq) yield self._factory.make_requires_python_requirement(self.dist.requires_python) def get_install_requirement(self) -> Optional[InstallRequirement]: @@ -262,10 +267,10 @@ class LinkCandidate(_InstallRequirementBackedCandidate): template: InstallRequirement, factory: "Factory", name: Optional[NormalizedName] = None, - version: Optional[CandidateVersion] = None, + version: Optional[Version] = None, ) -> None: source_link = link - cache_entry = factory.get_wheel_cache_entry(link, name) + cache_entry = factory.get_wheel_cache_entry(source_link, name) if cache_entry is not None: logger.debug("Using cached wheel link: %s", cache_entry.link) link = cache_entry.link @@ -278,18 +283,20 @@ class LinkCandidate(_InstallRequirementBackedCandidate): # 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 - ) + assert ( + version == wheel_version + ), f"{version!r} != {wheel_version!r} for wheel {name}" if cache_entry is not None: + assert ireq.link.is_wheel + assert ireq.link.is_file if cache_entry.persistent and template.link is template.original_link: - ireq.original_link_is_in_wheel_cache = True + ireq.cached_wheel_source_link = source_link if cache_entry.origin is not None: ireq.download_info = cache_entry.origin else: # Legacy cache entry that does not have origin.json. - # download_info may miss the archive_info.hash field. + # download_info may miss the archive_info.hashes field. ireq.download_info = direct_url_from_link( source_link, link_is_in_wheel_cache=cache_entry.persistent ) @@ -317,7 +324,7 @@ class EditableCandidate(_InstallRequirementBackedCandidate): template: InstallRequirement, factory: "Factory", name: Optional[NormalizedName] = None, - version: Optional[CandidateVersion] = None, + version: Optional[Version] = None, ) -> None: super().__init__( link=link, @@ -345,6 +352,7 @@ class AlreadyInstalledCandidate(Candidate): self.dist = dist self._ireq = _make_install_req_from_dist(dist, template) self._factory = factory + self._version = None # 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 @@ -357,18 +365,15 @@ class AlreadyInstalledCandidate(Candidate): return str(self.dist) def __repr__(self) -> str: - return "{class_name}({distribution!r})".format( - class_name=self.__class__.__name__, - distribution=self.dist, - ) + return f"{self.__class__.__name__}({self.dist!r})" + + def __eq__(self, other: object) -> bool: + if not isinstance(other, AlreadyInstalledCandidate): + return NotImplemented + return self.name == other.name and self.version == other.version 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 + return hash((self.name, self.version)) @property def project_name(self) -> NormalizedName: @@ -379,8 +384,10 @@ class AlreadyInstalledCandidate(Candidate): return self.project_name @property - def version(self) -> CandidateVersion: - return self.dist.version + def version(self) -> Version: + if self._version is None: + self._version = self.dist.version + return self._version @property def is_editable(self) -> bool: @@ -392,8 +399,12 @@ class AlreadyInstalledCandidate(Candidate): 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) + + try: + for r in self.dist.iter_dependencies(): + yield from self._factory.make_requirements_from_spec(str(r), self._ireq) + except InvalidRequirement as exc: + raise InvalidInstalledPackage(dist=self.dist, invalid_exc=exc) from None def get_install_requirement(self) -> Optional[InstallRequirement]: return None @@ -428,20 +439,27 @@ class ExtrasCandidate(Candidate): self, base: BaseCandidate, extras: FrozenSet[str], + *, + comes_from: Optional[InstallRequirement] = None, ) -> None: + """ + :param comes_from: the InstallRequirement that led to this candidate if it + differs from the base's InstallRequirement. This will often be the + case in the sense that this candidate's requirement has the extras + while the base's does not. Unlike the InstallRequirement backed + candidates, this requirement is used solely for reporting purposes, + it does not do any leg work. + """ self.base = base - self.extras = extras + self.extras = frozenset(canonicalize_name(e) for e in extras) + self._comes_from = comes_from if comes_from is not None else self.base._ireq 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, - ) + return f"{self.__class__.__name__}(base={self.base!r}, extras={self.extras!r})" def __hash__(self) -> int: return hash((self.base, self.extras)) @@ -461,7 +479,7 @@ class ExtrasCandidate(Candidate): return format_name(self.base.project_name, self.extras) @property - def version(self) -> CandidateVersion: + def version(self) -> Version: return self.base.version def format_for_error(self) -> str: @@ -503,11 +521,11 @@ class ExtrasCandidate(Candidate): ) for r in self.base.dist.iter_dependencies(valid_extras): - requirement = factory.make_requirement_from_spec( - str(r), self.base._ireq, valid_extras + yield from factory.make_requirements_from_spec( + str(r), + self._comes_from, + valid_extras, ) - if requirement: - yield requirement def get_install_requirement(self) -> Optional[InstallRequirement]: # We don't return anything here, because we always @@ -543,7 +561,7 @@ class RequiresPythonCandidate(Candidate): return REQUIRES_PYTHON_IDENTIFIER @property - def version(self) -> CandidateVersion: + def version(self) -> Version: return self._version def format_for_error(self) -> str: diff --git a/gestao_raul/Lib/site-packages/pip/_internal/resolution/resolvelib/factory.py b/gestao_raul/Lib/site-packages/pip/_internal/resolution/resolvelib/factory.py index a4c24b5..6c273eb 100644 --- a/gestao_raul/Lib/site-packages/pip/_internal/resolution/resolvelib/factory.py +++ b/gestao_raul/Lib/site-packages/pip/_internal/resolution/resolvelib/factory.py @@ -3,6 +3,7 @@ import functools import logging from typing import ( TYPE_CHECKING, + Callable, Dict, FrozenSet, Iterable, @@ -11,6 +12,7 @@ from typing import ( Mapping, NamedTuple, Optional, + Protocol, Sequence, Set, Tuple, @@ -21,13 +23,16 @@ from typing import ( 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.packaging.version import InvalidVersion, Version from pip._vendor.resolvelib import ResolutionImpossible from pip._internal.cache import CacheEntry, WheelCache from pip._internal.exceptions import ( DistributionNotFound, InstallationError, + InvalidInstalledPackage, MetadataInconsistent, + MetadataInvalid, UnsupportedPythonVersion, UnsupportedWheel, ) @@ -36,7 +41,10 @@ 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.constructors import ( + install_req_drop_extras, + install_req_from_link_and_ireq, +) from pip._internal.req.req_install import ( InstallRequirement, check_invalid_constraint_type, @@ -47,7 +55,7 @@ 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 .base import Candidate, Constraint, Requirement from .candidates import ( AlreadyInstalledCandidate, BaseCandidate, @@ -62,11 +70,11 @@ from .requirements import ( ExplicitRequirement, RequiresPythonRequirement, SpecifierRequirement, + SpecifierWithoutExtrasRequirement, UnsatisfiableRequirement, ) if TYPE_CHECKING: - from typing import Protocol class ConflictCause(Protocol): requirement: RequiresPythonRequirement @@ -112,8 +120,9 @@ class Factory: self._editable_candidate_cache: Cache[EditableCandidate] = {} self._installed_candidate_cache: Dict[str, AlreadyInstalledCandidate] = {} self._extras_candidate_cache: Dict[ - Tuple[int, FrozenSet[str]], ExtrasCandidate + Tuple[int, FrozenSet[NormalizedName]], ExtrasCandidate ] = {} + self._supported_tags_cache = get_supported() if not ignore_installed: env = get_default_environment() @@ -132,19 +141,23 @@ class Factory: if not link.is_wheel: return wheel = Wheel(link.filename) - if wheel.supported(self._finder.target_python.get_tags()): + if wheel.supported(self._finder.target_python.get_unsorted_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] + self, + base: BaseCandidate, + extras: FrozenSet[str], + *, + comes_from: Optional[InstallRequirement] = None, ) -> ExtrasCandidate: - cache_key = (id(base), extras) + cache_key = (id(base), frozenset(canonicalize_name(e) for e in extras)) try: candidate = self._extras_candidate_cache[cache_key] except KeyError: - candidate = ExtrasCandidate(base, extras) + candidate = ExtrasCandidate(base, extras, comes_from=comes_from) self._extras_candidate_cache[cache_key] = candidate return candidate @@ -161,7 +174,7 @@ class Factory: self._installed_candidate_cache[dist.canonical_name] = base if not extras: return base - return self._make_extras_candidate(base, extras) + return self._make_extras_candidate(base, extras, comes_from=template) def _make_candidate_from_link( self, @@ -169,8 +182,22 @@ class Factory: extras: FrozenSet[str], template: InstallRequirement, name: Optional[NormalizedName], - version: Optional[CandidateVersion], + version: Optional[Version], ) -> Optional[Candidate]: + base: Optional[BaseCandidate] = self._make_base_candidate_from_link( + link, template, name, version + ) + if not extras or base is None: + return base + return self._make_extras_candidate(base, extras, comes_from=template) + + def _make_base_candidate_from_link( + self, + link: Link, + template: InstallRequirement, + name: Optional[NormalizedName], + version: Optional[Version], + ) -> Optional[BaseCandidate]: # TODO: Check already installed candidate, and use it if the link and # editable flag match. @@ -189,7 +216,7 @@ class Factory: name=name, version=version, ) - except MetadataInconsistent as e: + except (MetadataInconsistent, MetadataInvalid) as e: logger.info( "Discarding [blue underline]%s[/]: [yellow]%s[reset]", link, @@ -199,7 +226,7 @@ class Factory: self._build_failures[link] = e return None - base: BaseCandidate = self._editable_candidate_cache[link] + return self._editable_candidate_cache[link] else: if link not in self._link_candidate_cache: try: @@ -219,11 +246,7 @@ class Factory: ) 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) + return self._link_candidate_cache[link] def _iter_found_candidates( self, @@ -261,10 +284,15 @@ class Factory: 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 + + try: + # 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 + except InvalidVersion as e: + raise InvalidInstalledPackage(dist=installed_dist, invalid_exc=e) + candidate = self._make_candidate_from_dist( dist=installed_dist, extras=extras, @@ -281,7 +309,7 @@ class Factory: specifier=specifier, hashes=hashes, ) - icans = list(result.iter_applicable()) + icans = result.applicable_candidates # PEP 592: Yanked releases are ignored unless the specifier # explicitly pins a version (via '==' or '===') that can be @@ -357,9 +385,8 @@ class Factory: """ for link in constraint.links: self._fail_if_link_is_unsupported_wheel(link) - candidate = self._make_candidate_from_link( + candidate = self._make_base_candidate_from_link( link, - extras=frozenset(), template=install_req_from_link_and_ireq(link, template), name=canonicalize_name(identifier), version=None, @@ -374,6 +401,7 @@ class Factory: incompatibilities: Mapping[str, Iterator[Candidate]], constraint: Constraint, prefers_installed: bool, + is_satisfied_by: Callable[[Requirement, Candidate], bool], ) -> Iterable[Candidate]: # Collect basic lookup information from the requirements. explicit_candidates: Set[Candidate] = set() @@ -385,16 +413,21 @@ class Factory: if ireq is not None: ireqs.append(ireq) - # If the current identifier contains extras, add explicit candidates - # from entries from extra-less identifier. + # If the current identifier contains extras, add requires and 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), - ), - ) + if parsed_requirement.name != identifier: + explicit_candidates.update( + self._iter_explicit_candidates_from_base( + requirements.get(parsed_requirement.name, ()), + frozenset(parsed_requirement.extras), + ), + ) + for req in requirements.get(parsed_requirement.name, []): + _, ireq = req.get_candidate_lookup() + if ireq is not None: + ireqs.append(ireq) # Add explicit candidates from constraints. We only do this if there are # known ireqs, which represent requirements not already explicit. If @@ -434,40 +467,61 @@ class Factory: 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]) + and all(is_satisfied_by(req, c) for req in requirements[identifier]) ) - def _make_requirement_from_install_req( + def _make_requirements_from_install_req( self, ireq: InstallRequirement, requested_extras: Iterable[str] - ) -> Optional[Requirement]: + ) -> Iterator[Requirement]: + """ + Returns requirement objects associated with the given InstallRequirement. In + most cases this will be a single object but the following special cases exist: + - the InstallRequirement has markers that do not apply -> result is empty + - the InstallRequirement has both a constraint (or link) and extras + -> result is split in two requirement objects: one with the constraint + (or link) and one with the extra. This allows centralized constraint + handling for the base, resulting in fewer candidate rejections. + """ 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) + elif not ireq.link: + if ireq.extras and ireq.req is not None and ireq.req.specifier: + yield SpecifierWithoutExtrasRequirement(ireq) + yield SpecifierRequirement(ireq) + else: + self._fail_if_link_is_unsupported_wheel(ireq.link) + # Always make the link candidate for the base requirement to make it + # available to `find_candidates` for explicit candidate lookup for any + # set of extras. + # The extras are required separately via a second requirement. + cand = self._make_base_candidate_from_link( + ireq.link, + template=install_req_drop_extras(ireq) if ireq.extras else 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] + yield UnsatisfiableRequirement(canonicalize_name(ireq.name)) + else: + # require the base from the link + yield self.make_requirement_from_candidate(cand) + if ireq.extras: + # require the extras on top of the base candidate + yield self.make_requirement_from_candidate( + self._make_extras_candidate(cand, frozenset(ireq.extras)) + ) def collect_root_requirements( self, root_ireqs: List[InstallRequirement] @@ -488,15 +542,27 @@ class Factory: else: collected.constraints[name] = Constraint.from_ireq(ireq) else: - req = self._make_requirement_from_install_req( - ireq, - requested_extras=(), + reqs = list( + self._make_requirements_from_install_req( + ireq, + requested_extras=(), + ) ) - if req is None: + if not reqs: continue - if ireq.user_supplied and req.name not in collected.user_requested: - collected.user_requested[req.name] = i - collected.requirements.append(req) + template = reqs[0] + if ireq.user_supplied and template.name not in collected.user_requested: + collected.user_requested[template.name] = i + collected.requirements.extend(reqs) + # Put requirements with extras at the end of the root requires. This does not + # affect resolvelib's picking preference but it does affect its initial criteria + # population: by putting extras at the end we enable the candidate finder to + # present resolvelib with a smaller set of candidates to resolvelib, already + # taking into account any non-transient constraints on the associated base. This + # means resolvelib will have fewer candidates to visit and reject. + # Python's list sort is stable, meaning relative order is kept for objects with + # the same key. + collected.requirements.sort(key=lambda r: r.name != r.project_name) return collected def make_requirement_from_candidate( @@ -504,14 +570,23 @@ class Factory: ) -> ExplicitRequirement: return ExplicitRequirement(candidate) - def make_requirement_from_spec( + def make_requirements_from_spec( self, specifier: str, comes_from: Optional[InstallRequirement], requested_extras: Iterable[str] = (), - ) -> Optional[Requirement]: + ) -> Iterator[Requirement]: + """ + Returns requirement objects associated with the given specifier. In most cases + this will be a single object but the following special cases exist: + - the specifier has markers that do not apply -> result is empty + - the specifier has both a constraint and extras -> result is split + in two requirement objects: one with the constraint and one with the + extra. This allows centralized constraint handling for the base, + resulting in fewer candidate rejections. + """ ireq = self._make_install_req_from_spec(specifier, comes_from) - return self._make_requirement_from_install_req(ireq, requested_extras) + return self._make_requirements_from_install_req(ireq, requested_extras) def make_requires_python_requirement( self, @@ -535,12 +610,12 @@ class Factory: 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: + if self._wheel_cache is None: return None return self._wheel_cache.get_cache_entry( link=link, package_name=name, - supported_tags=get_supported(), + supported_tags=self._supported_tags_cache, ) def get_dist_to_uninstall(self, candidate: Candidate) -> Optional[BaseDistribution]: @@ -603,8 +678,26 @@ class Factory: cands = self._finder.find_all_candidates(req.project_name) skipped_by_requires_python = self._finder.requires_python_skipped_reasons() - versions = [str(v) for v in sorted({c.version for c in cands})] + versions_set: Set[Version] = set() + yanked_versions_set: Set[Version] = set() + for c in cands: + is_yanked = c.link.is_yanked if c.link else False + if is_yanked: + yanked_versions_set.add(c.version) + else: + versions_set.add(c.version) + + versions = [str(v) for v in sorted(versions_set)] + yanked_versions = [str(v) for v in sorted(yanked_versions_set)] + + if yanked_versions: + # Saying "version X is yanked" isn't entirely accurate. + # https://github.com/pypa/pip/issues/11745#issuecomment-1402805842 + logger.critical( + "Ignored the following yanked versions: %s", + ", ".join(yanked_versions) or "none", + ) if skipped_by_requires_python: logger.critical( "Ignored the following versions that require a different python " @@ -632,7 +725,6 @@ class Factory: 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", @@ -693,8 +785,8 @@ class Factory: info = "the requested packages" msg = ( - "Cannot install {} because these package versions " - "have conflicting dependencies.".format(info) + f"Cannot install {info} because these package versions " + "have conflicting dependencies." ) logger.critical(msg) msg = "\nThe conflict is caused by:" @@ -718,7 +810,7 @@ class Factory: + "\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 " + + "2. remove package versions to allow pip to attempt to solve " + "the dependency conflict\n" ) diff --git a/gestao_raul/Lib/site-packages/pip/_internal/resolution/resolvelib/found_candidates.py b/gestao_raul/Lib/site-packages/pip/_internal/resolution/resolvelib/found_candidates.py index 8663097..a1d57e0 100644 --- a/gestao_raul/Lib/site-packages/pip/_internal/resolution/resolvelib/found_candidates.py +++ b/gestao_raul/Lib/site-packages/pip/_internal/resolution/resolvelib/found_candidates.py @@ -9,13 +9,18 @@ something. """ import functools +import logging from collections.abc import Sequence from typing import TYPE_CHECKING, Any, Callable, Iterator, Optional, Set, Tuple from pip._vendor.packaging.version import _BaseVersion +from pip._internal.exceptions import MetadataInvalid + from .base import Candidate +logger = logging.getLogger(__name__) + IndexCandidateInfo = Tuple[_BaseVersion, Callable[[], Optional[Candidate]]] if TYPE_CHECKING: @@ -44,11 +49,25 @@ def _iter_built(infos: Iterator[IndexCandidateInfo]) -> Iterator[Candidate]: for version, func in infos: if version in versions_found: continue - candidate = func() - if candidate is None: - continue - yield candidate - versions_found.add(version) + try: + candidate = func() + except MetadataInvalid as e: + logger.warning( + "Ignoring version %s of %s since it has invalid metadata:\n" + "%s\n" + "Please use pip<24.1 if you need to use this version.", + version, + e.ireq.name, + e, + ) + # Mark version as found to avoid trying other candidates with the same + # version, since they most likely have invalid metadata as well. + versions_found.add(version) + else: + if candidate is None: + continue + yield candidate + versions_found.add(version) def _iter_built_with_prepended( diff --git a/gestao_raul/Lib/site-packages/pip/_internal/resolution/resolvelib/provider.py b/gestao_raul/Lib/site-packages/pip/_internal/resolution/resolvelib/provider.py index 6300dfc..fb0dd85 100644 --- a/gestao_raul/Lib/site-packages/pip/_internal/resolution/resolvelib/provider.py +++ b/gestao_raul/Lib/site-packages/pip/_internal/resolution/resolvelib/provider.py @@ -1,5 +1,6 @@ import collections import math +from functools import lru_cache from typing import ( TYPE_CHECKING, Dict, @@ -104,7 +105,7 @@ class PipProvider(_ProviderBase): def identify(self, requirement_or_candidate: Union[Requirement, Candidate]) -> str: return requirement_or_candidate.name - def get_preference( # type: ignore + def get_preference( self, identifier: str, resolutions: Mapping[str, Candidate], @@ -124,14 +125,29 @@ class PipProvider(_ProviderBase): * 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. + closer to the user-specified requirements first. If the depth cannot + by determined (eg: due to no matching parents), it is considered + infinite. * 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) + try: + next(iter(information[identifier])) + except StopIteration: + # There is no information for this identifier, so there's no known + # candidates. + has_information = False + else: + has_information = True + + if has_information: + lookups = (r.get_candidate_lookup() for r, _ in information[identifier]) + candidate, ireqs = zip(*lookups) + else: + candidate, ireqs = None, () + operators = [ specifier.operator for specifier_set in (ireq.specifier for ireq in ireqs if ireq) @@ -146,11 +162,14 @@ class PipProvider(_ProviderBase): 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 + if has_information: + 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 = math.inf else: inferred_depth = 1.0 self._known_depths[identifier] = inferred_depth @@ -161,16 +180,6 @@ class PipProvider(_ProviderBase): # 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-airflow[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 @@ -178,7 +187,6 @@ class PipProvider(_ProviderBase): return ( not requires_python, - delay_this, not direct, not pinned, not backtrack_cause, @@ -227,8 +235,10 @@ class PipProvider(_ProviderBase): constraint=constraint, prefers_installed=(not _eligible_for_upgrade(identifier)), incompatibilities=incompatibilities, + is_satisfied_by=self.is_satisfied_by, ) + @lru_cache(maxsize=None) def is_satisfied_by(self, requirement: Requirement, candidate: Candidate) -> bool: return requirement.is_satisfied_by(candidate) diff --git a/gestao_raul/Lib/site-packages/pip/_internal/resolution/resolvelib/reporter.py b/gestao_raul/Lib/site-packages/pip/_internal/resolution/resolvelib/reporter.py index 6ced532..0594569 100644 --- a/gestao_raul/Lib/site-packages/pip/_internal/resolution/resolvelib/reporter.py +++ b/gestao_raul/Lib/site-packages/pip/_internal/resolution/resolvelib/reporter.py @@ -11,16 +11,16 @@ logger = getLogger(__name__) class PipReporter(BaseReporter): def __init__(self) -> None: - self.backtracks_by_package: DefaultDict[str, int] = defaultdict(int) + self.reject_count_by_package: DefaultDict[str, int] = defaultdict(int) - self._messages_at_backtrack = { + self._messages_at_reject_count = { 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 " + "pip is still looking at multiple versions of {package_name} to " "determine which version is compatible with other " "requirements. This could take a while." ), @@ -32,16 +32,28 @@ class PipReporter(BaseReporter): ), } - def backtracking(self, candidate: Candidate) -> None: - self.backtracks_by_package[candidate.name] += 1 + def rejecting_candidate(self, criterion: Any, candidate: Candidate) -> None: + self.reject_count_by_package[candidate.name] += 1 - count = self.backtracks_by_package[candidate.name] - if count not in self._messages_at_backtrack: + count = self.reject_count_by_package[candidate.name] + if count not in self._messages_at_reject_count: return - message = self._messages_at_backtrack[count] + message = self._messages_at_reject_count[count] logger.info("INFO: %s", message.format(package_name=candidate.name)) + msg = "Will try a different candidate, due to conflict:" + for req_info in criterion.information: + req, parent = req_info.requirement, req_info.parent + # Inspired by Factory.get_installation_error + msg += "\n " + if parent: + msg += f"{parent.name} {parent.version} depends on " + else: + msg += "The user requested " + msg += req.format_for_error() + logger.debug(msg) + class PipDebuggingReporter(BaseReporter): """A reporter that does an info log for every event it sees.""" @@ -54,6 +66,7 @@ class PipDebuggingReporter(BaseReporter): def ending_round(self, index: int, state: Any) -> None: logger.info("Reporter.ending_round(%r, state)", index) + logger.debug("Reporter.ending_round(%r, %r)", index, state) def ending(self, state: Any) -> None: logger.info("Reporter.ending(%r)", state) @@ -61,8 +74,8 @@ class PipDebuggingReporter(BaseReporter): 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 rejecting_candidate(self, criterion: Any, candidate: Candidate) -> None: + logger.info("Reporter.rejecting_candidate(%r, %r)", criterion, candidate) def pinning(self, candidate: Candidate) -> None: logger.info("Reporter.pinning(%r)", candidate) diff --git a/gestao_raul/Lib/site-packages/pip/_internal/resolution/resolvelib/requirements.py b/gestao_raul/Lib/site-packages/pip/_internal/resolution/resolvelib/requirements.py index f561f1f..b04f41b 100644 --- a/gestao_raul/Lib/site-packages/pip/_internal/resolution/resolvelib/requirements.py +++ b/gestao_raul/Lib/site-packages/pip/_internal/resolution/resolvelib/requirements.py @@ -1,6 +1,9 @@ +from typing import Any, Optional + from pip._vendor.packaging.specifiers import SpecifierSet from pip._vendor.packaging.utils import NormalizedName, canonicalize_name +from pip._internal.req.constructors import install_req_drop_extras from pip._internal.req.req_install import InstallRequirement from .base import Candidate, CandidateLookup, Requirement, format_name @@ -14,10 +17,15 @@ class ExplicitRequirement(Requirement): return str(self.candidate) def __repr__(self) -> str: - return "{class_name}({candidate!r})".format( - class_name=self.__class__.__name__, - candidate=self.candidate, - ) + return f"{self.__class__.__name__}({self.candidate!r})" + + def __hash__(self) -> int: + return hash(self.candidate) + + def __eq__(self, other: Any) -> bool: + if not isinstance(other, ExplicitRequirement): + return False + return self.candidate == other.candidate @property def project_name(self) -> NormalizedName: @@ -43,16 +51,35 @@ 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) + self._equal_cache: Optional[str] = None + self._hash: Optional[int] = None + self._extras = frozenset(canonicalize_name(e) for e in self._ireq.extras) + + @property + def _equal(self) -> str: + if self._equal_cache is not None: + return self._equal_cache + + self._equal_cache = str(self._ireq) + return self._equal_cache 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), - ) + return f"{self.__class__.__name__}({str(self._ireq.req)!r})" + + def __eq__(self, other: object) -> bool: + if not isinstance(other, SpecifierRequirement): + return NotImplemented + return self._equal == other._equal + + def __hash__(self) -> int: + if self._hash is not None: + return self._hash + + self._hash = hash(self._equal) + return self._hash @property def project_name(self) -> NormalizedName: @@ -64,7 +91,6 @@ class SpecifierRequirement(Requirement): 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 @@ -93,20 +119,68 @@ class SpecifierRequirement(Requirement): return spec.contains(candidate.version, prereleases=True) +class SpecifierWithoutExtrasRequirement(SpecifierRequirement): + """ + Requirement backed by an install requirement on a base package. + Trims extras from its install requirement if there are any. + """ + + def __init__(self, ireq: InstallRequirement) -> None: + assert ireq.link is None, "This is a link, not a specifier" + self._ireq = install_req_drop_extras(ireq) + self._equal_cache: Optional[str] = None + self._hash: Optional[int] = None + self._extras = frozenset(canonicalize_name(e) for e in self._ireq.extras) + + @property + def _equal(self) -> str: + if self._equal_cache is not None: + return self._equal_cache + + self._equal_cache = str(self._ireq) + return self._equal_cache + + def __eq__(self, other: object) -> bool: + if not isinstance(other, SpecifierWithoutExtrasRequirement): + return NotImplemented + return self._equal == other._equal + + def __hash__(self) -> int: + if self._hash is not None: + return self._hash + + self._hash = hash(self._equal) + return self._hash + + class RequiresPythonRequirement(Requirement): """A requirement representing Requires-Python metadata.""" def __init__(self, specifier: SpecifierSet, match: Candidate) -> None: self.specifier = specifier + self._specifier_string = str(specifier) # for faster __eq__ + self._hash: Optional[int] = None 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), + return f"{self.__class__.__name__}({str(self.specifier)!r})" + + def __hash__(self) -> int: + if self._hash is not None: + return self._hash + + self._hash = hash((self._specifier_string, self._candidate)) + return self._hash + + def __eq__(self, other: Any) -> bool: + if not isinstance(other, RequiresPythonRequirement): + return False + return ( + self._specifier_string == other._specifier_string + and self._candidate == other._candidate ) @property @@ -143,10 +217,15 @@ class UnsatisfiableRequirement(Requirement): return f"{self._name} (unavailable)" def __repr__(self) -> str: - return "{class_name}({name!r})".format( - class_name=self.__class__.__name__, - name=str(self._name), - ) + return f"{self.__class__.__name__}({str(self._name)!r})" + + def __eq__(self, other: object) -> bool: + if not isinstance(other, UnsatisfiableRequirement): + return NotImplemented + return self._name == other._name + + def __hash__(self) -> int: + return hash(self._name) @property def project_name(self) -> NormalizedName: diff --git a/gestao_raul/Lib/site-packages/pip/_internal/resolution/resolvelib/resolver.py b/gestao_raul/Lib/site-packages/pip/_internal/resolution/resolvelib/resolver.py index a605d6c..c12beef 100644 --- a/gestao_raul/Lib/site-packages/pip/_internal/resolution/resolvelib/resolver.py +++ b/gestao_raul/Lib/site-packages/pip/_internal/resolution/resolvelib/resolver.py @@ -1,3 +1,4 @@ +import contextlib import functools import logging import os @@ -11,6 +12,7 @@ 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.constructors import install_req_extend_extras from pip._internal.req.req_install import InstallRequirement from pip._internal.req.req_set import RequirementSet from pip._internal.resolution.base import BaseResolver, InstallRequirementProvider @@ -19,6 +21,7 @@ from pip._internal.resolution.resolvelib.reporter import ( PipDebuggingReporter, PipReporter, ) +from pip._internal.utils.packaging import get_requirement from .base import Candidate, Requirement from .factory import Factory @@ -88,9 +91,9 @@ class Resolver(BaseResolver): ) try: - try_to_avoid_resolution_too_deep = 2000000 + limit_how_complex_resolution_can_be = 200000 result = self._result = resolver.resolve( - collected.requirements, max_rounds=try_to_avoid_resolution_too_deep + collected.requirements, max_rounds=limit_how_complex_resolution_can_be ) except ResolutionImpossible as e: @@ -101,9 +104,24 @@ class Resolver(BaseResolver): raise error from e req_set = RequirementSet(check_supported_wheels=check_supported_wheels) - for candidate in result.mapping.values(): + # process candidates with extras last to ensure their base equivalent is + # already in the req_set if appropriate. + # Python's sort is stable so using a binary key function keeps relative order + # within both subsets. + for candidate in sorted( + result.mapping.values(), key=lambda c: c.name != c.project_name + ): ireq = candidate.get_install_requirement() if ireq is None: + if candidate.name != candidate.project_name: + # extend existing req's extras + with contextlib.suppress(KeyError): + req = req_set.get_requirement(candidate.project_name) + req_set.add_named_requirement( + install_req_extend_extras( + req, get_requirement(candidate.name).extras + ) + ) continue # Check if there is already an installation under the same name, @@ -159,6 +177,9 @@ class Resolver(BaseResolver): reqs = req_set.all_requirements self.factory.preparer.prepare_linked_requirements_more(reqs) + for req in reqs: + req.prepared = True + req.needs_more_preparation = False return req_set def get_installation_order( diff --git a/gestao_raul/Lib/site-packages/pip/_internal/self_outdated_check.py b/gestao_raul/Lib/site-packages/pip/_internal/self_outdated_check.py index 41cc42c..2e0e3df 100644 --- a/gestao_raul/Lib/site-packages/pip/_internal/self_outdated_check.py +++ b/gestao_raul/Lib/site-packages/pip/_internal/self_outdated_check.py @@ -9,6 +9,7 @@ import sys from dataclasses import dataclass from typing import Any, Callable, Dict, Optional +from pip._vendor.packaging.version import Version from pip._vendor.packaging.version import parse as parse_version from pip._vendor.rich.console import Group from pip._vendor.rich.markup import escape @@ -17,7 +18,6 @@ from pip._vendor.rich.text import Text 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.metadata.base import DistributionVersion from pip._internal.models.selection_prefs import SelectionPreferences from pip._internal.network.session import PipSession from pip._internal.utils.compat import WINDOWS @@ -26,10 +26,13 @@ from pip._internal.utils.entrypoints import ( get_best_invocation_for_this_python, ) from pip._internal.utils.filesystem import adjacent_tmp_file, check_path_owner, replace -from pip._internal.utils.misc import ensure_dir - -_DATE_FMT = "%Y-%m-%dT%H:%M:%SZ" +from pip._internal.utils.misc import ( + ExternallyManagedEnvironment, + check_externally_managed, + ensure_dir, +) +_WEEK = datetime.timedelta(days=7) logger = logging.getLogger(__name__) @@ -40,6 +43,15 @@ def _get_statefile_name(key: str) -> str: return name +def _convert_date(isodate: str) -> datetime.datetime: + """Convert an ISO format string to a date. + + Handles the format 2020-01-22T14:24:01Z (trailing Z) + which is not supported by older versions of fromisoformat. + """ + return datetime.datetime.fromisoformat(isodate.replace("Z", "+00:00")) + + class SelfCheckState: def __init__(self, cache_dir: str) -> None: self._state: Dict[str, Any] = {} @@ -73,12 +85,10 @@ class SelfCheckState: if "pypi_version" not in self._state: return None - seven_days_in_seconds = 7 * 24 * 60 * 60 - # Determine if we need to refresh the state - last_check = datetime.datetime.strptime(self._state["last_check"], _DATE_FMT) - seconds_since_last_check = (current_time - last_check).total_seconds() - if seconds_since_last_check > seven_days_in_seconds: + last_check = _convert_date(self._state["last_check"]) + time_since_last_check = current_time - last_check + if time_since_last_check > _WEEK: return None return self._state["pypi_version"] @@ -100,7 +110,7 @@ class SelfCheckState: # Include the key so it's easy to tell which pip wrote the # file. "key": self.key, - "last_check": current_time.strftime(_DATE_FMT), + "last_check": current_time.isoformat(), "pypi_version": pypi_version, } @@ -185,7 +195,7 @@ def _self_version_check_logic( *, state: SelfCheckState, current_time: datetime.datetime, - local_version: DistributionVersion, + local_version: Version, get_remote_version: Callable[[], Optional[str]], ) -> Optional[UpgradePrompt]: remote_version_str = state.get(current_time) @@ -225,18 +235,18 @@ def pip_self_version_check(session: PipSession, options: optparse.Values) -> Non installed_dist = get_default_environment().get_distribution("pip") if not installed_dist: return - try: - upgrade_prompt = _self_version_check_logic( - state=SelfCheckState(cache_dir=options.cache_dir), - current_time=datetime.datetime.utcnow(), - local_version=installed_dist.version, - get_remote_version=functools.partial( - _get_current_remote_pip_version, session, options - ), - ) - if upgrade_prompt is not None: - logger.warning("[present-rich] %s", upgrade_prompt) - except Exception: - logger.warning("There was an error checking the latest version of pip.") - logger.debug("See below for error", exc_info=True) + check_externally_managed() + except ExternallyManagedEnvironment: + return + + upgrade_prompt = _self_version_check_logic( + state=SelfCheckState(cache_dir=options.cache_dir), + current_time=datetime.datetime.now(datetime.timezone.utc), + local_version=installed_dist.version, + get_remote_version=functools.partial( + _get_current_remote_pip_version, session, options + ), + ) + if upgrade_prompt is not None: + logger.warning("%s", upgrade_prompt, extra={"rich": True}) diff --git a/gestao_raul/Lib/site-packages/pip/_internal/utils/__pycache__/__init__.cpython-310.pyc b/gestao_raul/Lib/site-packages/pip/_internal/utils/__pycache__/__init__.cpython-310.pyc index c180a90bcd67f7cd88823bc0c33b3fe3a1351a07..5316787c0a7641ebe24ffd8ec7de835733267e32 100644 GIT binary patch delta 54 zcmdnbxRa4PpO=@50SFfPt)9qjBOl{z6%$&VT2vfUo|;pVALEjrT$-DjS5h1k6y)UU IJTWI20J6&wp#T5? delta 60 zcmdnVxSx?bpO=@50SKypgihqPQB88TiU}=FEh>&FPt7UGk8#OQF3nBND=CgiPc1G< O%#SZhEX|pi77PG3sTBMG diff --git a/gestao_raul/Lib/site-packages/pip/_internal/utils/__pycache__/_jaraco_text.cpython-310.pyc b/gestao_raul/Lib/site-packages/pip/_internal/utils/__pycache__/_jaraco_text.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..4caafab5d29c8cecbff9b5787f01e0a616a85aff GIT binary patch literal 3840 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 JxH21`{0n--Svvp# literal 0 HcmV?d00001 diff --git a/gestao_raul/Lib/site-packages/pip/_internal/utils/__pycache__/_log.cpython-310.pyc b/gestao_raul/Lib/site-packages/pip/_internal/utils/__pycache__/_log.cpython-310.pyc index 6588445f8f9231a05d4dd38f3ece18b44e558d2c..1a3667d1fccf95b9548864c4ce4019c741d97dc5 100644 GIT binary patch delta 37 rcmaFQ{gRtIpO=@50SFfPt=`C8!o(Ocxq(TNH7Ll*)p_$0CU0f{zYGcc delta 43 xcmaFK{hpgUpO=@50SKypgl^<6VPcG%+`uHsot|1;l9(S~lvtXxc^;EDGXNDw4ORdE diff --git a/gestao_raul/Lib/site-packages/pip/_internal/utils/__pycache__/appdirs.cpython-310.pyc b/gestao_raul/Lib/site-packages/pip/_internal/utils/__pycache__/appdirs.cpython-310.pyc index 39ffd6e0dc6607a906186113934d95a75c6ee229..770331c0081ce3d485ed267e553203d06e89476e 100644 GIT binary patch delta 37 rcmcb}bDD=cpO=@50SFfPt=`CO&%_u#*_%m{H7Ll*)p>J1(<5d8u$KwE delta 43 xcmX@jbCHKTpO=@50SKypgl^=vXJSm8?9C*}ot|1;l9(S~lvtXxIg{xTGXMh&4Hp0a diff --git a/gestao_raul/Lib/site-packages/pip/_internal/utils/__pycache__/compat.cpython-310.pyc b/gestao_raul/Lib/site-packages/pip/_internal/utils/__pycache__/compat.cpython-310.pyc index 63e438b59cb442b99de3d26cb0cce72d1c09c88d..68c308845d1424a7037c72f73acabcb2d880ab08 100644 GIT binary patch delta 1018 zcmZ8fNpI6Y6!t7$;y6o_bO~iCtB3@gI8*{vh^hyK)JpBm7b|4OsT0?ZW*kaUq+ELC zP~{J_g$v?>#E*dAFcPPp`WGrec;hNn#YpdaZ{9NVwzJ}w$~Y~RTm#PO=C^K8FpM*O zxqdvjyaJNH0GQz$3^5!dALpF-B&3Re|R6D4Um? zM(DB{s~?(vW7lAf&&Z#L7Z#2e+58C_w6)9@`Z#TK+FN3aee5?G-Z5Iuk8gLfVR-a? z(?klt**g03vuQ(xEi4>hLd#zbQ3Q73Pky7OxxM{*V|{|~#&Q*uQUgW~vap9J!c&h> zEJ{Dxcma+&*sMbM1GYXKxO(@ad|~LqwfS*@Jec z-|lkd2rkp1=zzqNPRgRBt1PY)ksS)rv!i7bXdOu21jvjYI>sa81dY(L(SrpT;Spi@ z6M?>xO@+n+x_A#f#eIMlRfTA8kcuph-l@XuR|yS*8l}*Mw5V9o{&zK8MgCX2s-**- z1R4L31+!PyAV69GRbnA)DjtKlHrB-}r!BgJwvb#|gM(~0O_aSayOH3bBKuLINGFaI zPBO^#Hu#G>0IeI!4g!{Tf(>Edyq_VPuf!1KHnXH>n zR!f(*Oehj1Sw0u#z2`zkX%a+9n2JZ*qi|JIp1YuvLvtn2{k~Sco}u4(y==o8VxVlu51R-f|JF!xY0_UMCB?f1T0;`VVuQ^sxW{ delta 537 zcmYjOy>1jS5Vps@UEi*E6OMos1*8;EoFWR^C<-*xNc=Pw(sDX`H=8WCCwos(ph%M! zK>Gp-&`?qE0#rPNJCv7*(uDD*$w>3f&o|cm_{Z91dfH}LLQuY3y{|sRgj|N;u5b)q zqPournkb^FhK4FSSWqxnrdUNZ`$iQv^n7HZ3#wwxjVM8nbackmSjQ&8Oj>d+^cXYp zfasm%J5`xshxz%MPA}+kH~3l}LAz_Y^IfQ-K;I_Y}NFy;nh}-lv_stDrf|fatb$+aj^3DFL(%#LV+KZ_^R`f z>xxya{b=5_&e*K~#~+_&p#VzlMOil{@I${_NRhOFu!ZU-2#MUFk|vao<+TLP^P7R+ zXUO^Z*j2SPr57_>EoaslA1zP1gLdKBag8u?pT;2fJJZLsB^uYc$Jo^$=j>~H0? zn@X7qT;JH=?%p4Nke(v-2lMarTA50QD4aYRWwFPka*pXd#?P~OT`eli;MqE531%MA zN{)^2EHE0+78PKVECp;jtrJ4gnk(Hqm%*(94fid7~PYIL)5Uw%5ybYydp&729YaRaI| z*(@u8lPRX&R;(A~0of)A`7`+_)o?wh)2#Y+SF}92tUjDi!=4^1A`h>V`ug(Dw#S9H zbB8y5cjryF)@|{&@9k`Dy|J+_|5lw;0TewIU|bbrvZ0m9Gx??F0}?uCpTzDRI`TAP$K}(uQ)6yJQ_Tr2w-XU83nA{fG3Lz696lgCNM~a;?CM)8U-bUFsCp(OiWw^ zSi;4N0H2l}P?ulOQcqk$@-o5|1PdVv&@U5-IfQwD%4oIbcdJdO)ouEXs;KQ%MlkX| zG_B#b#R4k+Z%@v29jg|L2(KuLyczpl$8LxPxuRbg2~DG{Wm_+ib@{bEO|Ho&fED?p zKG#zo5vDyRV#e1Fl+VZ^J)pOh1H$M&RN&K7oU;3$)QZ{SRfrMj(Nt74NXSyfRgC)@ zfE5$3quliTs_?x#4Sz3e4rZu`Ymr8nqwoQ! zd*~w^0z%{Fi9u-0_zO@A$6-w#$G@NN?*Jrt0n`Ih!%6ixZx1FlY^N)~GH#GH`IAw& zbOSYY!98e8KsrI9%2>mPj(CyLI><#qCKEG+%lX7C*_4}!&c-a#*m8@AcX8d19*uK0 zETwbT-*el~d%O>No(_;CQzWel`=R-9{w5j^dyx0dsr(_TOsI=YJG=z=oTL_y7=vusufCob)5bzvXMwAcw7w;jU z*C63_I~`Z}oQb8r>%eSyPAw{Pcneb4%)Zg*@+iGAioLW{+qS3;mo+VaN$>Rp{v3ih z{yiE^9-XW3G~xLdV+i5s_h(A1Ar}@gs0m%4N?|Zn#%jxD-6p?IK*M_rfWnsM$V;l3 ToX`p}qmY9;Urxy%GK>ELB&luu delta 1337 zcmZ8g&ube;6yDjL{h`$lOR^-(vTUoS5Uej-iR2G{mR}V<^V32+i15D`~eg zt0awWOi7M8BnMGh+YakEcD)jZ@sjo(7v~FWz|~vcJ#gPeeZ`xzbu^2 z=Ynk3)!=jZ$M!xczs%Li=F7|XPl(3Jw-e0#j_l-_#Z6vd_MSeiF^3oTC`&Q-8Qqy= zXXd3(cJ6)c;r9;0}!8vRO9gf=P|(TblQd z`kHJLN1c+-6xUxYXJJ?0YoY|Nzq)sB?ruvivjocO zmE9m$)Q|QoSy88e>&kVOP6#s|YGO7rj$tB?MT}{J9)GzJaCJx;q0C+meBlt z0FR0fFyz86MI;|}q64vr!4(Xe!;zMexQcKM;S$1FPnxEFa;md;fR;soWE?_G=WmBl zBN^$s%B6m|Jj#I%Wi5(~)$6FS1|e%jJhu4bi1!&Zd_!%z zwc%23f0+_Mw}i? z5n}=I07aW4r6V@*d=KF^0$PhT_0>dqD`^Y;#K#Ee5~t)K3x_EsW`x|^;U6|+*Rlo!&)g6^p0!h8P$Z>}EL diff --git a/gestao_raul/Lib/site-packages/pip/_internal/utils/__pycache__/datetime.cpython-310.pyc b/gestao_raul/Lib/site-packages/pip/_internal/utils/__pycache__/datetime.cpython-310.pyc index c5937bb06c15b5455dde04457fa73ae7b6ebd494..cc435f07a1156e353e2fe759c4131a3d502408cc 100644 GIT binary patch delta 56 zcmZo-`NPbe&&$ij00fKtR&V5%W0a3^wu%WYPAw{qDNoHQ$&Yc#PcF?(%_}L62?}y@ Kb)M|UxCH>qKoRu- delta 62 zcmeyv+{D72&&$ij00h-PLN{{DF{&mxTg8MHrxq2*l&9vD7NMP@)NHJSYUG?|LTfJ{G4iOHfu$!rEdc9G%aIw5t*Tg=5JMYotU c^Gb?jK%z<@0;FxSi?A|d$m9&+P$s^g0IiKMNdN!< delta 1946 zcmb7FO>7%Q6y6!H*N)@3KPe$8X_+Qzw%aB~34%g@AuT~gV4;Qz$w*l1ow2j-ddHnz zx5QawBytT>@DYhSH>4hW=ZMtno_Yp}W0cYocr#vuLLCWqwBNjaGjH~N?`QXysb9?k z9~;YQaBc40sc%i}6sGZ;XlLOby0G*8WwfvpuYB;nMo-bxTN*w6H7-xGN%|@!^bDP$ zvvh7dU7iBXSvn6I6Ex>Qa}qR`(wt8;uTZ?ES&I*6&`E???<$@et+ODsc}3W5@8M^7 zH-moY-OgP{e(&4d?h-cs#27!v8I15gPU8d5`fs^OjI;ZCCW}sBaS@z%c8*PTs~|9~ zjHp(|BPbbo1kL-vf#&GwR=S*_d9WIzsHW2b zJ+h^jvlIb~WAXThtZq9Sw|rpWdAFGzaKE(L6=%T#F)zWCFe_mWAU@8TZdkEvArqCL z?Kmt5;&G*`vKkkx;`Wbnvaow_Ng2a^1MZ**5TQt`Xb}cPQ3?=8I$$bF1L{%NfGHhi z01c|GX~F^xNCf){f zaY>$$jrD+ewL|&!x1vkEd-)UH3LFV!D-l=*1pp&wpuxzY&h(Jr6$eJK?%Pc!Ccw;* z+y|GGGjOX|oC6`$BCUZMI6@R{LtGjVj|N1eQH5YM42rkYNRv^pQY8zC6)>^VhZ3+d zs*1#A*e1?PxFX@IgliJ616WwRBjpvKIo>_0(nncKFvkvE?tcSoiZ4caq$eZytTQ)^ z@4t;LqXgILsx=~HGm23Od4M<-ghHg0y<3>`l=()gKS;NPLEp5kn7Z{oPJ?cCjzLI09Gumh45BBP`oxPG04 z>x_7++KCyku-z)QHU^ta(qv(Gozn$Ug&?#8Mr`t6oiUF%yzNoq^AJ`@we5N#fjTE{ zSnON~IjOl{sFVAf65J`y0T0=-z5~> z0A48l{@*+f&~QUSISUklb^E^LWwth2f;X5G7DL|jOk(>~a_ACMu`o%?cJA7B21JzI z-yRe@vp|{ocGY8wwYj(mv07}g)*DL~O~PBUd|ZBJScxi*vI#p+hEwc%|27}v1)md-JGPhPU8PdSUuHXrR{*4K z8BpI0$zjo~xgIOJj}~N`l}gZR@)J<9rh7k)I>wSr^m6aDyxA2urTm_RX$dnDn&Vat~Nihe>r;cjZ?+9C($oR@c=_Z((mJQ{jU*EPh?VDIJ3dee6RK3E>2cTo#l zsDdj}7nwrIyc5S!y68zxqgz~!H$XTIwT7WfOHmu#~^{awerln$| zMz6Cr#B5kj=&Xz*tb@;$0RNtS+9C6DF1N9@$>O9H#t;DI$3rx5!6e|8fi+OT012k~ zr6Kl7^2#g^(is+({Kle?V$i4r*|wB~$gnAC0A6-4FL+0=Am(_nA)5f|W3Tf2zE7Bh zmxM;6LOa7^Tz$El#rkpKqnhA!c*ij%xDM|Lh*#{;;nOSMyNQgG&KzM!UQPpt<&6b?*)F zK5c8)@XpbPUzOgW($N>!lp~;HxGxvb9iwRnv;}c3j3?i;lquq5C2?WZ8w>TuX1#G? zd$od7LRR!So^Nzux&w2mesN3^R@*$_Sk3$5jvUR8%U^aXpVzXx9z!pC#wtF~e&NMh zmASr`J!GDr=Q+&RDq@sg879QQ65r_gW{^73lm~p zUxcZjWjzX+VL5IOB0H(c2Il0DotC^3cV*7MOpHrW2R3BXhnc($F*^ HUL&h-{Pcl0 diff --git a/gestao_raul/Lib/site-packages/pip/_internal/utils/__pycache__/distutils_args.cpython-310.pyc b/gestao_raul/Lib/site-packages/pip/_internal/utils/__pycache__/distutils_args.cpython-310.pyc deleted file mode 100644 index b3e5ef29bac0251dfd344f633d2cfd34f823dabd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1056 zcmZ8gPjAyO6t@#MO-qM5X$Q)Xh`3dv+XXIYMW78Kp=m-w6QUGVZtSLENu1fvwubZu zN4^7a<16{fY2N@%9C&USv^>er?|KgQMFWJb?j%m?4&0Os2u2ZN?l(NBF~SM=I*8S{%RTN*oDP~0=CS%mGN?2E73wxF zp&sfw=EifbMXsMoDWvhDg#u=B5Qo~3!&vEVt8DQL9`PS;WmMCC*}nEpIb~d`e%ZRVB=LB~pC?rRXDK9Kx2RCYxrQ3`zdcAHbl;FdacKyZ zkusj-x{z6j?PPz*hr0o1AC9^J7Na??&;fe)aPE{XjVdR?3~S7s&+gEfyL0jyWetL~ zGuy@hF-C9DDLF@#tL~nX%4Kc`&1+T7-i)x?CxG^gYoYz>%ssIC9h5&{jd{JQSGe-_ zAiKf8SO41^B=>R*r z!aajWm)2m2mIdz;=~~4fL1Zj4C2gFkOAhZA@~*!u3)rh7(Z+?LOf$EGGMgc9+GuZ? zYuXu2`Dh|VI$DO9%`=)5Yo_l=b|B|!y8mc+43DdZ=RDD3cp$tj3&Er|(Tm|$*lp|e W_fo-%gg>^pE4#C8)Q0ceYySq&8!SNp diff --git a/gestao_raul/Lib/site-packages/pip/_internal/utils/__pycache__/egg_link.cpython-310.pyc b/gestao_raul/Lib/site-packages/pip/_internal/utils/__pycache__/egg_link.cpython-310.pyc index cb55262f75e7a72d8a4818829998279bffe618ec..afdc0c843c064270828879014b9a6b27cc884df4 100644 GIT binary patch delta 716 zcmZ8e&ubGw6rP!#-E5-yVW2GyEsh}ASeiwYian^93Z6Wqh#)C(P1eoE%}(5z5L$Lg zK@jm)7QBd_lIPgr0N9kw>{WS@^E3wSuReQ)2E9uMlw7ECyDJd&LI zf^A-7-M$^TPA`*G3KM&ed2kIx1Zz01yWx8Q4DfuY*ZNY9#KkSkazTFlsL|y^YqU4A zt$(7HC&bth)|E?}SL?}yTtC}xZnf_TClu|8<4fM&=H2no38ZMZTDNXDla$<;mOC)2 zqegYI(N%a3VE|MLCZ8K7P8|2K4Cs^5eZcK{?j*E1Yri3emG?bc!vVfZe@n$!kl zMk5kwa}v|6(jz*@A&V$M7(wc22R%KNywvumdZ>O>S~|H;njhJ+-|?g~Op7O4srjc2 z%W&}+DvFr^=OBeLW6}aPaS5M>Lw=GYN>A8PRx&%vmw1s#+PYkewMbc6fTfK=Ze~Ur ztW9D)tMZW!7H&rRZwt!7`seR-m#iAc7IXpYif{=OQ>u8l3^aL|Tis}=Ddz!b)xd@9 YkON8-Gl}`%qRIQ*7h};_EZ2&^09c{1aR2}S delta 459 zcmY+9yGjE=6o%)_%x)$jS#$$N;)QL3h@D^)1d9XZn3#+1P7vY*1v@L_ zc2>zFh?Os3Z=ppVzz49h5j~rrm@}Mz{=9(X_ zth&B*+P3F(8o@2wx-@LJTD2Rs)`{J6nr`^EPf<+Wo5iaPD8I$gXxKSyKZ_!XBG=FZ z33Zw$rDTsvR;L55sDdHwvGJrSHUuxN7$tz5XORjZE$!~aEXxWU-mthAes+|YA{j+b z9eHfmq}vR>`11Nf7;2yh9s>j7Ab@^zIt3WQ{Q-7^J#9aeL<+qg83@G`MJ7I;qKYF^ zR`Chb7#Xq3nUOeljJ{L{L Fe*pe>W6A&k diff --git a/gestao_raul/Lib/site-packages/pip/_internal/utils/__pycache__/encoding.cpython-310.pyc b/gestao_raul/Lib/site-packages/pip/_internal/utils/__pycache__/encoding.cpython-310.pyc deleted file mode 100644 index 431f7af6f7cbabce1e0694952fd1f7b37607cc6e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1304 zcmZuvOK;mo5Z>iW6eZiL;}}W$0MTBo6t)oy2!g;Ziuh5qP@N)t^Yvkt=ImXz4qjDFKsXBEENkX&?R=hd3>Cio!x9@#Ur@B{p)P-i$%yE z+E`vL8lT`6zoIxJj4+yz&KzlnmbTF`N;EqrqLEl5yJL@>jzbBMuPe;#8;CBmN~|)w zM2|To)>x&)I&({0Vb#7dsB~7r1_#!l(Kqgs`vl%%-aY|iy3T4d+PTB(u*Oy}YOz(e z_M_F=VDywU8#mY|IcXZoYR5t<`(=?QaAg;=zy0LO(eUW;RdtTrJy@tnDx;B9G7or#IL7TUEnu^26=*#De-Pbb#2G9%2=*;!>aufAO8eXL_j zcUoocjOJfSZ(5s?nI3HQ>gR(YL>GSO_r?;0FC@n)`2CEd3uoiY%#Sk8A(F}1XCP7W zWvnq^8;mvB8ubVW}V}MCdv~sD1U}a9M7)Q>BQDingSzHio6CEDd)}t`FCYJB)Bpeg diff --git a/gestao_raul/Lib/site-packages/pip/_internal/utils/__pycache__/entrypoints.cpython-310.pyc b/gestao_raul/Lib/site-packages/pip/_internal/utils/__pycache__/entrypoints.cpython-310.pyc index 57783882acd938128de58b96d7c3e764d4be10e5..f6091892d8dad0a26e9220b6647e92a3f07b87b7 100644 GIT binary patch delta 57 zcmeAaZ5HLu=jG*M0D?t+t2c7DG0Mj~Tg8MHrxq2*l&9vD_c$otL-xCtR delta 63 zcmZn`?G)wC=jG*M0D|ftp&Pl|7*$i9tztrpQ;UjY%2RVn@?%``lS^|`^Gb?i(o>5| R67%DW5=(P7Z(zL40RU>y78?Kn diff --git a/gestao_raul/Lib/site-packages/pip/_internal/utils/__pycache__/filesystem.cpython-310.pyc b/gestao_raul/Lib/site-packages/pip/_internal/utils/__pycache__/filesystem.cpython-310.pyc index efbeea9f1c3126674da8eee5852a03e87649bc63..3b4b81d9a826d0b38c91659ee3427503384f4d6d 100644 GIT binary patch delta 1465 zcmZuw-*4Mg6wY-V$8nrAb@QWf+cfLgrnGFZv6oJzLln>i(+VA9BFh@m-0Lpj#L=;{ ztq7@`HVGu)VY<8{AzmgXp{f4}JnY5d4*(&actMB<&bcWNRoKesoA3Pk&auzE<4>3J zK`v({@cQP;cf0S+Jj%~A@6k$spCx#L8@|(@Y0ju~+AsD?%@UqXQRW#@@pNwS>_fdd zD-6Zi!b08_S40Is}myjWMqI{uHD7aJhLksqltW2ng=jWS!7KO3h{ zuAtX13}F|4c>Qp(p~ZzT3Wn{D7YS%{;dl1rYWmluf2&ZRya(W-f23~sI%jXHYT}*bm$=1hRsZ-F`e0eSw^0j8k|4)-u#S} zs8gs>cxG)^48+|btbZUcTMvw}BKgdEceR4{hA|$(2?}_b;4DSyUe6b?=JBzbbuv&o zIET=bJJ|+1cko5_CAPYXL?byd&J7|oSR?NS!ebWe5Cn&PsU)u;{fYd;KEsOgRPMx8 zHTx?RuuMQQ;uI;s@1oy{y0=6)*0D)u)t2S;2E46&ZX+4e+Udz6vzd$Ifa~(>+@*hd z{Vi8{L6uNbnHUX)x5M7Y;vS_i5Nr)+$>0Wt&&$ocv!UA4Ad5D*LC_>PlBnPXfI5{N zmG4t@`dvf7TsP&ndH6_;{T+%`N@z$bUn8xESSK0qHqvp5-f;-m=xmZi`dZ?Q5=$#^ zw0a)hMK=myPu2ch-k++lE_HAUT2yDUhb|FEdyqd(xyxUXWt)H_G@gSkI+N~ZItb6G z$`^>5mi5A$%#}|IMY9|9(SZB0VY-BzDXt}np91+{@-gf*ZKh;`C^?`GJGDvTuGR?7XHKX(dW| delta 1589 zcmZux&2Jk;6!+||*N)?_Y#b;4N^JK_Capm#QPdLBqENV0LNtklOvrZQnN7E>z1Hlw zNeWUbr3WO0P&5+ag2Xi!B$R)Eb5ES-KR_Hf^n#E;ytlSmQ|gs}o_)VJ@4erfH~zW# z_yA%e|XDt7G+MJF_H4W7PBuy}8a@v`+ZN-h5{s)=9QN zr&!4~Xo^lhH9BQxqV4oq?YP2bXpUJle?r(SojD=Y`bO_mS(TB8wG+~*O>CZ}1=zee zVVR>vuq;KE`6x+-EtF!eNf&4dnEKc^%NnfdYQPw@Oe?@#7%}T?0Zdg|1JlLVI4{yA zU@nar^sUndST0kt8EZA=cVzdDuHu{tex&lD2nM#}3dU{9eCJ4|4jfO|u6M|2i>UNI z6ZXIn5A30b@6&F;dycR}?=d^CXmLVvvY{7D3!2O`@*Vy1og6Gxa=_UmFBpcf8t*=f z@g<=Cq8m4NwnN6lodf2JVCVgyJM6K(2zT~bD4f9N&d`@X>i0-qKG&B?<9x}O(dKb) zE5&t8R7Ai$yedC5-&&29O?X$tRVHWQ&=*m%5!8{Hap*&*3wdnO8-PBaEz6(GYZtEp zx%C?X+=nlGe!bPwRf03_cp*~;Hb|1h@68uURon}y$9WZ;mC<*4jF(}_D>9p0d^3`7 z4jc}t{#Szlh4umWgtO-}8-m=GpC&70_52|D6`4bcypB<)*7jMS9S-<9m4(!aIm#`6 zNNwFH0pBu5>aXC2+X!z1C<9d~&84Hf?;%k~SOM6TZ%nty%K6sxb#h}33@v@4j~}2x zrqo#k1%vFTj04k0Zgen0e(tW_fQ62Y? zt|Ogty*`b4A3lcn5bvg;7f70vi9vWrI=QMm$y~krve%{;`d1rH6tm zV=oAN-arSuYAS1UHt^vl!Y}>>0V#JJo$kmMyGWjsYo_Tm^inW zQ;=Ni1$5}M^;NvjVH+SBOF}pCNyAeo1udzMP#qpO=@50SFfPt=`BT$s`}^Y!wq)oLW>IQ=Xbrk{{!epIn-onpaXB6BOj+ L>b$v=Nre#r-@Fmr delta 63 zcmZ3^zLuRkpO=@50SKypgl^=HWKvCbwu%WYPAw{qDNoHQ$&Yc#PcF?(%_}L6Nlz^< RNz9KgN-WLU+{~oH2mots6*m9? diff --git a/gestao_raul/Lib/site-packages/pip/_internal/utils/__pycache__/glibc.cpython-310.pyc b/gestao_raul/Lib/site-packages/pip/_internal/utils/__pycache__/glibc.cpython-310.pyc index fc71d79ee9f24ca910d05d20e97df980e9b835b1..439d451a81b497de719aefff57106f3c01ee323c 100644 GIT binary patch delta 405 zcmY*TJ4?e*6u#%)JZjp65^IMd_yD1kvTwn<5DEh))VaO!qJ z*VffZ-24ZQuEjs#uh5%_X+3JMnhk4pW6wGd96zvz zPM3OC$!iXJj!OfpT0JZq>CKWFk>>d zVz~2vAEAyE;f5UHF^UOIMT9PmaZrlLRAC>azLB0wO&a!{V4gne^*x`Kec$uvf>Eke te4VRf2g0OKoKD$bwFEQO_0je*ps7TfG1P delta 340 zcmX|)!AiqG5Qb-FlT90vQiFQXOE1;ldK5fb@hD2Er4R_UiG^Al$ZjcZHwP_v@*?{J z=_80Y-@49xd``>%d2^?etN)<3=RiT6>9u^DyF!=6Yo5iXLcOvB4` zG=EBFQiS6~$YB~~!}(Od@+1{3 zW?L+*ErgUqj(t$r1q-AtxpW@bvZ3$ji_;FHouk|Q@F24ds8$l|CR}bI;l3WQ7H0Z| zHLnyD6w?-ST-gdIET=xqTtl>$O@wj=P_{2X!NgV+aYY-*nRFDBl?{nA#fqwStO2@u pXdUZk>n&)QDqJ2Jboy)#Pz zTl>%&6Jvt)CO-K9yqHE4V|eh*_@r<8J|w>R;EOT782_T@+-)gsaFY4vo_o*Fch5cN z&QJZn45ZyuDz3ouVEnU+)4rPCP2OJ}$S+l+MwBR)VrfpS8aLwAgpsHwjij8@om4e# zq=~{*UI3ktqf}dr7FY`#trf+JJRnBf1;vV5u@%LNEvrTbq_~v;DZw(!n$d2ND@s23 zGe#cIM}pMk^;bvf@Yv|^rHkVig6Qg_Ty)%>V19$wR{xj~ualD*l_&~R3}PvUY7s-T z4u}V&mmCz|l6PO$ScrvLct-6~ES;rhbgReOv!WXvQc|s)wHKtFR)lq~ukW*ZVWtbD z#Efe7S^Giiwp5_iFWyl<9vK8`wz8-$5Q{Vj?_MDHl>5qvGSyO27qvy*QY~#o@yUX| zOh%MtvY;+#MP)7yUxfleaHNZIjW3mf_v1%}kq++_c)ct@MOjd$!i%KoepQ_V25U;5 z1R=+rXFRV4YT-ygZg5nV@TW0+s&v(3+$+s9$9GF3Zn;rqHQy^uOq?4XE>)Q4n=a*M z!zo?1#fy63biC-;o?mvW^}#-jj5M;!o!&9in`K^sQoCmRlopDPTQ(hU5C$9i;v21) z-;B;X!8C|&SnNV?SU`FxN?J*$SkfOIMXGticjHIp9q;@h*T9 zVl^~z8r69>KwfVu?SpZk)!2LxzG*rQ<~7Z515FkYO3j)@=|RyG{=8qtiC8vne_i!) zm>^cHuo}Bn=YvJ@Tew(|!TQ0|8hL`zrhc;NhnC$&%|9hdkxwMQK&vo6uQg4MB9Z41 zq}`@*i|x@_$SgG-JVa~o;j!p@Br9X)KtG7!s$);{gW~(xuJ#1_Kr%tNQMXK=@ow>V ztn0E&)p4BHD=zE_0|ue;Y@>D~(9s3ZasBPlv*lSG^}42ZHb2`&!Tz~08FL&Ih@$49%QzX znXw&K68|Jt_YR}sdLl>AaJ#kmBDs@T;=AObC9Kws2b(7ZFWP&Uv&Vgzg1&^#Tu|=G zUc9gJHn@?X59gp)p&PY3$C?*PZhn^evyA7=+U=Y>lY?=tV&7!79OjgHIg_*8`q338 z&*!IAS(f~Hh_+Fi85qm+cxnN}!4Y+9jJh+k$P*i+RZWsGQUBG|J8fe!PGM6^{F*d- zWqlk*$J>$!-8SvI4yCT}QI(O@g`?mwluKD~3E?h*wW8qj5L1_B654Xfw zoWMHe8Uj`dzko1?@De}}cBkKBWuITdnb#1q%1MbEATK8*w*y|U2Oz5Gq%Rats_m_$ zL+jAHcV@Iqv|CR{9)8&RDLIZ*gVgz3NhkQ!AaL z{s+Rz^ggXEzsl@5EEA^jIOy>ygi{DZ2wMw8ZuTSbS7yMTz*YRY@JWQL2r`G5SAGov zGZUoN8I_p>b@hb5H&I3Mdjm!*@OpSIxcPKsUzp=;KFePaciZy=9G8O5x?L~89|Z2L zn&}kStum|owp;U>H;Uw+5I?r}B=ELq-ak_!ne9A-&Yp-ZcZIQoXtC;A4TlX9kmP?d Ss`Qa8w2+Q(C>ly@S@%C|tKtd( delta 1749 zcmZ`(OKclO7~a`kuh)-t9(J0#32Df`w}0c((S^^{zX+ zE{U2bLMcUX0EIz_1LAc-k+|iGP{oxqm*v0-2`)&SsF0|be{57!fhB)C|3BaVoPXxG ziJ!+)o?*l#{=0ei#p+MJd#OS6!QMn}2T4RCilf(KW~?4Jm)XVFQM0=$5&cVK_RLEpM&h?565o~0UM?j_l1oXecULjf1g%Ip z<5$RFF{g#b>MP5$_^E}x@5lH4T2AIrs4sdYD`--ey@1a4{=#{dWFjJ&GC`(7POy*B z2pVPIptq(~%eX3&A#(JVY91m{tDk^ICCA7x*Bs_jg6|(EBV5W7nFk(Y@5vvXdz?G9 zrEPf&5!6JqZwq}ceIY$9U5URYZ!6nsfVR|Kv?XsT1?hU6eXTU=W81X@jE{1T5A9YXI_gF#b~5tg88FNtdI&yp zDCZ|bbYowpSuWFl03gso4q?3D*nUv)>W$)gHm#M;gAvVe$f+&v5YQCYdLz_sl%1yK zx2%VOCtO4^F1rNd33f;OdK?l8qr`@c+tmBfVuh;ZS{n^oyvRO`7V;w47`NC*9f{rN zCtH4S#cR4jk==`aG6p80QniAd(lR*(iA(|ryOuG#qi4{igCF#_QAPwg0%p-#*{?bF zIvr(=_&^%kMj?8rH5;THSTw^vjc1=1Et&?sTJ?Al5Fw0IYEAcAsDcX~-wQg!0U=YV zS(R(JTrJzKA7DZE=a`b1OPu5TGznm^)kOZWalXvSR0j=Y$InK@6ugcqVE-(KE9@X~ zFkA#N!GW6!`bAK5(Ai}p9l2^d)*AaPxi>rm)OM3D0rfxl{iw!l<6+iJt&NC2J^Fx8 zE{1&A);-U`*kN~5t3{E$N=Ja%18@QWtp7<2My4|{E`}P$)^&^FmAHnyT|o*ibHI;CykD<(>?i}D441o zLd6d#)j)g*;3Vku2K5>i4K_o?b_1G+jX8iRfCx|`>ze@|esKzLC{zJ}CevAfc@ClG zt-o$n0=fX2MSymF{J>gExH6(`a2x$WcCRNZr__Ui-mlPU$R{-BW?ot>SO=o(!C0CH%wQ>j=EpNS5CuL4EX_cC9-$^X92L6=mNiXPV}Xmc3~k7K9> zn+@BoQke^_PO{0q^jLVfVK?&pZR3~GEjxK@qhd7z+jITaZ4m{Yx15VdzVA6-%!38@?^fsaILQ$cSCA)w??sU)b|f~X>`oVC+zmkAQ@z=@OmQTo!GPu6*j6B0_85%)O ziJ-z$^puLa2t@5maOz3#GoeIy5$QDe4khF{n@E*OU^63fC7GLW$5MSR6K7c@lN{tR zaBVXKZkrj+(pl+t!|-?_R{^sVlPkeSk_n?Fj<}c~bcru8#v53^wrAqY_(+@JKqv(*O7I~V`U^mEjg5+=}$A{6y!|tPQ_!H+! z`b8b2%Rwh)bhSKm)^P9RwhoOW=Ty+C4-G*g@}Vv~L6mn%-Vz-K#QBT66qTUl9V!)( zIr&7+1L03=aKFMg5g(}9tbR#p`KDFAagDLJ*t_wLerM(OXl9DLv4I(eRu#7nDs6iJ28zwW>s}v662IvkMF)d^+&_8s zqIXnmWog!pFQgU*x;ZG7j`q5V(GJoP1X#3a45DRNS7mYX; kCW&LH;X!p-^>xkM#*3o)WciOhEv2zdGy!R@g?_mC7jp0x>;M1& diff --git a/gestao_raul/Lib/site-packages/pip/_internal/utils/__pycache__/logging.cpython-310.pyc b/gestao_raul/Lib/site-packages/pip/_internal/utils/__pycache__/logging.cpython-310.pyc index 7ab8644b3970376f67c2a2020a04209b1f1dbb04..1b55e3e1c01eeb7737eeba8824498c1fe3068187 100644 GIT binary patch delta 1622 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 delta 10558 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 diff --git a/gestao_raul/Lib/site-packages/pip/_internal/utils/__pycache__/models.cpython-310.pyc b/gestao_raul/Lib/site-packages/pip/_internal/utils/__pycache__/models.cpython-310.pyc deleted file mode 100644 index 3e377f5c5db159a6fb08daad5225342e7ae01acc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1987 zcmbVNOK;mo5Z(t#(Xu4liu1731Ox&U(4jGqOMoIM(zrlTv^5I2z7PVo6n7=j;VZkV zrgC+2en@)sf9NmawWpqYDSGM*X*sGJC4g7h;m)^@dF*_vqT6i~Xutk_GP!UF`2&^J z#zA=w-8=yyNk}A>ETtiZFHc#FTS0EiJAiD}$X&IqT;)y}SYYT0d_8$j?!k&3*@DFE zSG(V;`HRRXd01p+q}BJyFG+s(^aox1oJh!4T*HYe@*s}NXtd0tokliDOfbT|0nA3h zOEs@LqS>GXYFlENXc4E8F%?I&cMbHkvNN3@#dyujhGPc(5W3k0v7ieg$bx}{d>@kw zdNg1fuR^y#z}-1UrDN?QvH{|P=q`Nz`RVZU;fYb&3}36%7Q?TKc$TT$n&Ctl8x=xF zv-CgX?~>8bBvyS^M)AuCRt?LfJP=84mCmE|UXwN_a6OXp( z*@O3`_VIFUOkv%!;rJ?AdjemXEe9cLH2e4f{8O`+Q+5I&+!gJQTrElTMbzZo})AVf+wRt6kzKaN6#k=I_ zJy2`>9t_r7h3z-6Iss?jYjq!tVb>qDira5ubzQ9Y!Qz9DTfJGV>eZT9KLLxuN3G)a z%FC3U7V>|5N6y!Le+UC$05Bdnz>II9@R0eZd_hn7`BfP@RXZ_B4lK@NRX+n&@2Iff zWM!(5;z~Az;VT7MXXaXUU=2NjZtywjP>1%|I`&>x{h*J0%cBgkShaa8jB@e<&R8@r(amux-P*p(OdI;(Tr47M5Hbzb?c5OhtHYcPW zBA=^Dy~2$<2Y!aHl`8cgAP&ITh?ZH+=$ps)&FoL-!dZ)K+tSE>eLVNSa83K2C(q5K z)`jIU!Y{Dl8KNTWiT(|Co5ggsn69Bs-HN9R zN4zY$Eiqfvs#L3s#zfzp6R@Lon$tf6=kF_8*@4U)4Nq0@6)(4-#|)c_vYP%Vb>FlJ z-hSSA+yA6cs{RRvan#?8++>8~SoM3o4_h1QO=+)Q)0qV=#z8I+CD7=P>9MZ5i@8>= z@)+g`Wi=n;fyAREkeKVNQc*DqoXe%lg_$eZUjD}@xCPBpLk|ad8p~n#iP0|0*MvLm ztn4LYH;$rEWo8)pelYgsO1femLNh%xSC7h}Oa|`IJ;1CKjN?q-r`h6Ixs)%1R0nuaxc+uD1vY^O}?us>d>1RkXl7w5Z+~eOtV0O2zd&dzoDyUPo;Z5Yjlo; zj!`sAL>Q=JMzAhbIELA-F1UzKwRR54U{xf9c?}|orkW+Xnn;QCRJ($9UaTy+q~bCn ztM&^54oE#Wd$Hy=>{C6iPRT^@5NYap1>ZWsbEFjSq3hX>C2fBgB(>veQllL5lz}X& zr9PpA)L~(a?1|ey$KX9og%+tEdX~g9zb|owW3Q%2S7`}jvNEqlA7Oj# zN3ql{W!$y9XyL?@_RhDW7?bNk$|yrM*fIu?4Q`B0C(<8#3+=>lhReSev7z*>j@>y$ wSqXjD|C|3_V6BlO{2}f_=)a)~BMcZ6Ax#s&DW^1|1O4DCDdq3Hkb^w`1T7t0wg3PC diff --git a/gestao_raul/Lib/site-packages/pip/_internal/utils/__pycache__/retry.cpython-310.pyc b/gestao_raul/Lib/site-packages/pip/_internal/utils/__pycache__/retry.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..4b128485086636744750d90f1b75530845aeda9a GIT binary patch literal 1613 zcmZux-EJH;6t+D-JGXkk6*$L}CT+pH=h!~S^POM2T3ziC7{BcNHmxH<{=m)a z1GS$6*+XEGNUF&QXQpYvMyv=%0mXfw!y+0*MLdfAKGdBe86}jcSVpIG)K!U$VeZL} zT9FA*S4Hsascyz@lPSGk<35XJPp+JWqrRlOWYGT;tdpGqYx=b^*(9yzrBkMftX8T9 zak4G67W-N?oxNqPz7=Lbo9<&_M6p||w4r+qecXf#k-KKyx~iUt3;-rlX|Zf#qukt- zDMKrlBY-&u!r5*BlhhGM9YgmdyIyDEIXR~plYtD+`X}s|fy0sbof7g;rIit`GTc>M z%w1Iom#5(Al7mIF{^Hl`MLG0W4LN6VFkG-=IKC9K-;SeWa#@tY8HM{08PQ3hca+c7Gq1CvkY27MrZv~dP0w}kK>&tgwoh1 zK3L$~+5n`hf$f$6eGFv31m?&oIbmILlw6Qwl9OZlEB%o^CA%bqc3gf!3I6cZF}p=B z=s{@i{6HMLV5gLlXQZSH@?AKfJA=Sr08RJNt9ltU2I5ti%o^%?)(PV#*cTx0qZ}Uq z(*^c|{Pk>mYy6E>#*PER3jYCGUVe`yQ}3WR%f$+NWzU_bGeHULM_R zzq+q0=zaTO*nVV&SAsXN265B%x2&qPZ6Z8u4W{@yZi7`Fur^?)R+T6kuxL8pDZ-l-^+%GCQ*XjXY1p5K7gsfvhSi%y@0w~WvNFTDbzyAe0X`x#H literal 0 HcmV?d00001 diff --git a/gestao_raul/Lib/site-packages/pip/_internal/utils/__pycache__/setuptools_build.cpython-310.pyc b/gestao_raul/Lib/site-packages/pip/_internal/utils/__pycache__/setuptools_build.cpython-310.pyc index b6052256aa3120206c01df05980d1d6bceaa1008..24c0d191bca75b7f689f7fe1e0172931408ab631 100644 GIT binary patch delta 515 zcmYjLO-md>5bdt%shQc#j;aM%GA%Q{WC;^F}uJMq=LX_knOD=Y+f#`;wT@1@a zLlAEsq#-{bSHX+;H@tcl|3k=!CaH!IQcb<8_jpCW?~ku1XS&5=fl+;HpKh&{7`w6L z{~98)K%M$0Gtc?N$@al3PZi{d5-J#Hax|Y0Neh%?warLAlI26O9!XaPax8b)t9yqp zD{`D1Lz1ttxO)DT*ZhWT&2?U+m+TAgv5aLr1Idq_Pne+u>1@F>M!Tb{#6@<`g=BrMpOEHe zBKNpDA&%0^IZ{@?9hU@__1J+s5O9kw{6>Ud;K5Jy3qPPvfBi*(KR^x?(d|F~!DsIP delta 1300 zcmZWoOK;Oa5caO^^=p&1JWAhBS_qM)f{=>JLr6tEaHxbzIh2Yh%5Kx3#E#Y}w8d2f zLWoNbl@HvI_zji#0sM?`Li`0NCA7e-?VzeS+S&QWGqam-K7ScLn9Tc`jIF@);&8b< z(yJ(6B{=!?1Goz-Sli3rLgRbu&E^@dbE{ur2DjN+uEqYjbUzOorW*3Ej^h1c3j zmO(!2OEY9uC&Og@YydL4;tZ1Z?ergns-d*1bIvf=X8t=+wj4RpwvUanF=*S((2|my z*uQ~>%&DjIbF0e%7s2XtUTyfR_x#dEjeCt?wakM?(JzSNMs+{1CUCQ>;z6WZE%^0D z#rJ|1sSCbV*=%X+evP*>8v!rC5{01B;3eY(T_*TCtofKRFd-2n)C9S&yh05nR6-Q0 z4DG5rMrbh1)H0q`q#q``CPqVJhH0UezR;PnfkY0H^-xb^L|g?-n9(VY@^lKdqX)Ea zu1#E5Uaf7pZgT0{0>-N3Od;Ha>WAufoCoix0JgdWFZqHM)+$x*6@fEN_vf13DX$K2D!IM`F*8iKb>P4Sz!tO9I$JCPc9PCb zPX|ELV~BVRC=-%2)rn^c7Xb}s7a!)-g#4IysgstG%52+o-Gs00N!JZ3Ub)KMXP{Kj zp365ITzDYHEw@(mie=8WVZ@S6G1`PK5=m8xF#uv*Mqu1>8!8-^B*TB#WMI9A^j*ha#MrNv` zSWBs%64gkJi9D3$)WwB`Tu<~l^T?S19E(ZhquJ~<`WQXQt`so-O;mgg1xG~3zX-u? tY~Y{7v=8wZX!Z|*3=A1WvyX6BCvv)m#5MR3TlfdI@d0-5cS5t@{sNiqBzph= diff --git a/gestao_raul/Lib/site-packages/pip/_internal/utils/__pycache__/subprocess.cpython-310.pyc b/gestao_raul/Lib/site-packages/pip/_internal/utils/__pycache__/subprocess.cpython-310.pyc index 1d3351fb75dfd4444580265d4b1236e3d139960b..03d68e9b14867ce9e14817ba3e83c15bcf688e4d 100644 GIT binary patch delta 1350 zcmZuwO>Y}T7~Yv(+q?eCI(8DT?bwbJLpBX6ptO)GSSm?SD~gd?=pjm}jAvrDUGJLN zHR)lcNOeyjq(*Z=LJ=Rg(nC=raYy1u&=m;81?2>14i)cgD&kb^XrGyRpXYt&(R_UR z(v#(ko5>_4_`YpF>{a$Nv*?TcGxzsYnx+OV?qEYQq^%NpHm9W>*^r0^y+V>Cbx+wU zN1RFxLxL#ifi-|llMJwx|6wC7D6(V%6tkMHAuR|0ahue1(%d6?Ffd-UK&xbmro=L2 zn#_=6UTNw6C`wo6J82TI_|FxH{3KwpJ^_E}%0Mr5=|YNUQIwpAx{Q6x?p zhO{%Ika@BI?&b)(CYdiBi5+U2D*p@3C9YULWgVMm@jm|!KWgQG3)5Y<-|sl&W{35> zPzHP;F$0)?K3Ko7{k}(;x4lbk-`(DDyTd+pd~f^e)i*cS`GMS?5hc7dfTE}*Jg>>`xUAptZ;sn*fX<5p zBsGlHr>x0Gu}7=ItSPg+D53*|agTNx^;um+1Ut5La?Q3pABqlI=lJdT%7utu_)io~ zBa?YXKcOA_lz~@3=V5@X!WQ|H_|NEQn&Ga#NOe*YPG$$ed*R5$pmG% zEO85wiO*#uK};dK-|*)HX@o|Iw(HSQWwb+V%b{VMc|NlSY+A62 zH?W*g+3i?9o9B-w&M&&1y)b#bV-M*jV=gl*Yza7?(O=~odJC=c zk$yvu62}gX|E(9$>pYhG9u*FM$lXP{NMg$Z&I*|1m-4-LS561TVVRhT+sQr_VJ_7?pTXsH5NcL1C$A zLZA)bdvBQyc1f^T1kCc^3V-a0l3{B7`0ZVUr^m{I6dT1B1*d%Ix^^gAjvtw4L&2Qv t$%$Qct?!bdOQ9sy7#6^XWp(pbl7q$BuoMXu%=6IjCt8oxY!@n4l`F`@tf delta 1341 zcmZuwO>7%Q6yDk0I9_|#UjHQVUmV+sQ#K{2MQNc?6t#*&8mJ6X(?b(i*48s|T-IJQ zyQY;`DX8g%qC%@VqDu7Eo{ES>&%MHh146I}4%{jZa6+gD#G7@bv=O_~H*eney>H&m z&iwr9?Rm}Cw1@!DNB>-E|8-BBL=W#Bzq>m^>sY{HOYUYjvq&HcQAv(uw#BTF6*lwu zU{3PeQdYnb7-byA>MeP*5O4~~Wd+EB9@reP8jb-w`9Ex+1w|a|peQN{1??(H1s%L8 zC4pyg8X9=fbc{^laT4Xr;0c_;S%|}=#M{F;h+$C@8n%n`0S8Lp3J~isPQo|^WAR{| zBDtW^3@+jFt^3munG(_){9k84Sg`)bSXcFi7cnzZfs65u0&=74#QR~8$W973JO zbz-@8qh_}TUD9)%Mw>XUX*a1ku-J!EeWC<%M+K1OFp5YjQYBfW1@?>d6s6gHxdPuL z3|#|jnun>cEVW6G-00KgMfRJ#dWN?%r1|ngO={bwUDIv8*yKrIoe)4o5ykMobe1(n z9-rYghD6i6R0r@w4rx*1(lXBkj)%69C9C7OVA@}h_175l&Re{SNO7wH81}_M1m_^lX1+gxYM4nhxQO0 zqfiH7{f>0NCESV!wf(a=`7-O}Zz6C`1SUrlfDq|i+c#lL1IkoTalE6=Gn*EI+|nOY75E4R-Y0F{@^_Aw05qPst(g*3kn>I z5pu(&CacAsA%ndZKNfnEZ^avID?XW=fY6tney8Wl*UgSgXV~rd>F6?7@H-0o|6M%K z{)nFx=_!`g&!I)OrC+HAf+PDLZ<&_WbOu-Z)NT>SS!2KIUmv&2oLALnNC98PdZ zu~Mr2?x~lPufx<3DL-rU10KutNEuf=LX>jF;SUedL9a*X-|WX!{RBTdw8SCIVU&Xe z0LDR?%M(GZ!=pUgNSDx`Y>=MI%t4|K&&FHEG(FGR3ml5^Z#Dwei3r%Lo+C4nSB4BmTaE)Tl11NJlD? QMOD_tf>cbf`1srZ0gKr$Hvj+t diff --git a/gestao_raul/Lib/site-packages/pip/_internal/utils/__pycache__/temp_dir.cpython-310.pyc b/gestao_raul/Lib/site-packages/pip/_internal/utils/__pycache__/temp_dir.cpython-310.pyc index fbfa53469ab8aa2ec44e1390e2f9acfa41c31a29..09b1dc92870289d57d6f94a250129fa53cb48c84 100644 GIT binary patch delta 3510 zcmZuz-H#N<5ufgzot^#O``Y_H=D0gxgE{coI0geIhU1KlFdt_OlXI3~yZ6{*K2|-m zaCbVgR*uNd1F^{{d9W1e&WR!+zXe&!OC&2#dCfy!M#@W+e<4zg!KA9^js@&pRZVww zS9N#wud4bthaMd-c=>!rf!`Nrzg+y;cBjEID0fm(y)_J3VHP(`)w1c}cs^DVt@d-|Qy}ryB!& zaFduryoYHl#q_(>9Oh+~W*L@cxw{E-gpsy2%DcHfsPHkCKcet7EASF44k~rZO04US zx=zd;a|-KbJ$Dq=vrbKe5o;WD45`z*t;0diNIfAn`&e0O?gY(#HUOFfpgF-O))jLS zWP>aPvJ}Yrr=UB;hM_ymr`8kZE=DdYm633sOztO

>2SM(_H6L%%jPgu5XU9)+l zo@~^DC_TqrF08;4k$R@#2M<0a2MFm4zowIuL*VI$3nvaQyzg`2FWlmG;4Pf=YAuJm zfxmF!!dtT^!b0NG;BJ`c7l6@^^hAbGqLTvM`K=fUZzsMW< zG=h%lTw`hIXSiO^e5}+7V*F0t%3gFPQBs$%v6cz1}>gWsh;q?hL- zwF&r*wD`&;E~3(+?Og*PuT&k&wH7&x`WlO_CwR4HbIWZtt6T_A_%-brPhdN-MgGn3 zmE48bl50v;UsJ`QAkCB(@n_yqenEotMrKXfB$y5^N~+Marz+Vf>9?9-cW3xjZcqC) zuoQ#zb!_zki}DZ`TvTfwe3pZX7Q^u%j(4X27`v!*pG4^@Y}oSsYPAy-0>LMMd;?fU z*QrjlgsSRlhG}cfp9{Mx{ZA+UkO~|jK6Ul?At_eKWVp9@{k%M`M81p~4CW}c zbvKn{?3Yt$S4Q|8wxr7U_rsSlKWv2mDgKun45QM_L?=DSb3Csi-T+%)hWoo_3KUv8 z5Z<}}$I$B+?gUH02BbtxN*K2bJuU`iK zUamsSBn&RsR)6|EzsfuVmDp&w&-ob6880LqJ)ODYwTznO8opKM_R99HGy(&XXA9Q1 zSEefkA=3!DE=HmTf#(N)oLCTeB8d!P80Fuxd_KE<1u~flEdNpJy^FKx5$WbAwS}AQ zx?Dp8GF&Ze$@KL0acF)8XJhBVOo`zy2)p@r? zs_?u(IEpf*h-I9HAsJD={6ejgmr*9+^3YrxD-yP7TjOG(Qug`KT3+#s^z*~U}3t%m&OPh8bu}xG@>((g~QlF)CxSzGY&vk pyd*&#=|>!owQPQjfXqjYjH1JPKmM0Uj_e_&Z0L^cRF!tG_J7Z23Zei2 delta 2636 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 delta 732 zcmYjOJ&)5s5Z(1x9LEXh2ss@z6jxxKbU=edKnUrA1Wi&z$4OB{WU@;VX&s00`Xb<@ zH1sIs4_rFvkoXT&{DN&LC{X?Zx{4X!6yU(+4-aP*bzJ~{CwHh#7AO9VXetV4l zp~Loa@$d{IJ6#^^FPN~Dn|M8sGhquyl@h<_?)(pk+h? zQ9-0~RYyoDs)&SwcUe^1P{($}jo+E+NjiEva*)j8=JI|pT!>-vH|I2cD5 z*&R%RpRrR8o?u;e#?J99thFWVJ$BC5h(%8Of;Yj&QYct0<7P88(Z*HjTtdWwhWy5W zoVa*>)a)N;60-hWDxLOQ=`c^^RA>E>%yjIf1Bi3A`pX|jwUN{V)HTS4W0^?0o}q`# z=MJxP2yttiS**v)uRnQpmGT!4tB4itie{IoLUk3Y8|akyt|L$o)!hbC!S0Wi6>wf# zb?h%4nqy;8A{QbHO8ELAbc2>^xfB#e%2`*Qjov7(y&jlQ)O67|=lK zZ)#T%$agu~XFUCWHkpoq1~A?*O_1(Vm7QrQEQ4JlB=Rkf3NeLI{*xpXxsp$B)6dMP Ri;s@e6Y|h%*gIY$_z#BPsowwq diff --git a/gestao_raul/Lib/site-packages/pip/_internal/utils/__pycache__/virtualenv.cpython-310.pyc b/gestao_raul/Lib/site-packages/pip/_internal/utils/__pycache__/virtualenv.cpython-310.pyc index 2f0c3faefbf793b3a996c7b6490890a5e0fabe53..52175ccf35adca8bcc2ada0c25d6830e3f350499 100644 GIT binary patch delta 37 rcmcaEc~O!(pO=@50SFfPt=`DZ&%_uvS(-_bH7Ll*)p@f$(+n;Eu80W| delta 43 xcmca8d0mn_pO=@50SKypgl^>KXJSm5EX^dzot|1;l9(S~lvtXx*^+4n7XbgH3~c}a diff --git a/gestao_raul/Lib/site-packages/pip/_internal/utils/__pycache__/wheel.cpython-310.pyc b/gestao_raul/Lib/site-packages/pip/_internal/utils/__pycache__/wheel.cpython-310.pyc index cb0f66561a7ef6ef659693045dd8517c98a2f0c0..1883aad0beb5a8f94f460924909dffd93c91c4d3 100644 GIT binary patch delta 781 zcmZvaO=}ZT6o%)_S0>X*o0_DFE!s;zgow5)ix#wK8+0LAw5Ujf;kI*|4x}^n&TV5$ zs-ob+g$NhighFvAS!uQ+{*H0u!i5WeK{s{Iw2N9Cn3uUP=RD`kJM(qyU@Q}4GPV+5 zAFJKQyU&?JfG5&YC$1KBMQA&dpzIl-?52g*hK}Mw+vq6!+G}_PuDWMDH(JnAgf5rW zZzDyrPD4U{;`!UO>A9q}&RFvbsg@0SU7M9JwE2lbJn8W9{A}$($aq+5v8D)W3&HBv z2J=N&TU@+TnU{aGW#=4NFV!Pkvs7M`OZp_dkvsb4$ZY|x-PSv*+t)Tb>b{PfwDl#W z?0hjC=tDkFWJngx54n-}96@+&o%r9)eJIGEYN5DWAa1}y;s=6+f^tDxo>(XHeQL;x z%(Z}TP$9di;n5Oe`;e6iw^m$_hf&(|*Md4e@<9fw z*X3QSS507-u_ll5Z(mg6jJowCy7~qa)TM&f*SsdHAk2wH1qbq4J_(3V_3ouh08^6M zGYbiM8li}f`j08AfiE!K$UZ&`_DuY5H1Cg_s=XifCd>_Ezx|Llw^)VqfR{CX4J~Io z{%l_0*AqxCw$AL&2V#%Pw+?|^uj_PGn30bL?pMaKbOPl@ERhxp9+}Oc(O^7EwJ7&J zzfo3sLd2lYVzaULRQ?_qg{-u)2XIq<%3hqig_T7Vj5{(`b_5Ig6dL$4d=>>a;@E$R SdGafmgVU+eq4aQWEc+K=(7K-h delta 757 zcmZ9J!E4iS6vz9LUz03NZQa&wt=4688`KRdJ51=n9o+CDBFF@>u*EfY(JUD+zpc); zA{%%U4?plG)bl`)UPVvdcJr1$K|OdJyUgEfJ(LB0AKvffeZTMJr8E6?Ivu9dWcJc&+DS;fGPzoV4r>8VwvtEiNjZW;s44B_>tq8O39gC9 z%D2fY&9=SmM79&yUa;@@Ud?W7yRN@rH{171x>!^zmi8>f9f!wi#8JFZS8t5V=4Tss zD%JJK#i-hFeI8azp?H{emV?nc}RH_+Mh#ZUE#H44TX<=j*a1@of9X5mn5vfc3& z4mGo*wpdH+57%N36Qxx5H?tr`EwG0Pp=cjQit-*q)KC4-A8Q|BQT)|%tT}~kv8m@O z6qNMX2%H_)_vE|==~UkhFiR189(n=l6q<5KRbaWhFf;*B7Hj5G zs^@T%#Pi~Le)B(_9g*^ukLw~iIKC6+Vy)@U&}OQ;YoOT?NV*6S|Ddc(oM3+g4M@0g;B3%0{D z7m1V1Bn*o`nGW0*@3Plc$OiKS+FzV}dcfTX%aovx!DRwXgrpzv?72^fU)i!gH8xZj Hna=(L$l0$x diff --git a/gestao_raul/Lib/site-packages/pip/_internal/utils/_jaraco_text.py b/gestao_raul/Lib/site-packages/pip/_internal/utils/_jaraco_text.py new file mode 100644 index 0000000..6ccf53b --- /dev/null +++ b/gestao_raul/Lib/site-packages/pip/_internal/utils/_jaraco_text.py @@ -0,0 +1,109 @@ +"""Functions brought over from jaraco.text. + +These functions are not supposed to be used within `pip._internal`. These are +helper functions brought over from `jaraco.text` to enable vendoring newer +copies of `pkg_resources` without having to vendor `jaraco.text` and its entire +dependency cone; something that our vendoring setup is not currently capable of +handling. + +License reproduced from original source below: + +Copyright Jason R. Coombs + +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. +""" + +import functools +import itertools + + +def _nonblank(str): + return str and not str.startswith("#") + + +@functools.singledispatch +def yield_lines(iterable): + r""" + Yield valid lines of a string or iterable. + + >>> list(yield_lines('')) + [] + >>> list(yield_lines(['foo', 'bar'])) + ['foo', 'bar'] + >>> list(yield_lines('foo\nbar')) + ['foo', 'bar'] + >>> list(yield_lines('\nfoo\n#bar\nbaz #comment')) + ['foo', 'baz #comment'] + >>> list(yield_lines(['foo\nbar', 'baz', 'bing\n\n\n'])) + ['foo', 'bar', 'baz', 'bing'] + """ + return itertools.chain.from_iterable(map(yield_lines, iterable)) + + +@yield_lines.register(str) +def _(text): + return filter(_nonblank, map(str.strip, text.splitlines())) + + +def drop_comment(line): + """ + Drop comments. + + >>> drop_comment('foo # bar') + 'foo' + + A hash without a space may be in a URL. + + >>> drop_comment('http://example.com/foo#bar') + 'http://example.com/foo#bar' + """ + return line.partition(" #")[0] + + +def join_continuation(lines): + r""" + Join lines continued by a trailing backslash. + + >>> list(join_continuation(['foo \\', 'bar', 'baz'])) + ['foobar', 'baz'] + >>> list(join_continuation(['foo \\', 'bar', 'baz'])) + ['foobar', 'baz'] + >>> list(join_continuation(['foo \\', 'bar \\', 'baz'])) + ['foobarbaz'] + + Not sure why, but... + The character preceding the backslash is also elided. + + >>> list(join_continuation(['goo\\', 'dly'])) + ['godly'] + + A terrible idea, but... + If no line is available to continue, suppress the lines. + + >>> list(join_continuation(['foo', 'bar\\', 'baz\\'])) + ['foo'] + """ + lines = iter(lines) + for item in lines: + while item.endswith("\\"): + try: + item = item[:-2].strip() + next(lines) + except StopIteration: + return + yield item diff --git a/gestao_raul/Lib/site-packages/pip/_internal/utils/compat.py b/gestao_raul/Lib/site-packages/pip/_internal/utils/compat.py index 3f4d300..d8b54e4 100644 --- a/gestao_raul/Lib/site-packages/pip/_internal/utils/compat.py +++ b/gestao_raul/Lib/site-packages/pip/_internal/utils/compat.py @@ -1,9 +1,11 @@ """Stuff that differs in different Python versions and platform distributions.""" +import importlib.resources import logging import os import sys +from typing import IO __all__ = ["get_path_uid", "stdlib_pkgs", "WINDOWS"] @@ -51,6 +53,20 @@ def get_path_uid(path: str) -> int: return file_uid +# The importlib.resources.open_text function was deprecated in 3.11 with suggested +# replacement we use below. +if sys.version_info < (3, 11): + open_text_resource = importlib.resources.open_text +else: + + def open_text_resource( + package: str, resource: str, encoding: str = "utf-8", errors: str = "strict" + ) -> IO[str]: + return (importlib.resources.files(package) / resource).open( + "r", encoding=encoding, errors=errors + ) + + # 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']`, diff --git a/gestao_raul/Lib/site-packages/pip/_internal/utils/compatibility_tags.py b/gestao_raul/Lib/site-packages/pip/_internal/utils/compatibility_tags.py index b6ed9a7..2e7b745 100644 --- a/gestao_raul/Lib/site-packages/pip/_internal/utils/compatibility_tags.py +++ b/gestao_raul/Lib/site-packages/pip/_internal/utils/compatibility_tags.py @@ -12,10 +12,11 @@ from pip._vendor.packaging.tags import ( generic_tags, interpreter_name, interpreter_version, + ios_platforms, mac_platforms, ) -_osx_arch_pat = re.compile(r"(.+)_(\d+)_(\d+)_(.+)") +_apple_arch_pat = re.compile(r"(.+)_(\d+)_(\d+)_(.+)") def version_info_to_nodot(version_info: Tuple[int, ...]) -> str: @@ -24,7 +25,7 @@ def version_info_to_nodot(version_info: Tuple[int, ...]) -> str: def _mac_platforms(arch: str) -> List[str]: - match = _osx_arch_pat.match(arch) + match = _apple_arch_pat.match(arch) if match: name, major, minor, actual_arch = match.groups() mac_version = (int(major), int(minor)) @@ -43,6 +44,26 @@ def _mac_platforms(arch: str) -> List[str]: return arches +def _ios_platforms(arch: str) -> List[str]: + match = _apple_arch_pat.match(arch) + if match: + name, major, minor, actual_multiarch = match.groups() + ios_version = (int(major), int(minor)) + arches = [ + # Since we have always only checked that the platform starts + # with "ios", for backwards-compatibility we extract the + # actual prefix provided by the user in case they provided + # something like "ioscustom_". It may be good to remove + # this as undocumented or deprecate it in the future. + "{}_{}".format(name, arch[len("ios_") :]) + for arch in ios_platforms(ios_version, actual_multiarch) + ] + 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("_") @@ -68,6 +89,8 @@ 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.startswith("ios"): + arches = _ios_platforms(arch) elif arch_prefix in ["manylinux2014", "manylinux2010"]: arches = _custom_manylinux_platforms(arch) else: diff --git a/gestao_raul/Lib/site-packages/pip/_internal/utils/deprecation.py b/gestao_raul/Lib/site-packages/pip/_internal/utils/deprecation.py index 18e9be9..0911147 100644 --- a/gestao_raul/Lib/site-packages/pip/_internal/utils/deprecation.py +++ b/gestao_raul/Lib/site-packages/pip/_internal/utils/deprecation.py @@ -87,9 +87,11 @@ def deprecated( (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.", + ( + "pip {} will enforce this behaviour change." + if not is_gone + else "Since pip {}, this is no longer supported." + ), ), ( replacement, @@ -97,9 +99,11 @@ def deprecated( ), ( feature_flag, - "You can use the flag --use-feature={} to test the upcoming behaviour." - if not is_gone - else None, + ( + "You can use the flag --use-feature={} to test the upcoming behaviour." + if not is_gone + else None + ), ), ( issue, @@ -118,71 +122,3 @@ def deprecated( raise PipDeprecationWarning(message) warnings.warn(message, category=PipDeprecationWarning, stacklevel=2) - - -class LegacyInstallReason: - def __init__( - self, - reason: str, - replacement: Optional[str] = None, - gone_in: Optional[str] = None, - feature_flag: Optional[str] = None, - issue: Optional[int] = None, - emit_after_success: bool = False, - emit_before_install: bool = False, - ): - self._reason = reason - self._replacement = replacement - self._gone_in = gone_in - self._feature_flag = feature_flag - self._issue = issue - self.emit_after_success = emit_after_success - self.emit_before_install = emit_before_install - - def emit_deprecation(self, name: str) -> None: - deprecated( - reason=self._reason.format(name=name), - replacement=self._replacement, - gone_in=self._gone_in, - feature_flag=self._feature_flag, - issue=self._issue, - ) - - -LegacyInstallReasonFailedBdistWheel = LegacyInstallReason( - reason=( - "{name} was installed using the legacy 'setup.py install' " - "method, because a wheel could not be built for it." - ), - replacement="to fix the wheel build issue reported above", - gone_in="23.1", - issue=8368, - emit_after_success=True, -) - - -LegacyInstallReasonMissingWheelPackage = LegacyInstallReason( - reason=( - "{name} is being installed using the legacy " - "'setup.py install' method, because it does not have a " - "'pyproject.toml' and the 'wheel' package " - "is not installed." - ), - replacement="to enable the '--use-pep517' option", - gone_in="23.1", - issue=8559, - emit_before_install=True, -) - -LegacyInstallReasonNoBinaryForcesSetuptoolsInstall = LegacyInstallReason( - reason=( - "{name} is being installed using the legacy " - "'setup.py install' method, because the '--no-binary' option was enabled " - "for it and this currently disables local wheel building for projects that " - "don't have a 'pyproject.toml' file." - ), - replacement="to enable the '--use-pep517' option", - gone_in="23.1", - issue=11451, - emit_before_install=True, -) diff --git a/gestao_raul/Lib/site-packages/pip/_internal/utils/direct_url_helpers.py b/gestao_raul/Lib/site-packages/pip/_internal/utils/direct_url_helpers.py index 0e8e5e1..66020d3 100644 --- a/gestao_raul/Lib/site-packages/pip/_internal/utils/direct_url_helpers.py +++ b/gestao_raul/Lib/site-packages/pip/_internal/utils/direct_url_helpers.py @@ -12,8 +12,8 @@ def direct_url_as_pep440_direct_reference(direct_url: DirectUrl, name: str) -> s requirement = name + " @ " fragments = [] if isinstance(direct_url.info, VcsInfo): - requirement += "{}+{}@{}".format( - direct_url.info.vcs, direct_url.url, direct_url.info.commit_id + requirement += ( + f"{direct_url.info.vcs}+{direct_url.url}@{direct_url.info.commit_id}" ) elif isinstance(direct_url.info, ArchiveInfo): requirement += direct_url.url diff --git a/gestao_raul/Lib/site-packages/pip/_internal/utils/distutils_args.py b/gestao_raul/Lib/site-packages/pip/_internal/utils/distutils_args.py deleted file mode 100644 index 2fd1862..0000000 --- a/gestao_raul/Lib/site-packages/pip/_internal/utils/distutils_args.py +++ /dev/null @@ -1,43 +0,0 @@ -from getopt import GetoptError, getopt -from typing import Dict, List - -_options = [ - "exec-prefix=", - "home=", - "install-base=", - "install-data=", - "install-headers=", - "install-lib=", - "install-platlib=", - "install-purelib=", - "install-scripts=", - "prefix=", - "root=", - "user", -] - - -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: - parsed_opt, _ = getopt(args=[arg], shortopts="", longopts=_options) - except GetoptError: - # We don't care about any other options, which here may be - # considered unrecognized since our option list is not - # exhaustive. - continue - - if not parsed_opt: - continue - - option = parsed_opt[0] - name_from_parsed = option[0][2:].replace("-", "_") - value_from_parsed = option[1] or "true" - result[name_from_parsed] = value_from_parsed - - return result diff --git a/gestao_raul/Lib/site-packages/pip/_internal/utils/egg_link.py b/gestao_raul/Lib/site-packages/pip/_internal/utils/egg_link.py index eb57ed1..4a384a6 100644 --- a/gestao_raul/Lib/site-packages/pip/_internal/utils/egg_link.py +++ b/gestao_raul/Lib/site-packages/pip/_internal/utils/egg_link.py @@ -15,24 +15,31 @@ __all__ = [ ] -def _egg_link_name(raw_name: str) -> str: +def _egg_link_names(raw_name: str) -> List[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. + + We also look for the raw name (without normalization) as setuptools 69 changed + the way it names .egg-link files (https://github.com/pypa/setuptools/issues/4167). """ - return re.sub("[^A-Za-z0-9.]+", "-", raw_name) + ".egg-link" + return [ + re.sub("[^A-Za-z0-9.]+", "-", raw_name) + ".egg-link", + f"{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) + egg_link_names = _egg_link_names(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 + for egg_link_name in egg_link_names: + egg_link = os.path.join(path_item, egg_link_name) + if os.path.isfile(egg_link): + return egg_link return None @@ -64,9 +71,10 @@ def egg_link_path_from_location(raw_name: str) -> Optional[str]: sites.append(user_site) sites.append(site_packages) - egg_link_name = _egg_link_name(raw_name) + egg_link_names = _egg_link_names(raw_name) for site in sites: - egglink = os.path.join(site, egg_link_name) - if os.path.isfile(egglink): - return egglink + for egg_link_name in egg_link_names: + egglink = os.path.join(site, egg_link_name) + if os.path.isfile(egglink): + return egglink return None diff --git a/gestao_raul/Lib/site-packages/pip/_internal/utils/encoding.py b/gestao_raul/Lib/site-packages/pip/_internal/utils/encoding.py deleted file mode 100644 index 008f06a..0000000 --- a/gestao_raul/Lib/site-packages/pip/_internal/utils/encoding.py +++ /dev/null @@ -1,36 +0,0 @@ -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(rb"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/gestao_raul/Lib/site-packages/pip/_internal/utils/filesystem.py b/gestao_raul/Lib/site-packages/pip/_internal/utils/filesystem.py index 83c2df7..22e356c 100644 --- a/gestao_raul/Lib/site-packages/pip/_internal/utils/filesystem.py +++ b/gestao_raul/Lib/site-packages/pip/_internal/utils/filesystem.py @@ -7,10 +7,9 @@ from contextlib import contextmanager from tempfile import NamedTemporaryFile from typing import Any, BinaryIO, Generator, 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 +from pip._internal.utils.retry import retry def check_path_owner(path: str) -> bool: @@ -65,10 +64,7 @@ def adjacent_tmp_file(path: str, **kwargs: Any) -> Generator[BinaryIO, None, Non 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) +replace = retry(stop_after_delay=1, wait=0.25)(os.replace) # test_writable_dir and _test_writable_dir_win are copied from Flit, diff --git a/gestao_raul/Lib/site-packages/pip/_internal/utils/glibc.py b/gestao_raul/Lib/site-packages/pip/_internal/utils/glibc.py index 7bd3c20..998868f 100644 --- a/gestao_raul/Lib/site-packages/pip/_internal/utils/glibc.py +++ b/gestao_raul/Lib/site-packages/pip/_internal/utils/glibc.py @@ -1,6 +1,3 @@ -# 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 @@ -20,8 +17,11 @@ def glibc_version_string_confstr() -> Optional[str]: if sys.platform == "win32": return None try: + gnu_libc_version = os.confstr("CS_GNU_LIBC_VERSION") + if gnu_libc_version is None: + return None # os.confstr("CS_GNU_LIBC_VERSION") returns a string like "glibc 2.17": - _, version = os.confstr("CS_GNU_LIBC_VERSION").split() + _, version = gnu_libc_version.split() except (AttributeError, OSError, ValueError): # os.confstr() or CS_GNU_LIBC_VERSION not available (or a bad value)... return None @@ -40,7 +40,20 @@ def glibc_version_string_ctypes() -> Optional[str]: # 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) + # + # We must also handle the special case where the executable is not a + # dynamically linked executable. This can occur when using musl libc, + # for example. In this situation, dlopen() will error, leading to an + # OSError. Interestingly, at least in the case of musl, there is no + # errno set on the OSError. The single string argument used to construct + # OSError comes from libc itself and is therefore not portable to + # hard code here. In any case, failure to call dlopen() means we + # can't proceed, so we bail on our attempt. + try: + process_namespace = ctypes.CDLL(None) + except OSError: + return None + try: gnu_get_libc_version = process_namespace.gnu_get_libc_version except AttributeError: @@ -50,7 +63,7 @@ def glibc_version_string_ctypes() -> Optional[str]: # 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() + version_str: str = gnu_get_libc_version() # py2 / py3 compatibility: if not isinstance(version_str, str): version_str = version_str.decode("ascii") diff --git a/gestao_raul/Lib/site-packages/pip/_internal/utils/hashes.py b/gestao_raul/Lib/site-packages/pip/_internal/utils/hashes.py index 7672730..535e94f 100644 --- a/gestao_raul/Lib/site-packages/pip/_internal/utils/hashes.py +++ b/gestao_raul/Lib/site-packages/pip/_internal/utils/hashes.py @@ -1,5 +1,5 @@ import hashlib -from typing import TYPE_CHECKING, BinaryIO, Dict, Iterable, List, Optional +from typing import TYPE_CHECKING, BinaryIO, Dict, Iterable, List, NoReturn, Optional from pip._internal.exceptions import HashMismatch, HashMissing, InstallationError from pip._internal.utils.misc import read_chunks @@ -7,10 +7,6 @@ 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. @@ -37,7 +33,7 @@ class Hashes: 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) + allowed[alg] = [k.lower() for k in sorted(keys)] self._allowed = allowed def __and__(self, other: "Hashes") -> "Hashes": @@ -105,6 +101,13 @@ class Hashes: with open(path, "rb") as file: return self.check_against_file(file) + def has_one_of(self, hashes: Dict[str, str]) -> bool: + """Return whether any of the given hashes are allowed.""" + for hash_name, hex_digest in hashes.items(): + if self.is_hash_allowed(hash_name, hex_digest): + return True + return False + def __bool__(self) -> bool: """Return whether I know any known-good hashes.""" return bool(self._allowed) diff --git a/gestao_raul/Lib/site-packages/pip/_internal/utils/inject_securetransport.py b/gestao_raul/Lib/site-packages/pip/_internal/utils/inject_securetransport.py deleted file mode 100644 index 276aa79..0000000 --- a/gestao_raul/Lib/site-packages/pip/_internal/utils/inject_securetransport.py +++ /dev/null @@ -1,35 +0,0 @@ -"""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/gestao_raul/Lib/site-packages/pip/_internal/utils/logging.py b/gestao_raul/Lib/site-packages/pip/_internal/utils/logging.py index c10e1f4..62035fc 100644 --- a/gestao_raul/Lib/site-packages/pip/_internal/utils/logging.py +++ b/gestao_raul/Lib/site-packages/pip/_internal/utils/logging.py @@ -137,12 +137,19 @@ class IndentedRenderable: yield Segment("\n") +class PipConsole(Console): + def on_broken_pipe(self) -> None: + # Reraise the original exception, rich 13.8.0+ exits by default + # instead, preventing our handler from firing. + raise BrokenPipeError() from None + + class RichPipStreamHandler(RichHandler): KEYWORDS: ClassVar[Optional[List[str]]] = [] def __init__(self, stream: Optional[TextIO], no_color: bool) -> None: super().__init__( - console=Console(file=stream, no_color=no_color, soft_wrap=True), + console=PipConsole(file=stream, no_color=no_color, soft_wrap=True), show_time=False, show_level=False, show_path=False, @@ -154,9 +161,9 @@ class RichPipStreamHandler(RichHandler): style: Optional[Style] = None # If we are given a diagnostic error to present, present it with indentation. - assert isinstance(record.args, tuple) - if record.msg == "[present-rich] %s" and len(record.args) == 1: - rich_renderable = record.args[0] + if getattr(record, "rich", False): + assert isinstance(record.args, tuple) + (rich_renderable,) = record.args assert isinstance( rich_renderable, (ConsoleRenderable, RichCast, str) ), f"{rich_renderable} is not rich-console-renderable" @@ -212,7 +219,6 @@ class MaxLevelFilter(Filter): class ExcludeLoggerFilter(Filter): - """ A logging Filter that excludes records from a logger (or its children). """ diff --git a/gestao_raul/Lib/site-packages/pip/_internal/utils/misc.py b/gestao_raul/Lib/site-packages/pip/_internal/utils/misc.py index baa1ba7..44f6a05 100644 --- a/gestao_raul/Lib/site-packages/pip/_internal/utils/misc.py +++ b/gestao_raul/Lib/site-packages/pip/_internal/utils/misc.py @@ -1,11 +1,6 @@ -# 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 @@ -14,34 +9,39 @@ import stat import sys import sysconfig import urllib.parse +from dataclasses import dataclass +from functools import partial from io import StringIO from itertools import filterfalse, tee, zip_longest -from types import TracebackType +from pathlib import Path +from types import FunctionType, TracebackType from typing import ( Any, BinaryIO, Callable, - ContextManager, - Dict, Generator, Iterable, Iterator, List, + Mapping, Optional, + Sequence, TextIO, Tuple, Type, TypeVar, + Union, cast, ) +from pip._vendor.packaging.requirements import Requirement from pip._vendor.pyproject_hooks import BuildBackendHookCaller -from pip._vendor.tenacity import retry, stop_after_delay, wait_fixed from pip import __version__ from pip._internal.exceptions import CommandError, ExternallyManagedEnvironment from pip._internal.locations import get_major_minor_version from pip._internal.utils.compat import WINDOWS +from pip._internal.utils.retry import retry from pip._internal.utils.virtualenv import running_under_virtualenv __all__ = [ @@ -55,7 +55,6 @@ __all__ = [ "normalize_path", "renames", "get_prog", - "captured_stdout", "ensure_dir", "remove_auth_from_url", "check_externally_managed", @@ -68,17 +67,17 @@ T = TypeVar("T") ExcInfo = Tuple[Type[BaseException], BaseException, TracebackType] VersionInfo = Tuple[int, int, int] NetlocTuple = Tuple[str, Tuple[Optional[str], Optional[str]]] +OnExc = Callable[[FunctionType, Path, BaseException], Any] +OnErr = Callable[[FunctionType, Path, ExcInfo], Any] + +FILE_CHUNK_SIZE = 1024 * 1024 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(), - ) + return f"pip {__version__} from {pip_pkg_dir} (python {get_major_minor_version()})" def normalize_version_info(py_version_info: Tuple[int, ...]) -> Tuple[int, int, int]: @@ -123,30 +122,69 @@ def get_prog() -> str: # 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) +@retry(stop_after_delay=3, wait=0.5) +def rmtree( + dir: str, ignore_errors: bool = False, onexc: Optional[OnExc] = None +) -> None: + if ignore_errors: + onexc = _onerror_ignore + if onexc is None: + onexc = _onerror_reraise + handler: OnErr = partial(rmtree_errorhandler, onexc=onexc) + if sys.version_info >= (3, 12): + # See https://docs.python.org/3.12/whatsnew/3.12.html#shutil. + shutil.rmtree(dir, onexc=handler) # type: ignore + else: + shutil.rmtree(dir, onerror=handler) # type: ignore -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.""" +def _onerror_ignore(*_args: Any) -> None: + pass + + +def _onerror_reraise(*_args: Any) -> None: + raise # noqa: PLE0704 - Bare exception used to reraise existing exception + + +def rmtree_errorhandler( + func: FunctionType, + path: Path, + exc_info: Union[ExcInfo, BaseException], + *, + onexc: OnExc = _onerror_reraise, +) -> None: + """ + `rmtree` error handler to 'force' a file remove (i.e. like `rm -f`). + + * If a file is readonly then it's write flag is set and operation is + retried. + + * `onerror` is the original callback from `rmtree(... onerror=onerror)` + that is chained at the end if the "rm -f" still fails. + """ try: - has_attr_readonly = not (os.stat(path).st_mode & stat.S_IWRITE) + st_mode = os.stat(path).st_mode except OSError: # it's equivalent to os.path.exists return - if has_attr_readonly: + if not st_mode & stat.S_IWRITE: # convert to read/write - os.chmod(path, stat.S_IWRITE) - # use the original function to repeat the operation - func(path) - return - else: - raise + try: + os.chmod(path, st_mode | stat.S_IWRITE) + except OSError: + pass + else: + # use the original function to repeat the operation + try: + func(path) + return + except OSError: + pass + + if not isinstance(exc_info, BaseException): + _, exc_info, _ = exc_info + onexc(func, path, exc_info) def display_path(path: str) -> str: @@ -229,13 +267,13 @@ def strtobool(val: str) -> int: def format_size(bytes: float) -> str: if bytes > 1000 * 1000: - return "{:.1f} MB".format(bytes / 1000.0 / 1000) + return f"{bytes / 1000.0 / 1000:.1f} MB" elif bytes > 10 * 1000: - return "{} kB".format(int(bytes / 1000)) + return f"{int(bytes / 1000)} kB" elif bytes > 1000: - return "{:.1f} kB".format(bytes / 1000.0) + return f"{bytes / 1000.0:.1f} kB" else: - return "{} bytes".format(int(bytes)) + return f"{int(bytes)} bytes" def tabulate(rows: Iterable[Iterable[Any]]) -> Tuple[List[str], List[int]]: @@ -270,7 +308,7 @@ def is_installable_dir(path: str) -> bool: def read_chunks( - file: BinaryIO, size: int = io.DEFAULT_BUFFER_SIZE + file: BinaryIO, size: int = FILE_CHUNK_SIZE ) -> Generator[bytes, None, None]: """Yield pieces of data from a file-like object until EOF.""" while True: @@ -338,54 +376,21 @@ def write_output(msg: Any, *args: Any) -> None: class StreamWrapper(StringIO): - orig_stream: TextIO = None + orig_stream: TextIO @classmethod def from_stream(cls, orig_stream: TextIO) -> "StreamWrapper": - cls.orig_stream = orig_stream - return cls() + ret = cls() + ret.orig_stream = orig_stream + return ret # compileall.compile_dir() needs stdout.encoding to print to stdout - # https://github.com/python/mypy/issues/4125 + # type ignore is because TextIOBase.encoding is writeable @property - def encoding(self): # type: ignore + def encoding(self) -> str: # type: ignore return self.orig_stream.encoding -@contextlib.contextmanager -def captured_output(stream_name: str) -> Generator[StreamWrapper, None, None]: - """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) @@ -416,7 +421,7 @@ def build_url_from_netloc(netloc: str, scheme: str = "https") -> str: return f"{scheme}://{netloc}" -def parse_netloc(netloc: str) -> Tuple[str, Optional[int]]: +def parse_netloc(netloc: str) -> Tuple[Optional[str], Optional[int]]: """ Return the host-port pair from a netloc. """ @@ -471,9 +476,7 @@ def redact_netloc(netloc: str) -> str: else: user = urllib.parse.quote(user) password = ":****" - return "{user}{password}@{netloc}".format( - user=user, password=password, netloc=netloc - ) + return f"{user}{password}@{netloc}" def _transform_url( @@ -504,7 +507,9 @@ 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]]: +def split_auth_netloc_from_url( + url: str, +) -> Tuple[str, str, Tuple[Optional[str], Optional[str]]]: """ Parse a url into separate netloc, auth, and url with no auth. @@ -526,20 +531,27 @@ def redact_auth_from_url(url: str) -> str: return _transform_url(url, _redact_netloc)[0] +def redact_auth_from_requirement(req: Requirement) -> str: + """Replace the password in a given requirement url with ****.""" + if not req.url: + return str(req) + return str(req).replace(req.url, redact_auth_from_url(req.url)) + + +@dataclass(frozen=True) class HiddenText: - def __init__(self, secret: str, redacted: str) -> None: - self.secret = secret - self.redacted = redacted + secret: str + redacted: str def __repr__(self) -> str: - return "".format(str(self)) + return f"" def __str__(self) -> str: return self.redacted # This is useful for testing. def __eq__(self, other: Any) -> bool: - if type(self) != type(other): + if type(self) is not type(other): return False # The string being used for redaction doesn't also have to match, @@ -614,18 +626,6 @@ def hash_file(path: str, blocksize: int = 1 << 20) -> Tuple[Any, int]: 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. @@ -638,8 +638,7 @@ def pairwise(iterable: Iterable[Any]) -> Iterator[Tuple[Any, Any]]: def partition( - pred: Callable[[T], bool], - iterable: Iterable[T], + pred: Callable[[T], bool], iterable: Iterable[T] ) -> Tuple[Iterable[T], Iterable[T]]: """ Use a predicate to partition entries into false entries and true entries, @@ -669,7 +668,7 @@ class ConfiguredBuildBackendHookCaller(BuildBackendHookCaller): def build_wheel( self, wheel_directory: str, - config_settings: Optional[Dict[str, str]] = None, + config_settings: Optional[Mapping[str, Any]] = None, metadata_directory: Optional[str] = None, ) -> str: cs = self.config_holder.config_settings @@ -678,7 +677,9 @@ class ConfiguredBuildBackendHookCaller(BuildBackendHookCaller): ) def build_sdist( - self, sdist_directory: str, config_settings: Optional[Dict[str, str]] = None + self, + sdist_directory: str, + config_settings: Optional[Mapping[str, Any]] = None, ) -> str: cs = self.config_holder.config_settings return super().build_sdist(sdist_directory, config_settings=cs) @@ -686,7 +687,7 @@ class ConfiguredBuildBackendHookCaller(BuildBackendHookCaller): def build_editable( self, wheel_directory: str, - config_settings: Optional[Dict[str, str]] = None, + config_settings: Optional[Mapping[str, Any]] = None, metadata_directory: Optional[str] = None, ) -> str: cs = self.config_holder.config_settings @@ -695,27 +696,27 @@ class ConfiguredBuildBackendHookCaller(BuildBackendHookCaller): ) def get_requires_for_build_wheel( - self, config_settings: Optional[Dict[str, str]] = None - ) -> List[str]: + self, config_settings: Optional[Mapping[str, Any]] = None + ) -> Sequence[str]: cs = self.config_holder.config_settings return super().get_requires_for_build_wheel(config_settings=cs) def get_requires_for_build_sdist( - self, config_settings: Optional[Dict[str, str]] = None - ) -> List[str]: + self, config_settings: Optional[Mapping[str, Any]] = None + ) -> Sequence[str]: cs = self.config_holder.config_settings return super().get_requires_for_build_sdist(config_settings=cs) def get_requires_for_build_editable( - self, config_settings: Optional[Dict[str, str]] = None - ) -> List[str]: + self, config_settings: Optional[Mapping[str, Any]] = None + ) -> Sequence[str]: cs = self.config_holder.config_settings return super().get_requires_for_build_editable(config_settings=cs) def prepare_metadata_for_build_wheel( self, metadata_directory: str, - config_settings: Optional[Dict[str, str]] = None, + config_settings: Optional[Mapping[str, Any]] = None, _allow_fallback: bool = True, ) -> str: cs = self.config_holder.config_settings @@ -728,12 +729,45 @@ class ConfiguredBuildBackendHookCaller(BuildBackendHookCaller): def prepare_metadata_for_build_editable( self, metadata_directory: str, - config_settings: Optional[Dict[str, str]] = None, + config_settings: Optional[Mapping[str, Any]] = None, _allow_fallback: bool = True, - ) -> str: + ) -> Optional[str]: cs = self.config_holder.config_settings return super().prepare_metadata_for_build_editable( metadata_directory=metadata_directory, config_settings=cs, _allow_fallback=_allow_fallback, ) + + +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, possibly " + "rendering your system unusable. " + "It is recommended to use a virtual environment instead: " + "https://pip.pypa.io/warnings/venv. " + "Use the --root-user-action option if you know what you are doing and " + "want to suppress this warning." + ) diff --git a/gestao_raul/Lib/site-packages/pip/_internal/utils/models.py b/gestao_raul/Lib/site-packages/pip/_internal/utils/models.py deleted file mode 100644 index b6bb21a..0000000 --- a/gestao_raul/Lib/site-packages/pip/_internal/utils/models.py +++ /dev/null @@ -1,39 +0,0 @@ -"""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/gestao_raul/Lib/site-packages/pip/_internal/utils/packaging.py b/gestao_raul/Lib/site-packages/pip/_internal/utils/packaging.py index b9f6af4..caad70f 100644 --- a/gestao_raul/Lib/site-packages/pip/_internal/utils/packaging.py +++ b/gestao_raul/Lib/site-packages/pip/_internal/utils/packaging.py @@ -11,6 +11,7 @@ NormalizedExtra = NewType("NormalizedExtra", str) logger = logging.getLogger(__name__) +@functools.lru_cache(maxsize=32) def check_requires_python( requires_python: Optional[str], version_info: Tuple[int, ...] ) -> bool: @@ -34,7 +35,7 @@ def check_requires_python( return python_version in requires_python_specifier -@functools.lru_cache(maxsize=512) +@functools.lru_cache(maxsize=2048) 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 diff --git a/gestao_raul/Lib/site-packages/pip/_internal/utils/retry.py b/gestao_raul/Lib/site-packages/pip/_internal/utils/retry.py new file mode 100644 index 0000000..abfe072 --- /dev/null +++ b/gestao_raul/Lib/site-packages/pip/_internal/utils/retry.py @@ -0,0 +1,42 @@ +import functools +from time import perf_counter, sleep +from typing import Callable, TypeVar + +from pip._vendor.typing_extensions import ParamSpec + +T = TypeVar("T") +P = ParamSpec("P") + + +def retry( + wait: float, stop_after_delay: float +) -> Callable[[Callable[P, T]], Callable[P, T]]: + """Decorator to automatically retry a function on error. + + If the function raises, the function is recalled with the same arguments + until it returns or the time limit is reached. When the time limit is + surpassed, the last exception raised is reraised. + + :param wait: The time to wait after an error before retrying, in seconds. + :param stop_after_delay: The time limit after which retries will cease, + in seconds. + """ + + def wrapper(func: Callable[P, T]) -> Callable[P, T]: + + @functools.wraps(func) + def retry_wrapped(*args: P.args, **kwargs: P.kwargs) -> T: + # The performance counter is monotonic on all platforms we care + # about and has much better resolution than time.monotonic(). + start_time = perf_counter() + while True: + try: + return func(*args, **kwargs) + except Exception: + if perf_counter() - start_time > stop_after_delay: + raise + sleep(wait) + + return retry_wrapped + + return wrapper diff --git a/gestao_raul/Lib/site-packages/pip/_internal/utils/setuptools_build.py b/gestao_raul/Lib/site-packages/pip/_internal/utils/setuptools_build.py index 01ef4a4..96d1b24 100644 --- a/gestao_raul/Lib/site-packages/pip/_internal/utils/setuptools_build.py +++ b/gestao_raul/Lib/site-packages/pip/_internal/utils/setuptools_build.py @@ -103,8 +103,8 @@ def make_setuptools_clean_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], @@ -120,8 +120,6 @@ def make_setuptools_develop_args( args += ["develop", "--no-deps"] - args += install_options - if prefix: args += ["--prefix", prefix] if home is not None: @@ -146,50 +144,3 @@ def make_setuptools_egg_info_args( 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/gestao_raul/Lib/site-packages/pip/_internal/utils/subprocess.py b/gestao_raul/Lib/site-packages/pip/_internal/utils/subprocess.py index 1e8ff50..cb2e23f 100644 --- a/gestao_raul/Lib/site-packages/pip/_internal/utils/subprocess.py +++ b/gestao_raul/Lib/site-packages/pip/_internal/utils/subprocess.py @@ -2,16 +2,7 @@ import logging import os import shlex import subprocess -from typing import ( - TYPE_CHECKING, - Any, - Callable, - Iterable, - List, - Mapping, - Optional, - Union, -) +from typing import Any, Callable, Iterable, List, Literal, Mapping, Optional, Union from pip._vendor.rich.markup import escape @@ -20,12 +11,6 @@ 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]] @@ -209,7 +194,7 @@ def call_subprocess( output_lines=all_output if not showing_subprocess else None, ) if log_failed_cmd: - subprocess_logger.error("[present-rich] %s", error) + subprocess_logger.error("%s", error, extra={"rich": True}) subprocess_logger.verbose( "[bold magenta]full command[/]: [blue]%s[/]", escape(format_command_args(cmd)), diff --git a/gestao_raul/Lib/site-packages/pip/_internal/utils/temp_dir.py b/gestao_raul/Lib/site-packages/pip/_internal/utils/temp_dir.py index 8ee8a1c..06668e8 100644 --- a/gestao_raul/Lib/site-packages/pip/_internal/utils/temp_dir.py +++ b/gestao_raul/Lib/site-packages/pip/_internal/utils/temp_dir.py @@ -3,8 +3,19 @@ import itertools import logging import os.path import tempfile +import traceback from contextlib import ExitStack, contextmanager -from typing import Any, Dict, Generator, Optional, TypeVar, Union +from pathlib import Path +from typing import ( + Any, + Callable, + Dict, + Generator, + List, + Optional, + TypeVar, + Union, +) from pip._internal.utils.misc import enum, rmtree @@ -106,6 +117,7 @@ class TempDirectory: delete: Union[bool, None, _Default] = _default, kind: str = "temp", globally_managed: bool = False, + ignore_cleanup_errors: bool = True, ): super().__init__() @@ -128,6 +140,7 @@ class TempDirectory: self._deleted = False self.delete = delete self.kind = kind + self.ignore_cleanup_errors = ignore_cleanup_errors if globally_managed: assert _tempdir_manager is not None @@ -170,7 +183,44 @@ class TempDirectory: self._deleted = True if not os.path.exists(self._path): return - rmtree(self._path) + + errors: List[BaseException] = [] + + def onerror( + func: Callable[..., Any], + path: Path, + exc_val: BaseException, + ) -> None: + """Log a warning for a `rmtree` error and continue""" + formatted_exc = "\n".join( + traceback.format_exception_only(type(exc_val), exc_val) + ) + formatted_exc = formatted_exc.rstrip() # remove trailing new line + if func in (os.unlink, os.remove, os.rmdir): + logger.debug( + "Failed to remove a temporary file '%s' due to %s.\n", + path, + formatted_exc, + ) + else: + logger.debug("%s failed with %s.", func.__qualname__, formatted_exc) + errors.append(exc_val) + + if self.ignore_cleanup_errors: + try: + # first try with @retry; retrying to handle ephemeral errors + rmtree(self._path, ignore_errors=False) + except OSError: + # last pass ignore/log all errors + rmtree(self._path, onexc=onerror) + if errors: + logger.warning( + "Failed to remove contents in a temporary directory '%s'.\n" + "You can safely remove it manually.", + self._path, + ) + else: + rmtree(self._path) class AdjacentTempDirectory(TempDirectory): diff --git a/gestao_raul/Lib/site-packages/pip/_internal/utils/unpacking.py b/gestao_raul/Lib/site-packages/pip/_internal/utils/unpacking.py index 78b5c13..87a6d19 100644 --- a/gestao_raul/Lib/site-packages/pip/_internal/utils/unpacking.py +++ b/gestao_raul/Lib/site-packages/pip/_internal/utils/unpacking.py @@ -5,6 +5,7 @@ import logging import os import shutil import stat +import sys import tarfile import zipfile from typing import Iterable, List, Optional @@ -85,12 +86,16 @@ def is_within_directory(directory: str, target: str) -> bool: 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, (0o777 & ~current_umask() | 0o111)) + os.chmod(path, _get_default_mode_plus_executable()) def zip_item_is_executable(info: ZipInfo) -> bool: @@ -151,8 +156,8 @@ 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 after being - written. Note that for windows, any execute changes using os.chmod are + 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) @@ -170,62 +175,137 @@ def untar_file(filename: str, location: str) -> None: filename, ) mode = "r:*" - tar = tarfile.open(filename, mode, encoding="utf-8") + + tar = tarfile.open(filename, mode, encoding="utf-8") # type: ignore try: leading = has_leading_dir([member.name for member in tar.getmembers()]) - for member in tar.getmembers(): - fn = member.name + + # 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() + 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(): + # Strip the leading directory from all files in the archive, + # including hardlink targets (which are relative to the + # unpack location). + for member in tar.getmembers(): + name_lead, name_rest = split_leading_dir(member.name) + member.name = name_rest + if member.islnk(): + lnk_lead, lnk_rest = split_leading_dir(member.linkname) + if lnk_lead == name_lead: + member.linkname = lnk_rest + + def pip_filter(member: tarfile.TarInfo, path: str) -> tarfile.TarInfo: + orig_mode = member.mode 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, + 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, + ) ) - 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) + 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 _untar_without_filter( + filename: str, + location: str, + tar: tarfile.TarFile, + leading: bool, +) -> None: + """Fallback for Python without tarfile.data_filter""" + 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(): + 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, diff --git a/gestao_raul/Lib/site-packages/pip/_internal/utils/urls.py b/gestao_raul/Lib/site-packages/pip/_internal/utils/urls.py index 6ba2e04..9f34f88 100644 --- a/gestao_raul/Lib/site-packages/pip/_internal/utils/urls.py +++ b/gestao_raul/Lib/site-packages/pip/_internal/utils/urls.py @@ -2,17 +2,10 @@ 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 diff --git a/gestao_raul/Lib/site-packages/pip/_internal/utils/wheel.py b/gestao_raul/Lib/site-packages/pip/_internal/utils/wheel.py index e5e3f34..f85aee8 100644 --- a/gestao_raul/Lib/site-packages/pip/_internal/utils/wheel.py +++ b/gestao_raul/Lib/site-packages/pip/_internal/utils/wheel.py @@ -28,7 +28,7 @@ def parse_wheel(wheel_zip: ZipFile, name: str) -> Tuple[str, Message]: 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))) + raise UnsupportedWheel(f"{name} has an invalid wheel, {e}") check_compatibility(version, name) @@ -60,9 +60,7 @@ def wheel_dist_info_dir(source: ZipFile, name: str) -> str: 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 - ) + f".dist-info directory {info_dir!r} does not start with {canonical_name!r}" ) return info_dir diff --git a/gestao_raul/Lib/site-packages/pip/_internal/vcs/__pycache__/__init__.cpython-310.pyc b/gestao_raul/Lib/site-packages/pip/_internal/vcs/__pycache__/__init__.cpython-310.pyc index 3b60232e0a237ef659c6112430f7be37130ea92f..043f23e75e3512fd5bb111511c7e3b495ddf356f 100644 GIT binary patch delta 56 zcmZo-`NPbe&&$ij00fKtR&V64WR#C`wu%WYPAw{qDNoHQ$&Yc#PcF?(%_}L62?}y@ Kb)LMEF%kgTG7?Sz delta 62 zcmeyv+{D72&&$ij00h-PLN{_(GO8vxTg8MHrxq2*l&9vD@~ diff --git a/gestao_raul/Lib/site-packages/pip/_internal/vcs/__pycache__/bazaar.cpython-310.pyc b/gestao_raul/Lib/site-packages/pip/_internal/vcs/__pycache__/bazaar.cpython-310.pyc index 9a6cd48c95800262674d286e6a6fdbcab399a5e0..24a2d345759b122773edb6faaf7ed77a0170a333 100644 GIT binary patch delta 535 zcmYjML2DC16rMLbJG;rcSV)aXux?YST}w!%LF-W^sUr1|deBq4?Zj>AlIZM8A#9Ic zh4Ok3iqQ5XcrkeQ?9GD+l7ArH#e)#v)KZ*bzWLtwz4zwLo64}__kF*}XdOR#AAcVD zB@3S5v~|gDx9>LZVbl5m1N>#pJ}oONhF#e^p9>|nxxO4TidXF@s3 zjd?DQA-4|gBen-QrvrP?X0O?tqbP z)hz0%DCzgQ!APuc_0)jZUg(g#k$m}FMOl}M&l-)2X%^`$-Py`E^|a|Msqyr8jY=p6%10{UUUpXg;n h{Z3~iiPChVnh)6{!c+iM=5cQ}gWnzpjZkV0m!OcNh zJQv=j5Cpw>5gNSfzaV(qzd$cVZ{Bpqmb}A<@4O%1_okEiopF4}NoX>TUp8yE9VczT zHs*{0yH*WE#oytTrib5*Kd_Ha#+T(@X0+&GDkO{?=zNfw@?|l~tdR6*ZS72NQ9)RY z#X}kz=jMeL>LL7~Ei2T{X=q&lXiQtz+ywe$5+ZDqQ^;~mXxjmdIEn+;YGRoT`Zi4yW3Tm(mT zvB&eugYts%>r?oo&@T~DzbP6`!ADdk-9?X5Q&_StVH%&UStz0#yN~5$dU1nKAc+?T z)GoQE;njs#Kdc6k83i-U$lL^=0|69t5j{Pp* zPg}x4JAftpWv|+!%EMKd!UsFsS5$IAVNoI?-+kZXB^*kAhS}@+WC7^1DrRxlS$PAo CU33@# diff --git a/gestao_raul/Lib/site-packages/pip/_internal/vcs/__pycache__/git.cpython-310.pyc b/gestao_raul/Lib/site-packages/pip/_internal/vcs/__pycache__/git.cpython-310.pyc index abcdf43edb98f0c3d1a7d6bac4b304f243c665e5..4f02a47f35098ef0160375a49758220e0d75fe9b 100644 GIT binary patch delta 3056 zcmZuzYiwLc72es$-S@+9yV+eo<9hAvIy4Cl&I8qtB&d;_CQe)3y1BZ$cf7vteQf96 zjpMLjie0KoO;H$CAP~rI5mKm7)oxorLOdiuAdnEM1k!~c{HyW{gb+wULYy<3#LgPd{ zu>ttGb9ruN`LaWqv%F3X*Iu5tD|M4vuCsjc;_Sj4e>8Y5c^nKKKR}AG1IeT^bBnN%d$LflM_}l6RH>_!Rfj5!UR6|9bows(Jz4a=lQM+4Wi>z$U?lO(URnYiALI$RLdwRCQOm z3KZ$Kb%l4tvn1Or#X}@A3=1IhBm6`nFMSGEKgN~B06E4t5~JiK|8}D9fpmVB=p!#S z|C|{0PdtIvttB9NN!tR7+&Z%=wnjY?yF-$9$PhcqN77GA$Iy6|Z=}aF3n-2w2)@tq zchkoQ@I2cBX9du0zn}S-EX?8T0RS(ysya%=Hcj1y#M@l$;~j02inD6h4NY00Ze{g- z-rqS%4)M9p%j0gK5okzks1dY?Ml}Bo{}(`W$>#xLL$J7Yy z#CCmK!3NQ!8-C(z_}1behqVZ-48g3w5!xj!AB8ASb^Rz^AYQ!8RI9S8SgJ|+ue;`- zIR#Mx*+`rhJF~DfcTPFC@WebD1w|p@g`v8z%0%K`#8h9TibdBM)`G~MJ&qEVGJ76D zkQ(Q!-MK4!Oo%!>gwujvB-V@Sj?xOIjbksvsAC&fMRn^~9lr&82MbDyCjuFN#2+Kw zr1?pAj!afS`vB=HplEZ*CP4R}W~ul0L^>j-zt%rEb`+%B9XQMbT<{QvX z%QKd3QMSzI`b!cr#IEr5{@G2;)eGv@ip`>^J%P~57$uP$MVm0xx9Ymg3u&}muZjp* z8Erm?fKf9Q4Lj;JO?9c_)XS!=)eY(t;;p+Qs&S9FDp>b=alG)F?m*Ys@IotwT6G}G z#ewYLLyFaliXy}FlK5)_|9xOJl1KAXV}kXz{ZiPm7&UD;tU5DZXg-&Z21q|I56@4*{=R~r;W97kRBDQ;0xxY5 zvj$9mp8s+9@8lH!#Yo>-aph9bMU@p*H>jpmOl=9=hNqBKS8a_2 zQ7zhB0VVM&L{Lg2Py}qq%t5${uz~P00^Si()~y!#CJbj;0+o17f=7mVu#W)XF;&FI z6>1oYvX69;xj5Y{*q!8WmtNjPsW9z@@v{X!SLCqmlmvgGX1{_?zl=^3aJvn?408;= z-@b#Y)Lj*$FV(5zdU0sks@R!2qVPP)-Kc?6Cb$v=AVXe%O|O*{_%5QX$5M?Fy;h+$ z7hW`niPH`9?@j09f*fp}EXMyZJx1dEU(@4!@NjOEb)uJ0E0k}c#apO|!i_jDzP{KG zQ7N9KFnod3ppURmqpA<>!p|&RoPFxj0(%WrKSvNpcmO5j!;3Il)g1_LA9<}}z}dmb Y$=0KEn!wPR0f_h_%e@NRTEn4VqNxKWvpXtPNV>>%z zyLZM-8(gJT0;LjVTU{g;v7qFo5D9^bw-2yIXi?E3#2atJ18*xLg!ZjMz^*vwI!)7P zZTa)L=bn4+J-_$<(7ZVlFEunoB=~&m-{*2qrtZgkh;o1A$f6U`BTiJ063LRRfE{xh z^adxc$HiE&8=WS-$!XS`off@C@PhUZr&Vtiv}(6G?RvYD&=XFF-r;oWolckD<#g-a zPLJM0B&yE!&L#Dv_}{7Tq|!4l&rYbxGY(Xv}-A#kI15ek^kjL^%EkLeG ztONf3bN<9@7tXnqxfkZC?UgP}l(H3v7CrYuj=G*%GMHJh`IvI5;Z+cKWq>$gUA4Q) z-(<3b7eYfXw*pTnTO+Lh87&yB6NY|sj(Wz7=~9EytA@#P?(6(X=#d&m*?zvLb&xjx zo|aU1BV!MLtPMu-Y#S>0zqBNIgU7;el2iO*_|+Cmv%TFkQqY zSpx9vgJ%uE&&40k-jb@)#n27nNmW?%mPDj0vL#JR3@u0zKTs%oDcP4Z`+btF?=H?E ztOy^@(IUN8W=Hd=PXUl`wo40xCktK%EZk}23Z8KlJXt6eGl%U`*0kNDnax#vXJp`5 z0#^B|UCQMs^F#9{D;A15Kj>A;HucpUD^<#FD!@`8#xe-FVCzZv%}8tVA~4-{0EH+- z7GL#$5mg~E7`NAc9SIVx52n}1I^n;MCj0iofV~9Z2eR|lLX^>2cQj8;%N;$PQrIi} zv*-Xh!uw;1fh~?l`4)^_w!#>sgfYX+Vm3clJ0Ba6qbE>jT`|8C@0QnP{vduveFfPQ z{ImFA(@7-vAc(B^3V*qAtP^u@t3fy%0$8doH~y7OPU5%=z>nlj*T|L}r{IA{w&~h- z$_B&Dmnybp%u+9#f5_i&9wsCFWtD#lN{@V(}=L1m%HF^CMG}XHT3mPE8)0V7q{kiuoa^3ak#{3SV=~ zcc@XM^M17Ma-(QERJetW!2Db%Ju^9Y3)(lUx+#`rupr}&gdB+*PC(N%O55>h{gY$$f)QvcA0;kIDQ(<_LV|$ zw!}2#9!A(SzHScIr5^(8P0wR~(4sSyoY;?1lztrn&&aa;`yHKaqR2#gK6lF;f85b= z*g{2G*0DAm>M=9>&NC-{K?3_>k#`ueAaCk?`u1hq#YR9Au)>hWFx8K81*o-Pz09|r zz(b*J>8-l+1<30OezEI=#c>c=4+DU!4HU*L7SwdwGjlGxjGRrjAA}H64`=fxvr_67 zzoECb9f@5--uBHaWy|#FY3QtOT#{<{x^+V4`9FIG4tyEJr_QotxC*AFg%(Dgl1DQo zR>&2KnF_P}*qb;z4v^BI(Tw-@9E>4H6#6t!e!FO#^_2!Bak)@7U?rQtHTCpmNBF(o zk=-Ir+m08nXFG0-t1i_3-Wv{(1Yhr)7->KaGQ(wl*v*y=#{@TSGmtI9^aB4z|EHb8 zlUh0rO}sFBeL->a=A|i6aDrdnl^7K7n$)^xEeylAsX;S)$0vFnd&ukE=llX3os zy~oKE4-O57{Sc#N+ssmaaOgm{&?UUAy4gH+;3_Lp4{ku%^48EH($9Z4)YB-o!K;-0 z9N=UAkD(7pmH#BwIa#lBJXdhzq$u@WgdZTF9pJ6{k&*G@i5ZsDC;Y#uKazL(N5g$> zTdpRQ{u;tP{&e_l@-u#Vq*E7u2_kn4p^SimeZIM`6-&%1n_ixsg^5jn0qqCCFrP5? z5LY}m>Jbb-q7kfeMzG65BCj|R{jZKfj6hmF5)YN4Is23q!AQ^ z0|?mXAQx=Ybsg&EOBM?tTlBIaq%I+Z5TH0ECaQWbQdbeKBUBNV5ir$7cGmmgdoVoC zqR7OM2tP8kgZ&o3Z!iq8ahBS)VQg`_uv|p48{`i0!OX2oNTt$#2;VmFrqM$sHzWKf zQtu8b{WdC%L6O>p8JJ`6>Rd%ue1pa4l?uE$ebu{O1{F+rMwqMc#As3#5mWi0(PWb_ zSVN`Q3H>A=A8q9~Mx!Lc?~D#AXcGVBXmZgH*7x}-iatQmFl6^v#runWh|Do$hTxr1 zF4&ae8<({U)?1TbKmNw_B>Nt+o*;<$;M;_uvA)J=uHbr&FPt7UGk8#OQF3nBND=Cf%3UYFFo;;5^ Ml96Zg59Txc0IGf;_y7O^ delta 112 zcmX@3eng!&pO=@50SKypgr=8m<)*-BVaSkf75*cLI?Ff3qQ$S{$yhIs)S zm}Ua987DFZG4wIivIAw=YuFbuGBTtv1T$!|PJSq@IhkK3iH$WaCo#Qva+!>#p#jiE x9Ly|?Okl{y$nuASjf0Ve3C#b`#KiQEjhX2$8w=APCRV23Ol%yRkIC4v007(OHXi^0 delta 193 zcmbQ@)Z)aO&&$ij00h-PLenp9 zT3nKtA77MMnzQ)@%XBfuu*nV5YNnzo%(ZNJOerk2Y$YrytTk*k3=3EnGSo0HU;~m& zHH^({wd_DK_8RtujEoE^48aVVY?EJ0YqEF%EuJhalg!GJmXnx1xkg4)T@5J2!OX(Q a1cq#kEPpuIfFu))&juD}*?djLjs*Y)UN9B_ diff --git a/gestao_raul/Lib/site-packages/pip/_internal/vcs/__pycache__/versioncontrol.cpython-310.pyc b/gestao_raul/Lib/site-packages/pip/_internal/vcs/__pycache__/versioncontrol.cpython-310.pyc index 3d6eef07458d82cc44504c3bada378af60f2b292..0e0dbe0ca08415b144cde78a46561421d6be49c2 100644 GIT binary patch delta 5991 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 delta 6083 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 Bxvl^J diff --git a/gestao_raul/Lib/site-packages/pip/_internal/vcs/bazaar.py b/gestao_raul/Lib/site-packages/pip/_internal/vcs/bazaar.py index 20a17ed..c754b7c 100644 --- a/gestao_raul/Lib/site-packages/pip/_internal/vcs/bazaar.py +++ b/gestao_raul/Lib/site-packages/pip/_internal/vcs/bazaar.py @@ -44,13 +44,13 @@ class Bazaar(VersionControl): display_path(dest), ) if verbosity <= 0: - flag = "--quiet" + flags = ["--quiet"] elif verbosity == 1: - flag = "" + flags = [] else: - flag = f"-{'v'*verbosity}" + flags = [f"-{'v'*verbosity}"] cmd_args = make_command( - "checkout", "--lightweight", flag, rev_options.to_args(), url, dest + "checkout", "--lightweight", *flags, rev_options.to_args(), url, dest ) self.run_command(cmd_args) diff --git a/gestao_raul/Lib/site-packages/pip/_internal/vcs/git.py b/gestao_raul/Lib/site-packages/pip/_internal/vcs/git.py index 8d1d499..0425deb 100644 --- a/gestao_raul/Lib/site-packages/pip/_internal/vcs/git.py +++ b/gestao_raul/Lib/site-packages/pip/_internal/vcs/git.py @@ -4,6 +4,7 @@ import pathlib import re import urllib.parse import urllib.request +from dataclasses import replace from typing import List, Optional, Tuple from pip._internal.exceptions import BadCommand, InstallationError @@ -101,7 +102,7 @@ class Git(VersionControl): if not match: logger.warning("Can't parse git version: %s", version) return () - return tuple(int(c) for c in match.groups()) + return (int(match.group(1)), int(match.group(2))) @classmethod def get_current_branch(cls, location: str) -> Optional[str]: @@ -217,7 +218,7 @@ class Git(VersionControl): if sha is not None: rev_options = rev_options.make_new(sha) - rev_options.branch_name = rev if is_branch else None + rev_options = replace(rev_options, branch_name=(rev if is_branch else None)) return rev_options diff --git a/gestao_raul/Lib/site-packages/pip/_internal/vcs/mercurial.py b/gestao_raul/Lib/site-packages/pip/_internal/vcs/mercurial.py index 2a005e0..c183d41 100644 --- a/gestao_raul/Lib/site-packages/pip/_internal/vcs/mercurial.py +++ b/gestao_raul/Lib/site-packages/pip/_internal/vcs/mercurial.py @@ -31,7 +31,7 @@ class Mercurial(VersionControl): @staticmethod def get_base_rev_args(rev: str) -> List[str]: - return [rev] + return [f"--rev={rev}"] def fetch_new( self, dest: str, url: HiddenText, rev_options: RevOptions, verbosity: int diff --git a/gestao_raul/Lib/site-packages/pip/_internal/vcs/subversion.py b/gestao_raul/Lib/site-packages/pip/_internal/vcs/subversion.py index 16d93a6..f359266 100644 --- a/gestao_raul/Lib/site-packages/pip/_internal/vcs/subversion.py +++ b/gestao_raul/Lib/site-packages/pip/_internal/vcs/subversion.py @@ -288,12 +288,12 @@ class Subversion(VersionControl): display_path(dest), ) if verbosity <= 0: - flag = "--quiet" + flags = ["--quiet"] else: - flag = "" + flags = [] cmd_args = make_command( "checkout", - flag, + *flags, self.get_remote_call_options(), rev_options.to_args(), url, diff --git a/gestao_raul/Lib/site-packages/pip/_internal/vcs/versioncontrol.py b/gestao_raul/Lib/site-packages/pip/_internal/vcs/versioncontrol.py index 02bbf68..a413316 100644 --- a/gestao_raul/Lib/site-packages/pip/_internal/vcs/versioncontrol.py +++ b/gestao_raul/Lib/site-packages/pip/_internal/vcs/versioncontrol.py @@ -5,13 +5,14 @@ import os import shutil import sys import urllib.parse +from dataclasses import dataclass, field from typing import ( - TYPE_CHECKING, Any, Dict, Iterable, Iterator, List, + Literal, Mapping, Optional, Tuple, @@ -37,14 +38,6 @@ from pip._internal.utils.subprocess import ( format_command_args, 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"] @@ -58,8 +51,8 @@ def is_url(name: str) -> bool: """ Return true if the name looks like a URL. """ - scheme = get_url_scheme(name) - if scheme is None: + scheme = urllib.parse.urlsplit(name).scheme + if not scheme: return False return scheme in ["http", "https", "file", "ftp"] + vcs.all_schemes @@ -121,34 +114,22 @@ class RemoteNotValidError(Exception): self.url = url +@dataclass(frozen=True) 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. + Args: + vc_class: a VersionControl subclass. + rev: the name of the revision to install. + extra_args: a list of extra options. """ - 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 + vc_class: Type["VersionControl"] + rev: Optional[str] = None + extra_args: CommandArgs = field(default_factory=list) + branch_name: Optional[str] = None def __repr__(self) -> str: return f"" @@ -362,7 +343,7 @@ class VersionControl: rev: the name of a revision to install. extra_args: a list of extra options. """ - return RevOptions(cls, rev, extra_args=extra_args) + return RevOptions(cls, rev, extra_args=extra_args or []) @classmethod def _is_local_repository(cls, repo: str) -> bool: @@ -405,9 +386,9 @@ class VersionControl: scheme, netloc, path, query, frag = urllib.parse.urlsplit(url) if "+" not in scheme: raise ValueError( - "Sorry, {!r} is a malformed VCS url. " + f"Sorry, {url!r} is a malformed VCS url. " "The format is +://, " - "e.g. svn+http://myrepo/svn/MyApp#egg=MyApp".format(url) + "e.g. svn+http://myrepo/svn/MyApp#egg=MyApp" ) # Remove the vcs prefix. scheme = scheme.split("+", 1)[1] @@ -417,9 +398,9 @@ class VersionControl: path, rev = path.rsplit("@", 1) if not rev: raise InstallationError( - "The URL {!r} has an empty revision (after @) " + f"The URL {url!r} has an empty revision (after @) " "which is not supported. Include a revision after @ " - "or remove @ from the URL.".format(url) + "or remove @ from the URL." ) url = urllib.parse.urlunsplit((scheme, netloc, path, query, "")) return url, rev, user_pass @@ -566,7 +547,7 @@ class VersionControl: self.name, url, ) - response = ask_path_exists("What to do? {}".format(prompt[0]), prompt[1]) + response = ask_path_exists(f"What to do? {prompt[0]}", prompt[1]) if response == "a": sys.exit(-1) @@ -660,6 +641,8 @@ class VersionControl: log_failed_cmd=log_failed_cmd, stdout_only=stdout_only, ) + except NotADirectoryError: + raise BadCommand(f"Cannot find command {cls.name!r} - invalid PATH") except FileNotFoundError: # errno.ENOENT = no such file or directory # In other words, the VCS executable isn't available diff --git a/gestao_raul/Lib/site-packages/pip/_internal/wheel_builder.py b/gestao_raul/Lib/site-packages/pip/_internal/wheel_builder.py index 15b30af..93f8e1f 100644 --- a/gestao_raul/Lib/site-packages/pip/_internal/wheel_builder.py +++ b/gestao_raul/Lib/site-packages/pip/_internal/wheel_builder.py @@ -5,7 +5,7 @@ import logging import os.path import re import shutil -from typing import Callable, Iterable, List, Optional, Tuple +from typing import Iterable, List, Optional, Tuple from pip._vendor.packaging.utils import canonicalize_name, canonicalize_version from pip._vendor.packaging.version import InvalidVersion, Version @@ -19,12 +19,8 @@ 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.deprecation import ( - LegacyInstallReasonMissingWheelPackage, - LegacyInstallReasonNoBinaryForcesSetuptoolsInstall, -) 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.misc import ensure_dir, hash_file 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 @@ -35,7 +31,6 @@ logger = logging.getLogger(__name__) _egg_info_re = re.compile(r"([a-z0-9_.]+)-([a-z0-9_.!+-]+)", re.IGNORECASE) -BdistWheelAllowedPredicate = Callable[[InstallRequirement], bool] BuildResult = Tuple[List[InstallRequirement], List[InstallRequirement]] @@ -50,7 +45,6 @@ def _contains_egg_info(s: str) -> bool: def _should_build( req: InstallRequirement, need_wheel: bool, - check_bdist_wheel: Optional[BdistWheelAllowedPredicate] = None, ) -> bool: """Return whether an InstallRequirement should be built into a wheel.""" if req.constraint: @@ -76,25 +70,7 @@ def _should_build( if req.editable: # we only build PEP 660 editable requirements - return req.supports_pyproject_editable() - - if req.use_pep517: - return True - - assert check_bdist_wheel is not None - if not check_bdist_wheel(req): - # /!\ When we change this to unconditionally return True, we must also remove - # support for `--install-option`. Indeed, `--install-option` implies - # `--no-binary` so we can return False here and run `setup.py install`. - # `--global-option` and `--build-option` can remain until we drop support for - # building with `setup.py bdist_wheel`. - req.legacy_install_reason = LegacyInstallReasonNoBinaryForcesSetuptoolsInstall - return False - - if not is_wheel_installed(): - # we don't build legacy requirements if wheel is not installed - req.legacy_install_reason = LegacyInstallReasonMissingWheelPackage - return False + return req.supports_pyproject_editable return True @@ -107,11 +83,8 @@ def should_build_for_wheel_command( def should_build_for_install_command( req: InstallRequirement, - check_bdist_wheel_allowed: BdistWheelAllowedPredicate, ) -> bool: - return _should_build( - req, need_wheel=False, check_bdist_wheel=check_bdist_wheel_allowed - ) + return _should_build(req, need_wheel=False) def _should_cache( @@ -167,15 +140,15 @@ def _verify_one(req: InstallRequirement, wheel_path: str) -> None: 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), + f"Wheel has unexpected file name: expected {canonical_name!r}, " + f"got {w.name!r}", ) 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), + f"Wheel has unexpected file name: expected {dist_verstr!r}, " + f"got {w.version!r}", ) metadata_version_value = dist.metadata_version if metadata_version_value is None: @@ -187,8 +160,7 @@ def _verify_one(req: InstallRequirement, wheel_path: str) -> None: 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) + f"Metadata 1.2 mandates PEP 440 version, but {dist_verstr!r} is not" ) diff --git a/gestao_raul/Lib/site-packages/pip/_vendor/__init__.py b/gestao_raul/Lib/site-packages/pip/_vendor/__init__.py index b22f7ab..561089c 100644 --- a/gestao_raul/Lib/site-packages/pip/_vendor/__init__.py +++ b/gestao_raul/Lib/site-packages/pip/_vendor/__init__.py @@ -60,20 +60,15 @@ if DEBUNDLED: # Actually alias all of our vendored dependencies. vendored("cachecontrol") vendored("certifi") - vendored("colorama") vendored("distlib") vendored("distro") - 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("pyproject_hooks") vendored("requests") vendored("requests.exceptions") vendored("requests.packages") @@ -115,6 +110,7 @@ if DEBUNDLED: vendored("rich.style") vendored("rich.text") vendored("rich.traceback") - vendored("tenacity") - vendored("tomli") + if sys.version_info < (3, 11): + vendored("tomli") + vendored("truststore") vendored("urllib3") diff --git a/gestao_raul/Lib/site-packages/pip/_vendor/__pycache__/__init__.cpython-310.pyc b/gestao_raul/Lib/site-packages/pip/_vendor/__pycache__/__init__.cpython-310.pyc index a3721fca6f9e275456016355449082faf8729c8a..f754464473d3e33458f99bee849abd4c6ddca332 100644 GIT binary patch delta 214 zcmdlk@lKpKpO=@50SFfPtxo5h$ScceHc>l(QF3F=UPf-VEdCVhY=#MpMf{T;m?XGT zn1dNWSkr!U6O#=SW60$FERw82K~ApDlOMCx3EpB)$t*6($xOP%24WQDPu|9AGWip$ z20wp6WkFGXR%&udd`5nL_GSsT+bmj|OfQ*%HoxQs61P}O@^f=CZ*i3rl@^y2m*f|v z-eNB;$^jZ?tSK;=pSzUr7Ef7fQE_H|UVLU=TK?n~Ze_-n$t$>nCbRHpbMY{803i<} G%V7Y@GeMgG delta 321 zcmaDSzFmShpO=@50SKypgr=uW*C5A4dSCCj#oH{vx)r2F8tsu3))X;o#3#-QFy{tD`WNvYkq~;|i zXO>jnVlBzf&B?sQ4l&1AlYjC7uF}cQ+{%nSlhe6_Ciio5P2S0^J$V8*3kwe;%YFbJ Cre|gV diff --git a/gestao_raul/Lib/site-packages/pip/_vendor/__pycache__/six.cpython-310.pyc b/gestao_raul/Lib/site-packages/pip/_vendor/__pycache__/six.cpython-310.pyc deleted file mode 100644 index 3248871d4e2a1ef38ba7bd56ee3c5173ec8b1e00..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 27581 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 diff --git a/gestao_raul/Lib/site-packages/pip/_vendor/__pycache__/typing_extensions.cpython-310.pyc b/gestao_raul/Lib/site-packages/pip/_vendor/__pycache__/typing_extensions.cpython-310.pyc index 784a73ac2089324622d1ed7db8d0ae9f92722b10..6e2b3188a5631f6a2ab494591c88641bb543ee41 100644 GIT binary patch literal 100385 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 i(TUKjDfq3kG@^i`v zsGx`$M6dt}KTUyK?D6p_`N{F|MXVrEHW0xMB%%}wG7I$L%Tn`F@{9D6K}ID*jM7U? zNh~NyEdrYrrHoS;M1& delta 214 zcmeyu+QiD2&&$ij00h-PLenoYPUMqe44J5HE|$WP!kNPr#g)pnfIF3EA>#sGAd7Ee z!vtA&13g0{JwwBnj6hwQjJJ546O%Jio%8cbit=+N%P?vQz66=)r^$bdJw84qKRG^r zas;D_?k)E6qQruN)S@CLp!6;F#FWH>5+IKm#N$ea=+6NPumA-nt20?~3jrBLAmUg0 r|nl%_ukEd*4c5vafg38{c+6beGJs+I$_ge(RX z>Y=o4tLK7s=LgEslFb$|n$Llu_G*J$!q2*eI*$8T(?b<|>9M&+b60mT}ohp1L`s!{S z@q(xc`@QZ?i>9cHX+&p4OU#G{q8aqgiaA6LIV%hXH$5G`g)ta-7m0xBr}<0WX&aTUDV%poj0W-A+~*bK$yLqA!;(4umV zbsGdOpXO6s6TakWHmzSe_m1te4}71#EaNhcDA7=_DE$ZtvMv2qOVL0ZMb0o2Tu`by z6j;iR_1gz}uB+s5UPb7D1A!&wJyoS1`h#c{9f>*uPB^g`XSz;L>daymu_#)F8k{ksDaku(&!*sXTo<97KIk-RITe zV7ThNmXU}7N@#K0*>NY(lRM$<5K61f$m~3pnj!4eYX`VPGwSYgclLh t|7*EG#jK6BFczag-c`d)mQh&Dpx7^Vj4yt5C8^0wZdxWc=1roX{04ct#vA|u delta 732 zcmZ8e&59F25T2TzbUMjok`+;sT_lK$iQs}4Mcq|2qPHN*dI*7GNH-yCk_pv`9?V5{ zUtsA6aC20=_zqqL&v^qu@8U(PW?6&wP}N<(-&Zxu=wleA<#N%Z^XBLNpr1RA>UGa9 z$kv{Qk=NzhAHmq~`rsWuym3FT)sfdN>4GlO9qN(}=`QQ4F6-zBx{;~q%1a-2O?2o1 zHF=&%YvUWEblfG_Yeo-nFdv)A>}i75V4ovr2k0S4+9d8BT+P3SPD^6WeSyc@1g_J-3^*g{wq;jlHkBz zrUn@qNmLYIgX}&}dv+L`p_z<*;XVZ0TPJeiALL2YlGeX~gWO4hJxjoC_anGjZ%{7Q zNv#Co;3k_qC0=xUx!b8&1q_Wf&Ir)h>FF@*iGp!5oHQwHxlDqDP)Ko3L?VRH#}*f= zIOeQ4#ypv=Di+vVnhvKs@hdaYDIzbj+i;1j6%w6HX9iKYp1cBqdn;R*%i0i?Y4*c; y<)<{6dbWwbNRwo22x+~=HCMGePW60b?(xz7fgpw*ON_D;n!S6q!vyrR- diff --git a/gestao_raul/Lib/site-packages/pip/_vendor/cachecontrol/__pycache__/adapter.cpython-310.pyc b/gestao_raul/Lib/site-packages/pip/_vendor/cachecontrol/__pycache__/adapter.cpython-310.pyc index 5bed246fd6b912b25f137465ce3d850af826b59f..a695196d511671f1a64a80d01108e5d347c93ee0 100644 GIT binary patch literal 4408 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 azQqGcFcD0%UaIS}#MJAgX-rSg&i)70Nw7Wu literal 2690 zcmai0OK;mo5Z)yziKd^ile&+zW!)Z3z*gEz4@O$Jv5Ue$U=(qJqJjZ>#a-KsDU#h? z*^%l~?R)-0a`a!~wWpqYDSBu+vos}HmXQ^>+Q)F_o7wqxn9a_51lsTayf}JSBjit< zj5Y@*oA9V@=s0N+PPvuPj@7a#`H66wJC}qz!oILu4$N!34)eNjU|xfHgS#+y&AiU1 z_DJCM+urkI;YTcjK5M@ek@kQ1dB;D@q#t+kM07-|S+y?m5#ncm~#1^8DEO@_aIHvGy!Si<=I!!LfAM}du zUeRJ{H`6YLn~&_L?vhxZWyMlBf_xo!myL^Zi3^PF#N5{l5$7Rf(p5a-4b>N z`p}>mVaz1vDGn3{*d?yz*{(ffoAtYs`fCs#B(=vaZbLEyPa&xZB(-PKnvSG3Ez^1% z_+!#~_ttr!&zRTh1L!cX&q+wnY2Ju&WDPOw7)pO)2sw;;X+}93zO=cyd-Y`6(?`4>mvo@AHz-=@CnIdHogD} zbE;r;c4!ocaEk}1!q|I!ZSVCxigxK6>ztljF?~xZ`2|wSf!~EqO>%uh)bbguS!7CV<*AD?HMXaYp zE?1Z*;hlhg<^A~WJj*BX)1>$+f=5?e>cQF0{b!*I3&UWSM7`#ad;pRXQ%xe{tiF- z5t<=W*8FxC3!G7xGo?zoRfZ+6-P1y?C-F&DG6U4Xe07Zqie-}cI`a<>ARR(9yc!%F zG(Ds3`7uMyB`CO{q2wCnkZ;TsO+RNECMgJQY?SYyQxR6VCMaBm614`#z_%ps3m#UW z1Ec?jY-t=`2uekJaVJigOhCaPCh9orCfsieKgk#eER`Qg&p(YBcmebq@xmCe;iRgD zWzl8r{s{HDL53}-)ua}>0rWhHD8SzQl3-@tZ2*1au8Fo6( MjI&@b%->)7AMfol>;M1& diff --git a/gestao_raul/Lib/site-packages/pip/_vendor/cachecontrol/__pycache__/compat.cpython-310.pyc b/gestao_raul/Lib/site-packages/pip/_vendor/cachecontrol/__pycache__/compat.cpython-310.pyc deleted file mode 100644 index 1ad0f347b48b18e9653a5ac53aa069fbc5226769..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 756 zcmZ`$O>fjN5ViBMo2Ci7H#qPI7DQHp8$zg3K>`U?6||~qB1Ne)lu#!&w!^aJ7x9-O zZk+fBhzm@TZ4{7jl*#kF=jWM;jN_2t`ttMiGIR;~-fgBUz|8@^<{O6VpdbYmq@s*c zaz^TfN5I+Mrlfm%&K8k6|-v2<`dt;QR|9e z;3j%c>{THPC;GRe-V^%+x6}I&vG@#Yc|)*@Tia?-!h*%;eRe}u{txVstY|xLwD=&) z`Ur9K;^gG`H5esp1Kqwf**leSAq^C(WgDSZloyH0wE^v*LA(F5Qc~OJT1(vq$oE`3 z=f@?#641_6|7D3PRg!&zx{x~2@Ua174I1&Q{1Qwu7(YU0xLo7kA?)t-(7zIPZ_57P zvazMmURUd#>46)&j>aL>C6@)Xdlo+1%x)FJqr8HlFV|T8mFNYU^x+pAK2A?@1SZ{p zurhrnc~e1cO^VIfTxL3N#9#PTd6AmZ!h@TZQ!Hk^8_1gH{5^14TP?+!%Sz=oQQJ0n mQputb@RZ`s<{<{hThfRwsq@?MB1BP#{4wW_$P1ARk^KYI@6eb4 diff --git a/gestao_raul/Lib/site-packages/pip/_vendor/cachecontrol/__pycache__/controller.cpython-310.pyc b/gestao_raul/Lib/site-packages/pip/_vendor/cachecontrol/__pycache__/controller.cpython-310.pyc index 17d2fc444ab14f8b858506429b1d9df582f5f2fc..5f9ee27f84e273fc7c29a0c050a515f74f86fbb4 100644 GIT binary patch literal 10149 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 Cfo+5U delta 4316 zcmai1U5q4E6|Q^hr>m>0dwRNidU_UiX?7QJR(9A`L6F^rWe7xE2I2~0qqa@o+TNb+ zpW#;Z0<+a=%q$_OA&~oGj3zxsO;BSDeDJ zcBf9=pL5SW_uO;7bLs~VzOXtO=JTF`--UlY+^OGX7;jVO@}GsyU3kK8f(WBw2qt)s zHJE<$2G?)1Vd}Tlu<$l}cHe0@jCieHrtdafv~A(^vVE`N^>dA!?q_<({eHfYXGXxL zg9nSTW8m(L+vWKR9oIDzZ&Gt|Pp|(j%$~5UVo83V-YBp~~FQh#yro((zV4Jm6 zt>GY&!(K0tD>K$MUE1tN8j^bY0?BZZ`knJ8tEiu6&MnaeT(Q|m_69@QzgZo3*G?KC z`G0IoalzZ{wDB^7L&=*kw#?;0S~|bGUQ5y%XVddT(yIEUd&ANd+K|9J9@6I3i#3S%T!Ze^K0xr^=brBbi4mT{0aLZsq1c#5e2N&0 z`8H=XZpCcf#<(eXY@RpdUOjJaGenkk8qualS7KAZM}>2a%N5O$nQ_F%x--o{9vfS+ zCESrA@6;Swa7?t2$R(yIyT#=x&F*P-d%%S|wlR{M`Z0^G*xokBPV9tD2*?X>wnbEk zo%Ojb78Rl3P~^rL+91{{#Lj6Wn#a7o#l~*z%1zu&i+{aYWDyq9C!NZa+xecB>Z*L`xF&#GL04)JTU@lrt0u^ zJMq%U1J<{aEN#;~)9pc`48jd84Le%F#2gHtl&45su04`6P(NHaurAm1K=9N?S0Yo8 z4%vQp&^&|1XRijOg5F3pcQhDdY4{9?Z~K5I*YudhDx9cqx=g=$fmyt0TFg@`)xFo1 z0AN1z9LsdUQNS9k!`q|vmaAm-&dC+PLH66tLtjPb^7uy#Q1Boxty@!@Vqu$)&8~sy zH4)oRY_4bEoHj7RhQl6=ZJn#-G#!N(Ep&M{EOHn?cqQm8xIGq-i-0@ zmTiUJivjJWv*YNK(3ujKTxp2nA+gB65d_)ne%SRcDR}@9W4|vv3r=Q`pwd@$&C>Z7$EBi)D#-EGJsZV zoBW9-{y$ zAR=WDC-w-~L}r|u2sh3`d`Dz=05U~xpfN_}?r2U!Nlrcsua%F>J@z87x=DzJHo% z_Ue`FVsYC_nT1K}0Z{M%;5CUFSq^h}iy9KFr2)F8C8p4;$8j*@!xTYQan4Ujz$x4& zPK(ys2TzXCTdq7i{9|_RJ(te?KQ^I@*m;((*=&3Do!`k`XDGXo`pdOLc1pGO-i@O8 z`+Fzs7IkpnfkO|#Q8iL_jZw+i+)qVbefao#(2nXUCf3gkW&OgDvD(=8Y3CfVBaiGm zjP-Br``F~jxE=-+?BVjFq!L$tp2(#%vI`~hQJVN75smzrZYa8)ZX|ERP+}rEq$x+o zrbebqc=QOZ()DG7m>sCpZ$(lX6O2EMq2=LV?kHtWe+28$-=TQRjSW*47ey#ns zRkWCTsk*5CP~S5lup{$^JrH;WidtPgnpb5H)QQL*sQbc&m^_4a*z?E;R1rq*bH*8b z>j?9ri)e8Ob?yN=5k4U>u%_ujGO$PEE>$0tN$kyc9vrCg^?zKJA@;uF`-(K8=M#9s zkAi#+x_x<0y|BN!aE3o(Fyjd>jMIiZj5$=_`_-%a4<6PgPOI%>onQbImM4Bhb|oa` z&sc`TedfI9aO>U8+Z8)-bTZ?TRg&ZXpNvL@OyZ0-=(91g1U?ZHyBh`lF!fhSGVH5; zNIS&bZfTGviqspPp}Jpcg{x}*Ky}Ycq%3{?_?arM+Tu=@RCc+eetqD!3}0J=kDgR_ z-*Dq(AL){7_gZ1t52CX}p}#=V1L&%&L$cS2kX|w-@*I&%j<{`Grhy4xIYm)9zhpD9WpExPL pXnj8HNQrx_KNO>0Z~`_puGa^%EGnz$kAe)5gP1^wA-v2=_P>Q}&8q+a diff --git a/gestao_raul/Lib/site-packages/pip/_vendor/cachecontrol/__pycache__/filewrapper.cpython-310.pyc b/gestao_raul/Lib/site-packages/pip/_vendor/cachecontrol/__pycache__/filewrapper.cpython-310.pyc index 26767a5b33c3f636e354c6e3dbba263ae656a652..185df8478a9ab2c48b8fb1f6cbf9e5c51192ec81 100644 GIT binary patch delta 1413 zcmZ`(&2Jk;6rb5|uh*_)r?e&{P232vq)k)tAr(*+YLXNoSy2*Ex}{oecGjue{jg>? zsw`4Ph+H_LJ#poLRB_@@K>QV*D?%#jiEE?^-W$syspweq=Iw9B@Aunz@9p#R-?tC5 zTFoXfe(L?Q_j`koKk(u7P~l;f5So7p4kL`lB%vOq=qs_}DX^-snrNOTF)h{;!!r`o zGZV|RD2WW-firqsNo>!iWP>n+nMZ_~-zi>LWy&^jt-p}crJ@?7X;uWqAWQQeJU4qm z60w~q8D>1-qxC@?xvHq`+}&LBySLZ6Uwq!%5bCGtNLbwWDBgrF0%HK z?pf?In_+JOT4B?mdQr5>zbma@UpT5Kl>U&Lz#*&5xZ~@oDfx)%W)z$W_68|DE!=esw`;yIB^86m};ASuB_sIbSbVjJKD}1M-kO zRG-iTdWUSodlt&5Lka%wLVazM$HY~7>#oKdCIlI*LY>e-zcCM)}NGqqMwaerrr&lyl|J=ISCw#T?}Oaq((kV;ph4 zw5=Q0g&HKqu{}tON#=B!&(~k!*Ve~vXeJ^w9tDh_Lsx&y2Sp@0GKn9Z70z8a@l+kZ z=)3ZdEGU9kRPkll3Cfq&@|;jX&FlF;tK7LM`E5TB`jLO4f?tCWd<6|s^6O~M=9PZ{ zSX@4pH^r{r*05 zU*!87Ym_g75mo_Tnm&AFICg_DijhAYqc1A<8*Kmp delta 953 zcmaJ=&1=*^6rZmov)SzSLo3!=blWN|T0ankx>8D8TkueoT1vx0NHepgYqlwqtXdR` z*o%0Q!M{Oz6#oYg{t3B?peMZu;zi$Nsg@r4V1Dzy=JzIVUS17;9oS7O6&Ha#`?a#s z>OttUF%Am@V+K|_4j_=gF=}HUW22Lp_+$|YD%c(pOwyOsXM!xF3F{kVqY0e%FNJL> z9?JH1qC&N^uo=sx$i%wxW~g!(rL$m2(8JbZJtxiWoJV0CuZPj2 zeWc2e@Vhm4tFe+wl{TKpI7=GyNz`e}tt@S9$TSO+K!u%HzqRg{&q8`?15~m8VT}w% zroe$vP|TWxrR(-Ew)L7ldYOZnvn}X?DuG&*?1E<^V>m4Rn9qzAx3`r{J8^cD*6#96>zq#=(~9|0-7`JQ znUbLZ-q)q8m(GD>pBA^xY1qzkCc-Q{QbE-qYfXPCT{(vSy1P1E(7QnzHf7K)V!mL+ zz^DOJO^q2a58egSeKigs^hft5QRns3@{Qe!@%9<`f6&~b$UJnq;3+65M9ssdy#O3B z%=@{;J>KUId1Ymy6IRYM_yL+Q`^rp=Is=f~$$CphS&?$Ud;x<0sB?b1orq2>r_B@; KbLTORPtw147_&V9 diff --git a/gestao_raul/Lib/site-packages/pip/_vendor/cachecontrol/__pycache__/heuristics.cpython-310.pyc b/gestao_raul/Lib/site-packages/pip/_vendor/cachecontrol/__pycache__/heuristics.cpython-310.pyc index d491efa7134d9762f8ca43a93bbd6eb1557a393f..9288bb7b3330a22532fc6546da544136fdf69816 100644 GIT binary patch literal 5390 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 delta 2425 zcmaJ?&5ImG6tAkT{+Q{W$?Rma*=)?}#*NA38&r_6gvAX+h}me?5EueYXR3F%lb#Q% zdyLT@Ca^gPE=V1`?%+X!$NT|$69lgw`Xt^K1VKE=g5Y~KyBRa?+EB0Sy{dXu@Atko z&;B-FZkI|$0^etU-C4U*`LaCIC&?!8f(ROu`tVQd6nGZ1rcpPVyw00u-K4l?#8%U) zTTQ!e1JCP@m=LD0p3-_j*ur^A>c#6s6h!eU5yjBmFzO!guJC~OLJ#;7@Fh_OzO4BZ zWe^+^6%bUk;E#WJ#G49I|PfN9bOag9r+ z{$wZnITNYAZ%8~?%d30V`f1x=4+9ZOv?f8@s#K!d28@?JTw8>Z%mWDtI{gz;+b$S~=& zTS++ncKcBvTTyFmM%^{%jvc5{4a~o5s8L%suB6=UAOyR%C#Td8)*>a!u|Il!8qVbQ z5R?Qws5i=^AO%Q|pu#EDx6e&!-I{1f&7jkXA7518+vn9q=X4(rNYo`?K{DF?;)py9 z3%Db3fH=fqj_Vb)^kDFD{|I~lo(V$(&jD~VcW<@AYr*5CK>h68RttscNs`=#BN6F= zuQK|8d`#tOwO*L-ZxUgB!FoJ3GrmDHSY9B)hQG5wG6vcT%eftX(uu$k5;J-my;Y+a z!;h0~OEY>Qw>sVXan#r;HG;-^c%jj5rLrB@EI9+4q=5wESmGI-7!YCCK$p3TCyMn} zyhhF;8R3QKY9JS3l9YjPT4ZH9OFgRE#koGHIe~j-k-Q2dw|!r<8@@lpf23*z{cEu8 z3XBAw^mxAA5u3L1dI zaE_srvxkqyOwAqNk6Kac`yZ$scPzjWN*qft)RH%M{S-_joCs%w!44;LGV39g_fbb?WX@62D+rpt zZ*LV-7nFKgVL%5g!fsVq9ywW}*LCK7T8e`tz0honXf+Cj#0=d=i=rnVQc^3)8TI4D zxe6wY#J(c2uSi3g)yw^&4vd^*ogHOgU2F9BH0B1huiR~Pr3_oCAFPEEBOiOGq70HnFDsQ>@~ diff --git a/gestao_raul/Lib/site-packages/pip/_vendor/cachecontrol/__pycache__/serialize.cpython-310.pyc b/gestao_raul/Lib/site-packages/pip/_vendor/cachecontrol/__pycache__/serialize.cpython-310.pyc index eef46367f94738e1b4ea0ee7f456e0f9cc19219d..1b785ec266831f7b6d5db16d01c38f0c96f34a67 100644 GIT binary patch literal 3343 zcmZ`*TW=f372cV>lAOahQWUyA;td2L_v+`L3E;C^S8k|?8HVh`tXcII5Z^Ub8QvsDAn z*X@69{dmbR{zaYX$3*9jVX$lu4Pgit8$H%xjM_Zr9gcr9HhWgb>e(H;=X9K&+i`nd z$J07iTtveDew7`g@9VWURj3S-QNUg5zuCZ9pW zgRSV(ddo(EHDBBlmC?MY7RJuP7sgk7v^X{jW3*J*W46V|3_zM`e~i@DMc7S6=y%g3 z50hNZ!Tm0SIDQE8Hr~e+oXcpyY~%UNIv=tjN1zZU3fCd~8-D?O{)3=tX1Q#cim$w{ z*sfxG@*KX?;%H;-7wf;vLYb|<4C6dqzn69gJ#3t{Jk&{sl3q*y4$cFHmC6otXQIBrN6JLs{%OgroH~{7B^=erfmI$XU*J%!28f<%dL^X8Q?I+aL@5jVST+{eIZ8qziSqNP-wZ-hyax`2n?Q z-?u!JKf%~-yc$zW>|kli+LKtT3h|G>8O7mId-~*6JT&CaXbM zuEow<7OU|(JCjGPrW{?d;%I(yAWdcS|FZG7SQajm<2(ZEfhVg1PMwa77%}bh1_;R- z+F(fNf=SIWFYH}Yeh&vM^j|C#Tv%XNQ-A@7PHvTb;VgrH!Rl_|VhC{;=|DD#Wtx)$ZT5n^yWI>D(FFUU zA_m>O88ksOadRN!INJDWwK;jtKrP+a3A_2q$)sXeWfSpjpVEOQtrpYJKbX&DkYt;o zysp`V_zAq&-5w;np-|Q!-@HZaC{dUnqh>U1&h=$T**-Z>2r;dyypBJ4m4v26v!C`$ zmi!@&{Rl!;o}eP{OPNXyMtzdEDpN4LOR5@%KO=oxQ;_m>t;yh}URhi5HcT5Zimopp z+VV<+v&_g=AR4oT*ahY={-$nnUS-akhFJxIIrn&tS={<#jV-zSyGHdqKX`Yl+TULD zObJt!o!ltM+Jj1tvPFjJ4gsVBEmfd}?=O~Ud1_D*10QAS(*1%;*VJdU3GYylnxLrI zRP}RW-!fKh476}<#9ztnr`4(hcD7{Y9q9cTuP#{bEP#AV=g&~tDG#uA%PZHVi&lvg zx?`1ro~PCV38GNgs5k%l+0p6m^}MEAoygS_%@67OX-#cBC~%VUw=^rt^Zg{~g}$$< zzTZp5Af|TB_g@TxxST1OjVN97wxrleikFVU6iRfA=me8QW8_pu2d`&Xj61d0)vMgC zz2@)Wz14WFby^Fw?dAYiN^C1ReM?YQ4$c)+iZp42XiX9pBppxstWh(#!>mm1Fgm53 zD^nvYlWT3ZQWiFr&vc=57N@l)b*^iqvot+({Jp*xYg7N1pUPV;Lw1|Nu#7TTGd+G0 Mz^?%j7UY8YUpKoW`Tzg` literal 4331 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 IcI;W}|3@&$zW@LL diff --git a/gestao_raul/Lib/site-packages/pip/_vendor/cachecontrol/__pycache__/wrapper.cpython-310.pyc b/gestao_raul/Lib/site-packages/pip/_vendor/cachecontrol/__pycache__/wrapper.cpython-310.pyc index 49b6cb2206d590898fa1107dba764911996ab8a1..b33e006aa66cf66024feeeaa30e16333748f43e6 100644 GIT binary patch literal 1460 zcmaJ>OOw+^5T4P?vMjUqE+H=hCUDUK`@Tg{1hW-FQmz!cIYgLJw9>GvV)S5U1jUy2 zlw5MiCBGoaEtP+yYfk(F$|t&KZLc>88I@XJKc=T&qq5)k2&_M5e;xg76Y@7Qo67>` z9wAiz3LqsZZ=6u)Y~V)jW-x=K-*qi z6s3w)Ru(ca+Wx`!-|j`zhkMhnznXp7def3~mY^1FccyW2%%)|bM9IHM<4Q3B;_ibi zQCbCzE7*&gNhMKnKbCBz*xKC8^~OHxAF^6xQe_Ej@b;O=VxFBaF*|52$)sEiRu0Ge zz(OFconRP?!P@(%8O_RqwLPtfn2L{NYaNy)Z#}v8xEP*$U+w4~uTEcFz7WjHV33?; z3js$7k0G9`>UG7Q{3DsCEBk(YR+gpl=wHUmvaL4^b*Gdq~!3bxNu>x1wtzb!;M$srimcavvbl<@*qk zPW)p;c&PXk$yFriFW70lD0)^yyIB+o14OL@qm&g#!bBtdy@Vr3a=c7(yqV;9SxViB z@Y;LL^d8-_wzpv>#mBHW+cLU9;|0QgdTeFR73g7^nY@JD#^ z;;&iop=iu`|r$&ExINu!qjB|M?ir|hF~^T8NN|#om`FSoswoK1G0hi* zD?cM8&xOnr)lJw;az-iPaYC^WYP)`gZzzciA~TkXg_}t^9}Wf!PZI$ww75Qzn*how zSUHoSuWUhJfKw0P*S0n|8X6j0ZEfQe&*k4P?rF_kYp;lRp#Ql&8%7hjRz!D%N*0~7 zq%6oxifBrN#4P5xq}7vk5%^#i`v5yZ^ None: logger.setLevel(logging.DEBUG) handler = logging.StreamHandler() logger.addHandler(handler) -def get_session(): +def get_session() -> requests.Session: adapter = CacheControlAdapter( DictCache(), cache_etags=True, serializer=None, heuristic=None ) @@ -27,17 +33,17 @@ def get_session(): sess.mount("http://", adapter) sess.mount("https://", adapter) - sess.cache_controller = adapter.controller + sess.cache_controller = adapter.controller # type: ignore[attr-defined] return sess -def get_args(): +def get_args() -> Namespace: parser = ArgumentParser() parser.add_argument("url", help="The URL to try and cache") return parser.parse_args() -def main(args=None): +def main() -> None: args = get_args() sess = get_session() @@ -48,10 +54,13 @@ def main(args=None): setup_logging() # try setting the cache - sess.cache_controller.cache_response(resp.request, resp.raw) + cache_controller: CacheController = ( + sess.cache_controller # type: ignore[attr-defined] + ) + cache_controller.cache_response(resp.request, resp.raw) # Now try to get it - if sess.cache_controller.cached_request(resp.request): + if cache_controller.cached_request(resp.request): print("Cached!") else: print("Not cached :(") diff --git a/gestao_raul/Lib/site-packages/pip/_vendor/cachecontrol/adapter.py b/gestao_raul/Lib/site-packages/pip/_vendor/cachecontrol/adapter.py index 94c75e1..34a9eb8 100644 --- a/gestao_raul/Lib/site-packages/pip/_vendor/cachecontrol/adapter.py +++ b/gestao_raul/Lib/site-packages/pip/_vendor/cachecontrol/adapter.py @@ -1,16 +1,26 @@ # SPDX-FileCopyrightText: 2015 Eric Larson # # SPDX-License-Identifier: Apache-2.0 +from __future__ import annotations -import types import functools +import types import zlib +from typing import TYPE_CHECKING, Any, Collection, Mapping from pip._vendor.requests.adapters import HTTPAdapter -from .controller import CacheController, PERMANENT_REDIRECT_STATUSES -from .cache import DictCache -from .filewrapper import CallbackFileWrapper +from pip._vendor.cachecontrol.cache import DictCache +from pip._vendor.cachecontrol.controller import PERMANENT_REDIRECT_STATUSES, CacheController +from pip._vendor.cachecontrol.filewrapper import CallbackFileWrapper + +if TYPE_CHECKING: + from pip._vendor.requests import PreparedRequest, Response + from pip._vendor.urllib3 import HTTPResponse + + from pip._vendor.cachecontrol.cache import BaseCache + from pip._vendor.cachecontrol.heuristics import BaseHeuristic + from pip._vendor.cachecontrol.serialize import Serializer class CacheControlAdapter(HTTPAdapter): @@ -18,16 +28,16 @@ class CacheControlAdapter(HTTPAdapter): def __init__( self, - cache=None, - cache_etags=True, - controller_class=None, - serializer=None, - heuristic=None, - cacheable_methods=None, - *args, - **kw - ): - super(CacheControlAdapter, self).__init__(*args, **kw) + cache: BaseCache | None = None, + cache_etags: bool = True, + controller_class: type[CacheController] | None = None, + serializer: Serializer | None = None, + heuristic: BaseHeuristic | None = None, + cacheable_methods: Collection[str] | None = None, + *args: Any, + **kw: Any, + ) -> None: + super().__init__(*args, **kw) self.cache = DictCache() if cache is None else cache self.heuristic = heuristic self.cacheable_methods = cacheable_methods or ("GET",) @@ -37,7 +47,16 @@ class CacheControlAdapter(HTTPAdapter): self.cache, cache_etags=cache_etags, serializer=serializer ) - def send(self, request, cacheable_methods=None, **kw): + def send( + self, + request: PreparedRequest, + stream: bool = False, + timeout: None | float | tuple[float, float] | tuple[float, None] = None, + verify: bool | str = True, + cert: (None | bytes | str | tuple[bytes | str, bytes | str]) = None, + proxies: Mapping[str, str] | None = None, + cacheable_methods: Collection[str] | None = None, + ) -> Response: """ Send a request. Use the request information to see if it exists in the cache and cache the response if we need to and can. @@ -54,13 +73,17 @@ class CacheControlAdapter(HTTPAdapter): # check for etags and add headers if appropriate request.headers.update(self.controller.conditional_headers(request)) - resp = super(CacheControlAdapter, self).send(request, **kw) + resp = super().send(request, stream, timeout, verify, cert, proxies) return resp - def build_response( - self, request, response, from_cache=False, cacheable_methods=None - ): + def build_response( # type: ignore[override] + self, + request: PreparedRequest, + response: HTTPResponse, + from_cache: bool = False, + cacheable_methods: Collection[str] | None = None, + ) -> Response: """ Build a response by making a request or using the cache. @@ -102,8 +125,8 @@ class CacheControlAdapter(HTTPAdapter): else: # Wrap the response file with a wrapper that will cache the # response when the stream has been consumed. - response._fp = CallbackFileWrapper( - response._fp, + response._fp = CallbackFileWrapper( # type: ignore[assignment] + response._fp, # type: ignore[arg-type] functools.partial( self.controller.cache_response, request, response ), @@ -111,27 +134,28 @@ class CacheControlAdapter(HTTPAdapter): if response.chunked: super_update_chunk_length = response._update_chunk_length - def _update_chunk_length(self): + def _update_chunk_length(self: HTTPResponse) -> None: super_update_chunk_length() if self.chunk_left == 0: - self._fp._close() + self._fp._close() # type: ignore[union-attr] - response._update_chunk_length = types.MethodType( + response._update_chunk_length = types.MethodType( # type: ignore[method-assign] _update_chunk_length, response ) - resp = super(CacheControlAdapter, self).build_response(request, response) + resp: Response = super().build_response(request, response) # See if we should invalidate the cache. if request.method in self.invalidating_methods and resp.ok: + assert request.url is not None cache_url = self.controller.cache_url(request.url) self.cache.delete(cache_url) # Give the request a from_cache attr to let people use it - resp.from_cache = from_cache + resp.from_cache = from_cache # type: ignore[attr-defined] return resp - def close(self): + def close(self) -> None: self.cache.close() - super(CacheControlAdapter, self).close() + super().close() # type: ignore[no-untyped-call] diff --git a/gestao_raul/Lib/site-packages/pip/_vendor/cachecontrol/cache.py b/gestao_raul/Lib/site-packages/pip/_vendor/cachecontrol/cache.py index 2a965f5..91598e9 100644 --- a/gestao_raul/Lib/site-packages/pip/_vendor/cachecontrol/cache.py +++ b/gestao_raul/Lib/site-packages/pip/_vendor/cachecontrol/cache.py @@ -6,38 +6,47 @@ The cache object API for implementing caches. The default is a thread safe in-memory dictionary. """ + +from __future__ import annotations + from threading import Lock +from typing import IO, TYPE_CHECKING, MutableMapping + +if TYPE_CHECKING: + from datetime import datetime -class BaseCache(object): - - def get(self, key): +class BaseCache: + def get(self, key: str) -> bytes | None: raise NotImplementedError() - def set(self, key, value, expires=None): + def set( + self, key: str, value: bytes, expires: int | datetime | None = None + ) -> None: raise NotImplementedError() - def delete(self, key): + def delete(self, key: str) -> None: raise NotImplementedError() - def close(self): + def close(self) -> None: pass class DictCache(BaseCache): - - def __init__(self, init_dict=None): + def __init__(self, init_dict: MutableMapping[str, bytes] | None = None) -> None: self.lock = Lock() self.data = init_dict or {} - def get(self, key): + def get(self, key: str) -> bytes | None: return self.data.get(key, None) - def set(self, key, value, expires=None): + def set( + self, key: str, value: bytes, expires: int | datetime | None = None + ) -> None: with self.lock: self.data.update({key: value}) - def delete(self, key): + def delete(self, key: str) -> None: with self.lock: if key in self.data: self.data.pop(key) @@ -55,10 +64,11 @@ class SeparateBodyBaseCache(BaseCache): Similarly, the body should be loaded separately via ``get_body()``. """ - def set_body(self, key, body): + + def set_body(self, key: str, body: bytes) -> None: raise NotImplementedError() - def get_body(self, key): + def get_body(self, key: str) -> IO[bytes] | None: """ Return the body as file-like object. """ diff --git a/gestao_raul/Lib/site-packages/pip/_vendor/cachecontrol/caches/__init__.py b/gestao_raul/Lib/site-packages/pip/_vendor/cachecontrol/caches/__init__.py index 3782729..24ff469 100644 --- a/gestao_raul/Lib/site-packages/pip/_vendor/cachecontrol/caches/__init__.py +++ b/gestao_raul/Lib/site-packages/pip/_vendor/cachecontrol/caches/__init__.py @@ -2,8 +2,7 @@ # # SPDX-License-Identifier: Apache-2.0 -from .file_cache import FileCache, SeparateBodyFileCache -from .redis_cache import RedisCache - +from pip._vendor.cachecontrol.caches.file_cache import FileCache, SeparateBodyFileCache +from pip._vendor.cachecontrol.caches.redis_cache import RedisCache __all__ = ["FileCache", "SeparateBodyFileCache", "RedisCache"] diff --git a/gestao_raul/Lib/site-packages/pip/_vendor/cachecontrol/caches/__pycache__/__init__.cpython-310.pyc b/gestao_raul/Lib/site-packages/pip/_vendor/cachecontrol/caches/__pycache__/__init__.cpython-310.pyc index dadb0df4c840f7b2c5c9454cff6df275aa612fed..5b60fe22e48bbdd9e1ca32e7d43e11a72c358a23 100644 GIT binary patch delta 167 zcmaFKw3wMMpO=@50SFfPtxnfxoXF?R$S^U=Ga^c>AhSR(zAQB_CBH~7IWajSH90@8 zq$ocJ!YS5E%gjlQ2TK$&0reL#1BobYLb@jImeFJbDF+e1GMueqLW@(2iet)Cb4v1K aT=J7kb5rw5ierL;oLrqJvoR(yG64V@7c~z6 delta 109 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 EKWg;mW&i*H literal 4961 zcmaJ_&2JmW72lct;BrNMSV`=BXB(hRSlDtCv_atpsbkd+49HY#*-^}@*seH3apmPM zGrN>TmMV%Uy|vAyXf8cSITT2M9(w7yf5%>X@_ Xx!hM6)Dk@yTlCVd*96az2AGY z>Flg$;Q7th_qRTO)-e7}mD7)l%5|jd3uM9&EH;|uKWj47dCa?J(`1G)g%w*}yJ>fw zrlae2T&P6w;CPnD zJkw*`nqv#h;{4k=m$NzMaF27QUc#^z($r(3b{#4EH8N?CIW)OoO|#0YX4R_NRa-o# zVa=MBv`bhYu%=T&x>+fK+;qi74Pn--iUsMlxws$}Ked`O;u-NQfL#+dfPJZ$4{l*k z8lrciy(k&Jz19hp6n@n0#gfi1%%e2%+o|$5)4bzPhWk6Aib9<4(yd3oV}|kQU&tCQ zQu6pA79f3VbpHW`ku8iqQ?-#({%cgTPuOryaAC%*%l9j=at^CEyVgFe9QHjA6x)M( ziQwE3_5s_k=Ju$1fSJ2kQ(Yao`%dEMRSor{QDxs5v5^r}fN>*mM<(*>$U^Ro9ON?s zIIla6;nn3ZNz&Z!XOdDNA{E4G>!BYe!ly#eio-1P^K?t*9jO$yXuzi374*?bpgeo$ zA*PKRhF^L9si(1e@8&iCcH*Z>NQHIutFY9ma~!07zuV7pzZ34rso5j}LC%j7AQhhf~8rRlljLFzT^vbZ>|E_G>x zeNnBm2Y>Tv#2Gt-Iv*mG{+5sD2ehQ_$g``EwkXcjPn|-uf{lj z)?>HAzqV!^=5h;m=rH%!5D%s2y%3XCp4)IDXGxFb+`OVwa44Gw0jpHjH80-eM#33wGD|6PW{VJhCyn z?r13rD~_^Ukp&l4FU&iIwVg(Z)>Yk7-`DM$kR95q6on1x+gUmB8 zvWsl^%#*vqm@`|N@J168Pqs9CMQ;ke@Uz){b7a!luNxfEgN5G#Vg~YIZyDK3yYOA~ zdw{f#{x$UH=HT+Um0EUb+XYvf*wRn%9z{wmEG0uxTp;^yr1`D1p9l@~@xIN6a-e=p zBYC@XX2W2LkI|PcAOrUUc@BH?am{oXe|&c97~LZ6jUQ6MM4N=_$=0DUfXy25BMyp$ z@M;O&Uve#Y;gtTTZfn&jvVg+gA>%G8a<2#5%(Td7#LZ+r#Ndox>cLRXiii<~CBi&x zk#ib9BH=k&yU5pTb}MZC zrm>!AruqOG>f^a@Ie-1zvs6(6 zVoGPEez2$H`d_gvF1vFGM9hEByBf{kzhH*+GI7>e}|XOP)0eUZr@U`(EDCR)@W#x zKtu{pK&l9W!V3cUoj$_0pr{4G$Nexq?x_TUNLxXmu3&0WgM)=n>B7yYLNj2wt@mm1 zTQtJn9ON(}(uTT2*@>ETN$cumbi9j{kvy&eJ=x@U=;!^1zu__0bSqwU&Z^BT8rwpe zdWiV1BWY!yj{hh?LfmEv3tVj%)kz#SY-woTQ=y0`R14#i*y0*uHZky{%+KJNDXL5S zE<$fLxa?=CPoYoNkMeL6F$P6=aj3S+5JaTANt}ivD}g^n&m`l7qX_6Fj08J6W+oz4 zctU+lASiMc8U&|~j82PgQ>6C4qO3h0*k@s~ucflH0f04VfmO0k>|RIKtA1%~Sd#r+4bmwGv&puz=?O4V_sH*&NVbJGR~7 ztEcb9lhaxnPddX-6JU`AO>GAJ1P5rII6%NmHA$iy$fn4~()&4AT6i-p?cXs+J3YFa zJx$8-;HSf%jQBMCkING$jpJ4KNk%Q`hg4dp>;$=Vh#JlRKtW4H@#^s9^UrN;6qR$0 z;+M46uf_|WddUexJwWdvQbt@&=Hc3IrDiE=pV}rNi_$VuhOaos!7jy>BX)>S6i4)F zgbg?D%Dk@HWJaOJ2!U9WateWu_TOCK)c#C-dbV zBG2qQdL-aTfn!nCiw1oaYk1bp!bG{K(hGIhx%{$#F+rXNG%6r3{!iMAj&y8~sSvgL zqPmK|V~?K8y?j@Nz4A(9mn+kFMd4229e)nMR~#*tHjtv)fU7BQLPUn8*Vhi8z@fQE rpRRu2c{(ZFcS|4j9$hd>*I~IZAad}WQ>liJ2d+I=Uu-UVwTu4)8?9y= diff --git a/gestao_raul/Lib/site-packages/pip/_vendor/cachecontrol/caches/__pycache__/redis_cache.cpython-310.pyc b/gestao_raul/Lib/site-packages/pip/_vendor/cachecontrol/caches/__pycache__/redis_cache.cpython-310.pyc index 25d79771c615760e410fe0e349aedf32dc2cb445..04bc271bb183585b3d64aa1645b16a351089662c 100644 GIT binary patch literal 2034 zcmZuyUvJws5GO^+mKDXz-!^TtP8~381~%tmZ^N(+b%VB8VGPX*Y?=!}5t&4ZEV(4z zG=}n&yzV>1dkglB^tz{gg}iikbeuR@1dur1k-YmIe|IY8=RE@7U){fV_Z>q1!Nu%n z!{R4GsQL{APB_g-pN5p8Y-Lv83avg1nOU>U?mMAlWIL<%>tUS|;mFTnuamj`M%bX_ zIpH;4KP9{_>L)DpxVuGKjepT+i&k@So)9IN3w1^IGs!C3xZNcLn4XXaxx=C!xh3aEI4U?U3<@+~ac~ z*$tmR;_G~oFP#Dy{wZJPE1<9O$9$FF1E~(ueZB^g%Y6v`v&u6rO#qdh6nTE(8_gfv zM_Q=2RZR*#lzC-$0YGBSgoQGW4yG7iqNF8>Ah}!QoOWAOHb4i7u$9Pm%;KELPe6BZ z(D|_xknI%}#GuC>Hw+WS^YTl8)&Xk@KKvSq5vxc7;B-WD`_!2`7X;nHEr5g=qzb z3CX9U=1fR%v|Bmv<7_A@$HY?A#fL#Eg}PWxa}AMA*)7Pbh+H2(4F}E~Is=d-V zn;Vl83ip{3+M1*SY$dzawJcylRnwz1-zi%DWonerm6xhChj-2sAu*#B%Zo#aFe*0G ziF|}oU5Y^#Cy)g=B0f|Mz*qAc$}Ec%K0H^g+Dwk`!y)+qrmzmTMQ~5$aNt;cJNxUf z2RAEx8k;RqkNRe~be*nPH(mo=|Bv`r9Kg4nrgm(4%Pk(%z(2$;@4?2~QG5Y99EJl6 zbhJ3bfyuFif_eHOc`-reT>}s%j>qH~dFviS^#K(vq#`Bn91etRS)-RPL^cpI*ePU? zWFnSnz8l0@7U(?@0O3`T=0S{finpN?wF4;3;4syDUU2y(@eq63lWvPmp3lZ(663xL zROJ{qUx8U637f1*?T@2{8E9t14P=NChe3uAFQfm_oC=0Yr~sRjNHCOOP!t*9_&Ugo zAQyrMx&UwmM2@JgH@3Sb1#E!JEmyZQTkIj4j(hme}6p98OsCpfwe} ze5J)go>ad(V=`=9LlaU`KD^p~_a#Pa&A4e`^UCACh@#4iqJF`L8OnYXy&J~a#3He; znQkJH)RTAl5+!_s8O9m(ruDdBKtbW;LO=AFW&0n!rpKB!iPmmw4n6J+q4$GFiOe%q zIw{baJ{my&CH!?s_!t^;`?4XolbMD*Sx6*7=t%6!vX1wlgS+CY-0vq4e?TfId@`Rc NFrWICZTWPC{RhJ*$SD8- literal 1619 zcmZ`(OOM+&5avUYWv%UOn*eS!MM?mDbEpm9c4+=(H~G@xSD+=O(x6 z+hv-)N#WLfnJ;nYm?U|b+awvHyXbdBR}Z() z#v6IIj}fEkFb;re$nWHaHgrv=L7#EXg6VOG%6ngInx8W z8ts?{)k%hBvl+H1T>(vrWevCdis`R$z46xMQ}Uj>dwxT0(D0ky znp{!P;8=3g&V7(Ie0$cx2=8DRW!nhqt%N+3nbL^94QiW})n)60RK0C^UfOnOE1MRH zQIKV6V$VU>BfRckq(!aTo_f2?wKDsmcmQ`E0vU{nM?a7z}aIUmx@EW`e-K=omxggyct*zm=Ko?0ZeCjOxiE@9J;|n!9ih8KOjT$PnV4 z_uo4$Q5$6h_OQy(6|t@upVMtLhR{9n YA-iq(T?gSghTPysG4KX#Kp*k{0BqJ}6aWAK diff --git a/gestao_raul/Lib/site-packages/pip/_vendor/cachecontrol/caches/file_cache.py b/gestao_raul/Lib/site-packages/pip/_vendor/cachecontrol/caches/file_cache.py index f1ddb2e..81d2ef4 100644 --- a/gestao_raul/Lib/site-packages/pip/_vendor/cachecontrol/caches/file_cache.py +++ b/gestao_raul/Lib/site-packages/pip/_vendor/cachecontrol/caches/file_cache.py @@ -1,22 +1,24 @@ # SPDX-FileCopyrightText: 2015 Eric Larson # # SPDX-License-Identifier: Apache-2.0 +from __future__ import annotations import hashlib import os from textwrap import dedent +from typing import IO, TYPE_CHECKING +from pathlib import Path -from ..cache import BaseCache, SeparateBodyBaseCache -from ..controller import CacheController +from pip._vendor.cachecontrol.cache import BaseCache, SeparateBodyBaseCache +from pip._vendor.cachecontrol.controller import CacheController -try: - FileNotFoundError -except NameError: - # py2.X - FileNotFoundError = (IOError, OSError) +if TYPE_CHECKING: + from datetime import datetime + + from filelock import BaseFileLock -def _secure_open_write(filename, fmode): +def _secure_open_write(filename: str, fmode: int) -> IO[bytes]: # We only want to write to this file, so open it in write only mode flags = os.O_WRONLY @@ -39,7 +41,7 @@ def _secure_open_write(filename, fmode): # there try: os.remove(filename) - except (IOError, OSError): + except OSError: # The file must not exist already, so we can just skip ahead to opening pass @@ -62,37 +64,27 @@ class _FileCacheMixin: 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") - + directory: str | Path, + forever: bool = False, + filemode: int = 0o0600, + dirmode: int = 0o0700, + lock_class: type[BaseFileLock] | None = None, + ) -> None: try: - from lockfile import LockFile - from lockfile.mkdirlockfile import MkdirLockFile + if lock_class is None: + from filelock import FileLock + + lock_class = FileLock 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 + filelock installed. You can install it via pip: + pip install cachecontrol[filecache] """ ) 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 @@ -100,17 +92,17 @@ class _FileCacheMixin: self.lock_class = lock_class @staticmethod - def encode(x): + def encode(x: str) -> str: return hashlib.sha224(x.encode()).hexdigest() - def _fn(self, name): + def _fn(self, name: str) -> str: # 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): + def get(self, key: str) -> bytes | None: name = self._fn(key) try: with open(name, "rb") as fh: @@ -119,26 +111,28 @@ class _FileCacheMixin: except FileNotFoundError: return None - def set(self, key, value, expires=None): + def set( + self, key: str, value: bytes, expires: int | datetime | None = None + ) -> None: name = self._fn(key) self._write(name, value) - def _write(self, path, data: bytes): + def _write(self, path: str, data: bytes) -> None: """ Safely write the data to the given path. """ # Make sure the directory exists try: os.makedirs(os.path.dirname(path), self.dirmode) - except (IOError, OSError): + except OSError: pass - with self.lock_class(path) as lock: + with self.lock_class(path + ".lock"): # Write our actual file - with _secure_open_write(lock.path, self.filemode) as fh: + with _secure_open_write(path, self.filemode) as fh: fh.write(data) - def _delete(self, key, suffix): + def _delete(self, key: str, suffix: str) -> None: name = self._fn(key) + suffix if not self.forever: try: @@ -153,7 +147,7 @@ class FileCache(_FileCacheMixin, BaseCache): downloads. """ - def delete(self, key): + def delete(self, key: str) -> None: self._delete(key, "") @@ -163,23 +157,23 @@ class SeparateBodyFileCache(_FileCacheMixin, SeparateBodyBaseCache): peak memory usage. """ - def get_body(self, key): + def get_body(self, key: str) -> IO[bytes] | None: name = self._fn(key) + ".body" try: return open(name, "rb") except FileNotFoundError: return None - def set_body(self, key, body): + def set_body(self, key: str, body: bytes) -> None: name = self._fn(key) + ".body" self._write(name, body) - def delete(self, key): + def delete(self, key: str) -> None: self._delete(key, "") self._delete(key, ".body") -def url_to_file_path(url, filecache): +def url_to_file_path(url: str, filecache: FileCache) -> str: """Return the file cache path based on the URL. This does not ensure the file exists! diff --git a/gestao_raul/Lib/site-packages/pip/_vendor/cachecontrol/caches/redis_cache.py b/gestao_raul/Lib/site-packages/pip/_vendor/cachecontrol/caches/redis_cache.py index 2cba4b0..f4f68c4 100644 --- a/gestao_raul/Lib/site-packages/pip/_vendor/cachecontrol/caches/redis_cache.py +++ b/gestao_raul/Lib/site-packages/pip/_vendor/cachecontrol/caches/redis_cache.py @@ -1,39 +1,48 @@ # SPDX-FileCopyrightText: 2015 Eric Larson # # SPDX-License-Identifier: Apache-2.0 +from __future__ import annotations -from __future__ import division -from datetime import datetime +from datetime import datetime, timezone +from typing import TYPE_CHECKING + from pip._vendor.cachecontrol.cache import BaseCache +if TYPE_CHECKING: + from redis import Redis + class RedisCache(BaseCache): - - def __init__(self, conn): + def __init__(self, conn: Redis[bytes]) -> None: self.conn = conn - def get(self, key): + def get(self, key: str) -> bytes | None: return self.conn.get(key) - def set(self, key, value, expires=None): + def set( + self, key: str, value: bytes, expires: int | datetime | None = None + ) -> None: if not expires: self.conn.set(key, value) elif isinstance(expires, datetime): - expires = expires - datetime.utcnow() - self.conn.setex(key, int(expires.total_seconds()), value) + now_utc = datetime.now(timezone.utc) + if expires.tzinfo is None: + now_utc = now_utc.replace(tzinfo=None) + delta = expires - now_utc + self.conn.setex(key, int(delta.total_seconds()), value) else: self.conn.setex(key, expires, value) - def delete(self, key): + def delete(self, key: str) -> None: self.conn.delete(key) - def clear(self): + def clear(self) -> None: """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): + def close(self) -> None: """Redis uses connection pooling, no need to close the connection.""" pass diff --git a/gestao_raul/Lib/site-packages/pip/_vendor/cachecontrol/compat.py b/gestao_raul/Lib/site-packages/pip/_vendor/cachecontrol/compat.py deleted file mode 100644 index ccec937..0000000 --- a/gestao_raul/Lib/site-packages/pip/_vendor/cachecontrol/compat.py +++ /dev/null @@ -1,32 +0,0 @@ -# SPDX-FileCopyrightText: 2015 Eric Larson -# -# SPDX-License-Identifier: Apache-2.0 - -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/gestao_raul/Lib/site-packages/pip/_vendor/cachecontrol/controller.py b/gestao_raul/Lib/site-packages/pip/_vendor/cachecontrol/controller.py index 7f23529..f0ff6e1 100644 --- a/gestao_raul/Lib/site-packages/pip/_vendor/cachecontrol/controller.py +++ b/gestao_raul/Lib/site-packages/pip/_vendor/cachecontrol/controller.py @@ -5,17 +5,28 @@ """ The httplib2 algorithms ported for use with requests. """ + +from __future__ import annotations + +import calendar import logging import re -import calendar import time from email.utils import parsedate_tz +from typing import TYPE_CHECKING, Collection, Mapping from pip._vendor.requests.structures import CaseInsensitiveDict -from .cache import DictCache, SeparateBodyBaseCache -from .serialize import Serializer +from pip._vendor.cachecontrol.cache import DictCache, SeparateBodyBaseCache +from pip._vendor.cachecontrol.serialize import Serializer +if TYPE_CHECKING: + from typing import Literal + + from pip._vendor.requests import PreparedRequest + from pip._vendor.urllib3 import HTTPResponse + + from pip._vendor.cachecontrol.cache import BaseCache logger = logging.getLogger(__name__) @@ -24,20 +35,26 @@ URI = re.compile(r"^(([^:/?#]+):)?(//([^/?#]*))?([^?#]*)(\?([^#]*))?(#(.*))?") PERMANENT_REDIRECT_STATUSES = (301, 308) -def parse_uri(uri): +def parse_uri(uri: str) -> tuple[str, str, str, str, str]: """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() + match = URI.match(uri) + assert match is not None + groups = match.groups() return (groups[1], groups[3], groups[4], groups[6], groups[8]) -class CacheController(object): +class CacheController: """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: BaseCache | None = None, + cache_etags: bool = True, + serializer: Serializer | None = None, + status_codes: Collection[int] | None = None, ): self.cache = DictCache() if cache is None else cache self.cache_etags = cache_etags @@ -45,7 +62,7 @@ class CacheController(object): self.cacheable_status_codes = status_codes or (200, 203, 300, 301, 308) @classmethod - def _urlnorm(cls, uri): + def _urlnorm(cls, uri: str) -> str: """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: @@ -65,10 +82,10 @@ class CacheController(object): return defrag_uri @classmethod - def cache_url(cls, uri): + def cache_url(cls, uri: str) -> str: return cls._urlnorm(uri) - def parse_cache_control(self, headers): + def parse_cache_control(self, headers: Mapping[str, str]) -> dict[str, int | None]: known_directives = { # https://tools.ietf.org/html/rfc7234#section-5.2 "max-age": (int, True), @@ -87,7 +104,7 @@ class CacheController(object): cc_headers = headers.get("cache-control", headers.get("Cache-Control", "")) - retval = {} + retval: dict[str, int | None] = {} for cc_directive in cc_headers.split(","): if not cc_directive.strip(): @@ -122,11 +139,38 @@ class CacheController(object): return retval - def cached_request(self, request): + def _load_from_cache(self, request: PreparedRequest) -> HTTPResponse | None: + """ + Load a cached response, or return None if it's not available. + """ + # We do not support caching of partial content: so if the request contains a + # Range header then we don't want to load anything from the cache. + if "Range" in request.headers: + return None + + cache_url = request.url + assert cache_url is not None + cache_data = self.cache.get(cache_url) + if cache_data is None: + logger.debug("No cache entry available") + return None + + if isinstance(self.cache, SeparateBodyBaseCache): + body_file = self.cache.get_body(cache_url) + else: + body_file = None + + result = self.serializer.loads(request, cache_data, body_file) + if result is None: + logger.warning("Cache entry deserialization failed, entry ignored") + return result + + def cached_request(self, request: PreparedRequest) -> HTTPResponse | Literal[False]: """ Return a cached response if it exists in the cache, otherwise return False. """ + assert request.url is not None cache_url = self.cache_url(request.url) logger.debug('Looking up "%s" in the cache', cache_url) cc = self.parse_cache_control(request.headers) @@ -140,21 +184,9 @@ class CacheController(object): 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 - - if isinstance(self.cache, SeparateBodyBaseCache): - body_file = self.cache.get_body(cache_url) - else: - body_file = None - - # Check whether it can be deserialized - resp = self.serializer.loads(request, cache_data, body_file) + # Check whether we can load the response from the cache: + resp = self._load_from_cache(request) if not resp: - logger.warning("Cache entry deserialization failed, entry ignored") return False # If we have a cached permanent redirect, return it immediately. We @@ -174,7 +206,7 @@ class CacheController(object): logger.debug(msg) return resp - headers = CaseInsensitiveDict(resp.headers) + headers: CaseInsensitiveDict[str] = 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 @@ -185,7 +217,9 @@ class CacheController(object): return False now = time.time() - date = calendar.timegm(parsedate_tz(headers["date"])) + time_tuple = parsedate_tz(headers["date"]) + assert time_tuple is not None + date = calendar.timegm(time_tuple[:6]) current_age = max(0, now - date) logger.debug("Current age based on date: %i", current_age) @@ -199,28 +233,30 @@ class CacheController(object): 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"] + max_age = resp_cc.get("max-age") + if max_age is not None: + freshness_lifetime = 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 + expire_time = calendar.timegm(expires[:6]) - 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"] + max_age = cc.get("max-age") + if max_age is not None: + freshness_lifetime = max_age logger.debug( "Freshness lifetime from request max-age: %i", freshness_lifetime ) - if "min-fresh" in cc: - min_fresh = cc["min-fresh"] + min_fresh = cc.get("min-fresh") + if min_fresh is not None: # adjust our current age by our min fresh current_age += min_fresh logger.debug("Adjusted current age from min-fresh: %i", current_age) @@ -239,13 +275,12 @@ class CacheController(object): # 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)) + def conditional_headers(self, request: PreparedRequest) -> dict[str, str]: + resp = self._load_from_cache(request) new_headers = {} if resp: - headers = CaseInsensitiveDict(resp.headers) + headers: CaseInsensitiveDict[str] = CaseInsensitiveDict(resp.headers) if "etag" in headers: new_headers["If-None-Match"] = headers["ETag"] @@ -255,7 +290,14 @@ class CacheController(object): return new_headers - def _cache_set(self, cache_url, request, response, body=None, expires_time=None): + def _cache_set( + self, + cache_url: str, + request: PreparedRequest, + response: HTTPResponse, + body: bytes | None = None, + expires_time: int | None = None, + ) -> None: """ Store the data in the cache. """ @@ -267,7 +309,10 @@ class CacheController(object): self.serializer.dumps(request, response, b""), expires=expires_time, ) - self.cache.set_body(cache_url, body) + # body is None can happen when, for example, we're only updating + # headers, as is the case in update_cached_response(). + if body is not None: + self.cache.set_body(cache_url, body) else: self.cache.set( cache_url, @@ -275,7 +320,13 @@ class CacheController(object): expires=expires_time, ) - def cache_response(self, request, response, body=None, status_codes=None): + def cache_response( + self, + request: PreparedRequest, + response: HTTPResponse, + body: bytes | None = None, + status_codes: Collection[int] | None = None, + ) -> None: """ Algorithm for caching requests. @@ -290,10 +341,14 @@ class CacheController(object): ) return - response_headers = CaseInsensitiveDict(response.headers) + response_headers: CaseInsensitiveDict[str] = CaseInsensitiveDict( + response.headers + ) if "date" in response_headers: - date = calendar.timegm(parsedate_tz(response_headers["date"])) + time_tuple = parsedate_tz(response_headers["date"]) + assert time_tuple is not None + date = calendar.timegm(time_tuple[:6]) else: date = 0 @@ -312,6 +367,7 @@ class CacheController(object): cc_req = self.parse_cache_control(request.headers) cc = self.parse_cache_control(response_headers) + assert request.url is not None cache_url = self.cache_url(request.url) logger.debug('Updating cache with response from "%s"', cache_url) @@ -344,11 +400,11 @@ class CacheController(object): if response_headers.get("expires"): expires = parsedate_tz(response_headers["expires"]) if expires is not None: - expires_time = calendar.timegm(expires) - date + expires_time = calendar.timegm(expires[:6]) - date expires_time = max(expires_time, 14 * 86400) - logger.debug("etag object cached for {0} seconds".format(expires_time)) + logger.debug(f"etag object cached for {expires_time} seconds") logger.debug("Caching due to etag") self._cache_set(cache_url, request, response, body, expires_time) @@ -362,11 +418,14 @@ class CacheController(object): # is no date header then we can't do anything about expiring # the cache. elif "date" in response_headers: - date = calendar.timegm(parsedate_tz(response_headers["date"])) + time_tuple = parsedate_tz(response_headers["date"]) + assert time_tuple is not None + date = calendar.timegm(time_tuple[:6]) # cache when there is a max-age > 0 - if "max-age" in cc and cc["max-age"] > 0: + max_age = cc.get("max-age") + if max_age is not None and max_age > 0: logger.debug("Caching b/c date exists and max-age > 0") - expires_time = cc["max-age"] + expires_time = max_age self._cache_set( cache_url, request, @@ -381,12 +440,12 @@ class CacheController(object): if response_headers["expires"]: expires = parsedate_tz(response_headers["expires"]) if expires is not None: - expires_time = calendar.timegm(expires) - date + expires_time = calendar.timegm(expires[:6]) - date else: expires_time = None logger.debug( - "Caching b/c of expires header. expires in {0} seconds".format( + "Caching b/c of expires header. expires in {} seconds".format( expires_time ) ) @@ -398,16 +457,18 @@ class CacheController(object): expires_time, ) - def update_cached_response(self, request, response): + def update_cached_response( + self, request: PreparedRequest, response: HTTPResponse + ) -> HTTPResponse: """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. """ + assert request.url is not None cache_url = self.cache_url(request.url) - - cached_response = self.serializer.loads(request, self.cache.get(cache_url)) + cached_response = self._load_from_cache(request) if not cached_response: # we didn't have a cached response @@ -423,11 +484,11 @@ class CacheController(object): excluded_headers = ["content-length"] cached_response.headers.update( - dict( - (k, v) + { + 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 diff --git a/gestao_raul/Lib/site-packages/pip/_vendor/cachecontrol/filewrapper.py b/gestao_raul/Lib/site-packages/pip/_vendor/cachecontrol/filewrapper.py index f5ed5f6..37d2fa5 100644 --- a/gestao_raul/Lib/site-packages/pip/_vendor/cachecontrol/filewrapper.py +++ b/gestao_raul/Lib/site-packages/pip/_vendor/cachecontrol/filewrapper.py @@ -1,12 +1,17 @@ # SPDX-FileCopyrightText: 2015 Eric Larson # # SPDX-License-Identifier: Apache-2.0 +from __future__ import annotations -from tempfile import NamedTemporaryFile import mmap +from tempfile import NamedTemporaryFile +from typing import TYPE_CHECKING, Any, Callable + +if TYPE_CHECKING: + from http.client import HTTPResponse -class CallbackFileWrapper(object): +class CallbackFileWrapper: """ 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 @@ -25,16 +30,18 @@ class CallbackFileWrapper(object): performance impact. """ - def __init__(self, fp, callback): + def __init__( + self, fp: HTTPResponse, callback: Callable[[bytes], None] | None + ) -> None: self.__buf = NamedTemporaryFile("rb+", delete=True) self.__fp = fp self.__callback = callback - def __getattr__(self, name): - # The vaguaries of garbage collection means that self.__fp is + def __getattr__(self, name: str) -> Any: + # The vagaries 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 + # AttributeError when it doesn't exist. This stop things from # infinitely recursing calls to getattr in the case where # self.__fp hasn't been set. # @@ -42,7 +49,7 @@ class CallbackFileWrapper(object): fp = self.__getattribute__("_CallbackFileWrapper__fp") return getattr(fp, name) - def __is_fp_closed(self): + def __is_fp_closed(self) -> bool: try: return self.__fp.fp is None @@ -50,7 +57,8 @@ class CallbackFileWrapper(object): pass try: - return self.__fp.closed + closed: bool = self.__fp.closed + return closed except AttributeError: pass @@ -59,7 +67,7 @@ class CallbackFileWrapper(object): # TODO: Add some logging here... return False - def _close(self): + def _close(self) -> None: if self.__callback: if self.__buf.tell() == 0: # Empty file: @@ -86,8 +94,8 @@ class CallbackFileWrapper(object): # Important when caching big files. self.__buf.close() - def read(self, amt=None): - data = self.__fp.read(amt) + def read(self, amt: int | None = None) -> bytes: + data: bytes = self.__fp.read(amt) if data: # We may be dealing with b'', a sign that things are over: # it's passed e.g. after we've already closed self.__buf. @@ -97,8 +105,8 @@ class CallbackFileWrapper(object): return data - def _safe_read(self, amt): - data = self.__fp._safe_read(amt) + def _safe_read(self, amt: int) -> bytes: + data: bytes = self.__fp._safe_read(amt) # type: ignore[attr-defined] if amt == 2 and data == b"\r\n": # urllib executes this read to toss the CRLF at the end # of the chunk. diff --git a/gestao_raul/Lib/site-packages/pip/_vendor/cachecontrol/heuristics.py b/gestao_raul/Lib/site-packages/pip/_vendor/cachecontrol/heuristics.py index ebe4a96..b778c4f 100644 --- a/gestao_raul/Lib/site-packages/pip/_vendor/cachecontrol/heuristics.py +++ b/gestao_raul/Lib/site-packages/pip/_vendor/cachecontrol/heuristics.py @@ -1,29 +1,31 @@ # SPDX-FileCopyrightText: 2015 Eric Larson # # SPDX-License-Identifier: Apache-2.0 +from __future__ import annotations import calendar import time - +from datetime import datetime, timedelta, timezone from email.utils import formatdate, parsedate, parsedate_tz +from typing import TYPE_CHECKING, Any, Mapping -from datetime import datetime, timedelta +if TYPE_CHECKING: + from pip._vendor.urllib3 import HTTPResponse TIME_FMT = "%a, %d %b %Y %H:%M:%S GMT" -def expire_after(delta, date=None): - date = date or datetime.utcnow() +def expire_after(delta: timedelta, date: datetime | None = None) -> datetime: + date = date or datetime.now(timezone.utc) return date + delta -def datetime_to_header(dt): +def datetime_to_header(dt: datetime) -> str: return formatdate(calendar.timegm(dt.timetuple())) -class BaseHeuristic(object): - - def warning(self, response): +class BaseHeuristic: + def warning(self, response: HTTPResponse) -> str | None: """ Return a valid 1xx warning header value describing the cache adjustments. @@ -34,7 +36,7 @@ class BaseHeuristic(object): """ return '110 - "Response is Stale"' - def update_headers(self, response): + def update_headers(self, response: HTTPResponse) -> dict[str, str]: """Update the response headers with any new headers. NOTE: This SHOULD always include some Warning header to @@ -43,7 +45,7 @@ class BaseHeuristic(object): """ return {} - def apply(self, response): + def apply(self, response: HTTPResponse) -> HTTPResponse: updated_headers = self.update_headers(response) if updated_headers: @@ -61,12 +63,15 @@ class OneDayCache(BaseHeuristic): future. """ - def update_headers(self, response): + def update_headers(self, response: HTTPResponse) -> dict[str, str]: headers = {} if "expires" not in response.headers: date = parsedate(response.headers["date"]) - expires = expire_after(timedelta(days=1), date=datetime(*date[:6])) + expires = expire_after( + timedelta(days=1), + date=datetime(*date[:6], tzinfo=timezone.utc), # type: ignore[index,misc] + ) headers["expires"] = datetime_to_header(expires) headers["cache-control"] = "public" return headers @@ -77,14 +82,14 @@ class ExpiresAfter(BaseHeuristic): Cache **all** requests for a defined time period. """ - def __init__(self, **kw): + def __init__(self, **kw: Any) -> None: self.delta = timedelta(**kw) - def update_headers(self, response): + def update_headers(self, response: HTTPResponse) -> dict[str, str]: expires = expire_after(self.delta) return {"expires": datetime_to_header(expires), "cache-control": "public"} - def warning(self, response): + def warning(self, response: HTTPResponse) -> str | None: tmpl = "110 - Automatically cached for %s. Response might be stale" return tmpl % self.delta @@ -101,12 +106,23 @@ class LastModified(BaseHeuristic): 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 + 200, + 203, + 204, + 206, + 300, + 301, + 404, + 405, + 410, + 414, + 501, } - def update_headers(self, resp): - headers = resp.headers + def update_headers(self, resp: HTTPResponse) -> dict[str, str]: + headers: Mapping[str, str] = resp.headers if "expires" in headers: return {} @@ -120,9 +136,11 @@ class LastModified(BaseHeuristic): if "date" not in headers or "last-modified" not in headers: return {} - date = calendar.timegm(parsedate_tz(headers["date"])) + time_tuple = parsedate_tz(headers["date"]) + assert time_tuple is not None + date = calendar.timegm(time_tuple[:6]) last_modified = parsedate(headers["last-modified"]) - if date is None or last_modified is None: + if last_modified is None: return {} now = time.time() @@ -135,5 +153,5 @@ class LastModified(BaseHeuristic): expires = date + freshness_lifetime return {"expires": time.strftime(TIME_FMT, time.gmtime(expires))} - def warning(self, resp): + def warning(self, resp: HTTPResponse) -> str | None: return None diff --git a/gestao_raul/Lib/site-packages/pip/_vendor/cachecontrol/py.typed b/gestao_raul/Lib/site-packages/pip/_vendor/cachecontrol/py.typed new file mode 100644 index 0000000..e69de29 diff --git a/gestao_raul/Lib/site-packages/pip/_vendor/cachecontrol/serialize.py b/gestao_raul/Lib/site-packages/pip/_vendor/cachecontrol/serialize.py index 7fe1a3e..a49487a 100644 --- a/gestao_raul/Lib/site-packages/pip/_vendor/cachecontrol/serialize.py +++ b/gestao_raul/Lib/site-packages/pip/_vendor/cachecontrol/serialize.py @@ -1,105 +1,91 @@ # SPDX-FileCopyrightText: 2015 Eric Larson # # SPDX-License-Identifier: Apache-2.0 +from __future__ import annotations -import base64 import io -import json -import zlib +from typing import IO, TYPE_CHECKING, Any, Mapping, cast from pip._vendor import msgpack from pip._vendor.requests.structures import CaseInsensitiveDict +from pip._vendor.urllib3 import HTTPResponse -from .compat import HTTPResponse, pickle, text_type +if TYPE_CHECKING: + from pip._vendor.requests import PreparedRequest -def _b64_decode_bytes(b): - return base64.b64decode(b.encode("ascii")) +class Serializer: + serde_version = "4" - -def _b64_decode_str(s): - return _b64_decode_bytes(s).decode("utf8") - - -_default_body_read = object() - - -class Serializer(object): - def dumps(self, request, response, body=None): - response_headers = CaseInsensitiveDict(response.headers) + def dumps( + self, + request: PreparedRequest, + response: HTTPResponse, + body: bytes | None = None, + ) -> bytes: + response_headers: CaseInsensitiveDict[str] = CaseInsensitiveDict( + response.headers + ) if body is None: # When a body isn't passed in, we'll read the response. We # also update the response with a new file handler to be # sure it acts as though it was never read. body = response.read(decode_content=False) - response._fp = io.BytesIO(body) + response._fp = io.BytesIO(body) # type: ignore[assignment] + response.length_remaining = len(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, # Empty bytestring if body is stored separately - 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, + "response": { + "body": body, # Empty bytestring if body is stored separately + "headers": {str(k): str(v) for k, v in response.headers.items()}, + "status": response.status, + "version": response.version, + "reason": str(response.reason), + "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(",") + data["vary"] = {} + if "vary" in response_headers: + varied_headers = response_headers["vary"].split(",") for header in varied_headers: - header = text_type(header).strip() + header = str(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 + header_value = str(header_value) + data["vary"][header] = header_value - return b",".join([b"cc=4", msgpack.dumps(data, use_bin_type=True)]) + return b",".join([f"cc={self.serde_version}".encode(), self.serialize(data)]) - def loads(self, request, data, body_file=None): + def serialize(self, data: dict[str, Any]) -> bytes: + return cast(bytes, msgpack.dumps(data, use_bin_type=True)) + + def loads( + self, + request: PreparedRequest, + data: bytes, + body_file: IO[bytes] | None = None, + ) -> HTTPResponse | None: # Short circuit if we've been given an empty set of data if not data: - return + return None - # Determine what version of the serializer the data was serialized - # with - try: - ver, data = data.split(b",", 1) - except ValueError: - ver = b"cc=0" + # Previous versions of this library supported other serialization + # formats, but these have all been removed. + if not data.startswith(f"cc={self.serde_version},".encode()): + return None - # 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" + data = data[5:] + return self._loads_v4(request, data, body_file) - # 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, body_file) - - 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, body_file=None): + def prepare_response( + self, + request: PreparedRequest, + cached: Mapping[str, Any], + body_file: IO[bytes] | None = None, + ) -> HTTPResponse | None: """Verify our vary headers match and construct a real urllib3 HTTPResponse object. """ @@ -108,23 +94,26 @@ class Serializer(object): # 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 + return None # 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 + return None body_raw = cached["response"].pop("body") - headers = CaseInsensitiveDict(data=cached["response"]["headers"]) + headers: CaseInsensitiveDict[str] = CaseInsensitiveDict( + data=cached["response"]["headers"] + ) if headers.get("transfer-encoding", "") == "chunked": headers.pop("transfer-encoding") cached["response"]["headers"] = headers try: + body: IO[bytes] if body_file is None: body = io.BytesIO(body_raw) else: @@ -138,53 +127,20 @@ class Serializer(object): # TypeError: 'str' does not support the buffer interface body = io.BytesIO(body_raw.encode("utf8")) + # Discard any `strict` parameter serialized by older version of cachecontrol. + cached["response"].pop("strict", None) + return HTTPResponse(body=body, preload_content=False, **cached["response"]) - def _loads_v0(self, request, data, body_file=None): - # 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, body_file=None): - try: - cached = pickle.loads(data) - except ValueError: - return - - return self.prepare_response(request, cached, body_file) - - def _loads_v2(self, request, data, body_file=None): - assert body_file is None - 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, body_file) - - def _loads_v3(self, request, data, body_file): - # 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, body_file=None): + def _loads_v4( + self, + request: PreparedRequest, + data: bytes, + body_file: IO[bytes] | None = None, + ) -> HTTPResponse | None: try: cached = msgpack.loads(data, raw=False) except ValueError: - return + return None return self.prepare_response(request, cached, body_file) diff --git a/gestao_raul/Lib/site-packages/pip/_vendor/cachecontrol/wrapper.py b/gestao_raul/Lib/site-packages/pip/_vendor/cachecontrol/wrapper.py index b6ee7f2..f618bc3 100644 --- a/gestao_raul/Lib/site-packages/pip/_vendor/cachecontrol/wrapper.py +++ b/gestao_raul/Lib/site-packages/pip/_vendor/cachecontrol/wrapper.py @@ -1,22 +1,32 @@ # SPDX-FileCopyrightText: 2015 Eric Larson # # SPDX-License-Identifier: Apache-2.0 +from __future__ import annotations -from .adapter import CacheControlAdapter -from .cache import DictCache +from typing import TYPE_CHECKING, Collection + +from pip._vendor.cachecontrol.adapter import CacheControlAdapter +from pip._vendor.cachecontrol.cache import DictCache + +if TYPE_CHECKING: + from pip._vendor import requests + + from pip._vendor.cachecontrol.cache import BaseCache + from pip._vendor.cachecontrol.controller import CacheController + from pip._vendor.cachecontrol.heuristics import BaseHeuristic + from pip._vendor.cachecontrol.serialize import Serializer def CacheControl( - sess, - cache=None, - cache_etags=True, - serializer=None, - heuristic=None, - controller_class=None, - adapter_class=None, - cacheable_methods=None, -): - + sess: requests.Session, + cache: BaseCache | None = None, + cache_etags: bool = True, + serializer: Serializer | None = None, + heuristic: BaseHeuristic | None = None, + controller_class: type[CacheController] | None = None, + adapter_class: type[CacheControlAdapter] | None = None, + cacheable_methods: Collection[str] | None = None, +) -> requests.Session: cache = DictCache() if cache is None else cache adapter_class = adapter_class or CacheControlAdapter adapter = adapter_class( diff --git a/gestao_raul/Lib/site-packages/pip/_vendor/certifi/__init__.py b/gestao_raul/Lib/site-packages/pip/_vendor/certifi/__init__.py index a3546f1..f61d77f 100644 --- a/gestao_raul/Lib/site-packages/pip/_vendor/certifi/__init__.py +++ b/gestao_raul/Lib/site-packages/pip/_vendor/certifi/__init__.py @@ -1,4 +1,4 @@ from .core import contents, where __all__ = ["contents", "where"] -__version__ = "2022.12.07" +__version__ = "2024.08.30" diff --git a/gestao_raul/Lib/site-packages/pip/_vendor/certifi/__pycache__/__init__.cpython-310.pyc b/gestao_raul/Lib/site-packages/pip/_vendor/certifi/__pycache__/__init__.cpython-310.pyc index eade5e07ca88944220a824165316c3e37a559f38..70f29d8e2b130928ad99e4cfc0d3f13aa5c2b025 100644 GIT binary patch delta 65 zcmdnMw2Fy4pO=@50SFfPt)9r8!)~HyV4-JhFtN@|KE~N9CbT%Us5quPHK!y$#w9~aXQ4$o* delta 71 zcmZ3*w1J5`pO=@50SKypgihqnVK>qT3nKtA77MMnltfoH~{937$pDz diff --git a/gestao_raul/Lib/site-packages/pip/_vendor/certifi/__pycache__/__main__.cpython-310.pyc b/gestao_raul/Lib/site-packages/pip/_vendor/certifi/__pycache__/__main__.cpython-310.pyc index 627e1c37bba24a70d515b6da3e953d8c29a14b47..8f82b84805870010b3fca91bf384cc70ed08a938 100644 GIT binary patch delta 36 qcmX@ce1MrdpO=@50SFfPt=`CO%E%Zq*^yC_H7Ll*)p>F%V2??~{*Z$c0b%BsS zadNy>VDb%gb%_$fNklm1tV<(mM;0-DiM!l; z$AxGC#`$ioSC8tHh`LzVSwsXYBwB)5$QP`>T&|Vt{4!q@OMFQz^JUmM2OZId{5)TI zgCeDUby=9T9nOoh~0Cu{Yeg})rOFx=eERHIk$L02@S&;yyPhTay9ELS?| zb`zZyd81pTW2NXc(gZEF`l8n;WFyn6krufYxmK-kAH%a|{IQ`FXUCfdlU3-d211h| z}o+Op9y%Bz=^?PP?D=ug8x?&I@^cLdx~D zkOG)7bM~~ci*c%-Vgf1#qDEy2h9=v0VA#jh1FWS)#ht7xjE7R4a@d8}tixY|qQS`l zk>@qljMH5@bT}Kqn7G>0?$93*(1|V$16>|b3h!@_J!kEp4uD$|z^w`3gYYN}&Cpb* zoZY*%c}F5>i3m-wQ)GER(c2PH8%Jqr%0MZ^OUAMB6OI0wK#HwQ!J75)i0HBA%2ihLALKl4m!(K}3~2S4=z_x(gqLl+mZ`i5dXvcjhW&BujBB~L04x8G z_%qm@glbXSt7MlYOgowl-ARbNp|4BR5XmZ@6UaFjOt2+%d`P&2TZ>3cc3DTUhytOU z<%A{j25e3U4y$8=Pa&OF(HkTVx#eR{oed(9?ma5e!!yr7PS&Bn!JM9@O=`URIaK)b zN}*c!AW`mSkHmpD(4A{Hj1TFOrP`DxrGt5*ih+b2T!GJx4+&F9m134p8-hc|ZSZe` zqKT%vYxZ09rTfAivJv@_FsKF>o?R&Z4e|w1%TFNZ@%ah5y$;x#JP#I{j&X~= z$Spy}#Y|{=@*~)hAEQ7l@)Hoo<%v#?`Hh)txkx}!IGgu6n<<(0*d!lkHF{x7%rYRa;MAtw zr)b&J&-y|c9|kC8`2ntl-`l^;ChVBfz42{qg7s-io#C7bz8e3TzQ*{dJ0M&V_yG-B w=*}~jxxij+C3Ft;3xOL@>uW^zu|+o%nSdTt<=1K0qG~god5s; literal 1924 zcmZ`(OK%%D5GJ`?X|;OUlI_GvAL;`Lwm@VQy%a%FG;j*!;2K8kAgwBNu~|~~+S0B- zQgNL+y*SsPf5AHX7xcgI+LO<{6mHsdW+g{x(6EE`9x z&B5*G(vPJwNiS&+5By)>Hs9acNpx$FiBVs+lr$ri>XzA&tt8bZ>h~j)WNE9P#Scx)o=sk*U#b{}jns57?;#<0-NcFk6gt*h~7-x+t|ROs)2EqV+Bchsy8YbuwJ$3{e!x(Yn8h%_D6VTz*COL7|&zi$z*bbk`RAj0>edw7# z^E4>hO1OG|_1i~V;l}-~hYIgfE(q)GW=T4X%#JOepIF`c-a6VSTM9#XmsDYRLR1}p zL2>re>b>q`EtT%>%f89F53+bPKmfYi51%E{WA$MJ& zAyool-AKntazd>q(>N1Jx*a$<6bkvWB_$&f8u_!Cy?CNQ!U0_8WCt+Q48#&uH(&^u z!r5st*DXg#75emUk3WXpDbIC7F)fZ*#EfIuF`x0Pa*M9Q%(vdQG+}PK0#j8*QA6>T zotdvWUSGiG6h*&+C|+>~qW}T?6YU^?0xAUn=WG(yfTa_fKjYdP@ZoFtFFw6S18UvJ zDJ0DEa;DoGfWTU^C(qoG>D~R(79gaO*x2GU2&|{1&PEF8UxeRnK`NCg9b;^sH*^lE z%Nf20iXny`kweIdSM0aS3x3Ft*_b>b4DyA;cjQpWiO-2%+NYG@_XBhRYXMtV3t%B| zEYF5A&Ec^e=?+}=5$q@=B=<#q0-EI_GSP*1V*un>{0NFJfS4;3=%;V4(hSuXe3`m^ z3lu|k=`m0{rY|NsKLn)5P*>3{jLX2aEYoTkR9h5@N~3|aUYJ*oFti-g6!4|J|2u?P z(Sxq>!V0aun_+buPUM`b_fWeoW{}Z6+LFhZJ)EMXH`b!(TWi~30d?x&zk(b3K5zF*&WcVYYv83Ct-l>R3G4) z|6N|9w_wK>HzrlYdXLTn=$fZk@2g2!{~FoQ4?u9@6?|uoamE3s#?1@*vd2A&=v62y bG0I;v%HA->{$&pP2Yz_XT>tM{x#9i?S(BYv diff --git a/gestao_raul/Lib/site-packages/pip/_vendor/certifi/cacert.pem b/gestao_raul/Lib/site-packages/pip/_vendor/certifi/cacert.pem index df9e4e3..3c165a1 100644 --- a/gestao_raul/Lib/site-packages/pip/_vendor/certifi/cacert.pem +++ b/gestao_raul/Lib/site-packages/pip/_vendor/certifi/cacert.pem @@ -245,34 +245,6 @@ mJlglFwjz1onl14LBQaTNx47aTbrqZ5hHY8y2o4M1nQ+ewkk2gF3R8Q7zTSMmfXK 4SVhM7JZG+Ju1zdXtg2pEto= -----END CERTIFICATE----- -# Issuer: O=SECOM Trust.net OU=Security Communication RootCA1 -# Subject: O=SECOM Trust.net OU=Security Communication RootCA1 -# Label: "Security Communication Root CA" -# Serial: 0 -# MD5 Fingerprint: f1:bc:63:6a:54:e0:b5:27:f5:cd:e7:1a:e3:4d:6e:4a -# SHA1 Fingerprint: 36:b1:2b:49:f9:81:9e:d7:4c:9e:bc:38:0f:c6:56:8f:5d:ac:b2:f7 -# SHA256 Fingerprint: e7:5e:72:ed:9f:56:0e:ec:6e:b4:80:00:73:a4:3f:c3:ad:19:19:5a:39:22:82:01:78:95:97:4a:99:02:6b:6c ------BEGIN CERTIFICATE----- -MIIDWjCCAkKgAwIBAgIBADANBgkqhkiG9w0BAQUFADBQMQswCQYDVQQGEwJKUDEY -MBYGA1UEChMPU0VDT00gVHJ1c3QubmV0MScwJQYDVQQLEx5TZWN1cml0eSBDb21t -dW5pY2F0aW9uIFJvb3RDQTEwHhcNMDMwOTMwMDQyMDQ5WhcNMjMwOTMwMDQyMDQ5 -WjBQMQswCQYDVQQGEwJKUDEYMBYGA1UEChMPU0VDT00gVHJ1c3QubmV0MScwJQYD -VQQLEx5TZWN1cml0eSBDb21tdW5pY2F0aW9uIFJvb3RDQTEwggEiMA0GCSqGSIb3 -DQEBAQUAA4IBDwAwggEKAoIBAQCzs/5/022x7xZ8V6UMbXaKL0u/ZPtM7orw8yl8 -9f/uKuDp6bpbZCKamm8sOiZpUQWZJtzVHGpxxpp9Hp3dfGzGjGdnSj74cbAZJ6kJ -DKaVv0uMDPpVmDvY6CKhS3E4eayXkmmziX7qIWgGmBSWh9JhNrxtJ1aeV+7AwFb9 -Ms+k2Y7CI9eNqPPYJayX5HA49LY6tJ07lyZDo6G8SVlyTCMwhwFY9k6+HGhWZq/N -QV3Is00qVUarH9oe4kA92819uZKAnDfdDJZkndwi92SL32HeFZRSFaB9UslLqCHJ -xrHty8OVYNEP8Ktw+N/LTX7s1vqr2b1/VPKl6Xn62dZ2JChzAgMBAAGjPzA9MB0G -A1UdDgQWBBSgc0mZaNyFW2XjmygvV5+9M7wHSDALBgNVHQ8EBAMCAQYwDwYDVR0T -AQH/BAUwAwEB/zANBgkqhkiG9w0BAQUFAAOCAQEAaECpqLvkT115swW1F7NgE+vG -kl3g0dNq/vu+m22/xwVtWSDEHPC32oRYAmP6SBbvT6UL90qY8j+eG61Ha2POCEfr -Uj94nK9NrvjVT8+amCoQQTlSxN3Zmw7vkwGusi7KaEIkQmywszo+zenaSMQVy+n5 -Bw+SUEmK3TGXX8npN6o7WWWXlDLJs58+OmJYxUmtYg5xpTKqL8aJdkNAExNnPaJU -JRDL8Try2frbSVa7pv6nQTXD4IhhyYjH3zYQIphZ6rBK+1YWc26sTfcioU+tHXot -RSflMMFe8toTyyVCUZVHA4xsIcx0Qu1T/zOLjw9XARYvz6buyXAiFL39vmwLAw== ------END CERTIFICATE----- - # Issuer: CN=XRamp Global Certification Authority O=XRamp Security Services Inc OU=www.xrampsecurity.com # Subject: CN=XRamp Global Certification Authority O=XRamp Security Services Inc OU=www.xrampsecurity.com # Label: "XRamp Global CA Root" @@ -791,34 +763,6 @@ uLjbvrW5KfnaNwUASZQDhETnv0Mxz3WLJdH0pmT1kvarBes96aULNmLazAZfNou2 XjG4Kvte9nHfRCaexOYNkbQudZWAUWpLMKawYqGT8ZvYzsRjdT9ZR7E= -----END CERTIFICATE----- -# Issuer: CN=Hongkong Post Root CA 1 O=Hongkong Post -# Subject: CN=Hongkong Post Root CA 1 O=Hongkong Post -# Label: "Hongkong Post Root CA 1" -# Serial: 1000 -# MD5 Fingerprint: a8:0d:6f:39:78:b9:43:6d:77:42:6d:98:5a:cc:23:ca -# SHA1 Fingerprint: d6:da:a8:20:8d:09:d2:15:4d:24:b5:2f:cb:34:6e:b2:58:b2:8a:58 -# SHA256 Fingerprint: f9:e6:7d:33:6c:51:00:2a:c0:54:c6:32:02:2d:66:dd:a2:e7:e3:ff:f1:0a:d0:61:ed:31:d8:bb:b4:10:cf:b2 ------BEGIN CERTIFICATE----- -MIIDMDCCAhigAwIBAgICA+gwDQYJKoZIhvcNAQEFBQAwRzELMAkGA1UEBhMCSEsx -FjAUBgNVBAoTDUhvbmdrb25nIFBvc3QxIDAeBgNVBAMTF0hvbmdrb25nIFBvc3Qg -Um9vdCBDQSAxMB4XDTAzMDUxNTA1MTMxNFoXDTIzMDUxNTA0NTIyOVowRzELMAkG -A1UEBhMCSEsxFjAUBgNVBAoTDUhvbmdrb25nIFBvc3QxIDAeBgNVBAMTF0hvbmdr -b25nIFBvc3QgUm9vdCBDQSAxMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKC -AQEArP84tulmAknjorThkPlAj3n54r15/gK97iSSHSL22oVyaf7XPwnU3ZG1ApzQ -jVrhVcNQhrkpJsLj2aDxaQMoIIBFIi1WpztUlVYiWR8o3x8gPW2iNr4joLFutbEn -PzlTCeqrauh0ssJlXI6/fMN4hM2eFvz1Lk8gKgifd/PFHsSaUmYeSF7jEAaPIpjh -ZY4bXSNmO7ilMlHIhqqhqZ5/dpTCpmy3QfDVyAY45tQM4vM7TG1QjMSDJ8EThFk9 -nnV0ttgCXjqQesBCNnLsak3c78QA3xMYV18meMjWCnl3v/evt3a5pQuEF10Q6m/h -q5URX208o1xNg1vysxmKgIsLhwIDAQABoyYwJDASBgNVHRMBAf8ECDAGAQH/AgED -MA4GA1UdDwEB/wQEAwIBxjANBgkqhkiG9w0BAQUFAAOCAQEADkbVPK7ih9legYsC -mEEIjEy82tvuJxuC52pF7BaLT4Wg87JwvVqWuspube5Gi27nKi6Wsxkz67SfqLI3 -7piol7Yutmcn1KZJ/RyTZXaeQi/cImyaT/JaFTmxcdcrUehtHJjA2Sr0oYJ71clB -oiMBdDhViw+5LmeiIAQ32pwL0xch4I+XeTRvhEgCIDMb5jREn5Fw9IBehEPCKdJs -EhTkYY2sEJCehFC78JZvRZ+K88psT/oROhUVRsPNH4NbLUES7VBnQRM9IauUiqpO -fMGx+6fWtScvl6tu4B3i0RwsH0Ti/L6RoZz71ilTc4afU9hDDl3WY4JxHYB0yvbi -AmvZWg== ------END CERTIFICATE----- - # Issuer: CN=SecureSign RootCA11 O=Japan Certification Services, Inc. # Subject: CN=SecureSign RootCA11 O=Japan Certification Services, Inc. # Label: "SecureSign RootCA11" @@ -909,49 +853,6 @@ Mx86OyXShkDOOyyGeMlhLxS67ttVb9+E7gUJTb0o2HLO02JQZR7rkpeDMdmztcpH WD9f -----END CERTIFICATE----- -# Issuer: CN=Autoridad de Certificacion Firmaprofesional CIF A62634068 -# Subject: CN=Autoridad de Certificacion Firmaprofesional CIF A62634068 -# Label: "Autoridad de Certificacion Firmaprofesional CIF A62634068" -# Serial: 6047274297262753887 -# MD5 Fingerprint: 73:3a:74:7a:ec:bb:a3:96:a6:c2:e4:e2:c8:9b:c0:c3 -# SHA1 Fingerprint: ae:c5:fb:3f:c8:e1:bf:c4:e5:4f:03:07:5a:9a:e8:00:b7:f7:b6:fa -# SHA256 Fingerprint: 04:04:80:28:bf:1f:28:64:d4:8f:9a:d4:d8:32:94:36:6a:82:88:56:55:3f:3b:14:30:3f:90:14:7f:5d:40:ef ------BEGIN CERTIFICATE----- -MIIGFDCCA/ygAwIBAgIIU+w77vuySF8wDQYJKoZIhvcNAQEFBQAwUTELMAkGA1UE -BhMCRVMxQjBABgNVBAMMOUF1dG9yaWRhZCBkZSBDZXJ0aWZpY2FjaW9uIEZpcm1h -cHJvZmVzaW9uYWwgQ0lGIEE2MjYzNDA2ODAeFw0wOTA1MjAwODM4MTVaFw0zMDEy -MzEwODM4MTVaMFExCzAJBgNVBAYTAkVTMUIwQAYDVQQDDDlBdXRvcmlkYWQgZGUg -Q2VydGlmaWNhY2lvbiBGaXJtYXByb2Zlc2lvbmFsIENJRiBBNjI2MzQwNjgwggIi -MA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQDKlmuO6vj78aI14H9M2uDDUtd9 -thDIAl6zQyrET2qyyhxdKJp4ERppWVevtSBC5IsP5t9bpgOSL/UR5GLXMnE42QQM -cas9UX4PB99jBVzpv5RvwSmCwLTaUbDBPLutN0pcyvFLNg4kq7/DhHf9qFD0sefG -L9ItWY16Ck6WaVICqjaY7Pz6FIMMNx/Jkjd/14Et5cS54D40/mf0PmbR0/RAz15i -NA9wBj4gGFrO93IbJWyTdBSTo3OxDqqHECNZXyAFGUftaI6SEspd/NYrspI8IM/h -X68gvqB2f3bl7BqGYTM+53u0P6APjqK5am+5hyZvQWyIplD9amML9ZMWGxmPsu2b -m8mQ9QEM3xk9Dz44I8kvjwzRAv4bVdZO0I08r0+k8/6vKtMFnXkIoctXMbScyJCy -Z/QYFpM6/EfY0XiWMR+6KwxfXZmtY4laJCB22N/9q06mIqqdXuYnin1oKaPnirja -EbsXLZmdEyRG98Xi2J+Of8ePdG1asuhy9azuJBCtLxTa/y2aRnFHvkLfuwHb9H/T -KI8xWVvTyQKmtFLKbpf7Q8UIJm+K9Lv9nyiqDdVF8xM6HdjAeI9BZzwelGSuewvF -6NkBiDkal4ZkQdU7hwxu+g/GvUgUvzlN1J5Bto+WHWOWk9mVBngxaJ43BjuAiUVh -OSPHG0SjFeUc+JIwuwIDAQABo4HvMIHsMBIGA1UdEwEB/wQIMAYBAf8CAQEwDgYD -VR0PAQH/BAQDAgEGMB0GA1UdDgQWBBRlzeurNR4APn7VdMActHNHDhpkLzCBpgYD -VR0gBIGeMIGbMIGYBgRVHSAAMIGPMC8GCCsGAQUFBwIBFiNodHRwOi8vd3d3LmZp -cm1hcHJvZmVzaW9uYWwuY29tL2NwczBcBggrBgEFBQcCAjBQHk4AUABhAHMAZQBv -ACAAZABlACAAbABhACAAQgBvAG4AYQBuAG8AdgBhACAANAA3ACAAQgBhAHIAYwBl -AGwAbwBuAGEAIAAwADgAMAAxADcwDQYJKoZIhvcNAQEFBQADggIBABd9oPm03cXF -661LJLWhAqvdpYhKsg9VSytXjDvlMd3+xDLx51tkljYyGOylMnfX40S2wBEqgLk9 -am58m9Ot/MPWo+ZkKXzR4Tgegiv/J2Wv+xYVxC5xhOW1//qkR71kMrv2JYSiJ0L1 -ILDCExARzRAVukKQKtJE4ZYm6zFIEv0q2skGz3QeqUvVhyj5eTSSPi5E6PaPT481 -PyWzOdxjKpBrIF/EUhJOlywqrJ2X3kjyo2bbwtKDlaZmp54lD+kLM5FlClrD2VQS -3a/DTg4fJl4N3LON7NWBcN7STyQF82xO9UxJZo3R/9ILJUFI/lGExkKvgATP0H5k -SeTy36LssUzAKh3ntLFlosS88Zj0qnAHY7S42jtM+kAiMFsRpvAFDsYCA0irhpuF -3dvd6qJ2gHN99ZwExEWN57kci57q13XRcrHedUTnQn3iV2t93Jm8PYMo6oCTjcVM -ZcFwgbg4/EMxsvYDNEeyrPsiBsse3RdHHF9mudMaotoRsaS8I8nkvof/uZS2+F0g -StRf571oe2XyFR7SOqkt6dhrJKyXWERHrVkY8SFlcN7ONGCoQPHzPKTDKCOM/icz -Q0CgFzzr6juwcqajuUpLXhZI9LK8yIySxZ2frHI2vDSANGupi5LAuBft7HZT9SQB -jLMi6Et8Vcad+qMUu2WFbm5PEn4KPJ2V ------END CERTIFICATE----- - # Issuer: CN=Izenpe.com O=IZENPE S.A. # Subject: CN=Izenpe.com O=IZENPE S.A. # Label: "Izenpe.com" @@ -1676,50 +1577,6 @@ HL/EVlP6Y2XQ8xwOFvVrhlhNGNTkDY6lnVuR3HYkUD/GKvvZt5y11ubQ2egZixVx SK236thZiNSQvxaz2emsWWFUyBy6ysHK4bkgTI86k4mloMy/0/Z1pHWWbVY= -----END CERTIFICATE----- -# Issuer: CN=E-Tugra Certification Authority O=E-Tu\u011fra EBG Bili\u015fim Teknolojileri ve Hizmetleri A.\u015e. OU=E-Tugra Sertifikasyon Merkezi -# Subject: CN=E-Tugra Certification Authority O=E-Tu\u011fra EBG Bili\u015fim Teknolojileri ve Hizmetleri A.\u015e. OU=E-Tugra Sertifikasyon Merkezi -# Label: "E-Tugra Certification Authority" -# Serial: 7667447206703254355 -# MD5 Fingerprint: b8:a1:03:63:b0:bd:21:71:70:8a:6f:13:3a:bb:79:49 -# SHA1 Fingerprint: 51:c6:e7:08:49:06:6e:f3:92:d4:5c:a0:0d:6d:a3:62:8f:c3:52:39 -# SHA256 Fingerprint: b0:bf:d5:2b:b0:d7:d9:bd:92:bf:5d:4d:c1:3d:a2:55:c0:2c:54:2f:37:83:65:ea:89:39:11:f5:5e:55:f2:3c ------BEGIN CERTIFICATE----- -MIIGSzCCBDOgAwIBAgIIamg+nFGby1MwDQYJKoZIhvcNAQELBQAwgbIxCzAJBgNV -BAYTAlRSMQ8wDQYDVQQHDAZBbmthcmExQDA+BgNVBAoMN0UtVHXEn3JhIEVCRyBC -aWxpxZ9pbSBUZWtub2xvamlsZXJpIHZlIEhpem1ldGxlcmkgQS7Fni4xJjAkBgNV -BAsMHUUtVHVncmEgU2VydGlmaWthc3lvbiBNZXJrZXppMSgwJgYDVQQDDB9FLVR1 -Z3JhIENlcnRpZmljYXRpb24gQXV0aG9yaXR5MB4XDTEzMDMwNTEyMDk0OFoXDTIz -MDMwMzEyMDk0OFowgbIxCzAJBgNVBAYTAlRSMQ8wDQYDVQQHDAZBbmthcmExQDA+ -BgNVBAoMN0UtVHXEn3JhIEVCRyBCaWxpxZ9pbSBUZWtub2xvamlsZXJpIHZlIEhp -em1ldGxlcmkgQS7Fni4xJjAkBgNVBAsMHUUtVHVncmEgU2VydGlmaWthc3lvbiBN -ZXJrZXppMSgwJgYDVQQDDB9FLVR1Z3JhIENlcnRpZmljYXRpb24gQXV0aG9yaXR5 -MIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEA4vU/kwVRHoViVF56C/UY -B4Oufq9899SKa6VjQzm5S/fDxmSJPZQuVIBSOTkHS0vdhQd2h8y/L5VMzH2nPbxH -D5hw+IyFHnSOkm0bQNGZDbt1bsipa5rAhDGvykPL6ys06I+XawGb1Q5KCKpbknSF -Q9OArqGIW66z6l7LFpp3RMih9lRozt6Plyu6W0ACDGQXwLWTzeHxE2bODHnv0ZEo -q1+gElIwcxmOj+GMB6LDu0rw6h8VqO4lzKRG+Bsi77MOQ7osJLjFLFzUHPhdZL3D -k14opz8n8Y4e0ypQBaNV2cvnOVPAmJ6MVGKLJrD3fY185MaeZkJVgkfnsliNZvcH -fC425lAcP9tDJMW/hkd5s3kc91r0E+xs+D/iWR+V7kI+ua2oMoVJl0b+SzGPWsut -dEcf6ZG33ygEIqDUD13ieU/qbIWGvaimzuT6w+Gzrt48Ue7LE3wBf4QOXVGUnhMM -ti6lTPk5cDZvlsouDERVxcr6XQKj39ZkjFqzAQqptQpHF//vkUAqjqFGOjGY5RH8 -zLtJVor8udBhmm9lbObDyz51Sf6Pp+KJxWfXnUYTTjF2OySznhFlhqt/7x3U+Lzn -rFpct1pHXFXOVbQicVtbC/DP3KBhZOqp12gKY6fgDT+gr9Oq0n7vUaDmUStVkhUX -U8u3Zg5mTPj5dUyQ5xJwx0UCAwEAAaNjMGEwHQYDVR0OBBYEFC7j27JJ0JxUeVz6 -Jyr+zE7S6E5UMA8GA1UdEwEB/wQFMAMBAf8wHwYDVR0jBBgwFoAULuPbsknQnFR5 -XPonKv7MTtLoTlQwDgYDVR0PAQH/BAQDAgEGMA0GCSqGSIb3DQEBCwUAA4ICAQAF -Nzr0TbdF4kV1JI+2d1LoHNgQk2Xz8lkGpD4eKexd0dCrfOAKkEh47U6YA5n+KGCR -HTAduGN8qOY1tfrTYXbm1gdLymmasoR6d5NFFxWfJNCYExL/u6Au/U5Mh/jOXKqY -GwXgAEZKgoClM4so3O0409/lPun++1ndYYRP0lSWE2ETPo+Aab6TR7U1Q9Jauz1c -77NCR807VRMGsAnb/WP2OogKmW9+4c4bU2pEZiNRCHu8W1Ki/QY3OEBhj0qWuJA3 -+GbHeJAAFS6LrVE1Uweoa2iu+U48BybNCAVwzDk/dr2l02cmAYamU9JgO3xDf1WK -vJUawSg5TB9D0pH0clmKuVb8P7Sd2nCcdlqMQ1DujjByTd//SffGqWfZbawCEeI6 -FiWnWAjLb1NBnEg4R2gz0dfHj9R0IdTDBZB6/86WiLEVKV0jq9BgoRJP3vQXzTLl -yb/IQ639Lo7xr+L0mPoSHyDYwKcMhcWQ9DstliaxLL5Mq+ux0orJ23gTDx4JnW2P -AJ8C2sH6H3p6CcRK5ogql5+Ji/03X186zjhZhkuvcQu02PJwT58yE+Owp1fl2tpD -y4Q08ijE6m30Ku/Ba3ba+367hTzSU8JNvnHhRdH9I2cNE3X7z2VnIp2usAnRCf8d -NL/+I5c30jn6PQ0GC7TbO6Orb1wdtn7os4I07QZcJA== ------END CERTIFICATE----- - # Issuer: CN=T-TeleSec GlobalRoot Class 2 O=T-Systems Enterprise Services GmbH OU=T-Systems Trust Center # Subject: CN=T-TeleSec GlobalRoot Class 2 O=T-Systems Enterprise Services GmbH OU=T-Systems Trust Center # Label: "T-TeleSec GlobalRoot Class 2" @@ -3628,46 +3485,6 @@ DgQWBBQxCpCPtsad0kRLgLWi5h+xEk8blTAKBggqhkjOPQQDAwNoADBlAjEA31SQ +RHUjE7AwWHCFUyqqx0LMV87HOIAl0Qx5v5zli/altP+CAezNIm8BZ/3Hobui3A= -----END CERTIFICATE----- -# Issuer: CN=GLOBALTRUST 2020 O=e-commerce monitoring GmbH -# Subject: CN=GLOBALTRUST 2020 O=e-commerce monitoring GmbH -# Label: "GLOBALTRUST 2020" -# Serial: 109160994242082918454945253 -# MD5 Fingerprint: 8a:c7:6f:cb:6d:e3:cc:a2:f1:7c:83:fa:0e:78:d7:e8 -# SHA1 Fingerprint: d0:67:c1:13:51:01:0c:aa:d0:c7:6a:65:37:31:16:26:4f:53:71:a2 -# SHA256 Fingerprint: 9a:29:6a:51:82:d1:d4:51:a2:e3:7f:43:9b:74:da:af:a2:67:52:33:29:f9:0f:9a:0d:20:07:c3:34:e2:3c:9a ------BEGIN CERTIFICATE----- -MIIFgjCCA2qgAwIBAgILWku9WvtPilv6ZeUwDQYJKoZIhvcNAQELBQAwTTELMAkG -A1UEBhMCQVQxIzAhBgNVBAoTGmUtY29tbWVyY2UgbW9uaXRvcmluZyBHbWJIMRkw -FwYDVQQDExBHTE9CQUxUUlVTVCAyMDIwMB4XDTIwMDIxMDAwMDAwMFoXDTQwMDYx -MDAwMDAwMFowTTELMAkGA1UEBhMCQVQxIzAhBgNVBAoTGmUtY29tbWVyY2UgbW9u -aXRvcmluZyBHbWJIMRkwFwYDVQQDExBHTE9CQUxUUlVTVCAyMDIwMIICIjANBgkq -hkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAri5WrRsc7/aVj6B3GyvTY4+ETUWiD59b -RatZe1E0+eyLinjF3WuvvcTfk0Uev5E4C64OFudBc/jbu9G4UeDLgztzOG53ig9Z -YybNpyrOVPu44sB8R85gfD+yc/LAGbaKkoc1DZAoouQVBGM+uq/ufF7MpotQsjj3 -QWPKzv9pj2gOlTblzLmMCcpL3TGQlsjMH/1WljTbjhzqLL6FLmPdqqmV0/0plRPw -yJiT2S0WR5ARg6I6IqIoV6Lr/sCMKKCmfecqQjuCgGOlYx8ZzHyyZqjC0203b+J+ -BlHZRYQfEs4kUmSFC0iAToexIiIwquuuvuAC4EDosEKAA1GqtH6qRNdDYfOiaxaJ -SaSjpCuKAsR49GiKweR6NrFvG5Ybd0mN1MkGco/PU+PcF4UgStyYJ9ORJitHHmkH -r96i5OTUawuzXnzUJIBHKWk7buis/UDr2O1xcSvy6Fgd60GXIsUf1DnQJ4+H4xj0 -4KlGDfV0OoIu0G4skaMxXDtG6nsEEFZegB31pWXogvziB4xiRfUg3kZwhqG8k9Me -dKZssCz3AwyIDMvUclOGvGBG85hqwvG/Q/lwIHfKN0F5VVJjjVsSn8VoxIidrPIw -q7ejMZdnrY8XD2zHc+0klGvIg5rQmjdJBKuxFshsSUktq6HQjJLyQUp5ISXbY9e2 -nKd+Qmn7OmMCAwEAAaNjMGEwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMC -AQYwHQYDVR0OBBYEFNwuH9FhN3nkq9XVsxJxaD1qaJwiMB8GA1UdIwQYMBaAFNwu -H9FhN3nkq9XVsxJxaD1qaJwiMA0GCSqGSIb3DQEBCwUAA4ICAQCR8EICaEDuw2jA -VC/f7GLDw56KoDEoqoOOpFaWEhCGVrqXctJUMHytGdUdaG/7FELYjQ7ztdGl4wJC -XtzoRlgHNQIw4Lx0SsFDKv/bGtCwr2zD/cuz9X9tAy5ZVp0tLTWMstZDFyySCstd -6IwPS3BD0IL/qMy/pJTAvoe9iuOTe8aPmxadJ2W8esVCgmxcB9CpwYhgROmYhRZf -+I/KARDOJcP5YBugxZfD0yyIMaK9MOzQ0MAS8cE54+X1+NZK3TTN+2/BT+MAi1bi -kvcoskJ3ciNnxz8RFbLEAwW+uxF7Cr+obuf/WEPPm2eggAe2HcqtbepBEX4tdJP7 -wry+UUTF72glJ4DjyKDUEuzZpTcdN3y0kcra1LGWge9oXHYQSa9+pTeAsRxSvTOB -TI/53WXZFM2KJVj04sWDpQmQ1GwUY7VA3+vA/MRYfg0UFodUJ25W5HCEuGwyEn6C -MUO+1918oa2u1qsgEu8KwxCMSZY13At1XrFP1U80DhEgB3VDRemjEdqso5nCtnkn -4rnvyOL2NSl6dPrFf4IFYqYK6miyeUcGbvJXqBUzxvd4Sj1Ce2t+/vdG6tHrju+I -aFvowdlxfv1k7/9nR4hYJS8+hge9+6jlgqispdNpQ80xiEmEU5LAsTkbOYMBMMTy -qfrQA71yN2BWHzZ8vTmR9W0Nv3vXkg== ------END CERTIFICATE----- - # Issuer: CN=ANF Secure Server Root CA O=ANF Autoridad de Certificacion OU=ANF CA Raiz # Subject: CN=ANF Secure Server Root CA O=ANF Autoridad de Certificacion OU=ANF CA Raiz # Label: "ANF Secure Server Root CA" @@ -4397,73 +4214,6 @@ ut6Dacpps6kFtZaSF4fC0urQe87YQVt8rgIwRt7qy12a7DLCZRawTDBcMPPaTnOG BtjOiQRINzf43TNRnXCve1XYAS59BWQOhriR -----END CERTIFICATE----- -# Issuer: CN=E-Tugra Global Root CA RSA v3 O=E-Tugra EBG A.S. OU=E-Tugra Trust Center -# Subject: CN=E-Tugra Global Root CA RSA v3 O=E-Tugra EBG A.S. OU=E-Tugra Trust Center -# Label: "E-Tugra Global Root CA RSA v3" -# Serial: 75951268308633135324246244059508261641472512052 -# MD5 Fingerprint: 22:be:10:f6:c2:f8:03:88:73:5f:33:29:47:28:47:a4 -# SHA1 Fingerprint: e9:a8:5d:22:14:52:1c:5b:aa:0a:b4:be:24:6a:23:8a:c9:ba:e2:a9 -# SHA256 Fingerprint: ef:66:b0:b1:0a:3c:db:9f:2e:36:48:c7:6b:d2:af:18:ea:d2:bf:e6:f1:17:65:5e:28:c4:06:0d:a1:a3:f4:c2 ------BEGIN CERTIFICATE----- -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 ------END CERTIFICATE----- - -# Issuer: CN=E-Tugra Global Root CA ECC v3 O=E-Tugra EBG A.S. OU=E-Tugra Trust Center -# Subject: CN=E-Tugra Global Root CA ECC v3 O=E-Tugra EBG A.S. OU=E-Tugra Trust Center -# Label: "E-Tugra Global Root CA ECC v3" -# Serial: 218504919822255052842371958738296604628416471745 -# MD5 Fingerprint: 46:bc:81:bb:f1:b5:1e:f7:4b:96:bc:14:e2:e7:27:64 -# SHA1 Fingerprint: 8a:2f:af:57:53:b1:b0:e6:a1:04:ec:5b:6a:69:71:6d:f6:1c:e2:84 -# SHA256 Fingerprint: 87:3f:46:85:fa:7f:56:36:25:25:2e:6d:36:bc:d7:f1:6f:c2:49:51:f2:64:e4:7e:1b:95:4f:49:08:cd:ca:13 ------BEGIN CERTIFICATE----- -MIICpTCCAiqgAwIBAgIUJkYZdzHhT28oNt45UYbm1JeIIsEwCgYIKoZIzj0EAwMw -gYAxCzAJBgNVBAYTAlRSMQ8wDQYDVQQHEwZBbmthcmExGTAXBgNVBAoTEEUtVHVn -cmEgRUJHIEEuUy4xHTAbBgNVBAsTFEUtVHVncmEgVHJ1c3QgQ2VudGVyMSYwJAYD -VQQDEx1FLVR1Z3JhIEdsb2JhbCBSb290IENBIEVDQyB2MzAeFw0yMDAzMTgwOTQ2 -NThaFw00NTAzMTIwOTQ2NThaMIGAMQswCQYDVQQGEwJUUjEPMA0GA1UEBxMGQW5r -YXJhMRkwFwYDVQQKExBFLVR1Z3JhIEVCRyBBLlMuMR0wGwYDVQQLExRFLVR1Z3Jh -IFRydXN0IENlbnRlcjEmMCQGA1UEAxMdRS1UdWdyYSBHbG9iYWwgUm9vdCBDQSBF -Q0MgdjMwdjAQBgcqhkjOPQIBBgUrgQQAIgNiAASOmCm/xxAeJ9urA8woLNheSBkQ -KczLWYHMjLiSF4mDKpL2w6QdTGLVn9agRtwcvHbB40fQWxPa56WzZkjnIZpKT4YK -fWzqTTKACrJ6CZtpS5iB4i7sAnCWH/31Rs7K3IKjYzBhMA8GA1UdEwEB/wQFMAMB -Af8wHwYDVR0jBBgwFoAU/4Ixcj75xGZsrTie0bBRiKWQzPUwHQYDVR0OBBYEFP+C -MXI++cRmbK04ntGwUYilkMz1MA4GA1UdDwEB/wQEAwIBBjAKBggqhkjOPQQDAwNp -ADBmAjEA5gVYaWHlLcoNy/EZCL3W/VGSGn5jVASQkZo1kTmZ+gepZpO6yGjUij/6 -7W4WAie3AjEA3VoXK3YdZUKWpqxdinlW2Iob35reX8dQj7FbcQwm32pAAOwzkSFx -vmjkI6TZraE3 ------END CERTIFICATE----- - # Issuer: CN=Security Communication RootCA3 O=SECOM Trust Systems CO.,LTD. # Subject: CN=Security Communication RootCA3 O=SECOM Trust Systems CO.,LTD. # Label: "Security Communication RootCA3" @@ -4525,3 +4275,655 @@ BAMCAQYwDwYDVR0TAQH/BAUwAwEB/zAKBggqhkjOPQQDAwNoADBlAjAVXUI9/Lbu 9zuxNuie9sRGKEkz0FhDKmMpzE2xtHqiuQ04pV1IKv3LsnNdo4gIxwwCMQDAqy0O be0YottT6SXbVQjgUMzfRGEWgqtJsLKB7HOHeLRMsmIbEvoWTSVLY70eN9k= -----END CERTIFICATE----- + +# Issuer: CN=BJCA Global Root CA1 O=BEIJING CERTIFICATE AUTHORITY +# Subject: CN=BJCA Global Root CA1 O=BEIJING CERTIFICATE AUTHORITY +# Label: "BJCA Global Root CA1" +# Serial: 113562791157148395269083148143378328608 +# MD5 Fingerprint: 42:32:99:76:43:33:36:24:35:07:82:9b:28:f9:d0:90 +# SHA1 Fingerprint: d5:ec:8d:7b:4c:ba:79:f4:e7:e8:cb:9d:6b:ae:77:83:10:03:21:6a +# SHA256 Fingerprint: f3:89:6f:88:fe:7c:0a:88:27:66:a7:fa:6a:d2:74:9f:b5:7a:7f:3e:98:fb:76:9c:1f:a7:b0:9c:2c:44:d5:ae +-----BEGIN CERTIFICATE----- +MIIFdDCCA1ygAwIBAgIQVW9l47TZkGobCdFsPsBsIDANBgkqhkiG9w0BAQsFADBU +MQswCQYDVQQGEwJDTjEmMCQGA1UECgwdQkVJSklORyBDRVJUSUZJQ0FURSBBVVRI +T1JJVFkxHTAbBgNVBAMMFEJKQ0EgR2xvYmFsIFJvb3QgQ0ExMB4XDTE5MTIxOTAz +MTYxN1oXDTQ0MTIxMjAzMTYxN1owVDELMAkGA1UEBhMCQ04xJjAkBgNVBAoMHUJF +SUpJTkcgQ0VSVElGSUNBVEUgQVVUSE9SSVRZMR0wGwYDVQQDDBRCSkNBIEdsb2Jh +bCBSb290IENBMTCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAPFmCL3Z +xRVhy4QEQaVpN3cdwbB7+sN3SJATcmTRuHyQNZ0YeYjjlwE8R4HyDqKYDZ4/N+AZ +spDyRhySsTphzvq3Rp4Dhtczbu33RYx2N95ulpH3134rhxfVizXuhJFyV9xgw8O5 +58dnJCNPYwpj9mZ9S1WnP3hkSWkSl+BMDdMJoDIwOvqfwPKcxRIqLhy1BDPapDgR +at7GGPZHOiJBhyL8xIkoVNiMpTAK+BcWyqw3/XmnkRd4OJmtWO2y3syJfQOcs4ll +5+M7sSKGjwZteAf9kRJ/sGsciQ35uMt0WwfCyPQ10WRjeulumijWML3mG90Vr4Tq +nMfK9Q7q8l0ph49pczm+LiRvRSGsxdRpJQaDrXpIhRMsDQa4bHlW/KNnMoH1V6XK +V0Jp6VwkYe/iMBhORJhVb3rCk9gZtt58R4oRTklH2yiUAguUSiz5EtBP6DF+bHq/ +pj+bOT0CFqMYs2esWz8sgytnOYFcuX6U1WTdno9uruh8W7TXakdI136z1C2OVnZO +z2nxbkRs1CTqjSShGL+9V/6pmTW12xB3uD1IutbB5/EjPtffhZ0nPNRAvQoMvfXn +jSXWgXSHRtQpdaJCbPdzied9v3pKH9MiyRVVz99vfFXQpIsHETdfg6YmV6YBW37+ +WGgHqel62bno/1Afq8K0wM7o6v0PvY1NuLxxAgMBAAGjQjBAMB0GA1UdDgQWBBTF +7+3M2I0hxkjk49cULqcWk+WYATAPBgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQE +AwIBBjANBgkqhkiG9w0BAQsFAAOCAgEAUoKsITQfI/Ki2Pm4rzc2IInRNwPWaZ+4 +YRC6ojGYWUfo0Q0lHhVBDOAqVdVXUsv45Mdpox1NcQJeXyFFYEhcCY5JEMEE3Kli +awLwQ8hOnThJdMkycFRtwUf8jrQ2ntScvd0g1lPJGKm1Vrl2i5VnZu69mP6u775u ++2D2/VnGKhs/I0qUJDAnyIm860Qkmss9vk/Ves6OF8tiwdneHg56/0OGNFK8YT88 +X7vZdrRTvJez/opMEi4r89fO4aL/3Xtw+zuhTaRjAv04l5U/BXCga99igUOLtFkN +SoxUnMW7gZ/NfaXvCyUeOiDbHPwfmGcCCtRzRBPbUYQaVQNW4AB+dAb/OMRyHdOo +P2gxXdMJxy6MW2Pg6Nwe0uxhHvLe5e/2mXZgLR6UcnHGCyoyx5JO1UbXHfmpGQrI ++pXObSOYqgs4rZpWDW+N8TEAiMEXnM0ZNjX+VVOg4DwzX5Ze4jLp3zO7Bkqp2IRz +znfSxqxx4VyjHQy7Ct9f4qNx2No3WqB4K/TUfet27fJhcKVlmtOJNBir+3I+17Q9 +eVzYH6Eze9mCUAyTF6ps3MKCuwJXNq+YJyo5UOGwifUll35HaBC07HPKs5fRJNz2 +YqAo07WjuGS3iGJCz51TzZm+ZGiPTx4SSPfSKcOYKMryMguTjClPPGAyzQWWYezy +r/6zcCwupvI= +-----END CERTIFICATE----- + +# Issuer: CN=BJCA Global Root CA2 O=BEIJING CERTIFICATE AUTHORITY +# Subject: CN=BJCA Global Root CA2 O=BEIJING CERTIFICATE AUTHORITY +# Label: "BJCA Global Root CA2" +# Serial: 58605626836079930195615843123109055211 +# MD5 Fingerprint: 5e:0a:f6:47:5f:a6:14:e8:11:01:95:3f:4d:01:eb:3c +# SHA1 Fingerprint: f4:27:86:eb:6e:b8:6d:88:31:67:02:fb:ba:66:a4:53:00:aa:7a:a6 +# SHA256 Fingerprint: 57:4d:f6:93:1e:27:80:39:66:7b:72:0a:fd:c1:60:0f:c2:7e:b6:6d:d3:09:29:79:fb:73:85:64:87:21:28:82 +-----BEGIN CERTIFICATE----- +MIICJTCCAaugAwIBAgIQLBcIfWQqwP6FGFkGz7RK6zAKBggqhkjOPQQDAzBUMQsw +CQYDVQQGEwJDTjEmMCQGA1UECgwdQkVJSklORyBDRVJUSUZJQ0FURSBBVVRIT1JJ +VFkxHTAbBgNVBAMMFEJKQ0EgR2xvYmFsIFJvb3QgQ0EyMB4XDTE5MTIxOTAzMTgy +MVoXDTQ0MTIxMjAzMTgyMVowVDELMAkGA1UEBhMCQ04xJjAkBgNVBAoMHUJFSUpJ +TkcgQ0VSVElGSUNBVEUgQVVUSE9SSVRZMR0wGwYDVQQDDBRCSkNBIEdsb2JhbCBS +b290IENBMjB2MBAGByqGSM49AgEGBSuBBAAiA2IABJ3LgJGNU2e1uVCxA/jlSR9B +IgmwUVJY1is0j8USRhTFiy8shP8sbqjV8QnjAyEUxEM9fMEsxEtqSs3ph+B99iK+ ++kpRuDCK/eHeGBIK9ke35xe/J4rUQUyWPGCWwf0VHKNCMEAwHQYDVR0OBBYEFNJK +sVF/BvDRgh9Obl+rg/xI1LCRMA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQD +AgEGMAoGCCqGSM49BAMDA2gAMGUCMBq8W9f+qdJUDkpd0m2xQNz0Q9XSSpkZElaA +94M04TVOSG0ED1cxMDAtsaqdAzjbBgIxAMvMh1PLet8gUXOQwKhbYdDFUDn9hf7B +43j4ptZLvZuHjw/l1lOWqzzIQNph91Oj9w== +-----END CERTIFICATE----- + +# Issuer: CN=Sectigo Public Server Authentication Root E46 O=Sectigo Limited +# Subject: CN=Sectigo Public Server Authentication Root E46 O=Sectigo Limited +# Label: "Sectigo Public Server Authentication Root E46" +# Serial: 88989738453351742415770396670917916916 +# MD5 Fingerprint: 28:23:f8:b2:98:5c:37:16:3b:3e:46:13:4e:b0:b3:01 +# SHA1 Fingerprint: ec:8a:39:6c:40:f0:2e:bc:42:75:d4:9f:ab:1c:1a:5b:67:be:d2:9a +# SHA256 Fingerprint: c9:0f:26:f0:fb:1b:40:18:b2:22:27:51:9b:5c:a2:b5:3e:2c:a5:b3:be:5c:f1:8e:fe:1b:ef:47:38:0c:53:83 +-----BEGIN CERTIFICATE----- +MIICOjCCAcGgAwIBAgIQQvLM2htpN0RfFf51KBC49DAKBggqhkjOPQQDAzBfMQsw +CQYDVQQGEwJHQjEYMBYGA1UEChMPU2VjdGlnbyBMaW1pdGVkMTYwNAYDVQQDEy1T +ZWN0aWdvIFB1YmxpYyBTZXJ2ZXIgQXV0aGVudGljYXRpb24gUm9vdCBFNDYwHhcN +MjEwMzIyMDAwMDAwWhcNNDYwMzIxMjM1OTU5WjBfMQswCQYDVQQGEwJHQjEYMBYG +A1UEChMPU2VjdGlnbyBMaW1pdGVkMTYwNAYDVQQDEy1TZWN0aWdvIFB1YmxpYyBT +ZXJ2ZXIgQXV0aGVudGljYXRpb24gUm9vdCBFNDYwdjAQBgcqhkjOPQIBBgUrgQQA +IgNiAAR2+pmpbiDt+dd34wc7qNs9Xzjoq1WmVk/WSOrsfy2qw7LFeeyZYX8QeccC +WvkEN/U0NSt3zn8gj1KjAIns1aeibVvjS5KToID1AZTc8GgHHs3u/iVStSBDHBv+ +6xnOQ6OjQjBAMB0GA1UdDgQWBBTRItpMWfFLXyY4qp3W7usNw/upYTAOBgNVHQ8B +Af8EBAMCAYYwDwYDVR0TAQH/BAUwAwEB/zAKBggqhkjOPQQDAwNnADBkAjAn7qRa +qCG76UeXlImldCBteU/IvZNeWBj7LRoAasm4PdCkT0RHlAFWovgzJQxC36oCMB3q +4S6ILuH5px0CMk7yn2xVdOOurvulGu7t0vzCAxHrRVxgED1cf5kDW21USAGKcw== +-----END CERTIFICATE----- + +# Issuer: CN=Sectigo Public Server Authentication Root R46 O=Sectigo Limited +# Subject: CN=Sectigo Public Server Authentication Root R46 O=Sectigo Limited +# Label: "Sectigo Public Server Authentication Root R46" +# Serial: 156256931880233212765902055439220583700 +# MD5 Fingerprint: 32:10:09:52:00:d5:7e:6c:43:df:15:c0:b1:16:93:e5 +# SHA1 Fingerprint: ad:98:f9:f3:e4:7d:75:3b:65:d4:82:b3:a4:52:17:bb:6e:f5:e4:38 +# SHA256 Fingerprint: 7b:b6:47:a6:2a:ee:ac:88:bf:25:7a:a5:22:d0:1f:fe:a3:95:e0:ab:45:c7:3f:93:f6:56:54:ec:38:f2:5a:06 +-----BEGIN CERTIFICATE----- +MIIFijCCA3KgAwIBAgIQdY39i658BwD6qSWn4cetFDANBgkqhkiG9w0BAQwFADBf +MQswCQYDVQQGEwJHQjEYMBYGA1UEChMPU2VjdGlnbyBMaW1pdGVkMTYwNAYDVQQD +Ey1TZWN0aWdvIFB1YmxpYyBTZXJ2ZXIgQXV0aGVudGljYXRpb24gUm9vdCBSNDYw +HhcNMjEwMzIyMDAwMDAwWhcNNDYwMzIxMjM1OTU5WjBfMQswCQYDVQQGEwJHQjEY +MBYGA1UEChMPU2VjdGlnbyBMaW1pdGVkMTYwNAYDVQQDEy1TZWN0aWdvIFB1Ymxp +YyBTZXJ2ZXIgQXV0aGVudGljYXRpb24gUm9vdCBSNDYwggIiMA0GCSqGSIb3DQEB +AQUAA4ICDwAwggIKAoICAQCTvtU2UnXYASOgHEdCSe5jtrch/cSV1UgrJnwUUxDa +ef0rty2k1Cz66jLdScK5vQ9IPXtamFSvnl0xdE8H/FAh3aTPaE8bEmNtJZlMKpnz +SDBh+oF8HqcIStw+KxwfGExxqjWMrfhu6DtK2eWUAtaJhBOqbchPM8xQljeSM9xf +iOefVNlI8JhD1mb9nxc4Q8UBUQvX4yMPFF1bFOdLvt30yNoDN9HWOaEhUTCDsG3X +ME6WW5HwcCSrv0WBZEMNvSE6Lzzpng3LILVCJ8zab5vuZDCQOc2TZYEhMbUjUDM3 +IuM47fgxMMxF/mL50V0yeUKH32rMVhlATc6qu/m1dkmU8Sf4kaWD5QazYw6A3OAS +VYCmO2a0OYctyPDQ0RTp5A1NDvZdV3LFOxxHVp3i1fuBYYzMTYCQNFu31xR13NgE +SJ/AwSiItOkcyqex8Va3e0lMWeUgFaiEAin6OJRpmkkGj80feRQXEgyDet4fsZfu ++Zd4KKTIRJLpfSYFplhym3kT2BFfrsU4YjRosoYwjviQYZ4ybPUHNs2iTG7sijbt +8uaZFURww3y8nDnAtOFr94MlI1fZEoDlSfB1D++N6xybVCi0ITz8fAr/73trdf+L +HaAZBav6+CuBQug4urv7qv094PPK306Xlynt8xhW6aWWrL3DkJiy4Pmi1KZHQ3xt +zwIDAQABo0IwQDAdBgNVHQ4EFgQUVnNYZJX5khqwEioEYnmhQBWIIUkwDgYDVR0P +AQH/BAQDAgGGMA8GA1UdEwEB/wQFMAMBAf8wDQYJKoZIhvcNAQEMBQADggIBAC9c +mTz8Bl6MlC5w6tIyMY208FHVvArzZJ8HXtXBc2hkeqK5Duj5XYUtqDdFqij0lgVQ +YKlJfp/imTYpE0RHap1VIDzYm/EDMrraQKFz6oOht0SmDpkBm+S8f74TlH7Kph52 +gDY9hAaLMyZlbcp+nv4fjFg4exqDsQ+8FxG75gbMY/qB8oFM2gsQa6H61SilzwZA +Fv97fRheORKkU55+MkIQpiGRqRxOF3yEvJ+M0ejf5lG5Nkc/kLnHvALcWxxPDkjB +JYOcCj+esQMzEhonrPcibCTRAUH4WAP+JWgiH5paPHxsnnVI84HxZmduTILA7rpX +DhjvLpr3Etiga+kFpaHpaPi8TD8SHkXoUsCjvxInebnMMTzD9joiFgOgyY9mpFui +TdaBJQbpdqQACj7LzTWb4OE4y2BThihCQRxEV+ioratF4yUQvNs+ZUH7G6aXD+u5 +dHn5HrwdVw1Hr8Mvn4dGp+smWg9WY7ViYG4A++MnESLn/pmPNPW56MORcr3Ywx65 +LvKRRFHQV80MNNVIIb/bE/FmJUNS0nAiNs2fxBx1IK1jcmMGDw4nztJqDby1ORrp +0XZ60Vzk50lJLVU3aPAaOpg+VBeHVOmmJ1CJeyAvP/+/oYtKR5j/K3tJPsMpRmAY +QqszKbrAKbkTidOIijlBO8n9pu0f9GBj39ItVQGL +-----END CERTIFICATE----- + +# Issuer: CN=SSL.com TLS RSA Root CA 2022 O=SSL Corporation +# Subject: CN=SSL.com TLS RSA Root CA 2022 O=SSL Corporation +# Label: "SSL.com TLS RSA Root CA 2022" +# Serial: 148535279242832292258835760425842727825 +# MD5 Fingerprint: d8:4e:c6:59:30:d8:fe:a0:d6:7a:5a:2c:2c:69:78:da +# SHA1 Fingerprint: ec:2c:83:40:72:af:26:95:10:ff:0e:f2:03:ee:31:70:f6:78:9d:ca +# SHA256 Fingerprint: 8f:af:7d:2e:2c:b4:70:9b:b8:e0:b3:36:66:bf:75:a5:dd:45:b5:de:48:0f:8e:a8:d4:bf:e6:be:bc:17:f2:ed +-----BEGIN CERTIFICATE----- +MIIFiTCCA3GgAwIBAgIQb77arXO9CEDii02+1PdbkTANBgkqhkiG9w0BAQsFADBO +MQswCQYDVQQGEwJVUzEYMBYGA1UECgwPU1NMIENvcnBvcmF0aW9uMSUwIwYDVQQD +DBxTU0wuY29tIFRMUyBSU0EgUm9vdCBDQSAyMDIyMB4XDTIyMDgyNTE2MzQyMloX +DTQ2MDgxOTE2MzQyMVowTjELMAkGA1UEBhMCVVMxGDAWBgNVBAoMD1NTTCBDb3Jw +b3JhdGlvbjElMCMGA1UEAwwcU1NMLmNvbSBUTFMgUlNBIFJvb3QgQ0EgMjAyMjCC +AiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBANCkCXJPQIgSYT41I57u9nTP +L3tYPc48DRAokC+X94xI2KDYJbFMsBFMF3NQ0CJKY7uB0ylu1bUJPiYYf7ISf5OY +t6/wNr/y7hienDtSxUcZXXTzZGbVXcdotL8bHAajvI9AI7YexoS9UcQbOcGV0ins +S657Lb85/bRi3pZ7QcacoOAGcvvwB5cJOYF0r/c0WRFXCsJbwST0MXMwgsadugL3 +PnxEX4MN8/HdIGkWCVDi1FW24IBydm5MR7d1VVm0U3TZlMZBrViKMWYPHqIbKUBO +L9975hYsLfy/7PO0+r4Y9ptJ1O4Fbtk085zx7AGL0SDGD6C1vBdOSHtRwvzpXGk3 +R2azaPgVKPC506QVzFpPulJwoxJF3ca6TvvC0PeoUidtbnm1jPx7jMEWTO6Af77w +dr5BUxIzrlo4QqvXDz5BjXYHMtWrifZOZ9mxQnUjbvPNQrL8VfVThxc7wDNY8VLS ++YCk8OjwO4s4zKTGkH8PnP2L0aPP2oOnaclQNtVcBdIKQXTbYxE3waWglksejBYS +d66UNHsef8JmAOSqg+qKkK3ONkRN0VHpvB/zagX9wHQfJRlAUW7qglFA35u5CCoG +AtUjHBPW6dvbxrB6y3snm/vg1UYk7RBLY0ulBY+6uB0rpvqR4pJSvezrZ5dtmi2f +gTIFZzL7SAg/2SW4BCUvAgMBAAGjYzBhMA8GA1UdEwEB/wQFMAMBAf8wHwYDVR0j +BBgwFoAU+y437uOEeicuzRk1sTN8/9REQrkwHQYDVR0OBBYEFPsuN+7jhHonLs0Z +NbEzfP/UREK5MA4GA1UdDwEB/wQEAwIBhjANBgkqhkiG9w0BAQsFAAOCAgEAjYlt +hEUY8U+zoO9opMAdrDC8Z2awms22qyIZZtM7QbUQnRC6cm4pJCAcAZli05bg4vsM +QtfhWsSWTVTNj8pDU/0quOr4ZcoBwq1gaAafORpR2eCNJvkLTqVTJXojpBzOCBvf +R4iyrT7gJ4eLSYwfqUdYe5byiB0YrrPRpgqU+tvT5TgKa3kSM/tKWTcWQA673vWJ +DPFs0/dRa1419dvAJuoSc06pkZCmF8NsLzjUo3KUQyxi4U5cMj29TH0ZR6LDSeeW +P4+a0zvkEdiLA9z2tmBVGKaBUfPhqBVq6+AL8BQx1rmMRTqoENjwuSfr98t67wVy +lrXEj5ZzxOhWc5y8aVFjvO9nHEMaX3cZHxj4HCUp+UmZKbaSPaKDN7EgkaibMOlq +bLQjk2UEqxHzDh1TJElTHaE/nUiSEeJ9DU/1172iWD54nR4fK/4huxoTtrEoZP2w +AgDHbICivRZQIA9ygV/MlP+7mea6kMvq+cYMwq7FGc4zoWtcu358NFcXrfA/rs3q +r5nsLFR+jM4uElZI7xc7P0peYNLcdDa8pUNjyw9bowJWCZ4kLOGGgYz+qxcs+sji +Mho6/4UIyYOf8kpIEFR3N+2ivEC+5BB09+Rbu7nzifmPQdjH5FCQNYA+HLhNkNPU +98OwoX6EyneSMSy4kLGCenROmxMmtNVQZlR4rmA= +-----END CERTIFICATE----- + +# Issuer: CN=SSL.com TLS ECC Root CA 2022 O=SSL Corporation +# Subject: CN=SSL.com TLS ECC Root CA 2022 O=SSL Corporation +# Label: "SSL.com TLS ECC Root CA 2022" +# Serial: 26605119622390491762507526719404364228 +# MD5 Fingerprint: 99:d7:5c:f1:51:36:cc:e9:ce:d9:19:2e:77:71:56:c5 +# SHA1 Fingerprint: 9f:5f:d9:1a:54:6d:f5:0c:71:f0:ee:7a:bd:17:49:98:84:73:e2:39 +# SHA256 Fingerprint: c3:2f:fd:9f:46:f9:36:d1:6c:36:73:99:09:59:43:4b:9a:d6:0a:af:bb:9e:7c:f3:36:54:f1:44:cc:1b:a1:43 +-----BEGIN CERTIFICATE----- +MIICOjCCAcCgAwIBAgIQFAP1q/s3ixdAW+JDsqXRxDAKBggqhkjOPQQDAzBOMQsw +CQYDVQQGEwJVUzEYMBYGA1UECgwPU1NMIENvcnBvcmF0aW9uMSUwIwYDVQQDDBxT +U0wuY29tIFRMUyBFQ0MgUm9vdCBDQSAyMDIyMB4XDTIyMDgyNTE2MzM0OFoXDTQ2 +MDgxOTE2MzM0N1owTjELMAkGA1UEBhMCVVMxGDAWBgNVBAoMD1NTTCBDb3Jwb3Jh +dGlvbjElMCMGA1UEAwwcU1NMLmNvbSBUTFMgRUNDIFJvb3QgQ0EgMjAyMjB2MBAG +ByqGSM49AgEGBSuBBAAiA2IABEUpNXP6wrgjzhR9qLFNoFs27iosU8NgCTWyJGYm +acCzldZdkkAZDsalE3D07xJRKF3nzL35PIXBz5SQySvOkkJYWWf9lCcQZIxPBLFN +SeR7T5v15wj4A4j3p8OSSxlUgaNjMGEwDwYDVR0TAQH/BAUwAwEB/zAfBgNVHSME +GDAWgBSJjy+j6CugFFR781a4Jl9nOAuc0DAdBgNVHQ4EFgQUiY8vo+groBRUe/NW +uCZfZzgLnNAwDgYDVR0PAQH/BAQDAgGGMAoGCCqGSM49BAMDA2gAMGUCMFXjIlbp +15IkWE8elDIPDAI2wv2sdDJO4fscgIijzPvX6yv/N33w7deedWo1dlJF4AIxAMeN +b0Igj762TVntd00pxCAgRWSGOlDGxK0tk/UYfXLtqc/ErFc2KAhl3zx5Zn6g6g== +-----END CERTIFICATE----- + +# Issuer: CN=Atos TrustedRoot Root CA ECC TLS 2021 O=Atos +# Subject: CN=Atos TrustedRoot Root CA ECC TLS 2021 O=Atos +# Label: "Atos TrustedRoot Root CA ECC TLS 2021" +# Serial: 81873346711060652204712539181482831616 +# MD5 Fingerprint: 16:9f:ad:f1:70:ad:79:d6:ed:29:b4:d1:c5:79:70:a8 +# SHA1 Fingerprint: 9e:bc:75:10:42:b3:02:f3:81:f4:f7:30:62:d4:8f:c3:a7:51:b2:dd +# SHA256 Fingerprint: b2:fa:e5:3e:14:cc:d7:ab:92:12:06:47:01:ae:27:9c:1d:89:88:fa:cb:77:5f:a8:a0:08:91:4e:66:39:88:a8 +-----BEGIN CERTIFICATE----- +MIICFTCCAZugAwIBAgIQPZg7pmY9kGP3fiZXOATvADAKBggqhkjOPQQDAzBMMS4w +LAYDVQQDDCVBdG9zIFRydXN0ZWRSb290IFJvb3QgQ0EgRUNDIFRMUyAyMDIxMQ0w +CwYDVQQKDARBdG9zMQswCQYDVQQGEwJERTAeFw0yMTA0MjIwOTI2MjNaFw00MTA0 +MTcwOTI2MjJaMEwxLjAsBgNVBAMMJUF0b3MgVHJ1c3RlZFJvb3QgUm9vdCBDQSBF +Q0MgVExTIDIwMjExDTALBgNVBAoMBEF0b3MxCzAJBgNVBAYTAkRFMHYwEAYHKoZI +zj0CAQYFK4EEACIDYgAEloZYKDcKZ9Cg3iQZGeHkBQcfl+3oZIK59sRxUM6KDP/X +tXa7oWyTbIOiaG6l2b4siJVBzV3dscqDY4PMwL502eCdpO5KTlbgmClBk1IQ1SQ4 +AjJn8ZQSb+/Xxd4u/RmAo0IwQDAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBR2 +KCXWfeBmmnoJsmo7jjPXNtNPojAOBgNVHQ8BAf8EBAMCAYYwCgYIKoZIzj0EAwMD +aAAwZQIwW5kp85wxtolrbNa9d+F851F+uDrNozZffPc8dz7kUK2o59JZDCaOMDtu +CCrCp1rIAjEAmeMM56PDr9NJLkaCI2ZdyQAUEv049OGYa3cpetskz2VAv9LcjBHo +9H1/IISpQuQo +-----END CERTIFICATE----- + +# Issuer: CN=Atos TrustedRoot Root CA RSA TLS 2021 O=Atos +# Subject: CN=Atos TrustedRoot Root CA RSA TLS 2021 O=Atos +# Label: "Atos TrustedRoot Root CA RSA TLS 2021" +# Serial: 111436099570196163832749341232207667876 +# MD5 Fingerprint: d4:d3:46:b8:9a:c0:9c:76:5d:9e:3a:c3:b9:99:31:d2 +# SHA1 Fingerprint: 18:52:3b:0d:06:37:e4:d6:3a:df:23:e4:98:fb:5b:16:fb:86:74:48 +# SHA256 Fingerprint: 81:a9:08:8e:a5:9f:b3:64:c5:48:a6:f8:55:59:09:9b:6f:04:05:ef:bf:18:e5:32:4e:c9:f4:57:ba:00:11:2f +-----BEGIN CERTIFICATE----- +MIIFZDCCA0ygAwIBAgIQU9XP5hmTC/srBRLYwiqipDANBgkqhkiG9w0BAQwFADBM +MS4wLAYDVQQDDCVBdG9zIFRydXN0ZWRSb290IFJvb3QgQ0EgUlNBIFRMUyAyMDIx +MQ0wCwYDVQQKDARBdG9zMQswCQYDVQQGEwJERTAeFw0yMTA0MjIwOTIxMTBaFw00 +MTA0MTcwOTIxMDlaMEwxLjAsBgNVBAMMJUF0b3MgVHJ1c3RlZFJvb3QgUm9vdCBD +QSBSU0EgVExTIDIwMjExDTALBgNVBAoMBEF0b3MxCzAJBgNVBAYTAkRFMIICIjAN +BgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAtoAOxHm9BYx9sKOdTSJNy/BBl01Z +4NH+VoyX8te9j2y3I49f1cTYQcvyAh5x5en2XssIKl4w8i1mx4QbZFc4nXUtVsYv +Ye+W/CBGvevUez8/fEc4BKkbqlLfEzfTFRVOvV98r61jx3ncCHvVoOX3W3WsgFWZ +kmGbzSoXfduP9LVq6hdKZChmFSlsAvFr1bqjM9xaZ6cF4r9lthawEO3NUDPJcFDs +GY6wx/J0W2tExn2WuZgIWWbeKQGb9Cpt0xU6kGpn8bRrZtkh68rZYnxGEFzedUln +nkL5/nWpo63/dgpnQOPF943HhZpZnmKaau1Fh5hnstVKPNe0OwANwI8f4UDErmwh +3El+fsqyjW22v5MvoVw+j8rtgI5Y4dtXz4U2OLJxpAmMkokIiEjxQGMYsluMWuPD +0xeqqxmjLBvk1cbiZnrXghmmOxYsL3GHX0WelXOTwkKBIROW1527k2gV+p2kHYzy +geBYBr3JtuP2iV2J+axEoctr+hbxx1A9JNr3w+SH1VbxT5Aw+kUJWdo0zuATHAR8 +ANSbhqRAvNncTFd+rrcztl524WWLZt+NyteYr842mIycg5kDcPOvdO3GDjbnvezB +c6eUWsuSZIKmAMFwoW4sKeFYV+xafJlrJaSQOoD0IJ2azsct+bJLKZWD6TWNp0lI +pw9MGZHQ9b8Q4HECAwEAAaNCMEAwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQU +dEmZ0f+0emhFdcN+tNzMzjkz2ggwDgYDVR0PAQH/BAQDAgGGMA0GCSqGSIb3DQEB +DAUAA4ICAQAjQ1MkYlxt/T7Cz1UAbMVWiLkO3TriJQ2VSpfKgInuKs1l+NsW4AmS +4BjHeJi78+xCUvuppILXTdiK/ORO/auQxDh1MoSf/7OwKwIzNsAQkG8dnK/haZPs +o0UvFJ/1TCplQ3IM98P4lYsU84UgYt1UU90s3BiVaU+DR3BAM1h3Egyi61IxHkzJ +qM7F78PRreBrAwA0JrRUITWXAdxfG/F851X6LWh3e9NpzNMOa7pNdkTWwhWaJuyw +xfW70Xp0wmzNxbVe9kzmWy2B27O3Opee7c9GslA9hGCZcbUztVdF5kJHdWoOsAgM +rr3e97sPWD2PAzHoPYJQyi9eDF20l74gNAf0xBLh7tew2VktafcxBPTy+av5EzH4 +AXcOPUIjJsyacmdRIXrMPIWo6iFqO9taPKU0nprALN+AnCng33eU0aKAQv9qTFsR +0PXNor6uzFFcw9VUewyu1rkGd4Di7wcaaMxZUa1+XGdrudviB0JbuAEFWDlN5LuY +o7Ey7Nmj1m+UI/87tyll5gfp77YZ6ufCOB0yiJA8EytuzO+rdwY0d4RPcuSBhPm5 +dDTedk+SKlOxJTnbPP/lPqYO5Wue/9vsL3SD3460s6neFE3/MaNFcyT6lSnMEpcE +oji2jbDwN/zIIX8/syQbPYtuzE2wFg2WHYMfRsCbvUOZ58SWLs5fyQ== +-----END CERTIFICATE----- + +# Issuer: CN=TrustAsia Global Root CA G3 O=TrustAsia Technologies, Inc. +# Subject: CN=TrustAsia Global Root CA G3 O=TrustAsia Technologies, Inc. +# Label: "TrustAsia Global Root CA G3" +# Serial: 576386314500428537169965010905813481816650257167 +# MD5 Fingerprint: 30:42:1b:b7:bb:81:75:35:e4:16:4f:53:d2:94:de:04 +# SHA1 Fingerprint: 63:cf:b6:c1:27:2b:56:e4:88:8e:1c:23:9a:b6:2e:81:47:24:c3:c7 +# SHA256 Fingerprint: e0:d3:22:6a:eb:11:63:c2:e4:8f:f9:be:3b:50:b4:c6:43:1b:e7:bb:1e:ac:c5:c3:6b:5d:5e:c5:09:03:9a:08 +-----BEGIN CERTIFICATE----- +MIIFpTCCA42gAwIBAgIUZPYOZXdhaqs7tOqFhLuxibhxkw8wDQYJKoZIhvcNAQEM +BQAwWjELMAkGA1UEBhMCQ04xJTAjBgNVBAoMHFRydXN0QXNpYSBUZWNobm9sb2dp +ZXMsIEluYy4xJDAiBgNVBAMMG1RydXN0QXNpYSBHbG9iYWwgUm9vdCBDQSBHMzAe +Fw0yMTA1MjAwMjEwMTlaFw00NjA1MTkwMjEwMTlaMFoxCzAJBgNVBAYTAkNOMSUw +IwYDVQQKDBxUcnVzdEFzaWEgVGVjaG5vbG9naWVzLCBJbmMuMSQwIgYDVQQDDBtU +cnVzdEFzaWEgR2xvYmFsIFJvb3QgQ0EgRzMwggIiMA0GCSqGSIb3DQEBAQUAA4IC +DwAwggIKAoICAQDAMYJhkuSUGwoqZdC+BqmHO1ES6nBBruL7dOoKjbmzTNyPtxNS +T1QY4SxzlZHFZjtqz6xjbYdT8PfxObegQ2OwxANdV6nnRM7EoYNl9lA+sX4WuDqK +AtCWHwDNBSHvBm3dIZwZQ0WhxeiAysKtQGIXBsaqvPPW5vxQfmZCHzyLpnl5hkA1 +nyDvP+uLRx+PjsXUjrYsyUQE49RDdT/VP68czH5GX6zfZBCK70bwkPAPLfSIC7Ep +qq+FqklYqL9joDiR5rPmd2jE+SoZhLsO4fWvieylL1AgdB4SQXMeJNnKziyhWTXA +yB1GJ2Faj/lN03J5Zh6fFZAhLf3ti1ZwA0pJPn9pMRJpxx5cynoTi+jm9WAPzJMs +hH/x/Gr8m0ed262IPfN2dTPXS6TIi/n1Q1hPy8gDVI+lhXgEGvNz8teHHUGf59gX +zhqcD0r83ERoVGjiQTz+LISGNzzNPy+i2+f3VANfWdP3kXjHi3dqFuVJhZBFcnAv +kV34PmVACxmZySYgWmjBNb9Pp1Hx2BErW+Canig7CjoKH8GB5S7wprlppYiU5msT +f9FkPz2ccEblooV7WIQn3MSAPmeamseaMQ4w7OYXQJXZRe0Blqq/DPNL0WP3E1jA +uPP6Z92bfW1K/zJMtSU7/xxnD4UiWQWRkUF3gdCFTIcQcf+eQxuulXUtgQIDAQAB +o2MwYTAPBgNVHRMBAf8EBTADAQH/MB8GA1UdIwQYMBaAFEDk5PIj7zjKsK5Xf/Ih +MBY027ySMB0GA1UdDgQWBBRA5OTyI+84yrCuV3/yITAWNNu8kjAOBgNVHQ8BAf8E +BAMCAQYwDQYJKoZIhvcNAQEMBQADggIBACY7UeFNOPMyGLS0XuFlXsSUT9SnYaP4 +wM8zAQLpw6o1D/GUE3d3NZ4tVlFEbuHGLige/9rsR82XRBf34EzC4Xx8MnpmyFq2 +XFNFV1pF1AWZLy4jVe5jaN/TG3inEpQGAHUNcoTpLrxaatXeL1nHo+zSh2bbt1S1 +JKv0Q3jbSwTEb93mPmY+KfJLaHEih6D4sTNjduMNhXJEIlU/HHzp/LgV6FL6qj6j +ITk1dImmasI5+njPtqzn59ZW/yOSLlALqbUHM/Q4X6RJpstlcHboCoWASzY9M/eV +VHUl2qzEc4Jl6VL1XP04lQJqaTDFHApXB64ipCz5xUG3uOyfT0gA+QEEVcys+TIx +xHWVBqB/0Y0n3bOppHKH/lmLmnp0Ft0WpWIp6zqW3IunaFnT63eROfjXy9mPX1on +AX1daBli2MjN9LdyR75bl87yraKZk62Uy5P2EgmVtqvXO9A/EcswFi55gORngS1d +7XB4tmBZrOFdRWOPyN9yaFvqHbgB8X7754qz41SgOAngPN5C8sLtLpvzHzW2Ntjj +gKGLzZlkD8Kqq7HK9W+eQ42EVJmzbsASZthwEPEGNTNDqJwuuhQxzhB/HIbjj9LV ++Hfsm6vxL2PZQl/gZ4FkkfGXL/xuJvYz+NO1+MRiqzFRJQJ6+N1rZdVtTTDIZbpo +FGWsJwt0ivKH +-----END CERTIFICATE----- + +# Issuer: CN=TrustAsia Global Root CA G4 O=TrustAsia Technologies, Inc. +# Subject: CN=TrustAsia Global Root CA G4 O=TrustAsia Technologies, Inc. +# Label: "TrustAsia Global Root CA G4" +# Serial: 451799571007117016466790293371524403291602933463 +# MD5 Fingerprint: 54:dd:b2:d7:5f:d8:3e:ed:7c:e0:0b:2e:cc:ed:eb:eb +# SHA1 Fingerprint: 57:73:a5:61:5d:80:b2:e6:ac:38:82:fc:68:07:31:ac:9f:b5:92:5a +# SHA256 Fingerprint: be:4b:56:cb:50:56:c0:13:6a:52:6d:f4:44:50:8d:aa:36:a0:b5:4f:42:e4:ac:38:f7:2a:f4:70:e4:79:65:4c +-----BEGIN CERTIFICATE----- +MIICVTCCAdygAwIBAgIUTyNkuI6XY57GU4HBdk7LKnQV1tcwCgYIKoZIzj0EAwMw +WjELMAkGA1UEBhMCQ04xJTAjBgNVBAoMHFRydXN0QXNpYSBUZWNobm9sb2dpZXMs +IEluYy4xJDAiBgNVBAMMG1RydXN0QXNpYSBHbG9iYWwgUm9vdCBDQSBHNDAeFw0y +MTA1MjAwMjEwMjJaFw00NjA1MTkwMjEwMjJaMFoxCzAJBgNVBAYTAkNOMSUwIwYD +VQQKDBxUcnVzdEFzaWEgVGVjaG5vbG9naWVzLCBJbmMuMSQwIgYDVQQDDBtUcnVz +dEFzaWEgR2xvYmFsIFJvb3QgQ0EgRzQwdjAQBgcqhkjOPQIBBgUrgQQAIgNiAATx +s8045CVD5d4ZCbuBeaIVXxVjAd7Cq92zphtnS4CDr5nLrBfbK5bKfFJV4hrhPVbw +LxYI+hW8m7tH5j/uqOFMjPXTNvk4XatwmkcN4oFBButJ+bAp3TPsUKV/eSm4IJij +YzBhMA8GA1UdEwEB/wQFMAMBAf8wHwYDVR0jBBgwFoAUpbtKl86zK3+kMd6Xg1mD +pm9xy94wHQYDVR0OBBYEFKW7SpfOsyt/pDHel4NZg6ZvccveMA4GA1UdDwEB/wQE +AwIBBjAKBggqhkjOPQQDAwNnADBkAjBe8usGzEkxn0AAbbd+NvBNEU/zy4k6LHiR +UKNbwMp1JvK/kF0LgoxgKJ/GcJpo5PECMFxYDlZ2z1jD1xCMuo6u47xkdUfFVZDj +/bpV6wfEU6s3qe4hsiFbYI89MvHVI5TWWA== +-----END CERTIFICATE----- + +# Issuer: CN=CommScope Public Trust ECC Root-01 O=CommScope +# Subject: CN=CommScope Public Trust ECC Root-01 O=CommScope +# Label: "CommScope Public Trust ECC Root-01" +# Serial: 385011430473757362783587124273108818652468453534 +# MD5 Fingerprint: 3a:40:a7:fc:03:8c:9c:38:79:2f:3a:a2:6c:b6:0a:16 +# SHA1 Fingerprint: 07:86:c0:d8:dd:8e:c0:80:98:06:98:d0:58:7a:ef:de:a6:cc:a2:5d +# SHA256 Fingerprint: 11:43:7c:da:7b:b4:5e:41:36:5f:45:b3:9a:38:98:6b:0d:e0:0d:ef:34:8e:0c:7b:b0:87:36:33:80:0b:c3:8b +-----BEGIN CERTIFICATE----- +MIICHTCCAaOgAwIBAgIUQ3CCd89NXTTxyq4yLzf39H91oJ4wCgYIKoZIzj0EAwMw +TjELMAkGA1UEBhMCVVMxEjAQBgNVBAoMCUNvbW1TY29wZTErMCkGA1UEAwwiQ29t +bVNjb3BlIFB1YmxpYyBUcnVzdCBFQ0MgUm9vdC0wMTAeFw0yMTA0MjgxNzM1NDNa +Fw00NjA0MjgxNzM1NDJaME4xCzAJBgNVBAYTAlVTMRIwEAYDVQQKDAlDb21tU2Nv +cGUxKzApBgNVBAMMIkNvbW1TY29wZSBQdWJsaWMgVHJ1c3QgRUNDIFJvb3QtMDEw +djAQBgcqhkjOPQIBBgUrgQQAIgNiAARLNumuV16ocNfQj3Rid8NeeqrltqLxeP0C +flfdkXmcbLlSiFS8LwS+uM32ENEp7LXQoMPwiXAZu1FlxUOcw5tjnSCDPgYLpkJE +hRGnSjot6dZoL0hOUysHP029uax3OVejQjBAMA8GA1UdEwEB/wQFMAMBAf8wDgYD +VR0PAQH/BAQDAgEGMB0GA1UdDgQWBBSOB2LAUN3GGQYARnQE9/OufXVNMDAKBggq +hkjOPQQDAwNoADBlAjEAnDPfQeMjqEI2Jpc1XHvr20v4qotzVRVcrHgpD7oh2MSg +2NED3W3ROT3Ek2DS43KyAjB8xX6I01D1HiXo+k515liWpDVfG2XqYZpwI7UNo5uS +Um9poIyNStDuiw7LR47QjRE= +-----END CERTIFICATE----- + +# Issuer: CN=CommScope Public Trust ECC Root-02 O=CommScope +# Subject: CN=CommScope Public Trust ECC Root-02 O=CommScope +# Label: "CommScope Public Trust ECC Root-02" +# Serial: 234015080301808452132356021271193974922492992893 +# MD5 Fingerprint: 59:b0:44:d5:65:4d:b8:5c:55:19:92:02:b6:d1:94:b2 +# SHA1 Fingerprint: 3c:3f:ef:57:0f:fe:65:93:86:9e:a0:fe:b0:f6:ed:8e:d1:13:c7:e5 +# SHA256 Fingerprint: 2f:fb:7f:81:3b:bb:b3:c8:9a:b4:e8:16:2d:0f:16:d7:15:09:a8:30:cc:9d:73:c2:62:e5:14:08:75:d1:ad:4a +-----BEGIN CERTIFICATE----- +MIICHDCCAaOgAwIBAgIUKP2ZYEFHpgE6yhR7H+/5aAiDXX0wCgYIKoZIzj0EAwMw +TjELMAkGA1UEBhMCVVMxEjAQBgNVBAoMCUNvbW1TY29wZTErMCkGA1UEAwwiQ29t +bVNjb3BlIFB1YmxpYyBUcnVzdCBFQ0MgUm9vdC0wMjAeFw0yMTA0MjgxNzQ0NTRa +Fw00NjA0MjgxNzQ0NTNaME4xCzAJBgNVBAYTAlVTMRIwEAYDVQQKDAlDb21tU2Nv +cGUxKzApBgNVBAMMIkNvbW1TY29wZSBQdWJsaWMgVHJ1c3QgRUNDIFJvb3QtMDIw +djAQBgcqhkjOPQIBBgUrgQQAIgNiAAR4MIHoYx7l63FRD/cHB8o5mXxO1Q/MMDAL +j2aTPs+9xYa9+bG3tD60B8jzljHz7aRP+KNOjSkVWLjVb3/ubCK1sK9IRQq9qEmU +v4RDsNuESgMjGWdqb8FuvAY5N9GIIvejQjBAMA8GA1UdEwEB/wQFMAMBAf8wDgYD +VR0PAQH/BAQDAgEGMB0GA1UdDgQWBBTmGHX/72DehKT1RsfeSlXjMjZ59TAKBggq +hkjOPQQDAwNnADBkAjAmc0l6tqvmSfR9Uj/UQQSugEODZXW5hYA4O9Zv5JOGq4/n +ich/m35rChJVYaoR4HkCMHfoMXGsPHED1oQmHhS48zs73u1Z/GtMMH9ZzkXpc2AV +mkzw5l4lIhVtwodZ0LKOag== +-----END CERTIFICATE----- + +# Issuer: CN=CommScope Public Trust RSA Root-01 O=CommScope +# Subject: CN=CommScope Public Trust RSA Root-01 O=CommScope +# Label: "CommScope Public Trust RSA Root-01" +# Serial: 354030733275608256394402989253558293562031411421 +# MD5 Fingerprint: 0e:b4:15:bc:87:63:5d:5d:02:73:d4:26:38:68:73:d8 +# SHA1 Fingerprint: 6d:0a:5f:f7:b4:23:06:b4:85:b3:b7:97:64:fc:ac:75:f5:33:f2:93 +# SHA256 Fingerprint: 02:bd:f9:6e:2a:45:dd:9b:f1:8f:c7:e1:db:df:21:a0:37:9b:a3:c9:c2:61:03:44:cf:d8:d6:06:fe:c1:ed:81 +-----BEGIN CERTIFICATE----- +MIIFbDCCA1SgAwIBAgIUPgNJgXUWdDGOTKvVxZAplsU5EN0wDQYJKoZIhvcNAQEL +BQAwTjELMAkGA1UEBhMCVVMxEjAQBgNVBAoMCUNvbW1TY29wZTErMCkGA1UEAwwi +Q29tbVNjb3BlIFB1YmxpYyBUcnVzdCBSU0EgUm9vdC0wMTAeFw0yMTA0MjgxNjQ1 +NTRaFw00NjA0MjgxNjQ1NTNaME4xCzAJBgNVBAYTAlVTMRIwEAYDVQQKDAlDb21t +U2NvcGUxKzApBgNVBAMMIkNvbW1TY29wZSBQdWJsaWMgVHJ1c3QgUlNBIFJvb3Qt +MDEwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQCwSGWjDR1C45FtnYSk +YZYSwu3D2iM0GXb26v1VWvZVAVMP8syMl0+5UMuzAURWlv2bKOx7dAvnQmtVzslh +suitQDy6uUEKBU8bJoWPQ7VAtYXR1HHcg0Hz9kXHgKKEUJdGzqAMxGBWBB0HW0al +DrJLpA6lfO741GIDuZNqihS4cPgugkY4Iw50x2tBt9Apo52AsH53k2NC+zSDO3Oj +WiE260f6GBfZumbCk6SP/F2krfxQapWsvCQz0b2If4b19bJzKo98rwjyGpg/qYFl +P8GMicWWMJoKz/TUyDTtnS+8jTiGU+6Xn6myY5QXjQ/cZip8UlF1y5mO6D1cv547 +KI2DAg+pn3LiLCuz3GaXAEDQpFSOm117RTYm1nJD68/A6g3czhLmfTifBSeolz7p +UcZsBSjBAg/pGG3svZwG1KdJ9FQFa2ww8esD1eo9anbCyxooSU1/ZOD6K9pzg4H/ +kQO9lLvkuI6cMmPNn7togbGEW682v3fuHX/3SZtS7NJ3Wn2RnU3COS3kuoL4b/JO +Hg9O5j9ZpSPcPYeoKFgo0fEbNttPxP/hjFtyjMcmAyejOQoBqsCyMWCDIqFPEgkB +Ea801M/XrmLTBQe0MXXgDW1XT2mH+VepuhX2yFJtocucH+X8eKg1mp9BFM6ltM6U +CBwJrVbl2rZJmkrqYxhTnCwuwwIDAQABo0IwQDAPBgNVHRMBAf8EBTADAQH/MA4G +A1UdDwEB/wQEAwIBBjAdBgNVHQ4EFgQUN12mmnQywsL5x6YVEFm45P3luG0wDQYJ +KoZIhvcNAQELBQADggIBAK+nz97/4L1CjU3lIpbfaOp9TSp90K09FlxD533Ahuh6 +NWPxzIHIxgvoLlI1pKZJkGNRrDSsBTtXAOnTYtPZKdVUvhwQkZyybf5Z/Xn36lbQ +nmhUQo8mUuJM3y+Xpi/SB5io82BdS5pYV4jvguX6r2yBS5KPQJqTRlnLX3gWsWc+ +QgvfKNmwrZggvkN80V4aCRckjXtdlemrwWCrWxhkgPut4AZ9HcpZuPN4KWfGVh2v +trV0KnahP/t1MJ+UXjulYPPLXAziDslg+MkfFoom3ecnf+slpoq9uC02EJqxWE2a +aE9gVOX2RhOOiKy8IUISrcZKiX2bwdgt6ZYD9KJ0DLwAHb/WNyVntHKLr4W96ioD +j8z7PEQkguIBpQtZtjSNMgsSDesnwv1B10A8ckYpwIzqug/xBpMu95yo9GA+o/E4 +Xo4TwbM6l4c/ksp4qRyv0LAbJh6+cOx69TOY6lz/KwsETkPdY34Op054A5U+1C0w +lREQKC6/oAI+/15Z0wUOlV9TRe9rh9VIzRamloPh37MG88EU26fsHItdkJANclHn +YfkUyq+Dj7+vsQpZXdxc1+SWrVtgHdqul7I52Qb1dgAT+GhMIbA1xNxVssnBQVoc +icCMb3SgazNNtQEo/a2tiRc7ppqEvOuM6sRxJKi6KfkIsidWNTJf6jn7MZrVGczw +-----END CERTIFICATE----- + +# Issuer: CN=CommScope Public Trust RSA Root-02 O=CommScope +# Subject: CN=CommScope Public Trust RSA Root-02 O=CommScope +# Label: "CommScope Public Trust RSA Root-02" +# Serial: 480062499834624527752716769107743131258796508494 +# MD5 Fingerprint: e1:29:f9:62:7b:76:e2:96:6d:f3:d4:d7:0f:ae:1f:aa +# SHA1 Fingerprint: ea:b0:e2:52:1b:89:93:4c:11:68:f2:d8:9a:ac:22:4c:a3:8a:57:ae +# SHA256 Fingerprint: ff:e9:43:d7:93:42:4b:4f:7c:44:0c:1c:3d:64:8d:53:63:f3:4b:82:dc:87:aa:7a:9f:11:8f:c5:de:e1:01:f1 +-----BEGIN CERTIFICATE----- +MIIFbDCCA1SgAwIBAgIUVBa/O345lXGN0aoApYYNK496BU4wDQYJKoZIhvcNAQEL +BQAwTjELMAkGA1UEBhMCVVMxEjAQBgNVBAoMCUNvbW1TY29wZTErMCkGA1UEAwwi +Q29tbVNjb3BlIFB1YmxpYyBUcnVzdCBSU0EgUm9vdC0wMjAeFw0yMTA0MjgxNzE2 +NDNaFw00NjA0MjgxNzE2NDJaME4xCzAJBgNVBAYTAlVTMRIwEAYDVQQKDAlDb21t +U2NvcGUxKzApBgNVBAMMIkNvbW1TY29wZSBQdWJsaWMgVHJ1c3QgUlNBIFJvb3Qt +MDIwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQDh+g77aAASyE3VrCLE +NQE7xVTlWXZjpX/rwcRqmL0yjReA61260WI9JSMZNRTpf4mnG2I81lDnNJUDMrG0 +kyI9p+Kx7eZ7Ti6Hmw0zdQreqjXnfuU2mKKuJZ6VszKWpCtYHu8//mI0SFHRtI1C +rWDaSWqVcN3SAOLMV2MCe5bdSZdbkk6V0/nLKR8YSvgBKtJjCW4k6YnS5cciTNxz +hkcAqg2Ijq6FfUrpuzNPDlJwnZXjfG2WWy09X6GDRl224yW4fKcZgBzqZUPckXk2 +LHR88mcGyYnJ27/aaL8j7dxrrSiDeS/sOKUNNwFnJ5rpM9kzXzehxfCrPfp4sOcs +n/Y+n2Dg70jpkEUeBVF4GiwSLFworA2iI540jwXmojPOEXcT1A6kHkIfhs1w/tku +FT0du7jyU1fbzMZ0KZwYszZ1OC4PVKH4kh+Jlk+71O6d6Ts2QrUKOyrUZHk2EOH5 +kQMreyBUzQ0ZGshBMjTRsJnhkB4BQDa1t/qp5Xd1pCKBXbCL5CcSD1SIxtuFdOa3 +wNemKfrb3vOTlycEVS8KbzfFPROvCgCpLIscgSjX74Yxqa7ybrjKaixUR9gqiC6v +wQcQeKwRoi9C8DfF8rhW3Q5iLc4tVn5V8qdE9isy9COoR+jUKgF4z2rDN6ieZdIs +5fq6M8EGRPbmz6UNp2YINIos8wIDAQABo0IwQDAPBgNVHRMBAf8EBTADAQH/MA4G +A1UdDwEB/wQEAwIBBjAdBgNVHQ4EFgQUR9DnsSL/nSz12Vdgs7GxcJXvYXowDQYJ +KoZIhvcNAQELBQADggIBAIZpsU0v6Z9PIpNojuQhmaPORVMbc0RTAIFhzTHjCLqB +KCh6krm2qMhDnscTJk3C2OVVnJJdUNjCK9v+5qiXz1I6JMNlZFxHMaNlNRPDk7n3 ++VGXu6TwYofF1gbTl4MgqX67tiHCpQ2EAOHyJxCDut0DgdXdaMNmEMjRdrSzbyme +APnCKfWxkxlSaRosTKCL4BWaMS/TiJVZbuXEs1DIFAhKm4sTg7GkcrI7djNB3Nyq +pgdvHSQSn8h2vS/ZjvQs7rfSOBAkNlEv41xdgSGn2rtO/+YHqP65DSdsu3BaVXoT +6fEqSWnHX4dXTEN5bTpl6TBcQe7rd6VzEojov32u5cSoHw2OHG1QAk8mGEPej1WF +sQs3BWDJVTkSBKEqz3EWnzZRSb9wO55nnPt7eck5HHisd5FUmrh1CoFSl+NmYWvt +PjgelmFV4ZFUjO2MJB+ByRCac5krFk5yAD9UG/iNuovnFNa2RU9g7Jauwy8CTl2d +lklyALKrdVwPaFsdZcJfMw8eD/A7hvWwTruc9+olBdytoptLFwG+Qt81IR2tq670 +v64fG9PiO/yzcnMcmyiQiRM9HcEARwmWmjgb3bHPDcK0RPOWlc4yOo80nOAXx17O +rg3bhzjlP1v9mxnhMUF6cKojawHhRUzNlM47ni3niAIi9G7oyOzWPPO5std3eqx7 +-----END CERTIFICATE----- + +# Issuer: CN=Telekom Security TLS ECC Root 2020 O=Deutsche Telekom Security GmbH +# Subject: CN=Telekom Security TLS ECC Root 2020 O=Deutsche Telekom Security GmbH +# Label: "Telekom Security TLS ECC Root 2020" +# Serial: 72082518505882327255703894282316633856 +# MD5 Fingerprint: c1:ab:fe:6a:10:2c:03:8d:bc:1c:22:32:c0:85:a7:fd +# SHA1 Fingerprint: c0:f8:96:c5:a9:3b:01:06:21:07:da:18:42:48:bc:e9:9d:88:d5:ec +# SHA256 Fingerprint: 57:8a:f4:de:d0:85:3f:4e:59:98:db:4a:ea:f9:cb:ea:8d:94:5f:60:b6:20:a3:8d:1a:3c:13:b2:bc:7b:a8:e1 +-----BEGIN CERTIFICATE----- +MIICQjCCAcmgAwIBAgIQNjqWjMlcsljN0AFdxeVXADAKBggqhkjOPQQDAzBjMQsw +CQYDVQQGEwJERTEnMCUGA1UECgweRGV1dHNjaGUgVGVsZWtvbSBTZWN1cml0eSBH +bWJIMSswKQYDVQQDDCJUZWxla29tIFNlY3VyaXR5IFRMUyBFQ0MgUm9vdCAyMDIw +MB4XDTIwMDgyNTA3NDgyMFoXDTQ1MDgyNTIzNTk1OVowYzELMAkGA1UEBhMCREUx +JzAlBgNVBAoMHkRldXRzY2hlIFRlbGVrb20gU2VjdXJpdHkgR21iSDErMCkGA1UE +AwwiVGVsZWtvbSBTZWN1cml0eSBUTFMgRUNDIFJvb3QgMjAyMDB2MBAGByqGSM49 +AgEGBSuBBAAiA2IABM6//leov9Wq9xCazbzREaK9Z0LMkOsVGJDZos0MKiXrPk/O +tdKPD/M12kOLAoC+b1EkHQ9rK8qfwm9QMuU3ILYg/4gND21Ju9sGpIeQkpT0CdDP +f8iAC8GXs7s1J8nCG6NCMEAwHQYDVR0OBBYEFONyzG6VmUex5rNhTNHLq+O6zd6f +MA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEGMAoGCCqGSM49BAMDA2cA +MGQCMHVSi7ekEE+uShCLsoRbQuHmKjYC2qBuGT8lv9pZMo7k+5Dck2TOrbRBR2Di +z6fLHgIwN0GMZt9Ba9aDAEH9L1r3ULRn0SyocddDypwnJJGDSA3PzfdUga/sf+Rn +27iQ7t0l +-----END CERTIFICATE----- + +# Issuer: CN=Telekom Security TLS RSA Root 2023 O=Deutsche Telekom Security GmbH +# Subject: CN=Telekom Security TLS RSA Root 2023 O=Deutsche Telekom Security GmbH +# Label: "Telekom Security TLS RSA Root 2023" +# Serial: 44676229530606711399881795178081572759 +# MD5 Fingerprint: bf:5b:eb:54:40:cd:48:71:c4:20:8d:7d:de:0a:42:f2 +# SHA1 Fingerprint: 54:d3:ac:b3:bd:57:56:f6:85:9d:ce:e5:c3:21:e2:d4:ad:83:d0:93 +# SHA256 Fingerprint: ef:c6:5c:ad:bb:59:ad:b6:ef:e8:4d:a2:23:11:b3:56:24:b7:1b:3b:1e:a0:da:8b:66:55:17:4e:c8:97:86:46 +-----BEGIN CERTIFICATE----- +MIIFszCCA5ugAwIBAgIQIZxULej27HF3+k7ow3BXlzANBgkqhkiG9w0BAQwFADBj +MQswCQYDVQQGEwJERTEnMCUGA1UECgweRGV1dHNjaGUgVGVsZWtvbSBTZWN1cml0 +eSBHbWJIMSswKQYDVQQDDCJUZWxla29tIFNlY3VyaXR5IFRMUyBSU0EgUm9vdCAy +MDIzMB4XDTIzMDMyODEyMTY0NVoXDTQ4MDMyNzIzNTk1OVowYzELMAkGA1UEBhMC +REUxJzAlBgNVBAoMHkRldXRzY2hlIFRlbGVrb20gU2VjdXJpdHkgR21iSDErMCkG +A1UEAwwiVGVsZWtvbSBTZWN1cml0eSBUTFMgUlNBIFJvb3QgMjAyMzCCAiIwDQYJ +KoZIhvcNAQEBBQADggIPADCCAgoCggIBAO01oYGA88tKaVvC+1GDrib94W7zgRJ9 +cUD/h3VCKSHtgVIs3xLBGYSJwb3FKNXVS2xE1kzbB5ZKVXrKNoIENqil/Cf2SfHV +cp6R+SPWcHu79ZvB7JPPGeplfohwoHP89v+1VmLhc2o0mD6CuKyVU/QBoCcHcqMA +U6DksquDOFczJZSfvkgdmOGjup5czQRxUX11eKvzWarE4GC+j4NSuHUaQTXtvPM6 +Y+mpFEXX5lLRbtLevOP1Czvm4MS9Q2QTps70mDdsipWol8hHD/BeEIvnHRz+sTug +BTNoBUGCwQMrAcjnj02r6LX2zWtEtefdi+zqJbQAIldNsLGyMcEWzv/9FIS3R/qy +8XDe24tsNlikfLMR0cN3f1+2JeANxdKz+bi4d9s3cXFH42AYTyS2dTd4uaNir73J +co4vzLuu2+QVUhkHM/tqty1LkCiCc/4YizWN26cEar7qwU02OxY2kTLvtkCJkUPg +8qKrBC7m8kwOFjQgrIfBLX7JZkcXFBGk8/ehJImr2BrIoVyxo/eMbcgByU/J7MT8 +rFEz0ciD0cmfHdRHNCk+y7AO+oMLKFjlKdw/fKifybYKu6boRhYPluV75Gp6SG12 +mAWl3G0eQh5C2hrgUve1g8Aae3g1LDj1H/1Joy7SWWO/gLCMk3PLNaaZlSJhZQNg ++y+TS/qanIA7AgMBAAGjYzBhMA4GA1UdDwEB/wQEAwIBBjAdBgNVHQ4EFgQUtqeX +gj10hZv3PJ+TmpV5dVKMbUcwDwYDVR0TAQH/BAUwAwEB/zAfBgNVHSMEGDAWgBS2 +p5eCPXSFm/c8n5OalXl1UoxtRzANBgkqhkiG9w0BAQwFAAOCAgEAqMxhpr51nhVQ +pGv7qHBFfLp+sVr8WyP6Cnf4mHGCDG3gXkaqk/QeoMPhk9tLrbKmXauw1GLLXrtm +9S3ul0A8Yute1hTWjOKWi0FpkzXmuZlrYrShF2Y0pmtjxrlO8iLpWA1WQdH6DErw +M807u20hOq6OcrXDSvvpfeWxm4bu4uB9tPcy/SKE8YXJN3nptT+/XOR0so8RYgDd +GGah2XsjX/GO1WfoVNpbOms2b/mBsTNHM3dA+VKq3dSDz4V4mZqTuXNnQkYRIer+ +CqkbGmVps4+uFrb2S1ayLfmlyOw7YqPta9BO1UAJpB+Y1zqlklkg5LB9zVtzaL1t +xKITDmcZuI1CfmwMmm6gJC3VRRvcxAIU/oVbZZfKTpBQCHpCNfnqwmbU+AGuHrS+ +w6jv/naaoqYfRvaE7fzbzsQCzndILIyy7MMAo+wsVRjBfhnu4S/yrYObnqsZ38aK +L4x35bcF7DvB7L6Gs4a8wPfc5+pbrrLMtTWGS9DiP7bY+A4A7l3j941Y/8+LN+lj +X273CXE2whJdV/LItM3z7gLfEdxquVeEHVlNjM7IDiPCtyaaEBRx/pOyiriA8A4Q +ntOoUAw3gi/q4Iqd4Sw5/7W0cwDk90imc6y/st53BIe0o82bNSQ3+pCTE4FCxpgm +dTdmQRCsu/WU48IxK63nI1bMNSWSs1A= +-----END CERTIFICATE----- + +# Issuer: CN=FIRMAPROFESIONAL CA ROOT-A WEB O=Firmaprofesional SA +# Subject: CN=FIRMAPROFESIONAL CA ROOT-A WEB O=Firmaprofesional SA +# Label: "FIRMAPROFESIONAL CA ROOT-A WEB" +# Serial: 65916896770016886708751106294915943533 +# MD5 Fingerprint: 82:b2:ad:45:00:82:b0:66:63:f8:5f:c3:67:4e:ce:a3 +# SHA1 Fingerprint: a8:31:11:74:a6:14:15:0d:ca:77:dd:0e:e4:0c:5d:58:fc:a0:72:a5 +# SHA256 Fingerprint: be:f2:56:da:f2:6e:9c:69:bd:ec:16:02:35:97:98:f3:ca:f7:18:21:a0:3e:01:82:57:c5:3c:65:61:7f:3d:4a +-----BEGIN CERTIFICATE----- +MIICejCCAgCgAwIBAgIQMZch7a+JQn81QYehZ1ZMbTAKBggqhkjOPQQDAzBuMQsw +CQYDVQQGEwJFUzEcMBoGA1UECgwTRmlybWFwcm9mZXNpb25hbCBTQTEYMBYGA1UE +YQwPVkFURVMtQTYyNjM0MDY4MScwJQYDVQQDDB5GSVJNQVBST0ZFU0lPTkFMIENB +IFJPT1QtQSBXRUIwHhcNMjIwNDA2MDkwMTM2WhcNNDcwMzMxMDkwMTM2WjBuMQsw +CQYDVQQGEwJFUzEcMBoGA1UECgwTRmlybWFwcm9mZXNpb25hbCBTQTEYMBYGA1UE +YQwPVkFURVMtQTYyNjM0MDY4MScwJQYDVQQDDB5GSVJNQVBST0ZFU0lPTkFMIENB +IFJPT1QtQSBXRUIwdjAQBgcqhkjOPQIBBgUrgQQAIgNiAARHU+osEaR3xyrq89Zf +e9MEkVz6iMYiuYMQYneEMy3pA4jU4DP37XcsSmDq5G+tbbT4TIqk5B/K6k84Si6C +cyvHZpsKjECcfIr28jlgst7L7Ljkb+qbXbdTkBgyVcUgt5SjYzBhMA8GA1UdEwEB +/wQFMAMBAf8wHwYDVR0jBBgwFoAUk+FDY1w8ndYn81LsF7Kpryz3dvgwHQYDVR0O +BBYEFJPhQ2NcPJ3WJ/NS7Beyqa8s93b4MA4GA1UdDwEB/wQEAwIBBjAKBggqhkjO +PQQDAwNoADBlAjAdfKR7w4l1M+E7qUW/Runpod3JIha3RxEL2Jq68cgLcFBTApFw +hVmpHqTm6iMxoAACMQD94vizrxa5HnPEluPBMBnYfubDl94cT7iJLzPrSA8Z94dG +XSaQpYXFuXqUPoeovQA= +-----END CERTIFICATE----- + +# Issuer: CN=TWCA CYBER Root CA O=TAIWAN-CA OU=Root CA +# Subject: CN=TWCA CYBER Root CA O=TAIWAN-CA OU=Root CA +# Label: "TWCA CYBER Root CA" +# Serial: 85076849864375384482682434040119489222 +# MD5 Fingerprint: 0b:33:a0:97:52:95:d4:a9:fd:bb:db:6e:a3:55:5b:51 +# SHA1 Fingerprint: f6:b1:1c:1a:83:38:e9:7b:db:b3:a8:c8:33:24:e0:2d:9c:7f:26:66 +# SHA256 Fingerprint: 3f:63:bb:28:14:be:17:4e:c8:b6:43:9c:f0:8d:6d:56:f0:b7:c4:05:88:3a:56:48:a3:34:42:4d:6b:3e:c5:58 +-----BEGIN CERTIFICATE----- +MIIFjTCCA3WgAwIBAgIQQAE0jMIAAAAAAAAAATzyxjANBgkqhkiG9w0BAQwFADBQ +MQswCQYDVQQGEwJUVzESMBAGA1UEChMJVEFJV0FOLUNBMRAwDgYDVQQLEwdSb290 +IENBMRswGQYDVQQDExJUV0NBIENZQkVSIFJvb3QgQ0EwHhcNMjIxMTIyMDY1NDI5 +WhcNNDcxMTIyMTU1OTU5WjBQMQswCQYDVQQGEwJUVzESMBAGA1UEChMJVEFJV0FO +LUNBMRAwDgYDVQQLEwdSb290IENBMRswGQYDVQQDExJUV0NBIENZQkVSIFJvb3Qg +Q0EwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQDG+Moe2Qkgfh1sTs6P +40czRJzHyWmqOlt47nDSkvgEs1JSHWdyKKHfi12VCv7qze33Kc7wb3+szT3vsxxF +avcokPFhV8UMxKNQXd7UtcsZyoC5dc4pztKFIuwCY8xEMCDa6pFbVuYdHNWdZsc/ +34bKS1PE2Y2yHer43CdTo0fhYcx9tbD47nORxc5zb87uEB8aBs/pJ2DFTxnk684i +JkXXYJndzk834H/nY62wuFm40AZoNWDTNq5xQwTxaWV4fPMf88oon1oglWa0zbfu +j3ikRRjpJi+NmykosaS3Om251Bw4ckVYsV7r8Cibt4LK/c/WMw+f+5eesRycnupf +Xtuq3VTpMCEobY5583WSjCb+3MX2w7DfRFlDo7YDKPYIMKoNM+HvnKkHIuNZW0CP +2oi3aQiotyMuRAlZN1vH4xfyIutuOVLF3lSnmMlLIJXcRolftBL5hSmO68gnFSDA +S9TMfAxsNAwmmyYxpjyn9tnQS6Jk/zuZQXLB4HCX8SS7K8R0IrGsayIyJNN4KsDA +oS/xUgXJP+92ZuJF2A09rZXIx4kmyA+upwMu+8Ff+iDhcK2wZSA3M2Cw1a/XDBzC +kHDXShi8fgGwsOsVHkQGzaRP6AzRwyAQ4VRlnrZR0Bp2a0JaWHY06rc3Ga4udfmW +5cFZ95RXKSWNOkyrTZpB0F8mAwIDAQABo2MwYTAOBgNVHQ8BAf8EBAMCAQYwDwYD +VR0TAQH/BAUwAwEB/zAfBgNVHSMEGDAWgBSdhWEUfMFib5do5E83QOGt4A1WNzAd +BgNVHQ4EFgQUnYVhFHzBYm+XaORPN0DhreANVjcwDQYJKoZIhvcNAQEMBQADggIB +AGSPesRiDrWIzLjHhg6hShbNcAu3p4ULs3a2D6f/CIsLJc+o1IN1KriWiLb73y0t +tGlTITVX1olNc79pj3CjYcya2x6a4CD4bLubIp1dhDGaLIrdaqHXKGnK/nZVekZn +68xDiBaiA9a5F/gZbG0jAn/xX9AKKSM70aoK7akXJlQKTcKlTfjF/biBzysseKNn +TKkHmvPfXvt89YnNdJdhEGoHK4Fa0o635yDRIG4kqIQnoVesqlVYL9zZyvpoBJ7t +RCT5dEA7IzOrg1oYJkK2bVS1FmAwbLGg+LhBoF1JSdJlBTrq/p1hvIbZv97Tujqx +f36SNI7JAG7cmL3c7IAFrQI932XtCwP39xaEBDG6k5TY8hL4iuO/Qq+n1M0RFxbI +Qh0UqEL20kCGoE8jypZFVmAGzbdVAaYBlGX+bgUJurSkquLvWL69J1bY73NxW0Qz +8ppy6rBePm6pUlvscG21h483XjyMnM7k8M4MZ0HMzvaAq07MTFb1wWFZk7Q+ptq4 +NxKfKjLji7gh7MMrZQzvIt6IKTtM1/r+t+FHvpw+PoP7UV31aPcuIYXcv/Fa4nzX +xeSDwWrruoBa3lwtcHb4yOWHh8qgnaHlIhInD0Q9HWzq1MKLL295q39QpsQZp6F6 +t5b5wR9iWqJDB0BeJsas7a5wFsWqynKKTbDPAYsDP27X +-----END CERTIFICATE----- + +# Issuer: CN=SecureSign Root CA12 O=Cybertrust Japan Co., Ltd. +# Subject: CN=SecureSign Root CA12 O=Cybertrust Japan Co., Ltd. +# Label: "SecureSign Root CA12" +# Serial: 587887345431707215246142177076162061960426065942 +# MD5 Fingerprint: c6:89:ca:64:42:9b:62:08:49:0b:1e:7f:e9:07:3d:e8 +# SHA1 Fingerprint: 7a:22:1e:3d:de:1b:06:ac:9e:c8:47:70:16:8e:3c:e5:f7:6b:06:f4 +# SHA256 Fingerprint: 3f:03:4b:b5:70:4d:44:b2:d0:85:45:a0:20:57:de:93:eb:f3:90:5f:ce:72:1a:cb:c7:30:c0:6d:da:ee:90:4e +-----BEGIN CERTIFICATE----- +MIIDcjCCAlqgAwIBAgIUZvnHwa/swlG07VOX5uaCwysckBYwDQYJKoZIhvcNAQEL +BQAwUTELMAkGA1UEBhMCSlAxIzAhBgNVBAoTGkN5YmVydHJ1c3QgSmFwYW4gQ28u +LCBMdGQuMR0wGwYDVQQDExRTZWN1cmVTaWduIFJvb3QgQ0ExMjAeFw0yMDA0MDgw +NTM2NDZaFw00MDA0MDgwNTM2NDZaMFExCzAJBgNVBAYTAkpQMSMwIQYDVQQKExpD +eWJlcnRydXN0IEphcGFuIENvLiwgTHRkLjEdMBsGA1UEAxMUU2VjdXJlU2lnbiBS +b290IENBMTIwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQC6OcE3emhF +KxS06+QT61d1I02PJC0W6K6OyX2kVzsqdiUzg2zqMoqUm048luT9Ub+ZyZN+v/mt +p7JIKwccJ/VMvHASd6SFVLX9kHrko+RRWAPNEHl57muTH2SOa2SroxPjcf59q5zd +J1M3s6oYwlkm7Fsf0uZlfO+TvdhYXAvA42VvPMfKWeP+bl+sg779XSVOKik71gur +FzJ4pOE+lEa+Ym6b3kaosRbnhW70CEBFEaCeVESE99g2zvVQR9wsMJvuwPWW0v4J +hscGWa5Pro4RmHvzC1KqYiaqId+OJTN5lxZJjfU+1UefNzFJM3IFTQy2VYzxV4+K +h9GtxRESOaCtAgMBAAGjQjBAMA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQD +AgEGMB0GA1UdDgQWBBRXNPN0zwRL1SXm8UC2LEzZLemgrTANBgkqhkiG9w0BAQsF +AAOCAQEAPrvbFxbS8hQBICw4g0utvsqFepq2m2um4fylOqyttCg6r9cBg0krY6Ld +mmQOmFxv3Y67ilQiLUoT865AQ9tPkbeGGuwAtEGBpE/6aouIs3YIcipJQMPTw4WJ +mBClnW8Zt7vPemVV2zfrPIpyMpcemik+rY3moxtt9XUa5rBouVui7mlHJzWhhpmA +8zNL4WukJsPvdFlseqJkth5Ew1DgDzk9qTPxpfPSvWKErI4cqc1avTc7bgoitPQV +55FYxTpE05Uo2cBl6XLK0A+9H7MV2anjpEcJnuDLN/v9vZfVvhgaaaI5gdka9at/ +yOPiZwud9AzqVN/Ssq+xIvEg37xEHA== +-----END CERTIFICATE----- + +# Issuer: CN=SecureSign Root CA14 O=Cybertrust Japan Co., Ltd. +# Subject: CN=SecureSign Root CA14 O=Cybertrust Japan Co., Ltd. +# Label: "SecureSign Root CA14" +# Serial: 575790784512929437950770173562378038616896959179 +# MD5 Fingerprint: 71:0d:72:fa:92:19:65:5e:89:04:ac:16:33:f0:bc:d5 +# SHA1 Fingerprint: dd:50:c0:f7:79:b3:64:2e:74:a2:b8:9d:9f:d3:40:dd:bb:f0:f2:4f +# SHA256 Fingerprint: 4b:00:9c:10:34:49:4f:9a:b5:6b:ba:3b:a1:d6:27:31:fc:4d:20:d8:95:5a:dc:ec:10:a9:25:60:72:61:e3:38 +-----BEGIN CERTIFICATE----- +MIIFcjCCA1qgAwIBAgIUZNtaDCBO6Ncpd8hQJ6JaJ90t8sswDQYJKoZIhvcNAQEM +BQAwUTELMAkGA1UEBhMCSlAxIzAhBgNVBAoTGkN5YmVydHJ1c3QgSmFwYW4gQ28u +LCBMdGQuMR0wGwYDVQQDExRTZWN1cmVTaWduIFJvb3QgQ0ExNDAeFw0yMDA0MDgw +NzA2MTlaFw00NTA0MDgwNzA2MTlaMFExCzAJBgNVBAYTAkpQMSMwIQYDVQQKExpD +eWJlcnRydXN0IEphcGFuIENvLiwgTHRkLjEdMBsGA1UEAxMUU2VjdXJlU2lnbiBS +b290IENBMTQwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQDF0nqh1oq/ +FjHQmNE6lPxauG4iwWL3pwon71D2LrGeaBLwbCRjOfHw3xDG3rdSINVSW0KZnvOg +vlIfX8xnbacuUKLBl422+JX1sLrcneC+y9/3OPJH9aaakpUqYllQC6KxNedlsmGy +6pJxaeQp8E+BgQQ8sqVb1MWoWWd7VRxJq3qdwudzTe/NCcLEVxLbAQ4jeQkHO6Lo +/IrPj8BGJJw4J+CDnRugv3gVEOuGTgpa/d/aLIJ+7sr2KeH6caH3iGicnPCNvg9J +kdjqOvn90Ghx2+m1K06Ckm9mH+Dw3EzsytHqunQG+bOEkJTRX45zGRBdAuVwpcAQ +0BB8b8VYSbSwbprafZX1zNoCr7gsfXmPvkPx+SgojQlD+Ajda8iLLCSxjVIHvXib +y8posqTdDEx5YMaZ0ZPxMBoH064iwurO8YQJzOAUbn8/ftKChazcqRZOhaBgy/ac +18izju3Gm5h1DVXoX+WViwKkrkMpKBGk5hIwAUt1ax5mnXkvpXYvHUC0bcl9eQjs +0Wq2XSqypWa9a4X0dFbD9ed1Uigspf9mR6XU/v6eVL9lfgHWMI+lNpyiUBzuOIAB +SMbHdPTGrMNASRZhdCyvjG817XsYAFs2PJxQDcqSMxDxJklt33UkN4Ii1+iW/RVL +ApY+B3KVfqs9TC7XyvDf4Fg/LS8EmjijAQIDAQABo0IwQDAPBgNVHRMBAf8EBTAD +AQH/MA4GA1UdDwEB/wQEAwIBBjAdBgNVHQ4EFgQUBpOjCl4oaTeqYR3r6/wtbyPk +86AwDQYJKoZIhvcNAQEMBQADggIBAJaAcgkGfpzMkwQWu6A6jZJOtxEaCnFxEM0E +rX+lRVAQZk5KQaID2RFPeje5S+LGjzJmdSX7684/AykmjbgWHfYfM25I5uj4V7Ib +ed87hwriZLoAymzvftAj63iP/2SbNDefNWWipAA9EiOWWF3KY4fGoweITedpdopT +zfFP7ELyk+OZpDc8h7hi2/DsHzc/N19DzFGdtfCXwreFamgLRB7lUe6TzktuhsHS +DCRZNhqfLJGP4xjblJUK7ZGqDpncllPjYYPGFrojutzdfhrGe0K22VoF3Jpf1d+4 +2kd92jjbrDnVHmtsKheMYc2xbXIBw8MgAGJoFjHVdqqGuw6qnsb58Nn4DSEC5MUo +FlkRudlpcyqSeLiSV5sI8jrlL5WwWLdrIBRtFO8KvH7YVdiI2i/6GaX7i+B/OfVy +K4XELKzvGUWSTLNhB9xNH27SgRNcmvMSZ4PPmz+Ln52kuaiWA3rF7iDeM9ovnhp6 +dB7h7sxaOgTdsxoEqBRjrLdHEoOabPXm6RUVkRqEGQ6UROcSjiVbgGcZ3GOTEAtl +Lor6CZpO2oYofaphNdgOpygau1LgePhsumywbrmHXumZNTfxPWQrqaA0k89jL9WB +365jJ6UeTo3cKXhZ+PmhIIynJkBugnLNeLLIjzwec+fBH7/PzqUqm9tEZDKgu39c +JRNItX+S +-----END CERTIFICATE----- + +# Issuer: CN=SecureSign Root CA15 O=Cybertrust Japan Co., Ltd. +# Subject: CN=SecureSign Root CA15 O=Cybertrust Japan Co., Ltd. +# Label: "SecureSign Root CA15" +# Serial: 126083514594751269499665114766174399806381178503 +# MD5 Fingerprint: 13:30:fc:c4:62:a6:a9:de:b5:c1:68:af:b5:d2:31:47 +# SHA1 Fingerprint: cb:ba:83:c8:c1:5a:5d:f1:f9:73:6f:ca:d7:ef:28:13:06:4a:07:7d +# SHA256 Fingerprint: e7:78:f0:f0:95:fe:84:37:29:cd:1a:00:82:17:9e:53:14:a9:c2:91:44:28:05:e1:fb:1d:8f:b6:b8:88:6c:3a +-----BEGIN CERTIFICATE----- +MIICIzCCAamgAwIBAgIUFhXHw9hJp75pDIqI7fBw+d23PocwCgYIKoZIzj0EAwMw +UTELMAkGA1UEBhMCSlAxIzAhBgNVBAoTGkN5YmVydHJ1c3QgSmFwYW4gQ28uLCBM +dGQuMR0wGwYDVQQDExRTZWN1cmVTaWduIFJvb3QgQ0ExNTAeFw0yMDA0MDgwODMy +NTZaFw00NTA0MDgwODMyNTZaMFExCzAJBgNVBAYTAkpQMSMwIQYDVQQKExpDeWJl +cnRydXN0IEphcGFuIENvLiwgTHRkLjEdMBsGA1UEAxMUU2VjdXJlU2lnbiBSb290 +IENBMTUwdjAQBgcqhkjOPQIBBgUrgQQAIgNiAAQLUHSNZDKZmbPSYAi4Io5GdCx4 +wCtELW1fHcmuS1Iggz24FG1Th2CeX2yF2wYUleDHKP+dX+Sq8bOLbe1PL0vJSpSR +ZHX+AezB2Ot6lHhWGENfa4HL9rzatAy2KZMIaY+jQjBAMA8GA1UdEwEB/wQFMAMB +Af8wDgYDVR0PAQH/BAQDAgEGMB0GA1UdDgQWBBTrQciu/NWeUUj1vYv0hyCTQSvT +9DAKBggqhkjOPQQDAwNoADBlAjEA2S6Jfl5OpBEHvVnCB96rMjhTKkZEBhd6zlHp +4P9mLQlO4E/0BdGF9jVg3PVys0Z9AjBEmEYagoUeYWmJSwdLZrWeqrqgHkHZAXQ6 +bkU6iYAZezKYVWOr62Nuk22rGwlgMU4= +-----END CERTIFICATE----- diff --git a/gestao_raul/Lib/site-packages/pip/_vendor/certifi/core.py b/gestao_raul/Lib/site-packages/pip/_vendor/certifi/core.py index c3e5466..70e0c3b 100644 --- a/gestao_raul/Lib/site-packages/pip/_vendor/certifi/core.py +++ b/gestao_raul/Lib/site-packages/pip/_vendor/certifi/core.py @@ -5,6 +5,10 @@ certifi.py This module returns the installation location of cacert.pem or its contents. """ import sys +import atexit + +def exit_cacert_ctx() -> None: + _CACERT_CTX.__exit__(None, None, None) # type: ignore[union-attr] if sys.version_info >= (3, 11): @@ -35,6 +39,7 @@ if sys.version_info >= (3, 11): # we will also store that at the global level as well. _CACERT_CTX = as_file(files("pip._vendor.certifi").joinpath("cacert.pem")) _CACERT_PATH = str(_CACERT_CTX.__enter__()) + atexit.register(exit_cacert_ctx) return _CACERT_PATH @@ -70,6 +75,7 @@ elif sys.version_info >= (3, 7): # 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__()) + atexit.register(exit_cacert_ctx) return _CACERT_PATH diff --git a/gestao_raul/Lib/site-packages/pip/_vendor/certifi/py.typed b/gestao_raul/Lib/site-packages/pip/_vendor/certifi/py.typed new file mode 100644 index 0000000..e69de29 diff --git a/gestao_raul/Lib/site-packages/pip/_vendor/chardet/__init__.py b/gestao_raul/Lib/site-packages/pip/_vendor/chardet/__init__.py deleted file mode 100644 index fe58162..0000000 --- a/gestao_raul/Lib/site-packages/pip/_vendor/chardet/__init__.py +++ /dev/null @@ -1,115 +0,0 @@ -######################## 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 typing import List, Union - -from .charsetgroupprober import CharSetGroupProber -from .charsetprober import CharSetProber -from .enums import InputState -from .resultdict import ResultDict -from .universaldetector import UniversalDetector -from .version import VERSION, __version__ - -__all__ = ["UniversalDetector", "detect", "detect_all", "__version__", "VERSION"] - - -def detect( - byte_str: Union[bytes, bytearray], should_rename_legacy: bool = False -) -> ResultDict: - """ - Detect the encoding of the given byte string. - - :param byte_str: The byte sequence to examine. - :type byte_str: ``bytes`` or ``bytearray`` - :param should_rename_legacy: Should we rename legacy encodings - to their more modern equivalents? - :type should_rename_legacy: ``bool`` - """ - if not isinstance(byte_str, bytearray): - if not isinstance(byte_str, bytes): - raise TypeError( - f"Expected object of type bytes or bytearray, got: {type(byte_str)}" - ) - byte_str = bytearray(byte_str) - detector = UniversalDetector(should_rename_legacy=should_rename_legacy) - detector.feed(byte_str) - return detector.close() - - -def detect_all( - byte_str: Union[bytes, bytearray], - ignore_threshold: bool = False, - should_rename_legacy: bool = False, -) -> List[ResultDict]: - """ - Detect all the possible encodings of the given byte string. - - :param byte_str: The byte sequence to examine. - :type byte_str: ``bytes`` or ``bytearray`` - :param ignore_threshold: Include encodings that are below - ``UniversalDetector.MINIMUM_THRESHOLD`` - in results. - :type ignore_threshold: ``bool`` - :param should_rename_legacy: Should we rename legacy encodings - to their more modern equivalents? - :type should_rename_legacy: ``bool`` - """ - if not isinstance(byte_str, bytearray): - if not isinstance(byte_str, bytes): - raise TypeError( - f"Expected object of type bytes or bytearray, got: {type(byte_str)}" - ) - byte_str = bytearray(byte_str) - - detector = UniversalDetector(should_rename_legacy=should_rename_legacy) - detector.feed(byte_str) - detector.close() - - if detector.input_state == InputState.HIGH_BYTE: - results: List[ResultDict] = [] - probers: List[CharSetProber] = [] - for prober in detector.charset_probers: - if isinstance(prober, CharSetGroupProber): - probers.extend(p for p in prober.probers) - else: - probers.append(prober) - for prober in probers: - if ignore_threshold or prober.get_confidence() > detector.MINIMUM_THRESHOLD: - charset_name = prober.charset_name or "" - lower_charset_name = 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") and detector.has_win_bytes: - charset_name = detector.ISO_WIN_MAP.get( - lower_charset_name, charset_name - ) - # Rename legacy encodings with superset encodings if asked - if should_rename_legacy: - charset_name = detector.LEGACY_MAP.get( - charset_name.lower(), 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/gestao_raul/Lib/site-packages/pip/_vendor/chardet/__pycache__/__init__.cpython-310.pyc b/gestao_raul/Lib/site-packages/pip/_vendor/chardet/__pycache__/__init__.cpython-310.pyc deleted file mode 100644 index ab3f7fe6b032e5b00ecf08acda9a86e95f0f9ec6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3172 zcmd58U2hyka=K@Bc6N5xA8Y5skf4$7?qMZx009Ck3UINL7}*ZWCgE5ajmO*V^*FOL zlkQ#|hq1(+Bi$3Pyxg5+-y45`H~vV!@|1so5W!c~vo@QM=09u9@xz_|cP-2M9w*};u6_VRehYwEj3m~8bjg5rDX|!3c47~lu48Z~sSMn%Yw$`^ z9e7>O;BHbI_+8)N)ucXXbQ=culICEdJ29B-P7*{tSI$T{B*)acDWSd+7wK<}m68z;fAF7Uu6o+O17MH_BEyg_svuP0c zITtcY7P;a*l?gbjdUxqoXZhxuu7@Em!jWOvu80~Ot6gRowO{^+QId!{EC@9BHSKNg zDIQ8C^sL;@h6xJ=Pon`36W)({d)gIT4Mp0czX8Kow4=LVEkA&-ykVfW zdBD?N#^SUeWLsw52P32bsvdyqurTkNEem-hqJde!J1wA?;5G;-S^51TNaBIY0{$Qx z#3`RIx2e6n^QxI+ASl<-u^_s4X9ff}fHmL(&Ve|%%tiwTfq#A&Z|#!P%;iI;);%O(`z^DMNzG!`Re&2<2T-7+BVyUPcHkr+wM?l$`ScHhe___Zk z&?gJ`1czM<`))zxUkdkd>IkJz-*d#@VNWYxXO;bGQ9YbFvi7~gJDg>(PvpRJ#=x_O z=L)Z=9#P<;;tQak2a4ezQ5`s|I+E<}%(3b}ZFBOfdZ};@2=m~quhq+i!)nZbWU=~J zw1YZa=o5(XMzjd&#CY#0#vv)0xXv>vNkeH+55l6{~LC#6gKy)4~|85SVzB~jWRLe>(f_EWke0d?=dkXWM&=!E91 zI%-VU#20f!gZk$NO)BS)v=+5YFB0g%AxoZP};S!KwSjfR4MTi@>NHn zBwodtTPiPJ$4SfR5svHj%v*>i@VyN~t^n{`V>O3j&1q1FI8c3javpGxv`i(MvR$A$ z$ByFy5B%Gd8p;#rn10!)P7#k9$!l$Ltxd08YoFCFR9)zU1U|RGlBHWCz53W~j?^{} z(Ht#|Xf85Wcsd-&@+JN9#tb@6;o;)+@TBQ1ohTD!d9RL|P18!6rczf!42v)<-3J{> zJJ^Ak;%amrvk+E(VM5Kj4DHP@;aAZ6>Y^%;M7U+Or=V7+6CgZe+yIZB)- QhC=Dj)TU2dXX2;-0ABH40{{R3 diff --git a/gestao_raul/Lib/site-packages/pip/_vendor/chardet/__pycache__/big5freq.cpython-310.pyc b/gestao_raul/Lib/site-packages/pip/_vendor/chardet/__pycache__/big5freq.cpython-310.pyc deleted file mode 100644 index c66b131e0c0b629f03b6b39d6786ebc33892fae2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 27178 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 diff --git a/gestao_raul/Lib/site-packages/pip/_vendor/chardet/__pycache__/big5prober.cpython-310.pyc b/gestao_raul/Lib/site-packages/pip/_vendor/chardet/__pycache__/big5prober.cpython-310.pyc deleted file mode 100644 index 77c096f5c8df2893937355900496557fe9a5a8fb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1156 zcmZ`(OHUgy5VrT7Xj3Q@iqu%yR*+2=Z7-?q5Gqz{uoAH*dR+9kz_Y#8w=*YqBe&L_%**}Ar(~aSmwV@gd%~UDQNaBnX$QY3T-By#tCLRl zda2Sf9alOniw{Md%~Yzux7ICrT16#9!S$3lXq z)%mo)$A*2@|J?g{kU)S3gjFD^4hTUa%1LDL#sxW|+~&@C7}>(%RJcc0ov|~gk@wHy z^WYpU{snPJ6hIA4)5PQ#;f*JSu4FMtu&_Hq-2%3O)oT!%%*iGFNhr~lw&(PWFh{#{ z0$=ZpT>9wY1TLq8c3@mpO@%Z8V`-6U#w6Y&T@a>`)YveUOAKH(_!5RJMi5Wos4ImM z`idGyiR=iz4aSlzR*JDJ@`rcdj1HBMYV=)Xx*YY&q{>C1)o3D=j!P!vDtn+Gq~noF zwb-7<$w>^mM$>e<%f5+%mvT3OhH#;G#{kQ;?#j+|CL567D_|9XXwoJPXh=`j@3Gst ztM5PT5Wg<)4fc*xz{MIE2T#hUV392pwN{HYSeg*CfTCFu=b{ak8wAL)PM+4H{%|F{uEMZ8#z~K|Cn%&fB)6557UWflb8(88c1B@{(5>>LFua zt2kSDYUE4+NWv88nX%!O$PEmz1;Vs$TbYO~gW0%;VFkA!77`vac?qmS5CM5YEpL@t z_7<%@n8s?|v!&TtjMLg;ykH2l$QMtq9zL^@k8iPCG+1J1j0aW)qllwfU%iygeP@EV Vi#p$7TNVCt!WSXTLP($4e*q>N9Sr~g diff --git a/gestao_raul/Lib/site-packages/pip/_vendor/chardet/__pycache__/chardistribution.cpython-310.pyc b/gestao_raul/Lib/site-packages/pip/_vendor/chardet/__pycache__/chardistribution.cpython-310.pyc deleted file mode 100644 index fa89c6525dc90f97df6c97dad51722c8c72e3ef8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6573 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 diff --git a/gestao_raul/Lib/site-packages/pip/_vendor/chardet/__pycache__/charsetgroupprober.cpython-310.pyc b/gestao_raul/Lib/site-packages/pip/_vendor/chardet/__pycache__/charsetgroupprober.cpython-310.pyc deleted file mode 100644 index 1ba26a05f83c9ab64ac9b4628bf8e7014f142d68..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2423 zcmZ`*&2Jk;6rY)$U9TP6O;YzGEzq=3kR@m(E}*IqMAKG?;vl8DSV1etGd6bCADLMf zC3PgEM)U-KLvqZef6&|zr=B=)L0sVXW?h<;u+F@lH=pnQ-tWE5s8T60JWv1J=ze{U zvEN8J`A8^VpxIRj#S~B3fH(O-G{qoj2AnCOf>aK|X6XAejRu8gVGuWC&K@!qs_1~J zNQcjYW>FQ^Sv`JCJ6v%ckkuXeoI#T+ zJg787wcxc#6%NYHNEejQu`VvLj!>~G9>{0BSvoaZQgeQEPL*|8S9G-_mVkyn*O98C zst2+;4{ZVaH6i_e*4&GSHD(JjuLduT?Jaqgj;OW|MA$(@Ug&L(EqXp0k0Q9qb9 z`yM(Od&c^F3Xgu~g#MHzqRSuyMN%q;+k!@&8w#@V$c8SolQHm%lcYE7Wl7@Zl2$wG zJ<-WI#%}(g z(`>Z4I%-b_dYIYGF3xF<64RQbr}~e2Tbs6*>5s;(_BH}*H^;s4?c|9bs*$#bLAw#ofh4?#)PCOGYv5Cr8RKVpE9 z6O2>V4_4WC^ZS5zHZG<-kyC8zgFK%wfmJ(m9_Y{mEgK%;$A-99k4zaa7a9%YO%;8E z{9-Q3u{QIxNSFmbmiuKEX;qEH1riq_>S&gBm%N8DCo2zzpmb6F1PEYA!Te~s^1imE0)<7R~Z+UL)Ym48) z6(7@G#J5P0wUWnt@7fvGo;>b*0QT!MX0cC=Q8a>2z9);1ce$ybl_Fh=kW1rk~BUr}T2aq`W5PsqB=gSd=s z<}wK?DsQ5B9b=RszTyxI1^6euj1b!rei5%iQeXTS@x4oDM4Rk86=h120-DE|iZo$N z*_QFX07@mrff;E5v;_rns$gH_g$-*%#N&NJzaQBT2%p1PNod6*!P(BzG&n3Bv3A*d)y-z0)Wftp9)C@sre{v8K2N+FZ@ z?Oi`3Y^Q4g>eU=hZPaV@^`JU{uSY3K1|u~|sb5Z#ok=UrXAFhc$;MjazAx9lp1Byc z4xgWF*HG8anSZ+yWR-|V2Il`<9 kH9nKpJD1xdWbK>+_vHPG@Gy2HKzh z_oRLEtYQ3{CWo7i$pd_H4IML>85@oK*KC-WTd~!(8+O-eIHtjD=EQ}r+i<(ZM$t65 zdEl|aTeDGmXfT%*-x#d;+G>=Uxo%Xw_uy#Ms#fMb>ZvGA!Z<5DNicYCVgu{5Yhlvv zhi(2{6e}*W$`2ylj*|Ae3Kf^vK(rAq>@6-do_@3OYT@J48) z@X7z8;|AH$u$bAfx$~^hGMU94vZUp(0(0LK8ZNucip+cCG>Y6~HZSq=MWbc05-Y!P zUYm^*Q>!OfMXy%a44>h%{AA0z2+#02@S9~P!R3^up96}6K)s_12d*l29jJUU1>jelbqlZCr9zYIC)QF)rQuPGgi61czF`!B7&r zin(`sTDso{&e?hB9yzI0%XMe;-Znn8MKW#Q`f7V<{AwMvljl5hn^@Sd5U_pc7 z0S@TvbgiS;srNrGN?#`>R;$(q6WwxSj&tWM&=oY(q!lrqH2E^fg^zCU%CvdYWSPC) zZ+)Tym<%~|V7#^WVLKGEYZ@fiH;je9JgwgNK)2un!j|BfE&JQ>%2!xA z>iM&I9tt{9yA$XuO_O-{At)u;I%_%R-dEGw9(!U+U(%H>MeEzZKpC%%eN&kSq_Meg z4XkD3slSg*c3=-|vgB{b-)~LRzzkWAX8X>-IdI+@^4b6|#f~AaF$ZgO!Xe7%_PF%ZmQS|HyJNaA?sdX#uI~CgX~&W5_@fo+k6ySj zaRk(eB+TE>yZ+SFCrBcSOFH^xJtd65D(kvTG-`@3e z1>`Ni-if5&>L+*u(!|G!9ZBr+tAyz>t$~Z`glZy0jd{g9l*&)x*3TG!%U=W&QZH)v z)4qg$&-)bg+WA90#_U4DeZhNi*yId1L*~FaG4~}N3GRoo8ATJv-Ws3F&CoBWANG1N zc>rdR{<0~eo|68{PSou9EcKIA`F%KhWq7}ndz$d8z5j@&vGPiMjX#L7yi)+D;j~*|t2R|&Gb*)#)YtDDxovtJk#n6qPvt3YPqys-}i?_1C3 zvFc*=4+Cdl?>OSlz>;@>S7!iJ51cW=vBFTdppy0UDN8;aQL)m53fL}(8%Sg0+kdP} zC5dQhroCMP_0|@UvbB|mEh;HM1M!9gh7|r1Pvhs57R zo=`r3-Ruj2mmOwn+Y$AIsxiN9&YYg$FF+6VP%rdb z$43200oE^g@KZOYLoxve`6W8H;yleg6sSEe)UKfV3=gXk;sWh{L7h!&1^v=!x8)_~FKO$l-fG2Zs0108RjAU4 znq7|U&cv^X=C{<{r*2Xn=@FHPqKNJ~KK&1YhuZLhRdy}=j7i@m+p_1(S@c&-%fWZm zH}#3?2{A*buc6CayoSiLTKA!{bc<5kn*ZleY^L2_6mxNdPLa&xl*zn%xhL;a{Kz?U S-W3nE`JClgmg#()FZ>L%i_j|o diff --git a/gestao_raul/Lib/site-packages/pip/_vendor/chardet/__pycache__/codingstatemachine.cpython-310.pyc b/gestao_raul/Lib/site-packages/pip/_vendor/chardet/__pycache__/codingstatemachine.cpython-310.pyc deleted file mode 100644 index 38d14fb03762c3c9dd67d0272281e1f0008a9d51..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3066 zcmaJ@&u<$=6y9I{5!*2#4QZkZX+WjIqID%W02M+lZQ;@eDM=+{MOsaE#`dP`U3X@j zG$lQ?e*)s%9{Vrtl~d1L5GTGj>rL#~Wuu+U&-cFfz3+`TTU~89cz*xq$>5K+)zhG}=2u?#j8!qhs3OwPs0PKGf= z86g8vmKu(v86uh>UN%=soidIsR;d7&NDgJ#B*vqW6fxBc9L1znq*kB6F<@RcM?sYd zpVInpclX!blG!5RGsONMr^r!qk^9T8*nF8NY`#{B9SQv;{l8u7$$tH~GuY%Kv`*~{H%P8XD#b6pHEICGAmif!m)+j$8k9J$6j z@}GKY%jyCO!Mcxi4=>b0JM3Jr?QCH7s`Jvf;|kVkAM|zR1kO<)s^22kkSy4bgPpt? zC0y&!&~K9!Ro*T&Q%vTqVn-i3$yDC7iJ0!ENIO+k$3M%=3{fjIN1ryGpkQko{k&oI zX$|HLD_Cpp5|w!)mCsFRmmcDnUPIINTS)DiyWy?5ZS-Dzx`f}0a|h(Sl0a#Xg&2K)A64!jdBkSW3D5O$6CYA=9X9Zzm6^ z;Gi(e=`u`P)`9(SDHsZ;Rq><*)^J~Z^&wzO&V3M_`WzMsQ$4}A$OHwdu485yQ|bm5 zeme)?Ev>%NO2<<*Y~AU!6(u%rgmi~Z61rzvVfbvqlj*Hf3qz4bVW_A))Fw4lWx0=U z0mW$enH_4Q)ECsNk5x97%A8t2GwHOoYRj~OeH54`OLZr3*Ebt0>wbH+?R)-)t7sjX wrW+;Sj4WTXcMm=zjD?d|WI7q?Lh^KInYXC3Op_EA8{4-XD0MsSALcqWOYic~bCRgeXg z0M!rC7N9N6LP{=)3?=(YB!f^!GXBOgCP!BUqCuv~Ps~Enz)jch-(K+Li;Lx}m#a$` zt-Dr1O5J$9YeAlug)MyKA%zIe@S1nXfMisXEZ7hTfk}E3Jisb4SP)<+LzIVh_8*QA z#~2syhDC~!HAyyZkJEjH|C^QW;CHQJPDo9-uE1z zGP2mSTBWgz?XJb0YW!cMA51f^`6Q0{lz(R#w7cGuEQZxQqlk>JHX|&UME8Sa{0FxM BwbuXu diff --git a/gestao_raul/Lib/site-packages/pip/_vendor/chardet/__pycache__/cp949prober.cpython-310.pyc b/gestao_raul/Lib/site-packages/pip/_vendor/chardet/__pycache__/cp949prober.cpython-310.pyc deleted file mode 100644 index 938db5942682339d1ee922ab3ad76adbaf942232..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1163 zcmZ`(&2AGh5VrR}VbhkM?h2M*;PRs2%*ma8(=Y$GeB! zy-&SVDv^#$l@|H?Jmxc*N^q`r3!3JWp^6pj$H{S;Gq7&-ORmzLnPT1JSPYpu5XG1Y z@GNx?wqI?NVW0Fr_ICFZ2yur@9fsr%2!^VL~ z#8K`X!Ph%Q7ryaO1h?ZsJJ7Byr%dR8kTg#fA;R1vToAgEROk?y2@^oC(*+bsY+yWr zqpo0*sY|RK$@md`8-yf0mXeT5^oMm{j}9dha`cUHRg8K?Qf4eyax`I5#RU;@$?xd< z>3Ael#a>S1fKAzxWe3(-lSC6uX7GKEe|tHx|iXQBZKJ_D8kh$e30zz*@r z+5&o8Hx>SeoWilNl-Iw!&?#SCc-8N-MVgP!Z?TdxW!@FY%yR655!Yo8G;DV z61IXBY}uQ*@|ZMMs=h7EPd!qr^@zbBD3;X^uo^(UoQg|Z|XYVn#M}=&l5fgvH7jpe*t0@98drN diff --git a/gestao_raul/Lib/site-packages/pip/_vendor/chardet/__pycache__/enums.cpython-310.pyc b/gestao_raul/Lib/site-packages/pip/_vendor/chardet/__pycache__/enums.cpython-310.pyc deleted file mode 100644 index 092710bd76a834feb8f338176136f6e9681af209..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2656 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 L>U4o#pbP%L8RV!L diff --git a/gestao_raul/Lib/site-packages/pip/_vendor/chardet/__pycache__/escsm.cpython-310.pyc b/gestao_raul/Lib/site-packages/pip/_vendor/chardet/__pycache__/escsm.cpython-310.pyc deleted file mode 100644 index f2b1896230fafa732895e1b0d5a644152a8d172f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8517 zcmeHLPjlNu6qjUK{_n(2;)WJZT=2mJ%#GhI)agvVhTr{51sNTgj*pf%GVJKgM z-uVK28BUyZ<)ly0kn-<6NtV`1q~bP>p*Weh+NZbg?Y`gJ{aLemp^)X^@B54M!4G>J z_bV#wUka4ZLCl|%9CywUj_@OH%*#BFePJYw6LJFj30WL)H1SpP84s=Wj3=Vgb9J@_ zn>!+=O*v!YTQ-g#p9J&!cH+jtHO(a$wa`OvCc=UZR_n%b-^R3UPEM1woS`B~(KOAF z49Sw*kCL3FJk62(eU235{2VP0CwH|mQDJ_6Ju%4nS%=2NV;N-)MGLSAMR&*fIA66o z$j8{PdW7EGlrLZi^(l~|T%>ujK?}4I?LRg?Jl;fjTH z7uA>45q!Ke!=ldiuZ?JsxlA|7HZ9RI*&!9@ylpx4yaV;z zmAC(4J>%zht?nw~+fbaBBkolu_NQRUd#YplfP?V{`q&_xA+EB) zWvq4uD^34xpWOBnwBf^pvjxB0PT|*$dk~$|xNbaJx(y)g1nxxKlZJ#F6Pv0O&qPnN zhjQ(U2etYqAJ?r^1NqgYRmsZrN2+NmQ}ywPT6tIbQteN5!^)XR#-6Fzf1(=7h-#iL zYU-F;>5-}pX6k@ixkFj$oG2$}2hEmC()igPzouKU-V8~nSDuVhZl95E1-k$CY|j2$ zH=MD?U=xH%xXKcg(g}R zsUp;FaePv>BiB;K!T1ZiR5{=3!NJa1_f|nI|8qvKW|u!*HeN9^^m_EjN*}2c6~BUg zqCI-_Mu;}VddsWJ5UmkOWIop|kKPS=tXXu)ACWb^uIUxOJXW+17`{AiThg&^P*wBU z^0@7@|Wp!xWF~=*33#$Z8kOyytl9c`IqXrMBxl|gT_RdXe zn7wc5XsY)P^!{v2wW-+~P{2}G40SeI=(mQCd**OTYZJBqHC(-zy~%L0r+h;-q8od7 zO+)B(kD7gR{Ndy~D}8^gli7%VhQA`_FHnNwy*w`_g!e^W_zOkwo^#!Q3c{aaoFs%l zAkGyLymx{q{4Rp9Pwe}8Qg|VP2#m~i=P3!7Vx&lyVisoN=l@02otz@`!93&gLEAO? zEWGn_!n|0S=Y;Ey69Mu;iOee{{3gapTDTA+MY<64{~kB7%9?ov2Z(>&Ci9ipQ859{5^}$mA>=>@?rLV`SNc^&LAfM diff --git a/gestao_raul/Lib/site-packages/pip/_vendor/chardet/__pycache__/eucjpprober.cpython-310.pyc b/gestao_raul/Lib/site-packages/pip/_vendor/chardet/__pycache__/eucjpprober.cpython-310.pyc deleted file mode 100644 index 2e576d0ce6452fe9fe6aafc3e34d819e690dde37..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2600 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 Z-dzXwNURmlCiIUVF(GxC)G5=a{vQ~yRvQ2S diff --git a/gestao_raul/Lib/site-packages/pip/_vendor/chardet/__pycache__/euckrprober.cpython-310.pyc b/gestao_raul/Lib/site-packages/pip/_vendor/chardet/__pycache__/euckrprober.cpython-310.pyc deleted file mode 100644 index f2a04aa3715970955b5b33a5854ea68a7352ac11..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1164 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 DNSf2U diff --git a/gestao_raul/Lib/site-packages/pip/_vendor/chardet/__pycache__/euctwprober.cpython-310.pyc b/gestao_raul/Lib/site-packages/pip/_vendor/chardet/__pycache__/euctwprober.cpython-310.pyc deleted file mode 100644 index bcd4fa8a3a3e18081f5dcfce1c42366c413ef7e1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1164 zcmZ`(%}yIJ5VrR(n{)$|LQB^T&kWr-arYe7-?q5Gqz{uoADOSW&;6z`+YF_5g_!_E*8my#d~1Y0l^T% z0%bVH*y@gOGBy$A9IQ{frO@flMDzABm3^*1%VNkS zc$TWmNWV+EpE|pH352*uwhl{b2LwkkW+--8{Q@0f<}&X*ie2t8%>5&$%GsOYIQVC& zvGCklY8S{uaR^m3%%dveJOL9(u1lHs5?k9XS=|A4fz@je8qLrp{*Exxj&^7G3=vQJ zGX&q@3|-c&hatEf_gbOxRXOI;goLDdstJ+y9_fQH^`t_Fs7%@bW}PjdNT`Kz3P*j( z71vkTc#4Z7_|^$Y1XYTVEA)rA-wX~Emuhgzg)Ro2A}KSTYc&{grD;JVEyX>3FC7k4 zs`=)aCMOhj4aVtsn|$RtE97=-IK&a2t}URq zbz9+o=vf5Yz}L2Y3MWt0@6_zHlnLyzrrx|a7<=TSeIn#~B zpo^Ox3@o3(NeF6!eVU%q{NbRXp!ui-P&VO&TnBN###?vGku`AkT6No5n;{{lK}c4x zQdm7AHnK~Ibek43K82+u&6=1o5nE(8q79S+NOiv>f%qed@*RRkhL zOV|lku;Xsv%45@5sT#L1K=YYeozECdg67%$1y&Pimb2jvcJn4n+Z+>sRlz*k`K+#9 b$mXs!;oEtg?`&t4{q;mIBAAB=uepB#I?x|N diff --git a/gestao_raul/Lib/site-packages/pip/_vendor/chardet/__pycache__/gb2312freq.cpython-310.pyc b/gestao_raul/Lib/site-packages/pip/_vendor/chardet/__pycache__/gb2312freq.cpython-310.pyc deleted file mode 100644 index 6ccc60d5e6616beeff6bc9085ef3049e39d012dc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 19106 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 diff --git a/gestao_raul/Lib/site-packages/pip/_vendor/chardet/__pycache__/gb2312prober.cpython-310.pyc b/gestao_raul/Lib/site-packages/pip/_vendor/chardet/__pycache__/gb2312prober.cpython-310.pyc deleted file mode 100644 index cf501911e859e4e5ea26af346e3186c63bb6201c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1172 zcmZ`(OK%e~5VrS~O|+q<(5k=04u$?8 zi?NX4S*dSh!#?Z3@4efPA;=BFN|4kp2th*1NoeurDVb1ibLS)oZQ*b#+=*3X?JQ{M z{k1f>e}b0ADRD^XLme#>)FJB>j3+F=>)z_#^N+mim`L@d(wS5I#5EY(HD{GV$>_*G84I0qp46jDwvGQ^oG8l zj7KWb;@K>UKSr=?G)rdN?6b&uA-7{_3Kx2NI>ye9ZlUtkA01#GN=@#?ekF4$xnMWt0@4VEUrT%dH8N15n=2)Ur2e<-s&otL`mLQ9W2|^`OBxXpz+qu^L0Ol8rCXs~at`KgI*Af}zAAt*&0m Z=DIuntGdqD*j$Cbpx{veGZE1H_8(3W9mxOy diff --git a/gestao_raul/Lib/site-packages/pip/_vendor/chardet/__pycache__/hebrewprober.cpython-310.pyc b/gestao_raul/Lib/site-packages/pip/_vendor/chardet/__pycache__/hebrewprober.cpython-310.pyc deleted file mode 100644 index 3f9d838065a2caa4530803a3c6021fdf51db2dd7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3413 zcmaJ^%WoUU8K0SbaJgDhvTWIsWy`W1J7!baja%1p5I9yOT2gCKjw!XkLdAmO3~5r! zM`o8cq$og93&=mvd+nnxx%5(?*Is(;b#6gUYS9PK2a3MGZ+0n@w9zHzH{Z;BJNwP| z9JWVCT>{T%f8VP8dV!FyanS#mFn9nhS_R;Q(~vZ&Pn*nVlyJt4&}f>zscAE`nznCi z+6psG$9E`MA>8JfL&7t{d|~)m?vzMAdknjgJX6j_C$6_!X!W zH+`F1eumq=!!szL@A9la!d>6vBmOA&{2U+k$9T>k=VSgUe&Y*LrF?>)KJ@$veuJOk zlZU2%nx7SC_&I3f{8ZKEQ+yg`C;54CmXC{bRg=%~3otX)H*=BC!pt-_<|id`#EMe;h^wrq+YwSZK~Qhi;~-GeLA4I96jZ=> zg0NkyS6~oT+ES>g{-tO2sC%+vl^!oH6_gcpq4Anah;8GiY z4*an9=>BBC3*77}>#a6g!cFD?v`rEO>oizuA?!^KR*+|bDR0SX=;V2X8H5W67ZENa zTswj5NX-EpL5my!Eu;zJO$>;q^{H|_;0sx=P`c}ryawM*dx~q>pil#Ra8#G z@VKBx5^A%wxV(16lC!-By9^)8sYgi&{1O(U8~~%{$%JaA&--j)S<@P|5R=btR{wrXJP@_{L`_lt<=;u<- z4pfC8isgXx=qYGLE&VTmKs&^=!FHLc=P)G&eL9`rgn z?HY0c_-q(wUQzkp0c_fEIK2yQ7&xu#n5@z@;Da?cU2|JgCwnmYN#7oyq+c;`w*L*> z2mIL5-kkY#9Hbn9v<@i{50dvF1!6gr=wQk&ZfpkY1vOc%hcFjBt=FCgS`+P7xR(T| zj?LS^orJ0m-@7=(7*^Tk!e(JaW6yLc`>)G#hR#Oj{;2_z;SK{?2n~cy8|bG%!13YA(WO!5d*mk=E)dW# z%B3STjWI>gSU{P(mb?JH1!mOa5wc6=HJGu{unqDu^9p;4J-n5e*4Z`X-SjQo&w;my zd;k=_MLC7hN;=YegYs)2ntt-x*Lmf2Dpcpz*NQNLoiM>tMnXF#BxiFd!20(Xuo@O)Y}#t* zmYixARd!$F?k38FVQsRZG}PmG_2L@4?PGvg8LyeTeXuV@Tw?jVJJcK&|GC9JQG}T-tP~LMfUA zwqpJo-doThaBpz~EI8c|X)g#qh095@k_7EH@yp*vm`C^y!cBxb2)7Wvi|{P~<)!IV z7XBEka%Ox(H_%M4QA08mD~6)SV6-43PB4mu|oxME=jiBuN5vXte$L?w8U zQw|hJxPirc%7A1mAL4fSH$kgJjiy(jiU`9X=yS@e$bxA@;zi&PT7*_~2-G9?x+a}a zmTBR9j=3&m8OHv@4EAqky8oJRCbH*8+5K_KW}z8VRPR{KyULFDI`9WUqMt~8kkQnG zlcFxMjwwsDy3Hs_pJUO^AcxitO4uj5zAK>U%K0!c*?q7)iSR$v_zWaJ2&Oaqe?Z+7 A#{d8T diff --git a/gestao_raul/Lib/site-packages/pip/_vendor/chardet/__pycache__/jisfreq.cpython-310.pyc b/gestao_raul/Lib/site-packages/pip/_vendor/chardet/__pycache__/jisfreq.cpython-310.pyc deleted file mode 100644 index 6caebe9a597963a276071e6527f51f12ef2b45a5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 22134 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 ASO5S3 diff --git a/gestao_raul/Lib/site-packages/pip/_vendor/chardet/__pycache__/johabfreq.cpython-310.pyc b/gestao_raul/Lib/site-packages/pip/_vendor/chardet/__pycache__/johabfreq.cpython-310.pyc deleted file mode 100644 index 3c6a586276d57420e363664a5da498da348e0eed..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 138758 zcmYh@2Uyhw|NilMnhpeP?_KV_H!3P_L_}?Z2lc3>gov{OqeOEMA(~o(qT(ot5KXPH ztZbX9?Lwto4Kqij^}FBqzw2E8uIt>->+|U`KCQbiM`V0hSoI6^+qARsqyD$*f(s5Z z{QtjQs-cTssYma<;DX=MH96>MI)r8Y&wF8Y`Ownkt(Gnk!obS}I!wS}WTG+A7-x+ABK*Ix0H_IxD*b zqLf_&-EuE1;v;nrL~HI5=&9@#h*9vuMcccz7%*_xiL_pd?iq-d^J#}+!QERZVqfwz82W3+!olb zd_C}n^36bna!24T<=cUs%69_qD&Gt2QobMf;J=UbVc;Xp9|t~Bej3=V{4B6X`FUWk za$jJ-@{7Qi%C7=nE58YRtNbqTz4C`ZrSd@Fpz=_lO8H~pC*|S55#`aqG3D{V&;Na- zUjn~s{w;7q`Fr4`@{hnN<>|l~<=McW%D)1CE6)YaEB^`nn|tAc3j-JEb)oe?=_2c5 z=@RQw=`!nbshU+?s$tcX!mL_S`2V{^iqI?4``XeK)|Jv#*45HA*0s`g*7ed2){W9l z*3Hr_)~(WQ*6q?A)}7K_*4@%QRvoFXRZpsKHIN!wjikm_6RBzF+Gd)Xd*4E8X|Q z5ox?NK}xY6l~S#VQd;QRNt)8VpDazWrb^SS>Cz1AG3jyZ2`R(MlxA8_N?F!Z($m%~ zDchPY&9R=5=34Wl`PKp{$9h)EwVspmtc6m3=-Ne^7JL7^w8UB}Ewf&bUbL1=1y-T7 z!dfX6S*xVg)*7kUS}U!y)=L|#m!y}ijZ%sAid1U7DwSEAq;hMsv?X-yYnrxtzfIb1 zy)M0By(v{#JEXU)x22udJJP$>d(tlJedz=1L+K;yW9bv?Q)##LnY73HT-s~xllEI* zNMBlCNneMq{YKNb-hU^3Z~Y)uS_hO8FVe5pZ_)|t zcj=_{hjhw1EuFE>N`G2^Nq<}Cr1PO`|IzfX_Wx5q{?GmRzrg>bi@dv7y2QFvy3D#< zs%BM}YFIU;FsqgnZbe9uR&D7D>q_Y=>uTv5>sskL>w4)1>qhA&>t^Ye|E~RC;8sny zd4IcfhjpiPmvy&vk5xyiYt@tLTMeX!RwJpg)kJD)HItfKEu@xKE2*{BMrv!dliFJy zq>ff6sk7BZiV9uZRZ}fsONz02OMR@qQa`J|G{71t#ae@;IBT#JZw-+W ztfA5{Yq)f;b)R&<^?>xC^^lZkB}pSf*9J5tdp}YdWsR1C));B5HBNfidPEv;O^{No zN2OG2qLgM$lG3fo(iCf|G|ieW&9EMm9=D#5GOSE#ruC$h6}t8*O;3A2OUkxpOLMGe zq`B5SX}+~U%CVl6a;@j2JZqtpZ!MA*ThB{NtfkU2>jmjWYq?Zl6-q0tl~R$lN?IMd zc8#WD@7GG}to70c>m})BYokbsF7fZZRJzQ%T&iYOmugrw zrLh05y(myiQ@HmLQlwQ|y283ry2`p*y2iRzy3V>@y1}|py2-j(y2ZLxy3M*>y2H9t zy34v-y2q*`)wSwL^{oa{L#vV0ICO0jO-;RTCN;NONG+{aQfsS?)YfVzwYNG*9j#7M zXRC`8Wp$OhS>2^*tB2In>LtZky`?@@U#XwfUm9Qylww2I4$>6o{a`8H8X_fFL#1KX zaOqy_KIwkz0qH^OAt}*Hl15koDcKq+jj~2dL2HaO)*2^0Y&{~4wz z(!8G}rCXDwDb`eJnl)XTVLc{2ZapDoSeepH>q#lgdP;iQnk8jhv!yxKGtyjZo;2TD zAmv!kO1ai^QeNoVg_`ocUnDKIo|l$bOQmJj3(||$a;d;7lvY?Pr6OyUwAxxD6@|M3Tub-mi4x@ z(|SjG*LqLdWxX$bV0|ckWPL1sVtp#@wmy^gSf5LKt$osd>kH}2(6wJ_`r7+%q;IY7 zr0=aCq)O|6bkI5^RarkuKUs&RBi2#rm~~wG+4@EL)%s03Vf`+hwEmDzS*N8l)>-LK z>o4i=(6#3@o%jA9>0jw$_2b3v$BWgE7rP%XRzLb3DCMPkUFQGaUoeDTP_J zq;M-jinMA=S6Ej{S6Np}*I3s|*ICy~H&{1HH~n|*#ethO-QxYN(rwo5(jC^F(p}cw z(mhrksjgK|s&6%r8d{B{##R%lsntwsZncnFTCJqkRvW3U)lO<}b&xt*outm8YrANQ z^1iFo&FU^iTRo(nRxc^W>MixL`bzz*{?Y(zpcHEjlH#nvQoJ=pO0b4X!>r-bz1Drw z{ni80gVsY*V(8i=O(VPyNXgbnX_Pfu3R+{NvDP^0Ve1iTyfr~eu^yFDt%*{aHAzah zCQDPSsnRrSx-`RjOnTgULdvi*rJ12?pVXA){ZrD@)+{O8nk~(-o{{ES^Q8IK0x8FO zR?4-Wlk%*EQoglFT5LTpEwPqL%d8iq7p>(|fmJB2uvSV%p=(!ZTJ8NBsn}X8t+Uok z8?2Y4m#vLbiS>$9YP~9zS(~JCYqPY)dQIADZIiZJuS;)OZ%P%`4(ToHZE2_Vj`VKm z+V?c=^8S741M5TSBkN=76YEoHxAmE{$NF5_YweTvTVF_DT3<q_Y=>uTv5>sskL>w4)1>qhA&>t^W|>sIMD>vri5>rUw|>u%{D ztBzFHswdUA8b}R8*EZ7B*!w0@Q>&TO+-f1Uv|356tu|6ytDV%|>L7KrI!T?aE>e`$ zRqAGSm!hp6QctUw6l3+4`dEFXepY{JKhA02d#&sL@P-eVFjdQYos*F8Z8B_G16FTob<5uh&0}sAf<$^eNAIvbZLh5nDn^ygp^@rN;9n|r7Y_y>1k`0lx@wH=2*{2bFF#Od~1P}V?8V7 zhOT{1Q=az=rF?6VwAgxHT4F7gmRT=IFIvl`0;^D3VXc&ktX0x#YmHQFt(DeU>!l6W zOVZ2MMybSlMJlykmC8cbZqiil{bp&4^_sNR+9qwcUYFjm-jph=9nxFY+tNyT7s{V4rp9hQz*N2O!dap`C47wK2)H|d1+yL8g}Lpo)hmd;pbr9VU0{-x<} z@6So+t$(C{rAyV1m%1M>RX<+pe!Nuuc&YpGQuU*M22**tUe){~s!KJjno^imOA5Cl zq)4l_bcJ=Lbd`0rbd7bbbe(m*bi;qwUK+Sj(@oyrEZt(=D&1z?F5O|>Dcxn=E!|_) zk?LCYr219^siDMsqj21>EkASuooEX7+xqy%fIG|U<<-D}+^-ETc0 zJs7(7Ax(+iCrKl$fRt>Fltx*jrJyxN8f%S{9=0Bl##ltaTHBXvvEs%1oXQf>0 zIVsOtDCJv=q{Y_r(h_T_w9I-zdeK@g6C>#tkqqIQ(6xs(9r6CCbj&&~{cQar{c8Otov?nFPFjCRr>xV`8SAX{r}dZgw{=cB zZ~Y_vD_y2;yv*HrnY!^ZcjIO1#>?D|m#G^s^Rwe+>c-3HM!sS~s;*ZJ|M;3xm{m&( zw<4rStG0B7b)|Hbb+vSjb**%rb-i?hb)$5Xb+dGfb*prnb-Q$jb*FTfb+>enRY$68 z)syOnu5F;Hq4$lX##R%lsntwsZncnFTCJqkRvW3U)lO<}b&xt*outlI7b(i>Ds{8E zOVL&jsi)OTim`f2eXPDxztFY)H4X57pcHEjlH#nvQoJ=pO0b4X!>r-bz1Drw{ni80 zgVsY*qLn0#umV!DHBuU7jh2Ge7-_6EPI}mSL>eEuc7mo9?;n*?t%*{aHAzahCQDPS zsnRrSx-`RjOnTgULdvi*rJ2@~QkM0U^t3fg%C=@pbF62ixz;>szO_Kg30?cFrd;oz zlk%*EQoglFT5LTpEwPqL%d8iq7p>(|fmJB2uvSV%)+%YWwMHto)=KNF_0k6GCFx~r zqf}zOB9(@&eN|JL_nV}0YqPY)dQIADZIiZJuS;)OZ%P%`4(ToHZE2_Vj`Xhep0vw) zU;4oMQ2NOFSo*~JRN8HQChf64m-dFP-KS~4_g_d~T3<kZT{>y~A)T^LOJ_pYp4IfH_kT%$Tj!+n z)<4p}(&g&M%iWKcs~<0SKVGhWyxjeGx%%;P_v7X2M}GyJvbtV1{9|iMVOA|E+=`GQ zt=iHR)|Jv#*45HA*0s`g|6O}|;Cf9rcz>gGlXbIni*>7Xn{~T%hjpiPmvy&vk5xyi zYt@tLTMeX!RwJpg)kJD)HItfKEu@xKE2*{BMrv!dliG)_?Vzcn_noB9Ru?JC>MC`! zx=Ybk52>fsONz02OMR@qQa`J|G{71t#ae@;IBT#JZw-+WtfA5{Yq)f;b)R&9=-LM~ zJ?Q;IQlgb4jj#ezvNci~WsR1C));B5HBNfidPEv;O^{NoN2OG2qLgM$lG3fo(iCf| zG|ieW&9EMm9uHmngr*GdGo_ijmjWYq?Yqy0%c$3h!4+Mb;{5wY5enw$@7Pto70c>m})B zYok$vo@^^5eY^_z6U`dvC{{UM#QPD^L3v(lf|U((;!IqAIh zkMyrpP2E_{-B?ZCSk2v7P2E_{-B?ZCSdDJ<6Js^?V>N$nT}}O1&HY$S?>km=KUUMv zSyyvER@2uzR&zgA3)Ggb@W;7Qy2`p*y2iRzy3V>@y1}|py2-j(y2ZLxy3M*>y2H9t zy34v-y2q*`)eT)+Pg8yG8%PbUMp9#|iPY3;CN;NONG+{aQfsS?)YfVzwYNG*9j#7M zXRC`8Wp$OhS>2^*tB2In>LtZky`?^(Yx`>I=Y4-^fHhExwFXIX)?g{#8X_fFL#1KX zaOqy_KIwkz0qH^OAt}*Hl15koDcKq+jj~2dL2HaO)*2^09J=-qP2;_vAf;H3N~zXF zDb1QBrCXDwDb`eJnl)XTVLc{2ZapDoSeepH>q#lgdP;iQnk8jhv!yxKGtyjZo-{vn z?E+0X-ajklTF*&&)@|M3Tub-mi4x@ z(|SjG*LqLdWxX$bV0|ckWPL1sVtp#@wmy^ggs%Nu(_ZiQN&BrYq%W5TVh zr9Z8|q`$3m(s}D2>0hb3`mwtEvAX)Py8E%Z`mwtEvAX)Px}P1Zs~fAk8>_1u{VOPx zHT4SfAElNQZbe9uR&D7D>q_Y=>uTwm|E{ebxK`73-d``>VBIL)WZf*?V%;j;X5B8` zVcjX+W!){^W7U!BTJ@y*Rs*S_)ktb=HIbTH&7|g53#p~mN@{Jjk=ll?ZKtWd_Z_5; zRwt>m)kTW3x=P)w?ozbXL+WYul47jhQXi|Y)X(ZK4X_4EvDP3d&KfMmTSKG-Yp68L z8ZO-%y7oRz_j~_<^q}>SlxQVMBdmawY>kvgS)-+(HAWh1jgua>9+Add6QmUDQ7P4$ zD5Y7Gq;zYtG{u@KO|zy;GeXxsrs;9-pO7-FOlhX|q?BbnB|UA;lCrJY(j4mP4*E3B1Lk+n)%ZLN`t zt+moRYrV9=dP#cO+9;J+uSliVt5TV@Nh-HCOIxhhq^;IAX}k5h^oI4OR1vy%ho-l@ ze_PsVy(7JAy(jIm-j_bGK9oMPK9)YQK9zP`pGkYH&!xTAK54)8h4iKMmGrgsjr6Vc zo%Fr+gH&l9kPe2fJ*271`yZvBti#d~>!@_hIxhWe{UZHp{U)8TewR*Ke@LgS)6yC1 ztn{b#m-M%FPC9S>BmFDYP&d|aH`Y)$)^Io0P&d|~8~wysL;YC8{a8c&Si}8TL;YC8 z&yF?Jk2TznHT3LQ!~Ix8&yF?Rk2Un{Si}8TBXFg3l|SOu(lyq#(skDL(hb&)(oNRQ z(k<4l(rwo5(jC^F(p}cw(mkPT>u9R$eLbnZ)j(=!HIf=zO{At)GpV`NLTYKXl3H7B zq_$Q&slC-f>S%S6I$K?&D66Z~&FU^iTRo(nRxc?gbZu`<4DczbZO|hm*)2!*z4C^uJaq9^w!^)IqT2D$@)>G2c)+{O8 znk~(-o{{E;uAQf8zV{2H9P3#r*LqIMvldGE)*@-K^}MviS}HBGUXWh2mP-Xzp|rwU zDHU0(q}A3Msn}X8t+Uok8?2Y4mqXWX)KudAD^jWTs#IoelFF^k(iZDAX{)tO+HSor zy{wIXSkv8D zQ{7n8-B?rISkv8DQ{Cuafvc>gSGfOp5mKa8Te`x!Qo8EDYikCs)^v^c*Gkt}*Go58 zH%d2IH%qrzw@SBJw@Y_ecS?6zcT4wJb)>phJ*mFcKx$|;k{Vl0q^4FgskzlcYH78S zT8FM}qp7X;?WFcr2dSggN$PBMk)o`wQa7u+6m9j8dRo1t7^}C`$LcHfv-(Q|tbtOj zHAsrH221hQ5GlbLDh&%=J6zMf-rpzPZ#^JAXgwq)T1nCfD-v8GDXLf1~$G{gJHq{po%qzo%lnrS^LWm!*2 zPg}F3Y-_eO$9hJZYt579TMMKd>scw+dQQr-7E1ZnB5ASpytKqxDlH3L`+}wyytF=wq zZoMwO5xVwGO%>knklwQ1mUde2Nbg$jNxQ7~r4OtRrH`zSrBAF+rQOzN(jMz`X|J_U z+HZX!eQA9qeQkXseQSLueQ*6BRfeuTpy{CZhoma&N9iZ)uyn*aDjl{b~Ir{cW9-&RhRT|4L!%#xQqdn7T2HZuAplnEEly{TQZx z40At*sUO4Kk74S^F!y7a`Z3JUj$!J@F!y7ao*l#7k70Ut40At*>De*N&yHd0#xQqd zm_Dx#b2o>FSCDu}Dne~G7qP1KqunMIW)=H_!S|zQv)=0(HT4|lNUfK}4_9aa( zd%saCv0jl%tyiToYm-!NZI-rJuSr|2ZPIq@b?FW3O{v1#A-!e2E$y`4k>0i5lXh9} zOCMMtN*`GtOP_?U{Z!L#??03FSf5LKt$osd>kH{i>nrJN>l^7?>pSUt>j$aQIv^di z4oOwkkJ3-pVd;ok$$y)lTL)L{aw>Z@BffaS*N8l)>-LK>o4hV>zs7n z`bYX#s-=Fc<$kQCeyrtZ$6D&fTJFYL>c(2`##-veTJFYL>c(2`##-veTJFYL>PCMD z7iENAk^Upsmah2k+FI(zTJFbM>c?8{$6D&gTJFbM>c?8{$6D&gTJFbM>c?8{$6D&g zTJFbM>c?8{$6A3qrMvub?w0Pc>PU61dQyF>fz;4yBsI30NKLI~Qgf??)G~B!D^0Dv zZzHv}+DYxL4pK*}lhoPjB1KtUrEXStDcb5G^|X3PF;;J>kJVS|XZ4o`SOcY4YmgLY z4VL1qAyPu<+M$|;c|Tmb*Sb%--+DlL(0WKpw34I|RzOO&MoOcs(NfSFBaOAjNe^3( zNaL*uQi}Dclxj_s(yU2Rx;0sv61sM(rfJ?!mu6UxNsn7kNEue9G}C%g%Cer4p0;L5 z+16}nj`fT**P18Iw-!h_*0WNs^_-MvEtK-DMbcvHd1*=L+NGM7dH;g+qP1KqunMIW z)=H_!S|zQv)=0(HT4|lNUfN*2B)x2HluE2uq*Ciusm$6Wm0O#oE!Jz&R%@HIJ#_8s zn%?mKO{v1#A-!e2E$y`4k>0i5lXh9}OCMMtN*`GtOP^SuO1rJkq&?Q>(q3zywBPzd z`qKJJ`r7(N`quhR`aX2+51J~yKOh~n4oOwkkJ3-pVd;ok$$y)lTKK_ zODC;Aq*K;u>5O$&`qTPL`rA4uowxpx{*}Vjjp1~opBTf{kKyjeaP?!j`!QVo818-y zS3ickAH&s;;qJ$9^<%jEFc8^hI&;qJz8bz``@ zFH~x3+otp0QpT*tMJysp5u2oN}Z#9q_ zT8*T}RuieI)l6z`wUAm`t)$jg8>y|;PHJy;kUCnOq|R0sDaz_9b+ful(V=U5XzJ;G zFDb_AE%mYbO8u<<(g16q6l)EV;;g|^yfs8hu!c&*tl`qV)_v0b)&tUm)k(*sdIRVb~nR!T+IDrvQ~Mk=<}O6x+`uGh4|`z# zy(*Pio1}7Uv$Vx}P1tD-$~zFKS-6<0qLN1NUE}alzy@f zOGm7u(lP6}^t1Jg^lRwa-!z@@{&(r5^@nuIIxU^C&Psn;e@TB^=cM!2KhnQag!(bU z&yEr5#t3&~gt{@p-58;6jBqzbs2d~PjS=d`2zO(Ix-r7t7@=;Aa5qM%8~q&s-Cz;w z#|Zahg!(bU{TQKsjBr0js2?NTj}hv}2=`-z`Z2=&7@>ZQa6d+phJ*mFcKx$|;k{Vl0q^4Fgsri3@Z6g9LG_~};mDJj5Bek{K zN$sr;Qb((k)Y}9&k6TYj8CIq=(|S_MvYwKjwq{A$)@*5x z^^7#vnkUV-7DzePvr?}0oRnuRl=7`b(&Esy&ud!Z{ZeU}^@8-GwOlH&3Z)g+N~y?N zC9SsBNX6D#X`QuR+F-pTy=-liN~~9;QtMTz%-STCTbrdV)@#z%(6!q%ZTJ3l=?&{m zslwVJy=A>E?X=#J-nHJ7c3JOBA6OqsA6XwupIDztyRFZpJ=W*aUTdGU-}*xO()vpJ z+WJQNHgxTGn!fk`2dUCJARV+0NmbU5(ofc5>43)n=W2E~r zQvDd|evDKKq@Nul)s2zv#>l{x(pCD{k?O`scVncwG1A=_scwvP zH%6)(Bi)UW>c&WSW2CwA1wu~G16FTob<5uh&0}sAf;H3N~zXFDb1QBrCXDwDb`eJnl)XTVLc{2 zZapDoSeepH>q#lgdP;gabnPrn+1}5V=2*{2bFF#Od~1P}V?8V7TF*&&)!l6WOVZ2MMybSlMJlyk zmCCG5Qn|HR+G4#XZMC*Z+pX87H>@|M3Tub-mi4x@(|SjG*LqLdWxX$b5W4n5O&@vx zvGj@cskGbrOxk08F737UN&BrYq%W0ha~y0Nyq zv9`Lgw!5*my0Nyqv9`Lgw!5*my0Nyqv9`Lgw!5*my0Nyqv9`LgHr?n3tF3;l?S8DS ze)M;dR$i&sRsM)qOV?P}O4nJ}OE*|IN;g?IOSf3JO1D|JOLtgzN_SazOZQlHq`Fo; zslL@fYG^f*8e2`IrlD(_X=?6$3#p~mN@{Jjk=k1Ar1n+^siW0N>TGq9qO7h`H>MQlL`bz_>fl{nBNQ&cH{qJDC;`JJ$SAt$cmtI_S;c)&Q4vV{> z&hXm$cHfD!F1X+b-wiyNgf2wM=znN5x(Ef)#b^w=1dT;}_wZl}x(ubF%h5zs4W%Kz z2YGN3s)5o`O*9#Wp(&^qnufyBbQFPRph%Q~bo>RuOmqdxLRX?}bQQ`$SEF2X4a!5; zqJ`)>l#i}Q1?UD;h;Bqh=q6N*ZboJ37F3RIMHT2av=iNqcA+~^CAt$GKzE@kbT>MT z?mb$iq4~EC@NcOj-pWu6oXo# zSkwx|q1GrKwLwErTap+wXkC7}*z1nP*AQ71GSbw)wd1*M=Ul#05dG}H}ELfuh1 zibm5=50rs=qAb)4Wuq9Bi+ZCx)CU!yzNirOLq(`RT7w3lVl)t~L$PQB8iY2YI8=fL zqf!))%Fqy0juOyjG!#{!VQ2>$j&>q_7k>SdgYH8gp!?Bo^Z?p}9z=W5LufxrM3pEB zRiP2+2nwK+C>fnbBheW&3PsJ9Mx(AMh@#OL6oba1STqjBp@&gCdITk)@hA~ZK*=Zt z1<|7@6{VsyG!bQ>G?a-Zp)8b+W}(R_8%;s8(Nr`CO+yRNbd-Z;pj`AA%0rK%eDnlb zgfdV8%0z`|CMrTtqGFVVHle3bIeHpZApQHLzcWaGUG?_^>7{@7(HvBTo(2J-LEk{MD0IflVs2Ht4>(EM6f{IWnT7}BcYE+Kapv|ZlZ9{8OqW+2< zS%;F)dNcxUK*{JO6htqhv1lVoK_w^^y@JwEDVl^{Md_#vO+%Yd1}aCHXfw(}TTnK7 z4dtM%C>L!*d1yOYh+aqe=nYhW-b96{0u`ejs1m(}4xqQuL9`Q9p?47fBprDdoj~uQ zlV}$@h2BS}(Ff=Z`Vd9wpS>d=p|0p-6pcPXvFKA2k9MO3^chM-dr&g^90k!{l!o@9 zNoYTshQ2@<=u1?9zCwlQYgB~3L95ZXs2F{RO3?SH6#an8P$eoy2he785N$z+Pz9<& zJJ6447y1e9Lx<6RbOcqRqv!xShR&elC`$jv9{CwXqhC-A`W3~Z-%uPnffCT~C=s1R z8R!p`iB6#`bQ)!&GiU)ii*nGPC>Q;O^3dNXADu&s(0NpV{z1j)U$hBbaG_K#1usMu z=znMjx(Mw=7o%P160{p#iuRz(&^~lIszlXL6{?Popc?1|s)H6)hHERgVNBoC>>pgrlIRm0lEPdq8m{Wx(OAdn^6h6 z1(l*(Q5m`om808HqMAE+2TDSBq7mpWl#K31qtQJmi0Ys*s4g0d>Y)@=AElxOC=E44 zlTag+jvAxMs0o^anxbi_8JdBbqYTsnWulfS3$;Sos5Qz#ZBQ<1i}FxAv=FsN`KSXb zKpjyb>V%3=XH<;3pb`{?%28KTiMpW!s5?4@qEQvt>}Xb4I`31}!vM8i-L z8jh0Dy(oz8Ln-Kfl!_ielhA`G9X*7mqC}K|l28^JfeKIn6{2KRghrxbGzzUlqfrS8 zqEa*lm7%ey9F0TU(8FjudIVLV@n|QSfOer2v=2RsqVyCKOhwUXB8ow2C>BjZaVQ&?_hz zm7>w;RTM;JXbjqf#-egG4sAvg&=!<}UPGy9D@sG#&?K}SrK8u;Wb_7_g5E?kPzB0B zJ5VNi3uU3VQ8wC%a?m>{7rl$}(0gbh+J*Ab`=|hYfGW|4=m7c%9Yi0aD)b3Dj6Owt zb`ji-j-k)cakK}WK%b+NXfHa2_MtOqKl&4WfzF{XQItMg34VpTqOVaj`Ub_IZ&57z z4#lDGQ9Swq4MCMC0Ubbz=paf)hfokzp-JdRl#YHv8R#&|LPt;mI*JO>F;s+(qc!Mf zRE&N>>(H-g1Nse>pcAMR{f^4eNmP#hKwHo$v=yC373d7wiO!;3=ucFM{z9kG-zZ9- z_XW?PXmlRMpnp&-`WMBa3;w5wM;D?*^gon=E<%~;Vw8n0LD}e1l!Goqx#)6~hpM4` zR2>zd8fX)$i7HSS+K+0XN)(Q&Pz2&L*^fp=sJ{$u187e29%6$M5ED7D2Q%GW6>=r1>K5L(QPOV-Hy`H9Vi3ci3-qNs1V(a ziqJi14XT5RQC(Dm>Y-9pAC;j7XcKCP%26Y<88t?U`dmNQ1SO%SC>b?FLDU?jpcW_< zwM1#C6`F)vqjb~;%|LBY25N^gQG1kyI-qRS5#^vxC>M1`d8i9oh@wzF>WV5+H*^4X zM^z{q@jgbd2Rep&qT{F+I)P%)Nz@yiLVeI_)EAvW{m^;TA4TbXk>CK-6%9nuC>F(_ zK`0i*p*S=c#iMvM1Pwt6C;=s+p=c5sh6>PdREX|HMd&_MjP6I}=mAuL9z?s)L#PrZ zqA0zW6HG$UXaveY0hEc7Q5G7Bve78C0F6dDD2VdW7*v7AqDnLlRiTFw?;!;rK_}37 zbP`QKXHW`C)H_VUM^O?=MagI)8jaFW5KTfUC>^Du$tVp?K^bT&%0kmnHkyud&mjAo%A%0?+@HcCZvP#Ss$ zO+s@~I+}+jqxon$T7YJt9F&2cMVTlUWufO#Hp)XeXd%i)`6v%9LJQGil#iZA1!xH> zL`zW-T87Hd3#c5uh$_)?bO05gDpZJg2Qjz;oj@zmNmPVRp;hQKT8+-2HRwDlMp1hA zF}N0WMe9&BT90DT1{8~4LUHJ26puEd1XO|&(JLqkm7-+yDhi@9l!7*)R8)@A&}K9V zZ9(biHI#w2qAaux<)ZB<550~G&>N@_y@`rY1u8~6Pzibqm7=#%8QO`;(L1ODy^D6D z_t1W{3!O&qqbR+58~gx8qYqIG`Uu6Mk5L@@1jVCIQ3BeH647TU8SOzq^f^jJdr=zN zhtko0l!3lLndnQDg}y@B=xdaNzCpR@Ta<^sL;2`?RDga!n@}aHKnGAII*1OSL#PT> zA>PXl{)kSXpU^3E7@a{!P?X;34jx5a(J>T_j-wd#Gm1sOpg8m^ibubp1atx=qTf*x zI*F3eA1H`Up%io)rJ^$^4V^{l=ub2m{e`BXztMDb4i%vDs1W^wiqOBP7+r9Yq6A%t zO40vN8M+9Sql;1Ea>XSm30;bk(Pd~9x*Uy0)ld*sM`KV8G#1rFDJTr3qFN{og`;#7 zfhMC!G!4~8Gtd<%16_$S(N!o5U5&EQH7EyNi*nI*C=Xqa7NQ$aKDrStLN}oTbTcYM zx1eHlD=J5~p-OZ+I)Ls#Rp?H11l@&>p}WxubPqa->Y!7oE;@tip|hwyI*%Hlr~*Yp z)D<;C(Wo(sK}}FBYKr1eGZc@SqammTN8Jym zf;yrM)Cm=!&ZrP|K`T)dDneaRG3tiaq3);zMWa&G1C^nks2ue|6(|PnM7_~I)CcWH zeNj}Qq92Mz{ZR}Wfa1_V6pvz20vd!8Q5;G}gHaI0qf|5mrJ)3rfrg??Gz`r|!%-Hx z7tKQVp=@+NnvEVnbI^k*2R(#xQ6kDiNhlwUKub^nEkntu0F6XNXcQ_&qfsdeqB1lF zRiLq`5{*Mu=wWmOJ%XZED8{2`Gy%n+6cmddMe!&VC8CKa8Kt2hnuJnNI!Z&6Q30BQ z3ei+lgr=c2XgVrJGtfHp7%D-Jqf+z)Dnl7)6Us#8XeQc%op&;6dQqeY)hPIfqL0u%^f9VLpPec$GSHVO6McoU(AQ`d`UYjAZ_#Y@9h!r_M>*&R zl#41+9y);X(LuBX9YRY{6)HeKqGI$D+Jp|H3UmZjqNC^lI)S!#g zfl^RSl#0So8mfgRp>ULrBG3#Ji84@al!>lDS?EfXjjlpD=xUUUu0eU|TC@;dhw{<& zr~uu73ek9CThU>38{+F%g14g+=nixW-HA@4yU-bQH;U5NxdiV) z38)TAM0HUTs)tfgeUyqCpfuDFO+t-OI%Bm1s06h@rKlw;N3Bql zzWOHE8YQAOC>^y$8K@n~MD0-)>VUFQN0fs)p*++X<)bbrN?+F#j6w;hD@sJ&P%`R{ zf+!lLpdKg{^+W}z7b-+Cs0j5&#i$P|L48pv>W9iue^ibJpv3ixfhY;Zq5v9%l2IHQ zjRvD2ibrG65HuDgpcFI|rJ`Xd4Gl+=(7h-f-G`>3`%wmZ0A->FQ5Jd#WurutgOX4# z8iDdq04+qxC?AbP1!xp1M59p=3Zh~(29=<(s1%JuW$0m4jvhf3Xgu19CZJs?1?@(U zqWvfpRicUL07^p#(Ij*TrK2h|868Gb&=E8h9YfR5aWoyBKr_%u^cXsY9!ICq6X*=e zK<7{8Cr*4Kqcr! zREn0PGE{)dQ6bujR-g*B674`mXeU~QcA?d1KU#w-Q8B7QYta$34xK>j(J8b6oklOA zsFxHkqiD1d#h?-ti(Wx-s1(JcS5YD=LrG{8N=D@u;bQ0}Dr_g?M27Q5|URHdGx}vX8 z4Eh?yqHj<<`W7Xi?@%K89wnh4P%^4SL399(K?hL^I)qYD6-q-tqIC2VDnN%(Av%JJ z&{4Do9Ye+FINFGQMkVMMREmB@W#~6lj!vL$=y#O3QE?I_p+8UnokGdzGzy|KCM zbQ!8bmm|LFHdqZEL)Fms1h|p zRj4^iC{?sTiKrz?Lak6TYK?-Z4H}Euq6w%SNC)cbw?#A8kM3Rs0{T)<){}*d{q&Hl2C7yjQXIFs4p6Y`k^4|kH(+@Xe=6t zCZJf9f(D^f6o=B#U^EHEqjWR`O+yK2IvR>H&@hyVhNCQWFUm&up&WES%0&;LJoF%1 zh#o@uC=nH)Bvgn-pdu7N#V8rAMS#(LetS{Gy|PM zkD;^Zar75@0-Zw{D5^}6iMpbhC>lM9Vo(-}MNgqP^fZb`vrq!cMu})PN?1aMDL*# zvVMqpP?MI2j!yAQ6Ach^3gt2fcB$8 z^aUzHU!r346)Hhrqf+z@+JwGE<>)(9fxbsO&<|)Qszkfc0kj((M0?O7v>#QWO7tT- zfPO+%=rB5hj-V6hC_0Ibp;PEMI)i>jQRRwXP*?OTiblVo7<2-~qTf**I*H=ZA1DEx zLc`E$l!(rtBy<)fqd!p){e{M(zflT0hf>jbl!pF6>F8fH8C`IxVhXwtO-27h)6hj| zI=UFmK$oBlbScV0m!WKQIm$uRP#&s|3Q!GHh-#uD6o!gXEwmPeqje|(ZA6i%1l2~R z=n7PZu0)&ARj3?YjW(le&^B}}O5Cit4ke-MQ8Ky#jY2n~(dZ@=L^q?c=oXZMZbhl+ zHk5{LN0ZPUC>`C2CZoGh2D%$%qI*yls)MpoU6h0Bp>A!>;7Q6p4<8lytg z1QnsCXfVaZWPZWoGp?DO75>RiHi29&p)E5O&Ka_&{ zqf|5iO+o`vI*LUZXb>tuai|atMnxzd6{8_&9ZEnYXecU0!%!I-j>^%!XfwJGZ9(^= z?dSnifgVIV&_ie!N<@25655MKp#3O-Dp4{zjYgs~XcUTiO)(lpqacbwV^Ay_i{j8Y z6ptQ83Fr}&h{mHNGyx@}6qJr0MHwg+Wul2F3#FlKGzrZ{>1Ym`jB?Nvl#8aKJTwjE zqv@ys%|M&bW2gc>jw;a;=m5$*T!iPTA!jZw&2uR=dKI_Fikw z^%CgCfzAr_l0Z8Gy)@9yKrailE6~dW?GE&cKxYR!80efpuMD&&(7A#326|PX{ejL4 zbSTiP104=@D9|N=UK8j@pw|Y9|9`%lUKi-HK(7yUd7w80x+2gU16>*DO@WREdUK$a zH~Qr*fi?s>KhSER3j&=P=&gbF26|hdeSt0vv_H_>104wTjz9+ky))3cfi4PkUZ8gc zIuz*LfnFQvJ%P>-^xi-h1bSbfivqnr(8mIOAkg7J9}IM5pbrIFd6Qp09B5sjj|5sD z=%ay-5A?A>Cj`1U(6&Gy541hdCjy-n=#znV1o~8aZlFs8T`$mOfvz9u@<2BTbVZ;W2D&oPjRGAFbmKrP=lkU* zfsPAw(?IJ2-7L`hKsOI`e4twdIw8<41DzP?R)IDIx^BNfqo&-hCsg< zXf@C;1=<|wmji7N^echR3iPXib_BX#pq+t!Ezqt&_Ybr?&;tUU9q569_5}L%KzjrI zMxa**S_yQ1pyL8v80bNP4hMR0pd*3S1-dlQZw9(7&~F90JkUb|T@h$~pre5v8ffLM zetB4+b%7opXnmmH4s?8=M+Djs=#ha|1N}~*Qvw|yXk(y91=sYPVW2+@bRf`4fnF5oj{+SG^v8kD4Rms#^8)=z zphJOH1FgQzFQ)`LCD5sXHU@f3piO}`2HG6xv4OS(dR(BbfgT@dTcAyWwg-AbptAx! zG0=`cPYSd%(31o03iOmfy91pT=^-pr;4AG|-<0x-8H$0$m>H&jMW$=+6UP8R#zp9S!u%Kr0ve<^Kda zF3|Qs>jIq>Xnml+40L>;zY26hpdEou4D{E5HU#>cK&yeC6=-9ioq;w5dUl}Afu0j+ zOQ7cl+8XF@1DzS@d4aYC`ny2e1O0uVy@7TG+85{_0__j9JJ5kZ{}||CptA#=8|a)s z=LOmm=un`43Uq#;e-3m(pnnN;VW58vbWxyx3-rN2{~qY#K>rcwaG>W0IvVId1FgK> zFM9*65411PYM}oLv^~&&2RbXz{y;kd{ZF8sfnE@3SD+UL+8yXXptA$LDA1ljFAlUf z&`SdC5A@PN2Lin;(4jyt4|IN@R|L8^(7`~51HCfPC4tTjbR^KL0$m#Dyg-))dUc@7 z104!tF1bSbfje*`DXj7mM1bRZC4+h#C=tF_F1p08Gt${ug=*&PL4YV!L#{z8+ zba9}w0)0HtjzFIXv@_5r1MLd*sX)5}eLB$Dfj$%HoIsxqv?tK#0__d-`9OyP9S(Fj z&?SK`3G{_PM*@8@Q2bxV*>oh(*8+Vh&}D(X9O&{uUkP+Ypi2W?8R)Bljt2T#pp}dK z^7TN+1^Pyyb%DMaXnmk>1v);^w*#FJ=(0d32Kr8*4S_BXv>NEUfi?!ZBG8$Et_-w2 z(9u9U0(~#g-ay|Ev@g&P0__jw!hCpiq zogZis=)yo(33ND66KLgKez|I(b%BlzbYh^Z1=VZ}RT_e!;K-Ua(R-kJI+7am5 zfp!MEPM}?Zt{Z4~pz8%XJJ9t5?Fn>)Kzjq-Fwm<5-6+ucfo>e=aG;w6x+Ks|104x; zvq15G2WivI16>yA7J)7gbjv_T1Kldn%Deq?>p<%Q-6qibK(`Hae4yI}+7RgWfmQ>p z4RlJNI|SMo=#GINALvejHU+wKpeF{pOQ6kx?iy%Ipt}Xy8tCqUwgL2f9z7y@Bo99cX=^a{@gy(4IgK3$!=T z!vpOL^xJ_B2YN)HO9DMI(2+pD6Da<#Wo&}D%h73lInCj`18(4zxg8R*17M+5zC zpq2OfWkaCj0{vc~b%B0A(E31s5a{?oe;DY5Kqmz{G0-0c+7RfE1FZ%+Inc&He-da@ zpw&Q|1Dz6ROQ2H&of+scfwl$O7-)N-#|GLN=y8E|2YP&IFwj#1og3)1K<5Q|YM?`bHU~OC(CL9L4zwlE%KQ9sMxb?pwgy@abY`H9 zfwl$O6zFMzwgh^5psj)aG|=`y&j@r@pg#+=Bha4*dRCyn2(&ZMGXp&*(EkavE70~p zy91pS=3-rQ3+XEd4bXK4j1=sc z=un`q1$s@O%L2VN(B*+%7wC#WuMc!I&>I4+e9$j%40K$eHw9W3=*@xF2YO4O;{%-^ z=!8HQ1UfO$TLWzf^tM2&fi4VmN}#s~+8F2^fi?wtXQ0i2E()|I(7OU{4fO6nX9jvt zplyNP8)$o=_XXM!=>36q2Kqpt-GM$BXm6ko1=<(r!-4h(`beMyfj%1OWr02x=wP6W z1DzY_jQl%(D{Kr9q58Up9yqfpw9-nDA4BueKgSL16>^GaG=A1 zE(vr=pf3bE66lM8t_XA_(9u9&3bgVezkE5+ae=-PXkDO71FaAA)j%f%`dXk91ARTv zhCts4v>ND}fi?#ER-jFRz8z>wpvwYn4fLHr+XG!5=&V5B4YVWB6@hjJx-!u70v!#s zE711>ogL`=f%XLYL7=^Xei&$fpdSS~5a`E&4hH&3phJOv8tD8$$6UiN7X(@p=)ypY zKoyA8i6hkbj?6l1iDtBqk*m+XywCx zxlW+t0$n%IxhjIwjCe0&NU*(?E|4bhAK@ z4|MZDn*!Y;&=UgPGSKEgw+gf+(5(Y)4Ro78+XCG-&@%$vF3|Qsw-2-<(Aq#d1KlCe zu0VGTv^&t90__QO=RkV{-6hbzKz9waKhWI*9SC&yK=+7W?is(_D}K4RU+&&)IvD}DJNeO%JbB%T4|>?6PJZO09=z^RCqH`SxQDMhaLnmf zS#!+){_=xUA9TNyPTaEb^ercC+xVn2PCMzrr=7a>$s3@i!OwsFldi`zD97C&tki=Q-CS^T(Z7C&mP zy7*yp?BWN_)fV4xuD+(c&A;jTc{UZnF4VbJN9Fo0}~zZEn8!N^^_Fmz!HIzSP`maiqER;)~5~ z7GG#?ySSve-QsX_`^D#*wTsU+cR2R5%^eq?Y3{W6baUs$r<%JgKH1!L@rmYci;p*V zUtHYWWAU-(o{Nt*_gZ|Ux%cA3&3zUhYVN!EVDmGJ4>Ui!cz^SAi}y7@f9!jkUs$}S z`NhS%n_pVItNG={Ma{1)-r4->;vLQX7H@BUZE<09|Ha#y2Q1#&JaBPA^XrTAo8MTx zrCC|LxjAm}rshG5H#QGG_6^Ot#p|2jT)eLNt;K7bhb&&xtX~{z9=dpS^RUHv&BGV3 zYJPihZu5x6E1O3y4mQ8Dctvyk;^obw7B6c~SiH1(^x`GWiO0UU`Q62fnhlEs&F?K< z*!=$D1R{-q86? z=Z&1-aNgMYb>~f-Uvu8n`Bmr5oR>Op?)-}L7S1m_Z|V2(CFiYtA93E=`9 z)_IBZcFx1j+dDt+TI`8QGjPp*;Pdo4I{FL)9&QCh;>imTBZqAQ8@9wi`99~*JKyX41?PL5 zzvz6o^Ov0Oa{jXOBImC--|75S=R2JDbH3gAYt9Ru_xJmFoAUv_-|Bpz^8)9uJI{Ci zhVw1X73Z6s$2s5Re30{v&Idc+;9Tc?z4JGnuXFyE^R>>0IA7yj?>yvusPom%hdIx4 zKHT{#=WqLcoa=mq?^ik>={)HC9p@{Y$2(u{e3bKL&J&z3bw1kp66cA|7dwB~`6A~A z=K<&MIbZ1fedi0Df8hKd=N~%vJ5O@{xATvj|K--nzB_j~zii~Z|o_wS$G4FJ0XV7CD5 z9)R5hu)6?u8^G=Z*o^?Y6JWOj>|TJ~46wTac00iC2iOe(yCYz?1ni!G-4w990(M)# z?hDwB0lPC`w+8IqfZZIhy90K6_}}9GfZZVM?hx250=q|GHwo-6f!!vs`vi8Q!0r^- ztpdAOU^ffwZh_q{u=@pe!@%ws*ewIQXJ9uC?5=^`Hn95!cH_YA9N4V`yLaHVE&g1K z-9GH@A9gp8|1Ity*e%5F9)jIOu)7F$8^P`)*o_3clVG|TQ1Ot8BNc00lDC)f=I zyQ5&Y6zraY-Bhr<3U*t;?km`h1-r9gw-)T)g56xOy9;)E!R{~E4FZ-U^g4=ZiC%!u=@>m!@=%2*ewUU=U_J-?5=~|cCh;n zcH_bBJlL%VyZ7Lg7Qea0Za;SSAG;e6b_c?4LD)SAy9xboaTmgFLw5He>_&v$iLhG{ zb}zziM%dj5yB%ToBkYER-I1_c5_V6*Zc5l)3A-&}_a*Gcgx#62TN8F~!fsC3-3hxr zVfQEO28G?Buv-*%kHT(J*j);{P5p0ipTcfbc6Tc5R)yWGu$vWjx592$*!>E-VPSVH z?3RVyv#^^McGtpgTiAUIyK!N6F6`EY-MjE=i=W?Ow=cW@J7h=CJ!5cB8}Ybl9!#e~Wt^ zcC)j)+hMmm?0$#c@US}`cFV)=dDu-4yX#@MJ?y@R-S}{O=lfa{U%r1DKHu%l@4LPG zeYdy2@Am%p-M#?6+c&^>`wIAO-vQt4OW?bG3w*b)f$#P`@ZG)$zS}p!cl#>%Zr=sp z?aSbQbNe>c(z7W3KH^O)OO89Qy3E%BY;k$h+e7CQK@Akd$-M$#U+c(2^ z`)c@Z-wogG%i+6yJAAjVhwt|N@ZG*3zS}p%cl(O?Zr>5#?MvdjeM@||uZi#WJ@MVX zD8Ab_#drIv_-@}7-|frdyM0@Hx37!;9_{<$yM1B!+c(B{`^xxk-x=TSOXItJYkaq_ zjqmoo@!h^SzS}p)_uB5y|8w1+fBW+Aw{H)B`}+89-yh%Y3*@_fgM7EIkni>#^4-2f zzT3CRcl#RoZr>x{?Th5QeUp5*uafWfUGm+&OupN<$#?rY`EK7Q-|Y+KzeoE<`EFk+ z{`Q^n-M&=5+qcSh`&#*K-z(qki{-n0vwXL&mhbl6^4-2%zT3CUcl&zzZr?B8?F;6+ zeZzdWubA)l9rNA3WWL+C%y;{m`EK7c-|dU$yM5Dqx38M-_FePczHGkRx6OC^y7_M3 zH{b0G=evF5e7CQh{~ql-=evFB_}jP6cl+A;Zr?lK?ThETee-;;bbtPD?*9DSmyf@F z`}o_}&v*O&`EFl8-|ZXdyL|!+t<-|`#$<^Ur68W8|k}!C4IN=r0@2n^xva>D}A@GC4c)~`fguL-|d^} zyL~l%x9_I!_T}{5zMa0?*VA|Ve)?`-P~Ytv>breKeYfwZ@Af72-M*#1+t<{0`=0u4 zUsT`io9erLReiVbs_*t?_1(U$zT4N;cl*BjZeLj6?HlX6ePw;O@2v0krS;vuwZ7Ze z)_;%oz4hI`xcu##>wC5P^M8K#=ik1({O#Mz-@d-S+xORZ`vUuJ-(cVEE9|>{hkds% zvG4XR_T9e5zT5ZMcl#pyZr^0z?W^p&eV2W=FSGCVZT8*1&c56C*?0Rw`)=Q8-|Z{y zyM3p9w=cEt_O15azSh3m_u6;+V*BsWzS+LpSDU|mw|%!Sx9|4t_T9eTzT5ZPcl(0- zZr^aY@Aj?t-M;p|yZ4@D&Hw(1v;Fjc|IFFCSKoh^?%ikW zUVd@i+t1d${%qa*&(?JSY+Vn))^!1FT_3>KbpmW%FTmDy18iMCz}9sHY+X;l)^!DJ zU0=Y~bp~u*Z@|`d2W(w`z}9sLY+aAQ)^!PNU7x_#bqZ`v{>cuA5-%`U$qK zqhRZL3bwARVC(t{wyv{a>v{{euDf9C`U|$M!(i)r47RSzVC(t}wyx7)>v|2guG?Vi z`VF?V{olW?=V0r)4sl)I!Pa#iY+dic)^#8Ln|A#NTi1bz>v|Bjt_xx7`Vh9R6JhIm z5w@-yVe9%4wyq;#>v|Hlt}9{d`VzLTGhyp`6Sl59Ve9%6wyr~A>v|Nnu1jI-`V_XV zQ(^0R6}GNhVe9%8wytAg>v|Tpu4`fI`WCjXb7AXx7q+f@Ve9%AwyuNm-?Zyt*t#x8 zT-V32b)5`b*UPYV-3(jT&#-kJ4O`dKuytJxTi4gHb)5}c*W0jl-3?pU->`KZ4qMmb zuytJyTi55Xb)61d*Xyu#-40vV@35`(fB(9khpp>+#C3fSTi5xpb-fQ;*Zr_{{SRB$ z0kL&G5L?#;`ET0wL2O+oB(Cd)*t%|rt?P%_x{ipg>xtO9u86Jci`cr(h^_05*t+hB zt?Q52x(yg;HE{Uz{li0dWiLL9E*t%|st?QTAx{ish>zUZPu8FPdo7lR}iLL9M z*t+hCt?QrIx(!H}XE{d(|qu9Dm%74?YmtyO>DREst#nyFHY+X;q)^$~EU0=o4 zbyjR$Z^hPiS8QE>#nyFLY+aAV)^%BIU7y9)by{p)uf^7NTWnpw#kSi2{p)%zwyx_E z*Y#a&UFXHt^$)?xu0LbzIyAPfM`P={G`6l!W9vFKwysxW>$)|zu3uy8 zIySbhXJhNSHny&BW9vFMwyt+$>$*3#u76|eIyknjhhyuyIJT~jW9vFOwyu|B>$*9% zuAgJ;Iy(PNyPl4%>*~aHeH~lZ*|BxK9b4Dkv330&Ti4;Sbv+(i*X6NweI8ra>9O^_ z9_yO__qUC`@AugIj*q?X`PloekG=2v*!#|pz3=_l`|gju@Bi5Q4v@X?0onU5kiG8% z+51kAz3&Ct`)-iE?+4lYj*z|Y3EBIu(0~8FFJ$jKL-BoY$liB{?0tX8-gk)XeUHfA zcZuwMpUB>KitK%_$liC0?0vt;-gk`beb30=ca7|Q-^ku~j_iH!$liC4?0x^p-gl7f zeGkdrcaiLUAIaW#lI(pi$=-L9?0rAU-glJjeNV~Wca`jYU&-Egmi}D&-jcoVF2(o# zC41jtviChEd*5ZU_kAXN-)XYGQPVs%u$=-LJ?0w(K-glnteecQM zcc1Ki|H!??@-0}Jt}+OrLy;ZDtq6lviH3zd*7|H_x&n+-?6gyJu7?PwX*kp zD|_F$viH3!d*8jX_x&q--@&r?JuG|Q#j^K(EPLO{viH3#d*98n_x&t;-_f%7JuQ3R z)w1_}EqmYDviH3$d*9u%_x&w<-{Jam>3dxEzRMNg_qptSr_0{=y6h{1zyE!|%iedq z;`^SLz3+P2`@WaG?|j+&-j}`ae%br}m%ZpHiL>{;ID6lXv-kZtd*6|>_dPj#-<7lXeK~vInX~u3IeXuov-kZud*7k6 z_dPm$-=(wneL8#Jsk8UJI(y%(`*Z30b@skv7vJ~n?0whH-uLb7edo^J_wMX{_s-t; z@9cdC&))a&?0px{-uLnBeJ9V}_www0H_zVp^Xz>`&))a+?0r|y-uLzFeP_?!_x9|4 zchBDU_w0R#&))a=?0uKdKIrp#*8Km!>3oA;pKs9Z^9}lazCp+D&uGx|^9{Owd4s;6 zZ_xSk4SIjRLHEx$=>Pc!69C^}2H+b^0epiwfNwAf@C{}GzQHuWH<$^dWCBfA9?^5Wc|-!Z(;g z_y%(b-(V8q8_XhngK30sFpuyJCKA5EOu{#qO85qI3EyBc;Ty~*e1qwPZ!n+m4JH)6 z!HmK;m{Rx#a|+*JQsEoSDtv=!g>Nvg@C_ywzQN4GH<()Z26GGFU~=Ib%r1O`>BXPz zV1D5nOfd2WGYsEgis2i~F?@qbhHo&-@C~LJzQH`hH<)Pn1~U!cV5;F8%r$(2$%bz* z+wcvh8@|DO!#9|4_y#i$-(bq&8_YR;E2DpZgIR}fFzv`2%sYI8iHC16^Y9I(9=^fc z!#9|G_y)5N-(dRT8_Yj^g9*r=?O+Dt8%#m+26GVKU=rdR%tCyFX^3wy5Ah8qBEG>) z#5b6V_y%(k-(WK08_Y(0gXxHGFdy*^CM3SWjKnvXlK2L565n7_;v39Le1mC;Z!jF}}exCT}p0@eL+2zQIh!H<-%!26GwTU^3$y%w~Lp>5OkMpYaVQ zG`_)%#y6PK_y%(t-(XVX8_a5agK3R#Ft70qCN{po%*HpE+V}=@8{c4Z;~UIwe1qwY zZ!o{{4JJ6g!3@VYnBw>ba~$7blH(i9a(shn&Y$gIp5q%#bn*r>9p7N8;~UI%e1pl3 zZ!p{O4W>K3!FUGam1n;lDEe(VWLWn)LWbvmXCw+T$P1d;Ft`kAF1t@sFlH z{?XjWKbrjbN3$RQX!_$H&42u(36Os@1M-iiK>pDj$Um9{`A4%L|7aTIAI*dOqlwVp zh0#pNKbi{VkLE)D(PYR!nhp6!(;@$8KI9)wi2S1&k$*HL@{i_3{?Vk!KbjT!N7Ewz zXkO$WO^p1bnUQ}qHS&+XA5D<_qZyKaG)3}{=1Bh0B*{OT zCHY6wB>!lh7G4`!Sj;`A3tb{LyU5KbkK2NAo5BXu{+l&6xaaC;$FO zb0+_2(v&}%HTg%=CjV&O8RSkLFJP(d5ZLnmzeP(hH&BHsv2pr}9Vh zDgS6fA7^k0w?A(X7fpnpXKo^D6&nV&xyrto);?m47t1@{cB0{?Y8p zKbl_oNAoNHXoBS*&9MBVDVBdU$MTORS^m*1%RicC`A73C|7fD+AI-GM-wmqXy)Y~ zO}+f1xtD)5`SOouU;feb%Ricb`9~8l|7Zs0A5FphqdAy=Gzs&MW?}x(G|WGmhxtbn zG5=^L<{wSP{G+*;e>55Mk7i^3(R9o|nveNM6SBV_qZyfhG$qR)&B^?uNtu5%EAx-0 zW&Y8;%s-l#`A0J||7dFFAI;7Dqsf_nG&}Q;rf2@q{LDX^p!r8LH2-Ld<{!<`{G&;l ze>6+;kEUt<(LBvRnyC3lGd2Hcs^%Zf)%>H$ntwD~^N*%${?UBRKbo-lM>976Xv+5Y zV>D;;k0x#Tqgk7OG;Q;b=57Ab#LYjNx%o#^H~(nv<{wSo{G-{Me>8pbkLGXw(FD#v zn!));Q#k)<4(A_D;{2mooPRWp^N;3n{?SCvKbpz;M^icfXfEd;P3HWg*_?kgo%4_8 zbNy{?W89e>AW2k0y5h(ag?2n%enCb36ZNa_1k- z?);#`A2g- z|7f!3AIv zA0TGJ2#A?*0%9htfS3s{AZEf0h?#H$VkYc>mhsvmj=|Er^-03t}exf|v=z zAZEfbh?%eqVkSI;mh?(#eVkV4*m%mmg>sdx)7ZA7UolhnNZb;qTal{}3}_K-8IVAYvvg zh?ofvB4)ybh?#I9VkT^emSQd3AJd2nK(;{ZVwTPLpEn+5oiWR<)7wSdjNcJA zV|c{PI395`mPg!-=Mgt!dc@7R9&t0aN8F6>5jSIe#LYM#aWmFO+>G}TH)DRp&A19X-H{*!J%~&FFGoDD?j42W~AjIH{+1R%~&LHGagCYj7btVf zxEa?ZZpJo=oAFKJW{i`#8RsN!#yW|c@lN7q%#*ko_att{K8c(0PvT|_l(-oOC2qz- ziJS3I;$}>gxEU8EZpKE5oAFWNW{i}$87C!f#!C5nI^(6p&6p|mX55sx89OCz#!rcx zF;wDa9F@2kOC@f`Q;C}~RpMq`mADyOC2q!7iJLK2;%1zcxEX6DZpK@Qn=x17X55vy z8G9ve#$Sn>F<9be9G18lizRNxV~LwFS>k3~mbe+4C2q!NiJLK6;%1zdxEZS@ZpLeg zn=xDdp3b-}aVv@YZ^mzln=xE|?u_FSH)FZP&3Gy~NFUFL5*GOWch65;tSN#Lf6GaWe)?+>8SgH)FxX&3G_zGbT*jj0+PtW5dMF z_%LxZMoip{6B9RM#l+2cF>y0yOx%nc6E|bW{5_rVW8!8EnR+vhOx%nm6F1|@#Lbv8 zaWk$=+>9*~H{;91%@{LrGtNxhj5QNCA{VH{;X9%@{RtGfqw1j8zji%ZpOWd zo3U@=X8fDD83QM7#=(i3v2fyMJe;^06DMxQ#fh7-apGotoVXbyCvL{ciJP%<;%2;@ zxEV7iZpO`to3V4^X8fGE8AB&-#?gtJv2^~P&UiX;Gp0_x8CNH6#@30O@pa;6jGed{ zXD4pP+KHR-cH(BtowylyCvL{xiJS3v;${qWNG6dLq}%Z#Jvh{K(PrnP;7z^6q{fK#U?mGu?bdCY=RdQn_vdTCb&Vd33gCyf*%x{ zU(&>@Qz{=%%j)@_b4{OK8j87k75%Hq}T)pDK^1EicRp4ViQcH*aR0THo-=U zP4JOo6O5$T1Scsr!Agov@RDK^%%s=^Hz_v3PKr(NlVTGLrPu^VDK^1UicRp8ViQcI z*aTN8Ho;bkP4Jas6O5(U1ZOEW!CLyep5QITCYVcg6WpcP1bZnq!C#6^FqmQ!9H!U= zizzn2V~R~MnPL-Mrq~3VDK^1picK(@ViTOE*aWL7Ho%PBU&bBawconjMQr`QDBDK^1(icK({ViTOF*aYh-Ho<#}O)#JSt|z!p zu?hB5-30$BHo<_3O>m%M6D+9M1P>}U!GwxUaG_!oY^c}-A1XG%h>A^cqGA)QsMrKA zDmKB4icN5%ViWAB*aSZ+Ho=gJO>m@Q6D+CN1Wzh9!IX+kaHV1sY^m4;Un(}in2Jqs zreYJUsn`T>DmKBKicN5*ViWACzv~J9RBVDlRX4$*icPSnViP>7*aVX*Ho>KeO|YqA z6MU-J1fwc8!KsQ(u&QDcysFsMdaRRdo~ms@Md>DmKBficPSrViP>8*aXum zHo>)uO|Y$E6MU=K1mh|;!MTb}u&!bgysOv*^C~vMy^2k+uVNGYtJnks>+gDkgB6=# zVbx9WuwoNTtk?t>D>lK#icRpbViSz4*aRmlHo?k@P4Kc}6U?mG1UD--!On_J@UvnQ z46WD%M=LhL(uz&+v|lK_icRpfViSz5*aT-QHo@A8P4Kp26U?pH1a~Vo z!QP5Z@V8nLz_Z6RHe#IxbU-3!ySA3HH6`y2)#V0vn@ktg~e3AzipJaml8%c7(;*)H! z`bj=me3B6spX7waCs|?fNnTidk{K4CTZ>OJ*W#1hwfH1^Ek4O#i%&Ax;*%V<_#}%hKFMQ?Pcqr!lU%m=B%3Wh z$!CjCGTP#koVNIt^!U?6>$N|1CbrfQwIZ;Np`k zxcDRwEAB;PJR$+(M8 za_-`jth@Lm?=C*cyo*nA@8Xl}yZ9vkEbOPKMi;lVSJeWcYnK z8HQg@hU1r$Vfp<#%JBShGEBdpli~X1WY~T=8NOdmhVhq^;r!)fSbsSg-d|3J`InR7 z{^exYe>oZcUrt5=kdx5>kdx5}4At$3j z$jPV>axyxEoQx77C!GJ1rZj3OZ?qe;lgs1kBAx`dpJG9f3UO~}cp6LK>8 zgq(~*At$3z$jPV_axyxFoQzT-C!5ylTj`FoQ!TEC!<`* z$!HgHGU|n#jD8^}qhQF%Xc%%bDu$eljv*(bWXQ>A8FDgehMbI^A!jA~{$w-_IT=;M z&&lW-ax%(>oQ$?1C!=o2$>+DR4?icPeaOkEA96DKhn$Q8A}6DP$jPW6axyxIoQx78C!>YP z$*3W6GJ1%dj3Oc@qlw7Ls3LMQx`>>NG9o9VjmXKUBXTnOh@6Z|f$*3iAGJ1)ejA9}uqnXIbs3vkUx`~{Oa^l}yMmv#{QBVAwjD8{~qoByi zXee?rDvF$pjv^=L`G75{FjK(4-qq4}!=qz$FN{gI~)*>gPw#dooEpjr7i=2$+A}6D|$jRs~ax%(` zoQ(D&C!@ajHYF@sXF+eB@k(bqemUb8xoysQ%B=Vi4Zd090`URDp1msN!1Wi=srSyf10Ru__&RfgncwIO*~ zbx2-TACi|ySrtlNR)><8Rifl& zwJ3R6HOjx+tR5vVt4R5ISxrh_R+W;M)urTRl__~yZAxBNosyT;r{rZ7DtTFrN?ul_ zl9$z~-b&&9%j#M3vWk{}w^>a~URKre`^@TE^0La7ysWk* zFRO0J%j#S5vI>{Hti~lTt8&T9>Rj@&N|(H>)+H~icFD`?UGlPum%OazB`>Rb$;;|q z^0La8ysY*mFROmZ%j#e9vI>~ItOh18tAfeP>R|G+N|?N?7A7yNhRMt7Ve+zyn7phe zCNHas`FESu#pGp`F+VS>jmgWZWAd{4n7ph)CNHaz$;+x_^0GRaysT0tFRPWw%c^Da zvU-`ktYRiFtC`8ms%G-Cx|zJJawadUoyp6pXY#W8nY^rmCNHa@$;+x}^0GRbysVNY zFRP`=TP?hQSv^f&R#EfwvYMK_tg0q2tETL3|N}If_)+R5jw#m!tZSt~;o4l;%CNHbH$;;|)^0LaCysY*nFRQ-E%j$3P zvI?BMtOh49tHR04>TvS1N}Rl`7AG&O#>va-aq_Z?oV=_iCoikY$;;|;^0LaDysS1S zFRRY^cbnDcp zKa^Wg5akv$M7aeOQEov;l)JY0{uZ=Exdk=R&n@VQatn&0+=8Ykx1cJ@E$E7J3(BJ0 zg0?8Ppf1WS=!sdZXNe;wZPEIm#`l zj&cjSquhe>D7TJ5BpjFB( zsFnWh7xYTG1;x_OEohc<3#z5uf^I3dpj^r=XqR#e>ZRO*ekr%0V9G6Mm~sm$rrd&# zDR-s#{uZ=Mxdk=T&n@Vgatn&4+=8Ylx1eguE$EtZ3(BV4g0?BQpl-@7=$mp23a8wH z#woX;a>^~}oN^0Fr`&?pDYu|@$}Q-fatn&5fBOZ^Q*J@^^m7Zkr`&?_DYu|~$}Om$ zatr#W+=2osx1fQ_EvTS!3p%LWf)XmXpoPjUsG)KTdZ^rjA}Y6_iOMagqH+tmsN8}w zDz~7G$}Om)atr#X+=4AEvTe&3p%OXf>J8Cpq0uksHJiXda2xkVk)Z#mJBDpw-GPsI_tndac}oVk@_x*~%@bwsH%)t=xigE4QHC$}On3 z{_Pj^Te$@V*Uv3#xU$!jUQzi)9anx)$(3K!a^)A*T=_*kSAJ2^m0#3!6Ks9dgT|@Uin46SAJ3Pm0#3+ zcR4him?2mCM>_G3d=9*!t#sCu>7JnEWfA@%P;D~@{0c#Slin08nW-Py`8p|*0#`25GvHYTTEWfB8%P;E3@{0>S$f7>*3b*{C#x1|7a?3C3-13V` zxBQ~kEx)LC%P;EP@{5YM{G#S9zo>f4FY4a%i^{kBqV_GnsD8^Y>fiE<3b_2D1}?v- zg3B-J;PQ(~xcs6PF2AUT%P;ET@{5YN`=h9d%P*?petuCGmtR!Iq0~MO}VTQg5;Jdih1YUVc%rmtWNEv#I+W=}*_5swWYy_xL z*$GgivK634WiLRD%4UEXmE8a}D%$~SRQ3bZsB8$hgDN`$YE-ra{5~ps0%}w?1=OhQ z3aC-p7Eq(IFQ7(cV?d3{&VU+~tpPPEdjo1zHV4$G><*|=*&a}%vOl24+G_t%*&$G) zvPIzcQQ0F8MuQgdj@J$HVynfD!T@1RJIM&sO%f4QQ0_9qq1|LMrG?j zjmqAE8kNlhH7dIYYE-rl)Trzqs8QKKP@}Sgphjg2L5<2Df*O@g1T`wV2x?Te5!9&c zBdAf?NKm7)lb}XrD?yFQUV<8x%>*?ny9sJkwiDE->?f#E*-%iUvZJ6zWlKSg%ASH6 zl}!bAP-Ry^jmoxy-$!L%L5<4Bf*O^b1vM&L3u;vM7SyP0E~ru2T~MR4y`V;Ae?g6v zYX4E$VNj#8#o+f**<(`SOo*_dz#Rdy!SsBBI6eN^@))TnGus8QLSP@}Rv zp+;qYLXFjG|54eYP@}R%;rCJ5qfn!=Nufq%mqLxoHia6MeF`-y8x?9)b}H1UY*naH z*{e{avRR=|dx+*}zbvvV);UWeY=%${vOq zl}!vaD!UkJRJJkHsO)2?QQ62)qq38sMrA8Qjmlnz8kNlqH7dIqYE-r})Tr!ds8QL_ zP@}S=p+;p(LygLwh8mSk4K*se8fsLwHPoo=Yp7A#*ifUgv!O<1YeS97-i8{L%?)=@ zb$3IRHMQ=+@1?rGp-y#!L!IglhdR|Q4t1(~9O_gzIn=4{a;Q_?=1`})&!J9rqeGqQ zPKP?xtqygndmZXjH#^j+?slkC-R@AQy5FHrb;CoQ>W+sx)h!Qos(T*lR5v};sqT8H zQ{DDZr@HTQpyB)T!=%s8ikkaF12@Kh&vifcX7XcRNbcv)qN0ksv9BdRChwuscwa+Q{4+ur@9%UPIWg#o$7Xo zI@SFUb*dX8>Qr|`)TwTXs8ih&QKz~oqE2;JM4jrkh&t7M5p}8?BkELlM%1Zpji^)I z8&RjaIigN=cSN1FOY}e0{SkGl8zkJEuI)h!bLyQ+I6>QpyL)T!>0s8ii0QK!03 zqE2WktU!qQR!$h6xj)^+eEfaOBdnW2s zH%-*3?wY7m-8NCDx^JRRb>l>x>duKe)vXhCs(UBuR5wr5sqUVrQ{6sMr@DWlPIUuC zo$3yXI@K){_gHlgMV;yUN4c)%_H8sv9cmRCiR=scxyLQ{7Whr@E=4PIXsBo$9uVI@Ns@b*dXH>Qr}D z)TwT*s8iirQK!1OqE2;pMV*x;`k(6liaON|7QdhB4vRX~Ef#gEdo1cyH(A_c)m;{K zs@p7nKh=E}b*dXJ>Qr}H)TwT@s8ii*QK!1uqE27q_`*F~M`wu?H|eHV4A8!zfqcV5(~ZoQ~e-Fs1|y7{6`b@xS`>h_B| z)%_QBsv9usRCi$1scyljQ{976r@9HFPIVVXo$5A>d#t(-qfT`r#_y-P6QfRbD@L8_ zUW_``%@}p6yD{oiw`0_)?#HN8-H=hIx+9}bbxTH_>Yj``)lC_7s=G4kRJUc+sqV|D zQ{9+Rr@AwvPIYTWo$B6Z~r&|5W#9)TwUJ`2AFOXw<20(Wq11qfw{2 zNuy46mqwlHHjO&feHwMD8#V5+>Q0S1)vX%8pXy$XI@Qe@b*j5H>QuLD)T!>*s8ijr zQK!0NqfT|pMxE-OjXKp$8+EF?HtJNjZPcmm+o)6BxKXFNbE8gm>qedG-iK=|d)lD3As=GMqRJU=|sqW*bQ{Bi>r@E7) zPIW8CJyzYzQK!0@c);b)tw!6s#`niEU~wv(wchbqSg|-J8CVly`$C=`#WkavB9I(5<5I< zEwRO;))IR>YAvzJqt+6;JZdem&7;;5`#fqbvC*T}5<5L=EwR<3))IR?YAvzZbUYl)2@wU*ckQfrB=Ahnj*3sP%|%^M}W{zyI3R-7O#O-2LwY5 z3zXp)W2-yD$=ukjbXRzpAN!T=i6E=RHH_XO=Cj}ov4HzCHx5~?k6Pg`3|F84h%GsOYIQVC& zvGB}VYUjv9aR^m3%!4Z8JOL9(u1lHs5?k91S=|A4fz@*m8qLrJ{*Exxj&^7G6cJDR zGX&q@6kXJ;hatEf_gbOxRXO3(goLDdstJ+y9_fQH^`t_Fs7%@bW}PjdNT`MJ1djTW zE3PlG@e~)w@U0V)2&xnzm*@{~zZe`TF4f>G7rGd9iloeVuGL_~m8J!ev=n#rgLF7h zspeY~ntYjrxo#tDf-ueNb|zd1n2%c=mhBb`hJ-hbo&u`~M2MEK z6Rcpz-Ncp0rm<4>ZDD@qBegmoF&G5Rv-tz82GA^L!)xs3J(jjNCIG8~akS%EUA>Ua ZZEM1p^EzMI#wz>giJn9-4iR2+{{sA+9?}2+ diff --git a/gestao_raul/Lib/site-packages/pip/_vendor/chardet/__pycache__/jpcntx.cpython-310.pyc b/gestao_raul/Lib/site-packages/pip/_vendor/chardet/__pycache__/jpcntx.cpython-310.pyc deleted file mode 100644 index 39e2006e9f550373d7c8c0b2cb4d4f3f74103c9e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 37984 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 DbsKeH diff --git a/gestao_raul/Lib/site-packages/pip/_vendor/chardet/__pycache__/langrussianmodel.cpython-310.pyc b/gestao_raul/Lib/site-packages/pip/_vendor/chardet/__pycache__/langrussianmodel.cpython-310.pyc deleted file mode 100644 index ff8fe104b94143118174af381fcfeefc7019e04c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 61027 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 diff --git a/gestao_raul/Lib/site-packages/pip/_vendor/chardet/__pycache__/latin1prober.cpython-310.pyc b/gestao_raul/Lib/site-packages/pip/_vendor/chardet/__pycache__/latin1prober.cpython-310.pyc deleted file mode 100644 index 5855d8a42224a6049f33296a42177739bbed9276..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4562 zcmd^BS&th<5bmxyJoegN?`Crc2nYy%2oVUxAq0sWE-CQ><8gG@7{E#+$Ld>1jiD zah|e>N5nsXM_%|5{ET_xhULER097+~?1goUCwO42uezqXx~sdcalce5FnnJ8X{BxN zW$ZnAnSN}1If;mS$O$HR#Jb$)UGRZ30m6!`uI<|?Z%0no^nj@>|KBkVReEi>uSeWrEC{CEwGYtYi1x4aIy>>%~T5eO{+6E#P5r>FNBuB(UQa!0?tA9-Lq--YXerA<) zb~imbuu92fgPD4C{!BULcGH{eGT|nA6GIcb6Pa1>+I~$u#g2z|peMeBL^7Y_M*u|S zW!B=t682Wnw?=P{aPiHSj^NU5fyfDO%f7<>+%-vF6jF&N=44(L%5=<{#TNd;9HvclSnP0)QSxAa!Lfz@zk)=lBDyavmS8vj_#t-q79+VyNO-MAm z!d~OAGtM*&SzxspQhUf=b4Vr_Zp`adH*w;@x>Si51f5<-2SH*jpL;B+1W_34pouvd zG?9&yQqWTJV$kdldK&c|C1a`I;E5f}sD)!b$P|O%4fac`cK_;1ELFVvf{b*3^>n{E z=*pgsSKBhyVLwpeAlkv7>6~AUJ6axJ51SW4)LLEdte*&;mp#!}C+HkP>Jw4whxN2X zZeQO}3wTjUH>R{Ha2J0?zPWeWUAK=fHrriCaj_=%aKYPL!xHh9w$XtTXF)x!tg5RP zQC;mpk`y0#>ftAY+NpCvedVlLB6)=f{_$XHACUt@4iPy_geEQ^Vk%uaYng8@?l^7g z*1sKrpB&WOp4?>j8xDIyK+-uVqJgIKF3ooM_}VfmRPK^HL1 z*8m;oQEF*)%^LPDayYsZQ(Zu>L^5F=ByC&R=tyUY9l*dGW*87>2m-FaWx&zB4<$pu z6wTG!FD||L=sTNR54F)w`eYv*%Homeu9NN6SKj*mw$+aw!qTeZgd(@8V@MJ!9&|H@ zS>5nb)k@u!IJ&RH2))(swK_ufn)0uHDr5R#ry5VcgnPwQokec*0(h4F$02~L1qV64 zd3cAvcCM^~n#Xl@?7`R|sf4gW7J{JL7lVlSVh~&$gi$t=wxhJh6Ayb7wpG1>chE{* zkDI6)iID3Phf+UI@-&1>g&WzOkEe63s2^%|C-J3GPi@L53WBLyrfntdC}q^6GKr}x zd92LKE;tnqR)rt3_LUUP*Q-m3t2fs1&xE2{%MMW*)qK`X6%}3L$ljnEXQw$r0&C^; zBWc4+tW%8|kp`05(?pi(mAJ;Tx|O!QnaC|f$m-N_CmHNLkh$(b>S*y%OoYmjB4Atq ze;A$VA6UTQ4K=jFu{diz=Rz93?_K+6PS>PAHjqI`~W7* z!S`T75xxTxO7Jb1P=;^7gn9THOsK$DV8Q}?2_`JU7hu93_#8}Fg3rK&z3?fRun#@~ z6ZXS4m~a3-1``g#M_|Gs_z+Au3?G0AN8o)h;W~H^Ot>E21ru(7cff?B@HWhZ`?h^- Gsr)BtdKGd2 diff --git a/gestao_raul/Lib/site-packages/pip/_vendor/chardet/__pycache__/macromanprober.cpython-310.pyc b/gestao_raul/Lib/site-packages/pip/_vendor/chardet/__pycache__/macromanprober.cpython-310.pyc deleted file mode 100644 index 1da296e541d138f8cf6a09bab658ab3dbbad43db..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4703 zcmd^BTaO$^6|OpcnV#9X?Zx-R0Sn{|0-FaA0$C*1Y!V*qG4Xg2YAtHDr)nm%najGm zCU`ev@vtlT5h3vdlE=L84|w5c^ix70VY!n#0Ta%t-uCRScM9hvFZAd;b-LTBSHL(!ZMLAsTFkxTx#}F$=FA_Ie;gT-KkiQX9G#K#b>s>8dw%cy{qv6bUGshU+4-2y9~^U? z`S`!?PiK(~$=l97sDt?Y{KpyT+@o@&lja`-H(9tOD&g`AOjJc}mx-EmcbsrV)Z47F zxJTWn0jYbfpXk(E8}-MdJx+5xtu$YXRa@#Gs_|{9aH33Hf7EO1Sj#=?U3);pA>tA7 zi4=$gM2binFDg3k^AXyp?1a>3huY=L>Re&7V94wgyD%9>-I}QxXAGPjFqb=W@=UMc zX5_d#A16FhWLC{JW~W%W4q9;NA!&M&yGSGpIeub5)bFz{7mjdu%b~OX<_RC)TK9%X5l`bz4F8nrrPUH%YHsYjWYTtK4P4ttHi&N$OBWs%ckNZl!W&7(QN zFxPpj;iq0Q*_0{`qNqRW>nKW{8@GOt)}uk3=%|DF9(9mS(n{1-@=nwlPevN$JtY&V z-{7g6$Uzs!Vw4F+(Hrd3mzv*OUrVG))_*Dodc3|m?o5Vqq?7fYOmsYsR6H3R;;;2@ zuP1#izp)v2UXD>}eY3xLIeJBo#8_RXdkCp7595v^Pi&e3ytKKcmeAA@*-W`t;y(V$ zeEZa4mtD$@d&FhrF5|MVA*0DfT<{*(utK~e&~+P*aIP@zqC01o|?UARhH57~CC{Rg|QU1S*$EgWFqLMu}D(x>f#AOC^xKi9mw+%%=Qx zeveQ2D*MUBd!YFgOY5FPS-;_E7X#^>VmRYYUBO=lbwPU@J_fhIarZ{CO*ELg9?A&# z4rap@+(E&=Q^?jEP8Mv_;~J&3rsQz^ij3|K2a%3@N%}BOQ4?KyYuq#ivy{8hyj~v* zImoi3*t~YN-8QK~Ux(Ch-MAH9e=haWT>Olfe8I9LzTv6UD5Abfa=eq4C>Hw#=~6vr z;hhE5?Mf-`qjW+kRpJ5umJ9{%yGsuO?!)$SezW}m)1E_trHUXJH~$zJbOh6U1JHc| zrI;S{5*>(4272khCjYbf>q%PGfk^F${}01pzy74{-Fqi!)QeR4uf6 zude*+g}1hMpXs3<^JJen%I5v4Z#~;v|M_n|e0u%eXRyq^jthz$r>JIACz%X0mpQ}u zZo@GSOFcc-@c{ib9(DUdjym$Fr>Z?n{n_#_@vMZ3x6EB$g1~VbSGjSfn;e<%Dgt6h*_am<)(7N70>0Jjhl|%Q6+82H3~2`RXmSLM!!UJVbqk z2suCXs05Ot~O|#Y=jAO07O?+j)^LFH55Jd;0zmm10q5ec=+fK_?b zhlM%^r_RqhCo789Ta6Q`ueUbw?~J0F%Pvvbul}s#Dk{FzlcUKn$!>F=CY-g^=S}-d zovZC8kv5X%kBHo$SK`{p-B?{!4LbWGk*A4}>H~M4rE+j3^WXQW!6g?kAL{4JfZ+lB zVUQ00AOH@ZSpo1Lu)%=`V1o<)M%DA-!N0%;A3g;e3h+;`A%IWN%K0e5$6!MVJ^~vS z;6t#X3?G0E6?h+PsKR?-Lk<1`Hq_zoV8bH(4QyC~zk&_R@E5RQ1^x^+oPa-p4JYA` zV8bcc0~=1mAHaq)@GjVJ7Ty6H&cW}&h9}^6V8fH}HrQ|;ehW4{1#f{3UxGJbF8nv$ Iiz~JN0#30oUH||9 diff --git a/gestao_raul/Lib/site-packages/pip/_vendor/chardet/__pycache__/mbcharsetprober.cpython-310.pyc b/gestao_raul/Lib/site-packages/pip/_vendor/chardet/__pycache__/mbcharsetprober.cpython-310.pyc deleted file mode 100644 index 8c97d4ca335996c4b8f1dca1d9a7227bf3f02582..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2312 zcmZ`)-ESL35Z~SV$oXPBsq@kF0|*jDSU@9q0jh#1N&10W2PF;?Cs(VBckNtyzH|51 zK!PJ7QpywmL;To(XCuSxSi~q1OgO32b0gRCZtC^?$hW+g&h&yPu)Lp^dSMjyW~13& zIVw|fhlm*wJRu^G{)rP+L}`cA!{_hvbGacaEX44CH>*Qr@q-;dQsQfQUz z4N&72=o}VF0ecnP+mZSkmG4Of3$^uJBw2Sy$67v!+xtl->yD}3kF)L|?#kOqs--gJ z$(B_!WjuX$sEyW44{stA9bhDhs2~v&G;*YS;B}~A(iM(yJMM1;Bv1HHDv>X$Rzh#f z(Tpg`K$c|KVV8(-`7v;ke%O!Ok0A3!tDp4O`1djsxmv>qh16@kJ>&|h`xZdg`-f^C+xrF30kdI&%n6waF8BcKN>T4Xb zFPH#R#G&NQ0mp|+W?-)4jWzHR>;||DXfg9O`2}Ed0L1}P6(!Av;K>Gg_-%_FvttK! zPo1GNqQ~yg)lfW-nEDu2{nHtNX9Jj}Asazc(c!@?fDT$l_KDT4fbQq8TAi$ZU{~j0 zb>H4QKO)E8kO>AW-wpAt3&OdH_R-TCN<(i1jq5S;xI#hKSs_R-l3$@LU+h!if`sRp zJ--02F2b!(?a8GPLGE;UggO@=x$5beRUj`wiFl2px33ke@Hd9k>VBeErBbM={yJ;4>5(;sk z6qJ=M$W&$)TE^{2DWK5N4pZ9LY;LYM?=|k2xo)nx%<@5ZpNm+>rfRRqvrZyp)|RHW zb9ZaIxxU-v&AZ#1Al%;oBwL(bMcZg%T#N{KFli3EQAvQ^V!jr*I*z0d}Se9z@r_I&GrI?ecyN(^kUpR5F`o%YrIaH$6BG8rZQ>1 zZJDNU)k{xof3dA)7WCeQX;{cNFe4>Q&?G!#;dg6}H0h!}GT9PJJH~ zeqBxFToYEn zC+-~K*uS(_PW%E8CuTP$q_EbEzHhwo&dfKP%=aAx>%-6Puv0_mnW~63dYHTtqwF6sYi&fHUP}SIGwX`18HLfrxbpu!9D)Ul5@HMWnM!FCz zXk2IK(#2p=V}~uJ=Y#VayKFgK305%LMX?wACn)x*d29w3;zkEG7rtXiuZg9zl?-q0 z^Q=!fu%*^P$U8LO%QE%HDwVbd}i4t6ITFG6yO*I1~o_40LPe` zu@RdC>mveY#rBCG*dLLFf(le$kqghZTAjHnrOTiwGSC&t3a5F&$L+|NJ5b>|m2ASRspMm)xhdt&M_L+j}UQ>&=>D3QX)YrM!Si51HRVu zr7emH<+4UdGEQv^fjQrQ=-mhE(KXMtE4TGx%xJ?};R*S0`cg z8nhR^Nix|WZ|OMB_(lX{6VrSn?MGs$W@nnq`s5v7gxr)sVhvmaTZV6k(L^_0|SzIuMJwo0TA)CJ8Y8Ir`e%^kl50rjcZA2M^My|r^sasJ< zrNVu1m%)T;W({4!I?`^gN~aHZVp@T2vRqR2K~LvO<7y0~8%^M5lv~wzq)o>~DyI3k zw1`G!E3|@AMPBoAzfw|1^20Ks#FXB!ukJ?~QkqM5lpTcqGNQ$H#3&JEKn;j=ihOXZ h4Ct{@<;~TtJD}>8wY$?E-c$boS{3i2hyQ<;&EFQLK7jxL diff --git a/gestao_raul/Lib/site-packages/pip/_vendor/chardet/__pycache__/mbcssm.cpython-310.pyc b/gestao_raul/Lib/site-packages/pip/_vendor/chardet/__pycache__/mbcssm.cpython-310.pyc deleted file mode 100644 index 96e22786a3048697c8cd3439780c0f7f68468ea8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 20935 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 diff --git a/gestao_raul/Lib/site-packages/pip/_vendor/chardet/__pycache__/resultdict.cpython-310.pyc b/gestao_raul/Lib/site-packages/pip/_vendor/chardet/__pycache__/resultdict.cpython-310.pyc deleted file mode 100644 index 83ed27c55afc2978bd64999407c19415a4f41134..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 575 zcmY*X&2H2%5FY2RVYRF7p_lRoInceM6{@tYN>#KV+C30OvP?V;5s4ja2eje{PrzI7 zO1^U94G<^BSs}_u^FNyT#$&x$%z)_guU+$v0sIKgLrTawC$?)65+v)OXC>>SGGc(t zJf>JgvAB#GT!D;b@)cx)@t3$vWO@sj9(0lYqz+I-esTBa)g|9NzueqhZ?Am*a&WCy zqAQqxbhjT+UbMBVL-9k3$vG#sXCx3xCZUXWfH5YgG(@sBU`9G3{Wlh`3Cb-Lsh_<@ zJ9aK~_BpCr%T_ghR%>=*6Z%C-)l45EHdxNJ4F!-{`ICAC@A?}U-)R%Y5u(q3o7-lQ}y+|%ZhF=shjvMIVP wGM~BqKx>;QpbGF!xbBqpNoes8@4;G9+UM)T13aVe0XB4BLK4l>lPJ&r0LsIW@c;k- diff --git a/gestao_raul/Lib/site-packages/pip/_vendor/chardet/__pycache__/sbcharsetprober.cpython-310.pyc b/gestao_raul/Lib/site-packages/pip/_vendor/chardet/__pycache__/sbcharsetprober.cpython-310.pyc deleted file mode 100644 index 3427423f93307dafac4880e00781e2e5d0021220..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3681 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 S1hd!s$b)z+Lr28lg7H74z<*Q# diff --git a/gestao_raul/Lib/site-packages/pip/_vendor/chardet/__pycache__/universaldetector.cpython-310.pyc b/gestao_raul/Lib/site-packages/pip/_vendor/chardet/__pycache__/universaldetector.cpython-310.pyc deleted file mode 100644 index c37e52cad7115bb7ce7adbc01f1d8c1d10691955..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7126 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 diff --git a/gestao_raul/Lib/site-packages/pip/_vendor/chardet/__pycache__/utf1632prober.cpython-310.pyc b/gestao_raul/Lib/site-packages/pip/_vendor/chardet/__pycache__/utf1632prober.cpython-310.pyc deleted file mode 100644 index 77ce64a2df83d917eb38d699e95438951f3470e4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6098 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 ZtJ#BMS?!+v-t^pE|6on+IbM6;{Q*JHjYR+e diff --git a/gestao_raul/Lib/site-packages/pip/_vendor/chardet/big5freq.py b/gestao_raul/Lib/site-packages/pip/_vendor/chardet/big5freq.py deleted file mode 100644 index 87d9f97..0000000 --- a/gestao_raul/Lib/site-packages/pip/_vendor/chardet/big5freq.py +++ /dev/null @@ -1,386 +0,0 @@ -######################## 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 ######################### - -# Big5 frequency table -# by Taiwan's Mandarin Promotion Council -# -# -# 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 -# fmt: off -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 -) -# fmt: on diff --git a/gestao_raul/Lib/site-packages/pip/_vendor/chardet/big5prober.py b/gestao_raul/Lib/site-packages/pip/_vendor/chardet/big5prober.py deleted file mode 100644 index ef09c60..0000000 --- a/gestao_raul/Lib/site-packages/pip/_vendor/chardet/big5prober.py +++ /dev/null @@ -1,47 +0,0 @@ -######################## 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 .chardistribution import Big5DistributionAnalysis -from .codingstatemachine import CodingStateMachine -from .mbcharsetprober import MultiByteCharSetProber -from .mbcssm import BIG5_SM_MODEL - - -class Big5Prober(MultiByteCharSetProber): - def __init__(self) -> None: - super().__init__() - self.coding_sm = CodingStateMachine(BIG5_SM_MODEL) - self.distribution_analyzer = Big5DistributionAnalysis() - self.reset() - - @property - def charset_name(self) -> str: - return "Big5" - - @property - def language(self) -> str: - return "Chinese" diff --git a/gestao_raul/Lib/site-packages/pip/_vendor/chardet/chardistribution.py b/gestao_raul/Lib/site-packages/pip/_vendor/chardet/chardistribution.py deleted file mode 100644 index 176cb99..0000000 --- a/gestao_raul/Lib/site-packages/pip/_vendor/chardet/chardistribution.py +++ /dev/null @@ -1,261 +0,0 @@ -######################## 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 typing import Tuple, Union - -from .big5freq import ( - BIG5_CHAR_TO_FREQ_ORDER, - BIG5_TABLE_SIZE, - BIG5_TYPICAL_DISTRIBUTION_RATIO, -) -from .euckrfreq import ( - EUCKR_CHAR_TO_FREQ_ORDER, - EUCKR_TABLE_SIZE, - EUCKR_TYPICAL_DISTRIBUTION_RATIO, -) -from .euctwfreq import ( - EUCTW_CHAR_TO_FREQ_ORDER, - EUCTW_TABLE_SIZE, - EUCTW_TYPICAL_DISTRIBUTION_RATIO, -) -from .gb2312freq import ( - GB2312_CHAR_TO_FREQ_ORDER, - GB2312_TABLE_SIZE, - GB2312_TYPICAL_DISTRIBUTION_RATIO, -) -from .jisfreq import ( - JIS_CHAR_TO_FREQ_ORDER, - JIS_TABLE_SIZE, - JIS_TYPICAL_DISTRIBUTION_RATIO, -) -from .johabfreq import JOHAB_TO_EUCKR_ORDER_TABLE - - -class CharDistributionAnalysis: - ENOUGH_DATA_THRESHOLD = 1024 - SURE_YES = 0.99 - SURE_NO = 0.01 - MINIMUM_DATA_THRESHOLD = 3 - - def __init__(self) -> None: - # Mapping table to get frequency order from char order (get from - # GetOrder()) - self._char_to_freq_order: Tuple[int, ...] = tuple() - self._table_size = 0 # 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 = 0.0 - self._done = False - self._total_chars = 0 - self._freq_chars = 0 - self.reset() - - def reset(self) -> None: - """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: Union[bytes, bytearray], char_len: int) -> None: - """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) -> float: - """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) -> bool: - # 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, _: Union[bytes, bytearray]) -> int: - # 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) -> None: - super().__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: Union[bytes, bytearray]) -> int: - # 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 - return -1 - - -class EUCKRDistributionAnalysis(CharDistributionAnalysis): - def __init__(self) -> None: - super().__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: Union[bytes, bytearray]) -> int: - # 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 - return -1 - - -class JOHABDistributionAnalysis(CharDistributionAnalysis): - def __init__(self) -> None: - super().__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: Union[bytes, bytearray]) -> int: - first_char = byte_str[0] - if 0x88 <= first_char < 0xD4: - code = first_char * 256 + byte_str[1] - return JOHAB_TO_EUCKR_ORDER_TABLE.get(code, -1) - return -1 - - -class GB2312DistributionAnalysis(CharDistributionAnalysis): - def __init__(self) -> None: - super().__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: Union[bytes, bytearray]) -> int: - # 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 - return -1 - - -class Big5DistributionAnalysis(CharDistributionAnalysis): - def __init__(self) -> None: - super().__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: Union[bytes, bytearray]) -> int: - # 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 - return 157 * (first_char - 0xA4) + second_char - 0x40 - return -1 - - -class SJISDistributionAnalysis(CharDistributionAnalysis): - def __init__(self) -> None: - super().__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: Union[bytes, bytearray]) -> int: - # 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 0x81 <= first_char <= 0x9F: - order = 188 * (first_char - 0x81) - elif 0xE0 <= 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) -> None: - super().__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: Union[bytes, bytearray]) -> int: - # 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 - return -1 diff --git a/gestao_raul/Lib/site-packages/pip/_vendor/chardet/charsetgroupprober.py b/gestao_raul/Lib/site-packages/pip/_vendor/chardet/charsetgroupprober.py deleted file mode 100644 index 6def56b..0000000 --- a/gestao_raul/Lib/site-packages/pip/_vendor/chardet/charsetgroupprober.py +++ /dev/null @@ -1,106 +0,0 @@ -######################## 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 typing import List, Optional, Union - -from .charsetprober import CharSetProber -from .enums import LanguageFilter, ProbingState - - -class CharSetGroupProber(CharSetProber): - def __init__(self, lang_filter: LanguageFilter = LanguageFilter.NONE) -> None: - super().__init__(lang_filter=lang_filter) - self._active_num = 0 - self.probers: List[CharSetProber] = [] - self._best_guess_prober: Optional[CharSetProber] = None - - def reset(self) -> None: - super().reset() - self._active_num = 0 - for prober in self.probers: - prober.reset() - prober.active = True - self._active_num += 1 - self._best_guess_prober = None - - @property - def charset_name(self) -> Optional[str]: - 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) -> Optional[str]: - 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: Union[bytes, bytearray]) -> ProbingState: - for prober in self.probers: - 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 - if 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) -> float: - state = self.state - if state == ProbingState.FOUND_IT: - return 0.99 - if state == ProbingState.NOT_ME: - return 0.01 - best_conf = 0.0 - self._best_guess_prober = None - for prober in self.probers: - 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/gestao_raul/Lib/site-packages/pip/_vendor/chardet/charsetprober.py b/gestao_raul/Lib/site-packages/pip/_vendor/chardet/charsetprober.py deleted file mode 100644 index a103ca1..0000000 --- a/gestao_raul/Lib/site-packages/pip/_vendor/chardet/charsetprober.py +++ /dev/null @@ -1,147 +0,0 @@ -######################## 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 typing import Optional, Union - -from .enums import LanguageFilter, ProbingState - -INTERNATIONAL_WORDS_PATTERN = re.compile( - b"[a-zA-Z]*[\x80-\xFF]+[a-zA-Z]*[^a-zA-Z\x80-\xFF]?" -) - - -class CharSetProber: - - SHORTCUT_THRESHOLD = 0.95 - - def __init__(self, lang_filter: LanguageFilter = LanguageFilter.NONE) -> None: - self._state = ProbingState.DETECTING - self.active = True - self.lang_filter = lang_filter - self.logger = logging.getLogger(__name__) - - def reset(self) -> None: - self._state = ProbingState.DETECTING - - @property - def charset_name(self) -> Optional[str]: - return None - - @property - def language(self) -> Optional[str]: - raise NotImplementedError - - def feed(self, byte_str: Union[bytes, bytearray]) -> ProbingState: - raise NotImplementedError - - @property - def state(self) -> ProbingState: - return self._state - - def get_confidence(self) -> float: - return 0.0 - - @staticmethod - def filter_high_byte_only(buf: Union[bytes, bytearray]) -> bytes: - buf = re.sub(b"([\x00-\x7F])+", b" ", buf) - return buf - - @staticmethod - def filter_international_words(buf: Union[bytes, bytearray]) -> bytearray: - """ - 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 = INTERNATIONAL_WORDS_PATTERN.findall(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 remove_xml_tags(buf: Union[bytes, bytearray]) -> bytes: - """ - Returns a copy of ``buf`` that retains only the sequences of English - alphabet and high byte characters that are not between <> characters. - 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 - buf = memoryview(buf).cast("c") - - for curr, buf_char in enumerate(buf): - # Check if we're coming out of or entering an XML tag - - # https://github.com/python/typeshed/issues/8182 - if buf_char == b">": # type: ignore[comparison-overlap] - prev = curr + 1 - in_tag = False - # https://github.com/python/typeshed/issues/8182 - elif buf_char == b"<": # type: ignore[comparison-overlap] - 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" ") - in_tag = True - - # 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/gestao_raul/Lib/site-packages/pip/_vendor/chardet/cli/__pycache__/__init__.cpython-310.pyc b/gestao_raul/Lib/site-packages/pip/_vendor/chardet/cli/__pycache__/__init__.cpython-310.pyc deleted file mode 100644 index 0c1e458eaa5a4bfff5707239b35e870877682fd5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 195 zcmd1j<>g`kg6bck=^*+sh(HF6K#l_t7qb9~6oz01O-8?!3`HPe1o11)*(xTqIJKxa zraU#LBtOO_Ke;qFHLs*NCOx&dBr!j}D6upLh3%7>6jPj8lB!#fn4FymR25T@S)d3UT{nmzfTWrCa zkEzJy2x%te4Gw37NYVX9qAf6XJ>Z)X9_+*fD2i(NRQu92M zJXd^}E6ICFD)}fj1I^=1a3x2%GAP2$KqiU{X=K+(xLwxGMUwS(6#e1LcsNRBvl&Gk zp6k3jh*crTbv~3%Ck}GZp>XEpmRn6eNiva7bp6&xw?Bf38SrkN^%4PRNPe?%`$GIe zL6gV2n0cB#3CuU)C0yZVtXl!^-2b%s8 zI^)etf}D|4Huvs&Uu>QFhRpqEpk*{xBBgzeB+5yF@q6%ZgF}chdc1?)NgR5prl%yhJnYw~5>P<3Z&q+V5vu5R*u=y7{-8_2aZg`9>^;;K7uMQ`y9+;UaX z{|a7{^G7bGd?Eoi_#H38dU0h9b~rU?>YE?15|HNLILw7q8JADT$w{2b%;=9-?)HXj z@WaDSo~MV0PP9f85|s^?j+@aYpKbpPIyQO@y4hM2A*7@pr=}Jt%t2d0f5uA1Q_Ff% z3d;mAhxNN@t|g|f6E3R?2rFbxwT7KLoQy3)&#E0*`n#vD!t1|-JI#Y98c=gEk*UcK z?&jU`5N$l@OKsx3t>STdX?#EF9O%Tz`Y7%m#~^huN=7#TiNGJ~#)5Wkbkk%xhPXCH zQ@c^*r^9eN@4XAB>ubDV6#yc+wK%xi?pzbK>6Hz|%0fV?7ii(KD+F5BauL6H>xD~co z*%Vu1+mr!;R9q?K&cnI)oSf1*J*oie-#abMOXtyZPyNxXiMQaCs@OTB#4~GVeGYp^ z8z8v}ZA-j;#-0)4J#C720L52l-?_Z_6YzTq?BC6YL!^2P4+m?D5IFV+$U({ukmUiV zu>#(|j8k+@lOsbSbS^&L19s*KV0$FHNiUINQ9qVv)$yzXyq8b_#JvwGwFe2Tr@DdK z|9Y$W#o-}OG#_iwlVlol5N?6rH68GaJFL)&+nas*`2VeK1>BZ}?KN1D+7qxEza*6Rf)&GsI?k)ke955z+^@HUHbXUmJhtaAMW;Q4+{b2#bOaFV(X-Ry6l z=VM3(;J|T~VL@2=8vrw)tip9pWIAo|2f!Jc-+BD-e*G>tlLV@LT#&rWHkVVplg8O` zk)3F7(uXR%a06J~_kU%iylNj8EzTLx1tX`mA$K?n@%aH!z;ujpXU)#1J z!~iM~(AmbP3nV z=-8O4^+y;>8^F&2$U2UB&6PGNf>UGaJ@=8*q8tfnOL~qriw-HwvSFNLO&IAvL&qwV z20t>N5(*TCEqKAoIHM%^p;&k0mn^7~;8j$LD9Ta7Snz^^-R{>NaW*+ilbj z|2HLP;k|n`f=(*8+am9_+v5sHTf1r%M4E*TDwO@s|BQWzPMc#ZB diff --git a/gestao_raul/Lib/site-packages/pip/_vendor/chardet/cli/chardetect.py b/gestao_raul/Lib/site-packages/pip/_vendor/chardet/cli/chardetect.py deleted file mode 100644 index 43f6e14..0000000 --- a/gestao_raul/Lib/site-packages/pip/_vendor/chardet/cli/chardetect.py +++ /dev/null @@ -1,112 +0,0 @@ -""" -Script which takes one or more file paths and reports on their detected -encodings - -Example:: - - % chardetect somefile someotherfile - somefile: windows-1252 with confidence 0.5 - someotherfile: ascii with confidence 1.0 - -If no paths are provided, it takes its input from stdin. - -""" - - -import argparse -import sys -from typing import Iterable, List, Optional - -from .. import __version__ -from ..universaldetector import UniversalDetector - - -def description_of( - lines: Iterable[bytes], - name: str = "stdin", - minimal: bool = False, - should_rename_legacy: bool = False, -) -> Optional[str]: - """ - Return a string describing the probable encoding of a file or - list of strings. - - :param lines: The lines to get the encoding of. - :type lines: Iterable of bytes - :param name: Name of file or collection of lines - :type name: str - :param should_rename_legacy: Should we rename legacy encodings to - their more modern equivalents? - :type should_rename_legacy: ``bool`` - """ - u = UniversalDetector(should_rename_legacy=should_rename_legacy) - for line in lines: - line = bytearray(line) - u.feed(line) - # shortcut out of the loop to save reading further - particularly useful if we read a BOM. - if u.done: - break - u.close() - result = u.result - if minimal: - return result["encoding"] - if result["encoding"]: - return f'{name}: {result["encoding"]} with confidence {result["confidence"]}' - return f"{name}: no result" - - -def main(argv: Optional[List[str]] = None) -> None: - """ - Handles command line arguments and gets things started. - - :param argv: List of arguments, as if specified on the command-line. - If None, ``sys.argv[1:]`` is used instead. - :type argv: list of str - """ - # Get command line arguments - parser = argparse.ArgumentParser( - description=( - "Takes one or more file paths and reports their detected encodings" - ) - ) - parser.add_argument( - "input", - help="File whose encoding we would like to determine. (default: stdin)", - type=argparse.FileType("rb"), - nargs="*", - default=[sys.stdin.buffer], - ) - parser.add_argument( - "--minimal", - help="Print only the encoding to standard output", - action="store_true", - ) - parser.add_argument( - "-l", - "--legacy", - help="Rename legacy encodings to more modern ones.", - action="store_true", - ) - parser.add_argument( - "--version", action="version", version=f"%(prog)s {__version__}" - ) - args = parser.parse_args(argv) - - for f in args.input: - if f.isatty(): - print( - "You are running chardetect interactively. Press " - "CTRL-D twice at the start of a blank line to signal the " - "end of your input. If you want help, run chardetect " - "--help\n", - file=sys.stderr, - ) - print( - description_of( - f, f.name, minimal=args.minimal, should_rename_legacy=args.legacy - ) - ) - - -if __name__ == "__main__": - main() diff --git a/gestao_raul/Lib/site-packages/pip/_vendor/chardet/codingstatemachine.py b/gestao_raul/Lib/site-packages/pip/_vendor/chardet/codingstatemachine.py deleted file mode 100644 index 8ed4a87..0000000 --- a/gestao_raul/Lib/site-packages/pip/_vendor/chardet/codingstatemachine.py +++ /dev/null @@ -1,90 +0,0 @@ -######################## 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 ######################### - -import logging - -from .codingstatemachinedict import CodingStateMachineDict -from .enums import MachineState - - -class CodingStateMachine: - """ - A state machine to verify a byte sequence for a particular encoding. For - each byte the detector receives, it will feed that byte to every active - state machine available, one byte at a time. The state machine changes its - state based on its previous state and the byte it receives. There are 3 - states in a state machine that are of interest to an auto-detector: - - START state: This is the state to start with, or a legal byte sequence - (i.e. a valid code point) for character has been identified. - - ME state: This indicates that the state machine identified a byte sequence - that is specific to the charset it is designed for and that - there is no other possible encoding which can contain this byte - sequence. This will to lead to an immediate positive answer for - the detector. - - ERROR state: This indicates the state machine identified an illegal byte - sequence for that encoding. This will lead to an immediate - negative answer for this encoding. Detector will exclude this - encoding from consideration from here on. - """ - - def __init__(self, sm: CodingStateMachineDict) -> None: - self._model = sm - self._curr_byte_pos = 0 - self._curr_char_len = 0 - self._curr_state = MachineState.START - self.active = True - self.logger = logging.getLogger(__name__) - self.reset() - - def reset(self) -> None: - self._curr_state = MachineState.START - - def next_state(self, c: int) -> int: - # for each byte we get its class - # if it is first byte, we also get byte length - byte_class = self._model["class_table"][c] - if self._curr_state == MachineState.START: - self._curr_byte_pos = 0 - self._curr_char_len = self._model["char_len_table"][byte_class] - # from byte's class and state_table, we get its next state - curr_state = self._curr_state * self._model["class_factor"] + byte_class - self._curr_state = self._model["state_table"][curr_state] - self._curr_byte_pos += 1 - return self._curr_state - - def get_current_charlen(self) -> int: - return self._curr_char_len - - def get_coding_state_machine(self) -> str: - return self._model["name"] - - @property - def language(self) -> str: - return self._model["language"] diff --git a/gestao_raul/Lib/site-packages/pip/_vendor/chardet/codingstatemachinedict.py b/gestao_raul/Lib/site-packages/pip/_vendor/chardet/codingstatemachinedict.py deleted file mode 100644 index 7a3c4c7..0000000 --- a/gestao_raul/Lib/site-packages/pip/_vendor/chardet/codingstatemachinedict.py +++ /dev/null @@ -1,19 +0,0 @@ -from typing import TYPE_CHECKING, Tuple - -if TYPE_CHECKING: - # TypedDict was introduced in Python 3.8. - # - # TODO: Remove the else block and TYPE_CHECKING check when dropping support - # for Python 3.7. - from typing import TypedDict - - class CodingStateMachineDict(TypedDict, total=False): - class_table: Tuple[int, ...] - class_factor: int - state_table: Tuple[int, ...] - char_len_table: Tuple[int, ...] - name: str - language: str # Optional key - -else: - CodingStateMachineDict = dict diff --git a/gestao_raul/Lib/site-packages/pip/_vendor/chardet/cp949prober.py b/gestao_raul/Lib/site-packages/pip/_vendor/chardet/cp949prober.py deleted file mode 100644 index fa7307e..0000000 --- a/gestao_raul/Lib/site-packages/pip/_vendor/chardet/cp949prober.py +++ /dev/null @@ -1,49 +0,0 @@ -######################## 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 .chardistribution import EUCKRDistributionAnalysis -from .codingstatemachine import CodingStateMachine -from .mbcharsetprober import MultiByteCharSetProber -from .mbcssm import CP949_SM_MODEL - - -class CP949Prober(MultiByteCharSetProber): - def __init__(self) -> None: - super().__init__() - self.coding_sm = CodingStateMachine(CP949_SM_MODEL) - # NOTE: CP949 is a superset of EUC-KR, so the distribution should be - # not different. - self.distribution_analyzer = EUCKRDistributionAnalysis() - self.reset() - - @property - def charset_name(self) -> str: - return "CP949" - - @property - def language(self) -> str: - return "Korean" diff --git a/gestao_raul/Lib/site-packages/pip/_vendor/chardet/enums.py b/gestao_raul/Lib/site-packages/pip/_vendor/chardet/enums.py deleted file mode 100644 index 5e3e198..0000000 --- a/gestao_raul/Lib/site-packages/pip/_vendor/chardet/enums.py +++ /dev/null @@ -1,85 +0,0 @@ -""" -All of the Enums that are used throughout the chardet package. - -:author: Dan Blanchard (dan.blanchard@gmail.com) -""" - -from enum import Enum, Flag - - -class InputState: - """ - This enum represents the different states a universal detector can be in. - """ - - PURE_ASCII = 0 - ESC_ASCII = 1 - HIGH_BYTE = 2 - - -class LanguageFilter(Flag): - """ - This enum represents the different language filters we can apply to a - ``UniversalDetector``. - """ - - NONE = 0x00 - CHINESE_SIMPLIFIED = 0x01 - CHINESE_TRADITIONAL = 0x02 - JAPANESE = 0x04 - KOREAN = 0x08 - NON_CJK = 0x10 - ALL = 0x1F - CHINESE = CHINESE_SIMPLIFIED | CHINESE_TRADITIONAL - CJK = CHINESE | JAPANESE | KOREAN - - -class ProbingState(Enum): - """ - This enum represents the different states a prober can be in. - """ - - DETECTING = 0 - FOUND_IT = 1 - NOT_ME = 2 - - -class MachineState: - """ - This enum represents the different states a state machine can be in. - """ - - START = 0 - ERROR = 1 - ITS_ME = 2 - - -class SequenceLikelihood: - """ - This enum represents the likelihood of a character following the previous one. - """ - - NEGATIVE = 0 - UNLIKELY = 1 - LIKELY = 2 - POSITIVE = 3 - - @classmethod - def get_num_categories(cls) -> int: - """:returns: The number of likelihood categories in the enum.""" - return 4 - - -class CharacterCategory: - """ - This enum represents the different categories language models for - ``SingleByteCharsetProber`` put characters into. - - Anything less than CONTROL is considered a letter. - """ - - UNDEFINED = 255 - LINE_BREAK = 254 - SYMBOL = 253 - DIGIT = 252 - CONTROL = 251 diff --git a/gestao_raul/Lib/site-packages/pip/_vendor/chardet/escprober.py b/gestao_raul/Lib/site-packages/pip/_vendor/chardet/escprober.py deleted file mode 100644 index fd71383..0000000 --- a/gestao_raul/Lib/site-packages/pip/_vendor/chardet/escprober.py +++ /dev/null @@ -1,102 +0,0 @@ -######################## 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 typing import Optional, Union - -from .charsetprober import CharSetProber -from .codingstatemachine import CodingStateMachine -from .enums import LanguageFilter, MachineState, ProbingState -from .escsm import ( - HZ_SM_MODEL, - ISO2022CN_SM_MODEL, - ISO2022JP_SM_MODEL, - ISO2022KR_SM_MODEL, -) - - -class EscCharSetProber(CharSetProber): - """ - This CharSetProber uses a "code scheme" approach for detecting encodings, - whereby easily recognizable escape or shift sequences are relied on to - identify these encodings. - """ - - def __init__(self, lang_filter: LanguageFilter = LanguageFilter.NONE) -> None: - super().__init__(lang_filter=lang_filter) - self.coding_sm = [] - if self.lang_filter & LanguageFilter.CHINESE_SIMPLIFIED: - self.coding_sm.append(CodingStateMachine(HZ_SM_MODEL)) - self.coding_sm.append(CodingStateMachine(ISO2022CN_SM_MODEL)) - if self.lang_filter & LanguageFilter.JAPANESE: - self.coding_sm.append(CodingStateMachine(ISO2022JP_SM_MODEL)) - if self.lang_filter & LanguageFilter.KOREAN: - self.coding_sm.append(CodingStateMachine(ISO2022KR_SM_MODEL)) - self.active_sm_count = 0 - self._detected_charset: Optional[str] = None - self._detected_language: Optional[str] = None - self._state = ProbingState.DETECTING - self.reset() - - def reset(self) -> None: - super().reset() - for coding_sm in self.coding_sm: - coding_sm.active = True - coding_sm.reset() - self.active_sm_count = len(self.coding_sm) - self._detected_charset = None - self._detected_language = None - - @property - def charset_name(self) -> Optional[str]: - return self._detected_charset - - @property - def language(self) -> Optional[str]: - return self._detected_language - - def get_confidence(self) -> float: - return 0.99 if self._detected_charset else 0.00 - - def feed(self, byte_str: Union[bytes, bytearray]) -> ProbingState: - for c in byte_str: - for coding_sm in self.coding_sm: - if not coding_sm.active: - continue - coding_state = coding_sm.next_state(c) - if coding_state == MachineState.ERROR: - coding_sm.active = False - self.active_sm_count -= 1 - if self.active_sm_count <= 0: - self._state = ProbingState.NOT_ME - return self.state - elif coding_state == MachineState.ITS_ME: - self._state = ProbingState.FOUND_IT - self._detected_charset = coding_sm.get_coding_state_machine() - self._detected_language = coding_sm.language - return self.state - - return self.state diff --git a/gestao_raul/Lib/site-packages/pip/_vendor/chardet/escsm.py b/gestao_raul/Lib/site-packages/pip/_vendor/chardet/escsm.py deleted file mode 100644 index 11d4adf..0000000 --- a/gestao_raul/Lib/site-packages/pip/_vendor/chardet/escsm.py +++ /dev/null @@ -1,261 +0,0 @@ -######################## 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 .codingstatemachinedict import CodingStateMachineDict -from .enums import MachineState - -# fmt: off -HZ_CLS = ( - 1, 0, 0, 0, 0, 0, 0, 0, # 00 - 07 - 0, 0, 0, 0, 0, 0, 0, 0, # 08 - 0f - 0, 0, 0, 0, 0, 0, 0, 0, # 10 - 17 - 0, 0, 0, 1, 0, 0, 0, 0, # 18 - 1f - 0, 0, 0, 0, 0, 0, 0, 0, # 20 - 27 - 0, 0, 0, 0, 0, 0, 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, 4, 0, 5, 2, 0, # 78 - 7f - 1, 1, 1, 1, 1, 1, 1, 1, # 80 - 87 - 1, 1, 1, 1, 1, 1, 1, 1, # 88 - 8f - 1, 1, 1, 1, 1, 1, 1, 1, # 90 - 97 - 1, 1, 1, 1, 1, 1, 1, 1, # 98 - 9f - 1, 1, 1, 1, 1, 1, 1, 1, # a0 - a7 - 1, 1, 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, 1, 1, 1, 1, 1, 1, # c0 - c7 - 1, 1, 1, 1, 1, 1, 1, 1, # c8 - cf - 1, 1, 1, 1, 1, 1, 1, 1, # d0 - d7 - 1, 1, 1, 1, 1, 1, 1, 1, # d8 - df - 1, 1, 1, 1, 1, 1, 1, 1, # e0 - e7 - 1, 1, 1, 1, 1, 1, 1, 1, # e8 - ef - 1, 1, 1, 1, 1, 1, 1, 1, # f0 - f7 - 1, 1, 1, 1, 1, 1, 1, 1, # f8 - ff -) - -HZ_ST = ( -MachineState.START, MachineState.ERROR, 3, MachineState.START, MachineState.START, MachineState.START, 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, 4, MachineState.ERROR, # 10-17 - 5, MachineState.ERROR, 6, MachineState.ERROR, 5, 5, 4, MachineState.ERROR, # 18-1f - 4, MachineState.ERROR, 4, 4, 4, MachineState.ERROR, 4, MachineState.ERROR, # 20-27 - 4, MachineState.ITS_ME, MachineState.START, MachineState.START, MachineState.START, MachineState.START, MachineState.START, MachineState.START, # 28-2f -) -# fmt: on - -HZ_CHAR_LEN_TABLE = (0, 0, 0, 0, 0, 0) - -HZ_SM_MODEL: CodingStateMachineDict = { - "class_table": HZ_CLS, - "class_factor": 6, - "state_table": HZ_ST, - "char_len_table": HZ_CHAR_LEN_TABLE, - "name": "HZ-GB-2312", - "language": "Chinese", -} - -# fmt: off -ISO2022CN_CLS = ( - 2, 0, 0, 0, 0, 0, 0, 0, # 00 - 07 - 0, 0, 0, 0, 0, 0, 0, 0, # 08 - 0f - 0, 0, 0, 0, 0, 0, 0, 0, # 10 - 17 - 0, 0, 0, 1, 0, 0, 0, 0, # 18 - 1f - 0, 0, 0, 0, 0, 0, 0, 0, # 20 - 27 - 0, 3, 0, 0, 0, 0, 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, 4, 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 - 2, 2, 2, 2, 2, 2, 2, 2, # 80 - 87 - 2, 2, 2, 2, 2, 2, 2, 2, # 88 - 8f - 2, 2, 2, 2, 2, 2, 2, 2, # 90 - 97 - 2, 2, 2, 2, 2, 2, 2, 2, # 98 - 9f - 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 - 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, 2, # f8 - ff -) - -ISO2022CN_ST = ( - MachineState.START, 3, MachineState.ERROR, MachineState.START, MachineState.START, MachineState.START, MachineState.START, MachineState.START, # 00-07 - MachineState.START, MachineState.ERROR, MachineState.ERROR, MachineState.ERROR, MachineState.ERROR, MachineState.ERROR, MachineState.ERROR, MachineState.ERROR, # 08-0f - MachineState.ERROR, MachineState.ERROR, MachineState.ITS_ME, MachineState.ITS_ME, MachineState.ITS_ME, MachineState.ITS_ME, MachineState.ITS_ME, MachineState.ITS_ME, # 10-17 - MachineState.ITS_ME, MachineState.ITS_ME, MachineState.ITS_ME, MachineState.ERROR, MachineState.ERROR, MachineState.ERROR, 4, MachineState.ERROR, # 18-1f - MachineState.ERROR, MachineState.ERROR, MachineState.ERROR, MachineState.ITS_ME, MachineState.ERROR, MachineState.ERROR, MachineState.ERROR, MachineState.ERROR, # 20-27 - 5, 6, MachineState.ERROR, MachineState.ERROR, MachineState.ERROR, MachineState.ERROR, MachineState.ERROR, MachineState.ERROR, # 28-2f - MachineState.ERROR, MachineState.ERROR, MachineState.ERROR, MachineState.ITS_ME, MachineState.ERROR, MachineState.ERROR, MachineState.ERROR, MachineState.ERROR, # 30-37 - MachineState.ERROR, MachineState.ERROR, MachineState.ERROR, MachineState.ERROR, MachineState.ERROR, MachineState.ITS_ME, MachineState.ERROR, MachineState.START, # 38-3f -) -# fmt: on - -ISO2022CN_CHAR_LEN_TABLE = (0, 0, 0, 0, 0, 0, 0, 0, 0) - -ISO2022CN_SM_MODEL: CodingStateMachineDict = { - "class_table": ISO2022CN_CLS, - "class_factor": 9, - "state_table": ISO2022CN_ST, - "char_len_table": ISO2022CN_CHAR_LEN_TABLE, - "name": "ISO-2022-CN", - "language": "Chinese", -} - -# fmt: off -ISO2022JP_CLS = ( - 2, 0, 0, 0, 0, 0, 0, 0, # 00 - 07 - 0, 0, 0, 0, 0, 0, 2, 2, # 08 - 0f - 0, 0, 0, 0, 0, 0, 0, 0, # 10 - 17 - 0, 0, 0, 1, 0, 0, 0, 0, # 18 - 1f - 0, 0, 0, 0, 7, 0, 0, 0, # 20 - 27 - 3, 0, 0, 0, 0, 0, 0, 0, # 28 - 2f - 0, 0, 0, 0, 0, 0, 0, 0, # 30 - 37 - 0, 0, 0, 0, 0, 0, 0, 0, # 38 - 3f - 6, 0, 4, 0, 8, 0, 0, 0, # 40 - 47 - 0, 9, 5, 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 - 2, 2, 2, 2, 2, 2, 2, 2, # 80 - 87 - 2, 2, 2, 2, 2, 2, 2, 2, # 88 - 8f - 2, 2, 2, 2, 2, 2, 2, 2, # 90 - 97 - 2, 2, 2, 2, 2, 2, 2, 2, # 98 - 9f - 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 - 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, 2, # f8 - ff -) - -ISO2022JP_ST = ( - MachineState.START, 3, MachineState.ERROR, MachineState.START, MachineState.START, MachineState.START, MachineState.START, MachineState.START, # 00-07 - MachineState.START, MachineState.START, MachineState.ERROR, MachineState.ERROR, MachineState.ERROR, MachineState.ERROR, MachineState.ERROR, MachineState.ERROR, # 08-0f - MachineState.ERROR, MachineState.ERROR, MachineState.ERROR, MachineState.ERROR, MachineState.ITS_ME, MachineState.ITS_ME, MachineState.ITS_ME, MachineState.ITS_ME, # 10-17 - MachineState.ITS_ME, MachineState.ITS_ME, MachineState.ITS_ME, MachineState.ITS_ME, MachineState.ITS_ME, MachineState.ITS_ME, MachineState.ERROR, MachineState.ERROR, # 18-1f - MachineState.ERROR, 5, MachineState.ERROR, MachineState.ERROR, MachineState.ERROR, 4, MachineState.ERROR, MachineState.ERROR, # 20-27 - MachineState.ERROR, MachineState.ERROR, MachineState.ERROR, 6, MachineState.ITS_ME, MachineState.ERROR, MachineState.ITS_ME, MachineState.ERROR, # 28-2f - MachineState.ERROR, MachineState.ERROR, MachineState.ERROR, MachineState.ERROR, MachineState.ERROR, MachineState.ERROR, MachineState.ITS_ME, MachineState.ITS_ME, # 30-37 - MachineState.ERROR, MachineState.ERROR, MachineState.ERROR, MachineState.ITS_ME, MachineState.ERROR, MachineState.ERROR, MachineState.ERROR, MachineState.ERROR, # 38-3f - MachineState.ERROR, MachineState.ERROR, MachineState.ERROR, MachineState.ERROR, MachineState.ITS_ME, MachineState.ERROR, MachineState.START, MachineState.START, # 40-47 -) -# fmt: on - -ISO2022JP_CHAR_LEN_TABLE = (0, 0, 0, 0, 0, 0, 0, 0, 0, 0) - -ISO2022JP_SM_MODEL: CodingStateMachineDict = { - "class_table": ISO2022JP_CLS, - "class_factor": 10, - "state_table": ISO2022JP_ST, - "char_len_table": ISO2022JP_CHAR_LEN_TABLE, - "name": "ISO-2022-JP", - "language": "Japanese", -} - -# fmt: off -ISO2022KR_CLS = ( - 2, 0, 0, 0, 0, 0, 0, 0, # 00 - 07 - 0, 0, 0, 0, 0, 0, 0, 0, # 08 - 0f - 0, 0, 0, 0, 0, 0, 0, 0, # 10 - 17 - 0, 0, 0, 1, 0, 0, 0, 0, # 18 - 1f - 0, 0, 0, 0, 3, 0, 0, 0, # 20 - 27 - 0, 4, 0, 0, 0, 0, 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, 5, 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 - 2, 2, 2, 2, 2, 2, 2, 2, # 80 - 87 - 2, 2, 2, 2, 2, 2, 2, 2, # 88 - 8f - 2, 2, 2, 2, 2, 2, 2, 2, # 90 - 97 - 2, 2, 2, 2, 2, 2, 2, 2, # 98 - 9f - 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 - 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, 2, # f8 - ff -) - -ISO2022KR_ST = ( - MachineState.START, 3, MachineState.ERROR, MachineState.START, MachineState.START, MachineState.START, 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.ERROR, 4, MachineState.ERROR, MachineState.ERROR, # 10-17 - MachineState.ERROR, MachineState.ERROR, MachineState.ERROR, MachineState.ERROR, 5, MachineState.ERROR, MachineState.ERROR, MachineState.ERROR, # 18-1f - MachineState.ERROR, MachineState.ERROR, MachineState.ERROR, MachineState.ITS_ME, MachineState.START, MachineState.START, MachineState.START, MachineState.START, # 20-27 -) -# fmt: on - -ISO2022KR_CHAR_LEN_TABLE = (0, 0, 0, 0, 0, 0) - -ISO2022KR_SM_MODEL: CodingStateMachineDict = { - "class_table": ISO2022KR_CLS, - "class_factor": 6, - "state_table": ISO2022KR_ST, - "char_len_table": ISO2022KR_CHAR_LEN_TABLE, - "name": "ISO-2022-KR", - "language": "Korean", -} diff --git a/gestao_raul/Lib/site-packages/pip/_vendor/chardet/eucjpprober.py b/gestao_raul/Lib/site-packages/pip/_vendor/chardet/eucjpprober.py deleted file mode 100644 index 39487f4..0000000 --- a/gestao_raul/Lib/site-packages/pip/_vendor/chardet/eucjpprober.py +++ /dev/null @@ -1,102 +0,0 @@ -######################## 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 typing import Union - -from .chardistribution import EUCJPDistributionAnalysis -from .codingstatemachine import CodingStateMachine -from .enums import MachineState, ProbingState -from .jpcntx import EUCJPContextAnalysis -from .mbcharsetprober import MultiByteCharSetProber -from .mbcssm import EUCJP_SM_MODEL - - -class EUCJPProber(MultiByteCharSetProber): - def __init__(self) -> None: - super().__init__() - self.coding_sm = CodingStateMachine(EUCJP_SM_MODEL) - self.distribution_analyzer = EUCJPDistributionAnalysis() - self.context_analyzer = EUCJPContextAnalysis() - self.reset() - - def reset(self) -> None: - super().reset() - self.context_analyzer.reset() - - @property - def charset_name(self) -> str: - return "EUC-JP" - - @property - def language(self) -> str: - return "Japanese" - - def feed(self, byte_str: Union[bytes, bytearray]) -> ProbingState: - assert self.coding_sm is not None - assert self.distribution_analyzer is not None - - for i, byte in enumerate(byte_str): - # PY3K: byte_str is a byte array, so byte is an int, not a byte - coding_state = self.coding_sm.next_state(byte) - 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 - if coding_state == MachineState.ITS_ME: - self._state = ProbingState.FOUND_IT - break - if coding_state == MachineState.START: - char_len = self.coding_sm.get_current_charlen() - if i == 0: - self._last_char[1] = byte - self.context_analyzer.feed(self._last_char, char_len) - self.distribution_analyzer.feed(self._last_char, char_len) - else: - self.context_analyzer.feed(byte_str[i - 1 : i + 1], 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) -> float: - assert self.distribution_analyzer is not None - - context_conf = self.context_analyzer.get_confidence() - distrib_conf = self.distribution_analyzer.get_confidence() - return max(context_conf, distrib_conf) diff --git a/gestao_raul/Lib/site-packages/pip/_vendor/chardet/euckrfreq.py b/gestao_raul/Lib/site-packages/pip/_vendor/chardet/euckrfreq.py deleted file mode 100644 index 7dc3b10..0000000 --- a/gestao_raul/Lib/site-packages/pip/_vendor/chardet/euckrfreq.py +++ /dev/null @@ -1,196 +0,0 @@ -######################## 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 , -# fmt: off -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 -) -# fmt: on diff --git a/gestao_raul/Lib/site-packages/pip/_vendor/chardet/euckrprober.py b/gestao_raul/Lib/site-packages/pip/_vendor/chardet/euckrprober.py deleted file mode 100644 index 1fc5de0..0000000 --- a/gestao_raul/Lib/site-packages/pip/_vendor/chardet/euckrprober.py +++ /dev/null @@ -1,47 +0,0 @@ -######################## 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 .chardistribution import EUCKRDistributionAnalysis -from .codingstatemachine import CodingStateMachine -from .mbcharsetprober import MultiByteCharSetProber -from .mbcssm import EUCKR_SM_MODEL - - -class EUCKRProber(MultiByteCharSetProber): - def __init__(self) -> None: - super().__init__() - self.coding_sm = CodingStateMachine(EUCKR_SM_MODEL) - self.distribution_analyzer = EUCKRDistributionAnalysis() - self.reset() - - @property - def charset_name(self) -> str: - return "EUC-KR" - - @property - def language(self) -> str: - return "Korean" diff --git a/gestao_raul/Lib/site-packages/pip/_vendor/chardet/euctwfreq.py b/gestao_raul/Lib/site-packages/pip/_vendor/chardet/euctwfreq.py deleted file mode 100644 index 4900ccc..0000000 --- a/gestao_raul/Lib/site-packages/pip/_vendor/chardet/euctwfreq.py +++ /dev/null @@ -1,388 +0,0 @@ -######################## 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 - -# fmt: off -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 -) -# fmt: on diff --git a/gestao_raul/Lib/site-packages/pip/_vendor/chardet/euctwprober.py b/gestao_raul/Lib/site-packages/pip/_vendor/chardet/euctwprober.py deleted file mode 100644 index a37ab18..0000000 --- a/gestao_raul/Lib/site-packages/pip/_vendor/chardet/euctwprober.py +++ /dev/null @@ -1,47 +0,0 @@ -######################## 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 .chardistribution import EUCTWDistributionAnalysis -from .codingstatemachine import CodingStateMachine -from .mbcharsetprober import MultiByteCharSetProber -from .mbcssm import EUCTW_SM_MODEL - - -class EUCTWProber(MultiByteCharSetProber): - def __init__(self) -> None: - super().__init__() - self.coding_sm = CodingStateMachine(EUCTW_SM_MODEL) - self.distribution_analyzer = EUCTWDistributionAnalysis() - self.reset() - - @property - def charset_name(self) -> str: - return "EUC-TW" - - @property - def language(self) -> str: - return "Taiwan" diff --git a/gestao_raul/Lib/site-packages/pip/_vendor/chardet/gb2312freq.py b/gestao_raul/Lib/site-packages/pip/_vendor/chardet/gb2312freq.py deleted file mode 100644 index b32bfc7..0000000 --- a/gestao_raul/Lib/site-packages/pip/_vendor/chardet/gb2312freq.py +++ /dev/null @@ -1,284 +0,0 @@ -######################## 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 - -# fmt: off -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 -) -# fmt: on diff --git a/gestao_raul/Lib/site-packages/pip/_vendor/chardet/gb2312prober.py b/gestao_raul/Lib/site-packages/pip/_vendor/chardet/gb2312prober.py deleted file mode 100644 index d423e73..0000000 --- a/gestao_raul/Lib/site-packages/pip/_vendor/chardet/gb2312prober.py +++ /dev/null @@ -1,47 +0,0 @@ -######################## 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 .chardistribution import GB2312DistributionAnalysis -from .codingstatemachine import CodingStateMachine -from .mbcharsetprober import MultiByteCharSetProber -from .mbcssm import GB2312_SM_MODEL - - -class GB2312Prober(MultiByteCharSetProber): - def __init__(self) -> None: - super().__init__() - self.coding_sm = CodingStateMachine(GB2312_SM_MODEL) - self.distribution_analyzer = GB2312DistributionAnalysis() - self.reset() - - @property - def charset_name(self) -> str: - return "GB2312" - - @property - def language(self) -> str: - return "Chinese" diff --git a/gestao_raul/Lib/site-packages/pip/_vendor/chardet/hebrewprober.py b/gestao_raul/Lib/site-packages/pip/_vendor/chardet/hebrewprober.py deleted file mode 100644 index 785d005..0000000 --- a/gestao_raul/Lib/site-packages/pip/_vendor/chardet/hebrewprober.py +++ /dev/null @@ -1,316 +0,0 @@ -######################## 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 typing import Optional, Union - -from .charsetprober import CharSetProber -from .enums import ProbingState -from .sbcharsetprober import SingleByteCharSetProber - -# 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): - SPACE = 0x20 - # 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) -> None: - super().__init__() - self._final_char_logical_score = 0 - self._final_char_visual_score = 0 - self._prev = self.SPACE - self._before_prev = self.SPACE - self._logical_prober: Optional[SingleByteCharSetProber] = None - self._visual_prober: Optional[SingleByteCharSetProber] = None - self.reset() - - def reset(self) -> None: - 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.SPACE - self._before_prev = self.SPACE - # These probers are owned by the group prober. - - def set_model_probers( - self, - logical_prober: SingleByteCharSetProber, - visual_prober: SingleByteCharSetProber, - ) -> None: - self._logical_prober = logical_prober - self._visual_prober = visual_prober - - def is_final(self, c: int) -> bool: - return c in [ - self.FINAL_KAF, - self.FINAL_MEM, - self.FINAL_NUN, - self.FINAL_PE, - self.FINAL_TSADI, - ] - - def is_non_final(self, c: int) -> bool: - # 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: Union[bytes, bytearray]) -> ProbingState: - # 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 == self.SPACE: - # We stand on a space - a word just ended - if self._before_prev != self.SPACE: - # 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 == self.SPACE) - and (self.is_final(self._prev)) - and (cur != self.SPACE) - ): - # 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) -> str: - assert self._logical_prober is not None - assert self._visual_prober is not None - - # 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) -> str: - return "Hebrew" - - @property - def state(self) -> ProbingState: - assert self._logical_prober is not None - assert self._visual_prober is not None - - # 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/gestao_raul/Lib/site-packages/pip/_vendor/chardet/jisfreq.py b/gestao_raul/Lib/site-packages/pip/_vendor/chardet/jisfreq.py deleted file mode 100644 index 3293576..0000000 --- a/gestao_raul/Lib/site-packages/pip/_vendor/chardet/jisfreq.py +++ /dev/null @@ -1,325 +0,0 @@ -######################## 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 - -# fmt: off -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 -) -# fmt: on diff --git a/gestao_raul/Lib/site-packages/pip/_vendor/chardet/johabfreq.py b/gestao_raul/Lib/site-packages/pip/_vendor/chardet/johabfreq.py deleted file mode 100644 index c129699..0000000 --- a/gestao_raul/Lib/site-packages/pip/_vendor/chardet/johabfreq.py +++ /dev/null @@ -1,2382 +0,0 @@ -######################## 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 ######################### - -# The frequency data itself is the same as euc-kr. -# This is just a mapping table to euc-kr. - -JOHAB_TO_EUCKR_ORDER_TABLE = { - 0x8861: 0, - 0x8862: 1, - 0x8865: 2, - 0x8868: 3, - 0x8869: 4, - 0x886A: 5, - 0x886B: 6, - 0x8871: 7, - 0x8873: 8, - 0x8874: 9, - 0x8875: 10, - 0x8876: 11, - 0x8877: 12, - 0x8878: 13, - 0x8879: 14, - 0x887B: 15, - 0x887C: 16, - 0x887D: 17, - 0x8881: 18, - 0x8882: 19, - 0x8885: 20, - 0x8889: 21, - 0x8891: 22, - 0x8893: 23, - 0x8895: 24, - 0x8896: 25, - 0x8897: 26, - 0x88A1: 27, - 0x88A2: 28, - 0x88A5: 29, - 0x88A9: 30, - 0x88B5: 31, - 0x88B7: 32, - 0x88C1: 33, - 0x88C5: 34, - 0x88C9: 35, - 0x88E1: 36, - 0x88E2: 37, - 0x88E5: 38, - 0x88E8: 39, - 0x88E9: 40, - 0x88EB: 41, - 0x88F1: 42, - 0x88F3: 43, - 0x88F5: 44, - 0x88F6: 45, - 0x88F7: 46, - 0x88F8: 47, - 0x88FB: 48, - 0x88FC: 49, - 0x88FD: 50, - 0x8941: 51, - 0x8945: 52, - 0x8949: 53, - 0x8951: 54, - 0x8953: 55, - 0x8955: 56, - 0x8956: 57, - 0x8957: 58, - 0x8961: 59, - 0x8962: 60, - 0x8963: 61, - 0x8965: 62, - 0x8968: 63, - 0x8969: 64, - 0x8971: 65, - 0x8973: 66, - 0x8975: 67, - 0x8976: 68, - 0x8977: 69, - 0x897B: 70, - 0x8981: 71, - 0x8985: 72, - 0x8989: 73, - 0x8993: 74, - 0x8995: 75, - 0x89A1: 76, - 0x89A2: 77, - 0x89A5: 78, - 0x89A8: 79, - 0x89A9: 80, - 0x89AB: 81, - 0x89AD: 82, - 0x89B0: 83, - 0x89B1: 84, - 0x89B3: 85, - 0x89B5: 86, - 0x89B7: 87, - 0x89B8: 88, - 0x89C1: 89, - 0x89C2: 90, - 0x89C5: 91, - 0x89C9: 92, - 0x89CB: 93, - 0x89D1: 94, - 0x89D3: 95, - 0x89D5: 96, - 0x89D7: 97, - 0x89E1: 98, - 0x89E5: 99, - 0x89E9: 100, - 0x89F3: 101, - 0x89F6: 102, - 0x89F7: 103, - 0x8A41: 104, - 0x8A42: 105, - 0x8A45: 106, - 0x8A49: 107, - 0x8A51: 108, - 0x8A53: 109, - 0x8A55: 110, - 0x8A57: 111, - 0x8A61: 112, - 0x8A65: 113, - 0x8A69: 114, - 0x8A73: 115, - 0x8A75: 116, - 0x8A81: 117, - 0x8A82: 118, - 0x8A85: 119, - 0x8A88: 120, - 0x8A89: 121, - 0x8A8A: 122, - 0x8A8B: 123, - 0x8A90: 124, - 0x8A91: 125, - 0x8A93: 126, - 0x8A95: 127, - 0x8A97: 128, - 0x8A98: 129, - 0x8AA1: 130, - 0x8AA2: 131, - 0x8AA5: 132, - 0x8AA9: 133, - 0x8AB6: 134, - 0x8AB7: 135, - 0x8AC1: 136, - 0x8AD5: 137, - 0x8AE1: 138, - 0x8AE2: 139, - 0x8AE5: 140, - 0x8AE9: 141, - 0x8AF1: 142, - 0x8AF3: 143, - 0x8AF5: 144, - 0x8B41: 145, - 0x8B45: 146, - 0x8B49: 147, - 0x8B61: 148, - 0x8B62: 149, - 0x8B65: 150, - 0x8B68: 151, - 0x8B69: 152, - 0x8B6A: 153, - 0x8B71: 154, - 0x8B73: 155, - 0x8B75: 156, - 0x8B77: 157, - 0x8B81: 158, - 0x8BA1: 159, - 0x8BA2: 160, - 0x8BA5: 161, - 0x8BA8: 162, - 0x8BA9: 163, - 0x8BAB: 164, - 0x8BB1: 165, - 0x8BB3: 166, - 0x8BB5: 167, - 0x8BB7: 168, - 0x8BB8: 169, - 0x8BBC: 170, - 0x8C61: 171, - 0x8C62: 172, - 0x8C63: 173, - 0x8C65: 174, - 0x8C69: 175, - 0x8C6B: 176, - 0x8C71: 177, - 0x8C73: 178, - 0x8C75: 179, - 0x8C76: 180, - 0x8C77: 181, - 0x8C7B: 182, - 0x8C81: 183, - 0x8C82: 184, - 0x8C85: 185, - 0x8C89: 186, - 0x8C91: 187, - 0x8C93: 188, - 0x8C95: 189, - 0x8C96: 190, - 0x8C97: 191, - 0x8CA1: 192, - 0x8CA2: 193, - 0x8CA9: 194, - 0x8CE1: 195, - 0x8CE2: 196, - 0x8CE3: 197, - 0x8CE5: 198, - 0x8CE9: 199, - 0x8CF1: 200, - 0x8CF3: 201, - 0x8CF5: 202, - 0x8CF6: 203, - 0x8CF7: 204, - 0x8D41: 205, - 0x8D42: 206, - 0x8D45: 207, - 0x8D51: 208, - 0x8D55: 209, - 0x8D57: 210, - 0x8D61: 211, - 0x8D65: 212, - 0x8D69: 213, - 0x8D75: 214, - 0x8D76: 215, - 0x8D7B: 216, - 0x8D81: 217, - 0x8DA1: 218, - 0x8DA2: 219, - 0x8DA5: 220, - 0x8DA7: 221, - 0x8DA9: 222, - 0x8DB1: 223, - 0x8DB3: 224, - 0x8DB5: 225, - 0x8DB7: 226, - 0x8DB8: 227, - 0x8DB9: 228, - 0x8DC1: 229, - 0x8DC2: 230, - 0x8DC9: 231, - 0x8DD6: 232, - 0x8DD7: 233, - 0x8DE1: 234, - 0x8DE2: 235, - 0x8DF7: 236, - 0x8E41: 237, - 0x8E45: 238, - 0x8E49: 239, - 0x8E51: 240, - 0x8E53: 241, - 0x8E57: 242, - 0x8E61: 243, - 0x8E81: 244, - 0x8E82: 245, - 0x8E85: 246, - 0x8E89: 247, - 0x8E90: 248, - 0x8E91: 249, - 0x8E93: 250, - 0x8E95: 251, - 0x8E97: 252, - 0x8E98: 253, - 0x8EA1: 254, - 0x8EA9: 255, - 0x8EB6: 256, - 0x8EB7: 257, - 0x8EC1: 258, - 0x8EC2: 259, - 0x8EC5: 260, - 0x8EC9: 261, - 0x8ED1: 262, - 0x8ED3: 263, - 0x8ED6: 264, - 0x8EE1: 265, - 0x8EE5: 266, - 0x8EE9: 267, - 0x8EF1: 268, - 0x8EF3: 269, - 0x8F41: 270, - 0x8F61: 271, - 0x8F62: 272, - 0x8F65: 273, - 0x8F67: 274, - 0x8F69: 275, - 0x8F6B: 276, - 0x8F70: 277, - 0x8F71: 278, - 0x8F73: 279, - 0x8F75: 280, - 0x8F77: 281, - 0x8F7B: 282, - 0x8FA1: 283, - 0x8FA2: 284, - 0x8FA5: 285, - 0x8FA9: 286, - 0x8FB1: 287, - 0x8FB3: 288, - 0x8FB5: 289, - 0x8FB7: 290, - 0x9061: 291, - 0x9062: 292, - 0x9063: 293, - 0x9065: 294, - 0x9068: 295, - 0x9069: 296, - 0x906A: 297, - 0x906B: 298, - 0x9071: 299, - 0x9073: 300, - 0x9075: 301, - 0x9076: 302, - 0x9077: 303, - 0x9078: 304, - 0x9079: 305, - 0x907B: 306, - 0x907D: 307, - 0x9081: 308, - 0x9082: 309, - 0x9085: 310, - 0x9089: 311, - 0x9091: 312, - 0x9093: 313, - 0x9095: 314, - 0x9096: 315, - 0x9097: 316, - 0x90A1: 317, - 0x90A2: 318, - 0x90A5: 319, - 0x90A9: 320, - 0x90B1: 321, - 0x90B7: 322, - 0x90E1: 323, - 0x90E2: 324, - 0x90E4: 325, - 0x90E5: 326, - 0x90E9: 327, - 0x90EB: 328, - 0x90EC: 329, - 0x90F1: 330, - 0x90F3: 331, - 0x90F5: 332, - 0x90F6: 333, - 0x90F7: 334, - 0x90FD: 335, - 0x9141: 336, - 0x9142: 337, - 0x9145: 338, - 0x9149: 339, - 0x9151: 340, - 0x9153: 341, - 0x9155: 342, - 0x9156: 343, - 0x9157: 344, - 0x9161: 345, - 0x9162: 346, - 0x9165: 347, - 0x9169: 348, - 0x9171: 349, - 0x9173: 350, - 0x9176: 351, - 0x9177: 352, - 0x917A: 353, - 0x9181: 354, - 0x9185: 355, - 0x91A1: 356, - 0x91A2: 357, - 0x91A5: 358, - 0x91A9: 359, - 0x91AB: 360, - 0x91B1: 361, - 0x91B3: 362, - 0x91B5: 363, - 0x91B7: 364, - 0x91BC: 365, - 0x91BD: 366, - 0x91C1: 367, - 0x91C5: 368, - 0x91C9: 369, - 0x91D6: 370, - 0x9241: 371, - 0x9245: 372, - 0x9249: 373, - 0x9251: 374, - 0x9253: 375, - 0x9255: 376, - 0x9261: 377, - 0x9262: 378, - 0x9265: 379, - 0x9269: 380, - 0x9273: 381, - 0x9275: 382, - 0x9277: 383, - 0x9281: 384, - 0x9282: 385, - 0x9285: 386, - 0x9288: 387, - 0x9289: 388, - 0x9291: 389, - 0x9293: 390, - 0x9295: 391, - 0x9297: 392, - 0x92A1: 393, - 0x92B6: 394, - 0x92C1: 395, - 0x92E1: 396, - 0x92E5: 397, - 0x92E9: 398, - 0x92F1: 399, - 0x92F3: 400, - 0x9341: 401, - 0x9342: 402, - 0x9349: 403, - 0x9351: 404, - 0x9353: 405, - 0x9357: 406, - 0x9361: 407, - 0x9362: 408, - 0x9365: 409, - 0x9369: 410, - 0x936A: 411, - 0x936B: 412, - 0x9371: 413, - 0x9373: 414, - 0x9375: 415, - 0x9377: 416, - 0x9378: 417, - 0x937C: 418, - 0x9381: 419, - 0x9385: 420, - 0x9389: 421, - 0x93A1: 422, - 0x93A2: 423, - 0x93A5: 424, - 0x93A9: 425, - 0x93AB: 426, - 0x93B1: 427, - 0x93B3: 428, - 0x93B5: 429, - 0x93B7: 430, - 0x93BC: 431, - 0x9461: 432, - 0x9462: 433, - 0x9463: 434, - 0x9465: 435, - 0x9468: 436, - 0x9469: 437, - 0x946A: 438, - 0x946B: 439, - 0x946C: 440, - 0x9470: 441, - 0x9471: 442, - 0x9473: 443, - 0x9475: 444, - 0x9476: 445, - 0x9477: 446, - 0x9478: 447, - 0x9479: 448, - 0x947D: 449, - 0x9481: 450, - 0x9482: 451, - 0x9485: 452, - 0x9489: 453, - 0x9491: 454, - 0x9493: 455, - 0x9495: 456, - 0x9496: 457, - 0x9497: 458, - 0x94A1: 459, - 0x94E1: 460, - 0x94E2: 461, - 0x94E3: 462, - 0x94E5: 463, - 0x94E8: 464, - 0x94E9: 465, - 0x94EB: 466, - 0x94EC: 467, - 0x94F1: 468, - 0x94F3: 469, - 0x94F5: 470, - 0x94F7: 471, - 0x94F9: 472, - 0x94FC: 473, - 0x9541: 474, - 0x9542: 475, - 0x9545: 476, - 0x9549: 477, - 0x9551: 478, - 0x9553: 479, - 0x9555: 480, - 0x9556: 481, - 0x9557: 482, - 0x9561: 483, - 0x9565: 484, - 0x9569: 485, - 0x9576: 486, - 0x9577: 487, - 0x9581: 488, - 0x9585: 489, - 0x95A1: 490, - 0x95A2: 491, - 0x95A5: 492, - 0x95A8: 493, - 0x95A9: 494, - 0x95AB: 495, - 0x95AD: 496, - 0x95B1: 497, - 0x95B3: 498, - 0x95B5: 499, - 0x95B7: 500, - 0x95B9: 501, - 0x95BB: 502, - 0x95C1: 503, - 0x95C5: 504, - 0x95C9: 505, - 0x95E1: 506, - 0x95F6: 507, - 0x9641: 508, - 0x9645: 509, - 0x9649: 510, - 0x9651: 511, - 0x9653: 512, - 0x9655: 513, - 0x9661: 514, - 0x9681: 515, - 0x9682: 516, - 0x9685: 517, - 0x9689: 518, - 0x9691: 519, - 0x9693: 520, - 0x9695: 521, - 0x9697: 522, - 0x96A1: 523, - 0x96B6: 524, - 0x96C1: 525, - 0x96D7: 526, - 0x96E1: 527, - 0x96E5: 528, - 0x96E9: 529, - 0x96F3: 530, - 0x96F5: 531, - 0x96F7: 532, - 0x9741: 533, - 0x9745: 534, - 0x9749: 535, - 0x9751: 536, - 0x9757: 537, - 0x9761: 538, - 0x9762: 539, - 0x9765: 540, - 0x9768: 541, - 0x9769: 542, - 0x976B: 543, - 0x9771: 544, - 0x9773: 545, - 0x9775: 546, - 0x9777: 547, - 0x9781: 548, - 0x97A1: 549, - 0x97A2: 550, - 0x97A5: 551, - 0x97A8: 552, - 0x97A9: 553, - 0x97B1: 554, - 0x97B3: 555, - 0x97B5: 556, - 0x97B6: 557, - 0x97B7: 558, - 0x97B8: 559, - 0x9861: 560, - 0x9862: 561, - 0x9865: 562, - 0x9869: 563, - 0x9871: 564, - 0x9873: 565, - 0x9875: 566, - 0x9876: 567, - 0x9877: 568, - 0x987D: 569, - 0x9881: 570, - 0x9882: 571, - 0x9885: 572, - 0x9889: 573, - 0x9891: 574, - 0x9893: 575, - 0x9895: 576, - 0x9896: 577, - 0x9897: 578, - 0x98E1: 579, - 0x98E2: 580, - 0x98E5: 581, - 0x98E9: 582, - 0x98EB: 583, - 0x98EC: 584, - 0x98F1: 585, - 0x98F3: 586, - 0x98F5: 587, - 0x98F6: 588, - 0x98F7: 589, - 0x98FD: 590, - 0x9941: 591, - 0x9942: 592, - 0x9945: 593, - 0x9949: 594, - 0x9951: 595, - 0x9953: 596, - 0x9955: 597, - 0x9956: 598, - 0x9957: 599, - 0x9961: 600, - 0x9976: 601, - 0x99A1: 602, - 0x99A2: 603, - 0x99A5: 604, - 0x99A9: 605, - 0x99B7: 606, - 0x99C1: 607, - 0x99C9: 608, - 0x99E1: 609, - 0x9A41: 610, - 0x9A45: 611, - 0x9A81: 612, - 0x9A82: 613, - 0x9A85: 614, - 0x9A89: 615, - 0x9A90: 616, - 0x9A91: 617, - 0x9A97: 618, - 0x9AC1: 619, - 0x9AE1: 620, - 0x9AE5: 621, - 0x9AE9: 622, - 0x9AF1: 623, - 0x9AF3: 624, - 0x9AF7: 625, - 0x9B61: 626, - 0x9B62: 627, - 0x9B65: 628, - 0x9B68: 629, - 0x9B69: 630, - 0x9B71: 631, - 0x9B73: 632, - 0x9B75: 633, - 0x9B81: 634, - 0x9B85: 635, - 0x9B89: 636, - 0x9B91: 637, - 0x9B93: 638, - 0x9BA1: 639, - 0x9BA5: 640, - 0x9BA9: 641, - 0x9BB1: 642, - 0x9BB3: 643, - 0x9BB5: 644, - 0x9BB7: 645, - 0x9C61: 646, - 0x9C62: 647, - 0x9C65: 648, - 0x9C69: 649, - 0x9C71: 650, - 0x9C73: 651, - 0x9C75: 652, - 0x9C76: 653, - 0x9C77: 654, - 0x9C78: 655, - 0x9C7C: 656, - 0x9C7D: 657, - 0x9C81: 658, - 0x9C82: 659, - 0x9C85: 660, - 0x9C89: 661, - 0x9C91: 662, - 0x9C93: 663, - 0x9C95: 664, - 0x9C96: 665, - 0x9C97: 666, - 0x9CA1: 667, - 0x9CA2: 668, - 0x9CA5: 669, - 0x9CB5: 670, - 0x9CB7: 671, - 0x9CE1: 672, - 0x9CE2: 673, - 0x9CE5: 674, - 0x9CE9: 675, - 0x9CF1: 676, - 0x9CF3: 677, - 0x9CF5: 678, - 0x9CF6: 679, - 0x9CF7: 680, - 0x9CFD: 681, - 0x9D41: 682, - 0x9D42: 683, - 0x9D45: 684, - 0x9D49: 685, - 0x9D51: 686, - 0x9D53: 687, - 0x9D55: 688, - 0x9D57: 689, - 0x9D61: 690, - 0x9D62: 691, - 0x9D65: 692, - 0x9D69: 693, - 0x9D71: 694, - 0x9D73: 695, - 0x9D75: 696, - 0x9D76: 697, - 0x9D77: 698, - 0x9D81: 699, - 0x9D85: 700, - 0x9D93: 701, - 0x9D95: 702, - 0x9DA1: 703, - 0x9DA2: 704, - 0x9DA5: 705, - 0x9DA9: 706, - 0x9DB1: 707, - 0x9DB3: 708, - 0x9DB5: 709, - 0x9DB7: 710, - 0x9DC1: 711, - 0x9DC5: 712, - 0x9DD7: 713, - 0x9DF6: 714, - 0x9E41: 715, - 0x9E45: 716, - 0x9E49: 717, - 0x9E51: 718, - 0x9E53: 719, - 0x9E55: 720, - 0x9E57: 721, - 0x9E61: 722, - 0x9E65: 723, - 0x9E69: 724, - 0x9E73: 725, - 0x9E75: 726, - 0x9E77: 727, - 0x9E81: 728, - 0x9E82: 729, - 0x9E85: 730, - 0x9E89: 731, - 0x9E91: 732, - 0x9E93: 733, - 0x9E95: 734, - 0x9E97: 735, - 0x9EA1: 736, - 0x9EB6: 737, - 0x9EC1: 738, - 0x9EE1: 739, - 0x9EE2: 740, - 0x9EE5: 741, - 0x9EE9: 742, - 0x9EF1: 743, - 0x9EF5: 744, - 0x9EF7: 745, - 0x9F41: 746, - 0x9F42: 747, - 0x9F45: 748, - 0x9F49: 749, - 0x9F51: 750, - 0x9F53: 751, - 0x9F55: 752, - 0x9F57: 753, - 0x9F61: 754, - 0x9F62: 755, - 0x9F65: 756, - 0x9F69: 757, - 0x9F71: 758, - 0x9F73: 759, - 0x9F75: 760, - 0x9F77: 761, - 0x9F78: 762, - 0x9F7B: 763, - 0x9F7C: 764, - 0x9FA1: 765, - 0x9FA2: 766, - 0x9FA5: 767, - 0x9FA9: 768, - 0x9FB1: 769, - 0x9FB3: 770, - 0x9FB5: 771, - 0x9FB7: 772, - 0xA061: 773, - 0xA062: 774, - 0xA065: 775, - 0xA067: 776, - 0xA068: 777, - 0xA069: 778, - 0xA06A: 779, - 0xA06B: 780, - 0xA071: 781, - 0xA073: 782, - 0xA075: 783, - 0xA077: 784, - 0xA078: 785, - 0xA07B: 786, - 0xA07D: 787, - 0xA081: 788, - 0xA082: 789, - 0xA085: 790, - 0xA089: 791, - 0xA091: 792, - 0xA093: 793, - 0xA095: 794, - 0xA096: 795, - 0xA097: 796, - 0xA098: 797, - 0xA0A1: 798, - 0xA0A2: 799, - 0xA0A9: 800, - 0xA0B7: 801, - 0xA0E1: 802, - 0xA0E2: 803, - 0xA0E5: 804, - 0xA0E9: 805, - 0xA0EB: 806, - 0xA0F1: 807, - 0xA0F3: 808, - 0xA0F5: 809, - 0xA0F7: 810, - 0xA0F8: 811, - 0xA0FD: 812, - 0xA141: 813, - 0xA142: 814, - 0xA145: 815, - 0xA149: 816, - 0xA151: 817, - 0xA153: 818, - 0xA155: 819, - 0xA156: 820, - 0xA157: 821, - 0xA161: 822, - 0xA162: 823, - 0xA165: 824, - 0xA169: 825, - 0xA175: 826, - 0xA176: 827, - 0xA177: 828, - 0xA179: 829, - 0xA181: 830, - 0xA1A1: 831, - 0xA1A2: 832, - 0xA1A4: 833, - 0xA1A5: 834, - 0xA1A9: 835, - 0xA1AB: 836, - 0xA1B1: 837, - 0xA1B3: 838, - 0xA1B5: 839, - 0xA1B7: 840, - 0xA1C1: 841, - 0xA1C5: 842, - 0xA1D6: 843, - 0xA1D7: 844, - 0xA241: 845, - 0xA245: 846, - 0xA249: 847, - 0xA253: 848, - 0xA255: 849, - 0xA257: 850, - 0xA261: 851, - 0xA265: 852, - 0xA269: 853, - 0xA273: 854, - 0xA275: 855, - 0xA281: 856, - 0xA282: 857, - 0xA283: 858, - 0xA285: 859, - 0xA288: 860, - 0xA289: 861, - 0xA28A: 862, - 0xA28B: 863, - 0xA291: 864, - 0xA293: 865, - 0xA295: 866, - 0xA297: 867, - 0xA29B: 868, - 0xA29D: 869, - 0xA2A1: 870, - 0xA2A5: 871, - 0xA2A9: 872, - 0xA2B3: 873, - 0xA2B5: 874, - 0xA2C1: 875, - 0xA2E1: 876, - 0xA2E5: 877, - 0xA2E9: 878, - 0xA341: 879, - 0xA345: 880, - 0xA349: 881, - 0xA351: 882, - 0xA355: 883, - 0xA361: 884, - 0xA365: 885, - 0xA369: 886, - 0xA371: 887, - 0xA375: 888, - 0xA3A1: 889, - 0xA3A2: 890, - 0xA3A5: 891, - 0xA3A8: 892, - 0xA3A9: 893, - 0xA3AB: 894, - 0xA3B1: 895, - 0xA3B3: 896, - 0xA3B5: 897, - 0xA3B6: 898, - 0xA3B7: 899, - 0xA3B9: 900, - 0xA3BB: 901, - 0xA461: 902, - 0xA462: 903, - 0xA463: 904, - 0xA464: 905, - 0xA465: 906, - 0xA468: 907, - 0xA469: 908, - 0xA46A: 909, - 0xA46B: 910, - 0xA46C: 911, - 0xA471: 912, - 0xA473: 913, - 0xA475: 914, - 0xA477: 915, - 0xA47B: 916, - 0xA481: 917, - 0xA482: 918, - 0xA485: 919, - 0xA489: 920, - 0xA491: 921, - 0xA493: 922, - 0xA495: 923, - 0xA496: 924, - 0xA497: 925, - 0xA49B: 926, - 0xA4A1: 927, - 0xA4A2: 928, - 0xA4A5: 929, - 0xA4B3: 930, - 0xA4E1: 931, - 0xA4E2: 932, - 0xA4E5: 933, - 0xA4E8: 934, - 0xA4E9: 935, - 0xA4EB: 936, - 0xA4F1: 937, - 0xA4F3: 938, - 0xA4F5: 939, - 0xA4F7: 940, - 0xA4F8: 941, - 0xA541: 942, - 0xA542: 943, - 0xA545: 944, - 0xA548: 945, - 0xA549: 946, - 0xA551: 947, - 0xA553: 948, - 0xA555: 949, - 0xA556: 950, - 0xA557: 951, - 0xA561: 952, - 0xA562: 953, - 0xA565: 954, - 0xA569: 955, - 0xA573: 956, - 0xA575: 957, - 0xA576: 958, - 0xA577: 959, - 0xA57B: 960, - 0xA581: 961, - 0xA585: 962, - 0xA5A1: 963, - 0xA5A2: 964, - 0xA5A3: 965, - 0xA5A5: 966, - 0xA5A9: 967, - 0xA5B1: 968, - 0xA5B3: 969, - 0xA5B5: 970, - 0xA5B7: 971, - 0xA5C1: 972, - 0xA5C5: 973, - 0xA5D6: 974, - 0xA5E1: 975, - 0xA5F6: 976, - 0xA641: 977, - 0xA642: 978, - 0xA645: 979, - 0xA649: 980, - 0xA651: 981, - 0xA653: 982, - 0xA661: 983, - 0xA665: 984, - 0xA681: 985, - 0xA682: 986, - 0xA685: 987, - 0xA688: 988, - 0xA689: 989, - 0xA68A: 990, - 0xA68B: 991, - 0xA691: 992, - 0xA693: 993, - 0xA695: 994, - 0xA697: 995, - 0xA69B: 996, - 0xA69C: 997, - 0xA6A1: 998, - 0xA6A9: 999, - 0xA6B6: 1000, - 0xA6C1: 1001, - 0xA6E1: 1002, - 0xA6E2: 1003, - 0xA6E5: 1004, - 0xA6E9: 1005, - 0xA6F7: 1006, - 0xA741: 1007, - 0xA745: 1008, - 0xA749: 1009, - 0xA751: 1010, - 0xA755: 1011, - 0xA757: 1012, - 0xA761: 1013, - 0xA762: 1014, - 0xA765: 1015, - 0xA769: 1016, - 0xA771: 1017, - 0xA773: 1018, - 0xA775: 1019, - 0xA7A1: 1020, - 0xA7A2: 1021, - 0xA7A5: 1022, - 0xA7A9: 1023, - 0xA7AB: 1024, - 0xA7B1: 1025, - 0xA7B3: 1026, - 0xA7B5: 1027, - 0xA7B7: 1028, - 0xA7B8: 1029, - 0xA7B9: 1030, - 0xA861: 1031, - 0xA862: 1032, - 0xA865: 1033, - 0xA869: 1034, - 0xA86B: 1035, - 0xA871: 1036, - 0xA873: 1037, - 0xA875: 1038, - 0xA876: 1039, - 0xA877: 1040, - 0xA87D: 1041, - 0xA881: 1042, - 0xA882: 1043, - 0xA885: 1044, - 0xA889: 1045, - 0xA891: 1046, - 0xA893: 1047, - 0xA895: 1048, - 0xA896: 1049, - 0xA897: 1050, - 0xA8A1: 1051, - 0xA8A2: 1052, - 0xA8B1: 1053, - 0xA8E1: 1054, - 0xA8E2: 1055, - 0xA8E5: 1056, - 0xA8E8: 1057, - 0xA8E9: 1058, - 0xA8F1: 1059, - 0xA8F5: 1060, - 0xA8F6: 1061, - 0xA8F7: 1062, - 0xA941: 1063, - 0xA957: 1064, - 0xA961: 1065, - 0xA962: 1066, - 0xA971: 1067, - 0xA973: 1068, - 0xA975: 1069, - 0xA976: 1070, - 0xA977: 1071, - 0xA9A1: 1072, - 0xA9A2: 1073, - 0xA9A5: 1074, - 0xA9A9: 1075, - 0xA9B1: 1076, - 0xA9B3: 1077, - 0xA9B7: 1078, - 0xAA41: 1079, - 0xAA61: 1080, - 0xAA77: 1081, - 0xAA81: 1082, - 0xAA82: 1083, - 0xAA85: 1084, - 0xAA89: 1085, - 0xAA91: 1086, - 0xAA95: 1087, - 0xAA97: 1088, - 0xAB41: 1089, - 0xAB57: 1090, - 0xAB61: 1091, - 0xAB65: 1092, - 0xAB69: 1093, - 0xAB71: 1094, - 0xAB73: 1095, - 0xABA1: 1096, - 0xABA2: 1097, - 0xABA5: 1098, - 0xABA9: 1099, - 0xABB1: 1100, - 0xABB3: 1101, - 0xABB5: 1102, - 0xABB7: 1103, - 0xAC61: 1104, - 0xAC62: 1105, - 0xAC64: 1106, - 0xAC65: 1107, - 0xAC68: 1108, - 0xAC69: 1109, - 0xAC6A: 1110, - 0xAC6B: 1111, - 0xAC71: 1112, - 0xAC73: 1113, - 0xAC75: 1114, - 0xAC76: 1115, - 0xAC77: 1116, - 0xAC7B: 1117, - 0xAC81: 1118, - 0xAC82: 1119, - 0xAC85: 1120, - 0xAC89: 1121, - 0xAC91: 1122, - 0xAC93: 1123, - 0xAC95: 1124, - 0xAC96: 1125, - 0xAC97: 1126, - 0xACA1: 1127, - 0xACA2: 1128, - 0xACA5: 1129, - 0xACA9: 1130, - 0xACB1: 1131, - 0xACB3: 1132, - 0xACB5: 1133, - 0xACB7: 1134, - 0xACC1: 1135, - 0xACC5: 1136, - 0xACC9: 1137, - 0xACD1: 1138, - 0xACD7: 1139, - 0xACE1: 1140, - 0xACE2: 1141, - 0xACE3: 1142, - 0xACE4: 1143, - 0xACE5: 1144, - 0xACE8: 1145, - 0xACE9: 1146, - 0xACEB: 1147, - 0xACEC: 1148, - 0xACF1: 1149, - 0xACF3: 1150, - 0xACF5: 1151, - 0xACF6: 1152, - 0xACF7: 1153, - 0xACFC: 1154, - 0xAD41: 1155, - 0xAD42: 1156, - 0xAD45: 1157, - 0xAD49: 1158, - 0xAD51: 1159, - 0xAD53: 1160, - 0xAD55: 1161, - 0xAD56: 1162, - 0xAD57: 1163, - 0xAD61: 1164, - 0xAD62: 1165, - 0xAD65: 1166, - 0xAD69: 1167, - 0xAD71: 1168, - 0xAD73: 1169, - 0xAD75: 1170, - 0xAD76: 1171, - 0xAD77: 1172, - 0xAD81: 1173, - 0xAD85: 1174, - 0xAD89: 1175, - 0xAD97: 1176, - 0xADA1: 1177, - 0xADA2: 1178, - 0xADA3: 1179, - 0xADA5: 1180, - 0xADA9: 1181, - 0xADAB: 1182, - 0xADB1: 1183, - 0xADB3: 1184, - 0xADB5: 1185, - 0xADB7: 1186, - 0xADBB: 1187, - 0xADC1: 1188, - 0xADC2: 1189, - 0xADC5: 1190, - 0xADC9: 1191, - 0xADD7: 1192, - 0xADE1: 1193, - 0xADE5: 1194, - 0xADE9: 1195, - 0xADF1: 1196, - 0xADF5: 1197, - 0xADF6: 1198, - 0xAE41: 1199, - 0xAE45: 1200, - 0xAE49: 1201, - 0xAE51: 1202, - 0xAE53: 1203, - 0xAE55: 1204, - 0xAE61: 1205, - 0xAE62: 1206, - 0xAE65: 1207, - 0xAE69: 1208, - 0xAE71: 1209, - 0xAE73: 1210, - 0xAE75: 1211, - 0xAE77: 1212, - 0xAE81: 1213, - 0xAE82: 1214, - 0xAE85: 1215, - 0xAE88: 1216, - 0xAE89: 1217, - 0xAE91: 1218, - 0xAE93: 1219, - 0xAE95: 1220, - 0xAE97: 1221, - 0xAE99: 1222, - 0xAE9B: 1223, - 0xAE9C: 1224, - 0xAEA1: 1225, - 0xAEB6: 1226, - 0xAEC1: 1227, - 0xAEC2: 1228, - 0xAEC5: 1229, - 0xAEC9: 1230, - 0xAED1: 1231, - 0xAED7: 1232, - 0xAEE1: 1233, - 0xAEE2: 1234, - 0xAEE5: 1235, - 0xAEE9: 1236, - 0xAEF1: 1237, - 0xAEF3: 1238, - 0xAEF5: 1239, - 0xAEF7: 1240, - 0xAF41: 1241, - 0xAF42: 1242, - 0xAF49: 1243, - 0xAF51: 1244, - 0xAF55: 1245, - 0xAF57: 1246, - 0xAF61: 1247, - 0xAF62: 1248, - 0xAF65: 1249, - 0xAF69: 1250, - 0xAF6A: 1251, - 0xAF71: 1252, - 0xAF73: 1253, - 0xAF75: 1254, - 0xAF77: 1255, - 0xAFA1: 1256, - 0xAFA2: 1257, - 0xAFA5: 1258, - 0xAFA8: 1259, - 0xAFA9: 1260, - 0xAFB0: 1261, - 0xAFB1: 1262, - 0xAFB3: 1263, - 0xAFB5: 1264, - 0xAFB7: 1265, - 0xAFBC: 1266, - 0xB061: 1267, - 0xB062: 1268, - 0xB064: 1269, - 0xB065: 1270, - 0xB069: 1271, - 0xB071: 1272, - 0xB073: 1273, - 0xB076: 1274, - 0xB077: 1275, - 0xB07D: 1276, - 0xB081: 1277, - 0xB082: 1278, - 0xB085: 1279, - 0xB089: 1280, - 0xB091: 1281, - 0xB093: 1282, - 0xB096: 1283, - 0xB097: 1284, - 0xB0B7: 1285, - 0xB0E1: 1286, - 0xB0E2: 1287, - 0xB0E5: 1288, - 0xB0E9: 1289, - 0xB0EB: 1290, - 0xB0F1: 1291, - 0xB0F3: 1292, - 0xB0F6: 1293, - 0xB0F7: 1294, - 0xB141: 1295, - 0xB145: 1296, - 0xB149: 1297, - 0xB185: 1298, - 0xB1A1: 1299, - 0xB1A2: 1300, - 0xB1A5: 1301, - 0xB1A8: 1302, - 0xB1A9: 1303, - 0xB1AB: 1304, - 0xB1B1: 1305, - 0xB1B3: 1306, - 0xB1B7: 1307, - 0xB1C1: 1308, - 0xB1C2: 1309, - 0xB1C5: 1310, - 0xB1D6: 1311, - 0xB1E1: 1312, - 0xB1F6: 1313, - 0xB241: 1314, - 0xB245: 1315, - 0xB249: 1316, - 0xB251: 1317, - 0xB253: 1318, - 0xB261: 1319, - 0xB281: 1320, - 0xB282: 1321, - 0xB285: 1322, - 0xB289: 1323, - 0xB291: 1324, - 0xB293: 1325, - 0xB297: 1326, - 0xB2A1: 1327, - 0xB2B6: 1328, - 0xB2C1: 1329, - 0xB2E1: 1330, - 0xB2E5: 1331, - 0xB357: 1332, - 0xB361: 1333, - 0xB362: 1334, - 0xB365: 1335, - 0xB369: 1336, - 0xB36B: 1337, - 0xB370: 1338, - 0xB371: 1339, - 0xB373: 1340, - 0xB381: 1341, - 0xB385: 1342, - 0xB389: 1343, - 0xB391: 1344, - 0xB3A1: 1345, - 0xB3A2: 1346, - 0xB3A5: 1347, - 0xB3A9: 1348, - 0xB3B1: 1349, - 0xB3B3: 1350, - 0xB3B5: 1351, - 0xB3B7: 1352, - 0xB461: 1353, - 0xB462: 1354, - 0xB465: 1355, - 0xB466: 1356, - 0xB467: 1357, - 0xB469: 1358, - 0xB46A: 1359, - 0xB46B: 1360, - 0xB470: 1361, - 0xB471: 1362, - 0xB473: 1363, - 0xB475: 1364, - 0xB476: 1365, - 0xB477: 1366, - 0xB47B: 1367, - 0xB47C: 1368, - 0xB481: 1369, - 0xB482: 1370, - 0xB485: 1371, - 0xB489: 1372, - 0xB491: 1373, - 0xB493: 1374, - 0xB495: 1375, - 0xB496: 1376, - 0xB497: 1377, - 0xB4A1: 1378, - 0xB4A2: 1379, - 0xB4A5: 1380, - 0xB4A9: 1381, - 0xB4AC: 1382, - 0xB4B1: 1383, - 0xB4B3: 1384, - 0xB4B5: 1385, - 0xB4B7: 1386, - 0xB4BB: 1387, - 0xB4BD: 1388, - 0xB4C1: 1389, - 0xB4C5: 1390, - 0xB4C9: 1391, - 0xB4D3: 1392, - 0xB4E1: 1393, - 0xB4E2: 1394, - 0xB4E5: 1395, - 0xB4E6: 1396, - 0xB4E8: 1397, - 0xB4E9: 1398, - 0xB4EA: 1399, - 0xB4EB: 1400, - 0xB4F1: 1401, - 0xB4F3: 1402, - 0xB4F4: 1403, - 0xB4F5: 1404, - 0xB4F6: 1405, - 0xB4F7: 1406, - 0xB4F8: 1407, - 0xB4FA: 1408, - 0xB4FC: 1409, - 0xB541: 1410, - 0xB542: 1411, - 0xB545: 1412, - 0xB549: 1413, - 0xB551: 1414, - 0xB553: 1415, - 0xB555: 1416, - 0xB557: 1417, - 0xB561: 1418, - 0xB562: 1419, - 0xB563: 1420, - 0xB565: 1421, - 0xB569: 1422, - 0xB56B: 1423, - 0xB56C: 1424, - 0xB571: 1425, - 0xB573: 1426, - 0xB574: 1427, - 0xB575: 1428, - 0xB576: 1429, - 0xB577: 1430, - 0xB57B: 1431, - 0xB57C: 1432, - 0xB57D: 1433, - 0xB581: 1434, - 0xB585: 1435, - 0xB589: 1436, - 0xB591: 1437, - 0xB593: 1438, - 0xB595: 1439, - 0xB596: 1440, - 0xB5A1: 1441, - 0xB5A2: 1442, - 0xB5A5: 1443, - 0xB5A9: 1444, - 0xB5AA: 1445, - 0xB5AB: 1446, - 0xB5AD: 1447, - 0xB5B0: 1448, - 0xB5B1: 1449, - 0xB5B3: 1450, - 0xB5B5: 1451, - 0xB5B7: 1452, - 0xB5B9: 1453, - 0xB5C1: 1454, - 0xB5C2: 1455, - 0xB5C5: 1456, - 0xB5C9: 1457, - 0xB5D1: 1458, - 0xB5D3: 1459, - 0xB5D5: 1460, - 0xB5D6: 1461, - 0xB5D7: 1462, - 0xB5E1: 1463, - 0xB5E2: 1464, - 0xB5E5: 1465, - 0xB5F1: 1466, - 0xB5F5: 1467, - 0xB5F7: 1468, - 0xB641: 1469, - 0xB642: 1470, - 0xB645: 1471, - 0xB649: 1472, - 0xB651: 1473, - 0xB653: 1474, - 0xB655: 1475, - 0xB657: 1476, - 0xB661: 1477, - 0xB662: 1478, - 0xB665: 1479, - 0xB669: 1480, - 0xB671: 1481, - 0xB673: 1482, - 0xB675: 1483, - 0xB677: 1484, - 0xB681: 1485, - 0xB682: 1486, - 0xB685: 1487, - 0xB689: 1488, - 0xB68A: 1489, - 0xB68B: 1490, - 0xB691: 1491, - 0xB693: 1492, - 0xB695: 1493, - 0xB697: 1494, - 0xB6A1: 1495, - 0xB6A2: 1496, - 0xB6A5: 1497, - 0xB6A9: 1498, - 0xB6B1: 1499, - 0xB6B3: 1500, - 0xB6B6: 1501, - 0xB6B7: 1502, - 0xB6C1: 1503, - 0xB6C2: 1504, - 0xB6C5: 1505, - 0xB6C9: 1506, - 0xB6D1: 1507, - 0xB6D3: 1508, - 0xB6D7: 1509, - 0xB6E1: 1510, - 0xB6E2: 1511, - 0xB6E5: 1512, - 0xB6E9: 1513, - 0xB6F1: 1514, - 0xB6F3: 1515, - 0xB6F5: 1516, - 0xB6F7: 1517, - 0xB741: 1518, - 0xB742: 1519, - 0xB745: 1520, - 0xB749: 1521, - 0xB751: 1522, - 0xB753: 1523, - 0xB755: 1524, - 0xB757: 1525, - 0xB759: 1526, - 0xB761: 1527, - 0xB762: 1528, - 0xB765: 1529, - 0xB769: 1530, - 0xB76F: 1531, - 0xB771: 1532, - 0xB773: 1533, - 0xB775: 1534, - 0xB777: 1535, - 0xB778: 1536, - 0xB779: 1537, - 0xB77A: 1538, - 0xB77B: 1539, - 0xB77C: 1540, - 0xB77D: 1541, - 0xB781: 1542, - 0xB785: 1543, - 0xB789: 1544, - 0xB791: 1545, - 0xB795: 1546, - 0xB7A1: 1547, - 0xB7A2: 1548, - 0xB7A5: 1549, - 0xB7A9: 1550, - 0xB7AA: 1551, - 0xB7AB: 1552, - 0xB7B0: 1553, - 0xB7B1: 1554, - 0xB7B3: 1555, - 0xB7B5: 1556, - 0xB7B6: 1557, - 0xB7B7: 1558, - 0xB7B8: 1559, - 0xB7BC: 1560, - 0xB861: 1561, - 0xB862: 1562, - 0xB865: 1563, - 0xB867: 1564, - 0xB868: 1565, - 0xB869: 1566, - 0xB86B: 1567, - 0xB871: 1568, - 0xB873: 1569, - 0xB875: 1570, - 0xB876: 1571, - 0xB877: 1572, - 0xB878: 1573, - 0xB881: 1574, - 0xB882: 1575, - 0xB885: 1576, - 0xB889: 1577, - 0xB891: 1578, - 0xB893: 1579, - 0xB895: 1580, - 0xB896: 1581, - 0xB897: 1582, - 0xB8A1: 1583, - 0xB8A2: 1584, - 0xB8A5: 1585, - 0xB8A7: 1586, - 0xB8A9: 1587, - 0xB8B1: 1588, - 0xB8B7: 1589, - 0xB8C1: 1590, - 0xB8C5: 1591, - 0xB8C9: 1592, - 0xB8E1: 1593, - 0xB8E2: 1594, - 0xB8E5: 1595, - 0xB8E9: 1596, - 0xB8EB: 1597, - 0xB8F1: 1598, - 0xB8F3: 1599, - 0xB8F5: 1600, - 0xB8F7: 1601, - 0xB8F8: 1602, - 0xB941: 1603, - 0xB942: 1604, - 0xB945: 1605, - 0xB949: 1606, - 0xB951: 1607, - 0xB953: 1608, - 0xB955: 1609, - 0xB957: 1610, - 0xB961: 1611, - 0xB965: 1612, - 0xB969: 1613, - 0xB971: 1614, - 0xB973: 1615, - 0xB976: 1616, - 0xB977: 1617, - 0xB981: 1618, - 0xB9A1: 1619, - 0xB9A2: 1620, - 0xB9A5: 1621, - 0xB9A9: 1622, - 0xB9AB: 1623, - 0xB9B1: 1624, - 0xB9B3: 1625, - 0xB9B5: 1626, - 0xB9B7: 1627, - 0xB9B8: 1628, - 0xB9B9: 1629, - 0xB9BD: 1630, - 0xB9C1: 1631, - 0xB9C2: 1632, - 0xB9C9: 1633, - 0xB9D3: 1634, - 0xB9D5: 1635, - 0xB9D7: 1636, - 0xB9E1: 1637, - 0xB9F6: 1638, - 0xB9F7: 1639, - 0xBA41: 1640, - 0xBA45: 1641, - 0xBA49: 1642, - 0xBA51: 1643, - 0xBA53: 1644, - 0xBA55: 1645, - 0xBA57: 1646, - 0xBA61: 1647, - 0xBA62: 1648, - 0xBA65: 1649, - 0xBA77: 1650, - 0xBA81: 1651, - 0xBA82: 1652, - 0xBA85: 1653, - 0xBA89: 1654, - 0xBA8A: 1655, - 0xBA8B: 1656, - 0xBA91: 1657, - 0xBA93: 1658, - 0xBA95: 1659, - 0xBA97: 1660, - 0xBAA1: 1661, - 0xBAB6: 1662, - 0xBAC1: 1663, - 0xBAE1: 1664, - 0xBAE2: 1665, - 0xBAE5: 1666, - 0xBAE9: 1667, - 0xBAF1: 1668, - 0xBAF3: 1669, - 0xBAF5: 1670, - 0xBB41: 1671, - 0xBB45: 1672, - 0xBB49: 1673, - 0xBB51: 1674, - 0xBB61: 1675, - 0xBB62: 1676, - 0xBB65: 1677, - 0xBB69: 1678, - 0xBB71: 1679, - 0xBB73: 1680, - 0xBB75: 1681, - 0xBB77: 1682, - 0xBBA1: 1683, - 0xBBA2: 1684, - 0xBBA5: 1685, - 0xBBA8: 1686, - 0xBBA9: 1687, - 0xBBAB: 1688, - 0xBBB1: 1689, - 0xBBB3: 1690, - 0xBBB5: 1691, - 0xBBB7: 1692, - 0xBBB8: 1693, - 0xBBBB: 1694, - 0xBBBC: 1695, - 0xBC61: 1696, - 0xBC62: 1697, - 0xBC65: 1698, - 0xBC67: 1699, - 0xBC69: 1700, - 0xBC6C: 1701, - 0xBC71: 1702, - 0xBC73: 1703, - 0xBC75: 1704, - 0xBC76: 1705, - 0xBC77: 1706, - 0xBC81: 1707, - 0xBC82: 1708, - 0xBC85: 1709, - 0xBC89: 1710, - 0xBC91: 1711, - 0xBC93: 1712, - 0xBC95: 1713, - 0xBC96: 1714, - 0xBC97: 1715, - 0xBCA1: 1716, - 0xBCA5: 1717, - 0xBCB7: 1718, - 0xBCE1: 1719, - 0xBCE2: 1720, - 0xBCE5: 1721, - 0xBCE9: 1722, - 0xBCF1: 1723, - 0xBCF3: 1724, - 0xBCF5: 1725, - 0xBCF6: 1726, - 0xBCF7: 1727, - 0xBD41: 1728, - 0xBD57: 1729, - 0xBD61: 1730, - 0xBD76: 1731, - 0xBDA1: 1732, - 0xBDA2: 1733, - 0xBDA5: 1734, - 0xBDA9: 1735, - 0xBDB1: 1736, - 0xBDB3: 1737, - 0xBDB5: 1738, - 0xBDB7: 1739, - 0xBDB9: 1740, - 0xBDC1: 1741, - 0xBDC2: 1742, - 0xBDC9: 1743, - 0xBDD6: 1744, - 0xBDE1: 1745, - 0xBDF6: 1746, - 0xBE41: 1747, - 0xBE45: 1748, - 0xBE49: 1749, - 0xBE51: 1750, - 0xBE53: 1751, - 0xBE77: 1752, - 0xBE81: 1753, - 0xBE82: 1754, - 0xBE85: 1755, - 0xBE89: 1756, - 0xBE91: 1757, - 0xBE93: 1758, - 0xBE97: 1759, - 0xBEA1: 1760, - 0xBEB6: 1761, - 0xBEB7: 1762, - 0xBEE1: 1763, - 0xBF41: 1764, - 0xBF61: 1765, - 0xBF71: 1766, - 0xBF75: 1767, - 0xBF77: 1768, - 0xBFA1: 1769, - 0xBFA2: 1770, - 0xBFA5: 1771, - 0xBFA9: 1772, - 0xBFB1: 1773, - 0xBFB3: 1774, - 0xBFB7: 1775, - 0xBFB8: 1776, - 0xBFBD: 1777, - 0xC061: 1778, - 0xC062: 1779, - 0xC065: 1780, - 0xC067: 1781, - 0xC069: 1782, - 0xC071: 1783, - 0xC073: 1784, - 0xC075: 1785, - 0xC076: 1786, - 0xC077: 1787, - 0xC078: 1788, - 0xC081: 1789, - 0xC082: 1790, - 0xC085: 1791, - 0xC089: 1792, - 0xC091: 1793, - 0xC093: 1794, - 0xC095: 1795, - 0xC096: 1796, - 0xC097: 1797, - 0xC0A1: 1798, - 0xC0A5: 1799, - 0xC0A7: 1800, - 0xC0A9: 1801, - 0xC0B1: 1802, - 0xC0B7: 1803, - 0xC0E1: 1804, - 0xC0E2: 1805, - 0xC0E5: 1806, - 0xC0E9: 1807, - 0xC0F1: 1808, - 0xC0F3: 1809, - 0xC0F5: 1810, - 0xC0F6: 1811, - 0xC0F7: 1812, - 0xC141: 1813, - 0xC142: 1814, - 0xC145: 1815, - 0xC149: 1816, - 0xC151: 1817, - 0xC153: 1818, - 0xC155: 1819, - 0xC157: 1820, - 0xC161: 1821, - 0xC165: 1822, - 0xC176: 1823, - 0xC181: 1824, - 0xC185: 1825, - 0xC197: 1826, - 0xC1A1: 1827, - 0xC1A2: 1828, - 0xC1A5: 1829, - 0xC1A9: 1830, - 0xC1B1: 1831, - 0xC1B3: 1832, - 0xC1B5: 1833, - 0xC1B7: 1834, - 0xC1C1: 1835, - 0xC1C5: 1836, - 0xC1C9: 1837, - 0xC1D7: 1838, - 0xC241: 1839, - 0xC245: 1840, - 0xC249: 1841, - 0xC251: 1842, - 0xC253: 1843, - 0xC255: 1844, - 0xC257: 1845, - 0xC261: 1846, - 0xC271: 1847, - 0xC281: 1848, - 0xC282: 1849, - 0xC285: 1850, - 0xC289: 1851, - 0xC291: 1852, - 0xC293: 1853, - 0xC295: 1854, - 0xC297: 1855, - 0xC2A1: 1856, - 0xC2B6: 1857, - 0xC2C1: 1858, - 0xC2C5: 1859, - 0xC2E1: 1860, - 0xC2E5: 1861, - 0xC2E9: 1862, - 0xC2F1: 1863, - 0xC2F3: 1864, - 0xC2F5: 1865, - 0xC2F7: 1866, - 0xC341: 1867, - 0xC345: 1868, - 0xC349: 1869, - 0xC351: 1870, - 0xC357: 1871, - 0xC361: 1872, - 0xC362: 1873, - 0xC365: 1874, - 0xC369: 1875, - 0xC371: 1876, - 0xC373: 1877, - 0xC375: 1878, - 0xC377: 1879, - 0xC3A1: 1880, - 0xC3A2: 1881, - 0xC3A5: 1882, - 0xC3A8: 1883, - 0xC3A9: 1884, - 0xC3AA: 1885, - 0xC3B1: 1886, - 0xC3B3: 1887, - 0xC3B5: 1888, - 0xC3B7: 1889, - 0xC461: 1890, - 0xC462: 1891, - 0xC465: 1892, - 0xC469: 1893, - 0xC471: 1894, - 0xC473: 1895, - 0xC475: 1896, - 0xC477: 1897, - 0xC481: 1898, - 0xC482: 1899, - 0xC485: 1900, - 0xC489: 1901, - 0xC491: 1902, - 0xC493: 1903, - 0xC495: 1904, - 0xC496: 1905, - 0xC497: 1906, - 0xC4A1: 1907, - 0xC4A2: 1908, - 0xC4B7: 1909, - 0xC4E1: 1910, - 0xC4E2: 1911, - 0xC4E5: 1912, - 0xC4E8: 1913, - 0xC4E9: 1914, - 0xC4F1: 1915, - 0xC4F3: 1916, - 0xC4F5: 1917, - 0xC4F6: 1918, - 0xC4F7: 1919, - 0xC541: 1920, - 0xC542: 1921, - 0xC545: 1922, - 0xC549: 1923, - 0xC551: 1924, - 0xC553: 1925, - 0xC555: 1926, - 0xC557: 1927, - 0xC561: 1928, - 0xC565: 1929, - 0xC569: 1930, - 0xC571: 1931, - 0xC573: 1932, - 0xC575: 1933, - 0xC576: 1934, - 0xC577: 1935, - 0xC581: 1936, - 0xC5A1: 1937, - 0xC5A2: 1938, - 0xC5A5: 1939, - 0xC5A9: 1940, - 0xC5B1: 1941, - 0xC5B3: 1942, - 0xC5B5: 1943, - 0xC5B7: 1944, - 0xC5C1: 1945, - 0xC5C2: 1946, - 0xC5C5: 1947, - 0xC5C9: 1948, - 0xC5D1: 1949, - 0xC5D7: 1950, - 0xC5E1: 1951, - 0xC5F7: 1952, - 0xC641: 1953, - 0xC649: 1954, - 0xC661: 1955, - 0xC681: 1956, - 0xC682: 1957, - 0xC685: 1958, - 0xC689: 1959, - 0xC691: 1960, - 0xC693: 1961, - 0xC695: 1962, - 0xC697: 1963, - 0xC6A1: 1964, - 0xC6A5: 1965, - 0xC6A9: 1966, - 0xC6B7: 1967, - 0xC6C1: 1968, - 0xC6D7: 1969, - 0xC6E1: 1970, - 0xC6E2: 1971, - 0xC6E5: 1972, - 0xC6E9: 1973, - 0xC6F1: 1974, - 0xC6F3: 1975, - 0xC6F5: 1976, - 0xC6F7: 1977, - 0xC741: 1978, - 0xC745: 1979, - 0xC749: 1980, - 0xC751: 1981, - 0xC761: 1982, - 0xC762: 1983, - 0xC765: 1984, - 0xC769: 1985, - 0xC771: 1986, - 0xC773: 1987, - 0xC777: 1988, - 0xC7A1: 1989, - 0xC7A2: 1990, - 0xC7A5: 1991, - 0xC7A9: 1992, - 0xC7B1: 1993, - 0xC7B3: 1994, - 0xC7B5: 1995, - 0xC7B7: 1996, - 0xC861: 1997, - 0xC862: 1998, - 0xC865: 1999, - 0xC869: 2000, - 0xC86A: 2001, - 0xC871: 2002, - 0xC873: 2003, - 0xC875: 2004, - 0xC876: 2005, - 0xC877: 2006, - 0xC881: 2007, - 0xC882: 2008, - 0xC885: 2009, - 0xC889: 2010, - 0xC891: 2011, - 0xC893: 2012, - 0xC895: 2013, - 0xC896: 2014, - 0xC897: 2015, - 0xC8A1: 2016, - 0xC8B7: 2017, - 0xC8E1: 2018, - 0xC8E2: 2019, - 0xC8E5: 2020, - 0xC8E9: 2021, - 0xC8EB: 2022, - 0xC8F1: 2023, - 0xC8F3: 2024, - 0xC8F5: 2025, - 0xC8F6: 2026, - 0xC8F7: 2027, - 0xC941: 2028, - 0xC942: 2029, - 0xC945: 2030, - 0xC949: 2031, - 0xC951: 2032, - 0xC953: 2033, - 0xC955: 2034, - 0xC957: 2035, - 0xC961: 2036, - 0xC965: 2037, - 0xC976: 2038, - 0xC981: 2039, - 0xC985: 2040, - 0xC9A1: 2041, - 0xC9A2: 2042, - 0xC9A5: 2043, - 0xC9A9: 2044, - 0xC9B1: 2045, - 0xC9B3: 2046, - 0xC9B5: 2047, - 0xC9B7: 2048, - 0xC9BC: 2049, - 0xC9C1: 2050, - 0xC9C5: 2051, - 0xC9E1: 2052, - 0xCA41: 2053, - 0xCA45: 2054, - 0xCA55: 2055, - 0xCA57: 2056, - 0xCA61: 2057, - 0xCA81: 2058, - 0xCA82: 2059, - 0xCA85: 2060, - 0xCA89: 2061, - 0xCA91: 2062, - 0xCA93: 2063, - 0xCA95: 2064, - 0xCA97: 2065, - 0xCAA1: 2066, - 0xCAB6: 2067, - 0xCAC1: 2068, - 0xCAE1: 2069, - 0xCAE2: 2070, - 0xCAE5: 2071, - 0xCAE9: 2072, - 0xCAF1: 2073, - 0xCAF3: 2074, - 0xCAF7: 2075, - 0xCB41: 2076, - 0xCB45: 2077, - 0xCB49: 2078, - 0xCB51: 2079, - 0xCB57: 2080, - 0xCB61: 2081, - 0xCB62: 2082, - 0xCB65: 2083, - 0xCB68: 2084, - 0xCB69: 2085, - 0xCB6B: 2086, - 0xCB71: 2087, - 0xCB73: 2088, - 0xCB75: 2089, - 0xCB81: 2090, - 0xCB85: 2091, - 0xCB89: 2092, - 0xCB91: 2093, - 0xCB93: 2094, - 0xCBA1: 2095, - 0xCBA2: 2096, - 0xCBA5: 2097, - 0xCBA9: 2098, - 0xCBB1: 2099, - 0xCBB3: 2100, - 0xCBB5: 2101, - 0xCBB7: 2102, - 0xCC61: 2103, - 0xCC62: 2104, - 0xCC63: 2105, - 0xCC65: 2106, - 0xCC69: 2107, - 0xCC6B: 2108, - 0xCC71: 2109, - 0xCC73: 2110, - 0xCC75: 2111, - 0xCC76: 2112, - 0xCC77: 2113, - 0xCC7B: 2114, - 0xCC81: 2115, - 0xCC82: 2116, - 0xCC85: 2117, - 0xCC89: 2118, - 0xCC91: 2119, - 0xCC93: 2120, - 0xCC95: 2121, - 0xCC96: 2122, - 0xCC97: 2123, - 0xCCA1: 2124, - 0xCCA2: 2125, - 0xCCE1: 2126, - 0xCCE2: 2127, - 0xCCE5: 2128, - 0xCCE9: 2129, - 0xCCF1: 2130, - 0xCCF3: 2131, - 0xCCF5: 2132, - 0xCCF6: 2133, - 0xCCF7: 2134, - 0xCD41: 2135, - 0xCD42: 2136, - 0xCD45: 2137, - 0xCD49: 2138, - 0xCD51: 2139, - 0xCD53: 2140, - 0xCD55: 2141, - 0xCD57: 2142, - 0xCD61: 2143, - 0xCD65: 2144, - 0xCD69: 2145, - 0xCD71: 2146, - 0xCD73: 2147, - 0xCD76: 2148, - 0xCD77: 2149, - 0xCD81: 2150, - 0xCD89: 2151, - 0xCD93: 2152, - 0xCD95: 2153, - 0xCDA1: 2154, - 0xCDA2: 2155, - 0xCDA5: 2156, - 0xCDA9: 2157, - 0xCDB1: 2158, - 0xCDB3: 2159, - 0xCDB5: 2160, - 0xCDB7: 2161, - 0xCDC1: 2162, - 0xCDD7: 2163, - 0xCE41: 2164, - 0xCE45: 2165, - 0xCE61: 2166, - 0xCE65: 2167, - 0xCE69: 2168, - 0xCE73: 2169, - 0xCE75: 2170, - 0xCE81: 2171, - 0xCE82: 2172, - 0xCE85: 2173, - 0xCE88: 2174, - 0xCE89: 2175, - 0xCE8B: 2176, - 0xCE91: 2177, - 0xCE93: 2178, - 0xCE95: 2179, - 0xCE97: 2180, - 0xCEA1: 2181, - 0xCEB7: 2182, - 0xCEE1: 2183, - 0xCEE5: 2184, - 0xCEE9: 2185, - 0xCEF1: 2186, - 0xCEF5: 2187, - 0xCF41: 2188, - 0xCF45: 2189, - 0xCF49: 2190, - 0xCF51: 2191, - 0xCF55: 2192, - 0xCF57: 2193, - 0xCF61: 2194, - 0xCF65: 2195, - 0xCF69: 2196, - 0xCF71: 2197, - 0xCF73: 2198, - 0xCF75: 2199, - 0xCFA1: 2200, - 0xCFA2: 2201, - 0xCFA5: 2202, - 0xCFA9: 2203, - 0xCFB1: 2204, - 0xCFB3: 2205, - 0xCFB5: 2206, - 0xCFB7: 2207, - 0xD061: 2208, - 0xD062: 2209, - 0xD065: 2210, - 0xD069: 2211, - 0xD06E: 2212, - 0xD071: 2213, - 0xD073: 2214, - 0xD075: 2215, - 0xD077: 2216, - 0xD081: 2217, - 0xD082: 2218, - 0xD085: 2219, - 0xD089: 2220, - 0xD091: 2221, - 0xD093: 2222, - 0xD095: 2223, - 0xD096: 2224, - 0xD097: 2225, - 0xD0A1: 2226, - 0xD0B7: 2227, - 0xD0E1: 2228, - 0xD0E2: 2229, - 0xD0E5: 2230, - 0xD0E9: 2231, - 0xD0EB: 2232, - 0xD0F1: 2233, - 0xD0F3: 2234, - 0xD0F5: 2235, - 0xD0F7: 2236, - 0xD141: 2237, - 0xD142: 2238, - 0xD145: 2239, - 0xD149: 2240, - 0xD151: 2241, - 0xD153: 2242, - 0xD155: 2243, - 0xD157: 2244, - 0xD161: 2245, - 0xD162: 2246, - 0xD165: 2247, - 0xD169: 2248, - 0xD171: 2249, - 0xD173: 2250, - 0xD175: 2251, - 0xD176: 2252, - 0xD177: 2253, - 0xD181: 2254, - 0xD185: 2255, - 0xD189: 2256, - 0xD193: 2257, - 0xD1A1: 2258, - 0xD1A2: 2259, - 0xD1A5: 2260, - 0xD1A9: 2261, - 0xD1AE: 2262, - 0xD1B1: 2263, - 0xD1B3: 2264, - 0xD1B5: 2265, - 0xD1B7: 2266, - 0xD1BB: 2267, - 0xD1C1: 2268, - 0xD1C2: 2269, - 0xD1C5: 2270, - 0xD1C9: 2271, - 0xD1D5: 2272, - 0xD1D7: 2273, - 0xD1E1: 2274, - 0xD1E2: 2275, - 0xD1E5: 2276, - 0xD1F5: 2277, - 0xD1F7: 2278, - 0xD241: 2279, - 0xD242: 2280, - 0xD245: 2281, - 0xD249: 2282, - 0xD253: 2283, - 0xD255: 2284, - 0xD257: 2285, - 0xD261: 2286, - 0xD265: 2287, - 0xD269: 2288, - 0xD273: 2289, - 0xD275: 2290, - 0xD281: 2291, - 0xD282: 2292, - 0xD285: 2293, - 0xD289: 2294, - 0xD28E: 2295, - 0xD291: 2296, - 0xD295: 2297, - 0xD297: 2298, - 0xD2A1: 2299, - 0xD2A5: 2300, - 0xD2A9: 2301, - 0xD2B1: 2302, - 0xD2B7: 2303, - 0xD2C1: 2304, - 0xD2C2: 2305, - 0xD2C5: 2306, - 0xD2C9: 2307, - 0xD2D7: 2308, - 0xD2E1: 2309, - 0xD2E2: 2310, - 0xD2E5: 2311, - 0xD2E9: 2312, - 0xD2F1: 2313, - 0xD2F3: 2314, - 0xD2F5: 2315, - 0xD2F7: 2316, - 0xD341: 2317, - 0xD342: 2318, - 0xD345: 2319, - 0xD349: 2320, - 0xD351: 2321, - 0xD355: 2322, - 0xD357: 2323, - 0xD361: 2324, - 0xD362: 2325, - 0xD365: 2326, - 0xD367: 2327, - 0xD368: 2328, - 0xD369: 2329, - 0xD36A: 2330, - 0xD371: 2331, - 0xD373: 2332, - 0xD375: 2333, - 0xD377: 2334, - 0xD37B: 2335, - 0xD381: 2336, - 0xD385: 2337, - 0xD389: 2338, - 0xD391: 2339, - 0xD393: 2340, - 0xD397: 2341, - 0xD3A1: 2342, - 0xD3A2: 2343, - 0xD3A5: 2344, - 0xD3A9: 2345, - 0xD3B1: 2346, - 0xD3B3: 2347, - 0xD3B5: 2348, - 0xD3B7: 2349, -} diff --git a/gestao_raul/Lib/site-packages/pip/_vendor/chardet/johabprober.py b/gestao_raul/Lib/site-packages/pip/_vendor/chardet/johabprober.py deleted file mode 100644 index d7364ba..0000000 --- a/gestao_raul/Lib/site-packages/pip/_vendor/chardet/johabprober.py +++ /dev/null @@ -1,47 +0,0 @@ -######################## 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 .chardistribution import JOHABDistributionAnalysis -from .codingstatemachine import CodingStateMachine -from .mbcharsetprober import MultiByteCharSetProber -from .mbcssm import JOHAB_SM_MODEL - - -class JOHABProber(MultiByteCharSetProber): - def __init__(self) -> None: - super().__init__() - self.coding_sm = CodingStateMachine(JOHAB_SM_MODEL) - self.distribution_analyzer = JOHABDistributionAnalysis() - self.reset() - - @property - def charset_name(self) -> str: - return "Johab" - - @property - def language(self) -> str: - return "Korean" diff --git a/gestao_raul/Lib/site-packages/pip/_vendor/chardet/jpcntx.py b/gestao_raul/Lib/site-packages/pip/_vendor/chardet/jpcntx.py deleted file mode 100644 index 2f53bdd..0000000 --- a/gestao_raul/Lib/site-packages/pip/_vendor/chardet/jpcntx.py +++ /dev/null @@ -1,238 +0,0 @@ -######################## 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 typing import List, Tuple, Union - -# This is hiragana 2-char sequence table, the number in each cell represents its frequency category -# fmt: off -jp2_char_context = ( - (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), -) -# fmt: on - - -class JapaneseContextAnalysis: - NUM_OF_CATEGORY = 6 - DONT_KNOW = -1 - ENOUGH_REL_THRESHOLD = 100 - MAX_REL_THRESHOLD = 1000 - MINIMUM_DATA_THRESHOLD = 4 - - def __init__(self) -> None: - self._total_rel = 0 - self._rel_sample: List[int] = [] - self._need_to_skip_char_num = 0 - self._last_char_order = -1 - self._done = False - self.reset() - - def reset(self) -> None: - 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: Union[bytes, bytearray], num_bytes: int) -> None: - 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[ - jp2_char_context[self._last_char_order][order] - ] += 1 - self._last_char_order = order - - def got_enough_data(self) -> bool: - return self._total_rel > self.ENOUGH_REL_THRESHOLD - - def get_confidence(self) -> float: - # 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 - return self.DONT_KNOW - - def get_order(self, _: Union[bytes, bytearray]) -> Tuple[int, int]: - return -1, 1 - - -class SJISContextAnalysis(JapaneseContextAnalysis): - def __init__(self) -> None: - super().__init__() - self._charset_name = "SHIFT_JIS" - - @property - def charset_name(self) -> str: - return self._charset_name - - def get_order(self, byte_str: Union[bytes, bytearray]) -> Tuple[int, int]: - 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: Union[bytes, bytearray]) -> Tuple[int, int]: - 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/gestao_raul/Lib/site-packages/pip/_vendor/chardet/langbulgarianmodel.py b/gestao_raul/Lib/site-packages/pip/_vendor/chardet/langbulgarianmodel.py deleted file mode 100644 index 9946682..0000000 --- a/gestao_raul/Lib/site-packages/pip/_vendor/chardet/langbulgarianmodel.py +++ /dev/null @@ -1,4649 +0,0 @@ -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/gestao_raul/Lib/site-packages/pip/_vendor/chardet/langgreekmodel.py b/gestao_raul/Lib/site-packages/pip/_vendor/chardet/langgreekmodel.py deleted file mode 100644 index cfb8639..0000000 --- a/gestao_raul/Lib/site-packages/pip/_vendor/chardet/langgreekmodel.py +++ /dev/null @@ -1,4397 +0,0 @@ -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/gestao_raul/Lib/site-packages/pip/_vendor/chardet/langhebrewmodel.py b/gestao_raul/Lib/site-packages/pip/_vendor/chardet/langhebrewmodel.py deleted file mode 100644 index 56d2975..0000000 --- a/gestao_raul/Lib/site-packages/pip/_vendor/chardet/langhebrewmodel.py +++ /dev/null @@ -1,4380 +0,0 @@ -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/gestao_raul/Lib/site-packages/pip/_vendor/chardet/langhungarianmodel.py b/gestao_raul/Lib/site-packages/pip/_vendor/chardet/langhungarianmodel.py deleted file mode 100644 index 09a0d32..0000000 --- a/gestao_raul/Lib/site-packages/pip/_vendor/chardet/langhungarianmodel.py +++ /dev/null @@ -1,4649 +0,0 @@ -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/gestao_raul/Lib/site-packages/pip/_vendor/chardet/langrussianmodel.py b/gestao_raul/Lib/site-packages/pip/_vendor/chardet/langrussianmodel.py deleted file mode 100644 index 39a5388..0000000 --- a/gestao_raul/Lib/site-packages/pip/_vendor/chardet/langrussianmodel.py +++ /dev/null @@ -1,5725 +0,0 @@ -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/gestao_raul/Lib/site-packages/pip/_vendor/chardet/langthaimodel.py b/gestao_raul/Lib/site-packages/pip/_vendor/chardet/langthaimodel.py deleted file mode 100644 index 489cad9..0000000 --- a/gestao_raul/Lib/site-packages/pip/_vendor/chardet/langthaimodel.py +++ /dev/null @@ -1,4380 +0,0 @@ -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/gestao_raul/Lib/site-packages/pip/_vendor/chardet/langturkishmodel.py b/gestao_raul/Lib/site-packages/pip/_vendor/chardet/langturkishmodel.py deleted file mode 100644 index 291857c..0000000 --- a/gestao_raul/Lib/site-packages/pip/_vendor/chardet/langturkishmodel.py +++ /dev/null @@ -1,4380 +0,0 @@ -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/gestao_raul/Lib/site-packages/pip/_vendor/chardet/latin1prober.py b/gestao_raul/Lib/site-packages/pip/_vendor/chardet/latin1prober.py deleted file mode 100644 index 59a01d9..0000000 --- a/gestao_raul/Lib/site-packages/pip/_vendor/chardet/latin1prober.py +++ /dev/null @@ -1,147 +0,0 @@ -######################## 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 typing import List, Union - -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 - -# fmt: off -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 -) -# fmt: on - - -class Latin1Prober(CharSetProber): - def __init__(self) -> None: - super().__init__() - self._last_char_class = OTH - self._freq_counter: List[int] = [] - self.reset() - - def reset(self) -> None: - self._last_char_class = OTH - self._freq_counter = [0] * FREQ_CAT_NUM - super().reset() - - @property - def charset_name(self) -> str: - return "ISO-8859-1" - - @property - def language(self) -> str: - return "" - - def feed(self, byte_str: Union[bytes, bytearray]) -> ProbingState: - byte_str = self.remove_xml_tags(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) -> float: - if self.state == ProbingState.NOT_ME: - return 0.01 - - total = sum(self._freq_counter) - confidence = ( - 0.0 - if total < 0.01 - else (self._freq_counter[3] - self._freq_counter[1] * 20.0) / total - ) - confidence = max(confidence, 0.0) - # lower the confidence of latin1 so that other more accurate - # detector can take priority. - confidence *= 0.73 - return confidence diff --git a/gestao_raul/Lib/site-packages/pip/_vendor/chardet/macromanprober.py b/gestao_raul/Lib/site-packages/pip/_vendor/chardet/macromanprober.py deleted file mode 100644 index 1425d10..0000000 --- a/gestao_raul/Lib/site-packages/pip/_vendor/chardet/macromanprober.py +++ /dev/null @@ -1,162 +0,0 @@ -######################## BEGIN LICENSE BLOCK ######################## -# This code was modified from latin1prober.py by Rob Speer . -# 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): -# Rob Speer - adapt to MacRoman encoding -# 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 typing import List, Union - -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 -ODD = 8 # character that is unlikely to appear -CLASS_NUM = 9 # total classes - -# The change from Latin1 is that we explicitly look for extended characters -# that are infrequently-occurring symbols, and consider them to always be -# improbable. This should let MacRoman get out of the way of more likely -# encodings in most situations. - -# fmt: off -MacRoman_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 - ACV, ACV, ACO, ACV, ACO, ACV, ACV, ASV, # 80 - 87 - ASV, ASV, ASV, ASV, ASV, ASO, ASV, ASV, # 88 - 8F - ASV, ASV, ASV, ASV, ASV, ASV, ASO, ASV, # 90 - 97 - ASV, ASV, ASV, ASV, ASV, ASV, ASV, ASV, # 98 - 9F - OTH, OTH, OTH, OTH, OTH, OTH, OTH, ASO, # A0 - A7 - OTH, OTH, ODD, ODD, OTH, OTH, ACV, ACV, # A8 - AF - OTH, OTH, OTH, OTH, OTH, OTH, OTH, OTH, # B0 - B7 - OTH, OTH, OTH, OTH, OTH, OTH, ASV, ASV, # B8 - BF - OTH, OTH, ODD, OTH, ODD, OTH, OTH, OTH, # C0 - C7 - OTH, OTH, OTH, ACV, ACV, ACV, ACV, ASV, # C8 - CF - OTH, OTH, OTH, OTH, OTH, OTH, OTH, ODD, # D0 - D7 - ASV, ACV, ODD, OTH, OTH, OTH, OTH, OTH, # D8 - DF - OTH, OTH, OTH, OTH, OTH, ACV, ACV, ACV, # E0 - E7 - ACV, ACV, ACV, ACV, ACV, ACV, ACV, ACV, # E8 - EF - ODD, ACV, ACV, ACV, ACV, ASV, ODD, ODD, # F0 - F7 - ODD, ODD, ODD, ODD, ODD, ODD, ODD, ODD, # F8 - FF -) - -# 0 : illegal -# 1 : very unlikely -# 2 : normal -# 3 : very likely -MacRomanClassModel = ( -# UDF OTH ASC ASS ACV ACO ASV ASO ODD - 0, 0, 0, 0, 0, 0, 0, 0, 0, # UDF - 0, 3, 3, 3, 3, 3, 3, 3, 1, # OTH - 0, 3, 3, 3, 3, 3, 3, 3, 1, # ASC - 0, 3, 3, 3, 1, 1, 3, 3, 1, # ASS - 0, 3, 3, 3, 1, 2, 1, 2, 1, # ACV - 0, 3, 3, 3, 3, 3, 3, 3, 1, # ACO - 0, 3, 1, 3, 1, 1, 1, 3, 1, # ASV - 0, 3, 1, 3, 1, 1, 3, 3, 1, # ASO - 0, 1, 1, 1, 1, 1, 1, 1, 1, # ODD -) -# fmt: on - - -class MacRomanProber(CharSetProber): - def __init__(self) -> None: - super().__init__() - self._last_char_class = OTH - self._freq_counter: List[int] = [] - self.reset() - - def reset(self) -> None: - self._last_char_class = OTH - self._freq_counter = [0] * FREQ_CAT_NUM - - # express the prior that MacRoman is a somewhat rare encoding; - # this can be done by starting out in a slightly improbable state - # that must be overcome - self._freq_counter[2] = 10 - - super().reset() - - @property - def charset_name(self) -> str: - return "MacRoman" - - @property - def language(self) -> str: - return "" - - def feed(self, byte_str: Union[bytes, bytearray]) -> ProbingState: - byte_str = self.remove_xml_tags(byte_str) - for c in byte_str: - char_class = MacRoman_CharToClass[c] - freq = MacRomanClassModel[(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) -> float: - if self.state == ProbingState.NOT_ME: - return 0.01 - - total = sum(self._freq_counter) - confidence = ( - 0.0 - if total < 0.01 - else (self._freq_counter[3] - self._freq_counter[1] * 20.0) / total - ) - confidence = max(confidence, 0.0) - # lower the confidence of MacRoman so that other more accurate - # detector can take priority. - confidence *= 0.73 - return confidence diff --git a/gestao_raul/Lib/site-packages/pip/_vendor/chardet/mbcharsetprober.py b/gestao_raul/Lib/site-packages/pip/_vendor/chardet/mbcharsetprober.py deleted file mode 100644 index 666307e..0000000 --- a/gestao_raul/Lib/site-packages/pip/_vendor/chardet/mbcharsetprober.py +++ /dev/null @@ -1,95 +0,0 @@ -######################## 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 typing import Optional, Union - -from .chardistribution import CharDistributionAnalysis -from .charsetprober import CharSetProber -from .codingstatemachine import CodingStateMachine -from .enums import LanguageFilter, MachineState, ProbingState - - -class MultiByteCharSetProber(CharSetProber): - """ - MultiByteCharSetProber - """ - - def __init__(self, lang_filter: LanguageFilter = LanguageFilter.NONE) -> None: - super().__init__(lang_filter=lang_filter) - self.distribution_analyzer: Optional[CharDistributionAnalysis] = None - self.coding_sm: Optional[CodingStateMachine] = None - self._last_char = bytearray(b"\0\0") - - def reset(self) -> None: - super().reset() - if self.coding_sm: - self.coding_sm.reset() - if self.distribution_analyzer: - self.distribution_analyzer.reset() - self._last_char = bytearray(b"\0\0") - - def feed(self, byte_str: Union[bytes, bytearray]) -> ProbingState: - assert self.coding_sm is not None - assert self.distribution_analyzer is not None - - for i, byte in enumerate(byte_str): - coding_state = self.coding_sm.next_state(byte) - 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 - if coding_state == MachineState.ITS_ME: - self._state = ProbingState.FOUND_IT - break - if coding_state == MachineState.START: - char_len = self.coding_sm.get_current_charlen() - if i == 0: - self._last_char[1] = byte - 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) -> float: - assert self.distribution_analyzer is not None - return self.distribution_analyzer.get_confidence() diff --git a/gestao_raul/Lib/site-packages/pip/_vendor/chardet/mbcsgroupprober.py b/gestao_raul/Lib/site-packages/pip/_vendor/chardet/mbcsgroupprober.py deleted file mode 100644 index 6cb9cc7..0000000 --- a/gestao_raul/Lib/site-packages/pip/_vendor/chardet/mbcsgroupprober.py +++ /dev/null @@ -1,57 +0,0 @@ -######################## 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 .big5prober import Big5Prober -from .charsetgroupprober import CharSetGroupProber -from .cp949prober import CP949Prober -from .enums import LanguageFilter -from .eucjpprober import EUCJPProber -from .euckrprober import EUCKRProber -from .euctwprober import EUCTWProber -from .gb2312prober import GB2312Prober -from .johabprober import JOHABProber -from .sjisprober import SJISProber -from .utf8prober import UTF8Prober - - -class MBCSGroupProber(CharSetGroupProber): - def __init__(self, lang_filter: LanguageFilter = LanguageFilter.NONE) -> None: - super().__init__(lang_filter=lang_filter) - self.probers = [ - UTF8Prober(), - SJISProber(), - EUCJPProber(), - GB2312Prober(), - EUCKRProber(), - CP949Prober(), - Big5Prober(), - EUCTWProber(), - JOHABProber(), - ] - self.reset() diff --git a/gestao_raul/Lib/site-packages/pip/_vendor/chardet/mbcssm.py b/gestao_raul/Lib/site-packages/pip/_vendor/chardet/mbcssm.py deleted file mode 100644 index 7bbe97e..0000000 --- a/gestao_raul/Lib/site-packages/pip/_vendor/chardet/mbcssm.py +++ /dev/null @@ -1,661 +0,0 @@ -######################## 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 .codingstatemachinedict import CodingStateMachineDict -from .enums import MachineState - -# BIG5 - -# fmt: off -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 -) -# fmt: on - -BIG5_CHAR_LEN_TABLE = (0, 1, 1, 2, 0) - -BIG5_SM_MODEL: CodingStateMachineDict = { - "class_table": BIG5_CLS, - "class_factor": 5, - "state_table": BIG5_ST, - "char_len_table": BIG5_CHAR_LEN_TABLE, - "name": "Big5", -} - -# CP949 -# fmt: off -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 -) -# fmt: on - -CP949_CHAR_LEN_TABLE = (0, 1, 2, 0, 1, 1, 2, 2, 0, 2) - -CP949_SM_MODEL: CodingStateMachineDict = { - "class_table": CP949_CLS, - "class_factor": 10, - "state_table": CP949_ST, - "char_len_table": CP949_CHAR_LEN_TABLE, - "name": "CP949", -} - -# EUC-JP -# fmt: off -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 -) -# fmt: on - -EUCJP_CHAR_LEN_TABLE = (2, 2, 2, 3, 1, 0) - -EUCJP_SM_MODEL: CodingStateMachineDict = { - "class_table": EUCJP_CLS, - "class_factor": 6, - "state_table": EUCJP_ST, - "char_len_table": EUCJP_CHAR_LEN_TABLE, - "name": "EUC-JP", -} - -# EUC-KR -# fmt: off -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 -) -# fmt: on - -EUCKR_CHAR_LEN_TABLE = (0, 1, 2, 0) - -EUCKR_SM_MODEL: CodingStateMachineDict = { - "class_table": EUCKR_CLS, - "class_factor": 4, - "state_table": EUCKR_ST, - "char_len_table": EUCKR_CHAR_LEN_TABLE, - "name": "EUC-KR", -} - -# JOHAB -# fmt: off -JOHAB_CLS = ( - 4,4,4,4,4,4,4,4, # 00 - 07 - 4,4,4,4,4,4,0,0, # 08 - 0f - 4,4,4,4,4,4,4,4, # 10 - 17 - 4,4,4,0,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,3,3,3,3,3,3,3, # 30 - 37 - 3,3,3,3,3,3,3,3, # 38 - 3f - 3,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,2, # 78 - 7f - 6,6,6,6,8,8,8,8, # 80 - 87 - 8,8,8,8,8,8,8,8, # 88 - 8f - 8,7,7,7,7,7,7,7, # 90 - 97 - 7,7,7,7,7,7,7,7, # 98 - 9f - 7,7,7,7,7,7,7,7, # a0 - a7 - 7,7,7,7,7,7,7,7, # a8 - af - 7,7,7,7,7,7,7,7, # b0 - b7 - 7,7,7,7,7,7,7,7, # b8 - bf - 7,7,7,7,7,7,7,7, # c0 - c7 - 7,7,7,7,7,7,7,7, # c8 - cf - 7,7,7,7,5,5,5,5, # d0 - d7 - 5,9,9,9,9,9,9,5, # d8 - df - 9,9,9,9,9,9,9,9, # e0 - e7 - 9,9,9,9,9,9,9,9, # e8 - ef - 9,9,9,9,9,9,9,9, # f0 - f7 - 9,9,5,5,5,5,5,0 # f8 - ff -) - -JOHAB_ST = ( -# cls = 0 1 2 3 4 5 6 7 8 9 - MachineState.ERROR ,MachineState.START ,MachineState.START ,MachineState.START ,MachineState.START ,MachineState.ERROR ,MachineState.ERROR ,3 ,3 ,4 , # MachineState.START - 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.ERROR ,MachineState.ERROR ,MachineState.ERROR ,MachineState.ERROR ,MachineState.ERROR ,MachineState.ERROR ,MachineState.ERROR ,MachineState.ERROR , # MachineState.ERROR - MachineState.ERROR ,MachineState.START ,MachineState.START ,MachineState.ERROR ,MachineState.ERROR ,MachineState.START ,MachineState.START ,MachineState.START ,MachineState.START ,MachineState.START , # 3 - MachineState.ERROR ,MachineState.START ,MachineState.ERROR ,MachineState.START ,MachineState.ERROR ,MachineState.START ,MachineState.ERROR ,MachineState.START ,MachineState.ERROR ,MachineState.START , # 4 -) -# fmt: on - -JOHAB_CHAR_LEN_TABLE = (0, 1, 1, 1, 1, 0, 0, 2, 2, 2) - -JOHAB_SM_MODEL: CodingStateMachineDict = { - "class_table": JOHAB_CLS, - "class_factor": 10, - "state_table": JOHAB_ST, - "char_len_table": JOHAB_CHAR_LEN_TABLE, - "name": "Johab", -} - -# EUC-TW -# fmt: off -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 -) -# fmt: on - -EUCTW_CHAR_LEN_TABLE = (0, 0, 1, 2, 2, 2, 3) - -EUCTW_SM_MODEL: CodingStateMachineDict = { - "class_table": EUCTW_CLS, - "class_factor": 7, - "state_table": EUCTW_ST, - "char_len_table": EUCTW_CHAR_LEN_TABLE, - "name": "x-euc-tw", -} - -# GB2312 -# fmt: off -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 -) -# fmt: on - -# 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: CodingStateMachineDict = { - "class_table": GB2312_CLS, - "class_factor": 7, - "state_table": GB2312_ST, - "char_len_table": GB2312_CHAR_LEN_TABLE, - "name": "GB2312", -} - -# Shift_JIS -# fmt: off -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 -) -# fmt: on - -SJIS_CHAR_LEN_TABLE = (0, 1, 1, 2, 0, 0) - -SJIS_SM_MODEL: CodingStateMachineDict = { - "class_table": SJIS_CLS, - "class_factor": 6, - "state_table": SJIS_ST, - "char_len_table": SJIS_CHAR_LEN_TABLE, - "name": "Shift_JIS", -} - -# UCS2-BE -# fmt: off -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 -) -# fmt: on - -UCS2BE_CHAR_LEN_TABLE = (2, 2, 2, 0, 2, 2) - -UCS2BE_SM_MODEL: CodingStateMachineDict = { - "class_table": UCS2BE_CLS, - "class_factor": 6, - "state_table": UCS2BE_ST, - "char_len_table": UCS2BE_CHAR_LEN_TABLE, - "name": "UTF-16BE", -} - -# UCS2-LE -# fmt: off -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 -) -# fmt: on - -UCS2LE_CHAR_LEN_TABLE = (2, 2, 2, 2, 2, 2) - -UCS2LE_SM_MODEL: CodingStateMachineDict = { - "class_table": UCS2LE_CLS, - "class_factor": 6, - "state_table": UCS2LE_ST, - "char_len_table": UCS2LE_CHAR_LEN_TABLE, - "name": "UTF-16LE", -} - -# UTF-8 -# fmt: off -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 -) -# fmt: on - -UTF8_CHAR_LEN_TABLE = (0, 1, 0, 0, 0, 0, 2, 3, 3, 3, 4, 4, 5, 5, 6, 6) - -UTF8_SM_MODEL: CodingStateMachineDict = { - "class_table": UTF8_CLS, - "class_factor": 16, - "state_table": UTF8_ST, - "char_len_table": UTF8_CHAR_LEN_TABLE, - "name": "UTF-8", -} diff --git a/gestao_raul/Lib/site-packages/pip/_vendor/chardet/metadata/__pycache__/__init__.cpython-310.pyc b/gestao_raul/Lib/site-packages/pip/_vendor/chardet/metadata/__pycache__/__init__.cpython-310.pyc deleted file mode 100644 index ce6003654cbd396d145fe418337382066d091661..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 200 zcmd1j<>g`kg6bck=^*+sh(HF6K#l_t7qb9~6oz01O-8?!3`HPe1o11|*(xTqIJKxa zraU#LBtOO_Ke;qFHLs*NCOx&dBr!j}D6upLh3%7>6jPj8lB!#fn4FymR25T@S)d=1;mR6NZvMiQ_bk^=9T|G%UaSxcV6KClFHsAyd!3Khwv?%M9?ZRc1Qi~nC zoe5s>1_q4TY_r(xW;K|l#Fif=<>d67Q!btUA-U#H<@B$a`Pt|6N$8o$+*gvyvODx? z`RJ+Y-uK?!zI)%TvM_6w&jp`9e80Ks`^7HTpYcuh=XtpK5Wdom9G45Z{4PWwk|%0O zKS|*096qO(@>8{LzngHaaUlx1+g!-qO8PyV3wc-%@}OMgt#YBf(**LN8C3+D+2iRW z&@AB1LbGk&Q^0!~&2f0o0Ph*}Gn@A;@Sa1@JG>Ww_X2tmy@Y;_eo;lDm(eQ@?^WQv zihhY+0(ms7`xW{ZhxZ!rUPG@tyf@IV9p0P3dlS8dyeJ?22KM|{G}qzH1KvDTV6U4G zd%g{v1wC%CU?Ff8qD8Q3G0>KvrOujVz*&ZtJF?zEg%0ms;Ju69vu%4H_WJ<+*5Q2! zybsX|XWdG)%Hb6OuLu=8ywzw8S_`_SyjcR=67&)1@-bQm)b*&;S-Amt8_-7Jr9Act z+T`%cfLDgf9o}ZN#o=uQ-d6OfBXJw@XL!K*9olZ&@EO?fdlX1Xv%~0fM;{SM4qZlygNQm*@6f+M4Yt%q z*!>Tv$)SIV{>_>H724&{n^B7+w-vQH^xdc(bpWcc_MJfOvbF3+d+go!0<{P2b7t>H z2W)yT&<~f+Etj0%Cbu78x$Yg{tTv+|reThK4QnKt3&9m^q{xcM7WjPS)tr>t8-6PoEMG`X$!JB_ zX0)vog<5;H5(KG;mFci3>|}#-f$u+YLCGh~S&S6qxB$<}GN_YJn$$W@l1=Z1u*?Y| zh7aO-*`KGJLz9sc5>l57gK@mP1EzT zXg)+%&hBtk5@-gR**44XMLyPDN#c^!M)~tPT$Ic2gOEIJde@~xz;r?loE9F&2@v*a zrNY}`Z~|k;N%Hw<_!M$=j7W!=TDFib2RBzMwM@vqPptt`#;tR4D2gGBoK#(qS}Zq& z+4N#b7PB_wBq4y~Uq~;UmvSv#QnrC!y6ByG3uvyA4hxdRRq*UwdQmpthKzutU(ZSG zTzf;TW%dUE1xC?K$eu?B0hPQ^MKcnO&6Z?ZWFI{OP zY5^jK{hChZlzYMEZ0$253#Vya&(&}NNoGVj5XLnprTtc*hFQchv`w_Vgy+z9&I82i z**8TNyv5Y>P)B}J=?ttU_rlf3$rJ42Yz6;bk?C$OEjKBgOQtsiIWy1ko$1ZQ$Mj}w zHJ_fosp%0}sC1!VZdTF3*KYVis=K5R46>`$HAD=%2v-x)<`8bAfkj&4VG4nG?BNc=jM0_~B24CstF!=I3MCOko ze1wOj2ruz6Ts6+gl<$I!e}V+8$b7J0aJ*N+S1N!35koFSqMSB}%uZs69Cj7CaIC(B z=9bQ&s^{ctAd>}en?#LC)QK;^o~hwQxH9wJ zt71d!7h&;(_prp7Fp#?_*KC6PaVFvWvGMgR4~T4730{!p$3%X< zTbzTp1S}yg2v{=R5T05|#Loekic>BS$S1{Tf#A;zGa^$96+@h^6HHBsdKczN7=}Iw zi1){5bEX6&H3ytnT3%XOnm~k9u;v1MVD~-z_%kwaM(qYfxdDv?r4*G2PN^is9bx{QQJV|8!s2@Be`G1}q z@_$K+{2!m2{F}!^KKA93Kak$p-#`DNz1sAw5Sa=tXp)S$I-hFv!MQtc`SK<2%v;(x zb8AUy(T1&M^A;>zvefThwQ_H=Cx zYaBHCj6=p@quDrO95vdFeq+EGG>#i5jFZMGW5^gbP8(;8ea2bioN?Z`U|cjV8&{00 z#x>)*F>2f}ZW?38E#r2)*SKTcjUO>0#y#V{@xXX!JTktH?}|6aTjH(plkv9r?s$8= zBiD60k%0B^G`H zRPL}X0V`}9z=Bb*K#jK>qkynRHdt+v!N&3|I4+z5$F~(+CbZ#bPjtUF5*^g8#yYjJ zSbuCdc22t&yRJQqJ<^(^d!zfbuIPZ)6YJ3WV#i`bv9sDh?3#8W_E5ojvzBM-LfTcF z{7i`Pdy1G4bgL$bm?=0}&^W_Miv?3bv(WScST+gJ1}nH|Y3DUnJEyg4$F$x4+|`08 zaftPM*03VXfQ?xN*Cy?(c1L@lo%-(HNv%ygq8)F1)@dpV*D^|2mRP7+rhARZvNa~j z@>!l(HpLT*lwGi)enY>hkLkDc+xi{-uCD44{hoebf1p3qAL(C@?;39&Zyj$LZyVn| z-ag(j-Z|c-U(v7X*YxY-d&hgm_vyX*LA_5uq#xFg=tuQqdcQuP59-JD6Z%R0ls=>n z>u2EatbR^EuV2tF>LYr)-l=!#-TGdApT1xD8CGIwya$BdEz}2K&t}l!hCes`1OPUK z0FKLHn)nVL3Ssc)t%sgCun|s8DB3@D;^TwdpI0nFZvefm0J{iT`MXFd0zOj_jCLWm zvMPF_I(m-V8NFS@*M@|!D8)|5O6+P~tJg%2uZ^B9`6znp<8|vxH*DNg z7CT-`0OixH?(1GM7yeuY4;$6y;`%@ zrS)ii+5kjx&SVrfLQewEzDW5oy=uI3<^d$}@4kwNzjwX&J`V#|*!Nl>ziNwjosl-rX zIB`00CUG`#E^$6_A#pJ=lDL!@P25P_v{Mh5Ct+z{05}JL*YEeP5(P%KBUCLaAA)um zQ9aQP6zv66WqCO^41R8mJ;Hd}8*ML&9so>b1t>NIA@au_`kz{Z3k#E~D_oHA=dD#j znYvu9C>v8kFle*3$D2Fgx)bZg0E^uKVHmnuVz3Ygc1L0dF!W-h3T}}K@JplqQsiMbNVN3S+l>l{)29Tk@{74WmlqI3q=*5p%@N2<6Grix2oP?})KY7$zZO~A+MZa7#w?KYvyZWOw+T7|vPEM$(? z{m?8pEkeA{xNWxxhv7gxhMR3@&Zmp!MN`IZ(cN>o$KZ z61$%YX$KBz8pg2}@MoK#jp5omC@b|1jj?;N2g*y}oyp2rCX4WTJ}8 zr{dZ4+Gn(lAW^WZVYC(Yy7q1Vw}a6ZkhbsJW8V%a&w%jhxe#qNb2lmQ1`20_s6fl< zbXAR>k2jPopSLLmg$1xUg@-n{nv7_s>H8;JC8zDnLR6;h{O1}qr}0!?!-^aQRmLW< zk!~Ebn=aE+#tU@}v>H;4eW-$?&!(Cy?P~O1^bu~av|F*msRk?6UTJNq221OSMxqaK zi=`ck9ZEG>c8m2i2v4<~%f^d`3@osUn>#ywBW#)GMB{0F%>I4u`3+@F+-qf;6k`!$69Y6CYqCRJX| za3+bLl(Rd|1&z7oC1vxLrk}o+Emq+FR4z+xw$v6&ZMD=kOWkd$?UveMshyVEWvShk zy2n!YT56A_?z7bWmU_TadoA^#rS@6sAxk}MsYfjJsHGmW)P74Hu+%|IJ#MKdEcK+N zp0d;-OC7e<)0TS1QqNlIIZHinsTVBuqNR>l>Lp9PY^hf)^{S;_v()RBI%=smEcK?P zj#=t0OTBHWcP#a;rQWkt)lwst`n46=Wks5;NQ)I|wIXd+WVaP*w;~-@q|=IYS&?ol zvd4<-wIV%MWSF&7M!LV!?%;ZM zN>;Q7bq$TUXlVE0RMtA|mhvPVJ)@~JPdkDuhDxY( zTR2w6Zvk+ntK+7~U#_eL^%z`~DuTH4&@RC#Y4>;9t#5|IpNo>Ld^1}2MZ*eQuAnJ^ z?nCQ_BiC*ZwL{+wZTw_YS^4H~u5bBtn_b6NReyK?df*e~yZgPtK&T3C@@I?dL5jEm z51-(n3=f;}uoVy6@bEi4e1?Yr9vD0X@xbDt3Wm~rulN@H!mBqK&g!bvn>i1>J;yip zdkp+?!+yiy&s(>mbj{`!Yl_RV-eK5pGjQ-s?|Z5DBp={6TGFrKT^8kR(-7kL;=M!e9b*JXo{QrV?k None: - super().__init__() - self.name = name - self.iso_code = iso_code - self.use_ascii = use_ascii - self.charsets = charsets - if self.use_ascii: - if alphabet: - alphabet += ascii_letters - else: - alphabet = ascii_letters - elif not alphabet: - raise ValueError("Must supply alphabet if use_ascii is False") - self.alphabet = "".join(sorted(set(alphabet))) if alphabet else None - self.wiki_start_pages = wiki_start_pages - - def __repr__(self) -> str: - param_str = ", ".join( - f"{k}={v!r}" for k, v in self.__dict__.items() if not k.startswith("_") - ) - return f"{self.__class__.__name__}({param_str})" - - -LANGUAGES = { - "Arabic": Language( - name="Arabic", - iso_code="ar", - use_ascii=False, - # We only support encodings that use isolated - # forms, because the current recommendation is - # that the rendering system handles presentation - # forms. This means we purposefully skip IBM864. - charsets=["ISO-8859-6", "WINDOWS-1256", "CP720", "CP864"], - alphabet="ءآأؤإئابةتثجحخدذرزسشصضطظعغػؼؽؾؿـفقكلمنهوىيًٌٍَُِّ", - wiki_start_pages=["الصفحة_الرئيسية"], - ), - "Belarusian": Language( - name="Belarusian", - iso_code="be", - use_ascii=False, - charsets=["ISO-8859-5", "WINDOWS-1251", "IBM866", "MacCyrillic"], - alphabet="АБВГДЕЁЖЗІЙКЛМНОПРСТУЎФХЦЧШЫЬЭЮЯабвгдеёжзійклмнопрстуўфхцчшыьэюяʼ", - wiki_start_pages=["Галоўная_старонка"], - ), - "Bulgarian": Language( - name="Bulgarian", - iso_code="bg", - use_ascii=False, - charsets=["ISO-8859-5", "WINDOWS-1251", "IBM855"], - alphabet="АБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЬЮЯабвгдежзийклмнопрстуфхцчшщъьюя", - wiki_start_pages=["Начална_страница"], - ), - "Czech": Language( - name="Czech", - iso_code="cz", - use_ascii=True, - charsets=["ISO-8859-2", "WINDOWS-1250"], - alphabet="áčďéěíňóřšťúůýžÁČĎÉĚÍŇÓŘŠŤÚŮÝŽ", - wiki_start_pages=["Hlavní_strana"], - ), - "Danish": Language( - name="Danish", - iso_code="da", - use_ascii=True, - charsets=["ISO-8859-1", "ISO-8859-15", "WINDOWS-1252", "MacRoman"], - alphabet="æøåÆØÅ", - wiki_start_pages=["Forside"], - ), - "German": Language( - name="German", - iso_code="de", - use_ascii=True, - charsets=["ISO-8859-1", "ISO-8859-15", "WINDOWS-1252", "MacRoman"], - alphabet="äöüßẞÄÖÜ", - wiki_start_pages=["Wikipedia:Hauptseite"], - ), - "Greek": Language( - name="Greek", - iso_code="el", - use_ascii=False, - charsets=["ISO-8859-7", "WINDOWS-1253"], - alphabet="αβγδεζηθικλμνξοπρσςτυφχψωάέήίόύώΑΒΓΔΕΖΗΘΙΚΛΜΝΞΟΠΡΣΣΤΥΦΧΨΩΆΈΉΊΌΎΏ", - wiki_start_pages=["Πύλη:Κύρια"], - ), - "English": Language( - name="English", - iso_code="en", - use_ascii=True, - charsets=["ISO-8859-1", "WINDOWS-1252", "MacRoman"], - wiki_start_pages=["Main_Page"], - ), - "Esperanto": Language( - name="Esperanto", - iso_code="eo", - # Q, W, X, and Y not used at all - use_ascii=False, - charsets=["ISO-8859-3"], - alphabet="abcĉdefgĝhĥijĵklmnoprsŝtuŭvzABCĈDEFGĜHĤIJĴKLMNOPRSŜTUŬVZ", - wiki_start_pages=["Vikipedio:Ĉefpaĝo"], - ), - "Spanish": Language( - name="Spanish", - iso_code="es", - use_ascii=True, - charsets=["ISO-8859-1", "ISO-8859-15", "WINDOWS-1252", "MacRoman"], - alphabet="ñáéíóúüÑÁÉÍÓÚÜ", - wiki_start_pages=["Wikipedia:Portada"], - ), - "Estonian": Language( - name="Estonian", - iso_code="et", - use_ascii=False, - charsets=["ISO-8859-4", "ISO-8859-13", "WINDOWS-1257"], - # C, F, Š, Q, W, X, Y, Z, Ž are only for - # loanwords - alphabet="ABDEGHIJKLMNOPRSTUVÕÄÖÜabdeghijklmnoprstuvõäöü", - wiki_start_pages=["Esileht"], - ), - "Finnish": Language( - name="Finnish", - iso_code="fi", - use_ascii=True, - charsets=["ISO-8859-1", "ISO-8859-15", "WINDOWS-1252", "MacRoman"], - alphabet="ÅÄÖŠŽåäöšž", - wiki_start_pages=["Wikipedia:Etusivu"], - ), - "French": Language( - name="French", - iso_code="fr", - use_ascii=True, - charsets=["ISO-8859-1", "ISO-8859-15", "WINDOWS-1252", "MacRoman"], - alphabet="œàâçèéîïùûêŒÀÂÇÈÉÎÏÙÛÊ", - wiki_start_pages=["Wikipédia:Accueil_principal", "Bœuf (animal)"], - ), - "Hebrew": Language( - name="Hebrew", - iso_code="he", - use_ascii=False, - charsets=["ISO-8859-8", "WINDOWS-1255"], - alphabet="אבגדהוזחטיךכלםמןנסעףפץצקרשתװױײ", - wiki_start_pages=["עמוד_ראשי"], - ), - "Croatian": Language( - name="Croatian", - iso_code="hr", - # Q, W, X, Y are only used for foreign words. - use_ascii=False, - charsets=["ISO-8859-2", "WINDOWS-1250"], - alphabet="abcčćdđefghijklmnoprsštuvzžABCČĆDĐEFGHIJKLMNOPRSŠTUVZŽ", - wiki_start_pages=["Glavna_stranica"], - ), - "Hungarian": Language( - name="Hungarian", - iso_code="hu", - # Q, W, X, Y are only used for foreign words. - use_ascii=False, - charsets=["ISO-8859-2", "WINDOWS-1250"], - alphabet="abcdefghijklmnoprstuvzáéíóöőúüűABCDEFGHIJKLMNOPRSTUVZÁÉÍÓÖŐÚÜŰ", - wiki_start_pages=["Kezdőlap"], - ), - "Italian": Language( - name="Italian", - iso_code="it", - use_ascii=True, - charsets=["ISO-8859-1", "ISO-8859-15", "WINDOWS-1252", "MacRoman"], - alphabet="ÀÈÉÌÒÓÙàèéìòóù", - wiki_start_pages=["Pagina_principale"], - ), - "Lithuanian": Language( - name="Lithuanian", - iso_code="lt", - use_ascii=False, - charsets=["ISO-8859-13", "WINDOWS-1257", "ISO-8859-4"], - # Q, W, and X not used at all - alphabet="AĄBCČDEĘĖFGHIĮYJKLMNOPRSŠTUŲŪVZŽaąbcčdeęėfghiįyjklmnoprsštuųūvzž", - wiki_start_pages=["Pagrindinis_puslapis"], - ), - "Latvian": Language( - name="Latvian", - iso_code="lv", - use_ascii=False, - charsets=["ISO-8859-13", "WINDOWS-1257", "ISO-8859-4"], - # Q, W, X, Y are only for loanwords - alphabet="AĀBCČDEĒFGĢHIĪJKĶLĻMNŅOPRSŠTUŪVZŽaābcčdeēfgģhiījkķlļmnņoprsštuūvzž", - wiki_start_pages=["Sākumlapa"], - ), - "Macedonian": Language( - name="Macedonian", - iso_code="mk", - use_ascii=False, - charsets=["ISO-8859-5", "WINDOWS-1251", "MacCyrillic", "IBM855"], - alphabet="АБВГДЃЕЖЗЅИЈКЛЉМНЊОПРСТЌУФХЦЧЏШабвгдѓежзѕијклљмнњопрстќуфхцчџш", - wiki_start_pages=["Главна_страница"], - ), - "Dutch": Language( - name="Dutch", - iso_code="nl", - use_ascii=True, - charsets=["ISO-8859-1", "WINDOWS-1252", "MacRoman"], - wiki_start_pages=["Hoofdpagina"], - ), - "Polish": Language( - name="Polish", - iso_code="pl", - # Q and X are only used for foreign words. - use_ascii=False, - charsets=["ISO-8859-2", "WINDOWS-1250"], - alphabet="AĄBCĆDEĘFGHIJKLŁMNŃOÓPRSŚTUWYZŹŻaąbcćdeęfghijklłmnńoóprsśtuwyzźż", - wiki_start_pages=["Wikipedia:Strona_główna"], - ), - "Portuguese": Language( - name="Portuguese", - iso_code="pt", - use_ascii=True, - charsets=["ISO-8859-1", "ISO-8859-15", "WINDOWS-1252", "MacRoman"], - alphabet="ÁÂÃÀÇÉÊÍÓÔÕÚáâãàçéêíóôõú", - wiki_start_pages=["Wikipédia:Página_principal"], - ), - "Romanian": Language( - name="Romanian", - iso_code="ro", - use_ascii=True, - charsets=["ISO-8859-2", "WINDOWS-1250"], - alphabet="ăâîșțĂÂÎȘȚ", - wiki_start_pages=["Pagina_principală"], - ), - "Russian": Language( - name="Russian", - iso_code="ru", - use_ascii=False, - charsets=[ - "ISO-8859-5", - "WINDOWS-1251", - "KOI8-R", - "MacCyrillic", - "IBM866", - "IBM855", - ], - alphabet="абвгдеёжзийклмнопрстуфхцчшщъыьэюяАБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ", - wiki_start_pages=["Заглавная_страница"], - ), - "Slovak": Language( - name="Slovak", - iso_code="sk", - use_ascii=True, - charsets=["ISO-8859-2", "WINDOWS-1250"], - alphabet="áäčďéíĺľňóôŕšťúýžÁÄČĎÉÍĹĽŇÓÔŔŠŤÚÝŽ", - wiki_start_pages=["Hlavná_stránka"], - ), - "Slovene": Language( - name="Slovene", - iso_code="sl", - # Q, W, X, Y are only used for foreign words. - use_ascii=False, - charsets=["ISO-8859-2", "WINDOWS-1250"], - alphabet="abcčdefghijklmnoprsštuvzžABCČDEFGHIJKLMNOPRSŠTUVZŽ", - wiki_start_pages=["Glavna_stran"], - ), - # Serbian can be written in both Latin and Cyrillic, but there's no - # simple way to get the Latin alphabet pages from Wikipedia through - # the API, so for now we just support Cyrillic. - "Serbian": Language( - name="Serbian", - iso_code="sr", - alphabet="АБВГДЂЕЖЗИЈКЛЉМНЊОПРСТЋУФХЦЧЏШабвгдђежзијклљмнњопрстћуфхцчџш", - charsets=["ISO-8859-5", "WINDOWS-1251", "MacCyrillic", "IBM855"], - wiki_start_pages=["Главна_страна"], - ), - "Thai": Language( - name="Thai", - iso_code="th", - use_ascii=False, - charsets=["ISO-8859-11", "TIS-620", "CP874"], - alphabet="กขฃคฅฆงจฉชซฌญฎฏฐฑฒณดตถทธนบปผฝพฟภมยรฤลฦวศษสหฬอฮฯะัาำิีึืฺุู฿เแโใไๅๆ็่้๊๋์ํ๎๏๐๑๒๓๔๕๖๗๘๙๚๛", - wiki_start_pages=["หน้าหลัก"], - ), - "Turkish": Language( - name="Turkish", - iso_code="tr", - # Q, W, and X are not used by Turkish - use_ascii=False, - charsets=["ISO-8859-3", "ISO-8859-9", "WINDOWS-1254"], - alphabet="abcçdefgğhıijklmnoöprsştuüvyzâîûABCÇDEFGĞHIİJKLMNOÖPRSŞTUÜVYZÂÎÛ", - wiki_start_pages=["Ana_Sayfa"], - ), - "Vietnamese": Language( - name="Vietnamese", - iso_code="vi", - use_ascii=False, - # Windows-1258 is the only common 8-bit - # Vietnamese encoding supported by Python. - # From Wikipedia: - # For systems that lack support for Unicode, - # dozens of 8-bit Vietnamese code pages are - # available.[1] The most common are VISCII - # (TCVN 5712:1993), VPS, and Windows-1258.[3] - # Where ASCII is required, such as when - # ensuring readability in plain text e-mail, - # Vietnamese letters are often encoded - # according to Vietnamese Quoted-Readable - # (VIQR) or VSCII Mnemonic (VSCII-MNEM),[4] - # though usage of either variable-width - # scheme has declined dramatically following - # the adoption of Unicode on the World Wide - # Web. - charsets=["WINDOWS-1258"], - alphabet="aăâbcdđeêghiklmnoôơpqrstuưvxyAĂÂBCDĐEÊGHIKLMNOÔƠPQRSTUƯVXY", - wiki_start_pages=["Chữ_Quốc_ngữ"], - ), -} diff --git a/gestao_raul/Lib/site-packages/pip/_vendor/chardet/resultdict.py b/gestao_raul/Lib/site-packages/pip/_vendor/chardet/resultdict.py deleted file mode 100644 index 7d36e64..0000000 --- a/gestao_raul/Lib/site-packages/pip/_vendor/chardet/resultdict.py +++ /dev/null @@ -1,16 +0,0 @@ -from typing import TYPE_CHECKING, Optional - -if TYPE_CHECKING: - # TypedDict was introduced in Python 3.8. - # - # TODO: Remove the else block and TYPE_CHECKING check when dropping support - # for Python 3.7. - from typing import TypedDict - - class ResultDict(TypedDict): - encoding: Optional[str] - confidence: float - language: Optional[str] - -else: - ResultDict = dict diff --git a/gestao_raul/Lib/site-packages/pip/_vendor/chardet/sbcharsetprober.py b/gestao_raul/Lib/site-packages/pip/_vendor/chardet/sbcharsetprober.py deleted file mode 100644 index 0ffbcdd..0000000 --- a/gestao_raul/Lib/site-packages/pip/_vendor/chardet/sbcharsetprober.py +++ /dev/null @@ -1,162 +0,0 @@ -######################## 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 typing import Dict, List, NamedTuple, Optional, Union - -from .charsetprober import CharSetProber -from .enums import CharacterCategory, ProbingState, SequenceLikelihood - - -class SingleByteCharSetModel(NamedTuple): - charset_name: str - language: str - char_to_order_map: Dict[int, int] - language_model: Dict[int, Dict[int, int]] - typical_positive_ratio: float - keep_ascii_letters: bool - alphabet: str - - -class SingleByteCharSetProber(CharSetProber): - SAMPLE_SIZE = 64 - SB_ENOUGH_REL_THRESHOLD = 1024 # 0.25 * SAMPLE_SIZE^2 - POSITIVE_SHORTCUT_THRESHOLD = 0.95 - NEGATIVE_SHORTCUT_THRESHOLD = 0.05 - - def __init__( - self, - model: SingleByteCharSetModel, - is_reversed: bool = False, - name_prober: Optional[CharSetProber] = None, - ) -> None: - super().__init__() - self._model = model - # TRUE if we need to reverse every pair in the model lookup - self._reversed = is_reversed - # Optional auxiliary prober for name decision - self._name_prober = name_prober - self._last_order = 255 - self._seq_counters: List[int] = [] - self._total_seqs = 0 - self._total_char = 0 - self._control_char = 0 - self._freq_char = 0 - self.reset() - - def reset(self) -> None: - super().reset() - # char order of last character - self._last_order = 255 - self._seq_counters = [0] * SequenceLikelihood.get_num_categories() - self._total_seqs = 0 - self._total_char = 0 - self._control_char = 0 - # characters that fall in our sampling range - self._freq_char = 0 - - @property - def charset_name(self) -> Optional[str]: - if self._name_prober: - return self._name_prober.charset_name - return self._model.charset_name - - @property - def language(self) -> Optional[str]: - if self._name_prober: - return self._name_prober.language - return self._model.language - - def feed(self, byte_str: Union[bytes, bytearray]) -> ProbingState: - # TODO: Make filter_international_words keep things in self.alphabet - if not self._model.keep_ascii_letters: - byte_str = self.filter_international_words(byte_str) - else: - byte_str = self.remove_xml_tags(byte_str) - if not byte_str: - return self.state - char_to_order_map = self._model.char_to_order_map - language_model = self._model.language_model - for char in byte_str: - order = char_to_order_map.get(char, CharacterCategory.UNDEFINED) - # XXX: This was SYMBOL_CAT_ORDER before, with a value of 250, but - # CharacterCategory.SYMBOL is actually 253, so we use CONTROL - # to make it closer to the original intent. The only difference - # is whether or not we count digits and control characters for - # _total_char purposes. - if order < CharacterCategory.CONTROL: - self._total_char += 1 - if order < self.SAMPLE_SIZE: - self._freq_char += 1 - if self._last_order < self.SAMPLE_SIZE: - self._total_seqs += 1 - if not self._reversed: - lm_cat = language_model[self._last_order][order] - else: - lm_cat = language_model[order][self._last_order] - self._seq_counters[lm_cat] += 1 - self._last_order = order - - charset_name = self._model.charset_name - if self.state == ProbingState.DETECTING: - if self._total_seqs > 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 threshold %s", - charset_name, - confidence, - self.NEGATIVE_SHORTCUT_THRESHOLD, - ) - self._state = ProbingState.NOT_ME - - return self.state - - def get_confidence(self) -> float: - r = 0.01 - if self._total_seqs > 0: - r = ( - ( - self._seq_counters[SequenceLikelihood.POSITIVE] - + 0.25 * self._seq_counters[SequenceLikelihood.LIKELY] - ) - / self._total_seqs - / self._model.typical_positive_ratio - ) - # The more control characters (proportionnaly to the size - # of the text), the less confident we become in the current - # charset. - r = r * (self._total_char - self._control_char) / self._total_char - r = r * self._freq_char / self._total_char - if r >= 1.0: - r = 0.99 - return r diff --git a/gestao_raul/Lib/site-packages/pip/_vendor/chardet/sbcsgroupprober.py b/gestao_raul/Lib/site-packages/pip/_vendor/chardet/sbcsgroupprober.py deleted file mode 100644 index 890ae84..0000000 --- a/gestao_raul/Lib/site-packages/pip/_vendor/chardet/sbcsgroupprober.py +++ /dev/null @@ -1,88 +0,0 @@ -######################## 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) -> None: - super().__init__() - hebrew_prober = HebrewProber() - logical_hebrew_prober = SingleByteCharSetProber( - WINDOWS_1255_HEBREW_MODEL, is_reversed=False, name_prober=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, is_reversed=True, name_prober=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/gestao_raul/Lib/site-packages/pip/_vendor/chardet/sjisprober.py b/gestao_raul/Lib/site-packages/pip/_vendor/chardet/sjisprober.py deleted file mode 100644 index 91df077..0000000 --- a/gestao_raul/Lib/site-packages/pip/_vendor/chardet/sjisprober.py +++ /dev/null @@ -1,105 +0,0 @@ -######################## 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 typing import Union - -from .chardistribution import SJISDistributionAnalysis -from .codingstatemachine import CodingStateMachine -from .enums import MachineState, ProbingState -from .jpcntx import SJISContextAnalysis -from .mbcharsetprober import MultiByteCharSetProber -from .mbcssm import SJIS_SM_MODEL - - -class SJISProber(MultiByteCharSetProber): - def __init__(self) -> None: - super().__init__() - self.coding_sm = CodingStateMachine(SJIS_SM_MODEL) - self.distribution_analyzer = SJISDistributionAnalysis() - self.context_analyzer = SJISContextAnalysis() - self.reset() - - def reset(self) -> None: - super().reset() - self.context_analyzer.reset() - - @property - def charset_name(self) -> str: - return self.context_analyzer.charset_name - - @property - def language(self) -> str: - return "Japanese" - - def feed(self, byte_str: Union[bytes, bytearray]) -> ProbingState: - assert self.coding_sm is not None - assert self.distribution_analyzer is not None - - for i, byte in enumerate(byte_str): - coding_state = self.coding_sm.next_state(byte) - 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 - if coding_state == MachineState.ITS_ME: - self._state = ProbingState.FOUND_IT - break - if coding_state == MachineState.START: - char_len = self.coding_sm.get_current_charlen() - if i == 0: - self._last_char[1] = byte - 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) -> float: - assert self.distribution_analyzer is not None - - context_conf = self.context_analyzer.get_confidence() - distrib_conf = self.distribution_analyzer.get_confidence() - return max(context_conf, distrib_conf) diff --git a/gestao_raul/Lib/site-packages/pip/_vendor/chardet/universaldetector.py b/gestao_raul/Lib/site-packages/pip/_vendor/chardet/universaldetector.py deleted file mode 100644 index 30c441d..0000000 --- a/gestao_raul/Lib/site-packages/pip/_vendor/chardet/universaldetector.py +++ /dev/null @@ -1,362 +0,0 @@ -######################## 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 typing import List, Optional, Union - -from .charsetgroupprober import CharSetGroupProber -from .charsetprober import CharSetProber -from .enums import InputState, LanguageFilter, ProbingState -from .escprober import EscCharSetProber -from .latin1prober import Latin1Prober -from .macromanprober import MacRomanProber -from .mbcsgroupprober import MBCSGroupProber -from .resultdict import ResultDict -from .sbcsgroupprober import SBCSGroupProber -from .utf1632prober import UTF1632Prober - - -class UniversalDetector: - """ - 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", - } - # Based on https://encoding.spec.whatwg.org/#names-and-labels - # but altered to match Python names for encodings and remove mappings - # that break tests. - LEGACY_MAP = { - "ascii": "Windows-1252", - "iso-8859-1": "Windows-1252", - "tis-620": "ISO-8859-11", - "iso-8859-9": "Windows-1254", - "gb2312": "GB18030", - "euc-kr": "CP949", - "utf-16le": "UTF-16", - } - - def __init__( - self, - lang_filter: LanguageFilter = LanguageFilter.ALL, - should_rename_legacy: bool = False, - ) -> None: - self._esc_charset_prober: Optional[EscCharSetProber] = None - self._utf1632_prober: Optional[UTF1632Prober] = None - self._charset_probers: List[CharSetProber] = [] - self.result: ResultDict = { - "encoding": None, - "confidence": 0.0, - "language": None, - } - self.done = False - self._got_data = False - self._input_state = InputState.PURE_ASCII - self._last_char = b"" - self.lang_filter = lang_filter - self.logger = logging.getLogger(__name__) - self._has_win_bytes = False - self.should_rename_legacy = should_rename_legacy - self.reset() - - @property - def input_state(self) -> int: - return self._input_state - - @property - def has_win_bytes(self) -> bool: - return self._has_win_bytes - - @property - def charset_probers(self) -> List[CharSetProber]: - return self._charset_probers - - def reset(self) -> None: - """ - 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() - if self._utf1632_prober: - self._utf1632_prober.reset() - for prober in self._charset_probers: - prober.reset() - - def feed(self, byte_str: Union[bytes, bytearray]) -> None: - """ - 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 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 = { - # TODO: This encoding is not supported by Python. Should remove? - "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 = { - # TODO: This encoding is not supported by Python. Should remove? - "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:] - - # next we will look to see if it is appears to be either a UTF-16 or - # UTF-32 encoding - if not self._utf1632_prober: - self._utf1632_prober = UTF1632Prober() - - if self._utf1632_prober.state == ProbingState.DETECTING: - if self._utf1632_prober.feed(byte_str) == ProbingState.FOUND_IT: - self.result = { - "encoding": self._utf1632_prober.charset_name, - "confidence": self._utf1632_prober.get_confidence(), - "language": "", - } - self.done = True - return - - # 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()) - self._charset_probers.append(MacRomanProber()) - 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) -> ResultDict: - """ - 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 - assert charset_name is not None - lower_charset_name = 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 - ) - # Rename legacy encodings with superset encodings if asked - if self.should_rename_legacy: - charset_name = self.LEGACY_MAP.get( - (charset_name or "").lower(), 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/gestao_raul/Lib/site-packages/pip/_vendor/chardet/utf1632prober.py b/gestao_raul/Lib/site-packages/pip/_vendor/chardet/utf1632prober.py deleted file mode 100644 index 6bdec63..0000000 --- a/gestao_raul/Lib/site-packages/pip/_vendor/chardet/utf1632prober.py +++ /dev/null @@ -1,225 +0,0 @@ -######################## BEGIN LICENSE BLOCK ######################## -# -# Contributor(s): -# Jason Zavaglia -# -# 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 typing import List, Union - -from .charsetprober import CharSetProber -from .enums import ProbingState - - -class UTF1632Prober(CharSetProber): - """ - This class simply looks for occurrences of zero bytes, and infers - whether the file is UTF16 or UTF32 (low-endian or big-endian) - For instance, files looking like ( \0 \0 \0 [nonzero] )+ - have a good probability to be UTF32BE. Files looking like ( \0 [nonzero] )+ - may be guessed to be UTF16BE, and inversely for little-endian varieties. - """ - - # how many logical characters to scan before feeling confident of prediction - MIN_CHARS_FOR_DETECTION = 20 - # a fixed constant ratio of expected zeros or non-zeros in modulo-position. - EXPECTED_RATIO = 0.94 - - def __init__(self) -> None: - super().__init__() - self.position = 0 - self.zeros_at_mod = [0] * 4 - self.nonzeros_at_mod = [0] * 4 - self._state = ProbingState.DETECTING - self.quad = [0, 0, 0, 0] - self.invalid_utf16be = False - self.invalid_utf16le = False - self.invalid_utf32be = False - self.invalid_utf32le = False - self.first_half_surrogate_pair_detected_16be = False - self.first_half_surrogate_pair_detected_16le = False - self.reset() - - def reset(self) -> None: - super().reset() - self.position = 0 - self.zeros_at_mod = [0] * 4 - self.nonzeros_at_mod = [0] * 4 - self._state = ProbingState.DETECTING - self.invalid_utf16be = False - self.invalid_utf16le = False - self.invalid_utf32be = False - self.invalid_utf32le = False - self.first_half_surrogate_pair_detected_16be = False - self.first_half_surrogate_pair_detected_16le = False - self.quad = [0, 0, 0, 0] - - @property - def charset_name(self) -> str: - if self.is_likely_utf32be(): - return "utf-32be" - if self.is_likely_utf32le(): - return "utf-32le" - if self.is_likely_utf16be(): - return "utf-16be" - if self.is_likely_utf16le(): - return "utf-16le" - # default to something valid - return "utf-16" - - @property - def language(self) -> str: - return "" - - def approx_32bit_chars(self) -> float: - return max(1.0, self.position / 4.0) - - def approx_16bit_chars(self) -> float: - return max(1.0, self.position / 2.0) - - def is_likely_utf32be(self) -> bool: - approx_chars = self.approx_32bit_chars() - return approx_chars >= self.MIN_CHARS_FOR_DETECTION and ( - self.zeros_at_mod[0] / approx_chars > self.EXPECTED_RATIO - and self.zeros_at_mod[1] / approx_chars > self.EXPECTED_RATIO - and self.zeros_at_mod[2] / approx_chars > self.EXPECTED_RATIO - and self.nonzeros_at_mod[3] / approx_chars > self.EXPECTED_RATIO - and not self.invalid_utf32be - ) - - def is_likely_utf32le(self) -> bool: - approx_chars = self.approx_32bit_chars() - return approx_chars >= self.MIN_CHARS_FOR_DETECTION and ( - self.nonzeros_at_mod[0] / approx_chars > self.EXPECTED_RATIO - and self.zeros_at_mod[1] / approx_chars > self.EXPECTED_RATIO - and self.zeros_at_mod[2] / approx_chars > self.EXPECTED_RATIO - and self.zeros_at_mod[3] / approx_chars > self.EXPECTED_RATIO - and not self.invalid_utf32le - ) - - def is_likely_utf16be(self) -> bool: - approx_chars = self.approx_16bit_chars() - return approx_chars >= self.MIN_CHARS_FOR_DETECTION and ( - (self.nonzeros_at_mod[1] + self.nonzeros_at_mod[3]) / approx_chars - > self.EXPECTED_RATIO - and (self.zeros_at_mod[0] + self.zeros_at_mod[2]) / approx_chars - > self.EXPECTED_RATIO - and not self.invalid_utf16be - ) - - def is_likely_utf16le(self) -> bool: - approx_chars = self.approx_16bit_chars() - return approx_chars >= self.MIN_CHARS_FOR_DETECTION and ( - (self.nonzeros_at_mod[0] + self.nonzeros_at_mod[2]) / approx_chars - > self.EXPECTED_RATIO - and (self.zeros_at_mod[1] + self.zeros_at_mod[3]) / approx_chars - > self.EXPECTED_RATIO - and not self.invalid_utf16le - ) - - def validate_utf32_characters(self, quad: List[int]) -> None: - """ - Validate if the quad of bytes is valid UTF-32. - - UTF-32 is valid in the range 0x00000000 - 0x0010FFFF - excluding 0x0000D800 - 0x0000DFFF - - https://en.wikipedia.org/wiki/UTF-32 - """ - if ( - quad[0] != 0 - or quad[1] > 0x10 - or (quad[0] == 0 and quad[1] == 0 and 0xD8 <= quad[2] <= 0xDF) - ): - self.invalid_utf32be = True - if ( - quad[3] != 0 - or quad[2] > 0x10 - or (quad[3] == 0 and quad[2] == 0 and 0xD8 <= quad[1] <= 0xDF) - ): - self.invalid_utf32le = True - - def validate_utf16_characters(self, pair: List[int]) -> None: - """ - Validate if the pair of bytes is valid UTF-16. - - UTF-16 is valid in the range 0x0000 - 0xFFFF excluding 0xD800 - 0xFFFF - with an exception for surrogate pairs, which must be in the range - 0xD800-0xDBFF followed by 0xDC00-0xDFFF - - https://en.wikipedia.org/wiki/UTF-16 - """ - if not self.first_half_surrogate_pair_detected_16be: - if 0xD8 <= pair[0] <= 0xDB: - self.first_half_surrogate_pair_detected_16be = True - elif 0xDC <= pair[0] <= 0xDF: - self.invalid_utf16be = True - else: - if 0xDC <= pair[0] <= 0xDF: - self.first_half_surrogate_pair_detected_16be = False - else: - self.invalid_utf16be = True - - if not self.first_half_surrogate_pair_detected_16le: - if 0xD8 <= pair[1] <= 0xDB: - self.first_half_surrogate_pair_detected_16le = True - elif 0xDC <= pair[1] <= 0xDF: - self.invalid_utf16le = True - else: - if 0xDC <= pair[1] <= 0xDF: - self.first_half_surrogate_pair_detected_16le = False - else: - self.invalid_utf16le = True - - def feed(self, byte_str: Union[bytes, bytearray]) -> ProbingState: - for c in byte_str: - mod4 = self.position % 4 - self.quad[mod4] = c - if mod4 == 3: - self.validate_utf32_characters(self.quad) - self.validate_utf16_characters(self.quad[0:2]) - self.validate_utf16_characters(self.quad[2:4]) - if c == 0: - self.zeros_at_mod[mod4] += 1 - else: - self.nonzeros_at_mod[mod4] += 1 - self.position += 1 - return self.state - - @property - def state(self) -> ProbingState: - if self._state in {ProbingState.NOT_ME, ProbingState.FOUND_IT}: - # terminal, decided states - return self._state - if self.get_confidence() > 0.80: - self._state = ProbingState.FOUND_IT - elif self.position > 4 * 1024: - # if we get to 4kb into the file, and we can't conclude it's UTF, - # let's give up - self._state = ProbingState.NOT_ME - return self._state - - def get_confidence(self) -> float: - return ( - 0.85 - if ( - self.is_likely_utf16le() - or self.is_likely_utf16be() - or self.is_likely_utf32le() - or self.is_likely_utf32be() - ) - else 0.00 - ) diff --git a/gestao_raul/Lib/site-packages/pip/_vendor/chardet/utf8prober.py b/gestao_raul/Lib/site-packages/pip/_vendor/chardet/utf8prober.py deleted file mode 100644 index d96354d..0000000 --- a/gestao_raul/Lib/site-packages/pip/_vendor/chardet/utf8prober.py +++ /dev/null @@ -1,82 +0,0 @@ -######################## 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 typing import Union - -from .charsetprober import CharSetProber -from .codingstatemachine import CodingStateMachine -from .enums import MachineState, ProbingState -from .mbcssm import UTF8_SM_MODEL - - -class UTF8Prober(CharSetProber): - ONE_CHAR_PROB = 0.5 - - def __init__(self) -> None: - super().__init__() - self.coding_sm = CodingStateMachine(UTF8_SM_MODEL) - self._num_mb_chars = 0 - self.reset() - - def reset(self) -> None: - super().reset() - self.coding_sm.reset() - self._num_mb_chars = 0 - - @property - def charset_name(self) -> str: - return "utf-8" - - @property - def language(self) -> str: - return "" - - def feed(self, byte_str: Union[bytes, bytearray]) -> ProbingState: - for c in byte_str: - coding_state = self.coding_sm.next_state(c) - if coding_state == MachineState.ERROR: - self._state = ProbingState.NOT_ME - break - if coding_state == MachineState.ITS_ME: - self._state = ProbingState.FOUND_IT - break - if 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) -> float: - unlike = 0.99 - if self._num_mb_chars < 6: - unlike *= self.ONE_CHAR_PROB**self._num_mb_chars - return 1.0 - unlike - return unlike diff --git a/gestao_raul/Lib/site-packages/pip/_vendor/chardet/version.py b/gestao_raul/Lib/site-packages/pip/_vendor/chardet/version.py deleted file mode 100644 index c5e9d85..0000000 --- a/gestao_raul/Lib/site-packages/pip/_vendor/chardet/version.py +++ /dev/null @@ -1,9 +0,0 @@ -""" -This module exists only to simplify retrieving the version number of chardet -from within setuptools and from chardet subpackages. - -:author: Dan Blanchard (dan.blanchard@gmail.com) -""" - -__version__ = "5.1.0" -VERSION = __version__.split(".") diff --git a/gestao_raul/Lib/site-packages/pip/_vendor/colorama/__init__.py b/gestao_raul/Lib/site-packages/pip/_vendor/colorama/__init__.py deleted file mode 100644 index 383101c..0000000 --- a/gestao_raul/Lib/site-packages/pip/_vendor/colorama/__init__.py +++ /dev/null @@ -1,7 +0,0 @@ -# Copyright Jonathan Hartley 2013. BSD 3-Clause license, see LICENSE file. -from .initialise import init, deinit, reinit, colorama_text, just_fix_windows_console -from .ansi import Fore, Back, Style, Cursor -from .ansitowin32 import AnsiToWin32 - -__version__ = '0.4.6' - diff --git a/gestao_raul/Lib/site-packages/pip/_vendor/colorama/__pycache__/__init__.cpython-310.pyc b/gestao_raul/Lib/site-packages/pip/_vendor/colorama/__pycache__/__init__.cpython-310.pyc deleted file mode 100644 index ac46b25575ceaf8e27b727162cea464b25582c53..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 478 zcmY*V%}T^D5N^6@x4Yf-ya!*P2X|#xJcx*YhzIeaB7{PyZIo!zEJ^D6^F+Q>t&CGmb#^YfG^7?soHzZN?j?Q0+!P$rBP63*zAu7^@5goHw_gGI;Ms>mx zg1K0wy3hJLW0@YXfgUnw3GtrF^@xqYrfl3K7g3RZz^tf90+p@wA#KEuwm*7Y8)a;z zEAGXU50m@Od44OO_)4~oSvg*t))^%V8t93!BGALCehA5he^w%-N1b)X79`{ct&^AL zTDFV%OR_oLnr@#LYix+aWTm7N7Wvs80!2s=Qh-1!_-p&v4=Nxxa>NakP*q^Z_#9g^Z)<= diff --git a/gestao_raul/Lib/site-packages/pip/_vendor/colorama/__pycache__/ansi.cpython-310.pyc b/gestao_raul/Lib/site-packages/pip/_vendor/colorama/__pycache__/ansi.cpython-310.pyc deleted file mode 100644 index bd8f40ba919a1e5b0ff49418fccfa22e73e39948..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3004 zcma)8-ER{|5Wl@U+vl^-HX$U?($@XPZL!-*Z6&Bs9LIzd<3w?ylqK|fc$ehB@tM61 zlr%_4;SZsY`IqjsPxs6VLaNl6z1VTSB+lBOcXoU;J2Su8b>KL*2G8GbS2v=pru~b; z_+x@F10#G5z%;5cLJ8BU&J1cWlcip1)MROvf$tQ%$g<3SMQ9pkIhKc6W?o|sE4wn09}CP1FxSX!kmn|@f{3fOj!mp6Ey3s3T}TyJ+4%H2&*cwNawxf?K8ltFnQ{J!-2 z8?e#~gjxdqmf!b!Vb$(%eyzMI<=|Sa#{1Q0{$qc@neSBtu~9>*hIU;ZcD(_2(Wt$n ze|QhZ{dXkOC6Ke>gL4B$1IC*YfYc<})%M6Vq;y(?&Fk%mZ0+lj(daBhMkqyvL?+tY z*MtQxymK4Z)>lI=!u4moCxi95pu4@r`!ZbL;Gy&aS9sgKBlDL3U_JCDzdG=`k3IO+ z`oJI5+^4+H0#Q>Tds|-3>xX`I@H}$Rn=1ns6BXuhr#e812qejga8QTggh@CU#;!IE zVI73CqyKol0`V+%8j&&EY(YFJ>B}Bh;UoZ@)1qw1rK>bW5Je6FXEAy>;dYosfm)Td z-vrWhAJPSNKVd!J?Qu`IVOMb8pMW1G4kq8v_HAWbsQ0i6W81b9!#%&xFO1Aip;;J5 z9^B~+j1Zl24LV4J4uU>{t}&Pa#W$mD9jefP{f9>)#%R+pRHA=|iG(EYkvZ-Dl=-?`pebPk*6H1836Q)%VDrL9{0(8?wu-q#}d)BC>%lLWa+Lxfx|Pxb&nH zQ3k4j6IJYr5t$+HJ&er0x5cB>Q?IvuBD0q3`h8!z?gy|h#h1Kk6PuKX{?hz!XJQml zb@;R>C zO-OnLEgU1MIk&jh{(5A(IA$6(?_s=gw(-o(#pSj7@?2$PKdHG&RrNsm9xmq2c45xe z8@In5*&p9OYPy*E;e+#GDZ|6zNA=dgb*(r=A5mfC85m>y6uD+7FB|e2E@fpJB2;U%lhfqcM9^og1!-5^s z{0mUvP)%iN&{R5p3cA46E{r1&l5z&dnJi`pzp zbIhiBmZJ{K(*kp7kril(72!55(Ft~ro@W!#0OunM1HKsu9)AoD;!hCD2pD6GF~%5U zjGK!w6)`d{rU>^C))DR_{DI&i{E6TJwD%{EC5xtJTTonTEH~$9YJR!dY}54JW~;Th zM$OsQYLjN})aRS+l{z&Wck6AMTD!Hd(u`8e%}#TLI<1BITPwiENd5;0z(F$}F;$s8v}dUhFWOO3gO zJ2c&1T)tCp(X1-FTW_^a-7``Sxfj|1!x})QaUFXXomM8IjO((X>$)NZvdAMi2>6!z zJ0kG*7Pz}89Xxo%yHZ^~swGv~R6dkhYGStlSD{2vN(D&M4RtJ@w#CT$HMt0HU?+#z fP{4{5GQ%<~!-h}EEagg0X{t1pPNzv4ZrT3<^bSr- diff --git a/gestao_raul/Lib/site-packages/pip/_vendor/colorama/__pycache__/ansitowin32.cpython-310.pyc b/gestao_raul/Lib/site-packages/pip/_vendor/colorama/__pycache__/ansitowin32.cpython-310.pyc deleted file mode 100644 index 28b34bf506b92b62725afad9fe4306223d113f37..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8516 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 diff --git a/gestao_raul/Lib/site-packages/pip/_vendor/colorama/__pycache__/initialise.cpython-310.pyc b/gestao_raul/Lib/site-packages/pip/_vendor/colorama/__pycache__/initialise.cpython-310.pyc deleted file mode 100644 index ec3d6aac13a7e418e2d4cd12c5a2788cda110243..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2261 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 V!hbS2)mIrKr{&T)L-|u??te(LAoBnK diff --git a/gestao_raul/Lib/site-packages/pip/_vendor/colorama/ansi.py b/gestao_raul/Lib/site-packages/pip/_vendor/colorama/ansi.py deleted file mode 100644 index 11ec695..0000000 --- a/gestao_raul/Lib/site-packages/pip/_vendor/colorama/ansi.py +++ /dev/null @@ -1,102 +0,0 @@ -# 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/gestao_raul/Lib/site-packages/pip/_vendor/colorama/ansitowin32.py b/gestao_raul/Lib/site-packages/pip/_vendor/colorama/ansitowin32.py deleted file mode 100644 index abf209e..0000000 --- a/gestao_raul/Lib/site-packages/pip/_vendor/colorama/ansitowin32.py +++ /dev/null @@ -1,277 +0,0 @@ -# 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 enable_vt_processing, 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 __setstate__(self, state): - self.__dict__ = state - - def __getstate__(self): - return self.__dict__ - - 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 - # AttributeError in the case that the stream doesn't support being closed - # ValueError for the case that the stream has already been detached when atexit runs - except (AttributeError, ValueError): - 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() - try: - fd = wrapped.fileno() - except Exception: - fd = -1 - system_has_native_ansi = not on_windows or enable_vt_processing(fd) - have_tty = not self.stream.closed and self.stream.isatty() - need_conversion = conversion_supported and not system_has_native_ansi - - # should we strip ANSI sequences from our output? - if strip is None: - strip = need_conversion or not have_tty - self.strip = strip - - # should we should convert ANSI sequences into win32 calls? - if convert is None: - convert = need_conversion and have_tty - 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 - - - def flush(self): - self.wrapped.flush() diff --git a/gestao_raul/Lib/site-packages/pip/_vendor/colorama/initialise.py b/gestao_raul/Lib/site-packages/pip/_vendor/colorama/initialise.py deleted file mode 100644 index d5fd4b7..0000000 --- a/gestao_raul/Lib/site-packages/pip/_vendor/colorama/initialise.py +++ /dev/null @@ -1,121 +0,0 @@ -# Copyright Jonathan Hartley 2013. BSD 3-Clause license, see LICENSE file. -import atexit -import contextlib -import sys - -from .ansitowin32 import AnsiToWin32 - - -def _wipe_internal_state_for_tests(): - global orig_stdout, orig_stderr - orig_stdout = None - orig_stderr = None - - global wrapped_stdout, wrapped_stderr - wrapped_stdout = None - wrapped_stderr = None - - global atexit_done - atexit_done = False - - global fixed_windows_console - fixed_windows_console = False - - try: - # no-op if it wasn't registered - atexit.unregister(reset_all) - except AttributeError: - # python 2: no atexit.unregister. Oh well, we did our best. - pass - - -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 - - -def just_fix_windows_console(): - global fixed_windows_console - - if sys.platform != "win32": - return - if fixed_windows_console: - return - if wrapped_stdout is not None or wrapped_stderr is not None: - # Someone already ran init() and it did stuff, so we won't second-guess them - return - - # On newer versions of Windows, AnsiToWin32.__init__ will implicitly enable the - # native ANSI support in the console as a side-effect. We only need to actually - # replace sys.stdout/stderr if we're in the old-style conversion mode. - new_stdout = AnsiToWin32(sys.stdout, convert=None, strip=None, autoreset=False) - if new_stdout.convert: - sys.stdout = new_stdout - new_stderr = AnsiToWin32(sys.stderr, convert=None, strip=None, autoreset=False) - if new_stderr.convert: - sys.stderr = new_stderr - - fixed_windows_console = True - -@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 - - -# Use this for initial setup as well, to reduce code duplication -_wipe_internal_state_for_tests() diff --git a/gestao_raul/Lib/site-packages/pip/_vendor/colorama/tests/__init__.py b/gestao_raul/Lib/site-packages/pip/_vendor/colorama/tests/__init__.py deleted file mode 100644 index 8c5661e..0000000 --- a/gestao_raul/Lib/site-packages/pip/_vendor/colorama/tests/__init__.py +++ /dev/null @@ -1 +0,0 @@ -# Copyright Jonathan Hartley 2013. BSD 3-Clause license, see LICENSE file. diff --git a/gestao_raul/Lib/site-packages/pip/_vendor/colorama/tests/__pycache__/__init__.cpython-310.pyc b/gestao_raul/Lib/site-packages/pip/_vendor/colorama/tests/__pycache__/__init__.cpython-310.pyc deleted file mode 100644 index 493d0e432f4fe5eff9e567ec270c606c1d351df5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 198 zcmd1j<>g`kg6bck>E1y4F^Gc<7=auIATDMB5-AM944RC7D;bJF!U*D5rn6N{XmM&$ zaZGt?PDy@@OMY@`ZfaghaZGw@aYR5vVGrAhSR} zzAQB_CBH~NIX@@AC^0utzXYhgSU)~KGcU6wK3=b&@)n0pZhlH>PO2Tq3B^o6f`tJ9 D9jG@0 diff --git a/gestao_raul/Lib/site-packages/pip/_vendor/colorama/tests/__pycache__/ansi_test.cpython-310.pyc b/gestao_raul/Lib/site-packages/pip/_vendor/colorama/tests/__pycache__/ansi_test.cpython-310.pyc deleted file mode 100644 index 18e7635d895ecebaf71d80cdbfeb8d9d9f686462..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2290 zcma)7TXWk)6xQly`5MP5DUd?BgMcPYBIuZ5ppGNb430aKI1{RPMx$m$#;#?T;bbOw3+o&9!o&hEMBY*MY36nK95YxnSWSyBE#l7Dm{ z58*!0Y};1$H25m|B3D-tDCh9$2ISn;YG z3N>lrxk3w}da8M~aE4mXRJIywrwVA19r3q|FJM2VYpdMqg=y9f(va(MFc`g1Vcyob zz7`xj)}c)2x72fbu(Fj`$XKm+*)6(7PsbpS%eBUJHJN~ro=@icS+ zq)rWLf;4D>S|CkYq$Q9ATHaCY3b(`taG(PMMlK#4W1!mbPd@?pRryWHNTv?8Q!*1+w^KdnuaXvCYk%wB#5}49gjnM4Q-yB)GlJOC>F0p z2IDRwQ-?tYaq-nm1Jp4B49m|pcv(8?Cv0%YDlo^Y0Add* zo*a#C0TTx^Nr{}y{&%p8^=oIl$lA+4K~rXJ2sJUy*ifTtj_Fj(F@xrEJ2a`0TPsjA z$1GaNu_Co{tVD}BR;HyKtI%?eRcR&1YP6bTGqjdtbvlz{v$URL4LXYqqi;95C&t45 z>it-VWhqvqSe3$&;tMIhl;VLDO(B|6y(!h3QoSkFn^L_g)tgei`5?CEcv+UcsCi~$ z9*wn5tNlIKw%v7ZY;3!3mzz)APUrC+eD0lHmlw8L8*aDP;(Gf@tILhON1HvD8{6)V z+vC;F=EkF*FyXsD@Uoy_3W;13CXv>}nlz2Pa<01TBAXHHe5>g)Zi!6V5?ceku^=1x zybhodA6U9DMm6K#g4cY5AE3Ia$aR?o~UlEMayVjGrgekr{DhMjV+DM`py4 z8F6Gr9GMYECe(q1nhX2O_d#DsFd!sY5E4uX2{wcTBSL}|Au+M+bvOt!5YTD%Cc*;3 z9fY?K-bT2K@D9Se2pAmpKEekGA0m8&@G%0mRc0gH)B!}m@kW>iduRP_SH}OzvDNlPfQGZHrsJKMLZ|_j$?pc(;h2E*l1Z10Go4)U@4YrnU-PASLVeE?uS>j@7s0J!#!&<8f54R!%Ki^09+5? zLXqWxzAzD&GEQd65nkNlvJ>r}VLxZ0?Z1X2+@4`xZaN&dzLqY2gV%A2surn}TWW=v Os!8ga^=*mh|NIMD)eHRq diff --git a/gestao_raul/Lib/site-packages/pip/_vendor/colorama/tests/__pycache__/ansitowin32_test.cpython-310.pyc b/gestao_raul/Lib/site-packages/pip/_vendor/colorama/tests/__pycache__/ansitowin32_test.cpython-310.pyc deleted file mode 100644 index 02ffb7f48bc7be401fcb3e66bea0bce7592e9c5a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 11601 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 diff --git a/gestao_raul/Lib/site-packages/pip/_vendor/colorama/tests/__pycache__/initialise_test.cpython-310.pyc b/gestao_raul/Lib/site-packages/pip/_vendor/colorama/tests/__pycache__/initialise_test.cpython-310.pyc deleted file mode 100644 index c3977980e0b96f292ceaeeda1d4fcba0cfbf31e8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6898 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 q2tHH$Vpa@XB7;sA0c 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 diff --git a/gestao_raul/Lib/site-packages/pip/_vendor/colorama/tests/ansi_test.py b/gestao_raul/Lib/site-packages/pip/_vendor/colorama/tests/ansi_test.py deleted file mode 100644 index 0a20c80..0000000 --- a/gestao_raul/Lib/site-packages/pip/_vendor/colorama/tests/ansi_test.py +++ /dev/null @@ -1,76 +0,0 @@ -# Copyright Jonathan Hartley 2013. BSD 3-Clause license, see LICENSE file. -import sys -from unittest import TestCase, main - -from ..ansi import Back, Fore, Style -from ..ansitowin32 import AnsiToWin32 - -stdout_orig = sys.stdout -stderr_orig = sys.stderr - - -class AnsiTest(TestCase): - - def setUp(self): - # sanity check: stdout should be a file or StringIO object. - # It will only be AnsiToWin32 if init() has previously wrapped it - self.assertNotEqual(type(sys.stdout), AnsiToWin32) - self.assertNotEqual(type(sys.stderr), AnsiToWin32) - - def tearDown(self): - sys.stdout = stdout_orig - sys.stderr = stderr_orig - - - def testForeAttributes(self): - self.assertEqual(Fore.BLACK, '\033[30m') - self.assertEqual(Fore.RED, '\033[31m') - self.assertEqual(Fore.GREEN, '\033[32m') - self.assertEqual(Fore.YELLOW, '\033[33m') - self.assertEqual(Fore.BLUE, '\033[34m') - self.assertEqual(Fore.MAGENTA, '\033[35m') - self.assertEqual(Fore.CYAN, '\033[36m') - self.assertEqual(Fore.WHITE, '\033[37m') - self.assertEqual(Fore.RESET, '\033[39m') - - # Check the light, extended versions. - self.assertEqual(Fore.LIGHTBLACK_EX, '\033[90m') - self.assertEqual(Fore.LIGHTRED_EX, '\033[91m') - self.assertEqual(Fore.LIGHTGREEN_EX, '\033[92m') - self.assertEqual(Fore.LIGHTYELLOW_EX, '\033[93m') - self.assertEqual(Fore.LIGHTBLUE_EX, '\033[94m') - self.assertEqual(Fore.LIGHTMAGENTA_EX, '\033[95m') - self.assertEqual(Fore.LIGHTCYAN_EX, '\033[96m') - self.assertEqual(Fore.LIGHTWHITE_EX, '\033[97m') - - - def testBackAttributes(self): - self.assertEqual(Back.BLACK, '\033[40m') - self.assertEqual(Back.RED, '\033[41m') - self.assertEqual(Back.GREEN, '\033[42m') - self.assertEqual(Back.YELLOW, '\033[43m') - self.assertEqual(Back.BLUE, '\033[44m') - self.assertEqual(Back.MAGENTA, '\033[45m') - self.assertEqual(Back.CYAN, '\033[46m') - self.assertEqual(Back.WHITE, '\033[47m') - self.assertEqual(Back.RESET, '\033[49m') - - # Check the light, extended versions. - self.assertEqual(Back.LIGHTBLACK_EX, '\033[100m') - self.assertEqual(Back.LIGHTRED_EX, '\033[101m') - self.assertEqual(Back.LIGHTGREEN_EX, '\033[102m') - self.assertEqual(Back.LIGHTYELLOW_EX, '\033[103m') - self.assertEqual(Back.LIGHTBLUE_EX, '\033[104m') - self.assertEqual(Back.LIGHTMAGENTA_EX, '\033[105m') - self.assertEqual(Back.LIGHTCYAN_EX, '\033[106m') - self.assertEqual(Back.LIGHTWHITE_EX, '\033[107m') - - - def testStyleAttributes(self): - self.assertEqual(Style.DIM, '\033[2m') - self.assertEqual(Style.NORMAL, '\033[22m') - self.assertEqual(Style.BRIGHT, '\033[1m') - - -if __name__ == '__main__': - main() diff --git a/gestao_raul/Lib/site-packages/pip/_vendor/colorama/tests/ansitowin32_test.py b/gestao_raul/Lib/site-packages/pip/_vendor/colorama/tests/ansitowin32_test.py deleted file mode 100644 index 91ca551..0000000 --- a/gestao_raul/Lib/site-packages/pip/_vendor/colorama/tests/ansitowin32_test.py +++ /dev/null @@ -1,294 +0,0 @@ -# Copyright Jonathan Hartley 2013. BSD 3-Clause license, see LICENSE file. -from io import StringIO, TextIOWrapper -from unittest import TestCase, main -try: - from contextlib import ExitStack -except ImportError: - # python 2 - from contextlib2 import ExitStack - -try: - from unittest.mock import MagicMock, Mock, patch -except ImportError: - from mock import MagicMock, Mock, patch - -from ..ansitowin32 import AnsiToWin32, StreamWrapper -from ..win32 import ENABLE_VIRTUAL_TERMINAL_PROCESSING -from .utils import osname - - -class StreamWrapperTest(TestCase): - - def testIsAProxy(self): - mockStream = Mock() - wrapper = StreamWrapper(mockStream, None) - self.assertTrue( wrapper.random_attr is mockStream.random_attr ) - - def testDelegatesWrite(self): - mockStream = Mock() - mockConverter = Mock() - wrapper = StreamWrapper(mockStream, mockConverter) - wrapper.write('hello') - self.assertTrue(mockConverter.write.call_args, (('hello',), {})) - - def testDelegatesContext(self): - mockConverter = Mock() - s = StringIO() - with StreamWrapper(s, mockConverter) as fp: - fp.write(u'hello') - self.assertTrue(s.closed) - - def testProxyNoContextManager(self): - mockStream = MagicMock() - mockStream.__enter__.side_effect = AttributeError() - mockConverter = Mock() - with self.assertRaises(AttributeError) as excinfo: - with StreamWrapper(mockStream, mockConverter) as wrapper: - wrapper.write('hello') - - def test_closed_shouldnt_raise_on_closed_stream(self): - stream = StringIO() - stream.close() - wrapper = StreamWrapper(stream, None) - self.assertEqual(wrapper.closed, True) - - def test_closed_shouldnt_raise_on_detached_stream(self): - stream = TextIOWrapper(StringIO()) - stream.detach() - wrapper = StreamWrapper(stream, None) - self.assertEqual(wrapper.closed, True) - -class AnsiToWin32Test(TestCase): - - def testInit(self): - mockStdout = Mock() - auto = Mock() - stream = AnsiToWin32(mockStdout, autoreset=auto) - self.assertEqual(stream.wrapped, mockStdout) - self.assertEqual(stream.autoreset, auto) - - @patch('colorama.ansitowin32.winterm', None) - @patch('colorama.ansitowin32.winapi_test', lambda *_: True) - def testStripIsTrueOnWindows(self): - with osname('nt'): - mockStdout = Mock() - stream = AnsiToWin32(mockStdout) - self.assertTrue(stream.strip) - - def testStripIsFalseOffWindows(self): - with osname('posix'): - mockStdout = Mock(closed=False) - stream = AnsiToWin32(mockStdout) - self.assertFalse(stream.strip) - - def testWriteStripsAnsi(self): - mockStdout = Mock() - stream = AnsiToWin32(mockStdout) - stream.wrapped = Mock() - stream.write_and_convert = Mock() - stream.strip = True - - stream.write('abc') - - self.assertFalse(stream.wrapped.write.called) - self.assertEqual(stream.write_and_convert.call_args, (('abc',), {})) - - def testWriteDoesNotStripAnsi(self): - mockStdout = Mock() - stream = AnsiToWin32(mockStdout) - stream.wrapped = Mock() - stream.write_and_convert = Mock() - stream.strip = False - stream.convert = False - - stream.write('abc') - - self.assertFalse(stream.write_and_convert.called) - self.assertEqual(stream.wrapped.write.call_args, (('abc',), {})) - - def assert_autoresets(self, convert, autoreset=True): - stream = AnsiToWin32(Mock()) - stream.convert = convert - stream.reset_all = Mock() - stream.autoreset = autoreset - stream.winterm = Mock() - - stream.write('abc') - - self.assertEqual(stream.reset_all.called, autoreset) - - def testWriteAutoresets(self): - self.assert_autoresets(convert=True) - self.assert_autoresets(convert=False) - self.assert_autoresets(convert=True, autoreset=False) - self.assert_autoresets(convert=False, autoreset=False) - - def testWriteAndConvertWritesPlainText(self): - stream = AnsiToWin32(Mock()) - stream.write_and_convert( 'abc' ) - self.assertEqual( stream.wrapped.write.call_args, (('abc',), {}) ) - - def testWriteAndConvertStripsAllValidAnsi(self): - stream = AnsiToWin32(Mock()) - stream.call_win32 = Mock() - data = [ - 'abc\033[mdef', - 'abc\033[0mdef', - 'abc\033[2mdef', - 'abc\033[02mdef', - 'abc\033[002mdef', - 'abc\033[40mdef', - 'abc\033[040mdef', - 'abc\033[0;1mdef', - 'abc\033[40;50mdef', - 'abc\033[50;30;40mdef', - 'abc\033[Adef', - 'abc\033[0Gdef', - 'abc\033[1;20;128Hdef', - ] - for datum in data: - stream.wrapped.write.reset_mock() - stream.write_and_convert( datum ) - self.assertEqual( - [args[0] for args in stream.wrapped.write.call_args_list], - [ ('abc',), ('def',) ] - ) - - def testWriteAndConvertSkipsEmptySnippets(self): - stream = AnsiToWin32(Mock()) - stream.call_win32 = Mock() - stream.write_and_convert( '\033[40m\033[41m' ) - self.assertFalse( stream.wrapped.write.called ) - - def testWriteAndConvertCallsWin32WithParamsAndCommand(self): - stream = AnsiToWin32(Mock()) - stream.convert = True - stream.call_win32 = Mock() - stream.extract_params = Mock(return_value='params') - data = { - 'abc\033[adef': ('a', 'params'), - 'abc\033[;;bdef': ('b', 'params'), - 'abc\033[0cdef': ('c', 'params'), - 'abc\033[;;0;;Gdef': ('G', 'params'), - 'abc\033[1;20;128Hdef': ('H', 'params'), - } - for datum, expected in data.items(): - stream.call_win32.reset_mock() - stream.write_and_convert( datum ) - self.assertEqual( stream.call_win32.call_args[0], expected ) - - def test_reset_all_shouldnt_raise_on_closed_orig_stdout(self): - stream = StringIO() - converter = AnsiToWin32(stream) - stream.close() - - converter.reset_all() - - def test_wrap_shouldnt_raise_on_closed_orig_stdout(self): - stream = StringIO() - stream.close() - with \ - patch("colorama.ansitowin32.os.name", "nt"), \ - patch("colorama.ansitowin32.winapi_test", lambda: True): - converter = AnsiToWin32(stream) - self.assertTrue(converter.strip) - self.assertFalse(converter.convert) - - def test_wrap_shouldnt_raise_on_missing_closed_attr(self): - with \ - patch("colorama.ansitowin32.os.name", "nt"), \ - patch("colorama.ansitowin32.winapi_test", lambda: True): - converter = AnsiToWin32(object()) - self.assertTrue(converter.strip) - self.assertFalse(converter.convert) - - def testExtractParams(self): - stream = AnsiToWin32(Mock()) - data = { - '': (0,), - ';;': (0,), - '2': (2,), - ';;002;;': (2,), - '0;1': (0, 1), - ';;003;;456;;': (3, 456), - '11;22;33;44;55': (11, 22, 33, 44, 55), - } - for datum, expected in data.items(): - self.assertEqual(stream.extract_params('m', datum), expected) - - def testCallWin32UsesLookup(self): - listener = Mock() - stream = AnsiToWin32(listener) - stream.win32_calls = { - 1: (lambda *_, **__: listener(11),), - 2: (lambda *_, **__: listener(22),), - 3: (lambda *_, **__: listener(33),), - } - stream.call_win32('m', (3, 1, 99, 2)) - self.assertEqual( - [a[0][0] for a in listener.call_args_list], - [33, 11, 22] ) - - def test_osc_codes(self): - mockStdout = Mock() - stream = AnsiToWin32(mockStdout, convert=True) - with patch('colorama.ansitowin32.winterm') as winterm: - data = [ - '\033]0\x07', # missing arguments - '\033]0;foo\x08', # wrong OSC command - '\033]0;colorama_test_title\x07', # should work - '\033]1;colorama_test_title\x07', # wrong set command - '\033]2;colorama_test_title\x07', # should work - '\033]' + ';' * 64 + '\x08', # see issue #247 - ] - for code in data: - stream.write(code) - self.assertEqual(winterm.set_title.call_count, 2) - - def test_native_windows_ansi(self): - with ExitStack() as stack: - def p(a, b): - stack.enter_context(patch(a, b, create=True)) - # Pretend to be on Windows - p("colorama.ansitowin32.os.name", "nt") - p("colorama.ansitowin32.winapi_test", lambda: True) - p("colorama.win32.winapi_test", lambda: True) - p("colorama.winterm.win32.windll", "non-None") - p("colorama.winterm.get_osfhandle", lambda _: 1234) - - # Pretend that our mock stream has native ANSI support - p( - "colorama.winterm.win32.GetConsoleMode", - lambda _: ENABLE_VIRTUAL_TERMINAL_PROCESSING, - ) - SetConsoleMode = Mock() - p("colorama.winterm.win32.SetConsoleMode", SetConsoleMode) - - stdout = Mock() - stdout.closed = False - stdout.isatty.return_value = True - stdout.fileno.return_value = 1 - - # Our fake console says it has native vt support, so AnsiToWin32 should - # enable that support and do nothing else. - stream = AnsiToWin32(stdout) - SetConsoleMode.assert_called_with(1234, ENABLE_VIRTUAL_TERMINAL_PROCESSING) - self.assertFalse(stream.strip) - self.assertFalse(stream.convert) - self.assertFalse(stream.should_wrap()) - - # Now let's pretend we're on an old Windows console, that doesn't have - # native ANSI support. - p("colorama.winterm.win32.GetConsoleMode", lambda _: 0) - SetConsoleMode = Mock() - p("colorama.winterm.win32.SetConsoleMode", SetConsoleMode) - - stream = AnsiToWin32(stdout) - SetConsoleMode.assert_called_with(1234, ENABLE_VIRTUAL_TERMINAL_PROCESSING) - self.assertTrue(stream.strip) - self.assertTrue(stream.convert) - self.assertTrue(stream.should_wrap()) - - -if __name__ == '__main__': - main() diff --git a/gestao_raul/Lib/site-packages/pip/_vendor/colorama/tests/initialise_test.py b/gestao_raul/Lib/site-packages/pip/_vendor/colorama/tests/initialise_test.py deleted file mode 100644 index 89f9b07..0000000 --- a/gestao_raul/Lib/site-packages/pip/_vendor/colorama/tests/initialise_test.py +++ /dev/null @@ -1,189 +0,0 @@ -# Copyright Jonathan Hartley 2013. BSD 3-Clause license, see LICENSE file. -import sys -from unittest import TestCase, main, skipUnless - -try: - from unittest.mock import patch, Mock -except ImportError: - from mock import patch, Mock - -from ..ansitowin32 import StreamWrapper -from ..initialise import init, just_fix_windows_console, _wipe_internal_state_for_tests -from .utils import osname, replace_by - -orig_stdout = sys.stdout -orig_stderr = sys.stderr - - -class InitTest(TestCase): - - @skipUnless(sys.stdout.isatty(), "sys.stdout is not a tty") - def setUp(self): - # sanity check - self.assertNotWrapped() - - def tearDown(self): - _wipe_internal_state_for_tests() - sys.stdout = orig_stdout - sys.stderr = orig_stderr - - def assertWrapped(self): - self.assertIsNot(sys.stdout, orig_stdout, 'stdout should be wrapped') - self.assertIsNot(sys.stderr, orig_stderr, 'stderr should be wrapped') - self.assertTrue(isinstance(sys.stdout, StreamWrapper), - 'bad stdout wrapper') - self.assertTrue(isinstance(sys.stderr, StreamWrapper), - 'bad stderr wrapper') - - def assertNotWrapped(self): - self.assertIs(sys.stdout, orig_stdout, 'stdout should not be wrapped') - self.assertIs(sys.stderr, orig_stderr, 'stderr should not be wrapped') - - @patch('colorama.initialise.reset_all') - @patch('colorama.ansitowin32.winapi_test', lambda *_: True) - @patch('colorama.ansitowin32.enable_vt_processing', lambda *_: False) - def testInitWrapsOnWindows(self, _): - with osname("nt"): - init() - self.assertWrapped() - - @patch('colorama.initialise.reset_all') - @patch('colorama.ansitowin32.winapi_test', lambda *_: False) - def testInitDoesntWrapOnEmulatedWindows(self, _): - with osname("nt"): - init() - self.assertNotWrapped() - - def testInitDoesntWrapOnNonWindows(self): - with osname("posix"): - init() - self.assertNotWrapped() - - def testInitDoesntWrapIfNone(self): - with replace_by(None): - init() - # We can't use assertNotWrapped here because replace_by(None) - # changes stdout/stderr already. - self.assertIsNone(sys.stdout) - self.assertIsNone(sys.stderr) - - def testInitAutoresetOnWrapsOnAllPlatforms(self): - with osname("posix"): - init(autoreset=True) - self.assertWrapped() - - def testInitWrapOffDoesntWrapOnWindows(self): - with osname("nt"): - init(wrap=False) - self.assertNotWrapped() - - def testInitWrapOffIncompatibleWithAutoresetOn(self): - self.assertRaises(ValueError, lambda: init(autoreset=True, wrap=False)) - - @patch('colorama.win32.SetConsoleTextAttribute') - @patch('colorama.initialise.AnsiToWin32') - def testAutoResetPassedOn(self, mockATW32, _): - with osname("nt"): - init(autoreset=True) - self.assertEqual(len(mockATW32.call_args_list), 2) - self.assertEqual(mockATW32.call_args_list[1][1]['autoreset'], True) - self.assertEqual(mockATW32.call_args_list[0][1]['autoreset'], True) - - @patch('colorama.initialise.AnsiToWin32') - def testAutoResetChangeable(self, mockATW32): - with osname("nt"): - init() - - init(autoreset=True) - self.assertEqual(len(mockATW32.call_args_list), 4) - self.assertEqual(mockATW32.call_args_list[2][1]['autoreset'], True) - self.assertEqual(mockATW32.call_args_list[3][1]['autoreset'], True) - - init() - self.assertEqual(len(mockATW32.call_args_list), 6) - self.assertEqual( - mockATW32.call_args_list[4][1]['autoreset'], False) - self.assertEqual( - mockATW32.call_args_list[5][1]['autoreset'], False) - - - @patch('colorama.initialise.atexit.register') - def testAtexitRegisteredOnlyOnce(self, mockRegister): - init() - self.assertTrue(mockRegister.called) - mockRegister.reset_mock() - init() - self.assertFalse(mockRegister.called) - - -class JustFixWindowsConsoleTest(TestCase): - def _reset(self): - _wipe_internal_state_for_tests() - sys.stdout = orig_stdout - sys.stderr = orig_stderr - - def tearDown(self): - self._reset() - - @patch("colorama.ansitowin32.winapi_test", lambda: True) - def testJustFixWindowsConsole(self): - if sys.platform != "win32": - # just_fix_windows_console should be a no-op - just_fix_windows_console() - self.assertIs(sys.stdout, orig_stdout) - self.assertIs(sys.stderr, orig_stderr) - else: - def fake_std(): - # Emulate stdout=not a tty, stderr=tty - # to check that we handle both cases correctly - stdout = Mock() - stdout.closed = False - stdout.isatty.return_value = False - stdout.fileno.return_value = 1 - sys.stdout = stdout - - stderr = Mock() - stderr.closed = False - stderr.isatty.return_value = True - stderr.fileno.return_value = 2 - sys.stderr = stderr - - for native_ansi in [False, True]: - with patch( - 'colorama.ansitowin32.enable_vt_processing', - lambda *_: native_ansi - ): - self._reset() - fake_std() - - # Regular single-call test - prev_stdout = sys.stdout - prev_stderr = sys.stderr - just_fix_windows_console() - self.assertIs(sys.stdout, prev_stdout) - if native_ansi: - self.assertIs(sys.stderr, prev_stderr) - else: - self.assertIsNot(sys.stderr, prev_stderr) - - # second call without resetting is always a no-op - prev_stdout = sys.stdout - prev_stderr = sys.stderr - just_fix_windows_console() - self.assertIs(sys.stdout, prev_stdout) - self.assertIs(sys.stderr, prev_stderr) - - self._reset() - fake_std() - - # If init() runs first, just_fix_windows_console should be a no-op - init() - prev_stdout = sys.stdout - prev_stderr = sys.stderr - just_fix_windows_console() - self.assertIs(prev_stdout, sys.stdout) - self.assertIs(prev_stderr, sys.stderr) - - -if __name__ == '__main__': - main() diff --git a/gestao_raul/Lib/site-packages/pip/_vendor/colorama/tests/isatty_test.py b/gestao_raul/Lib/site-packages/pip/_vendor/colorama/tests/isatty_test.py deleted file mode 100644 index 0f84e4b..0000000 --- a/gestao_raul/Lib/site-packages/pip/_vendor/colorama/tests/isatty_test.py +++ /dev/null @@ -1,57 +0,0 @@ -# Copyright Jonathan Hartley 2013. BSD 3-Clause license, see LICENSE file. -import sys -from unittest import TestCase, main - -from ..ansitowin32 import StreamWrapper, AnsiToWin32 -from .utils import pycharm, replace_by, replace_original_by, StreamTTY, StreamNonTTY - - -def is_a_tty(stream): - return StreamWrapper(stream, None).isatty() - -class IsattyTest(TestCase): - - def test_TTY(self): - tty = StreamTTY() - self.assertTrue(is_a_tty(tty)) - with pycharm(): - self.assertTrue(is_a_tty(tty)) - - def test_nonTTY(self): - non_tty = StreamNonTTY() - self.assertFalse(is_a_tty(non_tty)) - with pycharm(): - self.assertFalse(is_a_tty(non_tty)) - - def test_withPycharm(self): - with pycharm(): - self.assertTrue(is_a_tty(sys.stderr)) - self.assertTrue(is_a_tty(sys.stdout)) - - def test_withPycharmTTYOverride(self): - tty = StreamTTY() - with pycharm(), replace_by(tty): - self.assertTrue(is_a_tty(tty)) - - def test_withPycharmNonTTYOverride(self): - non_tty = StreamNonTTY() - with pycharm(), replace_by(non_tty): - self.assertFalse(is_a_tty(non_tty)) - - def test_withPycharmNoneOverride(self): - with pycharm(): - with replace_by(None), replace_original_by(None): - self.assertFalse(is_a_tty(None)) - self.assertFalse(is_a_tty(StreamNonTTY())) - self.assertTrue(is_a_tty(StreamTTY())) - - def test_withPycharmStreamWrapped(self): - with pycharm(): - self.assertTrue(AnsiToWin32(StreamTTY()).stream.isatty()) - self.assertFalse(AnsiToWin32(StreamNonTTY()).stream.isatty()) - self.assertTrue(AnsiToWin32(sys.stdout).stream.isatty()) - self.assertTrue(AnsiToWin32(sys.stderr).stream.isatty()) - - -if __name__ == '__main__': - main() diff --git a/gestao_raul/Lib/site-packages/pip/_vendor/colorama/tests/utils.py b/gestao_raul/Lib/site-packages/pip/_vendor/colorama/tests/utils.py deleted file mode 100644 index 472fafb..0000000 --- a/gestao_raul/Lib/site-packages/pip/_vendor/colorama/tests/utils.py +++ /dev/null @@ -1,49 +0,0 @@ -# Copyright Jonathan Hartley 2013. BSD 3-Clause license, see LICENSE file. -from contextlib import contextmanager -from io import StringIO -import sys -import os - - -class StreamTTY(StringIO): - def isatty(self): - return True - -class StreamNonTTY(StringIO): - def isatty(self): - return False - -@contextmanager -def osname(name): - orig = os.name - os.name = name - yield - os.name = orig - -@contextmanager -def replace_by(stream): - orig_stdout = sys.stdout - orig_stderr = sys.stderr - sys.stdout = stream - sys.stderr = stream - yield - sys.stdout = orig_stdout - sys.stderr = orig_stderr - -@contextmanager -def replace_original_by(stream): - orig_stdout = sys.__stdout__ - orig_stderr = sys.__stderr__ - sys.__stdout__ = stream - sys.__stderr__ = stream - yield - sys.__stdout__ = orig_stdout - sys.__stderr__ = orig_stderr - -@contextmanager -def pycharm(): - os.environ["PYCHARM_HOSTED"] = "1" - non_tty = StreamNonTTY() - with replace_by(non_tty), replace_original_by(non_tty): - yield - del os.environ["PYCHARM_HOSTED"] diff --git a/gestao_raul/Lib/site-packages/pip/_vendor/colorama/tests/winterm_test.py b/gestao_raul/Lib/site-packages/pip/_vendor/colorama/tests/winterm_test.py deleted file mode 100644 index d0955f9..0000000 --- a/gestao_raul/Lib/site-packages/pip/_vendor/colorama/tests/winterm_test.py +++ /dev/null @@ -1,131 +0,0 @@ -# Copyright Jonathan Hartley 2013. BSD 3-Clause license, see LICENSE file. -import sys -from unittest import TestCase, main, skipUnless - -try: - from unittest.mock import Mock, patch -except ImportError: - from mock import Mock, patch - -from ..winterm import WinColor, WinStyle, WinTerm - - -class WinTermTest(TestCase): - - @patch('colorama.winterm.win32') - def testInit(self, mockWin32): - mockAttr = Mock() - mockAttr.wAttributes = 7 + 6 * 16 + 8 - mockWin32.GetConsoleScreenBufferInfo.return_value = mockAttr - term = WinTerm() - self.assertEqual(term._fore, 7) - self.assertEqual(term._back, 6) - self.assertEqual(term._style, 8) - - @skipUnless(sys.platform.startswith("win"), "requires Windows") - def testGetAttrs(self): - term = WinTerm() - - term._fore = 0 - term._back = 0 - term._style = 0 - self.assertEqual(term.get_attrs(), 0) - - term._fore = WinColor.YELLOW - self.assertEqual(term.get_attrs(), WinColor.YELLOW) - - term._back = WinColor.MAGENTA - self.assertEqual( - term.get_attrs(), - WinColor.YELLOW + WinColor.MAGENTA * 16) - - term._style = WinStyle.BRIGHT - self.assertEqual( - term.get_attrs(), - WinColor.YELLOW + WinColor.MAGENTA * 16 + WinStyle.BRIGHT) - - @patch('colorama.winterm.win32') - def testResetAll(self, mockWin32): - mockAttr = Mock() - mockAttr.wAttributes = 1 + 2 * 16 + 8 - mockWin32.GetConsoleScreenBufferInfo.return_value = mockAttr - term = WinTerm() - - term.set_console = Mock() - term._fore = -1 - term._back = -1 - term._style = -1 - - term.reset_all() - - self.assertEqual(term._fore, 1) - self.assertEqual(term._back, 2) - self.assertEqual(term._style, 8) - self.assertEqual(term.set_console.called, True) - - @skipUnless(sys.platform.startswith("win"), "requires Windows") - def testFore(self): - term = WinTerm() - term.set_console = Mock() - term._fore = 0 - - term.fore(5) - - self.assertEqual(term._fore, 5) - self.assertEqual(term.set_console.called, True) - - @skipUnless(sys.platform.startswith("win"), "requires Windows") - def testBack(self): - term = WinTerm() - term.set_console = Mock() - term._back = 0 - - term.back(5) - - self.assertEqual(term._back, 5) - self.assertEqual(term.set_console.called, True) - - @skipUnless(sys.platform.startswith("win"), "requires Windows") - def testStyle(self): - term = WinTerm() - term.set_console = Mock() - term._style = 0 - - term.style(22) - - self.assertEqual(term._style, 22) - self.assertEqual(term.set_console.called, True) - - @patch('colorama.winterm.win32') - def testSetConsole(self, mockWin32): - mockAttr = Mock() - mockAttr.wAttributes = 0 - mockWin32.GetConsoleScreenBufferInfo.return_value = mockAttr - term = WinTerm() - term.windll = Mock() - - term.set_console() - - self.assertEqual( - mockWin32.SetConsoleTextAttribute.call_args, - ((mockWin32.STDOUT, term.get_attrs()), {}) - ) - - @patch('colorama.winterm.win32') - def testSetConsoleOnStderr(self, mockWin32): - mockAttr = Mock() - mockAttr.wAttributes = 0 - mockWin32.GetConsoleScreenBufferInfo.return_value = mockAttr - term = WinTerm() - term.windll = Mock() - - term.set_console(on_stderr=True) - - self.assertEqual( - mockWin32.SetConsoleTextAttribute.call_args, - ((mockWin32.STDERR, term.get_attrs()), {}) - ) - - -if __name__ == '__main__': - main() diff --git a/gestao_raul/Lib/site-packages/pip/_vendor/colorama/win32.py b/gestao_raul/Lib/site-packages/pip/_vendor/colorama/win32.py deleted file mode 100644 index 841b0e2..0000000 --- a/gestao_raul/Lib/site-packages/pip/_vendor/colorama/win32.py +++ /dev/null @@ -1,180 +0,0 @@ -# Copyright Jonathan Hartley 2013. BSD 3-Clause license, see LICENSE file. - -# from winbase.h -STDOUT = -11 -STDERR = -12 - -ENABLE_VIRTUAL_TERMINAL_PROCESSING = 0x0004 - -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 - - _GetConsoleMode = windll.kernel32.GetConsoleMode - _GetConsoleMode.argtypes = [ - wintypes.HANDLE, - POINTER(wintypes.DWORD) - ] - _GetConsoleMode.restype = wintypes.BOOL - - _SetConsoleMode = windll.kernel32.SetConsoleMode - _SetConsoleMode.argtypes = [ - wintypes.HANDLE, - wintypes.DWORD - ] - _SetConsoleMode.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) - - def GetConsoleMode(handle): - mode = wintypes.DWORD() - success = _GetConsoleMode(handle, byref(mode)) - if not success: - raise ctypes.WinError() - return mode.value - - def SetConsoleMode(handle, mode): - success = _SetConsoleMode(handle, mode) - if not success: - raise ctypes.WinError() diff --git a/gestao_raul/Lib/site-packages/pip/_vendor/colorama/winterm.py b/gestao_raul/Lib/site-packages/pip/_vendor/colorama/winterm.py deleted file mode 100644 index aad867e..0000000 --- a/gestao_raul/Lib/site-packages/pip/_vendor/colorama/winterm.py +++ /dev/null @@ -1,195 +0,0 @@ -# Copyright Jonathan Hartley 2013. BSD 3-Clause license, see LICENSE file. -try: - from msvcrt import get_osfhandle -except ImportError: - def get_osfhandle(_): - raise OSError("This isn't windows!") - - -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) - - -def enable_vt_processing(fd): - if win32.windll is None or not win32.winapi_test(): - return False - - try: - handle = get_osfhandle(fd) - mode = win32.GetConsoleMode(handle) - win32.SetConsoleMode( - handle, - mode | win32.ENABLE_VIRTUAL_TERMINAL_PROCESSING, - ) - - mode = win32.GetConsoleMode(handle) - if mode & win32.ENABLE_VIRTUAL_TERMINAL_PROCESSING: - return True - # Can get TypeError in testsuite where 'fd' is a Mock() - except (OSError, TypeError): - return False diff --git a/gestao_raul/Lib/site-packages/pip/_vendor/distlib/__init__.py b/gestao_raul/Lib/site-packages/pip/_vendor/distlib/__init__.py index 962173c..bf0d6c6 100644 --- a/gestao_raul/Lib/site-packages/pip/_vendor/distlib/__init__.py +++ b/gestao_raul/Lib/site-packages/pip/_vendor/distlib/__init__.py @@ -1,23 +1,33 @@ # -*- coding: utf-8 -*- # -# Copyright (C) 2012-2022 Vinay Sajip. +# Copyright (C) 2012-2023 Vinay Sajip. # Licensed to the Python Software Foundation under a contributor agreement. # See LICENSE.txt and CONTRIBUTORS.txt. # import logging -__version__ = '0.3.6' +__version__ = '0.3.9' + class DistlibException(Exception): pass + try: from logging import NullHandler -except ImportError: # pragma: no cover +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 + + 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/gestao_raul/Lib/site-packages/pip/_vendor/distlib/__pycache__/__init__.cpython-310.pyc b/gestao_raul/Lib/site-packages/pip/_vendor/distlib/__pycache__/__init__.cpython-310.pyc index 8aa539ae2fbbf316910398672798d0330f827e14..19aaad9d6349f6149e9d106490c5ec5e5ef853bf 100644 GIT binary patch delta 124 zcmZ3+v4Dd&pO=@50SFfPtxhkT$UB?Sa^lJ&#+b=6jFPNDK~ApDlN}hH8F?nRFz(_O z1FHMX1SD7(Cwnr5F-lHez*NXB0~9C*iE=ScmSGMO6an!$fCL8v2NMS~5A)=D<{A9V SOe_M7Jd9#YO#is}1Q-FLGZw-C delta 130 zcmZ3$v5bQ^pO=@50SKypgr>Vrc_Y({l+kkCsY>Z#QhVV9p1RSnyZ19c^cxN4U?SNg1 z1A+>uWSO2;sc6!Wkg9D;)w)AcHBluZ0a4R5|{(N^Mi1Jk-*(xaW>HG~JcY zJ#+4N&pqFF&z<#8?!)E#;2ZY&Oocu#cl>bhv(vr;`2OjN(uuGVW)V$j?Dh1P;7GmM2c+*A4Ro@-$@k# zS}Ajh-QREbh zVrPz+&w#eI=wPMxUt;(qd%iw01l$7qH}RwT$adSn|tvZ)kp z5)+@Z4JO!zJhp*I^Z&8U7x^Bs1nC4RC7c#%apsHp9{G7<-Xr1*#X_e{lsV<1+^G;1 zpOc(|7*Ihev?@V!A{>mgI;Eo2Ss)fjy%M}0b5@Ea3BSc@6D0}1o#K@VzdE7EsxRoV z+Id{mke+KiP0~q+2C0KxFY3ol+By``owZ`Evreo7g&Ic7lO2PvvxZc^vr%mFfx#XS3Ms#WK8Dt$G}i@C~&fLkKa>?Jm(pNkTN&Jq2So@t)dHlsnsfwsv;+OUe{` zS_@Z-e!D+hHN>V^%#Ry+by1PbHpRx;5}m4qmq!MjJz|fuSL_7^U*XF%Ip2jJ@th3V zy)4{%oKXiqHbgmNL-ta%v@#F#16-k%dfs<%KwIf~Z{c~Zf;@H1!Vk4PFZLJwwF&qb8bB6)k~09gxH0!A6yVj|9ia>$kRd^e!3@<>W0MLV zvGd)h@?HWT^~?WeUA-U$paz45&%$aK3$p=s;Q69S*zGnJp8|-xSLVFO;W_u43x3S> z7v$1axW243pFiZlXAH(3@MIGV#=+qHA@gE*vg`sJ#+LFNjrn!G)a@=GWJKfAq7U-! z$rM4VO@{!pEDJ24M4-=bhSQ6C12^S7r+G`~nXy~4?sS~$O~$4r7p-eFX%^3Zep-16 zaDPP(epK}-Kxs6|9pyK_Fr$NKC?o51P(;1emVnfF-nO}AJ=94O$ zn#IuU+6{-$={g5TXzz1y9AE2x6;5Jb&#g3+WW5XFDdtbZzMUm0sfNk81%_#uIJxr% zpu4a4%K+bX|I|nAK8<&FMYWe{x4UTXz6`&>ivBzB4i<)g4rf~P(o^m=Qj>SV~!NIqN zim*7!AW=)Rtc2SsKceA`WBOcT%0T!e#mA8d@i^P;S zhx&nfT6VRi%4gZ*gktj0`CoaqYeyRx^x}(8+i(!I{iXBUWZJq!Z^-+r0}ooaX74ij z{?J_m+)ewpK}d4>LQw~3(Ez?4dxFTA@j_xy7B9;`EJ3p9>w*5^=)m5=(U{%aKN=qy zc6u=yzo7R@Kol2_AO*&6-ED4$~TXsKFa6kyG0edxL#-!nS0Hxm1btVfNYQCT8(|na?MY ojL+iP3{$h|S-z`6D!Zdh5H=-~B7SQxub@%0D(p&*xlleuY51LI2n!Onm@iHzP{->$em$@E#wEOg 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 L94)2_pXL7-d(m`c diff --git a/gestao_raul/Lib/site-packages/pip/_vendor/distlib/__pycache__/index.cpython-310.pyc b/gestao_raul/Lib/site-packages/pip/_vendor/distlib/__pycache__/index.cpython-310.pyc index 3e0bb49684a89937290220a98e6aca909c13a50b..cdd13f6e4e77bbf469c4395edfffd4549cac8109 100644 GIT binary patch delta 1045 zcmZ9LOH30%9LD?aw%bK*3r0{Oh4_G^MH&Oa6cwc)K1cvX@d27r=u#VMYo-ge21SC3 z#`uUMC?;T#7!!>in0Pb9$5jt{+;}r4Uc7km-~s1bd?fDSmv6rLW->GX|IUun^>K2i z-R@;J`8{lV8n2&qt8|Qe)V0ozj>hIDUadA$xj3UX5jBdJu5Uyw;z{0Vq9dYY`6Hqp z{(42299(hlwUbS>y1$bgHF!&kS*6@_37e!cHKxZC8AE4DG2)%D(*;qua+gDGM`}Nh z6!p<<@wRA>55JucGvMeEYH~{U)MiT~$@KA9NJr`5O4ux9yjISox zkGO$|s;BzWF`YT&z`u;G$3zt91^R#(U-WIG4`N$si_43%n67M;r4p$)%kn$rA+-mo zHvX|ZwEe%O!=YYV@D;=YE@No z-$Z|obz!Dk!mqNG&?UfeVCl)BB0L@pQjAXqE2&<*2_9B9PQl0P`L(47y9?tUU|n;w zRJ@?HjCWTTlys8Kmcj0-M9rLs-4o$W>cs^6f z7>vzfr~<1c{GO#tOu)DyVLDICmddbsXc{opp=feY&zLl1Dg%1XY7f(CnWm#R9m|>a zK7&2R@=6=`Hhif-JFa=G0e^?Yz1vManOg1^+z& delta 985 zcmZ9KT}YEr7{`6yZD+3^b0%%!$F_iVe&m0Em z;g;+T5FO8R0$^aja*j!pdfsIE2I8&OT;$Ybs;I+>xT;W(_{KKMgu+53swNdW#1rP* z5=?PJ{t-QC$J9yIW*vY<&aF*4Z#OzSvBe-(M3dBl#)Y(zqERuS1GPRCiY950?JEqz zV?JM~*Fg)rX{+=`Fg}72qQnOhVTJ0&iz|!n#X>(~01-wg?5phnyyYHyv(b!e(Tu4O zjYs1VI>x3;d?bXaHukc_SNC7*Bvvk`haj2|DFF=zwame2Oz8`U#QLYuzrw0ZtKbul zm9FW`oftBXDpZXo;`AyjcJHwSF?9_QKwyL}vJQ7O`6F+-t+2p0+~u&FzjOO_jXfCY zMVt~iK~D=#$mQi?Zgg;*p25ml0T-e9sEZKi5ZhahD#&`hUQpPq*8_F@skcYxypKNa zo=e`|uzP4MAr!=Z0S0ylYpK}b=z@$4)hZm4D}yXapx?@qWYB{IWJ{KKs^X^sW|``H z^Y@&O)|A2wyI5m)Op7*67gORij&tV`c(CcyqI2v~O&F%Rxt2)K#;tX)C2_nT4=p*D zF|&eLMWp{|6je|_)2T^H*V(Gy;=Y6C0-A0wkbVR1bNRXe diff --git a/gestao_raul/Lib/site-packages/pip/_vendor/distlib/__pycache__/locators.cpython-310.pyc b/gestao_raul/Lib/site-packages/pip/_vendor/distlib/__pycache__/locators.cpython-310.pyc index 3fd2d309f262516c83074787690992f7ccb4b2b2..9415358aed3f6ceefa0bbe61757404ff4acac867 100644 GIT binary patch delta 1738 zcmY*ZYitx%6rOWucJ}VlLQ91dtx#Tq#m2ayP-|(ot3q>! zE*2B0F>0@x7>(>2kffkduYb@V$PeO!7()WaKL`P1C9r3`BLU)eH2p8yPB)9X!=r= zMVXe0G$Po37@S~Q`Z_by*Tuf#PYGC}vuq3?#?O>*`*5K?O?AM+#{m9O zvce331Nx+vHN7_QUz4R)2=tqpPBDYzcUmCg(&|z}tLd^={ZN&Q@-W1p%!wZ}tTNgg z&N)oY11Om72=nm^^_3&OJTQ_n6ADusmBGi+GLTSmiM+J#=pwG+`k5iUK10%caBs$k z^)yoIE8v=V>St!Rl$+gVrhu8F;0Bn&0^K1NKr99#@uQ#0yHEt~MG<8ZK%h4&!y^!c zor^Jp=N|~Ky%*YtgL~Jb#%cu#Sh!;n6xRY}ID&ABa>bbvW{rZpTBbBtma>>7DY+g= znL@ptmbAOQ6TSzF0D^paLlxi9P^X`kiSOcXG$e^Z_>qPxDCQR%mIsgDTM)5$;RS3n zQL*R{3Ct&GqhSdg5(j>+`6x8=+~VhEwVXauV{4BtLsBeD+z!jq_-T@dBWsi0M>=XSR zg9HwUb1RRLnj_NZ42i`P2OW@>*w#AGJFkIXo5&N5gpjPm_l>WLiL0w8$g)$?vJowb z*FcFJ2$IgGW&L3QK`(KnKaPm3924Xp@|TviXfe<%?z3?XEeN?dTrB3)fKuBMJzFNgzZ*qq*}B8i_;+fLbv!(*c ztJ!!Z0#wuSsv7W~zAZr}HU6KKUhz}k-+(Q7rvK*L&!ngjjZMUe27dhpjtrRz)x=es z)O^FmOScYXRz8*4!guvKJT%Z0+<&)2(<8bE92z_>52q%t>~2lGxcwx+Jh5hYCV_gv z*dhXL;`5z90IV0UXX6BV#Kem&o{|wH*-(YVAC@JR6B|pD)gVeV5P?0<8u|xPAxll5|J$VFerM6m2 z>Y2c?riZ}+gCfQX7K+`8;Zak)78p{{3&uT`bq2-2%!;1G;NZZL(a%hZE#R+qNM28v z2ovNF!+H@G$a5p|CD1IEkC^~WzBy(-IDRu~8s;Li)G19Z)I@u0T>d_`8X+gD#_xe{ zd1`zcLXQa7o{CcBwGO2Ym0FvbUe`!{GGOv^tsmgBxI1w_ToHRFP4l}1Q_x}-H58X8 zCE#;$b5f_rNLm!*L1If?ByMpl>7_TFn=PSSnCp1}jiMjnmdMqO>a_B}F=>}+T%W47 zH*zECE7Njid5vr#Z+S%9(en#% z3Wn)2)*mjBu~~Hp%f&Nu+F*seFz0C}MGzXj-!Hx@PkWaZJhZGE7k;C#GYE^G;xe&R zdbj<~O^Z5_UF` zBGK49%BnOI)>AH~{!sF+kloEgb*i4v)@A@!%Z6kMD%a=_;$%UTyxYYpRh4Sow{`i| zx~)*z{x`&6|A&Y*>vzXyD}=3rJy1~rYM5@S7Q}9&LPj?n05~8|Zmh$q!wNW>fCDFW zDJuvLqpZ-`7>e7QHu(1_%)`!W$kx{T03V1=oBQME)l!hmZK6sc^BDa>YQXGIRwDMd zHHOaq+tg;Rm6|KIv{uUKmRlbG$7)g4bCIMjW3PV!P$PfYJ`!QF4Dx9R^W@T9SAnuU zG8;qKAZNTWt0a+SWLK>?hm4|Il^4v?7XX#=7|IiGy=sj-tzgFqW|Y%3{cThnU9{-# zfQblJfxZJZN0yEm=z}KN+fYvXSl}Sb;vM$2Q>%=M{ZBQ=tc~K`BkA~PwYfUD;%-q} zH2r4Kbj_GkEuRoq0Gfp7?V;0|3)SH2uG*6NsuGojuH#l|om!_m-yQGHb*IqN4tJ(I S!mYp;NIc{Q(dajfu>KbeaGkmU diff --git a/gestao_raul/Lib/site-packages/pip/_vendor/distlib/__pycache__/manifest.cpython-310.pyc b/gestao_raul/Lib/site-packages/pip/_vendor/distlib/__pycache__/manifest.cpython-310.pyc index 30fd6092b6298db0ab513a5326f5f682141c4b81..da4ac26af00138b7036ff465062b75af070aad76 100644 GIT binary patch delta 461 zcmez7|JI)`pO=@50SFfPtxk_H-^k~~#MZ#200fhxnItEdGiit_Bo-9pRA%O-E0iS` zW#*R_gQPcaVG3ZBk8!q&2`x@7Dvl{n%_+%`ami0E%}vcKDUJyWa&mQ^tjXfRsI$3< z#g&QCdh-sp3`WMV&59fXjEo7JjW~}pGUiSG#kG;KX7U>D#f-I+19*BEGbi8WS;bgC zxr0}ek$v(e-aIBohRI5NK_IG(F9b+!KEpSK87P-1WIuVikP>6dEgT&3*G3est^`HZqN6Jz#d0kw9~ z5RfKs5a9zN{6IwPZILMrHsI CHg^&L delta 473 zcmaFs|IME-pO=@50SKypgr?uN+{ov{#8@{ufk~1nKW}mclcp$_0uUq?6y#K9=A|o? zB^G7omlki{#uUJ)n&fO16Iz^FR2);Dnp2V=T3nKtA77MMnlo9I z#e-36a~_K;6QkwkEo>Q#j3Jw4IRqFP<2LJY9%p3Cnf#4wBV*O%72Jy%t0(*L^f0DR zzR9zSv37C`ujb@6;=Gf0@g_0VvQL)d3j$F^d?7$;^9jBw%#0k9V}+kUS&XKvOHtL zhJrMCg9slG;Rhn(CNEY~lvM>Xi#31*2LlTu7YheJ XhcpKl7bk}p(0l%yAF6RPGBN=GNBMjR diff --git a/gestao_raul/Lib/site-packages/pip/_vendor/distlib/__pycache__/markers.cpython-310.pyc b/gestao_raul/Lib/site-packages/pip/_vendor/distlib/__pycache__/markers.cpython-310.pyc index 370bf9ea348f67c4c07f5079be5a3181b9e70c3a..fb00fa5585624f4918a2c0dca1eee15eaee3a465 100644 GIT binary patch delta 1966 zcma)7%}*Og6yF&yyNkat#^%#BC8U6fu}A}jP{(aUqqc(31f-}kP27!l!6s|3GrK^k zjA&(~94b|XQSZ`$X7$*>&? z`6c*%Tza*hiXDU#o#IW93*LgyquWsTNv_|ZD^jxeKzyx+7R`0Nu)|IA za8HD*J8sdgS+y3#b8$lPm-ZS8axxv@6b7!)}bQ1b^ZCfn>NU zrwQZJ^6eDE2K5Y_P(i*FWap|iEo15BXNI1An;*)v6Ih~4C3dZ$ex`;MVOWLR$PDvG zN`iN_bq`;7`Co-8zSwqa?DcZf4Z|ZTs7DKtywgw^iu_7Wt5Ao21-!ha@FlQ!g<+$YsknA2Tf z%?DR0#D8x8mPC2Rzdo1L*f@H=iI75=Ko~_BLBI>du-lWAO(K5_`2Y*>KmB+6@v;le z+|sR09o`CjU056;!QTt?&kBW^&ZgxuY}}k|T15wt6&*H(LSEP5E7sKJSeEzscY*q_ z*92abE=4@fyAFdOm*P{wBpEz?8r&vubr zMK7B|t6I9dX0tNvf7bEv&d0cq4_Q)W50GC*cmyDP)#?`OMUDcK#r0-~zjwp}Yq02~ z0W^9TnE?Okh(ZIc7~84FRmaa^UB_22@R_N-}6_|p#g0B+t`{3l-nKl4Y`f+zTRjrNMGBd}@VaKie=1 zF2gjkrwB!a=Lls445I0X7l{{IrfeIVmYF3Iq{7%Q6vy|C*X#Ay#*X8BG=Y$`keDWENt?FNG#64;EhVZ{s45p&w%)1Zu=cvM zo1_Itt#CvS98fyq1W3s-Jt5_QxN_}@8=4yz4%`qI)D!Qm+ob9xw&dTu-TBXZZ)V=U z-O`f@%g<(08vefe@8jxkg)M6Yo@^bjT;0^lIXCTQaLixQ+^lPDYOck5+p%(ivu(@m z*@1GOn{)H1DDq-kEBD_j@&b+nZo%z!6Pr*TblG*S)VKBb!*qVh7j?(0eaT&U7p}>t z?1NF2ss*)15IT(t7ctDC1Pc6JO{CF&=E$pTC|%_^@7uyz_2dd$c#yVhf$h~oE*x(J zWr2aPK!*&7ESeQSy!eq%ntvbv!7QSxZ9u4PLrdF%MeWn<25Z4K3u7&|t?y_q3~6oH z0nqLy!gveXfZ4MpK`u*%%GozA%9Hv)Ss6~V$s4X>OE;8J75-{7P_clArI><18G;9^ zUZ|iRZKQ(?`cPTB%0qjNi=gH=f-%anu#mAL8exhtQWeLZAZ_!~0hBNEwLN5i?|rJ~n2j4%ePQ?Y|6> zlRq2BrefE-32?F#An}@fYGfx55Ax1){cIOnxnOz|RAf={XkU?(Kc$AjlE0?D1yf#3 zSFb3mc|TnC8!u|QWQw;a<^*AqP$C>9j1%4@97B|tm?C?c?375#ztR_q^Z_fAuQ}eT zgI{=_1OxIy=E$5Vl1D`YnBd|jJ(cAjg|P>;H$iPPx&W21ZO8L$TO}%fy;<|PuxO6%N(>;B;on~2l~B-G zidzIuSSG9xDD+F|?4Q0e=j*<^>hT5YumM$$ZkY1xzTP}D<2fUB#$?7g1A|%YfAjrG A`v3p{ diff --git a/gestao_raul/Lib/site-packages/pip/_vendor/distlib/__pycache__/metadata.cpython-310.pyc b/gestao_raul/Lib/site-packages/pip/_vendor/distlib/__pycache__/metadata.cpython-310.pyc index 3da5bc391d3f10fddcd3f50c99df1a145a0bbd46..b0cdfe631ef555c4d8fd2ef91cb0dcf0a04c8a04 100644 GIT binary patch delta 6536 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 delta 6422 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 diff --git a/gestao_raul/Lib/site-packages/pip/_vendor/distlib/__pycache__/resources.cpython-310.pyc b/gestao_raul/Lib/site-packages/pip/_vendor/distlib/__pycache__/resources.cpython-310.pyc index f20be89650c6712598b97a1c942756842d77bc3c..6c1c54e6904fabad6c4ff371a54c7902093ec92f 100644 GIT binary patch delta 37 rcmbOeHZ6=hpO=@50SFfPt=`DZ&&(J*S(;grH7Ll*)p@f$^IdfSuU83r delta 43 xcmbOhHYbcbpO=@50SKypgl^>KXJ$;EEX^#*ot|1;l9(S~lvtXx*^>FLIsgEm4AlSt diff --git a/gestao_raul/Lib/site-packages/pip/_vendor/distlib/__pycache__/scripts.cpython-310.pyc b/gestao_raul/Lib/site-packages/pip/_vendor/distlib/__pycache__/scripts.cpython-310.pyc index 26d64710a4a21c176f575153c3f66a760199d372..de11317085097dcb4e2d4f82453fe51fea6aead5 100644 GIT binary patch delta 4168 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 delta 16531 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 YVU-K5Ih7UG7NEDxCT>UJkIRbxKTH>^RR910 diff --git a/gestao_raul/Lib/site-packages/pip/_vendor/distlib/__pycache__/version.cpython-310.pyc b/gestao_raul/Lib/site-packages/pip/_vendor/distlib/__pycache__/version.cpython-310.pyc index 2b514880c4af5075f0576fd81a1e89b71158e458..50e703fdc9fa0b7fc1d6bdc8a629e1ca06c1b88a 100644 GIT binary patch delta 1029 zcmY+CZ)_7~9LMkb^zM2sU3cwTYX30y2ey{7;iid+&Q)N4sBC~}{L^h{$8#GXZlf*E zxT_1>e1T#}`I$&efYldIWEE;`fl*B1&Fa~_u>4(j$WmVJ=GAjjs>Y~E`FbU; zbI+W_J%)SMmhy8iuMxA=!uN5%@cl-$@B@WwQ@D#BM`C@@VDmcPSVStsTX?GohxsOc zw|GY?leY3UbO}j#NM^l?&j=V1+QkA0Tl?6rzyJ-%L1p*uE!|tKY56%nj??vEcxU?H z#J;pSYz`Z_w7J*J>@_DcM)`SuzcCq$4)S;`5lch|TcZ=>*_@d%#pI4X(E4=CP$J4# zJh~^8U@k_v(6@nrsc<F@?4ZZ69H@E4+64HLmB?v4E+rB;FMI--MVrmsdG$ zIWdb7mRC(XuYQ(g&I#5oSo;e5fzbc4cEMIwf~_PftliWqJw6kxHr5atmGTZ#n^(C~ zM3*$QI`1@{^NymFS){MS_3?$AVmfA#*Gwh*hpA?7nD)#K?#U}-jC=EnaQ@;ofs4!^bqJ_@AQ2+9n&zoS^aEHP-&xW`+fV8uI_j5DPpu6G*3#<@ zIVORejU}wJK5uMd=(LvBE5IZ4XHx-vbhLRB?p|Ln_G|IBu#a_;CNerK z{6KwuCHzFL{%PAaB70 x<$98K?ub8-WsKp@t=`mD=^@>%hL+QstowC`E~`856@#Y#>oR>o?x+C@nWOtV$gVWq8vw}<};jL~*qJW#Qm>e$3~du(!# zSM%+S;Ys=}p3LuXce?h@Ty|9CbGbrxv@846gj4-L7S=QWLfV=r@C%@s#LsjjnNnU9 zCViG{+f)~3%|C9qe&LU^sxG@P&Ze-7*Zi(7*d()0NQFMWrow6su0E#;bsj~wt)*tT z#$3ZZvp=L_sy+X1RdpMtP}5!2x#VijlIypZM7XAoa}lYjlKEOR*EHAfeB-^I`Vx4U z##%FhDA%E3^`^I5(~4rhLE()l@7LBWM}!*N7hur2_CFA(g*BFp*<4%YR~a2zyNHz6 z-;w6H)7zU?fkARIbrea>Ue+H3WA+)w$jzik%iVz?>d6rvqD#4H?U9w?Il4F3M*D6# zf>F}*FG0|&`FT{l&UFUx9Bt^F#00(Hc?ubCq)RARp!40&;|%qzAH)ZAaQzj`cu(A3 z_2Z&<`JP=Io2b}(3Vrl@?`dqK*^P_lEfPMdSCM#A_7kKZuibwEqC!p+spQa6($zSEQwF$dID+ zqY|T;QW5Xb52ax( z2VNk3_%7vpnOk94q+ecHRMk}-K^}z84b@ak)$BHeuKIdSMei^J!4X;-&iB}ybNpA@ mUwXhym`z&T$9>nNgU^ha4W>`aNX_*S*H*OGwZDUUQ27Txya7o7 diff --git a/gestao_raul/Lib/site-packages/pip/_vendor/distlib/__pycache__/wheel.cpython-310.pyc b/gestao_raul/Lib/site-packages/pip/_vendor/distlib/__pycache__/wheel.cpython-310.pyc index 8aa60599f2612c888d912425815c2da7f9b1ca10..f814a4c8466c0a2ab06f97e4abe31f31c79eefe0 100644 GIT binary patch delta 10767 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 delta 10344 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 'user[:passwd]', 'host[:port]'.""" - # global _userprog - # if _userprog is None: - # import re - # _userprog = re.compile('^(.*)@(.*)$') + # """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 + # match = _userprog.match(host) + # if match: return match.group(1, 2) + # return None, host else: # pragma: no cover from io import StringIO @@ -67,14 +67,12 @@ else: # pragma: no cover 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.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) + pathname2url, HTTPBasicAuthHandler, + HTTPPasswordMgr, HTTPHandler, + HTTPRedirectHandler, build_opener) if ssl: from urllib.request import HTTPSHandler from urllib.error import HTTPError, URLError, ContentTooShortError @@ -88,14 +86,13 @@ else: # pragma: no cover from itertools import filterfalse filter = filter - try: from ssl import match_hostname, CertificateError -except ImportError: # pragma: no cover +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 @@ -145,7 +142,6 @@ except ImportError: # pragma: no cover 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 @@ -178,24 +174,26 @@ except ImportError: # pragma: no cover dnsnames.append(value) if len(dnsnames) > 1: raise CertificateError("hostname %r " - "doesn't match either of %s" - % (hostname, ', '.join(map(repr, dnsnames)))) + "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])) + "doesn't match %r" % + (hostname, dnsnames[0])) else: raise CertificateError("no appropriate commonName or " - "subjectAltName fields were found") + "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) @@ -214,12 +212,12 @@ except ImportError: # pragma: no cover 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)) + 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 @@ -237,7 +235,7 @@ except ImportError: # pragma: no cover if sys.platform == "win32": # The current directory takes precedence on Windows. - if not os.curdir in path: + if os.curdir not in path: path.insert(0, os.curdir) # PATHEXT is necessary to check on Windows. @@ -258,7 +256,7 @@ except ImportError: # pragma: no cover seen = set() for dir in path: normdir = os.path.normcase(dir) - if not normdir in seen: + if normdir not in seen: seen.add(normdir) for thefile in files: name = os.path.join(dir, thefile) @@ -277,6 +275,7 @@ else: # pragma: no cover from zipfile import ZipExtFile as BaseZipExtFile class ZipExtFile(BaseZipExtFile): + def __init__(self, base): self.__dict__.update(base.__dict__) @@ -288,6 +287,7 @@ else: # pragma: no cover # return None, so if an exception occurred, it will propagate class ZipFile(BaseZipFile): + def __enter__(self): return self @@ -299,9 +299,11 @@ else: # pragma: no cover base = BaseZipFile.open(self, *args, **kwargs) return ZipExtFile(base) + try: from platform import python_implementation -except ImportError: # pragma: no cover +except ImportError: # pragma: no cover + def python_implementation(): """Return a string identifying the Python implementation.""" if 'PyPy' in sys.version: @@ -312,12 +314,12 @@ except ImportError: # pragma: no cover return 'IronPython' return 'CPython' -import shutil + import sysconfig try: callable = callable -except NameError: # pragma: no cover +except NameError: # pragma: no cover from collections.abc import Callable def callable(obj): @@ -358,11 +360,11 @@ except AttributeError: # pragma: no cover raise TypeError("expect bytes or str, not %s" % type(filename).__name__) + try: from tokenize import detect_encoding -except ImportError: # pragma: no cover +except ImportError: # pragma: no cover from codecs import BOM_UTF8, lookup - import re cookie_re = re.compile(r"coding[:=]\s*([-\w.]+)") @@ -401,6 +403,7 @@ except ImportError: # pragma: no cover bom_found = False encoding = None default = 'utf-8' + def read_or_stop(): try: return readline() @@ -430,8 +433,8 @@ except ImportError: # pragma: no cover if filename is None: msg = "unknown encoding: " + encoding else: - msg = "unknown encoding for {!r}: {}".format(filename, - encoding) + msg = "unknown encoding for {!r}: {}".format( + filename, encoding) raise SyntaxError(msg) if bom_found: @@ -440,7 +443,8 @@ except ImportError: # pragma: no cover if filename is None: msg = 'encoding problem: utf-8' else: - msg = 'encoding problem for {!r}: utf-8'.format(filename) + msg = 'encoding problem for {!r}: utf-8'.format( + filename) raise SyntaxError(msg) encoding += '-sig' return encoding @@ -467,6 +471,7 @@ except ImportError: # pragma: no cover return default, [first, second] + # For converting & <-> & etc. try: from html import escape @@ -479,12 +484,13 @@ else: try: from collections import ChainMap -except ImportError: # pragma: no cover +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 @@ -509,13 +515,15 @@ except ImportError: # pragma: no cover wrapper.__module__ = getattr(user_function, '__module__') wrapper.__doc__ = getattr(user_function, '__doc__') wrapper.__name__ = getattr(user_function, '__name__') - wrapper.__annotations__ = getattr(user_function, '__annotations__', {}) + wrapper.__annotations__ = getattr(user_function, + '__annotations__', {}) return wrapper return decorating_function class ChainMap(MutableMapping): - ''' A ChainMap groups multiple dicts (or other mappings) together + ''' + 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 @@ -524,7 +532,6 @@ except ImportError: # pragma: no cover 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): @@ -532,7 +539,7 @@ except ImportError: # pragma: no cover If no mappings are provided, a single empty dictionary is used. ''' - self.maps = list(maps) or [{}] # always at least one map + self.maps = list(maps) or [{}] # always at least one map def __missing__(self, key): raise KeyError(key) @@ -540,16 +547,19 @@ except ImportError: # pragma: no cover def __getitem__(self, key): for mapping in self.maps: try: - return mapping[key] # can't use 'key in mapping' with defaultdict + return mapping[ + key] # can't use 'key in mapping' with defaultdict except KeyError: pass - return self.__missing__(key) # support subclasses that define __missing__ + 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 + return len(set().union( + *self.maps)) # reuses stored hash values if possible def __iter__(self): return iter(set().union(*self.maps)) @@ -576,12 +586,12 @@ except ImportError: # pragma: no cover __copy__ = copy - def new_child(self): # like Django's Context.push() + 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() + def parents(self): # like Django's Context.pop() 'New ChainMap from maps[1:].' return self.__class__(*self.maps[1:]) @@ -592,7 +602,8 @@ except ImportError: # pragma: no cover try: del self.maps[0][key] except KeyError: - raise KeyError('Key not found in the first mapping: {!r}'.format(key)) + 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.' @@ -606,15 +617,18 @@ except ImportError: # pragma: no cover try: return self.maps[0].pop(key, *args) except KeyError: - raise KeyError('Key not found in the first mapping: {!r}'.format(key)) + 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 + def cache_from_source(path, debug_override=None): assert path.endswith('.py') if debug_override is None: @@ -625,12 +639,13 @@ except ImportError: # pragma: no cover 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. +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: @@ -641,9 +656,9 @@ except ImportError: # pragma: no cover 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. @@ -661,11 +676,12 @@ except ImportError: # pragma: no cover ''' if len(args) > 1: - raise TypeError('expected at most 1 arguments, got %d' % len(args)) + raise TypeError('expected at most 1 arguments, got %d' % + len(args)) try: self.__root except AttributeError: - self.__root = root = [] # sentinel node + self.__root = root = [] # sentinel node root[:] = [root, root, None] self.__map = {} self.__update(*args, **kwds) @@ -779,7 +795,7 @@ except ImportError: # pragma: no cover ''' if len(args) > 2: raise TypeError('update() takes at most 2 positional ' - 'arguments (%d given)' % (len(args),)) + 'arguments (%d given)' % (len(args), )) elif not args: raise TypeError('update() takes at least 1 argument (0 given)') self = args[0] @@ -825,14 +841,15 @@ except ImportError: # pragma: no cover def __repr__(self, _repr_running=None): 'od.__repr__() <==> repr(od)' - if not _repr_running: _repr_running = {} + 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()' % (self.__class__.__name__, ) return '%s(%r)' % (self.__class__.__name__, self.items()) finally: del _repr_running[call_key] @@ -844,8 +861,8 @@ except ImportError: # pragma: no cover for k in vars(OrderedDict()): inst_dict.pop(k, None) if inst_dict: - return (self.__class__, (items,), inst_dict) - return self.__class__, (items,) + return (self.__class__, (items, ), inst_dict) + return self.__class__, (items, ) def copy(self): 'od.copy() -> a shallow copy of od' @@ -868,7 +885,8 @@ except ImportError: # pragma: no cover ''' if isinstance(other, OrderedDict): - return len(self)==len(other) and self.items() == other.items() + return len(self) == len( + other) and self.items() == other.items() return dict.__eq__(self, other) def __ne__(self, other): @@ -888,19 +906,18 @@ except ImportError: # pragma: no cover "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 +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 @@ -916,7 +933,7 @@ except ImportError: # pragma: no cover 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 the converted value is different, save for next time if value is not result: self[key] = result if type(result) in (ConvertingDict, ConvertingList, @@ -928,7 +945,7 @@ except ImportError: # pragma: no cover 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 the converted value is different, save for next time if value is not result: self[key] = result if type(result) in (ConvertingDict, ConvertingList, @@ -949,10 +966,11 @@ except ImportError: # pragma: no cover 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 the converted value is different, save for next time if value is not result: self[key] = result if type(result) in (ConvertingDict, ConvertingList, @@ -972,6 +990,7 @@ except ImportError: # pragma: no cover class ConvertingTuple(tuple): """A converting tuple wrapper.""" + def __getitem__(self, key): value = tuple.__getitem__(self, key) result = self.configurator.convert(value) @@ -995,8 +1014,8 @@ except ImportError: # pragma: no cover DIGIT_PATTERN = re.compile(r'^\d+$') value_converters = { - 'ext' : 'ext_convert', - 'cfg' : 'cfg_convert', + 'ext': 'ext_convert', + 'cfg': 'cfg_convert', } # We might want to use a different one, e.g. importlib @@ -1042,7 +1061,6 @@ except ImportError: # pragma: no cover else: rest = rest[m.end():] d = self.config[m.groups()[0]] - #print d, rest while rest: m = self.DOT_PATTERN.match(rest) if m: @@ -1055,7 +1073,9 @@ except ImportError: # pragma: no cover d = d[idx] else: try: - n = int(idx) # try as number first (most likely) + n = int( + idx + ) # try as number first (most likely) d = d[n] except TypeError: d = d[idx] @@ -1064,7 +1084,7 @@ except ImportError: # pragma: no cover else: raise ValueError('Unable to convert ' '%r at %r' % (value, rest)) - #rest should be empty + # rest should be empty return d def convert(self, value): @@ -1073,14 +1093,15 @@ except ImportError: # pragma: no cover 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): + if not isinstance(value, ConvertingDict) and isinstance( + value, dict): value = ConvertingDict(value) value.configurator = self - elif not isinstance(value, ConvertingList) and isinstance(value, list): + elif not isinstance(value, ConvertingList) and isinstance( + value, list): value = ConvertingList(value) value.configurator = self - elif not isinstance(value, ConvertingTuple) and\ - isinstance(value, tuple): + elif not isinstance(value, ConvertingTuple) and isinstance(value, tuple): value = ConvertingTuple(value) value.configurator = self elif isinstance(value, string_types): diff --git a/gestao_raul/Lib/site-packages/pip/_vendor/distlib/database.py b/gestao_raul/Lib/site-packages/pip/_vendor/distlib/database.py index 5db5d7f..c0f896a 100644 --- a/gestao_raul/Lib/site-packages/pip/_vendor/distlib/database.py +++ b/gestao_raul/Lib/site-packages/pip/_vendor/distlib/database.py @@ -1,6 +1,6 @@ # -*- coding: utf-8 -*- # -# Copyright (C) 2012-2017 The Python Software Foundation. +# Copyright (C) 2012-2023 The Python Software Foundation. # See LICENSE.txt and CONTRIBUTORS.txt. # """PEP 376 implementation.""" @@ -20,24 +20,20 @@ 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'] +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') +DIST_FILES = ('INSTALLER', METADATA_FILENAME, 'RECORD', 'REQUESTED', 'RESOURCES', EXPORTS_FILENAME, 'SHARED') DISTINFO_EXT = '.dist-info' @@ -46,6 +42,7 @@ 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. @@ -76,6 +73,7 @@ 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/ @@ -111,7 +109,6 @@ class DistributionPath(object): self._cache.clear() self._cache_egg.clear() - def _yield_distributions(self): """ Yield .dist-info and/or .egg(-info) distributions. @@ -134,9 +131,7 @@ class DistributionPath(object): continue try: if self._include_dist and entry.endswith(DISTINFO_EXT): - possible_filenames = [METADATA_FILENAME, - WHEEL_METADATA_FILENAME, - LEGACY_METADATA_FILENAME] + 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) @@ -149,10 +144,8 @@ class DistributionPath(object): 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')): + 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) @@ -270,8 +263,7 @@ class DistributionPath(object): try: matcher = self._scheme.matcher('%s (%s)' % (name, version)) except ValueError: - raise DistlibException('invalid name or version: %r, %r' % - (name, version)) + 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 @@ -346,12 +338,12 @@ class Distribution(object): """ self.metadata = metadata self.name = metadata.name - self.key = self.name.lower() # for case-insensitive comparisons + 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.extras = None # additional features requested + self.context = None # environment marker overrides self.download_urls = set() self.digests = {} @@ -362,7 +354,7 @@ class Distribution(object): """ return self.metadata.source_url - download_url = source_url # Backward compatibility + download_url = source_url # Backward compatibility @property def name_and_version(self): @@ -386,10 +378,8 @@ class Distribution(object): def _get_requirements(self, req_attr): md = self.metadata reqts = getattr(md, req_attr) - logger.debug('%s: got requirements %r from metadata: %r', self.name, req_attr, - reqts) - return set(md.get_requirements(reqts, extras=self.extras, - env=self.context)) + logger.debug('%s: got requirements %r from metadata: %r', self.name, req_attr, reqts) + return set(md.get_requirements(reqts, extras=self.extras, env=self.context)) @property def run_requires(self): @@ -426,12 +416,11 @@ class Distribution(object): 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) + logger.warning('could not read version %r - using name only', req) name = req.split()[0] matcher = scheme.matcher(name) - name = matcher.key # case-insensitive + name = matcher.key # case-insensitive result = False for p in self.provides: @@ -466,9 +455,7 @@ class Distribution(object): 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) + result = (self.name == other.name and self.version == other.version and self.source_url == other.source_url) return result def __hash__(self): @@ -559,8 +546,7 @@ class InstalledDistribution(BaseInstalledDistribution): if r is None: r = finder.find(LEGACY_METADATA_FILENAME) if r is None: - raise ValueError('no %s found in %s' % (METADATA_FILENAME, - path)) + raise ValueError('no %s found in %s' % (METADATA_FILENAME, path)) with contextlib.closing(r.as_stream()) as stream: metadata = Metadata(fileobj=stream, scheme='legacy') @@ -571,15 +557,14 @@ class InstalledDistribution(BaseInstalledDistribution): r = finder.find('REQUESTED') self.requested = r is not None - p = os.path.join(path, 'top_level.txt') + 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) + return '' % (self.name, self.version, self.path) def __str__(self): return "%s %s" % (self.name, self.version) @@ -596,14 +581,14 @@ class InstalledDistribution(BaseInstalledDistribution): 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) + # 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) + # 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 @@ -701,8 +686,7 @@ class InstalledDistribution(BaseInstalledDistribution): 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)): + if path.startswith(base) or (base_under_prefix and path.startswith(prefix)): path = os.path.relpath(path, base) writer.writerow((path, hash_value, size)) @@ -791,7 +775,7 @@ class InstalledDistribution(BaseInstalledDistribution): for key in ('prefix', 'lib', 'headers', 'scripts', 'data'): path = paths[key] if os.path.isdir(paths[key]): - lines.append('%s=%s' % (key, path)) + lines.append('%s=%s' % (key, path)) for ns in paths.get('namespace', ()): lines.append('namespace=%s' % ns) @@ -826,9 +810,8 @@ class InstalledDistribution(BaseInstalledDistribution): # 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)) + 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: @@ -854,8 +837,7 @@ class InstalledDistribution(BaseInstalledDistribution): yield path def __eq__(self, other): - return (isinstance(other, InstalledDistribution) and - self.path == other.path) + return (isinstance(other, InstalledDistribution) and self.path == other.path) # See http://docs.python.org/reference/datamodel#object.__hash__ __hash__ = object.__hash__ @@ -867,13 +849,14 @@ class EggInfoDistribution(BaseInstalledDistribution): 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 + 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.key = n.lower() # for case-insensitive comparisons s.version = v self.path = path @@ -903,15 +886,17 @@ class EggInfoDistribution(BaseInstalledDistribution): lines = data.splitlines() for line in lines: line = line.strip() - if line.startswith('['): - logger.warning('Unexpected line: quitting requirement scan: %r', - line) + # sectioned files have bare newlines (separating sections) + if not line: # pragma: no cover + continue + if line.startswith('['): # pragma: no cover + logger.warning('Unexpected line: quitting requirement scan: %r', line) break r = parse_requirement(line) - if not r: + if not r: # pragma: no cover logger.warning('Not recognised as a requirement: %r', line) continue - if r.extras: + if r.extras: # pragma: no cover logger.warning('extra requirements in requires.txt are ' 'not supported') if not r.constraints: @@ -947,8 +932,7 @@ class EggInfoDistribution(BaseInstalledDistribution): 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')) + 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') @@ -982,8 +966,7 @@ class EggInfoDistribution(BaseInstalledDistribution): return metadata def __repr__(self): - return '' % ( - self.name, self.version, self.path) + return '' % (self.name, self.version, self.path) def __str__(self): return "%s %s" % (self.name, self.version) @@ -1039,7 +1022,7 @@ class EggInfoDistribution(BaseInstalledDistribution): logger.warning('Non-existent file: %s', p) if p.endswith(('.pyc', '.pyo')): continue - #otherwise fall through and fail + # otherwise fall through and fail if not os.path.isdir(p): result.append((p, _md5(p), _size(p))) result.append((record_path, None, None)) @@ -1075,12 +1058,12 @@ class EggInfoDistribution(BaseInstalledDistribution): yield line def __eq__(self, other): - return (isinstance(other, EggInfoDistribution) and - self.path == other.path) + 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 @@ -1114,7 +1097,7 @@ class DependencyGraph(object): """ self.adjacency_list[distribution] = [] self.reverse_list[distribution] = [] - #self.missing[distribution] = [] + # self.missing[distribution] = [] def add_edge(self, x, y, label=None): """Add an edge from distribution *x* to distribution *y* with the given @@ -1174,9 +1157,8 @@ class DependencyGraph(object): 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)) + if label is not 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: @@ -1216,8 +1198,7 @@ class DependencyGraph(object): # 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]) + 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()) @@ -1252,19 +1233,17 @@ def make_graph(dists, scheme='default'): # now make the edges for dist in dists: - requires = (dist.run_requires | dist.meta_requires | - dist.build_requires | dist.dev_requires) + 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) + logger.warning('could not read version %r - using name only', req) name = req.split()[0] matcher = scheme.matcher(name) - name = matcher.key # case-insensitive + name = matcher.key # case-insensitive matched = False if name in provided: @@ -1324,7 +1303,7 @@ def get_required_dists(dists, dist): req = set() # required distributions todo = graph.adjacency_list[dist] # list of nodes we should inspect - seen = set(t[0] for t in todo) # already added to todo + seen = set(t[0] for t in todo) # already added to todo while todo: d = todo.pop()[0] diff --git a/gestao_raul/Lib/site-packages/pip/_vendor/distlib/index.py b/gestao_raul/Lib/site-packages/pip/_vendor/distlib/index.py index 9b6d129..56cd286 100644 --- a/gestao_raul/Lib/site-packages/pip/_vendor/distlib/index.py +++ b/gestao_raul/Lib/site-packages/pip/_vendor/distlib/index.py @@ -1,6 +1,6 @@ # -*- coding: utf-8 -*- # -# Copyright (C) 2013 Vinay Sajip. +# Copyright (C) 2013-2023 Vinay Sajip. # Licensed to the Python Software Foundation under a contributor agreement. # See LICENSE.txt and CONTRIBUTORS.txt. # @@ -25,6 +25,7 @@ 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 @@ -119,7 +120,7 @@ class PackageIndex(object): d = metadata.todict() d[':action'] = 'verify' request = self.encode_request(d.items(), []) - response = self.send_request(request) + self.send_request(request) d[':action'] = 'submit' request = self.encode_request(d.items(), []) return self.send_request(request) @@ -358,8 +359,7 @@ class PackageIndex(object): keystore) rc, stdout, stderr = self.run_command(cmd) if rc not in (0, 1): - raise DistlibException('verify command failed with error ' - 'code %s' % rc) + raise DistlibException('verify command failed with error code %s' % rc) return rc == 0 def download_file(self, url, destfile, digest=None, reporthook=None): diff --git a/gestao_raul/Lib/site-packages/pip/_vendor/distlib/locators.py b/gestao_raul/Lib/site-packages/pip/_vendor/distlib/locators.py index 966ebc0..222c1bf 100644 --- a/gestao_raul/Lib/site-packages/pip/_vendor/distlib/locators.py +++ b/gestao_raul/Lib/site-packages/pip/_vendor/distlib/locators.py @@ -1,6 +1,6 @@ # -*- coding: utf-8 -*- # -# Copyright (C) 2012-2015 Vinay Sajip. +# Copyright (C) 2012-2023 Vinay Sajip. # Licensed to the Python Software Foundation under a contributor agreement. # See LICENSE.txt and CONTRIBUTORS.txt. # @@ -19,15 +19,12 @@ except ImportError: # pragma: no cover 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 .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 .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 @@ -38,6 +35,7 @@ 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. @@ -52,10 +50,12 @@ def get_all_distribution_names(url=None): 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 '' @@ -78,18 +78,18 @@ class RedirectHandler(BaseRedirectHandler): headers.replace_header(key, newurl) else: headers[key] = newurl - return BaseRedirectHandler.http_error_302(self, req, fp, code, msg, - headers) + 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',) + 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 @@ -97,7 +97,7 @@ class Locator(object): # instance to a list of tuples (pyver, abi, arch) which you want to match. wheel_tags = None - downloadable_extensions = source_extensions + ('.whl',) + downloadable_extensions = source_extensions + ('.whl', ) def __init__(self, scheme='default'): """ @@ -197,8 +197,7 @@ class Locator(object): 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) + return (t.scheme == 'https', 'pypi.org' in t.netloc, is_downloadable, is_wheel, compatible, basename) def prefer_url(self, url1, url2): """ @@ -236,14 +235,14 @@ class Locator(object): 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) + logger.debug('%s: version hint in fragment: %r', project_name, frag) m = HASHER_HASH.match(frag) if m: algo, digest = m.groups() @@ -267,12 +266,10 @@ class Locator(object): '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]), + '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 + except Exception: # 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) @@ -291,9 +288,7 @@ class Locator(object): 'name': name, 'version': version, 'filename': filename, - 'url': urlunparse((scheme, netloc, origpath, - params, query, '')), - #'packagetype': 'sdist', + 'url': urlunparse((scheme, netloc, origpath, params, query, '')), } if pyver: # pragma: no cover result['python-version'] = pyver @@ -369,7 +364,7 @@ class Locator(object): 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 + if len(versions) > 2: # urls and digests keys are present # sometimes, versions are invalid slist = [] vcls = matcher.version_class @@ -382,12 +377,9 @@ class Locator(object): 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) + pass # slist.append(k) if len(slist) > 1: slist = sorted(slist, key=scheme.key) if slist: @@ -413,6 +405,7 @@ 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. @@ -456,11 +449,13 @@ class PyPIRPCLocator(Locator): 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) @@ -476,7 +471,7 @@ class PyPIJSONLocator(Locator): url = urljoin(self.base_url, '%s/json' % quote(name)) try: resp = self.opener.open(url) - data = resp.read().decode() # for now + data = resp.read().decode() # for now d = json.loads(data) md = Metadata(scheme=self.scheme) data = d['info'] @@ -487,7 +482,7 @@ class PyPIJSONLocator(Locator): md.summary = data.get('summary') dist = Distribution(md) dist.locator = self - urls = d['urls'] + # urls = d['urls'] result[md.version] = dist for info in d['urls']: url = info['url'] @@ -498,7 +493,7 @@ class PyPIJSONLocator(Locator): # Now get other releases for version, infos in d['releases'].items(): if version == md.version: - continue # already done + continue # already done omd = Metadata(scheme=self.scheme) omd.name = md.name omd.version = version @@ -511,6 +506,8 @@ class PyPIJSONLocator(Locator): 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) @@ -534,7 +531,8 @@ class Page(object): # 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(""" + _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]*)))? @@ -561,17 +559,16 @@ href\\s*=\\s*(?:"(?P[^"]*)"|'(?P[^']*)'|(?P[^>\\s\n]*)) 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)) + 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']) + 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) @@ -645,7 +642,7 @@ class SimpleScrapingLocator(Locator): # 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 + self._to_fetch.put(None) # sentinel for t in self._threads: t.join() self._threads = [] @@ -693,7 +690,7 @@ class SimpleScrapingLocator(Locator): 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 + with self._lock: # needed because self.result is shared self._update_version_data(self.result, info) return info @@ -703,8 +700,7 @@ class SimpleScrapingLocator(Locator): 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): + 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 @@ -722,8 +718,7 @@ class SimpleScrapingLocator(Locator): result = False else: result = True - logger.debug('should_queue: %s (%s) from %s -> %s', link, rel, - referrer, result) + logger.debug('should_queue: %s (%s) from %s -> %s', link, rel, referrer, result) return result def _fetch(self): @@ -738,14 +733,13 @@ class SimpleScrapingLocator(Locator): try: if url: page = self.get_page(url) - if page is None: # e.g. after an error + 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)): + 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 @@ -756,7 +750,7 @@ class SimpleScrapingLocator(Locator): # always do this, to avoid hangs :-) self._to_fetch.task_done() if not url: - #logger.debug('Sentinel seen, quitting.') + # logger.debug('Sentinel seen, quitting.') break def get_page(self, url): @@ -793,7 +787,7 @@ class SimpleScrapingLocator(Locator): data = resp.read() encoding = headers.get('Content-Encoding') if encoding: - decoder = self.decoders[encoding] # fail if not found + decoder = self.decoders[encoding] # fail if not found data = decoder(data) encoding = 'utf-8' m = CHARSET.search(content_type) @@ -802,7 +796,7 @@ class SimpleScrapingLocator(Locator): try: data = data.decode(encoding) except UnicodeError: # pragma: no cover - data = data.decode('latin-1') # fallback + data = data.decode('latin-1') # fallback result = Page(data, final_url) self._page_cache[final_url] = result except HTTPError as e: @@ -815,7 +809,7 @@ class SimpleScrapingLocator(Locator): 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) + self._page_cache[url] = result # even if None (failure) return result _distname_re = re.compile(']*>([^<]+)<') @@ -832,6 +826,7 @@ class SimpleScrapingLocator(Locator): result.add(match.group(1)) return result + class DirectoryLocator(Locator): """ This class locates distributions in a directory tree. @@ -868,9 +863,7 @@ class DirectoryLocator(Locator): for fn in files: if self.should_include(fn, root): fn = os.path.join(root, fn) - url = urlunparse(('file', '', - pathname2url(os.path.abspath(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) @@ -887,9 +880,7 @@ class DirectoryLocator(Locator): for fn in files: if self.should_include(fn, root): fn = os.path.join(root, fn) - url = urlunparse(('file', '', - pathname2url(os.path.abspath(fn)), - '', '', '')) + url = urlunparse(('file', '', pathname2url(os.path.abspath(fn)), '', '', '')) info = self.convert_url_to_download_info(url, None) if info: result.add(info['name']) @@ -897,6 +888,7 @@ class DirectoryLocator(Locator): break return result + class JSONLocator(Locator): """ This locator uses special extended metadata (not available on PyPI) and is @@ -904,6 +896,7 @@ class JSONLocator(Locator): 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. @@ -920,9 +913,9 @@ class JSONLocator(Locator): # 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'), + 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'] @@ -935,11 +928,13 @@ class JSONLocator(Locator): 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. @@ -957,8 +952,12 @@ class DistPathLocator(Locator): else: result = { dist.version: dist, - 'urls': {dist.version: set([dist.source_url])}, - 'digests': {dist.version: set([None])} + 'urls': { + dist.version: set([dist.source_url]) + }, + 'digests': { + dist.version: set([None]) + } } return result @@ -967,6 +966,7 @@ class AggregatingLocator(Locator): """ This class allows you to chain and/or merge a list of locators. """ + def __init__(self, *locators, **kwargs): """ Initialise an instance. @@ -1055,10 +1055,9 @@ class AggregatingLocator(Locator): # We use a legacy scheme simply because most of the dists on PyPI use legacy # versions which don't conform to PEP 440. default_locator = AggregatingLocator( - # JSONLocator(), # don't use as PEP 426 is withdrawn - SimpleScrapingLocator('https://pypi.org/simple/', - timeout=3.0), - scheme='legacy') + # JSONLocator(), # don't use as PEP 426 is withdrawn + SimpleScrapingLocator('https://pypi.org/simple/', timeout=3.0), + scheme='legacy') locate = default_locator.locate @@ -1134,7 +1133,7 @@ class DependencyFinder(object): :return: A set of distribution which can fulfill the requirement. """ matcher = self.get_matcher(reqt) - name = matcher.key # case-insensitive + name = matcher.key # case-insensitive result = set() provided = self.provided if name in provided: @@ -1176,8 +1175,7 @@ class DependencyFinder(object): unmatched.add(s) if unmatched: # can't replace other with provider - problems.add(('cantreplace', provider, other, - frozenset(unmatched))) + problems.add(('cantreplace', provider, other, frozenset(unmatched))) result = False else: # can replace other with provider @@ -1230,8 +1228,7 @@ class DependencyFinder(object): dist = odist = requirement logger.debug('passed %s as requirement', odist) else: - dist = odist = self.locator.locate(requirement, - prereleases=prereleases) + dist = odist = self.locator.locate(requirement, prereleases=prereleases) if dist is None: raise DistlibException('Unable to locate %r' % requirement) logger.debug('located %s', odist) @@ -1241,11 +1238,11 @@ class DependencyFinder(object): install_dists = set([odist]) while todo: dist = todo.pop() - name = dist.key # case-insensitive + name = dist.key # case-insensitive if name not in self.dists_by_name: self.add_distribution(dist) else: - #import pdb; pdb.set_trace() + # import pdb; pdb.set_trace() other = self.dists_by_name[name] if other != dist: self.try_to_replace(dist, other, problems) @@ -1278,8 +1275,7 @@ class DependencyFinder(object): 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) + 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: @@ -1294,7 +1290,6 @@ class DependencyFinder(object): 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('%s is a build-time dependency only.', dist.name_and_version) logger.debug('find done for %s', odist) return dists, problems diff --git a/gestao_raul/Lib/site-packages/pip/_vendor/distlib/manifest.py b/gestao_raul/Lib/site-packages/pip/_vendor/distlib/manifest.py index ca0fe44..420dcf1 100644 --- a/gestao_raul/Lib/site-packages/pip/_vendor/distlib/manifest.py +++ b/gestao_raul/Lib/site-packages/pip/_vendor/distlib/manifest.py @@ -1,6 +1,6 @@ # -*- coding: utf-8 -*- # -# Copyright (C) 2012-2013 Python Software Foundation. +# Copyright (C) 2012-2023 Python Software Foundation. # See LICENSE.txt and CONTRIBUTORS.txt. # """ @@ -34,9 +34,11 @@ _COMMENTED_LINE = re.compile('#.*?(?=\n)|\n(?=$)', re.M | re.S) # _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. + """ + A list of files built by exploring the filesystem and filtered by applying various + patterns to what we find there. """ def __init__(self, base=None): @@ -154,10 +156,7 @@ class Manifest(object): 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) + self._exclude_pattern(pattern, anchor=True) elif action == 'global-include': for pattern in patterns: @@ -167,11 +166,7 @@ class Manifest(object): 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) + self._exclude_pattern(pattern, anchor=False) elif action == 'recursive-include': for pattern in patterns: @@ -181,11 +176,7 @@ class Manifest(object): 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) + self._exclude_pattern(pattern, prefix=thedir) elif action == 'graft': if not self._include_pattern(None, prefix=dirpattern): diff --git a/gestao_raul/Lib/site-packages/pip/_vendor/distlib/markers.py b/gestao_raul/Lib/site-packages/pip/_vendor/distlib/markers.py index 9dc6841..3f5632b 100644 --- a/gestao_raul/Lib/site-packages/pip/_vendor/distlib/markers.py +++ b/gestao_raul/Lib/site-packages/pip/_vendor/distlib/markers.py @@ -1,6 +1,6 @@ # -*- coding: utf-8 -*- # -# Copyright (C) 2012-2017 Vinay Sajip. +# Copyright (C) 2012-2023 Vinay Sajip. # Licensed to the Python Software Foundation under a contributor agreement. # See LICENSE.txt and CONTRIBUTORS.txt. # @@ -19,26 +19,31 @@ import platform from .compat import string_types from .util import in_venv, parse_marker -from .version import NormalizedVersion as NV +from .version import LegacyVersion as LV __all__ = ['interpret'] _VERSION_PATTERN = re.compile(r'((\d+(\.\d+)*\w*)|\'(\d+(\.\d+)*\w*)\'|\"(\d+(\.\d+)*\w*)\")') +_VERSION_MARKERS = {'python_version', 'python_full_version'} + + +def _is_version_marker(s): + return isinstance(s, string_types) and s in _VERSION_MARKERS + def _is_literal(o): if not isinstance(o, string_types) or not o: return False return o[0] in '\'"' + def _get_versions(s): - result = [] - for m in _VERSION_PATTERN.finditer(s): - result.append(NV(m.groups()[0])) - return set(result) + return {LV(m.groups()[0]) for m in _VERSION_PATTERN.finditer(s)} + class Evaluator(object): """ - This class is used to evaluate marker expessions. + This class is used to evaluate marker expressions. """ operations = { @@ -46,10 +51,10 @@ class Evaluator(object): '===': lambda x, y: x == y, '~=': lambda x, y: x == y or x > 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, + '<': 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, @@ -80,19 +85,22 @@ class Evaluator(object): 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) + if ((_is_version_marker(elhs) or _is_version_marker(erhs)) and + op in ('<', '<=', '>', '>=', '===', '==', '!=', '~=')): + lhs = LV(lhs) + rhs = LV(rhs) + elif _is_version_marker(elhs) and op in ('in', 'not in'): + lhs = LV(lhs) rhs = _get_versions(rhs) result = self.operations[op](lhs, rhs) return result + _DIGITS = re.compile(r'\d+\.\d+') + def default_context(): + def format_full_version(info): version = '%s.%s.%s' % (info.major, info.minor, info.micro) kind = info.releaselevel @@ -126,11 +134,13 @@ def default_context(): } 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. diff --git a/gestao_raul/Lib/site-packages/pip/_vendor/distlib/metadata.py b/gestao_raul/Lib/site-packages/pip/_vendor/distlib/metadata.py index c329e19..ce9a34b 100644 --- a/gestao_raul/Lib/site-packages/pip/_vendor/distlib/metadata.py +++ b/gestao_raul/Lib/site-packages/pip/_vendor/distlib/metadata.py @@ -15,7 +15,6 @@ import json import logging import re - from . import DistlibException, __version__ from .compat import StringIO, string_types, text_type from .markers import interpret @@ -40,6 +39,7 @@ class MetadataUnrecognizedVersionError(DistlibException): class MetadataInvalidError(DistlibException): """A metadata value is invalid""" + # public API of this module __all__ = ['Metadata', 'PKG_INFO_ENCODING', 'PKG_INFO_PREFERRED_VERSION'] @@ -52,53 +52,38 @@ 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') +_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', +_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') +_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', +_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') +_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_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') +_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_FIELDS = _426_FIELDS + ('Description-Content-Type', 'Requires', 'Provides', 'Obsoletes') -_566_MARKERS = ('Description-Content-Type',) +_566_MARKERS = ('Description-Content-Type', ) _643_MARKERS = ('Dynamic', 'License-File') @@ -135,18 +120,11 @@ def _version2fieldlist(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) + return any(marker in keys for marker in markers) + keys = [key for key, value in fields.items() if value not in ([], 'UNKNOWN', None)] possible_versions = ['1.0', '1.1', '1.2', '1.3', '2.1', '2.2'] # 2.0 removed # first let's try to see if a field is not part of one of the version @@ -171,12 +149,12 @@ def _best_version(fields): possible_versions.remove('2.2') logger.debug('Removed 2.2 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_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 ! + 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') @@ -207,28 +185,25 @@ def _best_version(fields): if is_2_1: return '2.1' # if is_2_2: - # return '2.2' + # return '2.2' return '2.2' + # 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 -} +_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', +_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', 'License-File') -_LISTTUPLEFIELDS = ('Project-URL',) +_LISTTUPLEFIELDS = ('Project-URL', ) -_ELEMENTSFIELD = ('Keywords',) +_ELEMENTSFIELD = ('Keywords', ) _UNICODEFIELDS = ('Author', 'Maintainer', 'Summary', 'Description') @@ -260,10 +235,10 @@ class LegacyMetadata(object): - *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'): + 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 = {} @@ -298,8 +273,7 @@ class LegacyMetadata(object): raise KeyError(name) def __contains__(self, name): - return (name in self._fields or - self._convert_name(name) in self._fields) + return (name in self._fields or self._convert_name(name) in self._fields) def _convert_name(self, name): if name in _ALL_FIELDS: @@ -327,12 +301,12 @@ class LegacyMetadata(object): # Public API # -# dependencies = property(_get_dependencies, _set_dependencies) - def get_fullname(self, filesafe=False): - """Return the distribution name with version. + """ + Return the distribution name with version. - If filesafe is true, return a filename-escaped form.""" + If filesafe is true, return a filename-escaped form. + """ return _get_name_and_version(self['Name'], self['Version'], filesafe) def is_field(self, name): @@ -423,6 +397,7 @@ class LegacyMetadata(object): 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) @@ -445,14 +420,12 @@ class LegacyMetadata(object): """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 ((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))): + elif (name in _LISTFIELDS and not isinstance(value, (list, tuple))): if isinstance(value, string_types): value = [value] else: @@ -466,18 +439,14 @@ class LegacyMetadata(object): 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) + 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) + 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) + logger.warning("'%s': '%s' is not a valid version (field '%s')", project_name, value, name) if name in _UNICODEFIELDS: if name == 'Description': @@ -547,10 +516,8 @@ class LegacyMetadata(object): return True for fields, controller in ((_PREDICATE_FIELDS, are_valid_constraints), - (_VERSIONS_FIELDS, - scheme.is_valid_constraint_list), - (_VERSION_FIELDS, - scheme.is_valid_version)): + (_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): @@ -606,8 +573,7 @@ class LegacyMetadata(object): return [(key, self[key]) for key in self.keys()] def __repr__(self): - return '<%s %s %s>' % (self.__class__.__name__, self.name, - self.version) + return '<%s %s %s>' % (self.__class__.__name__, self.name, self.version) METADATA_FILENAME = 'pydist.json' @@ -639,7 +605,7 @@ class Metadata(object): MANDATORY_KEYS = { 'name': (), 'version': (), - 'summary': ('legacy',), + 'summary': ('legacy', ), } INDEX_KEYS = ('name version license summary description author ' @@ -652,22 +618,21 @@ class Metadata(object): SYNTAX_VALIDATORS = { 'metadata_version': (METADATA_VERSION_MATCHER, ()), - 'name': (NAME_MATCHER, ('legacy',)), - 'version': (VERSION_MATCHER, ('legacy',)), - 'summary': (SUMMARY_MATCHER, ('legacy',)), - 'dynamic': (FIELDNAME_MATCHER, ('legacy',)), + 'name': (NAME_MATCHER, ('legacy', )), + 'version': (VERSION_MATCHER, ('legacy', )), + 'summary': (SUMMARY_MATCHER, ('legacy', )), + 'dynamic': (FIELDNAME_MATCHER, ('legacy', )), } __slots__ = ('_legacy', '_data', 'scheme') - def __init__(self, path=None, fileobj=None, mapping=None, - scheme='default'): + 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() + # import pdb; pdb.set_trace() if mapping is not None: try: self._validate_mapping(mapping, scheme) @@ -701,8 +666,7 @@ class Metadata(object): # 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._legacy = LegacyMetadata(fileobj=StringIO(data), scheme=scheme) self.validate() common_keys = set(('name', 'version', 'license', 'keywords', 'summary')) @@ -740,8 +704,7 @@ class Metadata(object): result = self._legacy.get(lk) else: value = None if maker is None else maker() - if key not in ('commands', 'exports', 'modules', 'namespaces', - 'classifiers'): + if key not in ('commands', 'exports', 'modules', 'namespaces', 'classifiers'): result = self._data.get(key, value) else: # special cases for PEP 459 @@ -778,8 +741,7 @@ class Metadata(object): m = pattern.match(value) if not m: raise MetadataInvalidError("'%s' is an invalid value for " - "the '%s' property" % (value, - key)) + "the '%s' property" % (value, key)) def __setattr__(self, key, value): self._validate_value(key, value) @@ -791,8 +753,7 @@ class Metadata(object): if lk is None: raise NotImplementedError self._legacy[lk] = value - elif key not in ('commands', 'exports', 'modules', 'namespaces', - 'classifiers'): + elif key not in ('commands', 'exports', 'modules', 'namespaces', 'classifiers'): self._data[key] = value else: # special cases for PEP 459 @@ -880,8 +841,7 @@ class Metadata(object): # 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)) + result.extend(self.get_requirements(reqts, extras=extras, env=env)) return result @property @@ -922,8 +882,7 @@ class Metadata(object): if self._legacy: missing, warnings = self._legacy.check(True) if missing or warnings: - logger.warning('Metadata: missing: %s, warnings: %s', - missing, warnings) + logger.warning('Metadata: missing: %s, warnings: %s', missing, warnings) else: self._validate_mapping(self._data, self.scheme) @@ -940,9 +899,8 @@ class Metadata(object): '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'): + 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' @@ -953,14 +911,13 @@ class Metadata(object): if kw == ['']: kw = [] result['keywords'] = kw - keys = (('requires_dist', 'run_requires'), - ('setup_requires_dist', 'build_requires')) + 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 = {} + # author = {} + # maintainer = {} return result LEGACY_MAPPING = { @@ -977,6 +934,7 @@ class Metadata(object): } def _to_legacy(self): + def process_entries(entries): reqts = set() for e in entries: @@ -1045,12 +1003,10 @@ class Metadata(object): else: d = self._data if fileobj: - json.dump(d, fileobj, ensure_ascii=True, indent=2, - sort_keys=True) + 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) + json.dump(d, f, ensure_ascii=True, indent=2, sort_keys=True) def add_requirements(self, requirements): if self._legacy: @@ -1063,7 +1019,7 @@ class Metadata(object): always = entry break if always is None: - always = { 'requires': requirements } + always = {'requires': requirements} run_requires.insert(0, always) else: rset = set(always['requires']) | set(requirements) @@ -1072,5 +1028,4 @@ class Metadata(object): 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) + return '<%s %s %s (%s)>' % (self.__class__.__name__, self.metadata_version, name, version) diff --git a/gestao_raul/Lib/site-packages/pip/_vendor/distlib/scripts.py b/gestao_raul/Lib/site-packages/pip/_vendor/distlib/scripts.py index d270624..b1fc705 100644 --- a/gestao_raul/Lib/site-packages/pip/_vendor/distlib/scripts.py +++ b/gestao_raul/Lib/site-packages/pip/_vendor/distlib/scripts.py @@ -1,6 +1,6 @@ # -*- coding: utf-8 -*- # -# Copyright (C) 2013-2015 Vinay Sajip. +# Copyright (C) 2013-2023 Vinay Sajip. # Licensed to the Python Software Foundation under a contributor agreement. # See LICENSE.txt and CONTRIBUTORS.txt. # @@ -15,8 +15,7 @@ from zipfile import ZipInfo 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) +from .util import (FileOperator, get_export_entry, convert_path, get_executable, get_platform, in_venv) logger = logging.getLogger(__name__) @@ -49,6 +48,25 @@ if __name__ == '__main__': sys.exit(%(func)s()) ''' +# Pre-fetch the contents of all executable wrapper stubs. +# This is to address https://github.com/pypa/pip/issues/12666. +# When updating pip, we rename the old pip in place before installing the +# new version. If we try to fetch a wrapper *after* that rename, the finder +# machinery will be confused as the package is no longer available at the +# location where it was imported from. So we load everything into memory in +# advance. + +if os.name == 'nt' or (os.name == 'java' and os._name == 'nt'): + # Issue 31: don't hardcode an absolute package name, but + # determine it relative to the current package + DISTLIB_PACKAGE = __name__.rsplit('.', 1)[0] + + WRAPPERS = { + r.name: r.bytes + for r in finder(DISTLIB_PACKAGE).iterator("") + if r.name.endswith(".exe") + } + def enquote_executable(executable): if ' ' in executable: @@ -65,9 +83,11 @@ def enquote_executable(executable): 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 @@ -77,21 +97,18 @@ class ScriptMaker(object): executable = None # for shebangs - def __init__(self, source_dir, target_dir, add_launchers=True, - dry_run=False, fileop=None): + 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.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._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): @@ -102,6 +119,7 @@ class ScriptMaker(object): return executable if sys.platform.startswith('java'): # pragma: no cover + def _is_shell(self, executable): """ Determine if the specified executable is a script @@ -139,6 +157,12 @@ class ScriptMaker(object): """ if os.name != 'posix': simple_shebang = True + elif getattr(sys, "cross_compiling", False): + # In a cross-compiling environment, the shebang will likely be a + # script; this *must* be invoked with the "safe" version of the + # shebang, or else using os.exec() to run the entry script will + # fail, raising "OSError 8 [Errno 8] Exec format error". + simple_shebang = False else: # Add 3 for '#!' prefix and newline suffix. shebang_length = len(executable) + len(post_interp) + 3 @@ -146,37 +170,35 @@ class ScriptMaker(object): max_shebang_length = 512 else: max_shebang_length = 127 - simple_shebang = ((b' ' not in executable) and - (shebang_length <= max_shebang_length)) + 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"' '''" + result += b"' '''\n" 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 + 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')) + 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): + if os.name == 'nt': # 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'))) + 'python%s' % (sysconfig.get_config_var('EXE'))) + else: + executable = os.path.join( + sysconfig.get_config_var('BINDIR'), + 'python%s%s' % (sysconfig.get_config_var('VERSION'), sysconfig.get_config_var('EXE'))) if options: executable = self._get_alternate_executable(executable, options) @@ -200,8 +222,8 @@ class ScriptMaker(object): # 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 + 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 @@ -212,8 +234,7 @@ class ScriptMaker(object): try: shebang.decode('utf-8') except UnicodeDecodeError: # pragma: no cover - raise ValueError( - 'The shebang (%r) is not decodable from utf-8' % shebang) + 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. @@ -221,15 +242,13 @@ class ScriptMaker(object): try: shebang.decode(encoding) except UnicodeDecodeError: # pragma: no cover - raise ValueError( - 'The shebang (%r) is not decodable ' - 'from the script encoding (%r)' % (shebang, encoding)) + 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) + return self.script_template % dict( + module=entry.prefix, import_name=entry.suffix.split('.')[0], func=entry.suffix) manifest = _DEFAULT_MANIFEST @@ -239,9 +258,6 @@ class ScriptMaker(object): 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 @@ -275,7 +291,7 @@ class ScriptMaker(object): 'use .deleteme logic') dfname = '%s.deleteme' % outname if os.path.exists(dfname): - os.remove(dfname) # Not allowed to fail here + 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 ' @@ -283,7 +299,7 @@ class ScriptMaker(object): try: os.remove(dfname) except Exception: - pass # still in use - ignore error + pass # still in use - ignore error else: if self._is_nt and not outname.endswith('.' + ext): # pragma: no cover outname = '%s.%s' % (outname, ext) @@ -304,8 +320,7 @@ class ScriptMaker(object): 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])) + 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): @@ -360,8 +375,7 @@ class ScriptMaker(object): self._fileop.set_executable_mode([outname]) filenames.append(outname) else: - logger.info('copying and adjusting %s -> %s', script, - self.target_dir) + 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) @@ -388,21 +402,17 @@ class ScriptMaker(object): # Launchers are from https://bitbucket.org/vinay.sajip/simple_launcher/ def _get_launcher(self, kind): - if struct.calcsize('P') == 8: # 64-bit + 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)) + if name not in WRAPPERS: + msg = ('Unable to find resource %s in package %s' % + (name, DISTLIB_PACKAGE)) raise ValueError(msg) - return resource.bytes + return WRAPPERS[name] # Public API follows diff --git a/gestao_raul/Lib/site-packages/pip/_vendor/distlib/util.py b/gestao_raul/Lib/site-packages/pip/_vendor/distlib/util.py index dd01849..0d5bd7a 100644 --- a/gestao_raul/Lib/site-packages/pip/_vendor/distlib/util.py +++ b/gestao_raul/Lib/site-packages/pip/_vendor/distlib/util.py @@ -1,5 +1,5 @@ # -# Copyright (C) 2012-2021 The Python Software Foundation. +# Copyright (C) 2012-2023 The Python Software Foundation. # See LICENSE.txt and CONTRIBUTORS.txt. # import codecs @@ -31,11 +31,9 @@ except ImportError: # pragma: no cover 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) +from .compat import (string_types, text_type, shutil, raw_input, StringIO, cache_from_source, urlopen, urljoin, httplib, + xmlrpclib, HTTPHandler, BaseConfigurator, valid_ident, Container, configparser, URLError, ZipFile, + fsdecode, unquote, urlparse) logger = logging.getLogger(__name__) @@ -62,6 +60,7 @@ def parse_marker(marker_string): 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) @@ -95,7 +94,7 @@ def parse_marker(marker_string): raise SyntaxError('unterminated string: %s' % s) parts.append(q) result = ''.join(parts) - remaining = remaining[1:].lstrip() # skip past closing quote + remaining = remaining[1:].lstrip() # skip past closing quote return result, remaining def marker_expr(remaining): @@ -263,8 +262,7 @@ def parse_requirement(req): 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) + return Container(name=distname, extras=extras, constraints=versions, marker=mark_expr, url=uri, requirement=rs) def get_resources_dests(resources_root, rules): @@ -304,15 +302,15 @@ def in_venv(): 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 + # 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 @@ -346,6 +344,7 @@ def extract_by_key(d, keys): result[key] = d[key] return result + def read_exports(stream): if sys.version_info[0] >= 3: # needs to be a text stream @@ -388,7 +387,7 @@ def read_exports(stream): s = '%s = %s' % (name, value) entry = get_export_entry(s) assert entry is not None - #entry.dist = self + # entry.dist = self entries[name] = entry return result @@ -420,6 +419,7 @@ def tempdir(): finally: shutil.rmtree(td) + @contextlib.contextmanager def chdir(d): cwd = os.getcwd() @@ -441,19 +441,21 @@ def socket_timeout(seconds=15): class cached_property(object): + def __init__(self, func): self.func = func - #for attr in ('__name__', '__module__', '__doc__'): - # setattr(self, attr, getattr(func, attr, None)) + # 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) + # 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. @@ -482,6 +484,7 @@ def convert_path(pathname): class FileOperator(object): + def __init__(self, dry_run=False): self.dry_run = dry_run self.ensured = set() @@ -509,8 +512,7 @@ class FileOperator(object): second will have the same "age". """ if not os.path.exists(source): - raise DistlibException("file '%r' does not exist" % - os.path.abspath(source)) + raise DistlibException("file '%r' does not exist" % os.path.abspath(source)) if not os.path.exists(target): return True @@ -598,8 +600,10 @@ class FileOperator(object): 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 + if not isinstance(hashed_invalidation, py_compile.PycInvalidationMode): + hashed_invalidation = py_compile.PycInvalidationMode.CHECKED_HASH + compile_kwargs['invalidation_mode'] = hashed_invalidation + py_compile.compile(path, dpath, diagpath, True, **compile_kwargs) # raise error self.record_as_written(dpath) return dpath @@ -661,9 +665,10 @@ class FileOperator(object): assert flist == ['__pycache__'] sd = os.path.join(d, flist[0]) os.rmdir(sd) - os.rmdir(d) # should fail if non-empty + 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] @@ -680,6 +685,7 @@ def resolve(module_name, dotted_path): class ExportEntry(object): + def __init__(self, name, prefix, suffix, flags): self.name = name self.prefix = prefix @@ -691,27 +697,26 @@ class ExportEntry(object): return resolve(self.prefix, self.suffix) def __repr__(self): # pragma: no cover - return '' % (self.name, self.prefix, - self.suffix, self.flags) + 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 + 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|[-.+])+) +ENTRY_RE = re.compile( + r'''(?P([^\[]\S*)) \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: @@ -784,7 +789,7 @@ def get_cache_base(suffix=None): return os.path.join(result, suffix) -def path_to_cache_dir(path): +def path_to_cache_dir(path, use_abspath=True): """ Convert an absolute path to a directory name for use in a cache. @@ -794,7 +799,7 @@ def path_to_cache_dir(path): #. Any occurrence of ``os.sep`` is replaced with ``'--'``. #. ``'.cache'`` is appended. """ - d, p = os.path.splitdrive(os.path.abspath(path)) + d, p = os.path.splitdrive(os.path.abspath(path) if use_abspath else path) if d: d = d.replace(':', '---') p = p.replace(os.sep, '--') @@ -827,6 +832,7 @@ def get_process_umask(): os.umask(result) return result + def is_string_sequence(seq): result = True i = None @@ -837,6 +843,7 @@ def is_string_sequence(seq): 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?)') @@ -866,10 +873,12 @@ def split_filename(filename, project_name=None): 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. @@ -885,6 +894,7 @@ def parse_name_and_version(p): d = m.groupdict() return d['name'].strip().lower(), d['ver'] + def get_extras(requested, available): result = set() requested = set(requested or []) @@ -906,10 +916,13 @@ def get_extras(requested, available): logger.warning('undeclared extra: %s' % r) result.add(r) return result + + # # Extended metadata functionality # + def _get_external_data(url): result = {} try: @@ -923,21 +936,24 @@ def _get_external_data(url): 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) + # 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) @@ -965,11 +981,11 @@ class Cache(object): logger.warning('Directory \'%s\' is not private', base) self.base = os.path.abspath(os.path.normpath(base)) - def prefix_to_dir(self, prefix): + def prefix_to_dir(self, prefix, use_abspath=True): """ Converts a resource prefix to a directory name in the cache. """ - return path_to_cache_dir(prefix) + return path_to_cache_dir(prefix, use_abspath=use_abspath) def clear(self): """ @@ -992,6 +1008,7 @@ class EventMixin(object): """ A very simple publish/subscribe system. """ + def __init__(self): self._subscribers = {} @@ -1053,18 +1070,19 @@ class EventMixin(object): 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) + 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 + self._nodes = set() # nodes with no preds/succs def add_node(self, node): self._nodes.add(node) @@ -1104,8 +1122,7 @@ class Sequencer(object): 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) + 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): @@ -1134,7 +1151,7 @@ class Sequencer(object): @property def strong_connections(self): - #http://en.wikipedia.org/wiki/Tarjan%27s_strongly_connected_components_algorithm + # http://en.wikipedia.org/wiki/Tarjan%27s_strongly_connected_components_algorithm index_counter = [0] stack = [] lowlinks = {} @@ -1159,11 +1176,11 @@ class Sequencer(object): if successor not in lowlinks: # Successor has not yet been visited strongconnect(successor) - lowlinks[node] = min(lowlinks[node],lowlinks[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]) + 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]: @@ -1172,7 +1189,8 @@ class Sequencer(object): while True: successor = stack.pop() connected_component.append(successor) - if successor == node: break + if successor == node: + break component = tuple(connected_component) # storing the result result.append(component) @@ -1195,12 +1213,13 @@ class Sequencer(object): 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') +ARCHIVE_EXTENSIONS = ('.tar.gz', '.tar.bz2', '.tar', '.zip', '.tgz', '.tbz', '.whl') + def unarchive(archive_filename, dest_dir, format=None, check=True): @@ -1249,6 +1268,20 @@ def unarchive(archive_filename, dest_dir, format=None, check=True): for tarinfo in archive.getmembers(): if not isinstance(tarinfo.name, text_type): tarinfo.name = tarinfo.name.decode('utf-8') + + # Limit extraction of dangerous items, if this Python + # allows it easily. If not, just trust the input. + # See: https://docs.python.org/3/library/tarfile.html#extraction-filters + def extraction_filter(member, path): + """Run tarfile.tar_filter, but raise the expected ValueError""" + # This is only called if the current Python has tarfile filters + try: + return tarfile.tar_filter(member, path) + except tarfile.FilterError as exc: + raise ValueError(str(exc)) + + archive.extraction_filter = extraction_filter + archive.extractall(dest_dir) finally: @@ -1269,11 +1302,12 @@ def zip_dir(directory): zf.write(full, dest) return result + # # Simple progress bar # -UNITS = ('', 'K', 'M', 'G','T','P') +UNITS = ('', 'K', 'M', 'G', 'T', 'P') class Progress(object): @@ -1328,8 +1362,8 @@ class Progress(object): def format_duration(self, duration): if (duration <= 0) and self.max is None or self.cur == self.min: result = '??:??:??' - #elif duration < 1: - # result = '--:--:--' + # elif duration < 1: + # result = '--:--:--' else: result = time.strftime('%H:%M:%S', time.gmtime(duration)) return result @@ -1339,7 +1373,7 @@ class Progress(object): if self.done: prefix = 'Done' t = self.elapsed - #import pdb; pdb.set_trace() + # import pdb; pdb.set_trace() else: prefix = 'ETA ' if self.max is None: @@ -1347,7 +1381,7 @@ class Progress(object): elif self.elapsed == 0 or (self.cur == self.min): t = 0 else: - #import pdb; pdb.set_trace() + # import pdb; pdb.set_trace() t = float(self.max - self.min) t /= self.cur - self.min t = (t - 1) * self.elapsed @@ -1365,6 +1399,7 @@ class Progress(object): result /= 1000.0 return '%d %sB/s' % (result, unit) + # # Glob functionality # @@ -1412,18 +1447,17 @@ def _iglob(path_glob): for fn in _iglob(os.path.join(path, radical)): yield fn + if ssl: - from .compat import (HTTPSHandler as BaseHTTPSHandler, match_hostname, - CertificateError) + from .compat import (HTTPSHandler as BaseHTTPSHandler, match_hostname, CertificateError) - -# -# HTTPSConnection which verifies certificates/matches domains -# + # + # 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 + 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): @@ -1435,7 +1469,7 @@ if ssl: context = ssl.SSLContext(ssl.PROTOCOL_SSLv23) if hasattr(ssl, 'OP_NO_SSLv2'): context.options |= ssl.OP_NO_SSLv2 - if self.cert_file: + if getattr(self, 'cert_file', None): context.load_cert_chain(self.cert_file, self.key_file) kwargs = {} if self.ca_certs: @@ -1455,6 +1489,7 @@ if ssl: raise class HTTPSHandler(BaseHTTPSHandler): + def __init__(self, ca_certs, check_domain=True): BaseHTTPSHandler.__init__(self) self.ca_certs = ca_certs @@ -1496,14 +1531,17 @@ if ssl: # 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 # class Transport(xmlrpclib.Transport): + def __init__(self, timeout, use_datetime=0): self.timeout = timeout xmlrpclib.Transport.__init__(self, use_datetime) @@ -1515,8 +1553,11 @@ class Transport(xmlrpclib.Transport): self._connection = host, httplib.HTTPConnection(h) return self._connection[1] + if ssl: + class SafeTransport(xmlrpclib.SafeTransport): + def __init__(self, timeout, use_datetime=0): self.timeout = timeout xmlrpclib.SafeTransport.__init__(self, use_datetime) @@ -1528,12 +1569,12 @@ if ssl: kwargs['timeout'] = self.timeout if not self._connection or host != self._connection[0]: self._extra_headers = eh - self._connection = host, httplib.HTTPSConnection(h, None, - **kwargs) + self._connection = host, httplib.HTTPSConnection(h, None, **kwargs) return self._connection[1] 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 @@ -1550,11 +1591,13 @@ class ServerProxy(xmlrpclib.ServerProxy): 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' @@ -1568,9 +1611,9 @@ def _csv_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) + '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): @@ -1581,6 +1624,7 @@ class CSVBase(object): class CSVReader(CSVBase): + def __init__(self, **kwargs): if 'stream' in kwargs: stream = kwargs['stream'] @@ -1605,7 +1649,9 @@ class CSVReader(CSVBase): __next__ = next + class CSVWriter(CSVBase): + def __init__(self, fn, **kwargs): self.stream = _csv_open(fn, 'w') self.writer = csv.writer(self.stream, **self.defaults) @@ -1620,10 +1666,12 @@ class CSVWriter(CSVBase): row = r self.writer.writerow(row) + # # Configurator functionality # + class Configurator(BaseConfigurator): value_converters = dict(BaseConfigurator.value_converters) @@ -1634,6 +1682,7 @@ class Configurator(BaseConfigurator): 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]) @@ -1683,6 +1732,7 @@ class SubprocessMixin(object): """ Mixin for running subprocesses and capturing their output """ + def __init__(self, verbose=False, progress=None): self.verbose = verbose self.progress = progress @@ -1709,8 +1759,7 @@ class SubprocessMixin(object): stream.close() def run_command(self, cmd, **kwargs): - p = subprocess.Popen(cmd, stdout=subprocess.PIPE, - stderr=subprocess.PIPE, **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')) @@ -1730,15 +1779,17 @@ def normalize_name(name): # 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) +# """ +# 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): @@ -1763,9 +1814,7 @@ class PyPIRCFile(object): 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() != ''] + _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: @@ -1776,8 +1825,7 @@ class PyPIRCFile(object): result['username'] = config.get(server, 'username') # optional params - for key, default in (('repository', self.DEFAULT_REPOSITORY), - ('realm', self.DEFAULT_REALM), + 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) @@ -1787,11 +1835,9 @@ class PyPIRCFile(object): # 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')): + if (server == 'pypi' and repository in (self.DEFAULT_REPOSITORY, 'pypi')): result['repository'] = self.DEFAULT_REPOSITORY - elif (result['server'] != repository and - result['repository'] != repository): + elif (result['server'] != repository and result['repository'] != repository): result = {} elif 'server-login' in sections: # old format @@ -1821,20 +1867,24 @@ class PyPIRCFile(object): 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 @@ -1886,16 +1936,16 @@ def get_host_platform(): # At least on Linux/Intel, 'machine' is the processor -- # i386, etc. # XXX what about Alpha, SPARC, etc? - return "%s-%s" % (osname, machine) + return "%s-%s" % (osname, machine) elif osname[:5] == 'sunos': - if release[0] >= '5': # SunOS 5 == Solaris 2 + 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'} + bitness = {2147483647: '32bit', 9223372036854775807: '64bit'} machine += '.%s' % bitness[sys.maxsize] # fall through to standard osname-release-machine representation elif osname[:3] == 'aix': @@ -1903,23 +1953,25 @@ def get_host_platform(): return aix_platform() elif osname[:6] == 'cygwin': osname = 'cygwin' - rel_re = re.compile (r'[\d.]+', re.ASCII) + 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) + import _osx_support + try: + from distutils import sysconfig + except ImportError: + import sysconfig + osname, release, machine = _osx_support.get_platform_osx(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', + 'x86': 'win32', + 'x64': 'win-amd64', + 'arm': 'win-arm32', } diff --git a/gestao_raul/Lib/site-packages/pip/_vendor/distlib/version.py b/gestao_raul/Lib/site-packages/pip/_vendor/distlib/version.py index c7c8bb6..d70a96e 100644 --- a/gestao_raul/Lib/site-packages/pip/_vendor/distlib/version.py +++ b/gestao_raul/Lib/site-packages/pip/_vendor/distlib/version.py @@ -1,6 +1,6 @@ # -*- coding: utf-8 -*- # -# Copyright (C) 2012-2017 The Python Software Foundation. +# Copyright (C) 2012-2023 The Python Software Foundation. # See LICENSE.txt and CONTRIBUTORS.txt. # """ @@ -176,9 +176,9 @@ class Matcher(object): 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]+)?))?$') +PEP440_VERSION_RE = re.compile(r'^v?(\d+!)?(\d+(\.\d+)*)((a|alpha|b|beta|c|rc|pre|preview)(\d+)?)?' + r'(\.(post|r|rev)(\d+)?)?([._-]?(dev)(\d+)?)?' + r'(\+([a-zA-Z\d]+(\.[a-zA-Z\d]+)?))?$', re.I) def _pep_440_key(s): @@ -202,15 +202,24 @@ def _pep_440_key(s): if pre == (None, None): pre = () else: - pre = pre[0], int(pre[1]) + if pre[1] is None: + pre = pre[0], 0 + else: + pre = pre[0], int(pre[1]) if post == (None, None): post = () else: - post = post[0], int(post[1]) + if post[1] is None: + post = post[0], 0 + else: + post = post[0], int(post[1]) if dev == (None, None): dev = () else: - dev = dev[0], int(dev[1]) + if dev[1] is None: + dev = dev[0], 0 + else: + dev = dev[0], int(dev[1]) if local is None: local = () else: @@ -238,7 +247,6 @@ def _pep_440_key(s): if not dev: dev = ('final',) - #print('%s -> %s' % (s, m.groups())) return epoch, nums, pre, post, dev, local @@ -378,6 +386,7 @@ class NormalizedMatcher(Matcher): 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 @@ -388,7 +397,7 @@ _REPLACEMENTS = ( (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 + 'pre.alpha'), # standardise (re.compile(r'\(beta\)$'), 'beta'), # remove parentheses ) @@ -416,7 +425,7 @@ def _suggest_semantic_version(s): # Now look for numeric prefix, and separate it out from # the rest. - #import pdb; pdb.set_trace() + # import pdb; pdb.set_trace() m = _NUMERIC_PREFIX.match(result) if not m: prefix = '0.0.0' @@ -434,7 +443,7 @@ def _suggest_semantic_version(s): prefix = '.'.join([str(i) for i in prefix]) suffix = suffix.strip() if suffix: - #import pdb; pdb.set_trace() + # import pdb; pdb.set_trace() # massage the suffix. for pat, repl in _SUFFIX_REPLACEMENTS: suffix = pat.sub(repl, suffix) @@ -504,7 +513,7 @@ def _suggest_normalized_version(s): rs = rs[1:] # Clean leading '0's on numbers. - #TODO: unintended side-effect on, e.g., "2003.05.09" + # 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) @@ -563,6 +572,7 @@ def _suggest_normalized_version(s): # Legacy version processing (distribute-compatible) # + _VERSION_PART = re.compile(r'([a-z]+|\d+|[\.-])', re.I) _VERSION_REPLACE = { 'pre': 'c', @@ -609,8 +619,7 @@ class LegacyVersion(Version): def is_prerelease(self): result = False for x in self._parts: - if (isinstance(x, string_types) and x.startswith('*') and - x < '*final'): + if (isinstance(x, string_types) and x.startswith('*') and x < '*final'): result = True break return result @@ -641,6 +650,7 @@ class LegacyMatcher(Matcher): # 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) @@ -722,6 +732,7 @@ class VersionScheme(object): result = self.suggester(s) return result + _SCHEMES = { 'normalized': VersionScheme(_normalized_key, NormalizedMatcher, _suggest_normalized_version), diff --git a/gestao_raul/Lib/site-packages/pip/_vendor/distlib/wheel.py b/gestao_raul/Lib/site-packages/pip/_vendor/distlib/wheel.py index 028c2d9..62ab10f 100644 --- a/gestao_raul/Lib/site-packages/pip/_vendor/distlib/wheel.py +++ b/gestao_raul/Lib/site-packages/pip/_vendor/distlib/wheel.py @@ -1,6 +1,6 @@ # -*- coding: utf-8 -*- # -# Copyright (C) 2013-2020 Vinay Sajip. +# Copyright (C) 2013-2023 Vinay Sajip. # Licensed to the Python Software Foundation under a contributor agreement. # See LICENSE.txt and CONTRIBUTORS.txt. # @@ -24,16 +24,14 @@ 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 .metadata import Metadata, 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 +cache = None # created when needed if hasattr(sys, 'pypy_version_info'): # pragma: no cover IMP_PREFIX = 'pp' @@ -45,7 +43,7 @@ else: IMP_PREFIX = 'cp' VER_SUFFIX = sysconfig.get_config_var('py_version_nodot') -if not VER_SUFFIX: # pragma: no cover +if not VER_SUFFIX: # pragma: no cover VER_SUFFIX = '%s%s' % sys.version_info[:2] PYVER = 'py' + VER_SUFFIX IMPVER = IMP_PREFIX + VER_SUFFIX @@ -56,6 +54,7 @@ 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'): @@ -73,10 +72,12 @@ else: if us == 4 or (us is None and sys.maxunicode == 0x10FFFF): parts.append('u') return ''.join(parts) + ABI = _derive_abi() del _derive_abi -FILENAME_RE = re.compile(r''' +FILENAME_RE = re.compile( + r''' (?P[^-]+) -(?P\d+[^-]*) (-(?P\d+[^-]*))? @@ -109,12 +110,14 @@ else: import importlib.machinery import importlib.util + def _get_suffixes(): if imp: return [s[0] for s in imp.get_suffixes()] else: return importlib.machinery.EXTENSION_SUFFIXES + def _load_dynamic(name, path): # https://docs.python.org/3/library/importlib.html#importing-a-source-file-directly if imp: @@ -126,7 +129,9 @@ def _load_dynamic(name, path): spec.loader.exec_module(module) return module + class Mounter(object): + def __init__(self): self.impure_wheels = {} self.libs = {} @@ -161,6 +166,7 @@ class Mounter(object): result.__package__ = parts[0] return result + _hook = Mounter() @@ -227,8 +233,7 @@ class Wheel(object): 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) + return '%s-%s%s-%s-%s-%s.whl' % (self.name, version, buildver, pyver, abi, arch) @property def exists(self): @@ -249,14 +254,14 @@ class Wheel(object): 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]) + 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] + # fns = [WHEEL_METADATA_FILENAME, METADATA_FILENAME, + # LEGACY_METADATA_FILENAME] # else: - # fns = [WHEEL_METADATA_FILENAME, METADATA_FILENAME] + # fns = [WHEEL_METADATA_FILENAME, METADATA_FILENAME] fns = [WHEEL_METADATA_FILENAME, LEGACY_METADATA_FILENAME] result = None for fn in fns: @@ -332,7 +337,7 @@ class Wheel(object): return hash_kind, result def write_record(self, records, record_path, archive_record_path): - records = list(records) # make a copy, as mutated + records = list(records) # make a copy, as mutated records.append((archive_record_path, '', '')) with CSVWriter(record_path) as writer: for row in records: @@ -341,7 +346,7 @@ class Wheel(object): def write_records(self, info, libdir, archive_paths): records = [] distinfo, info_dir = info - hasher = getattr(hashlib, self.hash_kind) + # hasher = getattr(hashlib, self.hash_kind) for ap, p in archive_paths: with open(p, 'rb') as f: data = f.read() @@ -466,6 +471,7 @@ class Wheel(object): if '.dist-info' in ap: n += 10000 return (n, ap) + archive_paths = sorted(archive_paths, key=sorter) # Now, at last, RECORD. @@ -503,7 +509,7 @@ class Wheel(object): 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+). + supported interpreter versions (CPython 3.7+). The return value is a :class:`InstalledDistribution` instance unless ``options.lib_only`` is True, in which case the return value is ``None``. @@ -553,11 +559,11 @@ class Wheel(object): # 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 + fileop.record = True # so we can rollback if needed - bc = not sys.dont_write_bytecode # Double negatives. Lovely! + bc = not sys.dont_write_bytecode # Double negatives. Lovely! - outfiles = [] # for RECORD writing + outfiles = [] # for RECORD writing # for script copying/shebang processing workdir = tempfile.mkdtemp() @@ -591,8 +597,7 @@ class Wheel(object): 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')) + 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) @@ -624,14 +629,12 @@ class Wheel(object): '%s' % outfile) if bc and outfile.endswith('.py'): try: - pyc = fileop.byte_compile(outfile, - hashed_invalidation=bc_hashed_invalidation) + 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) + logger.warning('Byte-compilation failed', exc_info=True) else: fn = os.path.basename(convert_path(arcname)) workname = os.path.join(workdir, fn) @@ -700,7 +703,7 @@ class Wheel(object): fileop.set_executable_mode(filenames) if gui_scripts: - options = {'gui': True } + options = {'gui': True} for k, v in gui_scripts.items(): script = '%s = %s' % (k, v) filenames = maker.make(script, options) @@ -710,7 +713,7 @@ class Wheel(object): dist = InstalledDistribution(p) # Write SHARED - paths = dict(paths) # don't change passed in dict + paths = dict(paths) # don't change passed in dict del paths['purelib'] del paths['platlib'] paths['lib'] = libdir @@ -719,8 +722,7 @@ class Wheel(object): outfiles.append(p) # Write RECORD - dist.write_installed_files(outfiles, paths['prefix'], - dry_run) + dist.write_installed_files(outfiles, paths['prefix'], dry_run) return dist except Exception: # pragma: no cover logger.exception('installation failed.') @@ -733,8 +735,7 @@ class Wheel(object): 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]) + base = os.path.join(get_cache_base(), str('dylib-cache'), '%s.%s' % sys.version_info[:2]) cache = Cache(base) return cache @@ -751,7 +752,7 @@ class Wheel(object): wf = wrapper(bf) extensions = json.load(wf) cache = self._get_dylib_cache() - prefix = cache.prefix_to_dir(pathname) + prefix = cache.prefix_to_dir(self.filename, use_abspath=False) cache_base = os.path.join(cache.base, prefix) if not os.path.isdir(cache_base): os.makedirs(cache_base) @@ -782,7 +783,7 @@ class Wheel(object): """ Determine if a wheel is asserted as mountable by its metadata. """ - return True # for now - metadata details TBD + return True # for now - metadata details TBD def mount(self, append=False): pathname = os.path.abspath(os.path.join(self.dirname, self.filename)) @@ -820,10 +821,10 @@ class Wheel(object): 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 + # data_dir = '%s.data' % name_ver info_dir = '%s.dist-info' % name_ver - metadata_name = posixpath.join(info_dir, LEGACY_METADATA_FILENAME) + # metadata_name = posixpath.join(info_dir, LEGACY_METADATA_FILENAME) wheel_metadata_name = posixpath.join(info_dir, 'WHEEL') record_name = posixpath.join(info_dir, 'RECORD') @@ -832,9 +833,9 @@ class Wheel(object): 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]) + message_from_file(wf) + # wv = message['Wheel-Version'].split('.', 1) + # file_version = tuple([int(i) for i in wv]) # TODO version verification records = {} @@ -903,15 +904,14 @@ class Wheel(object): def update_version(version, path): updated = None try: - v = NormalizedVersion(version) + 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)) + 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) @@ -920,8 +920,7 @@ class Wheel(object): 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) + 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) @@ -957,9 +956,7 @@ class Wheel(object): 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) + fd, newpath = tempfile.mkstemp(suffix='.whl', prefix='wheel-update-', dir=workdir) os.close(fd) else: if not os.path.isdir(dest_dir): @@ -974,6 +971,7 @@ class Wheel(object): shutil.copyfile(newpath, pathname) return modified + def _get_glibc_version(): import platform ver = platform.libc_ver() @@ -984,15 +982,25 @@ def _get_glibc_version(): 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)])) + class _Version: + def __init__(self, major, minor): + self.major = major + self.major_minor = (major, minor) + self.string = ''.join((str(major), str(minor))) + def __str__(self): + return self.string + + + versions = [ + _Version(sys.version_info.major, minor_version) + for minor_version in range(sys.version_info.minor, -1, -1) + ] abis = [] for suffix in _get_suffixes(): if suffix.startswith('.abi'): @@ -1023,40 +1031,50 @@ def compatible_tags(): while minor >= 0: for match in matches: s = '%s_%s_%s_%s' % (name, major, minor, match) - if s != ARCH: # already there + 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))) + for i, version_object in enumerate(versions): + version = str(version_object) + add_abis = [] + + if i == 0: + add_abis = abis + + if IMP_PREFIX == 'cp' and version_object.major_minor >= (3, 2): + limited_api_abi = 'abi' + str(version_object.major) + if limited_api_abi not in add_abis: + add_abis.append(limited_api_abi) + + for abi in add_abis: + for arch in arches: + result.append((''.join((IMP_PREFIX, version)), 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, version)), abi, 'manylinux1_%s' % arch)) + if parts >= (2, 12): + result.append((''.join((IMP_PREFIX, version)), abi, 'manylinux2010_%s' % arch)) + if parts >= (2, 17): + result.append((''.join((IMP_PREFIX, version)), abi, 'manylinux2014_%s' % arch)) + result.append((''.join( + (IMP_PREFIX, version)), 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): + for i, version_object in enumerate(versions): + version = str(version_object) 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): + for i, version_object in enumerate(versions): + version = str(version_object) result.append((''.join(('py', version)), 'none', 'any')) if i == 0: result.append((''.join(('py', version[0])), 'none', 'any')) @@ -1071,7 +1089,7 @@ del compatible_tags def is_compatible(wheel, tags=None): if not isinstance(wheel, Wheel): - wheel = Wheel(wheel) # assume it's a filename + wheel = Wheel(wheel) # assume it's a filename result = False if tags is None: tags = COMPATIBLE_TAGS diff --git a/gestao_raul/Lib/site-packages/pip/_vendor/distro/__pycache__/__init__.cpython-310.pyc b/gestao_raul/Lib/site-packages/pip/_vendor/distro/__pycache__/__init__.cpython-310.pyc index 5e5eb2db492a646f34ff99991786cbe328fc70d7..d001fdee06e31e777a564cf31b7076a106d9b09d 100644 GIT binary patch delta 56 zcmbQt-pkIN&&$ij00fKtR&V6yWtNY2wu%WYPAw{qDNoHQ$&Yc#PcF?(%_}L62?}y@ Kb)Ia?90mZk8xbJ@ delta 62 zcmeBWpUlpk&&$ij00h-PLN{{rGOH#!Tg8MHrxq2*l&9vDlk=jG*M0D?t+t0!`|GDc6FD9IWWSf~2=jG*M0D|ftp%b}V851W?l;loNEiOsSk1t9r&6&790szh640Zqj diff --git a/gestao_raul/Lib/site-packages/pip/_vendor/distro/__pycache__/distro.cpython-310.pyc b/gestao_raul/Lib/site-packages/pip/_vendor/distro/__pycache__/distro.cpython-310.pyc index 46d7b2b9eb4261b205b363544a8683913a722947..525c416509840caddd5a80d2e4dcc3e321bec31e 100644 GIT binary patch delta 2027 zcmZvcc}!GC9LL}9?ZE`bGwqp8T-uKOXe&6}cZ)V=^ z*ofGFQS__O>+J-7^`{-(IQzUHJiyM2mo4u^^T+IS(r+19h&%BpvNbLu>xh@Mn0QOG zBp_owkNOkK^Dw3gB1<_8_;(1hV6u#}z-eqb3E?bgs;Cttloz#hs<)Da@m}z> za@>lvB%G|`W0rB3URj>VmnV|d781ej%U{BgB#P6JmuNJJ;dI4IG?v718cO0NA0EMy z6G$Q_D_1!5vq&kjSujSCH%TVR;u)i*7?NEgwt?IsMK|*d zM9fkiLvFzYTdy*yRAB)@^cR~s^s4qFkKDNM{B>qYHs^1VN-Hb!<0}fQ%B1p2bAD!K zY(gCCvUy*0bEunw{Bt&t$Si&n0M%@(|2}}7%qg%3ppy*-y$jIC!h(xL7-ZJve~WOISwjOf zaFdO#jt5aCGUvz~06i;GA0aGPj z2gqQzl7;~YYfruiV4-;_51^SwrJA9ZvD9ZSu%8W)Pekx!c^hv7EM+0Z_W+XU?2<8v zVGm120p4O?l!+>+WW$@CMfi}7%5wn*=}+b-aEjiq{29)$%T=}j->{q2J^-T~H5(VJ z>IJL1UhD(@)=a&%_$II$V>W#PR~>Dw8JT4(yYQWoT~XXnW>B|*d31a2Lb%Hg)$(Qk zMxWIs=~{Wr0Cf+kdqW{TvGt^WLL~^l<1TA;b>8%TwIgk;H$W>pTJHr~jhbg_r_Ifa zs5M$m|JpW(M_d{Jv@J z8OfWAaa=cVOifnUWZ>@IO{4Z5)7^GaydR{v`TX&!y@EjJZjYq8mK`*&*$$MHcG27v zHfeIVyvDAzYzK&C**nxK=%u;4Vl@Z2A)Q%wtq?U>P9wYX-Wt)lmpA2)xs0p%7c7m7 zCDrn$G@{j2!#M1u#@3OTBfMqM$ysPUhVmK8Aj)x+lPE)6#+^)?3uLooswyuilT3vb z<(2%WBY%!-)=+LZMz`)^p;P(R;jsV9cLD=S(yw^SAj*jdPAOSBd2^UfgNp4${nSZ%(SZ{WW+vKhVS7#c+c;>`Q@weV7D`Ni(SB{n)8N zxqyP(V^B@je*?kS%4B1_=|TH@65up@)Z;6VvmVxtp!*bk zXuSlPl=UTKJjIbZlc}trxZGrtZ)1EMgUlxSBIC=J?=aYE;wfLPiEe30mF3+E2lR46S@`~gt1>jYr z@)U~H#E1AcY4VJm2Na29F7azp=Pe+w5`V=Tz#a2R0C$*3j>3$STuT-Z6X${4JHei> z8%Tn9G)ReBaak-COcrt&{C^6v5VDA~h0n22vY4}w$)>`{65iCJ$yqpw;Iq)@+VL#X zlBFb)=Pc$fXJvaL-=0XKNOY6hniuv0UPfYgktHwCSQ5u+_zN_iBybu*5~Tnh!Iqbk zBuy!=*^<9QDy^)@PpT-aDwE19E&0WgrLv&H zEEiOjvNqiTQ8%sjrR=KgWESbP9@rT}ln##3pIj5+0t<9=*V0z^DAw-TrZEiQi^kUx z^jR!o&NVg6VtT*JI!I)LrbhrW`!uK>ppk7{*a2W;VQyI`fwX%?trkJFw^2Rr+R^oroc zdWvrW1TkyL9f0L@)7D{#VIieM0PER!nW%zoOnlu#gd=Q*WfmAts|4Y9-0@T`4Y9b> zwUsxapPH(E=FevO_9+0LFrOU(0H4#<)y4CLdf|ksUhD*ZS5MwGcqj0tiZg8|I&}1A z^}tlULrqEwE9Duu1yA}~w-+6%nFpinK@H#keVSI6qHp0bBh>zIXlEgPQg;^qqJ8x% zp@luH_W>=adEy~D(&$ee_1^z^ucLSP4ZGHWVH+*AMnenjwHARpbJ>*wFq7u)PJzSp zo!!?Bt+=*?Vy7dnZZ5HWI2ZHU`JmR9wwAcj;d%r8sKJ|Oj5Z9>+f7cOc%9<7B~bD5 z7Lrtl1%a0AilytC_8Qu-;?uHD@qE5y!dhyb&3yLk0*GZ@d(|p9PER!_YL0P3D!bnt zE^4r)oy>S3U7UHG59N2cIMk&j<&s0(x?MhvY&SNmImd@K+Iw&y;XOVw>g8;Vy^nGR zb5(gknPe`kD6ix{2>C;$9(LVJ2V0navR)2tw#{}`k}vX@ zQIuC;q4SFSEj~O)zpxEDA3>Oj2EBZgcD8PSOZ0K;pI#@CW1_qVWeYkq^2Da73-#4} z%*g-^r~O*|UCD1Nb#b{-rfoYU!UNiIxD$qGv^@^`Xr0{;dguweFDF;*K^n@9cjzDX z61c(4?Wqvlfkm*H45L~;ij!)TD=7FFjH-$LZy@+gS?n4g&Z56|B*P^Zeq@0-U1_&x z!h8vR`%u17%vfy^YdIPSNqAne^73eKgeM^@hmKE0egj2^f;)6*HrG^2mWe~are$1J zuBOxG%+O@;;U4C7e2WO*(|spSX$LWOo`!W^g$xQ^$!o?qaOlnEvVxLwvsrdvd=%w2 z7k(sj_$|YjD5oR4kMbMJk0`k)4Je%`%BwL*?OmA~`5*`Mm#$SFw=gn-@-@m;lyB+k i?gkj6Uv`_Ii$3hm^5B06PcQXDZ^KlRdp6yCGX7t!*+KUJ diff --git a/gestao_raul/Lib/site-packages/pip/_vendor/distro/distro.py b/gestao_raul/Lib/site-packages/pip/_vendor/distro/distro.py index 89e1868..78ccdfa 100644 --- a/gestao_raul/Lib/site-packages/pip/_vendor/distro/distro.py +++ b/gestao_raul/Lib/site-packages/pip/_vendor/distro/distro.py @@ -1,5 +1,5 @@ #!/usr/bin/env python -# Copyright 2015,2016,2017 Nir Cohen +# Copyright 2015-2021 Nir Cohen # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -55,7 +55,7 @@ except ImportError: # Python 3.7 TypedDict = dict -__version__ = "1.8.0" +__version__ = "1.9.0" class VersionDict(TypedDict): @@ -125,6 +125,7 @@ _DISTRO_RELEASE_BASENAME_PATTERN = re.compile(r"(\w+)[-_](release|version)$") # Base file names to be looked up for if _UNIXCONFDIR is not readable. _DISTRO_RELEASE_BASENAMES = [ "SuSE-release", + "altlinux-release", "arch-release", "base-release", "centos-release", @@ -151,6 +152,8 @@ _DISTRO_RELEASE_IGNORE_BASENAMES = ( "system-release", "plesk-release", "iredmail-release", + "board-release", + "ec2_version", ) @@ -243,6 +246,7 @@ def id() -> str: "rocky" Rocky Linux "aix" AIX "guix" Guix System + "altlinux" ALT Linux ============== ========================================= If you have a need to get distros for reliable IDs added into this set, @@ -991,10 +995,10 @@ class LinuxDistribution: For details, see :func:`distro.info`. """ - return dict( + return InfoDict( id=self.id(), version=self.version(pretty, best), - version_parts=dict( + version_parts=VersionDict( major=self.major_version(best), minor=self.minor_version(best), build_number=self.build_number(best), diff --git a/gestao_raul/Lib/site-packages/pip/_vendor/distro/py.typed b/gestao_raul/Lib/site-packages/pip/_vendor/distro/py.typed new file mode 100644 index 0000000..e69de29 diff --git a/gestao_raul/Lib/site-packages/pip/_vendor/idna/__init__.py b/gestao_raul/Lib/site-packages/pip/_vendor/idna/__init__.py index a40eeaf..cfdc030 100644 --- a/gestao_raul/Lib/site-packages/pip/_vendor/idna/__init__.py +++ b/gestao_raul/Lib/site-packages/pip/_vendor/idna/__init__.py @@ -1,4 +1,3 @@ -from .package_data import __version__ from .core import ( IDNABidiError, IDNAError, @@ -20,8 +19,10 @@ from .core import ( valid_string_length, ) from .intranges import intranges_contain +from .package_data import __version__ __all__ = [ + "__version__", "IDNABidiError", "IDNAError", "InvalidCodepoint", diff --git a/gestao_raul/Lib/site-packages/pip/_vendor/idna/__pycache__/__init__.cpython-310.pyc b/gestao_raul/Lib/site-packages/pip/_vendor/idna/__pycache__/__init__.cpython-310.pyc index 60867c63f20f891b9e6fc5f6a6ead6f910a7b2f9..fa094520ccf3fb76efe93380f8d0e314f969fb11 100644 GIT binary patch delta 183 zcmX@lc8-lVpO=@50SFfPtxivw$g9nq%M>-y-jSV=A%!7@DQ9A{`o^8|j8crZxZ~r? zQj3Z+^Yh~4HARXRF+DXtC9x!N@=hjc`ABE0n9yRN@iFD8IVJfqF8Rr&xv6<2 Z#W6uaPOi?Ae=_-T1TgT3@G$Z)0RXJ&HX;B3 delta 180 zcmX@dcAkwlpO=@50SKypgr)~hnQR$FCo3|^C>DtTwfkvG+~O%nOwLYBPmNDWEJ-Y40*c;ZNzN}y z1*#1d0IRyinVDBol$e*ET0D6lleB8QvsFxJG0^0g^3E)%~$eB0Fh=q)A-JmW;whpaOQ&0#l`f(UL2V zGdr^(XB*fZ0Y&6%`!`6v3BB|WXm36D58yQ?pK{QtxwPNMS!pFpf!kTk8}dCa$wz+P zBg@&@wu9#{n}6N;-K^t$NtM%&kIEWe{VxdN2$nl>^JOtZ-Ob&h7kfh<^PwO6%n_d8 zc`yv)a2UnWuobt4?YKRhiD#H2*?vd(2P~fbxg!D*K6OMWok!h0FYZDUi54_1Xy%}q zho&uNpqYW@5;P0Ybi^z)v$6}_hOR5-pqsP0Md%jAyu2bVNscxzEja@&7R2SJ zJiaQO{cG~-0mCfW1E;t63_dxVJ!c7$1lG6`=7u1$H6Ck8sPNPLS+rF{s=-k zw1lw>H(luo4==~0eHjc~Ogj+12%h?JXzl)q-8->|B7z;u24`lBzm6&OO`t24^((_g zTBVpFOv)e=A!=8!PdznLVPE%I?H;f__64h%o)g{!r*do5 zE05&B#gKeck;7lV`f;Jhqfx0UDVFVc%Ma5+5WMmLh*%R-duMkb2%25ne>b@bQ{J%a&` zC;}qZW!&X#-hI-s>$uu%?Kdu%n#aG6mq1-Y<LP zFQafgas$_9kJ;tzwM>*GMLLv8V%kYEEX6pdawkbX8>jii;$hnr?WXa!A6HTvFDshm zZKg0C*p}?*w;XCgmK|ponP@kx`G)h!mEEWg_Ic&k(H{C@P93VX8e#UX zgBD>GkelnC@VM|#lN6Lf6b#GOW&SaP0Y)O3^W@n9fT(nQ3o=v&`}I1ZUM!iKYG z@&>j>p=9k=cD)Y1PhLCE!Rpz*H+wDhZF1#1BxoeH3}N_oS>~2*^%^NxNYETk&2@_P zcVVCojtHm7`94#m`M;p%$hJP94v>#u4E2UR4NgIAH{b%&R`x?;VI020nA$y%%c;`KM>)5 z>kQ^m{XFLF)0lq?UKu~t{VY?jpsc<}3U(Ux_9@icna&EN@1ig5POBf#e||`!M}m?- zlRbZg(#4>w*QwDPB;F)JIZEAth}#paDK$>>AEmx2)J?Lz4W0f8#1!f_`yaq|&w)K* z;RNjCWPT287o#;kzeOctwc+|*Dov+5<@(1ktda3;5>z|KG^Ld_yhn5}PZKrLuxmOG zDkan5Zxqf)wRz}0A88j2`BQWwsJ|wZI8&tg#$nZauug}%FH?b`)ceq0=+TETJS5`> zB&cRMoo7wxkTb^*mFcdqj#txO*SN#st`Z0bHxuU(t8qWsa~^qCB7;}JyNZPSCpv?? z%{ZdN|LvPM-|L0y7XELKe|t2Vg=~60H91b5(KTDBOa~lc0YA43cwB=9KH`uL?8QQx zmc2gQD{#S~vvfL+%|dqD>>^rsamL%pOxNDhIj3c+`VW)AxaiZJG$*g={yVeHqmE~5PLVFRkd+u!hSg%Ww~sE zkS1?lzGG9r6z5a7b?3qclMr~$)rNK2KRaC$DY=trpm-4(Ci<|s=lqN|UeoeKaDI`! V;HtPnK2Y=pL zoo^b(AJjQmZ0syx&3;8A48dZf$9&c^eY0ozR*(Cv@*c4(@ViLX6T~izrtw-EHF07kId+IU6?YC{^$fT1BsT?88 zZy1LwGFHx@{MN27E`5FtAce>H2V<#iD*Nj}KbFe-vY$t362^lDI=-F%K8FToi8>**`El5EiLr;tlAqt~1HK1@U$C95-Y z4>so7<}MC1z(v#M;NV9&-4uFZ4kmT1SSCA`;+c%QKpX<<&Db&E1b&__U%j||E0d5d z-;;5kE-$8?K~E-mw!A8{JWK-!2k}VzMzpe=MY(*tA9n79IBK~c_0I=C$V8-YJ`zcI zp02nv-(S}oAf4}$@z^-yCTEl8{f1_9z7)lCX@d#;*N_O9#LkYXMotPX1c9iADKgV! z=v<{aNiFhf=L^^vu3XA+sm(OW?V9p}APIXi2vj`?dZ`%1)NTa9-9Z@dc`Uqq@NgDo zudL@XQ&yCeB$r#L7S=7jx;{AmC8LY+j2ZK64G8OC9VrAZVAWdL7cWEEmh$B&Ut134 z>1p|Ll&_0g@l@-2(g8^q7sl6gs6lnt%I-!OKroKecSw`NLTgf@(Hi{)8~>%zE!5{W z+rYhS*ae4k1sC=yBbyTr^@V-ONNR&P4`|i8K*>VeKn-%s+W22^hcIhjyM^UmUIzu}6y)j1(0Wmm!61o9qk%~CEC8wOtRF|Ya>9NeWemiT7L?*^X_V~L;W#1t z!2_>iS2;R$WvY=w7*RaZbd(FSL5vw9i|*sZdW>H$!GHu*se}Zg#)FkXw<{qigW)B_ zvUku7qos}!!S)2!6)00)#2yYPD zCi5m45^|XZ&Qa?vGSwkQxh}*1G7kB_T$_iu-aFAg*Td9uB-ijhZHsb9N%cpgyR4}G z5FMAu`2iW~9io|Zy?}L>bXjE#%m=1w+{{6Sy>9>$H7xB|&)$1QOts|4IL&u7UwONn z0U^&_7A~N-TIwqq3S0_4LG%Fc)%2gDV}+a-$xyGnb!?0jdd06|&1TT##u^hWH#dzn zOIu7Fxs$uOC(NHH^;t`b)0@+F6{j?mF`#cq^HrYg2!7Srs>Fp>F-OCCmkvme7dK7j;LqIq zIe)<-!tE1^cTzZToH8kCk<(KGSI{UEbC;8^_c8gDq9XE?+ev%}(Y zaX3ln{U14CPub6&jV?!T@~CT8-e=|Od70#y5f5iDmw9ZG)yJ6!i1j-mk+#1X8GI0PPhb8iME$MF1gfhw_{diT%i;AQcTgiuML{h=Pi1 zaDcr*gt!0|&sixh=8b3OdE_7YD|MxH#OSZ@trU(aM{0 zUX?58B!y;DVQ5-qN+M?YIo!31ymzp^8_Xs&{%#w9fgF!V=V#3!j6gN_kPSn!toum@ zRyrO#a0?x1Vr_U`QKfs_CGD1jwE2doi|tKty|PXR0shX8`TX-yIb(LQgCp-4Odg@ z*tl$*n3RjEbfU=CpBINt>N2lTZ@@@z+7Q$6)hKod1ks`H~iclq@wlBQ&u@~`F@!-;@R;awS>P-S#_l%uVBwp&({(I(} zojG&9nH_(#^NXE{$>9<=qOR~Sj31s6_T0WO2kirNK-0OXsnsh(R+R@mws*IJ1P z36OW84dZ{nx`3y%c8MVowz%w}EB%X(?Te0Y9smXsP&U&dml7!_C2!FJ^vbx_E0fyBwvmCp(UGEM7e`N887DtF zm>-+WS~;gUx^Lf>tpoD5)?XjMA%4|SOu~RsX|P_{AYWk{

XzMtPNOhJJaE^<(=v z-heMg_07vxdHhBfkgBMs~2kU0%~ z@=Nm?Y+guv<^Y&{>>UDF81!W+Y?HU@dciM$symJ&B?D*RZFx8FDcWz>kHMV$x&AY_ zDnAOY3HM;#4snSKtz;HT)TIKBQTwd?B{)Ta$n26fh|71DY}pOO)%MqJDt!3PWfufJ z#_Wp@)J70mn5a=^!J!zxDA;}?c)xOsxiqQTxoooydm(r{rX`9Zt)3 z-oQ^_pBEQCiT%tz<@SZacJTmrAk@+kRvlMD7&gn22E_ z#ng|az37cqRR?xntws%ppWActep`3nkJw$UyaThe7@jg5aPd5tr6qEZA&zou_AjfxLZ%?&1w~r{l@G8IX&3jxuh{=fK z#jVeA`UOXmzs0Wme0CnIDr-f@mN(iXyXRDk7YmuRQw|=U%%#Wj!a6MSPVum9*=JN# zPZbJQPL$cvd^%^ZMOVUOci_X8N-ionuVh+=I#&B~ihLioy@nj_IC$HZimn7Rg!uRiO%a)!n&&?Rs9*Ny4ZnOi(4^NL&{veiqt@) z#v;-Ymp?%|^aLrhUsHa;t4P_rM;`C&T75|s+N!-YQx9s&c=p#G_Tkj_~4dn#~N-ivqOSyzeg^{LgePbis_$>)1q^}0#a_Z0*`Zh3Xccp<0-b#;aG zW;4V>EW(!QVLh}hq=(FA9_@~Hg;qoxqDyI<;wOP;#v}YRDwNW{sYd_8ujw)6^bt<{ OAx%`{kDrYP9{mHz!l_*V delta 1892 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 diff --git a/gestao_raul/Lib/site-packages/pip/_vendor/idna/__pycache__/package_data.cpython-310.pyc b/gestao_raul/Lib/site-packages/pip/_vendor/idna/__pycache__/package_data.cpython-310.pyc index 17def5c31daf71d5f620245c280451b918b7d423..c43bc0746d4543f1be0947feb2c1aeb1493e1d5c 100644 GIT binary patch delta 42 wcmcc2c#e@fpO=@50SFfPt)9rO$I4=?XJ|0dR+ce#VzeY{P>_?W^ThfP0M-l&mjD0& delta 47 zcmX@dc$twqpO=@50SKypgihqvV_`PdGnr^7%a}YdMv^-{wYVfPKfWljG-qN}2mm5Y B4aNWf diff --git a/gestao_raul/Lib/site-packages/pip/_vendor/idna/__pycache__/uts46data.cpython-310.pyc b/gestao_raul/Lib/site-packages/pip/_vendor/idna/__pycache__/uts46data.cpython-310.pyc index 5222c2b1ded42d9e592ec0926d960523134dc7b9..75c9a0beb933412f768873606242a585901e9d0c 100644 GIT binary patch delta 13502 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 delta 13510 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 diff --git a/gestao_raul/Lib/site-packages/pip/_vendor/idna/codec.py b/gestao_raul/Lib/site-packages/pip/_vendor/idna/codec.py index 1ca9ba6..913abfd 100644 --- a/gestao_raul/Lib/site-packages/pip/_vendor/idna/codec.py +++ b/gestao_raul/Lib/site-packages/pip/_vendor/idna/codec.py @@ -1,49 +1,51 @@ -from .core import encode, decode, alabel, ulabel, IDNAError import codecs import re -from typing import Tuple, Optional +from typing import Any, Optional, Tuple + +from .core import IDNAError, alabel, decode, encode, ulabel + +_unicode_dots_re = re.compile("[\u002e\u3002\uff0e\uff61]") -_unicode_dots_re = re.compile('[\u002e\u3002\uff0e\uff61]') class Codec(codecs.Codec): - - def encode(self, data: str, errors: str = 'strict') -> Tuple[bytes, int]: - if errors != 'strict': - raise IDNAError('Unsupported error handling \"{}\"'.format(errors)) + def encode(self, data: str, errors: str = "strict") -> Tuple[bytes, int]: + if errors != "strict": + raise IDNAError('Unsupported error handling "{}"'.format(errors)) if not data: return b"", 0 return encode(data), len(data) - def decode(self, data: bytes, errors: str = 'strict') -> Tuple[str, int]: - if errors != 'strict': - raise IDNAError('Unsupported error handling \"{}\"'.format(errors)) - - if not data: - return '', 0 - - return decode(data), len(data) - -class IncrementalEncoder(codecs.BufferedIncrementalEncoder): - def _buffer_encode(self, data: str, errors: str, final: bool) -> Tuple[str, int]: # type: ignore - if errors != 'strict': - raise IDNAError('Unsupported error handling \"{}\"'.format(errors)) + def decode(self, data: bytes, errors: str = "strict") -> Tuple[str, int]: + if errors != "strict": + raise IDNAError('Unsupported error handling "{}"'.format(errors)) if not data: return "", 0 + return decode(data), len(data) + + +class IncrementalEncoder(codecs.BufferedIncrementalEncoder): + def _buffer_encode(self, data: str, errors: str, final: bool) -> Tuple[bytes, int]: + if errors != "strict": + raise IDNAError('Unsupported error handling "{}"'.format(errors)) + + if not data: + return b"", 0 + labels = _unicode_dots_re.split(data) - trailing_dot = '' + trailing_dot = b"" if labels: if not labels[-1]: - trailing_dot = '.' + trailing_dot = b"." del labels[-1] elif not final: # Keep potentially unfinished label until the next call del labels[-1] if labels: - trailing_dot = '.' + trailing_dot = b"." result = [] size = 0 @@ -54,29 +56,33 @@ class IncrementalEncoder(codecs.BufferedIncrementalEncoder): size += len(label) # Join with U+002E - result_str = '.'.join(result) + trailing_dot # type: ignore + result_bytes = b".".join(result) + trailing_dot size += len(trailing_dot) - return result_str, size + return result_bytes, size + class IncrementalDecoder(codecs.BufferedIncrementalDecoder): - def _buffer_decode(self, data: str, errors: str, final: bool) -> Tuple[str, int]: # type: ignore - if errors != 'strict': - raise IDNAError('Unsupported error handling \"{}\"'.format(errors)) + def _buffer_decode(self, data: Any, errors: str, final: bool) -> Tuple[str, int]: + if errors != "strict": + raise IDNAError('Unsupported error handling "{}"'.format(errors)) if not data: - return ('', 0) + return ("", 0) + + if not isinstance(data, str): + data = str(data, "ascii") labels = _unicode_dots_re.split(data) - trailing_dot = '' + trailing_dot = "" if labels: if not labels[-1]: - trailing_dot = '.' + trailing_dot = "." del labels[-1] elif not final: # Keep potentially unfinished label until the next call del labels[-1] if labels: - trailing_dot = '.' + trailing_dot = "." result = [] size = 0 @@ -86,7 +92,7 @@ class IncrementalDecoder(codecs.BufferedIncrementalDecoder): size += 1 size += len(label) - result_str = '.'.join(result) + trailing_dot + result_str = ".".join(result) + trailing_dot size += len(trailing_dot) return (result_str, size) @@ -99,14 +105,18 @@ class StreamReader(Codec, codecs.StreamReader): pass -def getregentry() -> codecs.CodecInfo: - # Compatibility as a search_function for codecs.register() +def search_function(name: str) -> Optional[codecs.CodecInfo]: + if name != "idna2008": + return None return codecs.CodecInfo( - name='idna', - encode=Codec().encode, # type: ignore - decode=Codec().decode, # type: ignore + name=name, + encode=Codec().encode, + decode=Codec().decode, incrementalencoder=IncrementalEncoder, incrementaldecoder=IncrementalDecoder, streamwriter=StreamWriter, streamreader=StreamReader, ) + + +codecs.register(search_function) diff --git a/gestao_raul/Lib/site-packages/pip/_vendor/idna/compat.py b/gestao_raul/Lib/site-packages/pip/_vendor/idna/compat.py index 786e6bd..1df9f2a 100644 --- a/gestao_raul/Lib/site-packages/pip/_vendor/idna/compat.py +++ b/gestao_raul/Lib/site-packages/pip/_vendor/idna/compat.py @@ -1,13 +1,15 @@ -from .core import * -from .codec import * from typing import Any, Union +from .core import decode, encode + + def ToASCII(label: str) -> bytes: return encode(label) + def ToUnicode(label: Union[bytes, bytearray]) -> str: return decode(label) -def nameprep(s: Any) -> None: - raise NotImplementedError('IDNA 2008 does not utilise nameprep protocol') +def nameprep(s: Any) -> None: + raise NotImplementedError("IDNA 2008 does not utilise nameprep protocol") diff --git a/gestao_raul/Lib/site-packages/pip/_vendor/idna/core.py b/gestao_raul/Lib/site-packages/pip/_vendor/idna/core.py index 4f30037..9115f12 100644 --- a/gestao_raul/Lib/site-packages/pip/_vendor/idna/core.py +++ b/gestao_raul/Lib/site-packages/pip/_vendor/idna/core.py @@ -1,31 +1,37 @@ -from . import idnadata import bisect -import unicodedata import re -from typing import Union, Optional +import unicodedata +from typing import Optional, Union + +from . import idnadata from .intranges import intranges_contain _virama_combining_class = 9 -_alabel_prefix = b'xn--' -_unicode_dots_re = re.compile('[\u002e\u3002\uff0e\uff61]') +_alabel_prefix = b"xn--" +_unicode_dots_re = re.compile("[\u002e\u3002\uff0e\uff61]") + class IDNAError(UnicodeError): - """ Base exception for all IDNA-encoding related problems """ + """Base exception for all IDNA-encoding related problems""" + pass class IDNABidiError(IDNAError): - """ Exception when bidirectional requirements are not satisfied """ + """Exception when bidirectional requirements are not satisfied""" + pass class InvalidCodepoint(IDNAError): - """ Exception when a disallowed or unallocated codepoint is used """ + """Exception when a disallowed or unallocated codepoint is used""" + pass class InvalidCodepointContext(IDNAError): - """ Exception when the codepoint is not valid in the context it is used """ + """Exception when the codepoint is not valid in the context it is used""" + pass @@ -33,17 +39,20 @@ def _combining_class(cp: int) -> int: v = unicodedata.combining(chr(cp)) if v == 0: if not unicodedata.name(chr(cp)): - raise ValueError('Unknown character in unicodedata') + raise ValueError("Unknown character in unicodedata") return v + def _is_script(cp: str, script: str) -> bool: return intranges_contain(ord(cp), idnadata.scripts[script]) + def _punycode(s: str) -> bytes: - return s.encode('punycode') + return s.encode("punycode") + def _unot(s: int) -> str: - return 'U+{:04X}'.format(s) + return "U+{:04X}".format(s) def valid_label_length(label: Union[bytes, str]) -> bool: @@ -61,158 +70,170 @@ def valid_string_length(label: Union[bytes, str], trailing_dot: bool) -> bool: def check_bidi(label: str, check_ltr: bool = False) -> bool: # Bidi rules should only be applied if string contains RTL characters bidi_label = False - for (idx, cp) in enumerate(label, 1): + for idx, cp in enumerate(label, 1): direction = unicodedata.bidirectional(cp) - if direction == '': + if direction == "": # String likely comes from a newer version of Unicode - raise IDNABidiError('Unknown directionality in label {} at position {}'.format(repr(label), idx)) - if direction in ['R', 'AL', 'AN']: + raise IDNABidiError("Unknown directionality in label {} at position {}".format(repr(label), idx)) + if direction in ["R", "AL", "AN"]: bidi_label = True if not bidi_label and not check_ltr: return True # Bidi rule 1 direction = unicodedata.bidirectional(label[0]) - if direction in ['R', 'AL']: + if direction in ["R", "AL"]: rtl = True - elif direction == 'L': + elif direction == "L": rtl = False else: - raise IDNABidiError('First codepoint in label {} must be directionality L, R or AL'.format(repr(label))) + raise IDNABidiError("First codepoint in label {} must be directionality L, R or AL".format(repr(label))) valid_ending = False - number_type = None # type: Optional[str] - for (idx, cp) in enumerate(label, 1): + number_type: Optional[str] = None + for idx, cp in enumerate(label, 1): direction = unicodedata.bidirectional(cp) if rtl: # Bidi rule 2 - if not direction in ['R', 'AL', 'AN', 'EN', 'ES', 'CS', 'ET', 'ON', 'BN', 'NSM']: - raise IDNABidiError('Invalid direction for codepoint at position {} in a right-to-left label'.format(idx)) + if direction not in [ + "R", + "AL", + "AN", + "EN", + "ES", + "CS", + "ET", + "ON", + "BN", + "NSM", + ]: + raise IDNABidiError("Invalid direction for codepoint at position {} in a right-to-left label".format(idx)) # Bidi rule 3 - if direction in ['R', 'AL', 'EN', 'AN']: + if direction in ["R", "AL", "EN", "AN"]: valid_ending = True - elif direction != 'NSM': + elif direction != "NSM": valid_ending = False # Bidi rule 4 - if direction in ['AN', 'EN']: + if direction in ["AN", "EN"]: if not number_type: number_type = direction else: if number_type != direction: - raise IDNABidiError('Can not mix numeral types in a right-to-left label') + raise IDNABidiError("Can not mix numeral types in a right-to-left label") else: # Bidi rule 5 - if not direction in ['L', 'EN', 'ES', 'CS', 'ET', 'ON', 'BN', 'NSM']: - raise IDNABidiError('Invalid direction for codepoint at position {} in a left-to-right label'.format(idx)) + if direction not in ["L", "EN", "ES", "CS", "ET", "ON", "BN", "NSM"]: + raise IDNABidiError("Invalid direction for codepoint at position {} in a left-to-right label".format(idx)) # Bidi rule 6 - if direction in ['L', 'EN']: + if direction in ["L", "EN"]: valid_ending = True - elif direction != 'NSM': + elif direction != "NSM": valid_ending = False if not valid_ending: - raise IDNABidiError('Label ends with illegal codepoint directionality') + raise IDNABidiError("Label ends with illegal codepoint directionality") return True def check_initial_combiner(label: str) -> bool: - if unicodedata.category(label[0])[0] == 'M': - raise IDNAError('Label begins with an illegal combining character') + if unicodedata.category(label[0])[0] == "M": + raise IDNAError("Label begins with an illegal combining character") return True def check_hyphen_ok(label: str) -> bool: - if label[2:4] == '--': - raise IDNAError('Label has disallowed hyphens in 3rd and 4th position') - if label[0] == '-' or label[-1] == '-': - raise IDNAError('Label must not start or end with a hyphen') + if label[2:4] == "--": + raise IDNAError("Label has disallowed hyphens in 3rd and 4th position") + if label[0] == "-" or label[-1] == "-": + raise IDNAError("Label must not start or end with a hyphen") return True def check_nfc(label: str) -> None: - if unicodedata.normalize('NFC', label) != label: - raise IDNAError('Label must be in Normalization Form C') + if unicodedata.normalize("NFC", label) != label: + raise IDNAError("Label must be in Normalization Form C") def valid_contextj(label: str, pos: int) -> bool: cp_value = ord(label[pos]) - if cp_value == 0x200c: - + if cp_value == 0x200C: if pos > 0: if _combining_class(ord(label[pos - 1])) == _virama_combining_class: return True ok = False - for i in range(pos-1, -1, -1): + for i in range(pos - 1, -1, -1): joining_type = idnadata.joining_types.get(ord(label[i])) - if joining_type == ord('T'): + if joining_type == ord("T"): continue - if joining_type in [ord('L'), ord('D')]: + elif joining_type in [ord("L"), ord("D")]: ok = True break + else: + break if not ok: return False ok = False - for i in range(pos+1, len(label)): + for i in range(pos + 1, len(label)): joining_type = idnadata.joining_types.get(ord(label[i])) - if joining_type == ord('T'): + if joining_type == ord("T"): continue - if joining_type in [ord('R'), ord('D')]: + elif joining_type in [ord("R"), ord("D")]: ok = True break + else: + break return ok - if cp_value == 0x200d: - + if cp_value == 0x200D: if pos > 0: if _combining_class(ord(label[pos - 1])) == _virama_combining_class: return True return False else: - return False def valid_contexto(label: str, pos: int, exception: bool = False) -> bool: cp_value = ord(label[pos]) - if cp_value == 0x00b7: - if 0 < pos < len(label)-1: - if ord(label[pos - 1]) == 0x006c and ord(label[pos + 1]) == 0x006c: + if cp_value == 0x00B7: + if 0 < pos < len(label) - 1: + if ord(label[pos - 1]) == 0x006C and ord(label[pos + 1]) == 0x006C: return True return False elif cp_value == 0x0375: - if pos < len(label)-1 and len(label) > 1: - return _is_script(label[pos + 1], 'Greek') + if pos < len(label) - 1 and len(label) > 1: + return _is_script(label[pos + 1], "Greek") return False - elif cp_value == 0x05f3 or cp_value == 0x05f4: + elif cp_value == 0x05F3 or cp_value == 0x05F4: if pos > 0: - return _is_script(label[pos - 1], 'Hebrew') + return _is_script(label[pos - 1], "Hebrew") return False - elif cp_value == 0x30fb: + elif cp_value == 0x30FB: for cp in label: - if cp == '\u30fb': + if cp == "\u30fb": continue - if _is_script(cp, 'Hiragana') or _is_script(cp, 'Katakana') or _is_script(cp, 'Han'): + if _is_script(cp, "Hiragana") or _is_script(cp, "Katakana") or _is_script(cp, "Han"): return True return False elif 0x660 <= cp_value <= 0x669: for cp in label: - if 0x6f0 <= ord(cp) <= 0x06f9: + if 0x6F0 <= ord(cp) <= 0x06F9: return False return True - elif 0x6f0 <= cp_value <= 0x6f9: + elif 0x6F0 <= cp_value <= 0x6F9: for cp in label: if 0x660 <= ord(cp) <= 0x0669: return False @@ -223,55 +244,58 @@ def valid_contexto(label: str, pos: int, exception: bool = False) -> bool: def check_label(label: Union[str, bytes, bytearray]) -> None: if isinstance(label, (bytes, bytearray)): - label = label.decode('utf-8') + label = label.decode("utf-8") if len(label) == 0: - raise IDNAError('Empty Label') + raise IDNAError("Empty Label") check_nfc(label) check_hyphen_ok(label) check_initial_combiner(label) - for (pos, cp) in enumerate(label): + for pos, cp in enumerate(label): cp_value = ord(cp) - if intranges_contain(cp_value, idnadata.codepoint_classes['PVALID']): + if intranges_contain(cp_value, idnadata.codepoint_classes["PVALID"]): continue - elif intranges_contain(cp_value, idnadata.codepoint_classes['CONTEXTJ']): + elif intranges_contain(cp_value, idnadata.codepoint_classes["CONTEXTJ"]): try: if not valid_contextj(label, pos): - raise InvalidCodepointContext('Joiner {} not allowed at position {} in {}'.format( - _unot(cp_value), pos+1, repr(label))) + raise InvalidCodepointContext( + "Joiner {} not allowed at position {} in {}".format(_unot(cp_value), pos + 1, repr(label)) + ) except ValueError: - raise IDNAError('Unknown codepoint adjacent to joiner {} at position {} in {}'.format( - _unot(cp_value), pos+1, repr(label))) - elif intranges_contain(cp_value, idnadata.codepoint_classes['CONTEXTO']): + raise IDNAError( + "Unknown codepoint adjacent to joiner {} at position {} in {}".format( + _unot(cp_value), pos + 1, repr(label) + ) + ) + elif intranges_contain(cp_value, idnadata.codepoint_classes["CONTEXTO"]): if not valid_contexto(label, pos): - raise InvalidCodepointContext('Codepoint {} not allowed at position {} in {}'.format(_unot(cp_value), pos+1, repr(label))) + raise InvalidCodepointContext( + "Codepoint {} not allowed at position {} in {}".format(_unot(cp_value), pos + 1, repr(label)) + ) else: - raise InvalidCodepoint('Codepoint {} at position {} of {} not allowed'.format(_unot(cp_value), pos+1, repr(label))) + raise InvalidCodepoint( + "Codepoint {} at position {} of {} not allowed".format(_unot(cp_value), pos + 1, repr(label)) + ) check_bidi(label) def alabel(label: str) -> bytes: try: - label_bytes = label.encode('ascii') + label_bytes = label.encode("ascii") ulabel(label_bytes) if not valid_label_length(label_bytes): - raise IDNAError('Label too long') + raise IDNAError("Label too long") return label_bytes except UnicodeEncodeError: pass - if not label: - raise IDNAError('No Input') - - label = str(label) check_label(label) - label_bytes = _punycode(label) - label_bytes = _alabel_prefix + label_bytes + label_bytes = _alabel_prefix + _punycode(label) if not valid_label_length(label_bytes): - raise IDNAError('Label too long') + raise IDNAError("Label too long") return label_bytes @@ -279,7 +303,7 @@ def alabel(label: str) -> bytes: def ulabel(label: Union[str, bytes, bytearray]) -> str: if not isinstance(label, (bytes, bytearray)): try: - label_bytes = label.encode('ascii') + label_bytes = label.encode("ascii") except UnicodeEncodeError: check_label(label) return label @@ -288,19 +312,19 @@ def ulabel(label: Union[str, bytes, bytearray]) -> str: label_bytes = label_bytes.lower() if label_bytes.startswith(_alabel_prefix): - label_bytes = label_bytes[len(_alabel_prefix):] + label_bytes = label_bytes[len(_alabel_prefix) :] if not label_bytes: - raise IDNAError('Malformed A-label, no Punycode eligible content found') - if label_bytes.decode('ascii')[-1] == '-': - raise IDNAError('A-label must not end with a hyphen') + raise IDNAError("Malformed A-label, no Punycode eligible content found") + if label_bytes.decode("ascii")[-1] == "-": + raise IDNAError("A-label must not end with a hyphen") else: check_label(label_bytes) - return label_bytes.decode('ascii') + return label_bytes.decode("ascii") try: - label = label_bytes.decode('punycode') + label = label_bytes.decode("punycode") except UnicodeError: - raise IDNAError('Invalid A-label') + raise IDNAError("Invalid A-label") check_label(label) return label @@ -308,52 +332,60 @@ def ulabel(label: Union[str, bytes, bytearray]) -> str: def uts46_remap(domain: str, std3_rules: bool = True, transitional: bool = False) -> str: """Re-map the characters in the string according to UTS46 processing.""" from .uts46data import uts46data - output = '' + + output = "" for pos, char in enumerate(domain): code_point = ord(char) try: - uts46row = uts46data[code_point if code_point < 256 else - bisect.bisect_left(uts46data, (code_point, 'Z')) - 1] + uts46row = uts46data[code_point if code_point < 256 else bisect.bisect_left(uts46data, (code_point, "Z")) - 1] status = uts46row[1] - replacement = None # type: Optional[str] + replacement: Optional[str] = None if len(uts46row) == 3: - replacement = uts46row[2] # type: ignore - if (status == 'V' or - (status == 'D' and not transitional) or - (status == '3' and not std3_rules and replacement is None)): + replacement = uts46row[2] + if ( + status == "V" + or (status == "D" and not transitional) + or (status == "3" and not std3_rules and replacement is None) + ): output += char - elif replacement is not None and (status == 'M' or - (status == '3' and not std3_rules) or - (status == 'D' and transitional)): + elif replacement is not None and ( + status == "M" or (status == "3" and not std3_rules) or (status == "D" and transitional) + ): output += replacement - elif status != 'I': + elif status != "I": raise IndexError() except IndexError: raise InvalidCodepoint( - 'Codepoint {} not allowed at position {} in {}'.format( - _unot(code_point), pos + 1, repr(domain))) + "Codepoint {} not allowed at position {} in {}".format(_unot(code_point), pos + 1, repr(domain)) + ) - return unicodedata.normalize('NFC', output) + return unicodedata.normalize("NFC", output) -def encode(s: Union[str, bytes, bytearray], strict: bool = False, uts46: bool = False, std3_rules: bool = False, transitional: bool = False) -> bytes: - if isinstance(s, (bytes, bytearray)): +def encode( + s: Union[str, bytes, bytearray], + strict: bool = False, + uts46: bool = False, + std3_rules: bool = False, + transitional: bool = False, +) -> bytes: + if not isinstance(s, str): try: - s = s.decode('ascii') + s = str(s, "ascii") except UnicodeDecodeError: - raise IDNAError('should pass a unicode string to the function rather than a byte string.') + raise IDNAError("should pass a unicode string to the function rather than a byte string.") if uts46: s = uts46_remap(s, std3_rules, transitional) trailing_dot = False result = [] if strict: - labels = s.split('.') + labels = s.split(".") else: labels = _unicode_dots_re.split(s) - if not labels or labels == ['']: - raise IDNAError('Empty domain') - if labels[-1] == '': + if not labels or labels == [""]: + raise IDNAError("Empty domain") + if labels[-1] == "": del labels[-1] trailing_dot = True for label in labels: @@ -361,21 +393,26 @@ def encode(s: Union[str, bytes, bytearray], strict: bool = False, uts46: bool = if s: result.append(s) else: - raise IDNAError('Empty label') + raise IDNAError("Empty label") if trailing_dot: - result.append(b'') - s = b'.'.join(result) + result.append(b"") + s = b".".join(result) if not valid_string_length(s, trailing_dot): - raise IDNAError('Domain too long') + raise IDNAError("Domain too long") return s -def decode(s: Union[str, bytes, bytearray], strict: bool = False, uts46: bool = False, std3_rules: bool = False) -> str: +def decode( + s: Union[str, bytes, bytearray], + strict: bool = False, + uts46: bool = False, + std3_rules: bool = False, +) -> str: try: - if isinstance(s, (bytes, bytearray)): - s = s.decode('ascii') + if not isinstance(s, str): + s = str(s, "ascii") except UnicodeDecodeError: - raise IDNAError('Invalid ASCII in A-label') + raise IDNAError("Invalid ASCII in A-label") if uts46: s = uts46_remap(s, std3_rules, False) trailing_dot = False @@ -383,9 +420,9 @@ def decode(s: Union[str, bytes, bytearray], strict: bool = False, uts46: bool = if not strict: labels = _unicode_dots_re.split(s) else: - labels = s.split('.') - if not labels or labels == ['']: - raise IDNAError('Empty domain') + labels = s.split(".") + if not labels or labels == [""]: + raise IDNAError("Empty domain") if not labels[-1]: del labels[-1] trailing_dot = True @@ -394,7 +431,7 @@ def decode(s: Union[str, bytes, bytearray], strict: bool = False, uts46: bool = if s: result.append(s) else: - raise IDNAError('Empty label') + raise IDNAError("Empty label") if trailing_dot: - result.append('') - return '.'.join(result) + result.append("") + return ".".join(result) diff --git a/gestao_raul/Lib/site-packages/pip/_vendor/idna/idnadata.py b/gestao_raul/Lib/site-packages/pip/_vendor/idna/idnadata.py index 67db462..4be6004 100644 --- a/gestao_raul/Lib/site-packages/pip/_vendor/idna/idnadata.py +++ b/gestao_raul/Lib/site-packages/pip/_vendor/idna/idnadata.py @@ -1,115 +1,290 @@ # This file is automatically generated by tools/idna-data -__version__ = '15.0.0' +__version__ = "15.1.0" scripts = { - 'Greek': ( + "Greek": ( 0x37000000374, 0x37500000378, - 0x37a0000037e, - 0x37f00000380, + 0x37A0000037E, + 0x37F00000380, 0x38400000385, 0x38600000387, - 0x3880000038b, - 0x38c0000038d, - 0x38e000003a2, - 0x3a3000003e2, - 0x3f000000400, - 0x1d2600001d2b, - 0x1d5d00001d62, - 0x1d6600001d6b, - 0x1dbf00001dc0, - 0x1f0000001f16, - 0x1f1800001f1e, - 0x1f2000001f46, - 0x1f4800001f4e, - 0x1f5000001f58, - 0x1f5900001f5a, - 0x1f5b00001f5c, - 0x1f5d00001f5e, - 0x1f5f00001f7e, - 0x1f8000001fb5, - 0x1fb600001fc5, - 0x1fc600001fd4, - 0x1fd600001fdc, - 0x1fdd00001ff0, - 0x1ff200001ff5, - 0x1ff600001fff, + 0x3880000038B, + 0x38C0000038D, + 0x38E000003A2, + 0x3A3000003E2, + 0x3F000000400, + 0x1D2600001D2B, + 0x1D5D00001D62, + 0x1D6600001D6B, + 0x1DBF00001DC0, + 0x1F0000001F16, + 0x1F1800001F1E, + 0x1F2000001F46, + 0x1F4800001F4E, + 0x1F5000001F58, + 0x1F5900001F5A, + 0x1F5B00001F5C, + 0x1F5D00001F5E, + 0x1F5F00001F7E, + 0x1F8000001FB5, + 0x1FB600001FC5, + 0x1FC600001FD4, + 0x1FD600001FDC, + 0x1FDD00001FF0, + 0x1FF200001FF5, + 0x1FF600001FFF, 0x212600002127, - 0xab650000ab66, - 0x101400001018f, - 0x101a0000101a1, - 0x1d2000001d246, + 0xAB650000AB66, + 0x101400001018F, + 0x101A0000101A1, + 0x1D2000001D246, ), - 'Han': ( - 0x2e8000002e9a, - 0x2e9b00002ef4, - 0x2f0000002fd6, + "Han": ( + 0x2E8000002E9A, + 0x2E9B00002EF4, + 0x2F0000002FD6, 0x300500003006, 0x300700003008, - 0x30210000302a, - 0x30380000303c, - 0x340000004dc0, - 0x4e000000a000, - 0xf9000000fa6e, - 0xfa700000fada, - 0x16fe200016fe4, - 0x16ff000016ff2, - 0x200000002a6e0, - 0x2a7000002b73a, - 0x2b7400002b81e, - 0x2b8200002cea2, - 0x2ceb00002ebe1, - 0x2f8000002fa1e, - 0x300000003134b, - 0x31350000323b0, + 0x30210000302A, + 0x30380000303C, + 0x340000004DC0, + 0x4E000000A000, + 0xF9000000FA6E, + 0xFA700000FADA, + 0x16FE200016FE4, + 0x16FF000016FF2, + 0x200000002A6E0, + 0x2A7000002B73A, + 0x2B7400002B81E, + 0x2B8200002CEA2, + 0x2CEB00002EBE1, + 0x2EBF00002EE5E, + 0x2F8000002FA1E, + 0x300000003134B, + 0x31350000323B0, ), - 'Hebrew': ( - 0x591000005c8, - 0x5d0000005eb, - 0x5ef000005f5, - 0xfb1d0000fb37, - 0xfb380000fb3d, - 0xfb3e0000fb3f, - 0xfb400000fb42, - 0xfb430000fb45, - 0xfb460000fb50, + "Hebrew": ( + 0x591000005C8, + 0x5D0000005EB, + 0x5EF000005F5, + 0xFB1D0000FB37, + 0xFB380000FB3D, + 0xFB3E0000FB3F, + 0xFB400000FB42, + 0xFB430000FB45, + 0xFB460000FB50, ), - 'Hiragana': ( + "Hiragana": ( 0x304100003097, - 0x309d000030a0, - 0x1b0010001b120, - 0x1b1320001b133, - 0x1b1500001b153, - 0x1f2000001f201, + 0x309D000030A0, + 0x1B0010001B120, + 0x1B1320001B133, + 0x1B1500001B153, + 0x1F2000001F201, ), - 'Katakana': ( - 0x30a1000030fb, - 0x30fd00003100, - 0x31f000003200, - 0x32d0000032ff, + "Katakana": ( + 0x30A1000030FB, + 0x30FD00003100, + 0x31F000003200, + 0x32D0000032FF, 0x330000003358, - 0xff660000ff70, - 0xff710000ff9e, - 0x1aff00001aff4, - 0x1aff50001affc, - 0x1affd0001afff, - 0x1b0000001b001, - 0x1b1200001b123, - 0x1b1550001b156, - 0x1b1640001b168, + 0xFF660000FF70, + 0xFF710000FF9E, + 0x1AFF00001AFF4, + 0x1AFF50001AFFC, + 0x1AFFD0001AFFF, + 0x1B0000001B001, + 0x1B1200001B123, + 0x1B1550001B156, + 0x1B1640001B168, ), } joining_types = { - 0x600: 85, - 0x601: 85, - 0x602: 85, - 0x603: 85, - 0x604: 85, - 0x605: 85, - 0x608: 85, - 0x60b: 85, + 0xAD: 84, + 0x300: 84, + 0x301: 84, + 0x302: 84, + 0x303: 84, + 0x304: 84, + 0x305: 84, + 0x306: 84, + 0x307: 84, + 0x308: 84, + 0x309: 84, + 0x30A: 84, + 0x30B: 84, + 0x30C: 84, + 0x30D: 84, + 0x30E: 84, + 0x30F: 84, + 0x310: 84, + 0x311: 84, + 0x312: 84, + 0x313: 84, + 0x314: 84, + 0x315: 84, + 0x316: 84, + 0x317: 84, + 0x318: 84, + 0x319: 84, + 0x31A: 84, + 0x31B: 84, + 0x31C: 84, + 0x31D: 84, + 0x31E: 84, + 0x31F: 84, + 0x320: 84, + 0x321: 84, + 0x322: 84, + 0x323: 84, + 0x324: 84, + 0x325: 84, + 0x326: 84, + 0x327: 84, + 0x328: 84, + 0x329: 84, + 0x32A: 84, + 0x32B: 84, + 0x32C: 84, + 0x32D: 84, + 0x32E: 84, + 0x32F: 84, + 0x330: 84, + 0x331: 84, + 0x332: 84, + 0x333: 84, + 0x334: 84, + 0x335: 84, + 0x336: 84, + 0x337: 84, + 0x338: 84, + 0x339: 84, + 0x33A: 84, + 0x33B: 84, + 0x33C: 84, + 0x33D: 84, + 0x33E: 84, + 0x33F: 84, + 0x340: 84, + 0x341: 84, + 0x342: 84, + 0x343: 84, + 0x344: 84, + 0x345: 84, + 0x346: 84, + 0x347: 84, + 0x348: 84, + 0x349: 84, + 0x34A: 84, + 0x34B: 84, + 0x34C: 84, + 0x34D: 84, + 0x34E: 84, + 0x34F: 84, + 0x350: 84, + 0x351: 84, + 0x352: 84, + 0x353: 84, + 0x354: 84, + 0x355: 84, + 0x356: 84, + 0x357: 84, + 0x358: 84, + 0x359: 84, + 0x35A: 84, + 0x35B: 84, + 0x35C: 84, + 0x35D: 84, + 0x35E: 84, + 0x35F: 84, + 0x360: 84, + 0x361: 84, + 0x362: 84, + 0x363: 84, + 0x364: 84, + 0x365: 84, + 0x366: 84, + 0x367: 84, + 0x368: 84, + 0x369: 84, + 0x36A: 84, + 0x36B: 84, + 0x36C: 84, + 0x36D: 84, + 0x36E: 84, + 0x36F: 84, + 0x483: 84, + 0x484: 84, + 0x485: 84, + 0x486: 84, + 0x487: 84, + 0x488: 84, + 0x489: 84, + 0x591: 84, + 0x592: 84, + 0x593: 84, + 0x594: 84, + 0x595: 84, + 0x596: 84, + 0x597: 84, + 0x598: 84, + 0x599: 84, + 0x59A: 84, + 0x59B: 84, + 0x59C: 84, + 0x59D: 84, + 0x59E: 84, + 0x59F: 84, + 0x5A0: 84, + 0x5A1: 84, + 0x5A2: 84, + 0x5A3: 84, + 0x5A4: 84, + 0x5A5: 84, + 0x5A6: 84, + 0x5A7: 84, + 0x5A8: 84, + 0x5A9: 84, + 0x5AA: 84, + 0x5AB: 84, + 0x5AC: 84, + 0x5AD: 84, + 0x5AE: 84, + 0x5AF: 84, + 0x5B0: 84, + 0x5B1: 84, + 0x5B2: 84, + 0x5B3: 84, + 0x5B4: 84, + 0x5B5: 84, + 0x5B6: 84, + 0x5B7: 84, + 0x5B8: 84, + 0x5B9: 84, + 0x5BA: 84, + 0x5BB: 84, + 0x5BC: 84, + 0x5BD: 84, + 0x5BF: 84, + 0x5C1: 84, + 0x5C2: 84, + 0x5C4: 84, + 0x5C5: 84, + 0x5C7: 84, + 0x610: 84, + 0x611: 84, + 0x612: 84, + 0x613: 84, + 0x614: 84, + 0x615: 84, + 0x616: 84, + 0x617: 84, + 0x618: 84, + 0x619: 84, + 0x61A: 84, + 0x61C: 84, 0x620: 68, - 0x621: 85, 0x622: 82, 0x623: 82, 0x624: 82, @@ -118,12 +293,12 @@ joining_types = { 0x627: 82, 0x628: 68, 0x629: 82, - 0x62a: 68, - 0x62b: 68, - 0x62c: 68, - 0x62d: 68, - 0x62e: 68, - 0x62f: 82, + 0x62A: 68, + 0x62B: 68, + 0x62C: 68, + 0x62D: 68, + 0x62E: 68, + 0x62F: 82, 0x630: 82, 0x631: 82, 0x632: 82, @@ -134,12 +309,12 @@ joining_types = { 0x637: 68, 0x638: 68, 0x639: 68, - 0x63a: 68, - 0x63b: 68, - 0x63c: 68, - 0x63d: 68, - 0x63e: 68, - 0x63f: 68, + 0x63A: 68, + 0x63B: 68, + 0x63C: 68, + 0x63D: 68, + 0x63E: 68, + 0x63F: 68, 0x640: 67, 0x641: 68, 0x642: 68, @@ -150,24 +325,45 @@ joining_types = { 0x647: 68, 0x648: 82, 0x649: 68, - 0x64a: 68, - 0x66e: 68, - 0x66f: 68, + 0x64A: 68, + 0x64B: 84, + 0x64C: 84, + 0x64D: 84, + 0x64E: 84, + 0x64F: 84, + 0x650: 84, + 0x651: 84, + 0x652: 84, + 0x653: 84, + 0x654: 84, + 0x655: 84, + 0x656: 84, + 0x657: 84, + 0x658: 84, + 0x659: 84, + 0x65A: 84, + 0x65B: 84, + 0x65C: 84, + 0x65D: 84, + 0x65E: 84, + 0x65F: 84, + 0x66E: 68, + 0x66F: 68, + 0x670: 84, 0x671: 82, 0x672: 82, 0x673: 82, - 0x674: 85, 0x675: 82, 0x676: 82, 0x677: 82, 0x678: 68, 0x679: 68, - 0x67a: 68, - 0x67b: 68, - 0x67c: 68, - 0x67d: 68, - 0x67e: 68, - 0x67f: 68, + 0x67A: 68, + 0x67B: 68, + 0x67C: 68, + 0x67D: 68, + 0x67E: 68, + 0x67F: 68, 0x680: 68, 0x681: 68, 0x682: 68, @@ -178,12 +374,12 @@ joining_types = { 0x687: 68, 0x688: 82, 0x689: 82, - 0x68a: 82, - 0x68b: 82, - 0x68c: 82, - 0x68d: 82, - 0x68e: 82, - 0x68f: 82, + 0x68A: 82, + 0x68B: 82, + 0x68C: 82, + 0x68D: 82, + 0x68E: 82, + 0x68F: 82, 0x690: 82, 0x691: 82, 0x692: 82, @@ -194,74 +390,93 @@ joining_types = { 0x697: 82, 0x698: 82, 0x699: 82, - 0x69a: 68, - 0x69b: 68, - 0x69c: 68, - 0x69d: 68, - 0x69e: 68, - 0x69f: 68, - 0x6a0: 68, - 0x6a1: 68, - 0x6a2: 68, - 0x6a3: 68, - 0x6a4: 68, - 0x6a5: 68, - 0x6a6: 68, - 0x6a7: 68, - 0x6a8: 68, - 0x6a9: 68, - 0x6aa: 68, - 0x6ab: 68, - 0x6ac: 68, - 0x6ad: 68, - 0x6ae: 68, - 0x6af: 68, - 0x6b0: 68, - 0x6b1: 68, - 0x6b2: 68, - 0x6b3: 68, - 0x6b4: 68, - 0x6b5: 68, - 0x6b6: 68, - 0x6b7: 68, - 0x6b8: 68, - 0x6b9: 68, - 0x6ba: 68, - 0x6bb: 68, - 0x6bc: 68, - 0x6bd: 68, - 0x6be: 68, - 0x6bf: 68, - 0x6c0: 82, - 0x6c1: 68, - 0x6c2: 68, - 0x6c3: 82, - 0x6c4: 82, - 0x6c5: 82, - 0x6c6: 82, - 0x6c7: 82, - 0x6c8: 82, - 0x6c9: 82, - 0x6ca: 82, - 0x6cb: 82, - 0x6cc: 68, - 0x6cd: 82, - 0x6ce: 68, - 0x6cf: 82, - 0x6d0: 68, - 0x6d1: 68, - 0x6d2: 82, - 0x6d3: 82, - 0x6d5: 82, - 0x6dd: 85, - 0x6ee: 82, - 0x6ef: 82, - 0x6fa: 68, - 0x6fb: 68, - 0x6fc: 68, - 0x6ff: 68, - 0x70f: 84, + 0x69A: 68, + 0x69B: 68, + 0x69C: 68, + 0x69D: 68, + 0x69E: 68, + 0x69F: 68, + 0x6A0: 68, + 0x6A1: 68, + 0x6A2: 68, + 0x6A3: 68, + 0x6A4: 68, + 0x6A5: 68, + 0x6A6: 68, + 0x6A7: 68, + 0x6A8: 68, + 0x6A9: 68, + 0x6AA: 68, + 0x6AB: 68, + 0x6AC: 68, + 0x6AD: 68, + 0x6AE: 68, + 0x6AF: 68, + 0x6B0: 68, + 0x6B1: 68, + 0x6B2: 68, + 0x6B3: 68, + 0x6B4: 68, + 0x6B5: 68, + 0x6B6: 68, + 0x6B7: 68, + 0x6B8: 68, + 0x6B9: 68, + 0x6BA: 68, + 0x6BB: 68, + 0x6BC: 68, + 0x6BD: 68, + 0x6BE: 68, + 0x6BF: 68, + 0x6C0: 82, + 0x6C1: 68, + 0x6C2: 68, + 0x6C3: 82, + 0x6C4: 82, + 0x6C5: 82, + 0x6C6: 82, + 0x6C7: 82, + 0x6C8: 82, + 0x6C9: 82, + 0x6CA: 82, + 0x6CB: 82, + 0x6CC: 68, + 0x6CD: 82, + 0x6CE: 68, + 0x6CF: 82, + 0x6D0: 68, + 0x6D1: 68, + 0x6D2: 82, + 0x6D3: 82, + 0x6D5: 82, + 0x6D6: 84, + 0x6D7: 84, + 0x6D8: 84, + 0x6D9: 84, + 0x6DA: 84, + 0x6DB: 84, + 0x6DC: 84, + 0x6DF: 84, + 0x6E0: 84, + 0x6E1: 84, + 0x6E2: 84, + 0x6E3: 84, + 0x6E4: 84, + 0x6E7: 84, + 0x6E8: 84, + 0x6EA: 84, + 0x6EB: 84, + 0x6EC: 84, + 0x6ED: 84, + 0x6EE: 82, + 0x6EF: 82, + 0x6FA: 68, + 0x6FB: 68, + 0x6FC: 68, + 0x6FF: 68, + 0x70F: 84, 0x710: 82, + 0x711: 84, 0x712: 68, 0x713: 68, 0x714: 68, @@ -270,12 +485,12 @@ joining_types = { 0x717: 82, 0x718: 82, 0x719: 82, - 0x71a: 68, - 0x71b: 68, - 0x71c: 68, - 0x71d: 68, - 0x71e: 82, - 0x71f: 68, + 0x71A: 68, + 0x71B: 68, + 0x71C: 68, + 0x71D: 68, + 0x71E: 82, + 0x71F: 68, 0x720: 68, 0x721: 68, 0x722: 68, @@ -286,15 +501,42 @@ joining_types = { 0x727: 68, 0x728: 82, 0x729: 68, - 0x72a: 82, - 0x72b: 68, - 0x72c: 82, - 0x72d: 68, - 0x72e: 68, - 0x72f: 82, - 0x74d: 82, - 0x74e: 68, - 0x74f: 68, + 0x72A: 82, + 0x72B: 68, + 0x72C: 82, + 0x72D: 68, + 0x72E: 68, + 0x72F: 82, + 0x730: 84, + 0x731: 84, + 0x732: 84, + 0x733: 84, + 0x734: 84, + 0x735: 84, + 0x736: 84, + 0x737: 84, + 0x738: 84, + 0x739: 84, + 0x73A: 84, + 0x73B: 84, + 0x73C: 84, + 0x73D: 84, + 0x73E: 84, + 0x73F: 84, + 0x740: 84, + 0x741: 84, + 0x742: 84, + 0x743: 84, + 0x744: 84, + 0x745: 84, + 0x746: 84, + 0x747: 84, + 0x748: 84, + 0x749: 84, + 0x74A: 84, + 0x74D: 82, + 0x74E: 68, + 0x74F: 68, 0x750: 68, 0x751: 68, 0x752: 68, @@ -305,12 +547,12 @@ joining_types = { 0x757: 68, 0x758: 68, 0x759: 82, - 0x75a: 82, - 0x75b: 82, - 0x75c: 68, - 0x75d: 68, - 0x75e: 68, - 0x75f: 68, + 0x75A: 82, + 0x75B: 82, + 0x75C: 68, + 0x75D: 68, + 0x75E: 68, + 0x75F: 68, 0x760: 68, 0x761: 68, 0x762: 68, @@ -321,12 +563,12 @@ joining_types = { 0x767: 68, 0x768: 68, 0x769: 68, - 0x76a: 68, - 0x76b: 82, - 0x76c: 82, - 0x76d: 68, - 0x76e: 68, - 0x76f: 68, + 0x76A: 68, + 0x76B: 82, + 0x76C: 82, + 0x76D: 68, + 0x76E: 68, + 0x76F: 68, 0x770: 68, 0x771: 82, 0x772: 68, @@ -337,46 +579,88 @@ joining_types = { 0x777: 68, 0x778: 82, 0x779: 82, - 0x77a: 68, - 0x77b: 68, - 0x77c: 68, - 0x77d: 68, - 0x77e: 68, - 0x77f: 68, - 0x7ca: 68, - 0x7cb: 68, - 0x7cc: 68, - 0x7cd: 68, - 0x7ce: 68, - 0x7cf: 68, - 0x7d0: 68, - 0x7d1: 68, - 0x7d2: 68, - 0x7d3: 68, - 0x7d4: 68, - 0x7d5: 68, - 0x7d6: 68, - 0x7d7: 68, - 0x7d8: 68, - 0x7d9: 68, - 0x7da: 68, - 0x7db: 68, - 0x7dc: 68, - 0x7dd: 68, - 0x7de: 68, - 0x7df: 68, - 0x7e0: 68, - 0x7e1: 68, - 0x7e2: 68, - 0x7e3: 68, - 0x7e4: 68, - 0x7e5: 68, - 0x7e6: 68, - 0x7e7: 68, - 0x7e8: 68, - 0x7e9: 68, - 0x7ea: 68, - 0x7fa: 67, + 0x77A: 68, + 0x77B: 68, + 0x77C: 68, + 0x77D: 68, + 0x77E: 68, + 0x77F: 68, + 0x7A6: 84, + 0x7A7: 84, + 0x7A8: 84, + 0x7A9: 84, + 0x7AA: 84, + 0x7AB: 84, + 0x7AC: 84, + 0x7AD: 84, + 0x7AE: 84, + 0x7AF: 84, + 0x7B0: 84, + 0x7CA: 68, + 0x7CB: 68, + 0x7CC: 68, + 0x7CD: 68, + 0x7CE: 68, + 0x7CF: 68, + 0x7D0: 68, + 0x7D1: 68, + 0x7D2: 68, + 0x7D3: 68, + 0x7D4: 68, + 0x7D5: 68, + 0x7D6: 68, + 0x7D7: 68, + 0x7D8: 68, + 0x7D9: 68, + 0x7DA: 68, + 0x7DB: 68, + 0x7DC: 68, + 0x7DD: 68, + 0x7DE: 68, + 0x7DF: 68, + 0x7E0: 68, + 0x7E1: 68, + 0x7E2: 68, + 0x7E3: 68, + 0x7E4: 68, + 0x7E5: 68, + 0x7E6: 68, + 0x7E7: 68, + 0x7E8: 68, + 0x7E9: 68, + 0x7EA: 68, + 0x7EB: 84, + 0x7EC: 84, + 0x7ED: 84, + 0x7EE: 84, + 0x7EF: 84, + 0x7F0: 84, + 0x7F1: 84, + 0x7F2: 84, + 0x7F3: 84, + 0x7FA: 67, + 0x7FD: 84, + 0x816: 84, + 0x817: 84, + 0x818: 84, + 0x819: 84, + 0x81B: 84, + 0x81C: 84, + 0x81D: 84, + 0x81E: 84, + 0x81F: 84, + 0x820: 84, + 0x821: 84, + 0x822: 84, + 0x823: 84, + 0x825: 84, + 0x826: 84, + 0x827: 84, + 0x829: 84, + 0x82A: 84, + 0x82B: 84, + 0x82C: 84, + 0x82D: 84, 0x840: 82, 0x841: 68, 0x842: 68, @@ -387,12 +671,12 @@ joining_types = { 0x847: 82, 0x848: 68, 0x849: 82, - 0x84a: 68, - 0x84b: 68, - 0x84c: 68, - 0x84d: 68, - 0x84e: 68, - 0x84f: 68, + 0x84A: 68, + 0x84B: 68, + 0x84C: 68, + 0x84D: 68, + 0x84E: 68, + 0x84F: 68, 0x850: 68, 0x851: 68, 0x852: 68, @@ -402,17 +686,18 @@ joining_types = { 0x856: 82, 0x857: 82, 0x858: 82, + 0x859: 84, + 0x85A: 84, + 0x85B: 84, 0x860: 68, - 0x861: 85, 0x862: 68, 0x863: 68, 0x864: 68, 0x865: 68, - 0x866: 85, 0x867: 82, 0x868: 68, 0x869: 82, - 0x86a: 82, + 0x86A: 82, 0x870: 82, 0x871: 82, 0x872: 82, @@ -423,12 +708,12 @@ joining_types = { 0x877: 82, 0x878: 82, 0x879: 82, - 0x87a: 82, - 0x87b: 82, - 0x87c: 82, - 0x87d: 82, - 0x87e: 82, - 0x87f: 82, + 0x87A: 82, + 0x87B: 82, + 0x87C: 82, + 0x87D: 82, + 0x87E: 82, + 0x87F: 82, 0x880: 82, 0x881: 82, 0x882: 82, @@ -436,62 +721,411 @@ joining_types = { 0x884: 67, 0x885: 67, 0x886: 68, - 0x887: 85, - 0x888: 85, 0x889: 68, - 0x88a: 68, - 0x88b: 68, - 0x88c: 68, - 0x88d: 68, - 0x88e: 82, - 0x890: 85, - 0x891: 85, - 0x8a0: 68, - 0x8a1: 68, - 0x8a2: 68, - 0x8a3: 68, - 0x8a4: 68, - 0x8a5: 68, - 0x8a6: 68, - 0x8a7: 68, - 0x8a8: 68, - 0x8a9: 68, - 0x8aa: 82, - 0x8ab: 82, - 0x8ac: 82, - 0x8ad: 85, - 0x8ae: 82, - 0x8af: 68, - 0x8b0: 68, - 0x8b1: 82, - 0x8b2: 82, - 0x8b3: 68, - 0x8b4: 68, - 0x8b5: 68, - 0x8b6: 68, - 0x8b7: 68, - 0x8b8: 68, - 0x8b9: 82, - 0x8ba: 68, - 0x8bb: 68, - 0x8bc: 68, - 0x8bd: 68, - 0x8be: 68, - 0x8bf: 68, - 0x8c0: 68, - 0x8c1: 68, - 0x8c2: 68, - 0x8c3: 68, - 0x8c4: 68, - 0x8c5: 68, - 0x8c6: 68, - 0x8c7: 68, - 0x8c8: 68, - 0x8e2: 85, - 0x1806: 85, + 0x88A: 68, + 0x88B: 68, + 0x88C: 68, + 0x88D: 68, + 0x88E: 82, + 0x898: 84, + 0x899: 84, + 0x89A: 84, + 0x89B: 84, + 0x89C: 84, + 0x89D: 84, + 0x89E: 84, + 0x89F: 84, + 0x8A0: 68, + 0x8A1: 68, + 0x8A2: 68, + 0x8A3: 68, + 0x8A4: 68, + 0x8A5: 68, + 0x8A6: 68, + 0x8A7: 68, + 0x8A8: 68, + 0x8A9: 68, + 0x8AA: 82, + 0x8AB: 82, + 0x8AC: 82, + 0x8AE: 82, + 0x8AF: 68, + 0x8B0: 68, + 0x8B1: 82, + 0x8B2: 82, + 0x8B3: 68, + 0x8B4: 68, + 0x8B5: 68, + 0x8B6: 68, + 0x8B7: 68, + 0x8B8: 68, + 0x8B9: 82, + 0x8BA: 68, + 0x8BB: 68, + 0x8BC: 68, + 0x8BD: 68, + 0x8BE: 68, + 0x8BF: 68, + 0x8C0: 68, + 0x8C1: 68, + 0x8C2: 68, + 0x8C3: 68, + 0x8C4: 68, + 0x8C5: 68, + 0x8C6: 68, + 0x8C7: 68, + 0x8C8: 68, + 0x8CA: 84, + 0x8CB: 84, + 0x8CC: 84, + 0x8CD: 84, + 0x8CE: 84, + 0x8CF: 84, + 0x8D0: 84, + 0x8D1: 84, + 0x8D2: 84, + 0x8D3: 84, + 0x8D4: 84, + 0x8D5: 84, + 0x8D6: 84, + 0x8D7: 84, + 0x8D8: 84, + 0x8D9: 84, + 0x8DA: 84, + 0x8DB: 84, + 0x8DC: 84, + 0x8DD: 84, + 0x8DE: 84, + 0x8DF: 84, + 0x8E0: 84, + 0x8E1: 84, + 0x8E3: 84, + 0x8E4: 84, + 0x8E5: 84, + 0x8E6: 84, + 0x8E7: 84, + 0x8E8: 84, + 0x8E9: 84, + 0x8EA: 84, + 0x8EB: 84, + 0x8EC: 84, + 0x8ED: 84, + 0x8EE: 84, + 0x8EF: 84, + 0x8F0: 84, + 0x8F1: 84, + 0x8F2: 84, + 0x8F3: 84, + 0x8F4: 84, + 0x8F5: 84, + 0x8F6: 84, + 0x8F7: 84, + 0x8F8: 84, + 0x8F9: 84, + 0x8FA: 84, + 0x8FB: 84, + 0x8FC: 84, + 0x8FD: 84, + 0x8FE: 84, + 0x8FF: 84, + 0x900: 84, + 0x901: 84, + 0x902: 84, + 0x93A: 84, + 0x93C: 84, + 0x941: 84, + 0x942: 84, + 0x943: 84, + 0x944: 84, + 0x945: 84, + 0x946: 84, + 0x947: 84, + 0x948: 84, + 0x94D: 84, + 0x951: 84, + 0x952: 84, + 0x953: 84, + 0x954: 84, + 0x955: 84, + 0x956: 84, + 0x957: 84, + 0x962: 84, + 0x963: 84, + 0x981: 84, + 0x9BC: 84, + 0x9C1: 84, + 0x9C2: 84, + 0x9C3: 84, + 0x9C4: 84, + 0x9CD: 84, + 0x9E2: 84, + 0x9E3: 84, + 0x9FE: 84, + 0xA01: 84, + 0xA02: 84, + 0xA3C: 84, + 0xA41: 84, + 0xA42: 84, + 0xA47: 84, + 0xA48: 84, + 0xA4B: 84, + 0xA4C: 84, + 0xA4D: 84, + 0xA51: 84, + 0xA70: 84, + 0xA71: 84, + 0xA75: 84, + 0xA81: 84, + 0xA82: 84, + 0xABC: 84, + 0xAC1: 84, + 0xAC2: 84, + 0xAC3: 84, + 0xAC4: 84, + 0xAC5: 84, + 0xAC7: 84, + 0xAC8: 84, + 0xACD: 84, + 0xAE2: 84, + 0xAE3: 84, + 0xAFA: 84, + 0xAFB: 84, + 0xAFC: 84, + 0xAFD: 84, + 0xAFE: 84, + 0xAFF: 84, + 0xB01: 84, + 0xB3C: 84, + 0xB3F: 84, + 0xB41: 84, + 0xB42: 84, + 0xB43: 84, + 0xB44: 84, + 0xB4D: 84, + 0xB55: 84, + 0xB56: 84, + 0xB62: 84, + 0xB63: 84, + 0xB82: 84, + 0xBC0: 84, + 0xBCD: 84, + 0xC00: 84, + 0xC04: 84, + 0xC3C: 84, + 0xC3E: 84, + 0xC3F: 84, + 0xC40: 84, + 0xC46: 84, + 0xC47: 84, + 0xC48: 84, + 0xC4A: 84, + 0xC4B: 84, + 0xC4C: 84, + 0xC4D: 84, + 0xC55: 84, + 0xC56: 84, + 0xC62: 84, + 0xC63: 84, + 0xC81: 84, + 0xCBC: 84, + 0xCBF: 84, + 0xCC6: 84, + 0xCCC: 84, + 0xCCD: 84, + 0xCE2: 84, + 0xCE3: 84, + 0xD00: 84, + 0xD01: 84, + 0xD3B: 84, + 0xD3C: 84, + 0xD41: 84, + 0xD42: 84, + 0xD43: 84, + 0xD44: 84, + 0xD4D: 84, + 0xD62: 84, + 0xD63: 84, + 0xD81: 84, + 0xDCA: 84, + 0xDD2: 84, + 0xDD3: 84, + 0xDD4: 84, + 0xDD6: 84, + 0xE31: 84, + 0xE34: 84, + 0xE35: 84, + 0xE36: 84, + 0xE37: 84, + 0xE38: 84, + 0xE39: 84, + 0xE3A: 84, + 0xE47: 84, + 0xE48: 84, + 0xE49: 84, + 0xE4A: 84, + 0xE4B: 84, + 0xE4C: 84, + 0xE4D: 84, + 0xE4E: 84, + 0xEB1: 84, + 0xEB4: 84, + 0xEB5: 84, + 0xEB6: 84, + 0xEB7: 84, + 0xEB8: 84, + 0xEB9: 84, + 0xEBA: 84, + 0xEBB: 84, + 0xEBC: 84, + 0xEC8: 84, + 0xEC9: 84, + 0xECA: 84, + 0xECB: 84, + 0xECC: 84, + 0xECD: 84, + 0xECE: 84, + 0xF18: 84, + 0xF19: 84, + 0xF35: 84, + 0xF37: 84, + 0xF39: 84, + 0xF71: 84, + 0xF72: 84, + 0xF73: 84, + 0xF74: 84, + 0xF75: 84, + 0xF76: 84, + 0xF77: 84, + 0xF78: 84, + 0xF79: 84, + 0xF7A: 84, + 0xF7B: 84, + 0xF7C: 84, + 0xF7D: 84, + 0xF7E: 84, + 0xF80: 84, + 0xF81: 84, + 0xF82: 84, + 0xF83: 84, + 0xF84: 84, + 0xF86: 84, + 0xF87: 84, + 0xF8D: 84, + 0xF8E: 84, + 0xF8F: 84, + 0xF90: 84, + 0xF91: 84, + 0xF92: 84, + 0xF93: 84, + 0xF94: 84, + 0xF95: 84, + 0xF96: 84, + 0xF97: 84, + 0xF99: 84, + 0xF9A: 84, + 0xF9B: 84, + 0xF9C: 84, + 0xF9D: 84, + 0xF9E: 84, + 0xF9F: 84, + 0xFA0: 84, + 0xFA1: 84, + 0xFA2: 84, + 0xFA3: 84, + 0xFA4: 84, + 0xFA5: 84, + 0xFA6: 84, + 0xFA7: 84, + 0xFA8: 84, + 0xFA9: 84, + 0xFAA: 84, + 0xFAB: 84, + 0xFAC: 84, + 0xFAD: 84, + 0xFAE: 84, + 0xFAF: 84, + 0xFB0: 84, + 0xFB1: 84, + 0xFB2: 84, + 0xFB3: 84, + 0xFB4: 84, + 0xFB5: 84, + 0xFB6: 84, + 0xFB7: 84, + 0xFB8: 84, + 0xFB9: 84, + 0xFBA: 84, + 0xFBB: 84, + 0xFBC: 84, + 0xFC6: 84, + 0x102D: 84, + 0x102E: 84, + 0x102F: 84, + 0x1030: 84, + 0x1032: 84, + 0x1033: 84, + 0x1034: 84, + 0x1035: 84, + 0x1036: 84, + 0x1037: 84, + 0x1039: 84, + 0x103A: 84, + 0x103D: 84, + 0x103E: 84, + 0x1058: 84, + 0x1059: 84, + 0x105E: 84, + 0x105F: 84, + 0x1060: 84, + 0x1071: 84, + 0x1072: 84, + 0x1073: 84, + 0x1074: 84, + 0x1082: 84, + 0x1085: 84, + 0x1086: 84, + 0x108D: 84, + 0x109D: 84, + 0x135D: 84, + 0x135E: 84, + 0x135F: 84, + 0x1712: 84, + 0x1713: 84, + 0x1714: 84, + 0x1732: 84, + 0x1733: 84, + 0x1752: 84, + 0x1753: 84, + 0x1772: 84, + 0x1773: 84, + 0x17B4: 84, + 0x17B5: 84, + 0x17B7: 84, + 0x17B8: 84, + 0x17B9: 84, + 0x17BA: 84, + 0x17BB: 84, + 0x17BC: 84, + 0x17BD: 84, + 0x17C6: 84, + 0x17C9: 84, + 0x17CA: 84, + 0x17CB: 84, + 0x17CC: 84, + 0x17CD: 84, + 0x17CE: 84, + 0x17CF: 84, + 0x17D0: 84, + 0x17D1: 84, + 0x17D2: 84, + 0x17D3: 84, + 0x17DD: 84, 0x1807: 68, - 0x180a: 67, - 0x180e: 85, + 0x180A: 67, + 0x180B: 84, + 0x180C: 84, + 0x180D: 84, + 0x180F: 84, 0x1820: 68, 0x1821: 68, 0x1822: 68, @@ -502,12 +1136,12 @@ joining_types = { 0x1827: 68, 0x1828: 68, 0x1829: 68, - 0x182a: 68, - 0x182b: 68, - 0x182c: 68, - 0x182d: 68, - 0x182e: 68, - 0x182f: 68, + 0x182A: 68, + 0x182B: 68, + 0x182C: 68, + 0x182D: 68, + 0x182E: 68, + 0x182F: 68, 0x1830: 68, 0x1831: 68, 0x1832: 68, @@ -518,12 +1152,12 @@ joining_types = { 0x1837: 68, 0x1838: 68, 0x1839: 68, - 0x183a: 68, - 0x183b: 68, - 0x183c: 68, - 0x183d: 68, - 0x183e: 68, - 0x183f: 68, + 0x183A: 68, + 0x183B: 68, + 0x183C: 68, + 0x183D: 68, + 0x183E: 68, + 0x183F: 68, 0x1840: 68, 0x1841: 68, 0x1842: 68, @@ -534,12 +1168,12 @@ joining_types = { 0x1847: 68, 0x1848: 68, 0x1849: 68, - 0x184a: 68, - 0x184b: 68, - 0x184c: 68, - 0x184d: 68, - 0x184e: 68, - 0x184f: 68, + 0x184A: 68, + 0x184B: 68, + 0x184C: 68, + 0x184D: 68, + 0x184E: 68, + 0x184F: 68, 0x1850: 68, 0x1851: 68, 0x1852: 68, @@ -550,12 +1184,12 @@ joining_types = { 0x1857: 68, 0x1858: 68, 0x1859: 68, - 0x185a: 68, - 0x185b: 68, - 0x185c: 68, - 0x185d: 68, - 0x185e: 68, - 0x185f: 68, + 0x185A: 68, + 0x185B: 68, + 0x185C: 68, + 0x185D: 68, + 0x185E: 68, + 0x185F: 68, 0x1860: 68, 0x1861: 68, 0x1862: 68, @@ -566,12 +1200,12 @@ joining_types = { 0x1867: 68, 0x1868: 68, 0x1869: 68, - 0x186a: 68, - 0x186b: 68, - 0x186c: 68, - 0x186d: 68, - 0x186e: 68, - 0x186f: 68, + 0x186A: 68, + 0x186B: 68, + 0x186C: 68, + 0x186D: 68, + 0x186E: 68, + 0x186F: 68, 0x1870: 68, 0x1871: 68, 0x1872: 68, @@ -581,22 +1215,17 @@ joining_types = { 0x1876: 68, 0x1877: 68, 0x1878: 68, - 0x1880: 85, - 0x1881: 85, - 0x1882: 85, - 0x1883: 85, - 0x1884: 85, 0x1885: 84, 0x1886: 84, 0x1887: 68, 0x1888: 68, 0x1889: 68, - 0x188a: 68, - 0x188b: 68, - 0x188c: 68, - 0x188d: 68, - 0x188e: 68, - 0x188f: 68, + 0x188A: 68, + 0x188B: 68, + 0x188C: 68, + 0x188D: 68, + 0x188E: 68, + 0x188F: 68, 0x1890: 68, 0x1891: 68, 0x1892: 68, @@ -607,1545 +1236,3008 @@ joining_types = { 0x1897: 68, 0x1898: 68, 0x1899: 68, - 0x189a: 68, - 0x189b: 68, - 0x189c: 68, - 0x189d: 68, - 0x189e: 68, - 0x189f: 68, - 0x18a0: 68, - 0x18a1: 68, - 0x18a2: 68, - 0x18a3: 68, - 0x18a4: 68, - 0x18a5: 68, - 0x18a6: 68, - 0x18a7: 68, - 0x18a8: 68, - 0x18aa: 68, - 0x200c: 85, - 0x200d: 67, - 0x202f: 85, - 0x2066: 85, - 0x2067: 85, - 0x2068: 85, - 0x2069: 85, - 0xa840: 68, - 0xa841: 68, - 0xa842: 68, - 0xa843: 68, - 0xa844: 68, - 0xa845: 68, - 0xa846: 68, - 0xa847: 68, - 0xa848: 68, - 0xa849: 68, - 0xa84a: 68, - 0xa84b: 68, - 0xa84c: 68, - 0xa84d: 68, - 0xa84e: 68, - 0xa84f: 68, - 0xa850: 68, - 0xa851: 68, - 0xa852: 68, - 0xa853: 68, - 0xa854: 68, - 0xa855: 68, - 0xa856: 68, - 0xa857: 68, - 0xa858: 68, - 0xa859: 68, - 0xa85a: 68, - 0xa85b: 68, - 0xa85c: 68, - 0xa85d: 68, - 0xa85e: 68, - 0xa85f: 68, - 0xa860: 68, - 0xa861: 68, - 0xa862: 68, - 0xa863: 68, - 0xa864: 68, - 0xa865: 68, - 0xa866: 68, - 0xa867: 68, - 0xa868: 68, - 0xa869: 68, - 0xa86a: 68, - 0xa86b: 68, - 0xa86c: 68, - 0xa86d: 68, - 0xa86e: 68, - 0xa86f: 68, - 0xa870: 68, - 0xa871: 68, - 0xa872: 76, - 0xa873: 85, - 0x10ac0: 68, - 0x10ac1: 68, - 0x10ac2: 68, - 0x10ac3: 68, - 0x10ac4: 68, - 0x10ac5: 82, - 0x10ac6: 85, - 0x10ac7: 82, - 0x10ac8: 85, - 0x10ac9: 82, - 0x10aca: 82, - 0x10acb: 85, - 0x10acc: 85, - 0x10acd: 76, - 0x10ace: 82, - 0x10acf: 82, - 0x10ad0: 82, - 0x10ad1: 82, - 0x10ad2: 82, - 0x10ad3: 68, - 0x10ad4: 68, - 0x10ad5: 68, - 0x10ad6: 68, - 0x10ad7: 76, - 0x10ad8: 68, - 0x10ad9: 68, - 0x10ada: 68, - 0x10adb: 68, - 0x10adc: 68, - 0x10add: 82, - 0x10ade: 68, - 0x10adf: 68, - 0x10ae0: 68, - 0x10ae1: 82, - 0x10ae2: 85, - 0x10ae3: 85, - 0x10ae4: 82, - 0x10aeb: 68, - 0x10aec: 68, - 0x10aed: 68, - 0x10aee: 68, - 0x10aef: 82, - 0x10b80: 68, - 0x10b81: 82, - 0x10b82: 68, - 0x10b83: 82, - 0x10b84: 82, - 0x10b85: 82, - 0x10b86: 68, - 0x10b87: 68, - 0x10b88: 68, - 0x10b89: 82, - 0x10b8a: 68, - 0x10b8b: 68, - 0x10b8c: 82, - 0x10b8d: 68, - 0x10b8e: 82, - 0x10b8f: 82, - 0x10b90: 68, - 0x10b91: 82, - 0x10ba9: 82, - 0x10baa: 82, - 0x10bab: 82, - 0x10bac: 82, - 0x10bad: 68, - 0x10bae: 68, - 0x10baf: 85, - 0x10d00: 76, - 0x10d01: 68, - 0x10d02: 68, - 0x10d03: 68, - 0x10d04: 68, - 0x10d05: 68, - 0x10d06: 68, - 0x10d07: 68, - 0x10d08: 68, - 0x10d09: 68, - 0x10d0a: 68, - 0x10d0b: 68, - 0x10d0c: 68, - 0x10d0d: 68, - 0x10d0e: 68, - 0x10d0f: 68, - 0x10d10: 68, - 0x10d11: 68, - 0x10d12: 68, - 0x10d13: 68, - 0x10d14: 68, - 0x10d15: 68, - 0x10d16: 68, - 0x10d17: 68, - 0x10d18: 68, - 0x10d19: 68, - 0x10d1a: 68, - 0x10d1b: 68, - 0x10d1c: 68, - 0x10d1d: 68, - 0x10d1e: 68, - 0x10d1f: 68, - 0x10d20: 68, - 0x10d21: 68, - 0x10d22: 82, - 0x10d23: 68, - 0x10f30: 68, - 0x10f31: 68, - 0x10f32: 68, - 0x10f33: 82, - 0x10f34: 68, - 0x10f35: 68, - 0x10f36: 68, - 0x10f37: 68, - 0x10f38: 68, - 0x10f39: 68, - 0x10f3a: 68, - 0x10f3b: 68, - 0x10f3c: 68, - 0x10f3d: 68, - 0x10f3e: 68, - 0x10f3f: 68, - 0x10f40: 68, - 0x10f41: 68, - 0x10f42: 68, - 0x10f43: 68, - 0x10f44: 68, - 0x10f45: 85, - 0x10f51: 68, - 0x10f52: 68, - 0x10f53: 68, - 0x10f54: 82, - 0x10f70: 68, - 0x10f71: 68, - 0x10f72: 68, - 0x10f73: 68, - 0x10f74: 82, - 0x10f75: 82, - 0x10f76: 68, - 0x10f77: 68, - 0x10f78: 68, - 0x10f79: 68, - 0x10f7a: 68, - 0x10f7b: 68, - 0x10f7c: 68, - 0x10f7d: 68, - 0x10f7e: 68, - 0x10f7f: 68, - 0x10f80: 68, - 0x10f81: 68, - 0x10fb0: 68, - 0x10fb1: 85, - 0x10fb2: 68, - 0x10fb3: 68, - 0x10fb4: 82, - 0x10fb5: 82, - 0x10fb6: 82, - 0x10fb7: 85, - 0x10fb8: 68, - 0x10fb9: 82, - 0x10fba: 82, - 0x10fbb: 68, - 0x10fbc: 68, - 0x10fbd: 82, - 0x10fbe: 68, - 0x10fbf: 68, - 0x10fc0: 85, - 0x10fc1: 68, - 0x10fc2: 82, - 0x10fc3: 82, - 0x10fc4: 68, - 0x10fc5: 85, - 0x10fc6: 85, - 0x10fc7: 85, - 0x10fc8: 85, - 0x10fc9: 82, - 0x10fca: 68, - 0x10fcb: 76, - 0x110bd: 85, - 0x110cd: 85, - 0x1e900: 68, - 0x1e901: 68, - 0x1e902: 68, - 0x1e903: 68, - 0x1e904: 68, - 0x1e905: 68, - 0x1e906: 68, - 0x1e907: 68, - 0x1e908: 68, - 0x1e909: 68, - 0x1e90a: 68, - 0x1e90b: 68, - 0x1e90c: 68, - 0x1e90d: 68, - 0x1e90e: 68, - 0x1e90f: 68, - 0x1e910: 68, - 0x1e911: 68, - 0x1e912: 68, - 0x1e913: 68, - 0x1e914: 68, - 0x1e915: 68, - 0x1e916: 68, - 0x1e917: 68, - 0x1e918: 68, - 0x1e919: 68, - 0x1e91a: 68, - 0x1e91b: 68, - 0x1e91c: 68, - 0x1e91d: 68, - 0x1e91e: 68, - 0x1e91f: 68, - 0x1e920: 68, - 0x1e921: 68, - 0x1e922: 68, - 0x1e923: 68, - 0x1e924: 68, - 0x1e925: 68, - 0x1e926: 68, - 0x1e927: 68, - 0x1e928: 68, - 0x1e929: 68, - 0x1e92a: 68, - 0x1e92b: 68, - 0x1e92c: 68, - 0x1e92d: 68, - 0x1e92e: 68, - 0x1e92f: 68, - 0x1e930: 68, - 0x1e931: 68, - 0x1e932: 68, - 0x1e933: 68, - 0x1e934: 68, - 0x1e935: 68, - 0x1e936: 68, - 0x1e937: 68, - 0x1e938: 68, - 0x1e939: 68, - 0x1e93a: 68, - 0x1e93b: 68, - 0x1e93c: 68, - 0x1e93d: 68, - 0x1e93e: 68, - 0x1e93f: 68, - 0x1e940: 68, - 0x1e941: 68, - 0x1e942: 68, - 0x1e943: 68, - 0x1e94b: 84, + 0x189A: 68, + 0x189B: 68, + 0x189C: 68, + 0x189D: 68, + 0x189E: 68, + 0x189F: 68, + 0x18A0: 68, + 0x18A1: 68, + 0x18A2: 68, + 0x18A3: 68, + 0x18A4: 68, + 0x18A5: 68, + 0x18A6: 68, + 0x18A7: 68, + 0x18A8: 68, + 0x18A9: 84, + 0x18AA: 68, + 0x1920: 84, + 0x1921: 84, + 0x1922: 84, + 0x1927: 84, + 0x1928: 84, + 0x1932: 84, + 0x1939: 84, + 0x193A: 84, + 0x193B: 84, + 0x1A17: 84, + 0x1A18: 84, + 0x1A1B: 84, + 0x1A56: 84, + 0x1A58: 84, + 0x1A59: 84, + 0x1A5A: 84, + 0x1A5B: 84, + 0x1A5C: 84, + 0x1A5D: 84, + 0x1A5E: 84, + 0x1A60: 84, + 0x1A62: 84, + 0x1A65: 84, + 0x1A66: 84, + 0x1A67: 84, + 0x1A68: 84, + 0x1A69: 84, + 0x1A6A: 84, + 0x1A6B: 84, + 0x1A6C: 84, + 0x1A73: 84, + 0x1A74: 84, + 0x1A75: 84, + 0x1A76: 84, + 0x1A77: 84, + 0x1A78: 84, + 0x1A79: 84, + 0x1A7A: 84, + 0x1A7B: 84, + 0x1A7C: 84, + 0x1A7F: 84, + 0x1AB0: 84, + 0x1AB1: 84, + 0x1AB2: 84, + 0x1AB3: 84, + 0x1AB4: 84, + 0x1AB5: 84, + 0x1AB6: 84, + 0x1AB7: 84, + 0x1AB8: 84, + 0x1AB9: 84, + 0x1ABA: 84, + 0x1ABB: 84, + 0x1ABC: 84, + 0x1ABD: 84, + 0x1ABE: 84, + 0x1ABF: 84, + 0x1AC0: 84, + 0x1AC1: 84, + 0x1AC2: 84, + 0x1AC3: 84, + 0x1AC4: 84, + 0x1AC5: 84, + 0x1AC6: 84, + 0x1AC7: 84, + 0x1AC8: 84, + 0x1AC9: 84, + 0x1ACA: 84, + 0x1ACB: 84, + 0x1ACC: 84, + 0x1ACD: 84, + 0x1ACE: 84, + 0x1B00: 84, + 0x1B01: 84, + 0x1B02: 84, + 0x1B03: 84, + 0x1B34: 84, + 0x1B36: 84, + 0x1B37: 84, + 0x1B38: 84, + 0x1B39: 84, + 0x1B3A: 84, + 0x1B3C: 84, + 0x1B42: 84, + 0x1B6B: 84, + 0x1B6C: 84, + 0x1B6D: 84, + 0x1B6E: 84, + 0x1B6F: 84, + 0x1B70: 84, + 0x1B71: 84, + 0x1B72: 84, + 0x1B73: 84, + 0x1B80: 84, + 0x1B81: 84, + 0x1BA2: 84, + 0x1BA3: 84, + 0x1BA4: 84, + 0x1BA5: 84, + 0x1BA8: 84, + 0x1BA9: 84, + 0x1BAB: 84, + 0x1BAC: 84, + 0x1BAD: 84, + 0x1BE6: 84, + 0x1BE8: 84, + 0x1BE9: 84, + 0x1BED: 84, + 0x1BEF: 84, + 0x1BF0: 84, + 0x1BF1: 84, + 0x1C2C: 84, + 0x1C2D: 84, + 0x1C2E: 84, + 0x1C2F: 84, + 0x1C30: 84, + 0x1C31: 84, + 0x1C32: 84, + 0x1C33: 84, + 0x1C36: 84, + 0x1C37: 84, + 0x1CD0: 84, + 0x1CD1: 84, + 0x1CD2: 84, + 0x1CD4: 84, + 0x1CD5: 84, + 0x1CD6: 84, + 0x1CD7: 84, + 0x1CD8: 84, + 0x1CD9: 84, + 0x1CDA: 84, + 0x1CDB: 84, + 0x1CDC: 84, + 0x1CDD: 84, + 0x1CDE: 84, + 0x1CDF: 84, + 0x1CE0: 84, + 0x1CE2: 84, + 0x1CE3: 84, + 0x1CE4: 84, + 0x1CE5: 84, + 0x1CE6: 84, + 0x1CE7: 84, + 0x1CE8: 84, + 0x1CED: 84, + 0x1CF4: 84, + 0x1CF8: 84, + 0x1CF9: 84, + 0x1DC0: 84, + 0x1DC1: 84, + 0x1DC2: 84, + 0x1DC3: 84, + 0x1DC4: 84, + 0x1DC5: 84, + 0x1DC6: 84, + 0x1DC7: 84, + 0x1DC8: 84, + 0x1DC9: 84, + 0x1DCA: 84, + 0x1DCB: 84, + 0x1DCC: 84, + 0x1DCD: 84, + 0x1DCE: 84, + 0x1DCF: 84, + 0x1DD0: 84, + 0x1DD1: 84, + 0x1DD2: 84, + 0x1DD3: 84, + 0x1DD4: 84, + 0x1DD5: 84, + 0x1DD6: 84, + 0x1DD7: 84, + 0x1DD8: 84, + 0x1DD9: 84, + 0x1DDA: 84, + 0x1DDB: 84, + 0x1DDC: 84, + 0x1DDD: 84, + 0x1DDE: 84, + 0x1DDF: 84, + 0x1DE0: 84, + 0x1DE1: 84, + 0x1DE2: 84, + 0x1DE3: 84, + 0x1DE4: 84, + 0x1DE5: 84, + 0x1DE6: 84, + 0x1DE7: 84, + 0x1DE8: 84, + 0x1DE9: 84, + 0x1DEA: 84, + 0x1DEB: 84, + 0x1DEC: 84, + 0x1DED: 84, + 0x1DEE: 84, + 0x1DEF: 84, + 0x1DF0: 84, + 0x1DF1: 84, + 0x1DF2: 84, + 0x1DF3: 84, + 0x1DF4: 84, + 0x1DF5: 84, + 0x1DF6: 84, + 0x1DF7: 84, + 0x1DF8: 84, + 0x1DF9: 84, + 0x1DFA: 84, + 0x1DFB: 84, + 0x1DFC: 84, + 0x1DFD: 84, + 0x1DFE: 84, + 0x1DFF: 84, + 0x200B: 84, + 0x200D: 67, + 0x200E: 84, + 0x200F: 84, + 0x202A: 84, + 0x202B: 84, + 0x202C: 84, + 0x202D: 84, + 0x202E: 84, + 0x2060: 84, + 0x2061: 84, + 0x2062: 84, + 0x2063: 84, + 0x2064: 84, + 0x206A: 84, + 0x206B: 84, + 0x206C: 84, + 0x206D: 84, + 0x206E: 84, + 0x206F: 84, + 0x20D0: 84, + 0x20D1: 84, + 0x20D2: 84, + 0x20D3: 84, + 0x20D4: 84, + 0x20D5: 84, + 0x20D6: 84, + 0x20D7: 84, + 0x20D8: 84, + 0x20D9: 84, + 0x20DA: 84, + 0x20DB: 84, + 0x20DC: 84, + 0x20DD: 84, + 0x20DE: 84, + 0x20DF: 84, + 0x20E0: 84, + 0x20E1: 84, + 0x20E2: 84, + 0x20E3: 84, + 0x20E4: 84, + 0x20E5: 84, + 0x20E6: 84, + 0x20E7: 84, + 0x20E8: 84, + 0x20E9: 84, + 0x20EA: 84, + 0x20EB: 84, + 0x20EC: 84, + 0x20ED: 84, + 0x20EE: 84, + 0x20EF: 84, + 0x20F0: 84, + 0x2CEF: 84, + 0x2CF0: 84, + 0x2CF1: 84, + 0x2D7F: 84, + 0x2DE0: 84, + 0x2DE1: 84, + 0x2DE2: 84, + 0x2DE3: 84, + 0x2DE4: 84, + 0x2DE5: 84, + 0x2DE6: 84, + 0x2DE7: 84, + 0x2DE8: 84, + 0x2DE9: 84, + 0x2DEA: 84, + 0x2DEB: 84, + 0x2DEC: 84, + 0x2DED: 84, + 0x2DEE: 84, + 0x2DEF: 84, + 0x2DF0: 84, + 0x2DF1: 84, + 0x2DF2: 84, + 0x2DF3: 84, + 0x2DF4: 84, + 0x2DF5: 84, + 0x2DF6: 84, + 0x2DF7: 84, + 0x2DF8: 84, + 0x2DF9: 84, + 0x2DFA: 84, + 0x2DFB: 84, + 0x2DFC: 84, + 0x2DFD: 84, + 0x2DFE: 84, + 0x2DFF: 84, + 0x302A: 84, + 0x302B: 84, + 0x302C: 84, + 0x302D: 84, + 0x3099: 84, + 0x309A: 84, + 0xA66F: 84, + 0xA670: 84, + 0xA671: 84, + 0xA672: 84, + 0xA674: 84, + 0xA675: 84, + 0xA676: 84, + 0xA677: 84, + 0xA678: 84, + 0xA679: 84, + 0xA67A: 84, + 0xA67B: 84, + 0xA67C: 84, + 0xA67D: 84, + 0xA69E: 84, + 0xA69F: 84, + 0xA6F0: 84, + 0xA6F1: 84, + 0xA802: 84, + 0xA806: 84, + 0xA80B: 84, + 0xA825: 84, + 0xA826: 84, + 0xA82C: 84, + 0xA840: 68, + 0xA841: 68, + 0xA842: 68, + 0xA843: 68, + 0xA844: 68, + 0xA845: 68, + 0xA846: 68, + 0xA847: 68, + 0xA848: 68, + 0xA849: 68, + 0xA84A: 68, + 0xA84B: 68, + 0xA84C: 68, + 0xA84D: 68, + 0xA84E: 68, + 0xA84F: 68, + 0xA850: 68, + 0xA851: 68, + 0xA852: 68, + 0xA853: 68, + 0xA854: 68, + 0xA855: 68, + 0xA856: 68, + 0xA857: 68, + 0xA858: 68, + 0xA859: 68, + 0xA85A: 68, + 0xA85B: 68, + 0xA85C: 68, + 0xA85D: 68, + 0xA85E: 68, + 0xA85F: 68, + 0xA860: 68, + 0xA861: 68, + 0xA862: 68, + 0xA863: 68, + 0xA864: 68, + 0xA865: 68, + 0xA866: 68, + 0xA867: 68, + 0xA868: 68, + 0xA869: 68, + 0xA86A: 68, + 0xA86B: 68, + 0xA86C: 68, + 0xA86D: 68, + 0xA86E: 68, + 0xA86F: 68, + 0xA870: 68, + 0xA871: 68, + 0xA872: 76, + 0xA8C4: 84, + 0xA8C5: 84, + 0xA8E0: 84, + 0xA8E1: 84, + 0xA8E2: 84, + 0xA8E3: 84, + 0xA8E4: 84, + 0xA8E5: 84, + 0xA8E6: 84, + 0xA8E7: 84, + 0xA8E8: 84, + 0xA8E9: 84, + 0xA8EA: 84, + 0xA8EB: 84, + 0xA8EC: 84, + 0xA8ED: 84, + 0xA8EE: 84, + 0xA8EF: 84, + 0xA8F0: 84, + 0xA8F1: 84, + 0xA8FF: 84, + 0xA926: 84, + 0xA927: 84, + 0xA928: 84, + 0xA929: 84, + 0xA92A: 84, + 0xA92B: 84, + 0xA92C: 84, + 0xA92D: 84, + 0xA947: 84, + 0xA948: 84, + 0xA949: 84, + 0xA94A: 84, + 0xA94B: 84, + 0xA94C: 84, + 0xA94D: 84, + 0xA94E: 84, + 0xA94F: 84, + 0xA950: 84, + 0xA951: 84, + 0xA980: 84, + 0xA981: 84, + 0xA982: 84, + 0xA9B3: 84, + 0xA9B6: 84, + 0xA9B7: 84, + 0xA9B8: 84, + 0xA9B9: 84, + 0xA9BC: 84, + 0xA9BD: 84, + 0xA9E5: 84, + 0xAA29: 84, + 0xAA2A: 84, + 0xAA2B: 84, + 0xAA2C: 84, + 0xAA2D: 84, + 0xAA2E: 84, + 0xAA31: 84, + 0xAA32: 84, + 0xAA35: 84, + 0xAA36: 84, + 0xAA43: 84, + 0xAA4C: 84, + 0xAA7C: 84, + 0xAAB0: 84, + 0xAAB2: 84, + 0xAAB3: 84, + 0xAAB4: 84, + 0xAAB7: 84, + 0xAAB8: 84, + 0xAABE: 84, + 0xAABF: 84, + 0xAAC1: 84, + 0xAAEC: 84, + 0xAAED: 84, + 0xAAF6: 84, + 0xABE5: 84, + 0xABE8: 84, + 0xABED: 84, + 0xFB1E: 84, + 0xFE00: 84, + 0xFE01: 84, + 0xFE02: 84, + 0xFE03: 84, + 0xFE04: 84, + 0xFE05: 84, + 0xFE06: 84, + 0xFE07: 84, + 0xFE08: 84, + 0xFE09: 84, + 0xFE0A: 84, + 0xFE0B: 84, + 0xFE0C: 84, + 0xFE0D: 84, + 0xFE0E: 84, + 0xFE0F: 84, + 0xFE20: 84, + 0xFE21: 84, + 0xFE22: 84, + 0xFE23: 84, + 0xFE24: 84, + 0xFE25: 84, + 0xFE26: 84, + 0xFE27: 84, + 0xFE28: 84, + 0xFE29: 84, + 0xFE2A: 84, + 0xFE2B: 84, + 0xFE2C: 84, + 0xFE2D: 84, + 0xFE2E: 84, + 0xFE2F: 84, + 0xFEFF: 84, + 0xFFF9: 84, + 0xFFFA: 84, + 0xFFFB: 84, + 0x101FD: 84, + 0x102E0: 84, + 0x10376: 84, + 0x10377: 84, + 0x10378: 84, + 0x10379: 84, + 0x1037A: 84, + 0x10A01: 84, + 0x10A02: 84, + 0x10A03: 84, + 0x10A05: 84, + 0x10A06: 84, + 0x10A0C: 84, + 0x10A0D: 84, + 0x10A0E: 84, + 0x10A0F: 84, + 0x10A38: 84, + 0x10A39: 84, + 0x10A3A: 84, + 0x10A3F: 84, + 0x10AC0: 68, + 0x10AC1: 68, + 0x10AC2: 68, + 0x10AC3: 68, + 0x10AC4: 68, + 0x10AC5: 82, + 0x10AC7: 82, + 0x10AC9: 82, + 0x10ACA: 82, + 0x10ACD: 76, + 0x10ACE: 82, + 0x10ACF: 82, + 0x10AD0: 82, + 0x10AD1: 82, + 0x10AD2: 82, + 0x10AD3: 68, + 0x10AD4: 68, + 0x10AD5: 68, + 0x10AD6: 68, + 0x10AD7: 76, + 0x10AD8: 68, + 0x10AD9: 68, + 0x10ADA: 68, + 0x10ADB: 68, + 0x10ADC: 68, + 0x10ADD: 82, + 0x10ADE: 68, + 0x10ADF: 68, + 0x10AE0: 68, + 0x10AE1: 82, + 0x10AE4: 82, + 0x10AE5: 84, + 0x10AE6: 84, + 0x10AEB: 68, + 0x10AEC: 68, + 0x10AED: 68, + 0x10AEE: 68, + 0x10AEF: 82, + 0x10B80: 68, + 0x10B81: 82, + 0x10B82: 68, + 0x10B83: 82, + 0x10B84: 82, + 0x10B85: 82, + 0x10B86: 68, + 0x10B87: 68, + 0x10B88: 68, + 0x10B89: 82, + 0x10B8A: 68, + 0x10B8B: 68, + 0x10B8C: 82, + 0x10B8D: 68, + 0x10B8E: 82, + 0x10B8F: 82, + 0x10B90: 68, + 0x10B91: 82, + 0x10BA9: 82, + 0x10BAA: 82, + 0x10BAB: 82, + 0x10BAC: 82, + 0x10BAD: 68, + 0x10BAE: 68, + 0x10D00: 76, + 0x10D01: 68, + 0x10D02: 68, + 0x10D03: 68, + 0x10D04: 68, + 0x10D05: 68, + 0x10D06: 68, + 0x10D07: 68, + 0x10D08: 68, + 0x10D09: 68, + 0x10D0A: 68, + 0x10D0B: 68, + 0x10D0C: 68, + 0x10D0D: 68, + 0x10D0E: 68, + 0x10D0F: 68, + 0x10D10: 68, + 0x10D11: 68, + 0x10D12: 68, + 0x10D13: 68, + 0x10D14: 68, + 0x10D15: 68, + 0x10D16: 68, + 0x10D17: 68, + 0x10D18: 68, + 0x10D19: 68, + 0x10D1A: 68, + 0x10D1B: 68, + 0x10D1C: 68, + 0x10D1D: 68, + 0x10D1E: 68, + 0x10D1F: 68, + 0x10D20: 68, + 0x10D21: 68, + 0x10D22: 82, + 0x10D23: 68, + 0x10D24: 84, + 0x10D25: 84, + 0x10D26: 84, + 0x10D27: 84, + 0x10EAB: 84, + 0x10EAC: 84, + 0x10EFD: 84, + 0x10EFE: 84, + 0x10EFF: 84, + 0x10F30: 68, + 0x10F31: 68, + 0x10F32: 68, + 0x10F33: 82, + 0x10F34: 68, + 0x10F35: 68, + 0x10F36: 68, + 0x10F37: 68, + 0x10F38: 68, + 0x10F39: 68, + 0x10F3A: 68, + 0x10F3B: 68, + 0x10F3C: 68, + 0x10F3D: 68, + 0x10F3E: 68, + 0x10F3F: 68, + 0x10F40: 68, + 0x10F41: 68, + 0x10F42: 68, + 0x10F43: 68, + 0x10F44: 68, + 0x10F46: 84, + 0x10F47: 84, + 0x10F48: 84, + 0x10F49: 84, + 0x10F4A: 84, + 0x10F4B: 84, + 0x10F4C: 84, + 0x10F4D: 84, + 0x10F4E: 84, + 0x10F4F: 84, + 0x10F50: 84, + 0x10F51: 68, + 0x10F52: 68, + 0x10F53: 68, + 0x10F54: 82, + 0x10F70: 68, + 0x10F71: 68, + 0x10F72: 68, + 0x10F73: 68, + 0x10F74: 82, + 0x10F75: 82, + 0x10F76: 68, + 0x10F77: 68, + 0x10F78: 68, + 0x10F79: 68, + 0x10F7A: 68, + 0x10F7B: 68, + 0x10F7C: 68, + 0x10F7D: 68, + 0x10F7E: 68, + 0x10F7F: 68, + 0x10F80: 68, + 0x10F81: 68, + 0x10F82: 84, + 0x10F83: 84, + 0x10F84: 84, + 0x10F85: 84, + 0x10FB0: 68, + 0x10FB2: 68, + 0x10FB3: 68, + 0x10FB4: 82, + 0x10FB5: 82, + 0x10FB6: 82, + 0x10FB8: 68, + 0x10FB9: 82, + 0x10FBA: 82, + 0x10FBB: 68, + 0x10FBC: 68, + 0x10FBD: 82, + 0x10FBE: 68, + 0x10FBF: 68, + 0x10FC1: 68, + 0x10FC2: 82, + 0x10FC3: 82, + 0x10FC4: 68, + 0x10FC9: 82, + 0x10FCA: 68, + 0x10FCB: 76, + 0x11001: 84, + 0x11038: 84, + 0x11039: 84, + 0x1103A: 84, + 0x1103B: 84, + 0x1103C: 84, + 0x1103D: 84, + 0x1103E: 84, + 0x1103F: 84, + 0x11040: 84, + 0x11041: 84, + 0x11042: 84, + 0x11043: 84, + 0x11044: 84, + 0x11045: 84, + 0x11046: 84, + 0x11070: 84, + 0x11073: 84, + 0x11074: 84, + 0x1107F: 84, + 0x11080: 84, + 0x11081: 84, + 0x110B3: 84, + 0x110B4: 84, + 0x110B5: 84, + 0x110B6: 84, + 0x110B9: 84, + 0x110BA: 84, + 0x110C2: 84, + 0x11100: 84, + 0x11101: 84, + 0x11102: 84, + 0x11127: 84, + 0x11128: 84, + 0x11129: 84, + 0x1112A: 84, + 0x1112B: 84, + 0x1112D: 84, + 0x1112E: 84, + 0x1112F: 84, + 0x11130: 84, + 0x11131: 84, + 0x11132: 84, + 0x11133: 84, + 0x11134: 84, + 0x11173: 84, + 0x11180: 84, + 0x11181: 84, + 0x111B6: 84, + 0x111B7: 84, + 0x111B8: 84, + 0x111B9: 84, + 0x111BA: 84, + 0x111BB: 84, + 0x111BC: 84, + 0x111BD: 84, + 0x111BE: 84, + 0x111C9: 84, + 0x111CA: 84, + 0x111CB: 84, + 0x111CC: 84, + 0x111CF: 84, + 0x1122F: 84, + 0x11230: 84, + 0x11231: 84, + 0x11234: 84, + 0x11236: 84, + 0x11237: 84, + 0x1123E: 84, + 0x11241: 84, + 0x112DF: 84, + 0x112E3: 84, + 0x112E4: 84, + 0x112E5: 84, + 0x112E6: 84, + 0x112E7: 84, + 0x112E8: 84, + 0x112E9: 84, + 0x112EA: 84, + 0x11300: 84, + 0x11301: 84, + 0x1133B: 84, + 0x1133C: 84, + 0x11340: 84, + 0x11366: 84, + 0x11367: 84, + 0x11368: 84, + 0x11369: 84, + 0x1136A: 84, + 0x1136B: 84, + 0x1136C: 84, + 0x11370: 84, + 0x11371: 84, + 0x11372: 84, + 0x11373: 84, + 0x11374: 84, + 0x11438: 84, + 0x11439: 84, + 0x1143A: 84, + 0x1143B: 84, + 0x1143C: 84, + 0x1143D: 84, + 0x1143E: 84, + 0x1143F: 84, + 0x11442: 84, + 0x11443: 84, + 0x11444: 84, + 0x11446: 84, + 0x1145E: 84, + 0x114B3: 84, + 0x114B4: 84, + 0x114B5: 84, + 0x114B6: 84, + 0x114B7: 84, + 0x114B8: 84, + 0x114BA: 84, + 0x114BF: 84, + 0x114C0: 84, + 0x114C2: 84, + 0x114C3: 84, + 0x115B2: 84, + 0x115B3: 84, + 0x115B4: 84, + 0x115B5: 84, + 0x115BC: 84, + 0x115BD: 84, + 0x115BF: 84, + 0x115C0: 84, + 0x115DC: 84, + 0x115DD: 84, + 0x11633: 84, + 0x11634: 84, + 0x11635: 84, + 0x11636: 84, + 0x11637: 84, + 0x11638: 84, + 0x11639: 84, + 0x1163A: 84, + 0x1163D: 84, + 0x1163F: 84, + 0x11640: 84, + 0x116AB: 84, + 0x116AD: 84, + 0x116B0: 84, + 0x116B1: 84, + 0x116B2: 84, + 0x116B3: 84, + 0x116B4: 84, + 0x116B5: 84, + 0x116B7: 84, + 0x1171D: 84, + 0x1171E: 84, + 0x1171F: 84, + 0x11722: 84, + 0x11723: 84, + 0x11724: 84, + 0x11725: 84, + 0x11727: 84, + 0x11728: 84, + 0x11729: 84, + 0x1172A: 84, + 0x1172B: 84, + 0x1182F: 84, + 0x11830: 84, + 0x11831: 84, + 0x11832: 84, + 0x11833: 84, + 0x11834: 84, + 0x11835: 84, + 0x11836: 84, + 0x11837: 84, + 0x11839: 84, + 0x1183A: 84, + 0x1193B: 84, + 0x1193C: 84, + 0x1193E: 84, + 0x11943: 84, + 0x119D4: 84, + 0x119D5: 84, + 0x119D6: 84, + 0x119D7: 84, + 0x119DA: 84, + 0x119DB: 84, + 0x119E0: 84, + 0x11A01: 84, + 0x11A02: 84, + 0x11A03: 84, + 0x11A04: 84, + 0x11A05: 84, + 0x11A06: 84, + 0x11A07: 84, + 0x11A08: 84, + 0x11A09: 84, + 0x11A0A: 84, + 0x11A33: 84, + 0x11A34: 84, + 0x11A35: 84, + 0x11A36: 84, + 0x11A37: 84, + 0x11A38: 84, + 0x11A3B: 84, + 0x11A3C: 84, + 0x11A3D: 84, + 0x11A3E: 84, + 0x11A47: 84, + 0x11A51: 84, + 0x11A52: 84, + 0x11A53: 84, + 0x11A54: 84, + 0x11A55: 84, + 0x11A56: 84, + 0x11A59: 84, + 0x11A5A: 84, + 0x11A5B: 84, + 0x11A8A: 84, + 0x11A8B: 84, + 0x11A8C: 84, + 0x11A8D: 84, + 0x11A8E: 84, + 0x11A8F: 84, + 0x11A90: 84, + 0x11A91: 84, + 0x11A92: 84, + 0x11A93: 84, + 0x11A94: 84, + 0x11A95: 84, + 0x11A96: 84, + 0x11A98: 84, + 0x11A99: 84, + 0x11C30: 84, + 0x11C31: 84, + 0x11C32: 84, + 0x11C33: 84, + 0x11C34: 84, + 0x11C35: 84, + 0x11C36: 84, + 0x11C38: 84, + 0x11C39: 84, + 0x11C3A: 84, + 0x11C3B: 84, + 0x11C3C: 84, + 0x11C3D: 84, + 0x11C3F: 84, + 0x11C92: 84, + 0x11C93: 84, + 0x11C94: 84, + 0x11C95: 84, + 0x11C96: 84, + 0x11C97: 84, + 0x11C98: 84, + 0x11C99: 84, + 0x11C9A: 84, + 0x11C9B: 84, + 0x11C9C: 84, + 0x11C9D: 84, + 0x11C9E: 84, + 0x11C9F: 84, + 0x11CA0: 84, + 0x11CA1: 84, + 0x11CA2: 84, + 0x11CA3: 84, + 0x11CA4: 84, + 0x11CA5: 84, + 0x11CA6: 84, + 0x11CA7: 84, + 0x11CAA: 84, + 0x11CAB: 84, + 0x11CAC: 84, + 0x11CAD: 84, + 0x11CAE: 84, + 0x11CAF: 84, + 0x11CB0: 84, + 0x11CB2: 84, + 0x11CB3: 84, + 0x11CB5: 84, + 0x11CB6: 84, + 0x11D31: 84, + 0x11D32: 84, + 0x11D33: 84, + 0x11D34: 84, + 0x11D35: 84, + 0x11D36: 84, + 0x11D3A: 84, + 0x11D3C: 84, + 0x11D3D: 84, + 0x11D3F: 84, + 0x11D40: 84, + 0x11D41: 84, + 0x11D42: 84, + 0x11D43: 84, + 0x11D44: 84, + 0x11D45: 84, + 0x11D47: 84, + 0x11D90: 84, + 0x11D91: 84, + 0x11D95: 84, + 0x11D97: 84, + 0x11EF3: 84, + 0x11EF4: 84, + 0x11F00: 84, + 0x11F01: 84, + 0x11F36: 84, + 0x11F37: 84, + 0x11F38: 84, + 0x11F39: 84, + 0x11F3A: 84, + 0x11F40: 84, + 0x11F42: 84, + 0x13430: 84, + 0x13431: 84, + 0x13432: 84, + 0x13433: 84, + 0x13434: 84, + 0x13435: 84, + 0x13436: 84, + 0x13437: 84, + 0x13438: 84, + 0x13439: 84, + 0x1343A: 84, + 0x1343B: 84, + 0x1343C: 84, + 0x1343D: 84, + 0x1343E: 84, + 0x1343F: 84, + 0x13440: 84, + 0x13447: 84, + 0x13448: 84, + 0x13449: 84, + 0x1344A: 84, + 0x1344B: 84, + 0x1344C: 84, + 0x1344D: 84, + 0x1344E: 84, + 0x1344F: 84, + 0x13450: 84, + 0x13451: 84, + 0x13452: 84, + 0x13453: 84, + 0x13454: 84, + 0x13455: 84, + 0x16AF0: 84, + 0x16AF1: 84, + 0x16AF2: 84, + 0x16AF3: 84, + 0x16AF4: 84, + 0x16B30: 84, + 0x16B31: 84, + 0x16B32: 84, + 0x16B33: 84, + 0x16B34: 84, + 0x16B35: 84, + 0x16B36: 84, + 0x16F4F: 84, + 0x16F8F: 84, + 0x16F90: 84, + 0x16F91: 84, + 0x16F92: 84, + 0x16FE4: 84, + 0x1BC9D: 84, + 0x1BC9E: 84, + 0x1BCA0: 84, + 0x1BCA1: 84, + 0x1BCA2: 84, + 0x1BCA3: 84, + 0x1CF00: 84, + 0x1CF01: 84, + 0x1CF02: 84, + 0x1CF03: 84, + 0x1CF04: 84, + 0x1CF05: 84, + 0x1CF06: 84, + 0x1CF07: 84, + 0x1CF08: 84, + 0x1CF09: 84, + 0x1CF0A: 84, + 0x1CF0B: 84, + 0x1CF0C: 84, + 0x1CF0D: 84, + 0x1CF0E: 84, + 0x1CF0F: 84, + 0x1CF10: 84, + 0x1CF11: 84, + 0x1CF12: 84, + 0x1CF13: 84, + 0x1CF14: 84, + 0x1CF15: 84, + 0x1CF16: 84, + 0x1CF17: 84, + 0x1CF18: 84, + 0x1CF19: 84, + 0x1CF1A: 84, + 0x1CF1B: 84, + 0x1CF1C: 84, + 0x1CF1D: 84, + 0x1CF1E: 84, + 0x1CF1F: 84, + 0x1CF20: 84, + 0x1CF21: 84, + 0x1CF22: 84, + 0x1CF23: 84, + 0x1CF24: 84, + 0x1CF25: 84, + 0x1CF26: 84, + 0x1CF27: 84, + 0x1CF28: 84, + 0x1CF29: 84, + 0x1CF2A: 84, + 0x1CF2B: 84, + 0x1CF2C: 84, + 0x1CF2D: 84, + 0x1CF30: 84, + 0x1CF31: 84, + 0x1CF32: 84, + 0x1CF33: 84, + 0x1CF34: 84, + 0x1CF35: 84, + 0x1CF36: 84, + 0x1CF37: 84, + 0x1CF38: 84, + 0x1CF39: 84, + 0x1CF3A: 84, + 0x1CF3B: 84, + 0x1CF3C: 84, + 0x1CF3D: 84, + 0x1CF3E: 84, + 0x1CF3F: 84, + 0x1CF40: 84, + 0x1CF41: 84, + 0x1CF42: 84, + 0x1CF43: 84, + 0x1CF44: 84, + 0x1CF45: 84, + 0x1CF46: 84, + 0x1D167: 84, + 0x1D168: 84, + 0x1D169: 84, + 0x1D173: 84, + 0x1D174: 84, + 0x1D175: 84, + 0x1D176: 84, + 0x1D177: 84, + 0x1D178: 84, + 0x1D179: 84, + 0x1D17A: 84, + 0x1D17B: 84, + 0x1D17C: 84, + 0x1D17D: 84, + 0x1D17E: 84, + 0x1D17F: 84, + 0x1D180: 84, + 0x1D181: 84, + 0x1D182: 84, + 0x1D185: 84, + 0x1D186: 84, + 0x1D187: 84, + 0x1D188: 84, + 0x1D189: 84, + 0x1D18A: 84, + 0x1D18B: 84, + 0x1D1AA: 84, + 0x1D1AB: 84, + 0x1D1AC: 84, + 0x1D1AD: 84, + 0x1D242: 84, + 0x1D243: 84, + 0x1D244: 84, + 0x1DA00: 84, + 0x1DA01: 84, + 0x1DA02: 84, + 0x1DA03: 84, + 0x1DA04: 84, + 0x1DA05: 84, + 0x1DA06: 84, + 0x1DA07: 84, + 0x1DA08: 84, + 0x1DA09: 84, + 0x1DA0A: 84, + 0x1DA0B: 84, + 0x1DA0C: 84, + 0x1DA0D: 84, + 0x1DA0E: 84, + 0x1DA0F: 84, + 0x1DA10: 84, + 0x1DA11: 84, + 0x1DA12: 84, + 0x1DA13: 84, + 0x1DA14: 84, + 0x1DA15: 84, + 0x1DA16: 84, + 0x1DA17: 84, + 0x1DA18: 84, + 0x1DA19: 84, + 0x1DA1A: 84, + 0x1DA1B: 84, + 0x1DA1C: 84, + 0x1DA1D: 84, + 0x1DA1E: 84, + 0x1DA1F: 84, + 0x1DA20: 84, + 0x1DA21: 84, + 0x1DA22: 84, + 0x1DA23: 84, + 0x1DA24: 84, + 0x1DA25: 84, + 0x1DA26: 84, + 0x1DA27: 84, + 0x1DA28: 84, + 0x1DA29: 84, + 0x1DA2A: 84, + 0x1DA2B: 84, + 0x1DA2C: 84, + 0x1DA2D: 84, + 0x1DA2E: 84, + 0x1DA2F: 84, + 0x1DA30: 84, + 0x1DA31: 84, + 0x1DA32: 84, + 0x1DA33: 84, + 0x1DA34: 84, + 0x1DA35: 84, + 0x1DA36: 84, + 0x1DA3B: 84, + 0x1DA3C: 84, + 0x1DA3D: 84, + 0x1DA3E: 84, + 0x1DA3F: 84, + 0x1DA40: 84, + 0x1DA41: 84, + 0x1DA42: 84, + 0x1DA43: 84, + 0x1DA44: 84, + 0x1DA45: 84, + 0x1DA46: 84, + 0x1DA47: 84, + 0x1DA48: 84, + 0x1DA49: 84, + 0x1DA4A: 84, + 0x1DA4B: 84, + 0x1DA4C: 84, + 0x1DA4D: 84, + 0x1DA4E: 84, + 0x1DA4F: 84, + 0x1DA50: 84, + 0x1DA51: 84, + 0x1DA52: 84, + 0x1DA53: 84, + 0x1DA54: 84, + 0x1DA55: 84, + 0x1DA56: 84, + 0x1DA57: 84, + 0x1DA58: 84, + 0x1DA59: 84, + 0x1DA5A: 84, + 0x1DA5B: 84, + 0x1DA5C: 84, + 0x1DA5D: 84, + 0x1DA5E: 84, + 0x1DA5F: 84, + 0x1DA60: 84, + 0x1DA61: 84, + 0x1DA62: 84, + 0x1DA63: 84, + 0x1DA64: 84, + 0x1DA65: 84, + 0x1DA66: 84, + 0x1DA67: 84, + 0x1DA68: 84, + 0x1DA69: 84, + 0x1DA6A: 84, + 0x1DA6B: 84, + 0x1DA6C: 84, + 0x1DA75: 84, + 0x1DA84: 84, + 0x1DA9B: 84, + 0x1DA9C: 84, + 0x1DA9D: 84, + 0x1DA9E: 84, + 0x1DA9F: 84, + 0x1DAA1: 84, + 0x1DAA2: 84, + 0x1DAA3: 84, + 0x1DAA4: 84, + 0x1DAA5: 84, + 0x1DAA6: 84, + 0x1DAA7: 84, + 0x1DAA8: 84, + 0x1DAA9: 84, + 0x1DAAA: 84, + 0x1DAAB: 84, + 0x1DAAC: 84, + 0x1DAAD: 84, + 0x1DAAE: 84, + 0x1DAAF: 84, + 0x1E000: 84, + 0x1E001: 84, + 0x1E002: 84, + 0x1E003: 84, + 0x1E004: 84, + 0x1E005: 84, + 0x1E006: 84, + 0x1E008: 84, + 0x1E009: 84, + 0x1E00A: 84, + 0x1E00B: 84, + 0x1E00C: 84, + 0x1E00D: 84, + 0x1E00E: 84, + 0x1E00F: 84, + 0x1E010: 84, + 0x1E011: 84, + 0x1E012: 84, + 0x1E013: 84, + 0x1E014: 84, + 0x1E015: 84, + 0x1E016: 84, + 0x1E017: 84, + 0x1E018: 84, + 0x1E01B: 84, + 0x1E01C: 84, + 0x1E01D: 84, + 0x1E01E: 84, + 0x1E01F: 84, + 0x1E020: 84, + 0x1E021: 84, + 0x1E023: 84, + 0x1E024: 84, + 0x1E026: 84, + 0x1E027: 84, + 0x1E028: 84, + 0x1E029: 84, + 0x1E02A: 84, + 0x1E08F: 84, + 0x1E130: 84, + 0x1E131: 84, + 0x1E132: 84, + 0x1E133: 84, + 0x1E134: 84, + 0x1E135: 84, + 0x1E136: 84, + 0x1E2AE: 84, + 0x1E2EC: 84, + 0x1E2ED: 84, + 0x1E2EE: 84, + 0x1E2EF: 84, + 0x1E4EC: 84, + 0x1E4ED: 84, + 0x1E4EE: 84, + 0x1E4EF: 84, + 0x1E8D0: 84, + 0x1E8D1: 84, + 0x1E8D2: 84, + 0x1E8D3: 84, + 0x1E8D4: 84, + 0x1E8D5: 84, + 0x1E8D6: 84, + 0x1E900: 68, + 0x1E901: 68, + 0x1E902: 68, + 0x1E903: 68, + 0x1E904: 68, + 0x1E905: 68, + 0x1E906: 68, + 0x1E907: 68, + 0x1E908: 68, + 0x1E909: 68, + 0x1E90A: 68, + 0x1E90B: 68, + 0x1E90C: 68, + 0x1E90D: 68, + 0x1E90E: 68, + 0x1E90F: 68, + 0x1E910: 68, + 0x1E911: 68, + 0x1E912: 68, + 0x1E913: 68, + 0x1E914: 68, + 0x1E915: 68, + 0x1E916: 68, + 0x1E917: 68, + 0x1E918: 68, + 0x1E919: 68, + 0x1E91A: 68, + 0x1E91B: 68, + 0x1E91C: 68, + 0x1E91D: 68, + 0x1E91E: 68, + 0x1E91F: 68, + 0x1E920: 68, + 0x1E921: 68, + 0x1E922: 68, + 0x1E923: 68, + 0x1E924: 68, + 0x1E925: 68, + 0x1E926: 68, + 0x1E927: 68, + 0x1E928: 68, + 0x1E929: 68, + 0x1E92A: 68, + 0x1E92B: 68, + 0x1E92C: 68, + 0x1E92D: 68, + 0x1E92E: 68, + 0x1E92F: 68, + 0x1E930: 68, + 0x1E931: 68, + 0x1E932: 68, + 0x1E933: 68, + 0x1E934: 68, + 0x1E935: 68, + 0x1E936: 68, + 0x1E937: 68, + 0x1E938: 68, + 0x1E939: 68, + 0x1E93A: 68, + 0x1E93B: 68, + 0x1E93C: 68, + 0x1E93D: 68, + 0x1E93E: 68, + 0x1E93F: 68, + 0x1E940: 68, + 0x1E941: 68, + 0x1E942: 68, + 0x1E943: 68, + 0x1E944: 84, + 0x1E945: 84, + 0x1E946: 84, + 0x1E947: 84, + 0x1E948: 84, + 0x1E949: 84, + 0x1E94A: 84, + 0x1E94B: 84, + 0xE0001: 84, + 0xE0020: 84, + 0xE0021: 84, + 0xE0022: 84, + 0xE0023: 84, + 0xE0024: 84, + 0xE0025: 84, + 0xE0026: 84, + 0xE0027: 84, + 0xE0028: 84, + 0xE0029: 84, + 0xE002A: 84, + 0xE002B: 84, + 0xE002C: 84, + 0xE002D: 84, + 0xE002E: 84, + 0xE002F: 84, + 0xE0030: 84, + 0xE0031: 84, + 0xE0032: 84, + 0xE0033: 84, + 0xE0034: 84, + 0xE0035: 84, + 0xE0036: 84, + 0xE0037: 84, + 0xE0038: 84, + 0xE0039: 84, + 0xE003A: 84, + 0xE003B: 84, + 0xE003C: 84, + 0xE003D: 84, + 0xE003E: 84, + 0xE003F: 84, + 0xE0040: 84, + 0xE0041: 84, + 0xE0042: 84, + 0xE0043: 84, + 0xE0044: 84, + 0xE0045: 84, + 0xE0046: 84, + 0xE0047: 84, + 0xE0048: 84, + 0xE0049: 84, + 0xE004A: 84, + 0xE004B: 84, + 0xE004C: 84, + 0xE004D: 84, + 0xE004E: 84, + 0xE004F: 84, + 0xE0050: 84, + 0xE0051: 84, + 0xE0052: 84, + 0xE0053: 84, + 0xE0054: 84, + 0xE0055: 84, + 0xE0056: 84, + 0xE0057: 84, + 0xE0058: 84, + 0xE0059: 84, + 0xE005A: 84, + 0xE005B: 84, + 0xE005C: 84, + 0xE005D: 84, + 0xE005E: 84, + 0xE005F: 84, + 0xE0060: 84, + 0xE0061: 84, + 0xE0062: 84, + 0xE0063: 84, + 0xE0064: 84, + 0xE0065: 84, + 0xE0066: 84, + 0xE0067: 84, + 0xE0068: 84, + 0xE0069: 84, + 0xE006A: 84, + 0xE006B: 84, + 0xE006C: 84, + 0xE006D: 84, + 0xE006E: 84, + 0xE006F: 84, + 0xE0070: 84, + 0xE0071: 84, + 0xE0072: 84, + 0xE0073: 84, + 0xE0074: 84, + 0xE0075: 84, + 0xE0076: 84, + 0xE0077: 84, + 0xE0078: 84, + 0xE0079: 84, + 0xE007A: 84, + 0xE007B: 84, + 0xE007C: 84, + 0xE007D: 84, + 0xE007E: 84, + 0xE007F: 84, + 0xE0100: 84, + 0xE0101: 84, + 0xE0102: 84, + 0xE0103: 84, + 0xE0104: 84, + 0xE0105: 84, + 0xE0106: 84, + 0xE0107: 84, + 0xE0108: 84, + 0xE0109: 84, + 0xE010A: 84, + 0xE010B: 84, + 0xE010C: 84, + 0xE010D: 84, + 0xE010E: 84, + 0xE010F: 84, + 0xE0110: 84, + 0xE0111: 84, + 0xE0112: 84, + 0xE0113: 84, + 0xE0114: 84, + 0xE0115: 84, + 0xE0116: 84, + 0xE0117: 84, + 0xE0118: 84, + 0xE0119: 84, + 0xE011A: 84, + 0xE011B: 84, + 0xE011C: 84, + 0xE011D: 84, + 0xE011E: 84, + 0xE011F: 84, + 0xE0120: 84, + 0xE0121: 84, + 0xE0122: 84, + 0xE0123: 84, + 0xE0124: 84, + 0xE0125: 84, + 0xE0126: 84, + 0xE0127: 84, + 0xE0128: 84, + 0xE0129: 84, + 0xE012A: 84, + 0xE012B: 84, + 0xE012C: 84, + 0xE012D: 84, + 0xE012E: 84, + 0xE012F: 84, + 0xE0130: 84, + 0xE0131: 84, + 0xE0132: 84, + 0xE0133: 84, + 0xE0134: 84, + 0xE0135: 84, + 0xE0136: 84, + 0xE0137: 84, + 0xE0138: 84, + 0xE0139: 84, + 0xE013A: 84, + 0xE013B: 84, + 0xE013C: 84, + 0xE013D: 84, + 0xE013E: 84, + 0xE013F: 84, + 0xE0140: 84, + 0xE0141: 84, + 0xE0142: 84, + 0xE0143: 84, + 0xE0144: 84, + 0xE0145: 84, + 0xE0146: 84, + 0xE0147: 84, + 0xE0148: 84, + 0xE0149: 84, + 0xE014A: 84, + 0xE014B: 84, + 0xE014C: 84, + 0xE014D: 84, + 0xE014E: 84, + 0xE014F: 84, + 0xE0150: 84, + 0xE0151: 84, + 0xE0152: 84, + 0xE0153: 84, + 0xE0154: 84, + 0xE0155: 84, + 0xE0156: 84, + 0xE0157: 84, + 0xE0158: 84, + 0xE0159: 84, + 0xE015A: 84, + 0xE015B: 84, + 0xE015C: 84, + 0xE015D: 84, + 0xE015E: 84, + 0xE015F: 84, + 0xE0160: 84, + 0xE0161: 84, + 0xE0162: 84, + 0xE0163: 84, + 0xE0164: 84, + 0xE0165: 84, + 0xE0166: 84, + 0xE0167: 84, + 0xE0168: 84, + 0xE0169: 84, + 0xE016A: 84, + 0xE016B: 84, + 0xE016C: 84, + 0xE016D: 84, + 0xE016E: 84, + 0xE016F: 84, + 0xE0170: 84, + 0xE0171: 84, + 0xE0172: 84, + 0xE0173: 84, + 0xE0174: 84, + 0xE0175: 84, + 0xE0176: 84, + 0xE0177: 84, + 0xE0178: 84, + 0xE0179: 84, + 0xE017A: 84, + 0xE017B: 84, + 0xE017C: 84, + 0xE017D: 84, + 0xE017E: 84, + 0xE017F: 84, + 0xE0180: 84, + 0xE0181: 84, + 0xE0182: 84, + 0xE0183: 84, + 0xE0184: 84, + 0xE0185: 84, + 0xE0186: 84, + 0xE0187: 84, + 0xE0188: 84, + 0xE0189: 84, + 0xE018A: 84, + 0xE018B: 84, + 0xE018C: 84, + 0xE018D: 84, + 0xE018E: 84, + 0xE018F: 84, + 0xE0190: 84, + 0xE0191: 84, + 0xE0192: 84, + 0xE0193: 84, + 0xE0194: 84, + 0xE0195: 84, + 0xE0196: 84, + 0xE0197: 84, + 0xE0198: 84, + 0xE0199: 84, + 0xE019A: 84, + 0xE019B: 84, + 0xE019C: 84, + 0xE019D: 84, + 0xE019E: 84, + 0xE019F: 84, + 0xE01A0: 84, + 0xE01A1: 84, + 0xE01A2: 84, + 0xE01A3: 84, + 0xE01A4: 84, + 0xE01A5: 84, + 0xE01A6: 84, + 0xE01A7: 84, + 0xE01A8: 84, + 0xE01A9: 84, + 0xE01AA: 84, + 0xE01AB: 84, + 0xE01AC: 84, + 0xE01AD: 84, + 0xE01AE: 84, + 0xE01AF: 84, + 0xE01B0: 84, + 0xE01B1: 84, + 0xE01B2: 84, + 0xE01B3: 84, + 0xE01B4: 84, + 0xE01B5: 84, + 0xE01B6: 84, + 0xE01B7: 84, + 0xE01B8: 84, + 0xE01B9: 84, + 0xE01BA: 84, + 0xE01BB: 84, + 0xE01BC: 84, + 0xE01BD: 84, + 0xE01BE: 84, + 0xE01BF: 84, + 0xE01C0: 84, + 0xE01C1: 84, + 0xE01C2: 84, + 0xE01C3: 84, + 0xE01C4: 84, + 0xE01C5: 84, + 0xE01C6: 84, + 0xE01C7: 84, + 0xE01C8: 84, + 0xE01C9: 84, + 0xE01CA: 84, + 0xE01CB: 84, + 0xE01CC: 84, + 0xE01CD: 84, + 0xE01CE: 84, + 0xE01CF: 84, + 0xE01D0: 84, + 0xE01D1: 84, + 0xE01D2: 84, + 0xE01D3: 84, + 0xE01D4: 84, + 0xE01D5: 84, + 0xE01D6: 84, + 0xE01D7: 84, + 0xE01D8: 84, + 0xE01D9: 84, + 0xE01DA: 84, + 0xE01DB: 84, + 0xE01DC: 84, + 0xE01DD: 84, + 0xE01DE: 84, + 0xE01DF: 84, + 0xE01E0: 84, + 0xE01E1: 84, + 0xE01E2: 84, + 0xE01E3: 84, + 0xE01E4: 84, + 0xE01E5: 84, + 0xE01E6: 84, + 0xE01E7: 84, + 0xE01E8: 84, + 0xE01E9: 84, + 0xE01EA: 84, + 0xE01EB: 84, + 0xE01EC: 84, + 0xE01ED: 84, + 0xE01EE: 84, + 0xE01EF: 84, } codepoint_classes = { - 'PVALID': ( - 0x2d0000002e, - 0x300000003a, - 0x610000007b, - 0xdf000000f7, - 0xf800000100, + "PVALID": ( + 0x2D0000002E, + 0x300000003A, + 0x610000007B, + 0xDF000000F7, + 0xF800000100, 0x10100000102, 0x10300000104, 0x10500000106, 0x10700000108, - 0x1090000010a, - 0x10b0000010c, - 0x10d0000010e, - 0x10f00000110, + 0x1090000010A, + 0x10B0000010C, + 0x10D0000010E, + 0x10F00000110, 0x11100000112, 0x11300000114, 0x11500000116, 0x11700000118, - 0x1190000011a, - 0x11b0000011c, - 0x11d0000011e, - 0x11f00000120, + 0x1190000011A, + 0x11B0000011C, + 0x11D0000011E, + 0x11F00000120, 0x12100000122, 0x12300000124, 0x12500000126, 0x12700000128, - 0x1290000012a, - 0x12b0000012c, - 0x12d0000012e, - 0x12f00000130, + 0x1290000012A, + 0x12B0000012C, + 0x12D0000012E, + 0x12F00000130, 0x13100000132, 0x13500000136, 0x13700000139, - 0x13a0000013b, - 0x13c0000013d, - 0x13e0000013f, + 0x13A0000013B, + 0x13C0000013D, + 0x13E0000013F, 0x14200000143, 0x14400000145, 0x14600000147, 0x14800000149, - 0x14b0000014c, - 0x14d0000014e, - 0x14f00000150, + 0x14B0000014C, + 0x14D0000014E, + 0x14F00000150, 0x15100000152, 0x15300000154, 0x15500000156, 0x15700000158, - 0x1590000015a, - 0x15b0000015c, - 0x15d0000015e, - 0x15f00000160, + 0x1590000015A, + 0x15B0000015C, + 0x15D0000015E, + 0x15F00000160, 0x16100000162, 0x16300000164, 0x16500000166, 0x16700000168, - 0x1690000016a, - 0x16b0000016c, - 0x16d0000016e, - 0x16f00000170, + 0x1690000016A, + 0x16B0000016C, + 0x16D0000016E, + 0x16F00000170, 0x17100000172, 0x17300000174, 0x17500000176, 0x17700000178, - 0x17a0000017b, - 0x17c0000017d, - 0x17e0000017f, + 0x17A0000017B, + 0x17C0000017D, + 0x17E0000017F, 0x18000000181, 0x18300000184, 0x18500000186, 0x18800000189, - 0x18c0000018e, + 0x18C0000018E, 0x19200000193, 0x19500000196, - 0x1990000019c, - 0x19e0000019f, - 0x1a1000001a2, - 0x1a3000001a4, - 0x1a5000001a6, - 0x1a8000001a9, - 0x1aa000001ac, - 0x1ad000001ae, - 0x1b0000001b1, - 0x1b4000001b5, - 0x1b6000001b7, - 0x1b9000001bc, - 0x1bd000001c4, - 0x1ce000001cf, - 0x1d0000001d1, - 0x1d2000001d3, - 0x1d4000001d5, - 0x1d6000001d7, - 0x1d8000001d9, - 0x1da000001db, - 0x1dc000001de, - 0x1df000001e0, - 0x1e1000001e2, - 0x1e3000001e4, - 0x1e5000001e6, - 0x1e7000001e8, - 0x1e9000001ea, - 0x1eb000001ec, - 0x1ed000001ee, - 0x1ef000001f1, - 0x1f5000001f6, - 0x1f9000001fa, - 0x1fb000001fc, - 0x1fd000001fe, - 0x1ff00000200, + 0x1990000019C, + 0x19E0000019F, + 0x1A1000001A2, + 0x1A3000001A4, + 0x1A5000001A6, + 0x1A8000001A9, + 0x1AA000001AC, + 0x1AD000001AE, + 0x1B0000001B1, + 0x1B4000001B5, + 0x1B6000001B7, + 0x1B9000001BC, + 0x1BD000001C4, + 0x1CE000001CF, + 0x1D0000001D1, + 0x1D2000001D3, + 0x1D4000001D5, + 0x1D6000001D7, + 0x1D8000001D9, + 0x1DA000001DB, + 0x1DC000001DE, + 0x1DF000001E0, + 0x1E1000001E2, + 0x1E3000001E4, + 0x1E5000001E6, + 0x1E7000001E8, + 0x1E9000001EA, + 0x1EB000001EC, + 0x1ED000001EE, + 0x1EF000001F1, + 0x1F5000001F6, + 0x1F9000001FA, + 0x1FB000001FC, + 0x1FD000001FE, + 0x1FF00000200, 0x20100000202, 0x20300000204, 0x20500000206, 0x20700000208, - 0x2090000020a, - 0x20b0000020c, - 0x20d0000020e, - 0x20f00000210, + 0x2090000020A, + 0x20B0000020C, + 0x20D0000020E, + 0x20F00000210, 0x21100000212, 0x21300000214, 0x21500000216, 0x21700000218, - 0x2190000021a, - 0x21b0000021c, - 0x21d0000021e, - 0x21f00000220, + 0x2190000021A, + 0x21B0000021C, + 0x21D0000021E, + 0x21F00000220, 0x22100000222, 0x22300000224, 0x22500000226, 0x22700000228, - 0x2290000022a, - 0x22b0000022c, - 0x22d0000022e, - 0x22f00000230, + 0x2290000022A, + 0x22B0000022C, + 0x22D0000022E, + 0x22F00000230, 0x23100000232, - 0x2330000023a, - 0x23c0000023d, - 0x23f00000241, + 0x2330000023A, + 0x23C0000023D, + 0x23F00000241, 0x24200000243, 0x24700000248, - 0x2490000024a, - 0x24b0000024c, - 0x24d0000024e, - 0x24f000002b0, - 0x2b9000002c2, - 0x2c6000002d2, - 0x2ec000002ed, - 0x2ee000002ef, + 0x2490000024A, + 0x24B0000024C, + 0x24D0000024E, + 0x24F000002B0, + 0x2B9000002C2, + 0x2C6000002D2, + 0x2EC000002ED, + 0x2EE000002EF, 0x30000000340, 0x34200000343, - 0x3460000034f, + 0x3460000034F, 0x35000000370, 0x37100000372, 0x37300000374, 0x37700000378, - 0x37b0000037e, + 0x37B0000037E, 0x39000000391, - 0x3ac000003cf, - 0x3d7000003d8, - 0x3d9000003da, - 0x3db000003dc, - 0x3dd000003de, - 0x3df000003e0, - 0x3e1000003e2, - 0x3e3000003e4, - 0x3e5000003e6, - 0x3e7000003e8, - 0x3e9000003ea, - 0x3eb000003ec, - 0x3ed000003ee, - 0x3ef000003f0, - 0x3f3000003f4, - 0x3f8000003f9, - 0x3fb000003fd, + 0x3AC000003CF, + 0x3D7000003D8, + 0x3D9000003DA, + 0x3DB000003DC, + 0x3DD000003DE, + 0x3DF000003E0, + 0x3E1000003E2, + 0x3E3000003E4, + 0x3E5000003E6, + 0x3E7000003E8, + 0x3E9000003EA, + 0x3EB000003EC, + 0x3ED000003EE, + 0x3EF000003F0, + 0x3F3000003F4, + 0x3F8000003F9, + 0x3FB000003FD, 0x43000000460, 0x46100000462, 0x46300000464, 0x46500000466, 0x46700000468, - 0x4690000046a, - 0x46b0000046c, - 0x46d0000046e, - 0x46f00000470, + 0x4690000046A, + 0x46B0000046C, + 0x46D0000046E, + 0x46F00000470, 0x47100000472, 0x47300000474, 0x47500000476, 0x47700000478, - 0x4790000047a, - 0x47b0000047c, - 0x47d0000047e, - 0x47f00000480, + 0x4790000047A, + 0x47B0000047C, + 0x47D0000047E, + 0x47F00000480, 0x48100000482, 0x48300000488, - 0x48b0000048c, - 0x48d0000048e, - 0x48f00000490, + 0x48B0000048C, + 0x48D0000048E, + 0x48F00000490, 0x49100000492, 0x49300000494, 0x49500000496, 0x49700000498, - 0x4990000049a, - 0x49b0000049c, - 0x49d0000049e, - 0x49f000004a0, - 0x4a1000004a2, - 0x4a3000004a4, - 0x4a5000004a6, - 0x4a7000004a8, - 0x4a9000004aa, - 0x4ab000004ac, - 0x4ad000004ae, - 0x4af000004b0, - 0x4b1000004b2, - 0x4b3000004b4, - 0x4b5000004b6, - 0x4b7000004b8, - 0x4b9000004ba, - 0x4bb000004bc, - 0x4bd000004be, - 0x4bf000004c0, - 0x4c2000004c3, - 0x4c4000004c5, - 0x4c6000004c7, - 0x4c8000004c9, - 0x4ca000004cb, - 0x4cc000004cd, - 0x4ce000004d0, - 0x4d1000004d2, - 0x4d3000004d4, - 0x4d5000004d6, - 0x4d7000004d8, - 0x4d9000004da, - 0x4db000004dc, - 0x4dd000004de, - 0x4df000004e0, - 0x4e1000004e2, - 0x4e3000004e4, - 0x4e5000004e6, - 0x4e7000004e8, - 0x4e9000004ea, - 0x4eb000004ec, - 0x4ed000004ee, - 0x4ef000004f0, - 0x4f1000004f2, - 0x4f3000004f4, - 0x4f5000004f6, - 0x4f7000004f8, - 0x4f9000004fa, - 0x4fb000004fc, - 0x4fd000004fe, - 0x4ff00000500, + 0x4990000049A, + 0x49B0000049C, + 0x49D0000049E, + 0x49F000004A0, + 0x4A1000004A2, + 0x4A3000004A4, + 0x4A5000004A6, + 0x4A7000004A8, + 0x4A9000004AA, + 0x4AB000004AC, + 0x4AD000004AE, + 0x4AF000004B0, + 0x4B1000004B2, + 0x4B3000004B4, + 0x4B5000004B6, + 0x4B7000004B8, + 0x4B9000004BA, + 0x4BB000004BC, + 0x4BD000004BE, + 0x4BF000004C0, + 0x4C2000004C3, + 0x4C4000004C5, + 0x4C6000004C7, + 0x4C8000004C9, + 0x4CA000004CB, + 0x4CC000004CD, + 0x4CE000004D0, + 0x4D1000004D2, + 0x4D3000004D4, + 0x4D5000004D6, + 0x4D7000004D8, + 0x4D9000004DA, + 0x4DB000004DC, + 0x4DD000004DE, + 0x4DF000004E0, + 0x4E1000004E2, + 0x4E3000004E4, + 0x4E5000004E6, + 0x4E7000004E8, + 0x4E9000004EA, + 0x4EB000004EC, + 0x4ED000004EE, + 0x4EF000004F0, + 0x4F1000004F2, + 0x4F3000004F4, + 0x4F5000004F6, + 0x4F7000004F8, + 0x4F9000004FA, + 0x4FB000004FC, + 0x4FD000004FE, + 0x4FF00000500, 0x50100000502, 0x50300000504, 0x50500000506, 0x50700000508, - 0x5090000050a, - 0x50b0000050c, - 0x50d0000050e, - 0x50f00000510, + 0x5090000050A, + 0x50B0000050C, + 0x50D0000050E, + 0x50F00000510, 0x51100000512, 0x51300000514, 0x51500000516, 0x51700000518, - 0x5190000051a, - 0x51b0000051c, - 0x51d0000051e, - 0x51f00000520, + 0x5190000051A, + 0x51B0000051C, + 0x51D0000051E, + 0x51F00000520, 0x52100000522, 0x52300000524, 0x52500000526, 0x52700000528, - 0x5290000052a, - 0x52b0000052c, - 0x52d0000052e, - 0x52f00000530, - 0x5590000055a, + 0x5290000052A, + 0x52B0000052C, + 0x52D0000052E, + 0x52F00000530, + 0x5590000055A, 0x56000000587, 0x58800000589, - 0x591000005be, - 0x5bf000005c0, - 0x5c1000005c3, - 0x5c4000005c6, - 0x5c7000005c8, - 0x5d0000005eb, - 0x5ef000005f3, - 0x6100000061b, + 0x591000005BE, + 0x5BF000005C0, + 0x5C1000005C3, + 0x5C4000005C6, + 0x5C7000005C8, + 0x5D0000005EB, + 0x5EF000005F3, + 0x6100000061B, 0x62000000640, 0x64100000660, - 0x66e00000675, - 0x679000006d4, - 0x6d5000006dd, - 0x6df000006e9, - 0x6ea000006f0, - 0x6fa00000700, - 0x7100000074b, - 0x74d000007b2, - 0x7c0000007f6, - 0x7fd000007fe, - 0x8000000082e, - 0x8400000085c, - 0x8600000086b, + 0x66E00000675, + 0x679000006D4, + 0x6D5000006DD, + 0x6DF000006E9, + 0x6EA000006F0, + 0x6FA00000700, + 0x7100000074B, + 0x74D000007B2, + 0x7C0000007F6, + 0x7FD000007FE, + 0x8000000082E, + 0x8400000085C, + 0x8600000086B, 0x87000000888, - 0x8890000088f, - 0x898000008e2, - 0x8e300000958, + 0x8890000088F, + 0x898000008E2, + 0x8E300000958, 0x96000000964, 0x96600000970, 0x97100000984, - 0x9850000098d, - 0x98f00000991, - 0x993000009a9, - 0x9aa000009b1, - 0x9b2000009b3, - 0x9b6000009ba, - 0x9bc000009c5, - 0x9c7000009c9, - 0x9cb000009cf, - 0x9d7000009d8, - 0x9e0000009e4, - 0x9e6000009f2, - 0x9fc000009fd, - 0x9fe000009ff, - 0xa0100000a04, - 0xa0500000a0b, - 0xa0f00000a11, - 0xa1300000a29, - 0xa2a00000a31, - 0xa3200000a33, - 0xa3500000a36, - 0xa3800000a3a, - 0xa3c00000a3d, - 0xa3e00000a43, - 0xa4700000a49, - 0xa4b00000a4e, - 0xa5100000a52, - 0xa5c00000a5d, - 0xa6600000a76, - 0xa8100000a84, - 0xa8500000a8e, - 0xa8f00000a92, - 0xa9300000aa9, - 0xaaa00000ab1, - 0xab200000ab4, - 0xab500000aba, - 0xabc00000ac6, - 0xac700000aca, - 0xacb00000ace, - 0xad000000ad1, - 0xae000000ae4, - 0xae600000af0, - 0xaf900000b00, - 0xb0100000b04, - 0xb0500000b0d, - 0xb0f00000b11, - 0xb1300000b29, - 0xb2a00000b31, - 0xb3200000b34, - 0xb3500000b3a, - 0xb3c00000b45, - 0xb4700000b49, - 0xb4b00000b4e, - 0xb5500000b58, - 0xb5f00000b64, - 0xb6600000b70, - 0xb7100000b72, - 0xb8200000b84, - 0xb8500000b8b, - 0xb8e00000b91, - 0xb9200000b96, - 0xb9900000b9b, - 0xb9c00000b9d, - 0xb9e00000ba0, - 0xba300000ba5, - 0xba800000bab, - 0xbae00000bba, - 0xbbe00000bc3, - 0xbc600000bc9, - 0xbca00000bce, - 0xbd000000bd1, - 0xbd700000bd8, - 0xbe600000bf0, - 0xc0000000c0d, - 0xc0e00000c11, - 0xc1200000c29, - 0xc2a00000c3a, - 0xc3c00000c45, - 0xc4600000c49, - 0xc4a00000c4e, - 0xc5500000c57, - 0xc5800000c5b, - 0xc5d00000c5e, - 0xc6000000c64, - 0xc6600000c70, - 0xc8000000c84, - 0xc8500000c8d, - 0xc8e00000c91, - 0xc9200000ca9, - 0xcaa00000cb4, - 0xcb500000cba, - 0xcbc00000cc5, - 0xcc600000cc9, - 0xcca00000cce, - 0xcd500000cd7, - 0xcdd00000cdf, - 0xce000000ce4, - 0xce600000cf0, - 0xcf100000cf4, - 0xd0000000d0d, - 0xd0e00000d11, - 0xd1200000d45, - 0xd4600000d49, - 0xd4a00000d4f, - 0xd5400000d58, - 0xd5f00000d64, - 0xd6600000d70, - 0xd7a00000d80, - 0xd8100000d84, - 0xd8500000d97, - 0xd9a00000db2, - 0xdb300000dbc, - 0xdbd00000dbe, - 0xdc000000dc7, - 0xdca00000dcb, - 0xdcf00000dd5, - 0xdd600000dd7, - 0xdd800000de0, - 0xde600000df0, - 0xdf200000df4, - 0xe0100000e33, - 0xe3400000e3b, - 0xe4000000e4f, - 0xe5000000e5a, - 0xe8100000e83, - 0xe8400000e85, - 0xe8600000e8b, - 0xe8c00000ea4, - 0xea500000ea6, - 0xea700000eb3, - 0xeb400000ebe, - 0xec000000ec5, - 0xec600000ec7, - 0xec800000ecf, - 0xed000000eda, - 0xede00000ee0, - 0xf0000000f01, - 0xf0b00000f0c, - 0xf1800000f1a, - 0xf2000000f2a, - 0xf3500000f36, - 0xf3700000f38, - 0xf3900000f3a, - 0xf3e00000f43, - 0xf4400000f48, - 0xf4900000f4d, - 0xf4e00000f52, - 0xf5300000f57, - 0xf5800000f5c, - 0xf5d00000f69, - 0xf6a00000f6d, - 0xf7100000f73, - 0xf7400000f75, - 0xf7a00000f81, - 0xf8200000f85, - 0xf8600000f93, - 0xf9400000f98, - 0xf9900000f9d, - 0xf9e00000fa2, - 0xfa300000fa7, - 0xfa800000fac, - 0xfad00000fb9, - 0xfba00000fbd, - 0xfc600000fc7, - 0x10000000104a, - 0x10500000109e, - 0x10d0000010fb, - 0x10fd00001100, + 0x9850000098D, + 0x98F00000991, + 0x993000009A9, + 0x9AA000009B1, + 0x9B2000009B3, + 0x9B6000009BA, + 0x9BC000009C5, + 0x9C7000009C9, + 0x9CB000009CF, + 0x9D7000009D8, + 0x9E0000009E4, + 0x9E6000009F2, + 0x9FC000009FD, + 0x9FE000009FF, + 0xA0100000A04, + 0xA0500000A0B, + 0xA0F00000A11, + 0xA1300000A29, + 0xA2A00000A31, + 0xA3200000A33, + 0xA3500000A36, + 0xA3800000A3A, + 0xA3C00000A3D, + 0xA3E00000A43, + 0xA4700000A49, + 0xA4B00000A4E, + 0xA5100000A52, + 0xA5C00000A5D, + 0xA6600000A76, + 0xA8100000A84, + 0xA8500000A8E, + 0xA8F00000A92, + 0xA9300000AA9, + 0xAAA00000AB1, + 0xAB200000AB4, + 0xAB500000ABA, + 0xABC00000AC6, + 0xAC700000ACA, + 0xACB00000ACE, + 0xAD000000AD1, + 0xAE000000AE4, + 0xAE600000AF0, + 0xAF900000B00, + 0xB0100000B04, + 0xB0500000B0D, + 0xB0F00000B11, + 0xB1300000B29, + 0xB2A00000B31, + 0xB3200000B34, + 0xB3500000B3A, + 0xB3C00000B45, + 0xB4700000B49, + 0xB4B00000B4E, + 0xB5500000B58, + 0xB5F00000B64, + 0xB6600000B70, + 0xB7100000B72, + 0xB8200000B84, + 0xB8500000B8B, + 0xB8E00000B91, + 0xB9200000B96, + 0xB9900000B9B, + 0xB9C00000B9D, + 0xB9E00000BA0, + 0xBA300000BA5, + 0xBA800000BAB, + 0xBAE00000BBA, + 0xBBE00000BC3, + 0xBC600000BC9, + 0xBCA00000BCE, + 0xBD000000BD1, + 0xBD700000BD8, + 0xBE600000BF0, + 0xC0000000C0D, + 0xC0E00000C11, + 0xC1200000C29, + 0xC2A00000C3A, + 0xC3C00000C45, + 0xC4600000C49, + 0xC4A00000C4E, + 0xC5500000C57, + 0xC5800000C5B, + 0xC5D00000C5E, + 0xC6000000C64, + 0xC6600000C70, + 0xC8000000C84, + 0xC8500000C8D, + 0xC8E00000C91, + 0xC9200000CA9, + 0xCAA00000CB4, + 0xCB500000CBA, + 0xCBC00000CC5, + 0xCC600000CC9, + 0xCCA00000CCE, + 0xCD500000CD7, + 0xCDD00000CDF, + 0xCE000000CE4, + 0xCE600000CF0, + 0xCF100000CF4, + 0xD0000000D0D, + 0xD0E00000D11, + 0xD1200000D45, + 0xD4600000D49, + 0xD4A00000D4F, + 0xD5400000D58, + 0xD5F00000D64, + 0xD6600000D70, + 0xD7A00000D80, + 0xD8100000D84, + 0xD8500000D97, + 0xD9A00000DB2, + 0xDB300000DBC, + 0xDBD00000DBE, + 0xDC000000DC7, + 0xDCA00000DCB, + 0xDCF00000DD5, + 0xDD600000DD7, + 0xDD800000DE0, + 0xDE600000DF0, + 0xDF200000DF4, + 0xE0100000E33, + 0xE3400000E3B, + 0xE4000000E4F, + 0xE5000000E5A, + 0xE8100000E83, + 0xE8400000E85, + 0xE8600000E8B, + 0xE8C00000EA4, + 0xEA500000EA6, + 0xEA700000EB3, + 0xEB400000EBE, + 0xEC000000EC5, + 0xEC600000EC7, + 0xEC800000ECF, + 0xED000000EDA, + 0xEDE00000EE0, + 0xF0000000F01, + 0xF0B00000F0C, + 0xF1800000F1A, + 0xF2000000F2A, + 0xF3500000F36, + 0xF3700000F38, + 0xF3900000F3A, + 0xF3E00000F43, + 0xF4400000F48, + 0xF4900000F4D, + 0xF4E00000F52, + 0xF5300000F57, + 0xF5800000F5C, + 0xF5D00000F69, + 0xF6A00000F6D, + 0xF7100000F73, + 0xF7400000F75, + 0xF7A00000F81, + 0xF8200000F85, + 0xF8600000F93, + 0xF9400000F98, + 0xF9900000F9D, + 0xF9E00000FA2, + 0xFA300000FA7, + 0xFA800000FAC, + 0xFAD00000FB9, + 0xFBA00000FBD, + 0xFC600000FC7, + 0x10000000104A, + 0x10500000109E, + 0x10D0000010FB, + 0x10FD00001100, 0x120000001249, - 0x124a0000124e, + 0x124A0000124E, 0x125000001257, 0x125800001259, - 0x125a0000125e, + 0x125A0000125E, 0x126000001289, - 0x128a0000128e, - 0x1290000012b1, - 0x12b2000012b6, - 0x12b8000012bf, - 0x12c0000012c1, - 0x12c2000012c6, - 0x12c8000012d7, - 0x12d800001311, + 0x128A0000128E, + 0x1290000012B1, + 0x12B2000012B6, + 0x12B8000012BF, + 0x12C0000012C1, + 0x12C2000012C6, + 0x12C8000012D7, + 0x12D800001311, 0x131200001316, - 0x13180000135b, - 0x135d00001360, + 0x13180000135B, + 0x135D00001360, 0x138000001390, - 0x13a0000013f6, - 0x14010000166d, - 0x166f00001680, - 0x16810000169b, - 0x16a0000016eb, - 0x16f1000016f9, + 0x13A0000013F6, + 0x14010000166D, + 0x166F00001680, + 0x16810000169B, + 0x16A0000016EB, + 0x16F1000016F9, 0x170000001716, - 0x171f00001735, + 0x171F00001735, 0x174000001754, - 0x17600000176d, - 0x176e00001771, + 0x17600000176D, + 0x176E00001771, 0x177200001774, - 0x1780000017b4, - 0x17b6000017d4, - 0x17d7000017d8, - 0x17dc000017de, - 0x17e0000017ea, - 0x18100000181a, + 0x1780000017B4, + 0x17B6000017D4, + 0x17D7000017D8, + 0x17DC000017DE, + 0x17E0000017EA, + 0x18100000181A, 0x182000001879, - 0x1880000018ab, - 0x18b0000018f6, - 0x19000000191f, - 0x19200000192c, - 0x19300000193c, - 0x19460000196e, + 0x1880000018AB, + 0x18B0000018F6, + 0x19000000191F, + 0x19200000192C, + 0x19300000193C, + 0x19460000196E, 0x197000001975, - 0x1980000019ac, - 0x19b0000019ca, - 0x19d0000019da, - 0x1a0000001a1c, - 0x1a2000001a5f, - 0x1a6000001a7d, - 0x1a7f00001a8a, - 0x1a9000001a9a, - 0x1aa700001aa8, - 0x1ab000001abe, - 0x1abf00001acf, - 0x1b0000001b4d, - 0x1b5000001b5a, - 0x1b6b00001b74, - 0x1b8000001bf4, - 0x1c0000001c38, - 0x1c4000001c4a, - 0x1c4d00001c7e, - 0x1cd000001cd3, - 0x1cd400001cfb, - 0x1d0000001d2c, - 0x1d2f00001d30, - 0x1d3b00001d3c, - 0x1d4e00001d4f, - 0x1d6b00001d78, - 0x1d7900001d9b, - 0x1dc000001e00, - 0x1e0100001e02, - 0x1e0300001e04, - 0x1e0500001e06, - 0x1e0700001e08, - 0x1e0900001e0a, - 0x1e0b00001e0c, - 0x1e0d00001e0e, - 0x1e0f00001e10, - 0x1e1100001e12, - 0x1e1300001e14, - 0x1e1500001e16, - 0x1e1700001e18, - 0x1e1900001e1a, - 0x1e1b00001e1c, - 0x1e1d00001e1e, - 0x1e1f00001e20, - 0x1e2100001e22, - 0x1e2300001e24, - 0x1e2500001e26, - 0x1e2700001e28, - 0x1e2900001e2a, - 0x1e2b00001e2c, - 0x1e2d00001e2e, - 0x1e2f00001e30, - 0x1e3100001e32, - 0x1e3300001e34, - 0x1e3500001e36, - 0x1e3700001e38, - 0x1e3900001e3a, - 0x1e3b00001e3c, - 0x1e3d00001e3e, - 0x1e3f00001e40, - 0x1e4100001e42, - 0x1e4300001e44, - 0x1e4500001e46, - 0x1e4700001e48, - 0x1e4900001e4a, - 0x1e4b00001e4c, - 0x1e4d00001e4e, - 0x1e4f00001e50, - 0x1e5100001e52, - 0x1e5300001e54, - 0x1e5500001e56, - 0x1e5700001e58, - 0x1e5900001e5a, - 0x1e5b00001e5c, - 0x1e5d00001e5e, - 0x1e5f00001e60, - 0x1e6100001e62, - 0x1e6300001e64, - 0x1e6500001e66, - 0x1e6700001e68, - 0x1e6900001e6a, - 0x1e6b00001e6c, - 0x1e6d00001e6e, - 0x1e6f00001e70, - 0x1e7100001e72, - 0x1e7300001e74, - 0x1e7500001e76, - 0x1e7700001e78, - 0x1e7900001e7a, - 0x1e7b00001e7c, - 0x1e7d00001e7e, - 0x1e7f00001e80, - 0x1e8100001e82, - 0x1e8300001e84, - 0x1e8500001e86, - 0x1e8700001e88, - 0x1e8900001e8a, - 0x1e8b00001e8c, - 0x1e8d00001e8e, - 0x1e8f00001e90, - 0x1e9100001e92, - 0x1e9300001e94, - 0x1e9500001e9a, - 0x1e9c00001e9e, - 0x1e9f00001ea0, - 0x1ea100001ea2, - 0x1ea300001ea4, - 0x1ea500001ea6, - 0x1ea700001ea8, - 0x1ea900001eaa, - 0x1eab00001eac, - 0x1ead00001eae, - 0x1eaf00001eb0, - 0x1eb100001eb2, - 0x1eb300001eb4, - 0x1eb500001eb6, - 0x1eb700001eb8, - 0x1eb900001eba, - 0x1ebb00001ebc, - 0x1ebd00001ebe, - 0x1ebf00001ec0, - 0x1ec100001ec2, - 0x1ec300001ec4, - 0x1ec500001ec6, - 0x1ec700001ec8, - 0x1ec900001eca, - 0x1ecb00001ecc, - 0x1ecd00001ece, - 0x1ecf00001ed0, - 0x1ed100001ed2, - 0x1ed300001ed4, - 0x1ed500001ed6, - 0x1ed700001ed8, - 0x1ed900001eda, - 0x1edb00001edc, - 0x1edd00001ede, - 0x1edf00001ee0, - 0x1ee100001ee2, - 0x1ee300001ee4, - 0x1ee500001ee6, - 0x1ee700001ee8, - 0x1ee900001eea, - 0x1eeb00001eec, - 0x1eed00001eee, - 0x1eef00001ef0, - 0x1ef100001ef2, - 0x1ef300001ef4, - 0x1ef500001ef6, - 0x1ef700001ef8, - 0x1ef900001efa, - 0x1efb00001efc, - 0x1efd00001efe, - 0x1eff00001f08, - 0x1f1000001f16, - 0x1f2000001f28, - 0x1f3000001f38, - 0x1f4000001f46, - 0x1f5000001f58, - 0x1f6000001f68, - 0x1f7000001f71, - 0x1f7200001f73, - 0x1f7400001f75, - 0x1f7600001f77, - 0x1f7800001f79, - 0x1f7a00001f7b, - 0x1f7c00001f7d, - 0x1fb000001fb2, - 0x1fb600001fb7, - 0x1fc600001fc7, - 0x1fd000001fd3, - 0x1fd600001fd8, - 0x1fe000001fe3, - 0x1fe400001fe8, - 0x1ff600001ff7, - 0x214e0000214f, + 0x1980000019AC, + 0x19B0000019CA, + 0x19D0000019DA, + 0x1A0000001A1C, + 0x1A2000001A5F, + 0x1A6000001A7D, + 0x1A7F00001A8A, + 0x1A9000001A9A, + 0x1AA700001AA8, + 0x1AB000001ABE, + 0x1ABF00001ACF, + 0x1B0000001B4D, + 0x1B5000001B5A, + 0x1B6B00001B74, + 0x1B8000001BF4, + 0x1C0000001C38, + 0x1C4000001C4A, + 0x1C4D00001C7E, + 0x1CD000001CD3, + 0x1CD400001CFB, + 0x1D0000001D2C, + 0x1D2F00001D30, + 0x1D3B00001D3C, + 0x1D4E00001D4F, + 0x1D6B00001D78, + 0x1D7900001D9B, + 0x1DC000001E00, + 0x1E0100001E02, + 0x1E0300001E04, + 0x1E0500001E06, + 0x1E0700001E08, + 0x1E0900001E0A, + 0x1E0B00001E0C, + 0x1E0D00001E0E, + 0x1E0F00001E10, + 0x1E1100001E12, + 0x1E1300001E14, + 0x1E1500001E16, + 0x1E1700001E18, + 0x1E1900001E1A, + 0x1E1B00001E1C, + 0x1E1D00001E1E, + 0x1E1F00001E20, + 0x1E2100001E22, + 0x1E2300001E24, + 0x1E2500001E26, + 0x1E2700001E28, + 0x1E2900001E2A, + 0x1E2B00001E2C, + 0x1E2D00001E2E, + 0x1E2F00001E30, + 0x1E3100001E32, + 0x1E3300001E34, + 0x1E3500001E36, + 0x1E3700001E38, + 0x1E3900001E3A, + 0x1E3B00001E3C, + 0x1E3D00001E3E, + 0x1E3F00001E40, + 0x1E4100001E42, + 0x1E4300001E44, + 0x1E4500001E46, + 0x1E4700001E48, + 0x1E4900001E4A, + 0x1E4B00001E4C, + 0x1E4D00001E4E, + 0x1E4F00001E50, + 0x1E5100001E52, + 0x1E5300001E54, + 0x1E5500001E56, + 0x1E5700001E58, + 0x1E5900001E5A, + 0x1E5B00001E5C, + 0x1E5D00001E5E, + 0x1E5F00001E60, + 0x1E6100001E62, + 0x1E6300001E64, + 0x1E6500001E66, + 0x1E6700001E68, + 0x1E6900001E6A, + 0x1E6B00001E6C, + 0x1E6D00001E6E, + 0x1E6F00001E70, + 0x1E7100001E72, + 0x1E7300001E74, + 0x1E7500001E76, + 0x1E7700001E78, + 0x1E7900001E7A, + 0x1E7B00001E7C, + 0x1E7D00001E7E, + 0x1E7F00001E80, + 0x1E8100001E82, + 0x1E8300001E84, + 0x1E8500001E86, + 0x1E8700001E88, + 0x1E8900001E8A, + 0x1E8B00001E8C, + 0x1E8D00001E8E, + 0x1E8F00001E90, + 0x1E9100001E92, + 0x1E9300001E94, + 0x1E9500001E9A, + 0x1E9C00001E9E, + 0x1E9F00001EA0, + 0x1EA100001EA2, + 0x1EA300001EA4, + 0x1EA500001EA6, + 0x1EA700001EA8, + 0x1EA900001EAA, + 0x1EAB00001EAC, + 0x1EAD00001EAE, + 0x1EAF00001EB0, + 0x1EB100001EB2, + 0x1EB300001EB4, + 0x1EB500001EB6, + 0x1EB700001EB8, + 0x1EB900001EBA, + 0x1EBB00001EBC, + 0x1EBD00001EBE, + 0x1EBF00001EC0, + 0x1EC100001EC2, + 0x1EC300001EC4, + 0x1EC500001EC6, + 0x1EC700001EC8, + 0x1EC900001ECA, + 0x1ECB00001ECC, + 0x1ECD00001ECE, + 0x1ECF00001ED0, + 0x1ED100001ED2, + 0x1ED300001ED4, + 0x1ED500001ED6, + 0x1ED700001ED8, + 0x1ED900001EDA, + 0x1EDB00001EDC, + 0x1EDD00001EDE, + 0x1EDF00001EE0, + 0x1EE100001EE2, + 0x1EE300001EE4, + 0x1EE500001EE6, + 0x1EE700001EE8, + 0x1EE900001EEA, + 0x1EEB00001EEC, + 0x1EED00001EEE, + 0x1EEF00001EF0, + 0x1EF100001EF2, + 0x1EF300001EF4, + 0x1EF500001EF6, + 0x1EF700001EF8, + 0x1EF900001EFA, + 0x1EFB00001EFC, + 0x1EFD00001EFE, + 0x1EFF00001F08, + 0x1F1000001F16, + 0x1F2000001F28, + 0x1F3000001F38, + 0x1F4000001F46, + 0x1F5000001F58, + 0x1F6000001F68, + 0x1F7000001F71, + 0x1F7200001F73, + 0x1F7400001F75, + 0x1F7600001F77, + 0x1F7800001F79, + 0x1F7A00001F7B, + 0x1F7C00001F7D, + 0x1FB000001FB2, + 0x1FB600001FB7, + 0x1FC600001FC7, + 0x1FD000001FD3, + 0x1FD600001FD8, + 0x1FE000001FE3, + 0x1FE400001FE8, + 0x1FF600001FF7, + 0x214E0000214F, 0x218400002185, - 0x2c3000002c60, - 0x2c6100002c62, - 0x2c6500002c67, - 0x2c6800002c69, - 0x2c6a00002c6b, - 0x2c6c00002c6d, - 0x2c7100002c72, - 0x2c7300002c75, - 0x2c7600002c7c, - 0x2c8100002c82, - 0x2c8300002c84, - 0x2c8500002c86, - 0x2c8700002c88, - 0x2c8900002c8a, - 0x2c8b00002c8c, - 0x2c8d00002c8e, - 0x2c8f00002c90, - 0x2c9100002c92, - 0x2c9300002c94, - 0x2c9500002c96, - 0x2c9700002c98, - 0x2c9900002c9a, - 0x2c9b00002c9c, - 0x2c9d00002c9e, - 0x2c9f00002ca0, - 0x2ca100002ca2, - 0x2ca300002ca4, - 0x2ca500002ca6, - 0x2ca700002ca8, - 0x2ca900002caa, - 0x2cab00002cac, - 0x2cad00002cae, - 0x2caf00002cb0, - 0x2cb100002cb2, - 0x2cb300002cb4, - 0x2cb500002cb6, - 0x2cb700002cb8, - 0x2cb900002cba, - 0x2cbb00002cbc, - 0x2cbd00002cbe, - 0x2cbf00002cc0, - 0x2cc100002cc2, - 0x2cc300002cc4, - 0x2cc500002cc6, - 0x2cc700002cc8, - 0x2cc900002cca, - 0x2ccb00002ccc, - 0x2ccd00002cce, - 0x2ccf00002cd0, - 0x2cd100002cd2, - 0x2cd300002cd4, - 0x2cd500002cd6, - 0x2cd700002cd8, - 0x2cd900002cda, - 0x2cdb00002cdc, - 0x2cdd00002cde, - 0x2cdf00002ce0, - 0x2ce100002ce2, - 0x2ce300002ce5, - 0x2cec00002ced, - 0x2cee00002cf2, - 0x2cf300002cf4, - 0x2d0000002d26, - 0x2d2700002d28, - 0x2d2d00002d2e, - 0x2d3000002d68, - 0x2d7f00002d97, - 0x2da000002da7, - 0x2da800002daf, - 0x2db000002db7, - 0x2db800002dbf, - 0x2dc000002dc7, - 0x2dc800002dcf, - 0x2dd000002dd7, - 0x2dd800002ddf, - 0x2de000002e00, - 0x2e2f00002e30, + 0x2C3000002C60, + 0x2C6100002C62, + 0x2C6500002C67, + 0x2C6800002C69, + 0x2C6A00002C6B, + 0x2C6C00002C6D, + 0x2C7100002C72, + 0x2C7300002C75, + 0x2C7600002C7C, + 0x2C8100002C82, + 0x2C8300002C84, + 0x2C8500002C86, + 0x2C8700002C88, + 0x2C8900002C8A, + 0x2C8B00002C8C, + 0x2C8D00002C8E, + 0x2C8F00002C90, + 0x2C9100002C92, + 0x2C9300002C94, + 0x2C9500002C96, + 0x2C9700002C98, + 0x2C9900002C9A, + 0x2C9B00002C9C, + 0x2C9D00002C9E, + 0x2C9F00002CA0, + 0x2CA100002CA2, + 0x2CA300002CA4, + 0x2CA500002CA6, + 0x2CA700002CA8, + 0x2CA900002CAA, + 0x2CAB00002CAC, + 0x2CAD00002CAE, + 0x2CAF00002CB0, + 0x2CB100002CB2, + 0x2CB300002CB4, + 0x2CB500002CB6, + 0x2CB700002CB8, + 0x2CB900002CBA, + 0x2CBB00002CBC, + 0x2CBD00002CBE, + 0x2CBF00002CC0, + 0x2CC100002CC2, + 0x2CC300002CC4, + 0x2CC500002CC6, + 0x2CC700002CC8, + 0x2CC900002CCA, + 0x2CCB00002CCC, + 0x2CCD00002CCE, + 0x2CCF00002CD0, + 0x2CD100002CD2, + 0x2CD300002CD4, + 0x2CD500002CD6, + 0x2CD700002CD8, + 0x2CD900002CDA, + 0x2CDB00002CDC, + 0x2CDD00002CDE, + 0x2CDF00002CE0, + 0x2CE100002CE2, + 0x2CE300002CE5, + 0x2CEC00002CED, + 0x2CEE00002CF2, + 0x2CF300002CF4, + 0x2D0000002D26, + 0x2D2700002D28, + 0x2D2D00002D2E, + 0x2D3000002D68, + 0x2D7F00002D97, + 0x2DA000002DA7, + 0x2DA800002DAF, + 0x2DB000002DB7, + 0x2DB800002DBF, + 0x2DC000002DC7, + 0x2DC800002DCF, + 0x2DD000002DD7, + 0x2DD800002DDF, + 0x2DE000002E00, + 0x2E2F00002E30, 0x300500003008, - 0x302a0000302e, - 0x303c0000303d, + 0x302A0000302E, + 0x303C0000303D, 0x304100003097, - 0x30990000309b, - 0x309d0000309f, - 0x30a1000030fb, - 0x30fc000030ff, + 0x30990000309B, + 0x309D0000309F, + 0x30A1000030FB, + 0x30FC000030FF, 0x310500003130, - 0x31a0000031c0, - 0x31f000003200, - 0x340000004dc0, - 0x4e000000a48d, - 0xa4d00000a4fe, - 0xa5000000a60d, - 0xa6100000a62c, - 0xa6410000a642, - 0xa6430000a644, - 0xa6450000a646, - 0xa6470000a648, - 0xa6490000a64a, - 0xa64b0000a64c, - 0xa64d0000a64e, - 0xa64f0000a650, - 0xa6510000a652, - 0xa6530000a654, - 0xa6550000a656, - 0xa6570000a658, - 0xa6590000a65a, - 0xa65b0000a65c, - 0xa65d0000a65e, - 0xa65f0000a660, - 0xa6610000a662, - 0xa6630000a664, - 0xa6650000a666, - 0xa6670000a668, - 0xa6690000a66a, - 0xa66b0000a66c, - 0xa66d0000a670, - 0xa6740000a67e, - 0xa67f0000a680, - 0xa6810000a682, - 0xa6830000a684, - 0xa6850000a686, - 0xa6870000a688, - 0xa6890000a68a, - 0xa68b0000a68c, - 0xa68d0000a68e, - 0xa68f0000a690, - 0xa6910000a692, - 0xa6930000a694, - 0xa6950000a696, - 0xa6970000a698, - 0xa6990000a69a, - 0xa69b0000a69c, - 0xa69e0000a6e6, - 0xa6f00000a6f2, - 0xa7170000a720, - 0xa7230000a724, - 0xa7250000a726, - 0xa7270000a728, - 0xa7290000a72a, - 0xa72b0000a72c, - 0xa72d0000a72e, - 0xa72f0000a732, - 0xa7330000a734, - 0xa7350000a736, - 0xa7370000a738, - 0xa7390000a73a, - 0xa73b0000a73c, - 0xa73d0000a73e, - 0xa73f0000a740, - 0xa7410000a742, - 0xa7430000a744, - 0xa7450000a746, - 0xa7470000a748, - 0xa7490000a74a, - 0xa74b0000a74c, - 0xa74d0000a74e, - 0xa74f0000a750, - 0xa7510000a752, - 0xa7530000a754, - 0xa7550000a756, - 0xa7570000a758, - 0xa7590000a75a, - 0xa75b0000a75c, - 0xa75d0000a75e, - 0xa75f0000a760, - 0xa7610000a762, - 0xa7630000a764, - 0xa7650000a766, - 0xa7670000a768, - 0xa7690000a76a, - 0xa76b0000a76c, - 0xa76d0000a76e, - 0xa76f0000a770, - 0xa7710000a779, - 0xa77a0000a77b, - 0xa77c0000a77d, - 0xa77f0000a780, - 0xa7810000a782, - 0xa7830000a784, - 0xa7850000a786, - 0xa7870000a789, - 0xa78c0000a78d, - 0xa78e0000a790, - 0xa7910000a792, - 0xa7930000a796, - 0xa7970000a798, - 0xa7990000a79a, - 0xa79b0000a79c, - 0xa79d0000a79e, - 0xa79f0000a7a0, - 0xa7a10000a7a2, - 0xa7a30000a7a4, - 0xa7a50000a7a6, - 0xa7a70000a7a8, - 0xa7a90000a7aa, - 0xa7af0000a7b0, - 0xa7b50000a7b6, - 0xa7b70000a7b8, - 0xa7b90000a7ba, - 0xa7bb0000a7bc, - 0xa7bd0000a7be, - 0xa7bf0000a7c0, - 0xa7c10000a7c2, - 0xa7c30000a7c4, - 0xa7c80000a7c9, - 0xa7ca0000a7cb, - 0xa7d10000a7d2, - 0xa7d30000a7d4, - 0xa7d50000a7d6, - 0xa7d70000a7d8, - 0xa7d90000a7da, - 0xa7f20000a7f5, - 0xa7f60000a7f8, - 0xa7fa0000a828, - 0xa82c0000a82d, - 0xa8400000a874, - 0xa8800000a8c6, - 0xa8d00000a8da, - 0xa8e00000a8f8, - 0xa8fb0000a8fc, - 0xa8fd0000a92e, - 0xa9300000a954, - 0xa9800000a9c1, - 0xa9cf0000a9da, - 0xa9e00000a9ff, - 0xaa000000aa37, - 0xaa400000aa4e, - 0xaa500000aa5a, - 0xaa600000aa77, - 0xaa7a0000aac3, - 0xaadb0000aade, - 0xaae00000aaf0, - 0xaaf20000aaf7, - 0xab010000ab07, - 0xab090000ab0f, - 0xab110000ab17, - 0xab200000ab27, - 0xab280000ab2f, - 0xab300000ab5b, - 0xab600000ab69, - 0xabc00000abeb, - 0xabec0000abee, - 0xabf00000abfa, - 0xac000000d7a4, - 0xfa0e0000fa10, - 0xfa110000fa12, - 0xfa130000fa15, - 0xfa1f0000fa20, - 0xfa210000fa22, - 0xfa230000fa25, - 0xfa270000fa2a, - 0xfb1e0000fb1f, - 0xfe200000fe30, - 0xfe730000fe74, - 0x100000001000c, - 0x1000d00010027, - 0x100280001003b, - 0x1003c0001003e, - 0x1003f0001004e, - 0x100500001005e, - 0x10080000100fb, - 0x101fd000101fe, - 0x102800001029d, - 0x102a0000102d1, - 0x102e0000102e1, + 0x31A0000031C0, + 0x31F000003200, + 0x340000004DC0, + 0x4E000000A48D, + 0xA4D00000A4FE, + 0xA5000000A60D, + 0xA6100000A62C, + 0xA6410000A642, + 0xA6430000A644, + 0xA6450000A646, + 0xA6470000A648, + 0xA6490000A64A, + 0xA64B0000A64C, + 0xA64D0000A64E, + 0xA64F0000A650, + 0xA6510000A652, + 0xA6530000A654, + 0xA6550000A656, + 0xA6570000A658, + 0xA6590000A65A, + 0xA65B0000A65C, + 0xA65D0000A65E, + 0xA65F0000A660, + 0xA6610000A662, + 0xA6630000A664, + 0xA6650000A666, + 0xA6670000A668, + 0xA6690000A66A, + 0xA66B0000A66C, + 0xA66D0000A670, + 0xA6740000A67E, + 0xA67F0000A680, + 0xA6810000A682, + 0xA6830000A684, + 0xA6850000A686, + 0xA6870000A688, + 0xA6890000A68A, + 0xA68B0000A68C, + 0xA68D0000A68E, + 0xA68F0000A690, + 0xA6910000A692, + 0xA6930000A694, + 0xA6950000A696, + 0xA6970000A698, + 0xA6990000A69A, + 0xA69B0000A69C, + 0xA69E0000A6E6, + 0xA6F00000A6F2, + 0xA7170000A720, + 0xA7230000A724, + 0xA7250000A726, + 0xA7270000A728, + 0xA7290000A72A, + 0xA72B0000A72C, + 0xA72D0000A72E, + 0xA72F0000A732, + 0xA7330000A734, + 0xA7350000A736, + 0xA7370000A738, + 0xA7390000A73A, + 0xA73B0000A73C, + 0xA73D0000A73E, + 0xA73F0000A740, + 0xA7410000A742, + 0xA7430000A744, + 0xA7450000A746, + 0xA7470000A748, + 0xA7490000A74A, + 0xA74B0000A74C, + 0xA74D0000A74E, + 0xA74F0000A750, + 0xA7510000A752, + 0xA7530000A754, + 0xA7550000A756, + 0xA7570000A758, + 0xA7590000A75A, + 0xA75B0000A75C, + 0xA75D0000A75E, + 0xA75F0000A760, + 0xA7610000A762, + 0xA7630000A764, + 0xA7650000A766, + 0xA7670000A768, + 0xA7690000A76A, + 0xA76B0000A76C, + 0xA76D0000A76E, + 0xA76F0000A770, + 0xA7710000A779, + 0xA77A0000A77B, + 0xA77C0000A77D, + 0xA77F0000A780, + 0xA7810000A782, + 0xA7830000A784, + 0xA7850000A786, + 0xA7870000A789, + 0xA78C0000A78D, + 0xA78E0000A790, + 0xA7910000A792, + 0xA7930000A796, + 0xA7970000A798, + 0xA7990000A79A, + 0xA79B0000A79C, + 0xA79D0000A79E, + 0xA79F0000A7A0, + 0xA7A10000A7A2, + 0xA7A30000A7A4, + 0xA7A50000A7A6, + 0xA7A70000A7A8, + 0xA7A90000A7AA, + 0xA7AF0000A7B0, + 0xA7B50000A7B6, + 0xA7B70000A7B8, + 0xA7B90000A7BA, + 0xA7BB0000A7BC, + 0xA7BD0000A7BE, + 0xA7BF0000A7C0, + 0xA7C10000A7C2, + 0xA7C30000A7C4, + 0xA7C80000A7C9, + 0xA7CA0000A7CB, + 0xA7D10000A7D2, + 0xA7D30000A7D4, + 0xA7D50000A7D6, + 0xA7D70000A7D8, + 0xA7D90000A7DA, + 0xA7F60000A7F8, + 0xA7FA0000A828, + 0xA82C0000A82D, + 0xA8400000A874, + 0xA8800000A8C6, + 0xA8D00000A8DA, + 0xA8E00000A8F8, + 0xA8FB0000A8FC, + 0xA8FD0000A92E, + 0xA9300000A954, + 0xA9800000A9C1, + 0xA9CF0000A9DA, + 0xA9E00000A9FF, + 0xAA000000AA37, + 0xAA400000AA4E, + 0xAA500000AA5A, + 0xAA600000AA77, + 0xAA7A0000AAC3, + 0xAADB0000AADE, + 0xAAE00000AAF0, + 0xAAF20000AAF7, + 0xAB010000AB07, + 0xAB090000AB0F, + 0xAB110000AB17, + 0xAB200000AB27, + 0xAB280000AB2F, + 0xAB300000AB5B, + 0xAB600000AB69, + 0xABC00000ABEB, + 0xABEC0000ABEE, + 0xABF00000ABFA, + 0xAC000000D7A4, + 0xFA0E0000FA10, + 0xFA110000FA12, + 0xFA130000FA15, + 0xFA1F0000FA20, + 0xFA210000FA22, + 0xFA230000FA25, + 0xFA270000FA2A, + 0xFB1E0000FB1F, + 0xFE200000FE30, + 0xFE730000FE74, + 0x100000001000C, + 0x1000D00010027, + 0x100280001003B, + 0x1003C0001003E, + 0x1003F0001004E, + 0x100500001005E, + 0x10080000100FB, + 0x101FD000101FE, + 0x102800001029D, + 0x102A0000102D1, + 0x102E0000102E1, 0x1030000010320, - 0x1032d00010341, - 0x103420001034a, - 0x103500001037b, - 0x103800001039e, - 0x103a0000103c4, - 0x103c8000103d0, - 0x104280001049e, - 0x104a0000104aa, - 0x104d8000104fc, + 0x1032D00010341, + 0x103420001034A, + 0x103500001037B, + 0x103800001039E, + 0x103A0000103C4, + 0x103C8000103D0, + 0x104280001049E, + 0x104A0000104AA, + 0x104D8000104FC, 0x1050000010528, 0x1053000010564, - 0x10597000105a2, - 0x105a3000105b2, - 0x105b3000105ba, - 0x105bb000105bd, + 0x10597000105A2, + 0x105A3000105B2, + 0x105B3000105BA, + 0x105BB000105BD, 0x1060000010737, 0x1074000010756, 0x1076000010768, - 0x1078000010786, - 0x10787000107b1, - 0x107b2000107bb, + 0x1078000010781, 0x1080000010806, 0x1080800010809, - 0x1080a00010836, + 0x1080A00010836, 0x1083700010839, - 0x1083c0001083d, - 0x1083f00010856, + 0x1083C0001083D, + 0x1083F00010856, 0x1086000010877, - 0x108800001089f, - 0x108e0000108f3, - 0x108f4000108f6, + 0x108800001089F, + 0x108E0000108F3, + 0x108F4000108F6, 0x1090000010916, - 0x109200001093a, - 0x10980000109b8, - 0x109be000109c0, - 0x10a0000010a04, - 0x10a0500010a07, - 0x10a0c00010a14, - 0x10a1500010a18, - 0x10a1900010a36, - 0x10a3800010a3b, - 0x10a3f00010a40, - 0x10a6000010a7d, - 0x10a8000010a9d, - 0x10ac000010ac8, - 0x10ac900010ae7, - 0x10b0000010b36, - 0x10b4000010b56, - 0x10b6000010b73, - 0x10b8000010b92, - 0x10c0000010c49, - 0x10cc000010cf3, - 0x10d0000010d28, - 0x10d3000010d3a, - 0x10e8000010eaa, - 0x10eab00010ead, - 0x10eb000010eb2, - 0x10efd00010f1d, - 0x10f2700010f28, - 0x10f3000010f51, - 0x10f7000010f86, - 0x10fb000010fc5, - 0x10fe000010ff7, + 0x109200001093A, + 0x10980000109B8, + 0x109BE000109C0, + 0x10A0000010A04, + 0x10A0500010A07, + 0x10A0C00010A14, + 0x10A1500010A18, + 0x10A1900010A36, + 0x10A3800010A3B, + 0x10A3F00010A40, + 0x10A6000010A7D, + 0x10A8000010A9D, + 0x10AC000010AC8, + 0x10AC900010AE7, + 0x10B0000010B36, + 0x10B4000010B56, + 0x10B6000010B73, + 0x10B8000010B92, + 0x10C0000010C49, + 0x10CC000010CF3, + 0x10D0000010D28, + 0x10D3000010D3A, + 0x10E8000010EAA, + 0x10EAB00010EAD, + 0x10EB000010EB2, + 0x10EFD00010F1D, + 0x10F2700010F28, + 0x10F3000010F51, + 0x10F7000010F86, + 0x10FB000010FC5, + 0x10FE000010FF7, 0x1100000011047, 0x1106600011076, - 0x1107f000110bb, - 0x110c2000110c3, - 0x110d0000110e9, - 0x110f0000110fa, + 0x1107F000110BB, + 0x110C2000110C3, + 0x110D0000110E9, + 0x110F0000110FA, 0x1110000011135, 0x1113600011140, 0x1114400011148, 0x1115000011174, 0x1117600011177, - 0x11180000111c5, - 0x111c9000111cd, - 0x111ce000111db, - 0x111dc000111dd, + 0x11180000111C5, + 0x111C9000111CD, + 0x111CE000111DB, + 0x111DC000111DD, 0x1120000011212, 0x1121300011238, - 0x1123e00011242, + 0x1123E00011242, 0x1128000011287, 0x1128800011289, - 0x1128a0001128e, - 0x1128f0001129e, - 0x1129f000112a9, - 0x112b0000112eb, - 0x112f0000112fa, + 0x1128A0001128E, + 0x1128F0001129E, + 0x1129F000112A9, + 0x112B0000112EB, + 0x112F0000112FA, 0x1130000011304, - 0x113050001130d, - 0x1130f00011311, + 0x113050001130D, + 0x1130F00011311, 0x1131300011329, - 0x1132a00011331, + 0x1132A00011331, 0x1133200011334, - 0x113350001133a, - 0x1133b00011345, + 0x113350001133A, + 0x1133B00011345, 0x1134700011349, - 0x1134b0001134e, + 0x1134B0001134E, 0x1135000011351, 0x1135700011358, - 0x1135d00011364, - 0x113660001136d, + 0x1135D00011364, + 0x113660001136D, 0x1137000011375, - 0x114000001144b, - 0x114500001145a, - 0x1145e00011462, - 0x11480000114c6, - 0x114c7000114c8, - 0x114d0000114da, - 0x11580000115b6, - 0x115b8000115c1, - 0x115d8000115de, + 0x114000001144B, + 0x114500001145A, + 0x1145E00011462, + 0x11480000114C6, + 0x114C7000114C8, + 0x114D0000114DA, + 0x11580000115B6, + 0x115B8000115C1, + 0x115D8000115DE, 0x1160000011641, 0x1164400011645, - 0x116500001165a, - 0x11680000116b9, - 0x116c0000116ca, - 0x117000001171b, - 0x1171d0001172c, - 0x117300001173a, + 0x116500001165A, + 0x11680000116B9, + 0x116C0000116CA, + 0x117000001171B, + 0x1171D0001172C, + 0x117300001173A, 0x1174000011747, - 0x118000001183b, - 0x118c0000118ea, - 0x118ff00011907, - 0x119090001190a, - 0x1190c00011914, + 0x118000001183B, + 0x118C0000118EA, + 0x118FF00011907, + 0x119090001190A, + 0x1190C00011914, 0x1191500011917, 0x1191800011936, 0x1193700011939, - 0x1193b00011944, - 0x119500001195a, - 0x119a0000119a8, - 0x119aa000119d8, - 0x119da000119e2, - 0x119e3000119e5, - 0x11a0000011a3f, - 0x11a4700011a48, - 0x11a5000011a9a, - 0x11a9d00011a9e, - 0x11ab000011af9, - 0x11c0000011c09, - 0x11c0a00011c37, - 0x11c3800011c41, - 0x11c5000011c5a, - 0x11c7200011c90, - 0x11c9200011ca8, - 0x11ca900011cb7, - 0x11d0000011d07, - 0x11d0800011d0a, - 0x11d0b00011d37, - 0x11d3a00011d3b, - 0x11d3c00011d3e, - 0x11d3f00011d48, - 0x11d5000011d5a, - 0x11d6000011d66, - 0x11d6700011d69, - 0x11d6a00011d8f, - 0x11d9000011d92, - 0x11d9300011d99, - 0x11da000011daa, - 0x11ee000011ef7, - 0x11f0000011f11, - 0x11f1200011f3b, - 0x11f3e00011f43, - 0x11f5000011f5a, - 0x11fb000011fb1, - 0x120000001239a, + 0x1193B00011944, + 0x119500001195A, + 0x119A0000119A8, + 0x119AA000119D8, + 0x119DA000119E2, + 0x119E3000119E5, + 0x11A0000011A3F, + 0x11A4700011A48, + 0x11A5000011A9A, + 0x11A9D00011A9E, + 0x11AB000011AF9, + 0x11C0000011C09, + 0x11C0A00011C37, + 0x11C3800011C41, + 0x11C5000011C5A, + 0x11C7200011C90, + 0x11C9200011CA8, + 0x11CA900011CB7, + 0x11D0000011D07, + 0x11D0800011D0A, + 0x11D0B00011D37, + 0x11D3A00011D3B, + 0x11D3C00011D3E, + 0x11D3F00011D48, + 0x11D5000011D5A, + 0x11D6000011D66, + 0x11D6700011D69, + 0x11D6A00011D8F, + 0x11D9000011D92, + 0x11D9300011D99, + 0x11DA000011DAA, + 0x11EE000011EF7, + 0x11F0000011F11, + 0x11F1200011F3B, + 0x11F3E00011F43, + 0x11F5000011F5A, + 0x11FB000011FB1, + 0x120000001239A, 0x1248000012544, - 0x12f9000012ff1, + 0x12F9000012FF1, 0x1300000013430, 0x1344000013456, 0x1440000014647, - 0x1680000016a39, - 0x16a4000016a5f, - 0x16a6000016a6a, - 0x16a7000016abf, - 0x16ac000016aca, - 0x16ad000016aee, - 0x16af000016af5, - 0x16b0000016b37, - 0x16b4000016b44, - 0x16b5000016b5a, - 0x16b6300016b78, - 0x16b7d00016b90, - 0x16e6000016e80, - 0x16f0000016f4b, - 0x16f4f00016f88, - 0x16f8f00016fa0, - 0x16fe000016fe2, - 0x16fe300016fe5, - 0x16ff000016ff2, - 0x17000000187f8, - 0x1880000018cd6, - 0x18d0000018d09, - 0x1aff00001aff4, - 0x1aff50001affc, - 0x1affd0001afff, - 0x1b0000001b123, - 0x1b1320001b133, - 0x1b1500001b153, - 0x1b1550001b156, - 0x1b1640001b168, - 0x1b1700001b2fc, - 0x1bc000001bc6b, - 0x1bc700001bc7d, - 0x1bc800001bc89, - 0x1bc900001bc9a, - 0x1bc9d0001bc9f, - 0x1cf000001cf2e, - 0x1cf300001cf47, - 0x1da000001da37, - 0x1da3b0001da6d, - 0x1da750001da76, - 0x1da840001da85, - 0x1da9b0001daa0, - 0x1daa10001dab0, - 0x1df000001df1f, - 0x1df250001df2b, - 0x1e0000001e007, - 0x1e0080001e019, - 0x1e01b0001e022, - 0x1e0230001e025, - 0x1e0260001e02b, - 0x1e0300001e06e, - 0x1e08f0001e090, - 0x1e1000001e12d, - 0x1e1300001e13e, - 0x1e1400001e14a, - 0x1e14e0001e14f, - 0x1e2900001e2af, - 0x1e2c00001e2fa, - 0x1e4d00001e4fa, - 0x1e7e00001e7e7, - 0x1e7e80001e7ec, - 0x1e7ed0001e7ef, - 0x1e7f00001e7ff, - 0x1e8000001e8c5, - 0x1e8d00001e8d7, - 0x1e9220001e94c, - 0x1e9500001e95a, - 0x200000002a6e0, - 0x2a7000002b73a, - 0x2b7400002b81e, - 0x2b8200002cea2, - 0x2ceb00002ebe1, - 0x300000003134b, - 0x31350000323b0, + 0x1680000016A39, + 0x16A4000016A5F, + 0x16A6000016A6A, + 0x16A7000016ABF, + 0x16AC000016ACA, + 0x16AD000016AEE, + 0x16AF000016AF5, + 0x16B0000016B37, + 0x16B4000016B44, + 0x16B5000016B5A, + 0x16B6300016B78, + 0x16B7D00016B90, + 0x16E6000016E80, + 0x16F0000016F4B, + 0x16F4F00016F88, + 0x16F8F00016FA0, + 0x16FE000016FE2, + 0x16FE300016FE5, + 0x16FF000016FF2, + 0x17000000187F8, + 0x1880000018CD6, + 0x18D0000018D09, + 0x1AFF00001AFF4, + 0x1AFF50001AFFC, + 0x1AFFD0001AFFF, + 0x1B0000001B123, + 0x1B1320001B133, + 0x1B1500001B153, + 0x1B1550001B156, + 0x1B1640001B168, + 0x1B1700001B2FC, + 0x1BC000001BC6B, + 0x1BC700001BC7D, + 0x1BC800001BC89, + 0x1BC900001BC9A, + 0x1BC9D0001BC9F, + 0x1CF000001CF2E, + 0x1CF300001CF47, + 0x1DA000001DA37, + 0x1DA3B0001DA6D, + 0x1DA750001DA76, + 0x1DA840001DA85, + 0x1DA9B0001DAA0, + 0x1DAA10001DAB0, + 0x1DF000001DF1F, + 0x1DF250001DF2B, + 0x1E0000001E007, + 0x1E0080001E019, + 0x1E01B0001E022, + 0x1E0230001E025, + 0x1E0260001E02B, + 0x1E08F0001E090, + 0x1E1000001E12D, + 0x1E1300001E13E, + 0x1E1400001E14A, + 0x1E14E0001E14F, + 0x1E2900001E2AF, + 0x1E2C00001E2FA, + 0x1E4D00001E4FA, + 0x1E7E00001E7E7, + 0x1E7E80001E7EC, + 0x1E7ED0001E7EF, + 0x1E7F00001E7FF, + 0x1E8000001E8C5, + 0x1E8D00001E8D7, + 0x1E9220001E94C, + 0x1E9500001E95A, + 0x200000002A6E0, + 0x2A7000002B73A, + 0x2B7400002B81E, + 0x2B8200002CEA2, + 0x2CEB00002EBE1, + 0x2EBF00002EE5E, + 0x300000003134B, + 0x31350000323B0, ), - 'CONTEXTJ': ( - 0x200c0000200e, - ), - 'CONTEXTO': ( - 0xb7000000b8, + "CONTEXTJ": (0x200C0000200E,), + "CONTEXTO": ( + 0xB7000000B8, 0x37500000376, - 0x5f3000005f5, - 0x6600000066a, - 0x6f0000006fa, - 0x30fb000030fc, + 0x5F3000005F5, + 0x6600000066A, + 0x6F0000006FA, + 0x30FB000030FC, ), } diff --git a/gestao_raul/Lib/site-packages/pip/_vendor/idna/intranges.py b/gestao_raul/Lib/site-packages/pip/_vendor/idna/intranges.py index 6a43b04..7bfaa8d 100644 --- a/gestao_raul/Lib/site-packages/pip/_vendor/idna/intranges.py +++ b/gestao_raul/Lib/site-packages/pip/_vendor/idna/intranges.py @@ -8,6 +8,7 @@ in the original list?" in time O(log(# runs)). import bisect from typing import List, Tuple + def intranges_from_list(list_: List[int]) -> Tuple[int, ...]: """Represent a list of integers as a sequence of ranges: ((start_0, end_0), (start_1, end_1), ...), such that the original @@ -20,18 +21,20 @@ def intranges_from_list(list_: List[int]) -> Tuple[int, ...]: ranges = [] last_write = -1 for i in range(len(sorted_list)): - if i+1 < len(sorted_list): - if sorted_list[i] == sorted_list[i+1]-1: + if i + 1 < len(sorted_list): + if sorted_list[i] == sorted_list[i + 1] - 1: continue - current_range = sorted_list[last_write+1:i+1] + current_range = sorted_list[last_write + 1 : i + 1] ranges.append(_encode_range(current_range[0], current_range[-1] + 1)) last_write = i return tuple(ranges) + def _encode_range(start: int, end: int) -> int: return (start << 32) | end + def _decode_range(r: int) -> Tuple[int, int]: return (r >> 32), (r & ((1 << 32) - 1)) @@ -43,7 +46,7 @@ def intranges_contain(int_: int, ranges: Tuple[int, ...]) -> bool: # we could be immediately ahead of a tuple (start, end) # with start < int_ <= end if pos > 0: - left, right = _decode_range(ranges[pos-1]) + left, right = _decode_range(ranges[pos - 1]) if left <= int_ < right: return True # or we could be immediately behind a tuple (int_, end) diff --git a/gestao_raul/Lib/site-packages/pip/_vendor/idna/package_data.py b/gestao_raul/Lib/site-packages/pip/_vendor/idna/package_data.py index 8501893..514ff7e 100644 --- a/gestao_raul/Lib/site-packages/pip/_vendor/idna/package_data.py +++ b/gestao_raul/Lib/site-packages/pip/_vendor/idna/package_data.py @@ -1,2 +1 @@ -__version__ = '3.4' - +__version__ = "3.10" diff --git a/gestao_raul/Lib/site-packages/pip/_vendor/idna/py.typed b/gestao_raul/Lib/site-packages/pip/_vendor/idna/py.typed new file mode 100644 index 0000000..e69de29 diff --git a/gestao_raul/Lib/site-packages/pip/_vendor/idna/uts46data.py b/gestao_raul/Lib/site-packages/pip/_vendor/idna/uts46data.py index 186796c..eb89432 100644 --- a/gestao_raul/Lib/site-packages/pip/_vendor/idna/uts46data.py +++ b/gestao_raul/Lib/site-packages/pip/_vendor/idna/uts46data.py @@ -3,8517 +3,8598 @@ from typing import List, Tuple, Union - """IDNA Mapping Table from UTS46.""" -__version__ = '15.0.0' +__version__ = "15.1.0" + + def _seg_0() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: return [ - (0x0, '3'), - (0x1, '3'), - (0x2, '3'), - (0x3, '3'), - (0x4, '3'), - (0x5, '3'), - (0x6, '3'), - (0x7, '3'), - (0x8, '3'), - (0x9, '3'), - (0xA, '3'), - (0xB, '3'), - (0xC, '3'), - (0xD, '3'), - (0xE, '3'), - (0xF, '3'), - (0x10, '3'), - (0x11, '3'), - (0x12, '3'), - (0x13, '3'), - (0x14, '3'), - (0x15, '3'), - (0x16, '3'), - (0x17, '3'), - (0x18, '3'), - (0x19, '3'), - (0x1A, '3'), - (0x1B, '3'), - (0x1C, '3'), - (0x1D, '3'), - (0x1E, '3'), - (0x1F, '3'), - (0x20, '3'), - (0x21, '3'), - (0x22, '3'), - (0x23, '3'), - (0x24, '3'), - (0x25, '3'), - (0x26, '3'), - (0x27, '3'), - (0x28, '3'), - (0x29, '3'), - (0x2A, '3'), - (0x2B, '3'), - (0x2C, '3'), - (0x2D, 'V'), - (0x2E, 'V'), - (0x2F, '3'), - (0x30, 'V'), - (0x31, 'V'), - (0x32, 'V'), - (0x33, 'V'), - (0x34, 'V'), - (0x35, 'V'), - (0x36, 'V'), - (0x37, 'V'), - (0x38, 'V'), - (0x39, 'V'), - (0x3A, '3'), - (0x3B, '3'), - (0x3C, '3'), - (0x3D, '3'), - (0x3E, '3'), - (0x3F, '3'), - (0x40, '3'), - (0x41, 'M', 'a'), - (0x42, 'M', 'b'), - (0x43, 'M', 'c'), - (0x44, 'M', 'd'), - (0x45, 'M', 'e'), - (0x46, 'M', 'f'), - (0x47, 'M', 'g'), - (0x48, 'M', 'h'), - (0x49, 'M', 'i'), - (0x4A, 'M', 'j'), - (0x4B, 'M', 'k'), - (0x4C, 'M', 'l'), - (0x4D, 'M', 'm'), - (0x4E, 'M', 'n'), - (0x4F, 'M', 'o'), - (0x50, 'M', 'p'), - (0x51, 'M', 'q'), - (0x52, 'M', 'r'), - (0x53, 'M', 's'), - (0x54, 'M', 't'), - (0x55, 'M', 'u'), - (0x56, 'M', 'v'), - (0x57, 'M', 'w'), - (0x58, 'M', 'x'), - (0x59, 'M', 'y'), - (0x5A, 'M', 'z'), - (0x5B, '3'), - (0x5C, '3'), - (0x5D, '3'), - (0x5E, '3'), - (0x5F, '3'), - (0x60, '3'), - (0x61, 'V'), - (0x62, 'V'), - (0x63, 'V'), + (0x0, "3"), + (0x1, "3"), + (0x2, "3"), + (0x3, "3"), + (0x4, "3"), + (0x5, "3"), + (0x6, "3"), + (0x7, "3"), + (0x8, "3"), + (0x9, "3"), + (0xA, "3"), + (0xB, "3"), + (0xC, "3"), + (0xD, "3"), + (0xE, "3"), + (0xF, "3"), + (0x10, "3"), + (0x11, "3"), + (0x12, "3"), + (0x13, "3"), + (0x14, "3"), + (0x15, "3"), + (0x16, "3"), + (0x17, "3"), + (0x18, "3"), + (0x19, "3"), + (0x1A, "3"), + (0x1B, "3"), + (0x1C, "3"), + (0x1D, "3"), + (0x1E, "3"), + (0x1F, "3"), + (0x20, "3"), + (0x21, "3"), + (0x22, "3"), + (0x23, "3"), + (0x24, "3"), + (0x25, "3"), + (0x26, "3"), + (0x27, "3"), + (0x28, "3"), + (0x29, "3"), + (0x2A, "3"), + (0x2B, "3"), + (0x2C, "3"), + (0x2D, "V"), + (0x2E, "V"), + (0x2F, "3"), + (0x30, "V"), + (0x31, "V"), + (0x32, "V"), + (0x33, "V"), + (0x34, "V"), + (0x35, "V"), + (0x36, "V"), + (0x37, "V"), + (0x38, "V"), + (0x39, "V"), + (0x3A, "3"), + (0x3B, "3"), + (0x3C, "3"), + (0x3D, "3"), + (0x3E, "3"), + (0x3F, "3"), + (0x40, "3"), + (0x41, "M", "a"), + (0x42, "M", "b"), + (0x43, "M", "c"), + (0x44, "M", "d"), + (0x45, "M", "e"), + (0x46, "M", "f"), + (0x47, "M", "g"), + (0x48, "M", "h"), + (0x49, "M", "i"), + (0x4A, "M", "j"), + (0x4B, "M", "k"), + (0x4C, "M", "l"), + (0x4D, "M", "m"), + (0x4E, "M", "n"), + (0x4F, "M", "o"), + (0x50, "M", "p"), + (0x51, "M", "q"), + (0x52, "M", "r"), + (0x53, "M", "s"), + (0x54, "M", "t"), + (0x55, "M", "u"), + (0x56, "M", "v"), + (0x57, "M", "w"), + (0x58, "M", "x"), + (0x59, "M", "y"), + (0x5A, "M", "z"), + (0x5B, "3"), + (0x5C, "3"), + (0x5D, "3"), + (0x5E, "3"), + (0x5F, "3"), + (0x60, "3"), + (0x61, "V"), + (0x62, "V"), + (0x63, "V"), ] + def _seg_1() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: return [ - (0x64, 'V'), - (0x65, 'V'), - (0x66, 'V'), - (0x67, 'V'), - (0x68, 'V'), - (0x69, 'V'), - (0x6A, 'V'), - (0x6B, 'V'), - (0x6C, 'V'), - (0x6D, 'V'), - (0x6E, 'V'), - (0x6F, 'V'), - (0x70, 'V'), - (0x71, 'V'), - (0x72, 'V'), - (0x73, 'V'), - (0x74, 'V'), - (0x75, 'V'), - (0x76, 'V'), - (0x77, 'V'), - (0x78, 'V'), - (0x79, 'V'), - (0x7A, 'V'), - (0x7B, '3'), - (0x7C, '3'), - (0x7D, '3'), - (0x7E, '3'), - (0x7F, '3'), - (0x80, 'X'), - (0x81, 'X'), - (0x82, 'X'), - (0x83, 'X'), - (0x84, 'X'), - (0x85, 'X'), - (0x86, 'X'), - (0x87, 'X'), - (0x88, 'X'), - (0x89, 'X'), - (0x8A, 'X'), - (0x8B, 'X'), - (0x8C, 'X'), - (0x8D, 'X'), - (0x8E, 'X'), - (0x8F, 'X'), - (0x90, 'X'), - (0x91, 'X'), - (0x92, 'X'), - (0x93, 'X'), - (0x94, 'X'), - (0x95, 'X'), - (0x96, 'X'), - (0x97, 'X'), - (0x98, 'X'), - (0x99, 'X'), - (0x9A, 'X'), - (0x9B, 'X'), - (0x9C, 'X'), - (0x9D, 'X'), - (0x9E, 'X'), - (0x9F, 'X'), - (0xA0, '3', ' '), - (0xA1, 'V'), - (0xA2, 'V'), - (0xA3, 'V'), - (0xA4, 'V'), - (0xA5, 'V'), - (0xA6, 'V'), - (0xA7, 'V'), - (0xA8, '3', ' ̈'), - (0xA9, 'V'), - (0xAA, 'M', 'a'), - (0xAB, 'V'), - (0xAC, 'V'), - (0xAD, 'I'), - (0xAE, 'V'), - (0xAF, '3', ' ̄'), - (0xB0, 'V'), - (0xB1, 'V'), - (0xB2, 'M', '2'), - (0xB3, 'M', '3'), - (0xB4, '3', ' ́'), - (0xB5, 'M', 'μ'), - (0xB6, 'V'), - (0xB7, 'V'), - (0xB8, '3', ' ̧'), - (0xB9, 'M', '1'), - (0xBA, 'M', 'o'), - (0xBB, 'V'), - (0xBC, 'M', '1⁄4'), - (0xBD, 'M', '1⁄2'), - (0xBE, 'M', '3⁄4'), - (0xBF, 'V'), - (0xC0, 'M', 'à'), - (0xC1, 'M', 'á'), - (0xC2, 'M', 'â'), - (0xC3, 'M', 'ã'), - (0xC4, 'M', 'ä'), - (0xC5, 'M', 'å'), - (0xC6, 'M', 'æ'), - (0xC7, 'M', 'ç'), + (0x64, "V"), + (0x65, "V"), + (0x66, "V"), + (0x67, "V"), + (0x68, "V"), + (0x69, "V"), + (0x6A, "V"), + (0x6B, "V"), + (0x6C, "V"), + (0x6D, "V"), + (0x6E, "V"), + (0x6F, "V"), + (0x70, "V"), + (0x71, "V"), + (0x72, "V"), + (0x73, "V"), + (0x74, "V"), + (0x75, "V"), + (0x76, "V"), + (0x77, "V"), + (0x78, "V"), + (0x79, "V"), + (0x7A, "V"), + (0x7B, "3"), + (0x7C, "3"), + (0x7D, "3"), + (0x7E, "3"), + (0x7F, "3"), + (0x80, "X"), + (0x81, "X"), + (0x82, "X"), + (0x83, "X"), + (0x84, "X"), + (0x85, "X"), + (0x86, "X"), + (0x87, "X"), + (0x88, "X"), + (0x89, "X"), + (0x8A, "X"), + (0x8B, "X"), + (0x8C, "X"), + (0x8D, "X"), + (0x8E, "X"), + (0x8F, "X"), + (0x90, "X"), + (0x91, "X"), + (0x92, "X"), + (0x93, "X"), + (0x94, "X"), + (0x95, "X"), + (0x96, "X"), + (0x97, "X"), + (0x98, "X"), + (0x99, "X"), + (0x9A, "X"), + (0x9B, "X"), + (0x9C, "X"), + (0x9D, "X"), + (0x9E, "X"), + (0x9F, "X"), + (0xA0, "3", " "), + (0xA1, "V"), + (0xA2, "V"), + (0xA3, "V"), + (0xA4, "V"), + (0xA5, "V"), + (0xA6, "V"), + (0xA7, "V"), + (0xA8, "3", " ̈"), + (0xA9, "V"), + (0xAA, "M", "a"), + (0xAB, "V"), + (0xAC, "V"), + (0xAD, "I"), + (0xAE, "V"), + (0xAF, "3", " ̄"), + (0xB0, "V"), + (0xB1, "V"), + (0xB2, "M", "2"), + (0xB3, "M", "3"), + (0xB4, "3", " ́"), + (0xB5, "M", "μ"), + (0xB6, "V"), + (0xB7, "V"), + (0xB8, "3", " ̧"), + (0xB9, "M", "1"), + (0xBA, "M", "o"), + (0xBB, "V"), + (0xBC, "M", "1⁄4"), + (0xBD, "M", "1⁄2"), + (0xBE, "M", "3⁄4"), + (0xBF, "V"), + (0xC0, "M", "à"), + (0xC1, "M", "á"), + (0xC2, "M", "â"), + (0xC3, "M", "ã"), + (0xC4, "M", "ä"), + (0xC5, "M", "å"), + (0xC6, "M", "æ"), + (0xC7, "M", "ç"), ] + def _seg_2() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: return [ - (0xC8, 'M', 'è'), - (0xC9, 'M', 'é'), - (0xCA, 'M', 'ê'), - (0xCB, 'M', 'ë'), - (0xCC, 'M', 'ì'), - (0xCD, 'M', 'í'), - (0xCE, 'M', 'î'), - (0xCF, 'M', 'ï'), - (0xD0, 'M', 'ð'), - (0xD1, 'M', 'ñ'), - (0xD2, 'M', 'ò'), - (0xD3, 'M', 'ó'), - (0xD4, 'M', 'ô'), - (0xD5, 'M', 'õ'), - (0xD6, 'M', 'ö'), - (0xD7, 'V'), - (0xD8, 'M', 'ø'), - (0xD9, 'M', 'ù'), - (0xDA, 'M', 'ú'), - (0xDB, 'M', 'û'), - (0xDC, 'M', 'ü'), - (0xDD, 'M', 'ý'), - (0xDE, 'M', 'þ'), - (0xDF, 'D', 'ss'), - (0xE0, 'V'), - (0xE1, 'V'), - (0xE2, 'V'), - (0xE3, 'V'), - (0xE4, 'V'), - (0xE5, 'V'), - (0xE6, 'V'), - (0xE7, 'V'), - (0xE8, 'V'), - (0xE9, 'V'), - (0xEA, 'V'), - (0xEB, 'V'), - (0xEC, 'V'), - (0xED, 'V'), - (0xEE, 'V'), - (0xEF, 'V'), - (0xF0, 'V'), - (0xF1, 'V'), - (0xF2, 'V'), - (0xF3, 'V'), - (0xF4, 'V'), - (0xF5, 'V'), - (0xF6, 'V'), - (0xF7, 'V'), - (0xF8, 'V'), - (0xF9, 'V'), - (0xFA, 'V'), - (0xFB, 'V'), - (0xFC, 'V'), - (0xFD, 'V'), - (0xFE, 'V'), - (0xFF, 'V'), - (0x100, 'M', 'ā'), - (0x101, 'V'), - (0x102, 'M', 'ă'), - (0x103, 'V'), - (0x104, 'M', 'ą'), - (0x105, 'V'), - (0x106, 'M', 'ć'), - (0x107, 'V'), - (0x108, 'M', 'ĉ'), - (0x109, 'V'), - (0x10A, 'M', 'ċ'), - (0x10B, 'V'), - (0x10C, 'M', 'č'), - (0x10D, 'V'), - (0x10E, 'M', 'ď'), - (0x10F, 'V'), - (0x110, 'M', 'đ'), - (0x111, 'V'), - (0x112, 'M', 'ē'), - (0x113, 'V'), - (0x114, 'M', 'ĕ'), - (0x115, 'V'), - (0x116, 'M', 'ė'), - (0x117, 'V'), - (0x118, 'M', 'ę'), - (0x119, 'V'), - (0x11A, 'M', 'ě'), - (0x11B, 'V'), - (0x11C, 'M', 'ĝ'), - (0x11D, 'V'), - (0x11E, 'M', 'ğ'), - (0x11F, 'V'), - (0x120, 'M', 'ġ'), - (0x121, 'V'), - (0x122, 'M', 'ģ'), - (0x123, 'V'), - (0x124, 'M', 'ĥ'), - (0x125, 'V'), - (0x126, 'M', 'ħ'), - (0x127, 'V'), - (0x128, 'M', 'ĩ'), - (0x129, 'V'), - (0x12A, 'M', 'ī'), - (0x12B, 'V'), + (0xC8, "M", "è"), + (0xC9, "M", "é"), + (0xCA, "M", "ê"), + (0xCB, "M", "ë"), + (0xCC, "M", "ì"), + (0xCD, "M", "í"), + (0xCE, "M", "î"), + (0xCF, "M", "ï"), + (0xD0, "M", "ð"), + (0xD1, "M", "ñ"), + (0xD2, "M", "ò"), + (0xD3, "M", "ó"), + (0xD4, "M", "ô"), + (0xD5, "M", "õ"), + (0xD6, "M", "ö"), + (0xD7, "V"), + (0xD8, "M", "ø"), + (0xD9, "M", "ù"), + (0xDA, "M", "ú"), + (0xDB, "M", "û"), + (0xDC, "M", "ü"), + (0xDD, "M", "ý"), + (0xDE, "M", "þ"), + (0xDF, "D", "ss"), + (0xE0, "V"), + (0xE1, "V"), + (0xE2, "V"), + (0xE3, "V"), + (0xE4, "V"), + (0xE5, "V"), + (0xE6, "V"), + (0xE7, "V"), + (0xE8, "V"), + (0xE9, "V"), + (0xEA, "V"), + (0xEB, "V"), + (0xEC, "V"), + (0xED, "V"), + (0xEE, "V"), + (0xEF, "V"), + (0xF0, "V"), + (0xF1, "V"), + (0xF2, "V"), + (0xF3, "V"), + (0xF4, "V"), + (0xF5, "V"), + (0xF6, "V"), + (0xF7, "V"), + (0xF8, "V"), + (0xF9, "V"), + (0xFA, "V"), + (0xFB, "V"), + (0xFC, "V"), + (0xFD, "V"), + (0xFE, "V"), + (0xFF, "V"), + (0x100, "M", "ā"), + (0x101, "V"), + (0x102, "M", "ă"), + (0x103, "V"), + (0x104, "M", "ą"), + (0x105, "V"), + (0x106, "M", "ć"), + (0x107, "V"), + (0x108, "M", "ĉ"), + (0x109, "V"), + (0x10A, "M", "ċ"), + (0x10B, "V"), + (0x10C, "M", "č"), + (0x10D, "V"), + (0x10E, "M", "ď"), + (0x10F, "V"), + (0x110, "M", "đ"), + (0x111, "V"), + (0x112, "M", "ē"), + (0x113, "V"), + (0x114, "M", "ĕ"), + (0x115, "V"), + (0x116, "M", "ė"), + (0x117, "V"), + (0x118, "M", "ę"), + (0x119, "V"), + (0x11A, "M", "ě"), + (0x11B, "V"), + (0x11C, "M", "ĝ"), + (0x11D, "V"), + (0x11E, "M", "ğ"), + (0x11F, "V"), + (0x120, "M", "ġ"), + (0x121, "V"), + (0x122, "M", "ģ"), + (0x123, "V"), + (0x124, "M", "ĥ"), + (0x125, "V"), + (0x126, "M", "ħ"), + (0x127, "V"), + (0x128, "M", "ĩ"), + (0x129, "V"), + (0x12A, "M", "ī"), + (0x12B, "V"), ] + def _seg_3() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: return [ - (0x12C, 'M', 'ĭ'), - (0x12D, 'V'), - (0x12E, 'M', 'į'), - (0x12F, 'V'), - (0x130, 'M', 'i̇'), - (0x131, 'V'), - (0x132, 'M', 'ij'), - (0x134, 'M', 'ĵ'), - (0x135, 'V'), - (0x136, 'M', 'ķ'), - (0x137, 'V'), - (0x139, 'M', 'ĺ'), - (0x13A, 'V'), - (0x13B, 'M', 'ļ'), - (0x13C, 'V'), - (0x13D, 'M', 'ľ'), - (0x13E, 'V'), - (0x13F, 'M', 'l·'), - (0x141, 'M', 'ł'), - (0x142, 'V'), - (0x143, 'M', 'ń'), - (0x144, 'V'), - (0x145, 'M', 'ņ'), - (0x146, 'V'), - (0x147, 'M', 'ň'), - (0x148, 'V'), - (0x149, 'M', 'ʼn'), - (0x14A, 'M', 'ŋ'), - (0x14B, 'V'), - (0x14C, 'M', 'ō'), - (0x14D, 'V'), - (0x14E, 'M', 'ŏ'), - (0x14F, 'V'), - (0x150, 'M', 'ő'), - (0x151, 'V'), - (0x152, 'M', 'œ'), - (0x153, 'V'), - (0x154, 'M', 'ŕ'), - (0x155, 'V'), - (0x156, 'M', 'ŗ'), - (0x157, 'V'), - (0x158, 'M', 'ř'), - (0x159, 'V'), - (0x15A, 'M', 'ś'), - (0x15B, 'V'), - (0x15C, 'M', 'ŝ'), - (0x15D, 'V'), - (0x15E, 'M', 'ş'), - (0x15F, 'V'), - (0x160, 'M', 'š'), - (0x161, 'V'), - (0x162, 'M', 'ţ'), - (0x163, 'V'), - (0x164, 'M', 'ť'), - (0x165, 'V'), - (0x166, 'M', 'ŧ'), - (0x167, 'V'), - (0x168, 'M', 'ũ'), - (0x169, 'V'), - (0x16A, 'M', 'ū'), - (0x16B, 'V'), - (0x16C, 'M', 'ŭ'), - (0x16D, 'V'), - (0x16E, 'M', 'ů'), - (0x16F, 'V'), - (0x170, 'M', 'ű'), - (0x171, 'V'), - (0x172, 'M', 'ų'), - (0x173, 'V'), - (0x174, 'M', 'ŵ'), - (0x175, 'V'), - (0x176, 'M', 'ŷ'), - (0x177, 'V'), - (0x178, 'M', 'ÿ'), - (0x179, 'M', 'ź'), - (0x17A, 'V'), - (0x17B, 'M', 'ż'), - (0x17C, 'V'), - (0x17D, 'M', 'ž'), - (0x17E, 'V'), - (0x17F, 'M', 's'), - (0x180, 'V'), - (0x181, 'M', 'ɓ'), - (0x182, 'M', 'ƃ'), - (0x183, 'V'), - (0x184, 'M', 'ƅ'), - (0x185, 'V'), - (0x186, 'M', 'ɔ'), - (0x187, 'M', 'ƈ'), - (0x188, 'V'), - (0x189, 'M', 'ɖ'), - (0x18A, 'M', 'ɗ'), - (0x18B, 'M', 'ƌ'), - (0x18C, 'V'), - (0x18E, 'M', 'ǝ'), - (0x18F, 'M', 'ə'), - (0x190, 'M', 'ɛ'), - (0x191, 'M', 'ƒ'), - (0x192, 'V'), - (0x193, 'M', 'ɠ'), + (0x12C, "M", "ĭ"), + (0x12D, "V"), + (0x12E, "M", "į"), + (0x12F, "V"), + (0x130, "M", "i̇"), + (0x131, "V"), + (0x132, "M", "ij"), + (0x134, "M", "ĵ"), + (0x135, "V"), + (0x136, "M", "ķ"), + (0x137, "V"), + (0x139, "M", "ĺ"), + (0x13A, "V"), + (0x13B, "M", "ļ"), + (0x13C, "V"), + (0x13D, "M", "ľ"), + (0x13E, "V"), + (0x13F, "M", "l·"), + (0x141, "M", "ł"), + (0x142, "V"), + (0x143, "M", "ń"), + (0x144, "V"), + (0x145, "M", "ņ"), + (0x146, "V"), + (0x147, "M", "ň"), + (0x148, "V"), + (0x149, "M", "ʼn"), + (0x14A, "M", "ŋ"), + (0x14B, "V"), + (0x14C, "M", "ō"), + (0x14D, "V"), + (0x14E, "M", "ŏ"), + (0x14F, "V"), + (0x150, "M", "ő"), + (0x151, "V"), + (0x152, "M", "œ"), + (0x153, "V"), + (0x154, "M", "ŕ"), + (0x155, "V"), + (0x156, "M", "ŗ"), + (0x157, "V"), + (0x158, "M", "ř"), + (0x159, "V"), + (0x15A, "M", "ś"), + (0x15B, "V"), + (0x15C, "M", "ŝ"), + (0x15D, "V"), + (0x15E, "M", "ş"), + (0x15F, "V"), + (0x160, "M", "š"), + (0x161, "V"), + (0x162, "M", "ţ"), + (0x163, "V"), + (0x164, "M", "ť"), + (0x165, "V"), + (0x166, "M", "ŧ"), + (0x167, "V"), + (0x168, "M", "ũ"), + (0x169, "V"), + (0x16A, "M", "ū"), + (0x16B, "V"), + (0x16C, "M", "ŭ"), + (0x16D, "V"), + (0x16E, "M", "ů"), + (0x16F, "V"), + (0x170, "M", "ű"), + (0x171, "V"), + (0x172, "M", "ų"), + (0x173, "V"), + (0x174, "M", "ŵ"), + (0x175, "V"), + (0x176, "M", "ŷ"), + (0x177, "V"), + (0x178, "M", "ÿ"), + (0x179, "M", "ź"), + (0x17A, "V"), + (0x17B, "M", "ż"), + (0x17C, "V"), + (0x17D, "M", "ž"), + (0x17E, "V"), + (0x17F, "M", "s"), + (0x180, "V"), + (0x181, "M", "ɓ"), + (0x182, "M", "ƃ"), + (0x183, "V"), + (0x184, "M", "ƅ"), + (0x185, "V"), + (0x186, "M", "ɔ"), + (0x187, "M", "ƈ"), + (0x188, "V"), + (0x189, "M", "ɖ"), + (0x18A, "M", "ɗ"), + (0x18B, "M", "ƌ"), + (0x18C, "V"), + (0x18E, "M", "ǝ"), + (0x18F, "M", "ə"), + (0x190, "M", "ɛ"), + (0x191, "M", "ƒ"), + (0x192, "V"), + (0x193, "M", "ɠ"), ] + def _seg_4() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: return [ - (0x194, 'M', 'ɣ'), - (0x195, 'V'), - (0x196, 'M', 'ɩ'), - (0x197, 'M', 'ɨ'), - (0x198, 'M', 'ƙ'), - (0x199, 'V'), - (0x19C, 'M', 'ɯ'), - (0x19D, 'M', 'ɲ'), - (0x19E, 'V'), - (0x19F, 'M', 'ɵ'), - (0x1A0, 'M', 'ơ'), - (0x1A1, 'V'), - (0x1A2, 'M', 'ƣ'), - (0x1A3, 'V'), - (0x1A4, 'M', 'ƥ'), - (0x1A5, 'V'), - (0x1A6, 'M', 'ʀ'), - (0x1A7, 'M', 'ƨ'), - (0x1A8, 'V'), - (0x1A9, 'M', 'ʃ'), - (0x1AA, 'V'), - (0x1AC, 'M', 'ƭ'), - (0x1AD, 'V'), - (0x1AE, 'M', 'ʈ'), - (0x1AF, 'M', 'ư'), - (0x1B0, 'V'), - (0x1B1, 'M', 'ʊ'), - (0x1B2, 'M', 'ʋ'), - (0x1B3, 'M', 'ƴ'), - (0x1B4, 'V'), - (0x1B5, 'M', 'ƶ'), - (0x1B6, 'V'), - (0x1B7, 'M', 'ʒ'), - (0x1B8, 'M', 'ƹ'), - (0x1B9, 'V'), - (0x1BC, 'M', 'ƽ'), - (0x1BD, 'V'), - (0x1C4, 'M', 'dž'), - (0x1C7, 'M', 'lj'), - (0x1CA, 'M', 'nj'), - (0x1CD, 'M', 'ǎ'), - (0x1CE, 'V'), - (0x1CF, 'M', 'ǐ'), - (0x1D0, 'V'), - (0x1D1, 'M', 'ǒ'), - (0x1D2, 'V'), - (0x1D3, 'M', 'ǔ'), - (0x1D4, 'V'), - (0x1D5, 'M', 'ǖ'), - (0x1D6, 'V'), - (0x1D7, 'M', 'ǘ'), - (0x1D8, 'V'), - (0x1D9, 'M', 'ǚ'), - (0x1DA, 'V'), - (0x1DB, 'M', 'ǜ'), - (0x1DC, 'V'), - (0x1DE, 'M', 'ǟ'), - (0x1DF, 'V'), - (0x1E0, 'M', 'ǡ'), - (0x1E1, 'V'), - (0x1E2, 'M', 'ǣ'), - (0x1E3, 'V'), - (0x1E4, 'M', 'ǥ'), - (0x1E5, 'V'), - (0x1E6, 'M', 'ǧ'), - (0x1E7, 'V'), - (0x1E8, 'M', 'ǩ'), - (0x1E9, 'V'), - (0x1EA, 'M', 'ǫ'), - (0x1EB, 'V'), - (0x1EC, 'M', 'ǭ'), - (0x1ED, 'V'), - (0x1EE, 'M', 'ǯ'), - (0x1EF, 'V'), - (0x1F1, 'M', 'dz'), - (0x1F4, 'M', 'ǵ'), - (0x1F5, 'V'), - (0x1F6, 'M', 'ƕ'), - (0x1F7, 'M', 'ƿ'), - (0x1F8, 'M', 'ǹ'), - (0x1F9, 'V'), - (0x1FA, 'M', 'ǻ'), - (0x1FB, 'V'), - (0x1FC, 'M', 'ǽ'), - (0x1FD, 'V'), - (0x1FE, 'M', 'ǿ'), - (0x1FF, 'V'), - (0x200, 'M', 'ȁ'), - (0x201, 'V'), - (0x202, 'M', 'ȃ'), - (0x203, 'V'), - (0x204, 'M', 'ȅ'), - (0x205, 'V'), - (0x206, 'M', 'ȇ'), - (0x207, 'V'), - (0x208, 'M', 'ȉ'), - (0x209, 'V'), - (0x20A, 'M', 'ȋ'), - (0x20B, 'V'), - (0x20C, 'M', 'ȍ'), + (0x194, "M", "ɣ"), + (0x195, "V"), + (0x196, "M", "ɩ"), + (0x197, "M", "ɨ"), + (0x198, "M", "ƙ"), + (0x199, "V"), + (0x19C, "M", "ɯ"), + (0x19D, "M", "ɲ"), + (0x19E, "V"), + (0x19F, "M", "ɵ"), + (0x1A0, "M", "ơ"), + (0x1A1, "V"), + (0x1A2, "M", "ƣ"), + (0x1A3, "V"), + (0x1A4, "M", "ƥ"), + (0x1A5, "V"), + (0x1A6, "M", "ʀ"), + (0x1A7, "M", "ƨ"), + (0x1A8, "V"), + (0x1A9, "M", "ʃ"), + (0x1AA, "V"), + (0x1AC, "M", "ƭ"), + (0x1AD, "V"), + (0x1AE, "M", "ʈ"), + (0x1AF, "M", "ư"), + (0x1B0, "V"), + (0x1B1, "M", "ʊ"), + (0x1B2, "M", "ʋ"), + (0x1B3, "M", "ƴ"), + (0x1B4, "V"), + (0x1B5, "M", "ƶ"), + (0x1B6, "V"), + (0x1B7, "M", "ʒ"), + (0x1B8, "M", "ƹ"), + (0x1B9, "V"), + (0x1BC, "M", "ƽ"), + (0x1BD, "V"), + (0x1C4, "M", "dž"), + (0x1C7, "M", "lj"), + (0x1CA, "M", "nj"), + (0x1CD, "M", "ǎ"), + (0x1CE, "V"), + (0x1CF, "M", "ǐ"), + (0x1D0, "V"), + (0x1D1, "M", "ǒ"), + (0x1D2, "V"), + (0x1D3, "M", "ǔ"), + (0x1D4, "V"), + (0x1D5, "M", "ǖ"), + (0x1D6, "V"), + (0x1D7, "M", "ǘ"), + (0x1D8, "V"), + (0x1D9, "M", "ǚ"), + (0x1DA, "V"), + (0x1DB, "M", "ǜ"), + (0x1DC, "V"), + (0x1DE, "M", "ǟ"), + (0x1DF, "V"), + (0x1E0, "M", "ǡ"), + (0x1E1, "V"), + (0x1E2, "M", "ǣ"), + (0x1E3, "V"), + (0x1E4, "M", "ǥ"), + (0x1E5, "V"), + (0x1E6, "M", "ǧ"), + (0x1E7, "V"), + (0x1E8, "M", "ǩ"), + (0x1E9, "V"), + (0x1EA, "M", "ǫ"), + (0x1EB, "V"), + (0x1EC, "M", "ǭ"), + (0x1ED, "V"), + (0x1EE, "M", "ǯ"), + (0x1EF, "V"), + (0x1F1, "M", "dz"), + (0x1F4, "M", "ǵ"), + (0x1F5, "V"), + (0x1F6, "M", "ƕ"), + (0x1F7, "M", "ƿ"), + (0x1F8, "M", "ǹ"), + (0x1F9, "V"), + (0x1FA, "M", "ǻ"), + (0x1FB, "V"), + (0x1FC, "M", "ǽ"), + (0x1FD, "V"), + (0x1FE, "M", "ǿ"), + (0x1FF, "V"), + (0x200, "M", "ȁ"), + (0x201, "V"), + (0x202, "M", "ȃ"), + (0x203, "V"), + (0x204, "M", "ȅ"), + (0x205, "V"), + (0x206, "M", "ȇ"), + (0x207, "V"), + (0x208, "M", "ȉ"), + (0x209, "V"), + (0x20A, "M", "ȋ"), + (0x20B, "V"), + (0x20C, "M", "ȍ"), ] + def _seg_5() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: return [ - (0x20D, 'V'), - (0x20E, 'M', 'ȏ'), - (0x20F, 'V'), - (0x210, 'M', 'ȑ'), - (0x211, 'V'), - (0x212, 'M', 'ȓ'), - (0x213, 'V'), - (0x214, 'M', 'ȕ'), - (0x215, 'V'), - (0x216, 'M', 'ȗ'), - (0x217, 'V'), - (0x218, 'M', 'ș'), - (0x219, 'V'), - (0x21A, 'M', 'ț'), - (0x21B, 'V'), - (0x21C, 'M', 'ȝ'), - (0x21D, 'V'), - (0x21E, 'M', 'ȟ'), - (0x21F, 'V'), - (0x220, 'M', 'ƞ'), - (0x221, 'V'), - (0x222, 'M', 'ȣ'), - (0x223, 'V'), - (0x224, 'M', 'ȥ'), - (0x225, 'V'), - (0x226, 'M', 'ȧ'), - (0x227, 'V'), - (0x228, 'M', 'ȩ'), - (0x229, 'V'), - (0x22A, 'M', 'ȫ'), - (0x22B, 'V'), - (0x22C, 'M', 'ȭ'), - (0x22D, 'V'), - (0x22E, 'M', 'ȯ'), - (0x22F, 'V'), - (0x230, 'M', 'ȱ'), - (0x231, 'V'), - (0x232, 'M', 'ȳ'), - (0x233, 'V'), - (0x23A, 'M', 'ⱥ'), - (0x23B, 'M', 'ȼ'), - (0x23C, 'V'), - (0x23D, 'M', 'ƚ'), - (0x23E, 'M', 'ⱦ'), - (0x23F, 'V'), - (0x241, 'M', 'ɂ'), - (0x242, 'V'), - (0x243, 'M', 'ƀ'), - (0x244, 'M', 'ʉ'), - (0x245, 'M', 'ʌ'), - (0x246, 'M', 'ɇ'), - (0x247, 'V'), - (0x248, 'M', 'ɉ'), - (0x249, 'V'), - (0x24A, 'M', 'ɋ'), - (0x24B, 'V'), - (0x24C, 'M', 'ɍ'), - (0x24D, 'V'), - (0x24E, 'M', 'ɏ'), - (0x24F, 'V'), - (0x2B0, 'M', 'h'), - (0x2B1, 'M', 'ɦ'), - (0x2B2, 'M', 'j'), - (0x2B3, 'M', 'r'), - (0x2B4, 'M', 'ɹ'), - (0x2B5, 'M', 'ɻ'), - (0x2B6, 'M', 'ʁ'), - (0x2B7, 'M', 'w'), - (0x2B8, 'M', 'y'), - (0x2B9, 'V'), - (0x2D8, '3', ' ̆'), - (0x2D9, '3', ' ̇'), - (0x2DA, '3', ' ̊'), - (0x2DB, '3', ' ̨'), - (0x2DC, '3', ' ̃'), - (0x2DD, '3', ' ̋'), - (0x2DE, 'V'), - (0x2E0, 'M', 'ɣ'), - (0x2E1, 'M', 'l'), - (0x2E2, 'M', 's'), - (0x2E3, 'M', 'x'), - (0x2E4, 'M', 'ʕ'), - (0x2E5, 'V'), - (0x340, 'M', '̀'), - (0x341, 'M', '́'), - (0x342, 'V'), - (0x343, 'M', '̓'), - (0x344, 'M', '̈́'), - (0x345, 'M', 'ι'), - (0x346, 'V'), - (0x34F, 'I'), - (0x350, 'V'), - (0x370, 'M', 'ͱ'), - (0x371, 'V'), - (0x372, 'M', 'ͳ'), - (0x373, 'V'), - (0x374, 'M', 'ʹ'), - (0x375, 'V'), - (0x376, 'M', 'ͷ'), - (0x377, 'V'), + (0x20D, "V"), + (0x20E, "M", "ȏ"), + (0x20F, "V"), + (0x210, "M", "ȑ"), + (0x211, "V"), + (0x212, "M", "ȓ"), + (0x213, "V"), + (0x214, "M", "ȕ"), + (0x215, "V"), + (0x216, "M", "ȗ"), + (0x217, "V"), + (0x218, "M", "ș"), + (0x219, "V"), + (0x21A, "M", "ț"), + (0x21B, "V"), + (0x21C, "M", "ȝ"), + (0x21D, "V"), + (0x21E, "M", "ȟ"), + (0x21F, "V"), + (0x220, "M", "ƞ"), + (0x221, "V"), + (0x222, "M", "ȣ"), + (0x223, "V"), + (0x224, "M", "ȥ"), + (0x225, "V"), + (0x226, "M", "ȧ"), + (0x227, "V"), + (0x228, "M", "ȩ"), + (0x229, "V"), + (0x22A, "M", "ȫ"), + (0x22B, "V"), + (0x22C, "M", "ȭ"), + (0x22D, "V"), + (0x22E, "M", "ȯ"), + (0x22F, "V"), + (0x230, "M", "ȱ"), + (0x231, "V"), + (0x232, "M", "ȳ"), + (0x233, "V"), + (0x23A, "M", "ⱥ"), + (0x23B, "M", "ȼ"), + (0x23C, "V"), + (0x23D, "M", "ƚ"), + (0x23E, "M", "ⱦ"), + (0x23F, "V"), + (0x241, "M", "ɂ"), + (0x242, "V"), + (0x243, "M", "ƀ"), + (0x244, "M", "ʉ"), + (0x245, "M", "ʌ"), + (0x246, "M", "ɇ"), + (0x247, "V"), + (0x248, "M", "ɉ"), + (0x249, "V"), + (0x24A, "M", "ɋ"), + (0x24B, "V"), + (0x24C, "M", "ɍ"), + (0x24D, "V"), + (0x24E, "M", "ɏ"), + (0x24F, "V"), + (0x2B0, "M", "h"), + (0x2B1, "M", "ɦ"), + (0x2B2, "M", "j"), + (0x2B3, "M", "r"), + (0x2B4, "M", "ɹ"), + (0x2B5, "M", "ɻ"), + (0x2B6, "M", "ʁ"), + (0x2B7, "M", "w"), + (0x2B8, "M", "y"), + (0x2B9, "V"), + (0x2D8, "3", " ̆"), + (0x2D9, "3", " ̇"), + (0x2DA, "3", " ̊"), + (0x2DB, "3", " ̨"), + (0x2DC, "3", " ̃"), + (0x2DD, "3", " ̋"), + (0x2DE, "V"), + (0x2E0, "M", "ɣ"), + (0x2E1, "M", "l"), + (0x2E2, "M", "s"), + (0x2E3, "M", "x"), + (0x2E4, "M", "ʕ"), + (0x2E5, "V"), + (0x340, "M", "̀"), + (0x341, "M", "́"), + (0x342, "V"), + (0x343, "M", "̓"), + (0x344, "M", "̈́"), + (0x345, "M", "ι"), + (0x346, "V"), + (0x34F, "I"), + (0x350, "V"), + (0x370, "M", "ͱ"), + (0x371, "V"), + (0x372, "M", "ͳ"), + (0x373, "V"), + (0x374, "M", "ʹ"), + (0x375, "V"), + (0x376, "M", "ͷ"), + (0x377, "V"), ] + def _seg_6() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: return [ - (0x378, 'X'), - (0x37A, '3', ' ι'), - (0x37B, 'V'), - (0x37E, '3', ';'), - (0x37F, 'M', 'ϳ'), - (0x380, 'X'), - (0x384, '3', ' ́'), - (0x385, '3', ' ̈́'), - (0x386, 'M', 'ά'), - (0x387, 'M', '·'), - (0x388, 'M', 'έ'), - (0x389, 'M', 'ή'), - (0x38A, 'M', 'ί'), - (0x38B, 'X'), - (0x38C, 'M', 'ό'), - (0x38D, 'X'), - (0x38E, 'M', 'ύ'), - (0x38F, 'M', 'ώ'), - (0x390, 'V'), - (0x391, 'M', 'α'), - (0x392, 'M', 'β'), - (0x393, 'M', 'γ'), - (0x394, 'M', 'δ'), - (0x395, 'M', 'ε'), - (0x396, 'M', 'ζ'), - (0x397, 'M', 'η'), - (0x398, 'M', 'θ'), - (0x399, 'M', 'ι'), - (0x39A, 'M', 'κ'), - (0x39B, 'M', 'λ'), - (0x39C, 'M', 'μ'), - (0x39D, 'M', 'ν'), - (0x39E, 'M', 'ξ'), - (0x39F, 'M', 'ο'), - (0x3A0, 'M', 'π'), - (0x3A1, 'M', 'ρ'), - (0x3A2, 'X'), - (0x3A3, 'M', 'σ'), - (0x3A4, 'M', 'τ'), - (0x3A5, 'M', 'υ'), - (0x3A6, 'M', 'φ'), - (0x3A7, 'M', 'χ'), - (0x3A8, 'M', 'ψ'), - (0x3A9, 'M', 'ω'), - (0x3AA, 'M', 'ϊ'), - (0x3AB, 'M', 'ϋ'), - (0x3AC, 'V'), - (0x3C2, 'D', 'σ'), - (0x3C3, 'V'), - (0x3CF, 'M', 'ϗ'), - (0x3D0, 'M', 'β'), - (0x3D1, 'M', 'θ'), - (0x3D2, 'M', 'υ'), - (0x3D3, 'M', 'ύ'), - (0x3D4, 'M', 'ϋ'), - (0x3D5, 'M', 'φ'), - (0x3D6, 'M', 'π'), - (0x3D7, 'V'), - (0x3D8, 'M', 'ϙ'), - (0x3D9, 'V'), - (0x3DA, 'M', 'ϛ'), - (0x3DB, 'V'), - (0x3DC, 'M', 'ϝ'), - (0x3DD, 'V'), - (0x3DE, 'M', 'ϟ'), - (0x3DF, 'V'), - (0x3E0, 'M', 'ϡ'), - (0x3E1, 'V'), - (0x3E2, 'M', 'ϣ'), - (0x3E3, 'V'), - (0x3E4, 'M', 'ϥ'), - (0x3E5, 'V'), - (0x3E6, 'M', 'ϧ'), - (0x3E7, 'V'), - (0x3E8, 'M', 'ϩ'), - (0x3E9, 'V'), - (0x3EA, 'M', 'ϫ'), - (0x3EB, 'V'), - (0x3EC, 'M', 'ϭ'), - (0x3ED, 'V'), - (0x3EE, 'M', 'ϯ'), - (0x3EF, 'V'), - (0x3F0, 'M', 'κ'), - (0x3F1, 'M', 'ρ'), - (0x3F2, 'M', 'σ'), - (0x3F3, 'V'), - (0x3F4, 'M', 'θ'), - (0x3F5, 'M', 'ε'), - (0x3F6, 'V'), - (0x3F7, 'M', 'ϸ'), - (0x3F8, 'V'), - (0x3F9, 'M', 'σ'), - (0x3FA, 'M', 'ϻ'), - (0x3FB, 'V'), - (0x3FD, 'M', 'ͻ'), - (0x3FE, 'M', 'ͼ'), - (0x3FF, 'M', 'ͽ'), - (0x400, 'M', 'ѐ'), - (0x401, 'M', 'ё'), - (0x402, 'M', 'ђ'), + (0x378, "X"), + (0x37A, "3", " ι"), + (0x37B, "V"), + (0x37E, "3", ";"), + (0x37F, "M", "ϳ"), + (0x380, "X"), + (0x384, "3", " ́"), + (0x385, "3", " ̈́"), + (0x386, "M", "ά"), + (0x387, "M", "·"), + (0x388, "M", "έ"), + (0x389, "M", "ή"), + (0x38A, "M", "ί"), + (0x38B, "X"), + (0x38C, "M", "ό"), + (0x38D, "X"), + (0x38E, "M", "ύ"), + (0x38F, "M", "ώ"), + (0x390, "V"), + (0x391, "M", "α"), + (0x392, "M", "β"), + (0x393, "M", "γ"), + (0x394, "M", "δ"), + (0x395, "M", "ε"), + (0x396, "M", "ζ"), + (0x397, "M", "η"), + (0x398, "M", "θ"), + (0x399, "M", "ι"), + (0x39A, "M", "κ"), + (0x39B, "M", "λ"), + (0x39C, "M", "μ"), + (0x39D, "M", "ν"), + (0x39E, "M", "ξ"), + (0x39F, "M", "ο"), + (0x3A0, "M", "π"), + (0x3A1, "M", "ρ"), + (0x3A2, "X"), + (0x3A3, "M", "σ"), + (0x3A4, "M", "τ"), + (0x3A5, "M", "υ"), + (0x3A6, "M", "φ"), + (0x3A7, "M", "χ"), + (0x3A8, "M", "ψ"), + (0x3A9, "M", "ω"), + (0x3AA, "M", "ϊ"), + (0x3AB, "M", "ϋ"), + (0x3AC, "V"), + (0x3C2, "D", "σ"), + (0x3C3, "V"), + (0x3CF, "M", "ϗ"), + (0x3D0, "M", "β"), + (0x3D1, "M", "θ"), + (0x3D2, "M", "υ"), + (0x3D3, "M", "ύ"), + (0x3D4, "M", "ϋ"), + (0x3D5, "M", "φ"), + (0x3D6, "M", "π"), + (0x3D7, "V"), + (0x3D8, "M", "ϙ"), + (0x3D9, "V"), + (0x3DA, "M", "ϛ"), + (0x3DB, "V"), + (0x3DC, "M", "ϝ"), + (0x3DD, "V"), + (0x3DE, "M", "ϟ"), + (0x3DF, "V"), + (0x3E0, "M", "ϡ"), + (0x3E1, "V"), + (0x3E2, "M", "ϣ"), + (0x3E3, "V"), + (0x3E4, "M", "ϥ"), + (0x3E5, "V"), + (0x3E6, "M", "ϧ"), + (0x3E7, "V"), + (0x3E8, "M", "ϩ"), + (0x3E9, "V"), + (0x3EA, "M", "ϫ"), + (0x3EB, "V"), + (0x3EC, "M", "ϭ"), + (0x3ED, "V"), + (0x3EE, "M", "ϯ"), + (0x3EF, "V"), + (0x3F0, "M", "κ"), + (0x3F1, "M", "ρ"), + (0x3F2, "M", "σ"), + (0x3F3, "V"), + (0x3F4, "M", "θ"), + (0x3F5, "M", "ε"), + (0x3F6, "V"), + (0x3F7, "M", "ϸ"), + (0x3F8, "V"), + (0x3F9, "M", "σ"), + (0x3FA, "M", "ϻ"), + (0x3FB, "V"), + (0x3FD, "M", "ͻ"), + (0x3FE, "M", "ͼ"), + (0x3FF, "M", "ͽ"), + (0x400, "M", "ѐ"), + (0x401, "M", "ё"), + (0x402, "M", "ђ"), ] + def _seg_7() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: return [ - (0x403, 'M', 'ѓ'), - (0x404, 'M', 'є'), - (0x405, 'M', 'ѕ'), - (0x406, 'M', 'і'), - (0x407, 'M', 'ї'), - (0x408, 'M', 'ј'), - (0x409, 'M', 'љ'), - (0x40A, 'M', 'њ'), - (0x40B, 'M', 'ћ'), - (0x40C, 'M', 'ќ'), - (0x40D, 'M', 'ѝ'), - (0x40E, 'M', 'ў'), - (0x40F, 'M', 'џ'), - (0x410, 'M', 'а'), - (0x411, 'M', 'б'), - (0x412, 'M', 'в'), - (0x413, 'M', 'г'), - (0x414, 'M', 'д'), - (0x415, 'M', 'е'), - (0x416, 'M', 'ж'), - (0x417, 'M', 'з'), - (0x418, 'M', 'и'), - (0x419, 'M', 'й'), - (0x41A, 'M', 'к'), - (0x41B, 'M', 'л'), - (0x41C, 'M', 'м'), - (0x41D, 'M', 'н'), - (0x41E, 'M', 'о'), - (0x41F, 'M', 'п'), - (0x420, 'M', 'р'), - (0x421, 'M', 'с'), - (0x422, 'M', 'т'), - (0x423, 'M', 'у'), - (0x424, 'M', 'ф'), - (0x425, 'M', 'х'), - (0x426, 'M', 'ц'), - (0x427, 'M', 'ч'), - (0x428, 'M', 'ш'), - (0x429, 'M', 'щ'), - (0x42A, 'M', 'ъ'), - (0x42B, 'M', 'ы'), - (0x42C, 'M', 'ь'), - (0x42D, 'M', 'э'), - (0x42E, 'M', 'ю'), - (0x42F, 'M', 'я'), - (0x430, 'V'), - (0x460, 'M', 'ѡ'), - (0x461, 'V'), - (0x462, 'M', 'ѣ'), - (0x463, 'V'), - (0x464, 'M', 'ѥ'), - (0x465, 'V'), - (0x466, 'M', 'ѧ'), - (0x467, 'V'), - (0x468, 'M', 'ѩ'), - (0x469, 'V'), - (0x46A, 'M', 'ѫ'), - (0x46B, 'V'), - (0x46C, 'M', 'ѭ'), - (0x46D, 'V'), - (0x46E, 'M', 'ѯ'), - (0x46F, 'V'), - (0x470, 'M', 'ѱ'), - (0x471, 'V'), - (0x472, 'M', 'ѳ'), - (0x473, 'V'), - (0x474, 'M', 'ѵ'), - (0x475, 'V'), - (0x476, 'M', 'ѷ'), - (0x477, 'V'), - (0x478, 'M', 'ѹ'), - (0x479, 'V'), - (0x47A, 'M', 'ѻ'), - (0x47B, 'V'), - (0x47C, 'M', 'ѽ'), - (0x47D, 'V'), - (0x47E, 'M', 'ѿ'), - (0x47F, 'V'), - (0x480, 'M', 'ҁ'), - (0x481, 'V'), - (0x48A, 'M', 'ҋ'), - (0x48B, 'V'), - (0x48C, 'M', 'ҍ'), - (0x48D, 'V'), - (0x48E, 'M', 'ҏ'), - (0x48F, 'V'), - (0x490, 'M', 'ґ'), - (0x491, 'V'), - (0x492, 'M', 'ғ'), - (0x493, 'V'), - (0x494, 'M', 'ҕ'), - (0x495, 'V'), - (0x496, 'M', 'җ'), - (0x497, 'V'), - (0x498, 'M', 'ҙ'), - (0x499, 'V'), - (0x49A, 'M', 'қ'), - (0x49B, 'V'), - (0x49C, 'M', 'ҝ'), - (0x49D, 'V'), + (0x403, "M", "ѓ"), + (0x404, "M", "є"), + (0x405, "M", "ѕ"), + (0x406, "M", "і"), + (0x407, "M", "ї"), + (0x408, "M", "ј"), + (0x409, "M", "љ"), + (0x40A, "M", "њ"), + (0x40B, "M", "ћ"), + (0x40C, "M", "ќ"), + (0x40D, "M", "ѝ"), + (0x40E, "M", "ў"), + (0x40F, "M", "џ"), + (0x410, "M", "а"), + (0x411, "M", "б"), + (0x412, "M", "в"), + (0x413, "M", "г"), + (0x414, "M", "д"), + (0x415, "M", "е"), + (0x416, "M", "ж"), + (0x417, "M", "з"), + (0x418, "M", "и"), + (0x419, "M", "й"), + (0x41A, "M", "к"), + (0x41B, "M", "л"), + (0x41C, "M", "м"), + (0x41D, "M", "н"), + (0x41E, "M", "о"), + (0x41F, "M", "п"), + (0x420, "M", "р"), + (0x421, "M", "с"), + (0x422, "M", "т"), + (0x423, "M", "у"), + (0x424, "M", "ф"), + (0x425, "M", "х"), + (0x426, "M", "ц"), + (0x427, "M", "ч"), + (0x428, "M", "ш"), + (0x429, "M", "щ"), + (0x42A, "M", "ъ"), + (0x42B, "M", "ы"), + (0x42C, "M", "ь"), + (0x42D, "M", "э"), + (0x42E, "M", "ю"), + (0x42F, "M", "я"), + (0x430, "V"), + (0x460, "M", "ѡ"), + (0x461, "V"), + (0x462, "M", "ѣ"), + (0x463, "V"), + (0x464, "M", "ѥ"), + (0x465, "V"), + (0x466, "M", "ѧ"), + (0x467, "V"), + (0x468, "M", "ѩ"), + (0x469, "V"), + (0x46A, "M", "ѫ"), + (0x46B, "V"), + (0x46C, "M", "ѭ"), + (0x46D, "V"), + (0x46E, "M", "ѯ"), + (0x46F, "V"), + (0x470, "M", "ѱ"), + (0x471, "V"), + (0x472, "M", "ѳ"), + (0x473, "V"), + (0x474, "M", "ѵ"), + (0x475, "V"), + (0x476, "M", "ѷ"), + (0x477, "V"), + (0x478, "M", "ѹ"), + (0x479, "V"), + (0x47A, "M", "ѻ"), + (0x47B, "V"), + (0x47C, "M", "ѽ"), + (0x47D, "V"), + (0x47E, "M", "ѿ"), + (0x47F, "V"), + (0x480, "M", "ҁ"), + (0x481, "V"), + (0x48A, "M", "ҋ"), + (0x48B, "V"), + (0x48C, "M", "ҍ"), + (0x48D, "V"), + (0x48E, "M", "ҏ"), + (0x48F, "V"), + (0x490, "M", "ґ"), + (0x491, "V"), + (0x492, "M", "ғ"), + (0x493, "V"), + (0x494, "M", "ҕ"), + (0x495, "V"), + (0x496, "M", "җ"), + (0x497, "V"), + (0x498, "M", "ҙ"), + (0x499, "V"), + (0x49A, "M", "қ"), + (0x49B, "V"), + (0x49C, "M", "ҝ"), + (0x49D, "V"), ] + def _seg_8() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: return [ - (0x49E, 'M', 'ҟ'), - (0x49F, 'V'), - (0x4A0, 'M', 'ҡ'), - (0x4A1, 'V'), - (0x4A2, 'M', 'ң'), - (0x4A3, 'V'), - (0x4A4, 'M', 'ҥ'), - (0x4A5, 'V'), - (0x4A6, 'M', 'ҧ'), - (0x4A7, 'V'), - (0x4A8, 'M', 'ҩ'), - (0x4A9, 'V'), - (0x4AA, 'M', 'ҫ'), - (0x4AB, 'V'), - (0x4AC, 'M', 'ҭ'), - (0x4AD, 'V'), - (0x4AE, 'M', 'ү'), - (0x4AF, 'V'), - (0x4B0, 'M', 'ұ'), - (0x4B1, 'V'), - (0x4B2, 'M', 'ҳ'), - (0x4B3, 'V'), - (0x4B4, 'M', 'ҵ'), - (0x4B5, 'V'), - (0x4B6, 'M', 'ҷ'), - (0x4B7, 'V'), - (0x4B8, 'M', 'ҹ'), - (0x4B9, 'V'), - (0x4BA, 'M', 'һ'), - (0x4BB, 'V'), - (0x4BC, 'M', 'ҽ'), - (0x4BD, 'V'), - (0x4BE, 'M', 'ҿ'), - (0x4BF, 'V'), - (0x4C0, 'X'), - (0x4C1, 'M', 'ӂ'), - (0x4C2, 'V'), - (0x4C3, 'M', 'ӄ'), - (0x4C4, 'V'), - (0x4C5, 'M', 'ӆ'), - (0x4C6, 'V'), - (0x4C7, 'M', 'ӈ'), - (0x4C8, 'V'), - (0x4C9, 'M', 'ӊ'), - (0x4CA, 'V'), - (0x4CB, 'M', 'ӌ'), - (0x4CC, 'V'), - (0x4CD, 'M', 'ӎ'), - (0x4CE, 'V'), - (0x4D0, 'M', 'ӑ'), - (0x4D1, 'V'), - (0x4D2, 'M', 'ӓ'), - (0x4D3, 'V'), - (0x4D4, 'M', 'ӕ'), - (0x4D5, 'V'), - (0x4D6, 'M', 'ӗ'), - (0x4D7, 'V'), - (0x4D8, 'M', 'ә'), - (0x4D9, 'V'), - (0x4DA, 'M', 'ӛ'), - (0x4DB, 'V'), - (0x4DC, 'M', 'ӝ'), - (0x4DD, 'V'), - (0x4DE, 'M', 'ӟ'), - (0x4DF, 'V'), - (0x4E0, 'M', 'ӡ'), - (0x4E1, 'V'), - (0x4E2, 'M', 'ӣ'), - (0x4E3, 'V'), - (0x4E4, 'M', 'ӥ'), - (0x4E5, 'V'), - (0x4E6, 'M', 'ӧ'), - (0x4E7, 'V'), - (0x4E8, 'M', 'ө'), - (0x4E9, 'V'), - (0x4EA, 'M', 'ӫ'), - (0x4EB, 'V'), - (0x4EC, 'M', 'ӭ'), - (0x4ED, 'V'), - (0x4EE, 'M', 'ӯ'), - (0x4EF, 'V'), - (0x4F0, 'M', 'ӱ'), - (0x4F1, 'V'), - (0x4F2, 'M', 'ӳ'), - (0x4F3, 'V'), - (0x4F4, 'M', 'ӵ'), - (0x4F5, 'V'), - (0x4F6, 'M', 'ӷ'), - (0x4F7, 'V'), - (0x4F8, 'M', 'ӹ'), - (0x4F9, 'V'), - (0x4FA, 'M', 'ӻ'), - (0x4FB, 'V'), - (0x4FC, 'M', 'ӽ'), - (0x4FD, 'V'), - (0x4FE, 'M', 'ӿ'), - (0x4FF, 'V'), - (0x500, 'M', 'ԁ'), - (0x501, 'V'), - (0x502, 'M', 'ԃ'), + (0x49E, "M", "ҟ"), + (0x49F, "V"), + (0x4A0, "M", "ҡ"), + (0x4A1, "V"), + (0x4A2, "M", "ң"), + (0x4A3, "V"), + (0x4A4, "M", "ҥ"), + (0x4A5, "V"), + (0x4A6, "M", "ҧ"), + (0x4A7, "V"), + (0x4A8, "M", "ҩ"), + (0x4A9, "V"), + (0x4AA, "M", "ҫ"), + (0x4AB, "V"), + (0x4AC, "M", "ҭ"), + (0x4AD, "V"), + (0x4AE, "M", "ү"), + (0x4AF, "V"), + (0x4B0, "M", "ұ"), + (0x4B1, "V"), + (0x4B2, "M", "ҳ"), + (0x4B3, "V"), + (0x4B4, "M", "ҵ"), + (0x4B5, "V"), + (0x4B6, "M", "ҷ"), + (0x4B7, "V"), + (0x4B8, "M", "ҹ"), + (0x4B9, "V"), + (0x4BA, "M", "һ"), + (0x4BB, "V"), + (0x4BC, "M", "ҽ"), + (0x4BD, "V"), + (0x4BE, "M", "ҿ"), + (0x4BF, "V"), + (0x4C0, "X"), + (0x4C1, "M", "ӂ"), + (0x4C2, "V"), + (0x4C3, "M", "ӄ"), + (0x4C4, "V"), + (0x4C5, "M", "ӆ"), + (0x4C6, "V"), + (0x4C7, "M", "ӈ"), + (0x4C8, "V"), + (0x4C9, "M", "ӊ"), + (0x4CA, "V"), + (0x4CB, "M", "ӌ"), + (0x4CC, "V"), + (0x4CD, "M", "ӎ"), + (0x4CE, "V"), + (0x4D0, "M", "ӑ"), + (0x4D1, "V"), + (0x4D2, "M", "ӓ"), + (0x4D3, "V"), + (0x4D4, "M", "ӕ"), + (0x4D5, "V"), + (0x4D6, "M", "ӗ"), + (0x4D7, "V"), + (0x4D8, "M", "ә"), + (0x4D9, "V"), + (0x4DA, "M", "ӛ"), + (0x4DB, "V"), + (0x4DC, "M", "ӝ"), + (0x4DD, "V"), + (0x4DE, "M", "ӟ"), + (0x4DF, "V"), + (0x4E0, "M", "ӡ"), + (0x4E1, "V"), + (0x4E2, "M", "ӣ"), + (0x4E3, "V"), + (0x4E4, "M", "ӥ"), + (0x4E5, "V"), + (0x4E6, "M", "ӧ"), + (0x4E7, "V"), + (0x4E8, "M", "ө"), + (0x4E9, "V"), + (0x4EA, "M", "ӫ"), + (0x4EB, "V"), + (0x4EC, "M", "ӭ"), + (0x4ED, "V"), + (0x4EE, "M", "ӯ"), + (0x4EF, "V"), + (0x4F0, "M", "ӱ"), + (0x4F1, "V"), + (0x4F2, "M", "ӳ"), + (0x4F3, "V"), + (0x4F4, "M", "ӵ"), + (0x4F5, "V"), + (0x4F6, "M", "ӷ"), + (0x4F7, "V"), + (0x4F8, "M", "ӹ"), + (0x4F9, "V"), + (0x4FA, "M", "ӻ"), + (0x4FB, "V"), + (0x4FC, "M", "ӽ"), + (0x4FD, "V"), + (0x4FE, "M", "ӿ"), + (0x4FF, "V"), + (0x500, "M", "ԁ"), + (0x501, "V"), + (0x502, "M", "ԃ"), ] + def _seg_9() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: return [ - (0x503, 'V'), - (0x504, 'M', 'ԅ'), - (0x505, 'V'), - (0x506, 'M', 'ԇ'), - (0x507, 'V'), - (0x508, 'M', 'ԉ'), - (0x509, 'V'), - (0x50A, 'M', 'ԋ'), - (0x50B, 'V'), - (0x50C, 'M', 'ԍ'), - (0x50D, 'V'), - (0x50E, 'M', 'ԏ'), - (0x50F, 'V'), - (0x510, 'M', 'ԑ'), - (0x511, 'V'), - (0x512, 'M', 'ԓ'), - (0x513, 'V'), - (0x514, 'M', 'ԕ'), - (0x515, 'V'), - (0x516, 'M', 'ԗ'), - (0x517, 'V'), - (0x518, 'M', 'ԙ'), - (0x519, 'V'), - (0x51A, 'M', 'ԛ'), - (0x51B, 'V'), - (0x51C, 'M', 'ԝ'), - (0x51D, 'V'), - (0x51E, 'M', 'ԟ'), - (0x51F, 'V'), - (0x520, 'M', 'ԡ'), - (0x521, 'V'), - (0x522, 'M', 'ԣ'), - (0x523, 'V'), - (0x524, 'M', 'ԥ'), - (0x525, 'V'), - (0x526, 'M', 'ԧ'), - (0x527, 'V'), - (0x528, 'M', 'ԩ'), - (0x529, 'V'), - (0x52A, 'M', 'ԫ'), - (0x52B, 'V'), - (0x52C, 'M', 'ԭ'), - (0x52D, 'V'), - (0x52E, 'M', 'ԯ'), - (0x52F, 'V'), - (0x530, 'X'), - (0x531, 'M', 'ա'), - (0x532, 'M', 'բ'), - (0x533, 'M', 'գ'), - (0x534, 'M', 'դ'), - (0x535, 'M', 'ե'), - (0x536, 'M', 'զ'), - (0x537, 'M', 'է'), - (0x538, 'M', 'ը'), - (0x539, 'M', 'թ'), - (0x53A, 'M', 'ժ'), - (0x53B, 'M', 'ի'), - (0x53C, 'M', 'լ'), - (0x53D, 'M', 'խ'), - (0x53E, 'M', 'ծ'), - (0x53F, 'M', 'կ'), - (0x540, 'M', 'հ'), - (0x541, 'M', 'ձ'), - (0x542, 'M', 'ղ'), - (0x543, 'M', 'ճ'), - (0x544, 'M', 'մ'), - (0x545, 'M', 'յ'), - (0x546, 'M', 'ն'), - (0x547, 'M', 'շ'), - (0x548, 'M', 'ո'), - (0x549, 'M', 'չ'), - (0x54A, 'M', 'պ'), - (0x54B, 'M', 'ջ'), - (0x54C, 'M', 'ռ'), - (0x54D, 'M', 'ս'), - (0x54E, 'M', 'վ'), - (0x54F, 'M', 'տ'), - (0x550, 'M', 'ր'), - (0x551, 'M', 'ց'), - (0x552, 'M', 'ւ'), - (0x553, 'M', 'փ'), - (0x554, 'M', 'ք'), - (0x555, 'M', 'օ'), - (0x556, 'M', 'ֆ'), - (0x557, 'X'), - (0x559, 'V'), - (0x587, 'M', 'եւ'), - (0x588, 'V'), - (0x58B, 'X'), - (0x58D, 'V'), - (0x590, 'X'), - (0x591, 'V'), - (0x5C8, 'X'), - (0x5D0, 'V'), - (0x5EB, 'X'), - (0x5EF, 'V'), - (0x5F5, 'X'), - (0x606, 'V'), - (0x61C, 'X'), - (0x61D, 'V'), + (0x503, "V"), + (0x504, "M", "ԅ"), + (0x505, "V"), + (0x506, "M", "ԇ"), + (0x507, "V"), + (0x508, "M", "ԉ"), + (0x509, "V"), + (0x50A, "M", "ԋ"), + (0x50B, "V"), + (0x50C, "M", "ԍ"), + (0x50D, "V"), + (0x50E, "M", "ԏ"), + (0x50F, "V"), + (0x510, "M", "ԑ"), + (0x511, "V"), + (0x512, "M", "ԓ"), + (0x513, "V"), + (0x514, "M", "ԕ"), + (0x515, "V"), + (0x516, "M", "ԗ"), + (0x517, "V"), + (0x518, "M", "ԙ"), + (0x519, "V"), + (0x51A, "M", "ԛ"), + (0x51B, "V"), + (0x51C, "M", "ԝ"), + (0x51D, "V"), + (0x51E, "M", "ԟ"), + (0x51F, "V"), + (0x520, "M", "ԡ"), + (0x521, "V"), + (0x522, "M", "ԣ"), + (0x523, "V"), + (0x524, "M", "ԥ"), + (0x525, "V"), + (0x526, "M", "ԧ"), + (0x527, "V"), + (0x528, "M", "ԩ"), + (0x529, "V"), + (0x52A, "M", "ԫ"), + (0x52B, "V"), + (0x52C, "M", "ԭ"), + (0x52D, "V"), + (0x52E, "M", "ԯ"), + (0x52F, "V"), + (0x530, "X"), + (0x531, "M", "ա"), + (0x532, "M", "բ"), + (0x533, "M", "գ"), + (0x534, "M", "դ"), + (0x535, "M", "ե"), + (0x536, "M", "զ"), + (0x537, "M", "է"), + (0x538, "M", "ը"), + (0x539, "M", "թ"), + (0x53A, "M", "ժ"), + (0x53B, "M", "ի"), + (0x53C, "M", "լ"), + (0x53D, "M", "խ"), + (0x53E, "M", "ծ"), + (0x53F, "M", "կ"), + (0x540, "M", "հ"), + (0x541, "M", "ձ"), + (0x542, "M", "ղ"), + (0x543, "M", "ճ"), + (0x544, "M", "մ"), + (0x545, "M", "յ"), + (0x546, "M", "ն"), + (0x547, "M", "շ"), + (0x548, "M", "ո"), + (0x549, "M", "չ"), + (0x54A, "M", "պ"), + (0x54B, "M", "ջ"), + (0x54C, "M", "ռ"), + (0x54D, "M", "ս"), + (0x54E, "M", "վ"), + (0x54F, "M", "տ"), + (0x550, "M", "ր"), + (0x551, "M", "ց"), + (0x552, "M", "ւ"), + (0x553, "M", "փ"), + (0x554, "M", "ք"), + (0x555, "M", "օ"), + (0x556, "M", "ֆ"), + (0x557, "X"), + (0x559, "V"), + (0x587, "M", "եւ"), + (0x588, "V"), + (0x58B, "X"), + (0x58D, "V"), + (0x590, "X"), + (0x591, "V"), + (0x5C8, "X"), + (0x5D0, "V"), + (0x5EB, "X"), + (0x5EF, "V"), + (0x5F5, "X"), + (0x606, "V"), + (0x61C, "X"), + (0x61D, "V"), ] + def _seg_10() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: return [ - (0x675, 'M', 'اٴ'), - (0x676, 'M', 'وٴ'), - (0x677, 'M', 'ۇٴ'), - (0x678, 'M', 'يٴ'), - (0x679, 'V'), - (0x6DD, 'X'), - (0x6DE, 'V'), - (0x70E, 'X'), - (0x710, 'V'), - (0x74B, 'X'), - (0x74D, 'V'), - (0x7B2, 'X'), - (0x7C0, 'V'), - (0x7FB, 'X'), - (0x7FD, 'V'), - (0x82E, 'X'), - (0x830, 'V'), - (0x83F, 'X'), - (0x840, 'V'), - (0x85C, 'X'), - (0x85E, 'V'), - (0x85F, 'X'), - (0x860, 'V'), - (0x86B, 'X'), - (0x870, 'V'), - (0x88F, 'X'), - (0x898, 'V'), - (0x8E2, 'X'), - (0x8E3, 'V'), - (0x958, 'M', 'क़'), - (0x959, 'M', 'ख़'), - (0x95A, 'M', 'ग़'), - (0x95B, 'M', 'ज़'), - (0x95C, 'M', 'ड़'), - (0x95D, 'M', 'ढ़'), - (0x95E, 'M', 'फ़'), - (0x95F, 'M', 'य़'), - (0x960, 'V'), - (0x984, 'X'), - (0x985, 'V'), - (0x98D, 'X'), - (0x98F, 'V'), - (0x991, 'X'), - (0x993, 'V'), - (0x9A9, 'X'), - (0x9AA, 'V'), - (0x9B1, 'X'), - (0x9B2, 'V'), - (0x9B3, 'X'), - (0x9B6, 'V'), - (0x9BA, 'X'), - (0x9BC, 'V'), - (0x9C5, 'X'), - (0x9C7, 'V'), - (0x9C9, 'X'), - (0x9CB, 'V'), - (0x9CF, 'X'), - (0x9D7, 'V'), - (0x9D8, 'X'), - (0x9DC, 'M', 'ড়'), - (0x9DD, 'M', 'ঢ়'), - (0x9DE, 'X'), - (0x9DF, 'M', 'য়'), - (0x9E0, 'V'), - (0x9E4, 'X'), - (0x9E6, 'V'), - (0x9FF, 'X'), - (0xA01, 'V'), - (0xA04, 'X'), - (0xA05, 'V'), - (0xA0B, 'X'), - (0xA0F, 'V'), - (0xA11, 'X'), - (0xA13, 'V'), - (0xA29, 'X'), - (0xA2A, 'V'), - (0xA31, 'X'), - (0xA32, 'V'), - (0xA33, 'M', 'ਲ਼'), - (0xA34, 'X'), - (0xA35, 'V'), - (0xA36, 'M', 'ਸ਼'), - (0xA37, 'X'), - (0xA38, 'V'), - (0xA3A, 'X'), - (0xA3C, 'V'), - (0xA3D, 'X'), - (0xA3E, 'V'), - (0xA43, 'X'), - (0xA47, 'V'), - (0xA49, 'X'), - (0xA4B, 'V'), - (0xA4E, 'X'), - (0xA51, 'V'), - (0xA52, 'X'), - (0xA59, 'M', 'ਖ਼'), - (0xA5A, 'M', 'ਗ਼'), - (0xA5B, 'M', 'ਜ਼'), - (0xA5C, 'V'), - (0xA5D, 'X'), + (0x675, "M", "اٴ"), + (0x676, "M", "وٴ"), + (0x677, "M", "ۇٴ"), + (0x678, "M", "يٴ"), + (0x679, "V"), + (0x6DD, "X"), + (0x6DE, "V"), + (0x70E, "X"), + (0x710, "V"), + (0x74B, "X"), + (0x74D, "V"), + (0x7B2, "X"), + (0x7C0, "V"), + (0x7FB, "X"), + (0x7FD, "V"), + (0x82E, "X"), + (0x830, "V"), + (0x83F, "X"), + (0x840, "V"), + (0x85C, "X"), + (0x85E, "V"), + (0x85F, "X"), + (0x860, "V"), + (0x86B, "X"), + (0x870, "V"), + (0x88F, "X"), + (0x898, "V"), + (0x8E2, "X"), + (0x8E3, "V"), + (0x958, "M", "क़"), + (0x959, "M", "ख़"), + (0x95A, "M", "ग़"), + (0x95B, "M", "ज़"), + (0x95C, "M", "ड़"), + (0x95D, "M", "ढ़"), + (0x95E, "M", "फ़"), + (0x95F, "M", "य़"), + (0x960, "V"), + (0x984, "X"), + (0x985, "V"), + (0x98D, "X"), + (0x98F, "V"), + (0x991, "X"), + (0x993, "V"), + (0x9A9, "X"), + (0x9AA, "V"), + (0x9B1, "X"), + (0x9B2, "V"), + (0x9B3, "X"), + (0x9B6, "V"), + (0x9BA, "X"), + (0x9BC, "V"), + (0x9C5, "X"), + (0x9C7, "V"), + (0x9C9, "X"), + (0x9CB, "V"), + (0x9CF, "X"), + (0x9D7, "V"), + (0x9D8, "X"), + (0x9DC, "M", "ড়"), + (0x9DD, "M", "ঢ়"), + (0x9DE, "X"), + (0x9DF, "M", "য়"), + (0x9E0, "V"), + (0x9E4, "X"), + (0x9E6, "V"), + (0x9FF, "X"), + (0xA01, "V"), + (0xA04, "X"), + (0xA05, "V"), + (0xA0B, "X"), + (0xA0F, "V"), + (0xA11, "X"), + (0xA13, "V"), + (0xA29, "X"), + (0xA2A, "V"), + (0xA31, "X"), + (0xA32, "V"), + (0xA33, "M", "ਲ਼"), + (0xA34, "X"), + (0xA35, "V"), + (0xA36, "M", "ਸ਼"), + (0xA37, "X"), + (0xA38, "V"), + (0xA3A, "X"), + (0xA3C, "V"), + (0xA3D, "X"), + (0xA3E, "V"), + (0xA43, "X"), + (0xA47, "V"), + (0xA49, "X"), + (0xA4B, "V"), + (0xA4E, "X"), + (0xA51, "V"), + (0xA52, "X"), + (0xA59, "M", "ਖ਼"), + (0xA5A, "M", "ਗ਼"), + (0xA5B, "M", "ਜ਼"), + (0xA5C, "V"), + (0xA5D, "X"), ] + def _seg_11() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: return [ - (0xA5E, 'M', 'ਫ਼'), - (0xA5F, 'X'), - (0xA66, 'V'), - (0xA77, 'X'), - (0xA81, 'V'), - (0xA84, 'X'), - (0xA85, 'V'), - (0xA8E, 'X'), - (0xA8F, 'V'), - (0xA92, 'X'), - (0xA93, 'V'), - (0xAA9, 'X'), - (0xAAA, 'V'), - (0xAB1, 'X'), - (0xAB2, 'V'), - (0xAB4, 'X'), - (0xAB5, 'V'), - (0xABA, 'X'), - (0xABC, 'V'), - (0xAC6, 'X'), - (0xAC7, 'V'), - (0xACA, 'X'), - (0xACB, 'V'), - (0xACE, 'X'), - (0xAD0, 'V'), - (0xAD1, 'X'), - (0xAE0, 'V'), - (0xAE4, 'X'), - (0xAE6, 'V'), - (0xAF2, 'X'), - (0xAF9, 'V'), - (0xB00, 'X'), - (0xB01, 'V'), - (0xB04, 'X'), - (0xB05, 'V'), - (0xB0D, 'X'), - (0xB0F, 'V'), - (0xB11, 'X'), - (0xB13, 'V'), - (0xB29, 'X'), - (0xB2A, 'V'), - (0xB31, 'X'), - (0xB32, 'V'), - (0xB34, 'X'), - (0xB35, 'V'), - (0xB3A, 'X'), - (0xB3C, 'V'), - (0xB45, 'X'), - (0xB47, 'V'), - (0xB49, 'X'), - (0xB4B, 'V'), - (0xB4E, 'X'), - (0xB55, 'V'), - (0xB58, 'X'), - (0xB5C, 'M', 'ଡ଼'), - (0xB5D, 'M', 'ଢ଼'), - (0xB5E, 'X'), - (0xB5F, 'V'), - (0xB64, 'X'), - (0xB66, 'V'), - (0xB78, 'X'), - (0xB82, 'V'), - (0xB84, 'X'), - (0xB85, 'V'), - (0xB8B, 'X'), - (0xB8E, 'V'), - (0xB91, 'X'), - (0xB92, 'V'), - (0xB96, 'X'), - (0xB99, 'V'), - (0xB9B, 'X'), - (0xB9C, 'V'), - (0xB9D, 'X'), - (0xB9E, 'V'), - (0xBA0, 'X'), - (0xBA3, 'V'), - (0xBA5, 'X'), - (0xBA8, 'V'), - (0xBAB, 'X'), - (0xBAE, 'V'), - (0xBBA, 'X'), - (0xBBE, 'V'), - (0xBC3, 'X'), - (0xBC6, 'V'), - (0xBC9, 'X'), - (0xBCA, 'V'), - (0xBCE, 'X'), - (0xBD0, 'V'), - (0xBD1, 'X'), - (0xBD7, 'V'), - (0xBD8, 'X'), - (0xBE6, 'V'), - (0xBFB, 'X'), - (0xC00, 'V'), - (0xC0D, 'X'), - (0xC0E, 'V'), - (0xC11, 'X'), - (0xC12, 'V'), - (0xC29, 'X'), - (0xC2A, 'V'), + (0xA5E, "M", "ਫ਼"), + (0xA5F, "X"), + (0xA66, "V"), + (0xA77, "X"), + (0xA81, "V"), + (0xA84, "X"), + (0xA85, "V"), + (0xA8E, "X"), + (0xA8F, "V"), + (0xA92, "X"), + (0xA93, "V"), + (0xAA9, "X"), + (0xAAA, "V"), + (0xAB1, "X"), + (0xAB2, "V"), + (0xAB4, "X"), + (0xAB5, "V"), + (0xABA, "X"), + (0xABC, "V"), + (0xAC6, "X"), + (0xAC7, "V"), + (0xACA, "X"), + (0xACB, "V"), + (0xACE, "X"), + (0xAD0, "V"), + (0xAD1, "X"), + (0xAE0, "V"), + (0xAE4, "X"), + (0xAE6, "V"), + (0xAF2, "X"), + (0xAF9, "V"), + (0xB00, "X"), + (0xB01, "V"), + (0xB04, "X"), + (0xB05, "V"), + (0xB0D, "X"), + (0xB0F, "V"), + (0xB11, "X"), + (0xB13, "V"), + (0xB29, "X"), + (0xB2A, "V"), + (0xB31, "X"), + (0xB32, "V"), + (0xB34, "X"), + (0xB35, "V"), + (0xB3A, "X"), + (0xB3C, "V"), + (0xB45, "X"), + (0xB47, "V"), + (0xB49, "X"), + (0xB4B, "V"), + (0xB4E, "X"), + (0xB55, "V"), + (0xB58, "X"), + (0xB5C, "M", "ଡ଼"), + (0xB5D, "M", "ଢ଼"), + (0xB5E, "X"), + (0xB5F, "V"), + (0xB64, "X"), + (0xB66, "V"), + (0xB78, "X"), + (0xB82, "V"), + (0xB84, "X"), + (0xB85, "V"), + (0xB8B, "X"), + (0xB8E, "V"), + (0xB91, "X"), + (0xB92, "V"), + (0xB96, "X"), + (0xB99, "V"), + (0xB9B, "X"), + (0xB9C, "V"), + (0xB9D, "X"), + (0xB9E, "V"), + (0xBA0, "X"), + (0xBA3, "V"), + (0xBA5, "X"), + (0xBA8, "V"), + (0xBAB, "X"), + (0xBAE, "V"), + (0xBBA, "X"), + (0xBBE, "V"), + (0xBC3, "X"), + (0xBC6, "V"), + (0xBC9, "X"), + (0xBCA, "V"), + (0xBCE, "X"), + (0xBD0, "V"), + (0xBD1, "X"), + (0xBD7, "V"), + (0xBD8, "X"), + (0xBE6, "V"), + (0xBFB, "X"), + (0xC00, "V"), + (0xC0D, "X"), + (0xC0E, "V"), + (0xC11, "X"), + (0xC12, "V"), + (0xC29, "X"), + (0xC2A, "V"), ] + def _seg_12() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: return [ - (0xC3A, 'X'), - (0xC3C, 'V'), - (0xC45, 'X'), - (0xC46, 'V'), - (0xC49, 'X'), - (0xC4A, 'V'), - (0xC4E, 'X'), - (0xC55, 'V'), - (0xC57, 'X'), - (0xC58, 'V'), - (0xC5B, 'X'), - (0xC5D, 'V'), - (0xC5E, 'X'), - (0xC60, 'V'), - (0xC64, 'X'), - (0xC66, 'V'), - (0xC70, 'X'), - (0xC77, 'V'), - (0xC8D, 'X'), - (0xC8E, 'V'), - (0xC91, 'X'), - (0xC92, 'V'), - (0xCA9, 'X'), - (0xCAA, 'V'), - (0xCB4, 'X'), - (0xCB5, 'V'), - (0xCBA, 'X'), - (0xCBC, 'V'), - (0xCC5, 'X'), - (0xCC6, 'V'), - (0xCC9, 'X'), - (0xCCA, 'V'), - (0xCCE, 'X'), - (0xCD5, 'V'), - (0xCD7, 'X'), - (0xCDD, 'V'), - (0xCDF, 'X'), - (0xCE0, 'V'), - (0xCE4, 'X'), - (0xCE6, 'V'), - (0xCF0, 'X'), - (0xCF1, 'V'), - (0xCF4, 'X'), - (0xD00, 'V'), - (0xD0D, 'X'), - (0xD0E, 'V'), - (0xD11, 'X'), - (0xD12, 'V'), - (0xD45, 'X'), - (0xD46, 'V'), - (0xD49, 'X'), - (0xD4A, 'V'), - (0xD50, 'X'), - (0xD54, 'V'), - (0xD64, 'X'), - (0xD66, 'V'), - (0xD80, 'X'), - (0xD81, 'V'), - (0xD84, 'X'), - (0xD85, 'V'), - (0xD97, 'X'), - (0xD9A, 'V'), - (0xDB2, 'X'), - (0xDB3, 'V'), - (0xDBC, 'X'), - (0xDBD, 'V'), - (0xDBE, 'X'), - (0xDC0, 'V'), - (0xDC7, 'X'), - (0xDCA, 'V'), - (0xDCB, 'X'), - (0xDCF, 'V'), - (0xDD5, 'X'), - (0xDD6, 'V'), - (0xDD7, 'X'), - (0xDD8, 'V'), - (0xDE0, 'X'), - (0xDE6, 'V'), - (0xDF0, 'X'), - (0xDF2, 'V'), - (0xDF5, 'X'), - (0xE01, 'V'), - (0xE33, 'M', 'ํา'), - (0xE34, 'V'), - (0xE3B, 'X'), - (0xE3F, 'V'), - (0xE5C, 'X'), - (0xE81, 'V'), - (0xE83, 'X'), - (0xE84, 'V'), - (0xE85, 'X'), - (0xE86, 'V'), - (0xE8B, 'X'), - (0xE8C, 'V'), - (0xEA4, 'X'), - (0xEA5, 'V'), - (0xEA6, 'X'), - (0xEA7, 'V'), - (0xEB3, 'M', 'ໍາ'), - (0xEB4, 'V'), + (0xC3A, "X"), + (0xC3C, "V"), + (0xC45, "X"), + (0xC46, "V"), + (0xC49, "X"), + (0xC4A, "V"), + (0xC4E, "X"), + (0xC55, "V"), + (0xC57, "X"), + (0xC58, "V"), + (0xC5B, "X"), + (0xC5D, "V"), + (0xC5E, "X"), + (0xC60, "V"), + (0xC64, "X"), + (0xC66, "V"), + (0xC70, "X"), + (0xC77, "V"), + (0xC8D, "X"), + (0xC8E, "V"), + (0xC91, "X"), + (0xC92, "V"), + (0xCA9, "X"), + (0xCAA, "V"), + (0xCB4, "X"), + (0xCB5, "V"), + (0xCBA, "X"), + (0xCBC, "V"), + (0xCC5, "X"), + (0xCC6, "V"), + (0xCC9, "X"), + (0xCCA, "V"), + (0xCCE, "X"), + (0xCD5, "V"), + (0xCD7, "X"), + (0xCDD, "V"), + (0xCDF, "X"), + (0xCE0, "V"), + (0xCE4, "X"), + (0xCE6, "V"), + (0xCF0, "X"), + (0xCF1, "V"), + (0xCF4, "X"), + (0xD00, "V"), + (0xD0D, "X"), + (0xD0E, "V"), + (0xD11, "X"), + (0xD12, "V"), + (0xD45, "X"), + (0xD46, "V"), + (0xD49, "X"), + (0xD4A, "V"), + (0xD50, "X"), + (0xD54, "V"), + (0xD64, "X"), + (0xD66, "V"), + (0xD80, "X"), + (0xD81, "V"), + (0xD84, "X"), + (0xD85, "V"), + (0xD97, "X"), + (0xD9A, "V"), + (0xDB2, "X"), + (0xDB3, "V"), + (0xDBC, "X"), + (0xDBD, "V"), + (0xDBE, "X"), + (0xDC0, "V"), + (0xDC7, "X"), + (0xDCA, "V"), + (0xDCB, "X"), + (0xDCF, "V"), + (0xDD5, "X"), + (0xDD6, "V"), + (0xDD7, "X"), + (0xDD8, "V"), + (0xDE0, "X"), + (0xDE6, "V"), + (0xDF0, "X"), + (0xDF2, "V"), + (0xDF5, "X"), + (0xE01, "V"), + (0xE33, "M", "ํา"), + (0xE34, "V"), + (0xE3B, "X"), + (0xE3F, "V"), + (0xE5C, "X"), + (0xE81, "V"), + (0xE83, "X"), + (0xE84, "V"), + (0xE85, "X"), + (0xE86, "V"), + (0xE8B, "X"), + (0xE8C, "V"), + (0xEA4, "X"), + (0xEA5, "V"), + (0xEA6, "X"), + (0xEA7, "V"), + (0xEB3, "M", "ໍາ"), + (0xEB4, "V"), ] + def _seg_13() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: return [ - (0xEBE, 'X'), - (0xEC0, 'V'), - (0xEC5, 'X'), - (0xEC6, 'V'), - (0xEC7, 'X'), - (0xEC8, 'V'), - (0xECF, 'X'), - (0xED0, 'V'), - (0xEDA, 'X'), - (0xEDC, 'M', 'ຫນ'), - (0xEDD, 'M', 'ຫມ'), - (0xEDE, 'V'), - (0xEE0, 'X'), - (0xF00, 'V'), - (0xF0C, 'M', '་'), - (0xF0D, 'V'), - (0xF43, 'M', 'གྷ'), - (0xF44, 'V'), - (0xF48, 'X'), - (0xF49, 'V'), - (0xF4D, 'M', 'ཌྷ'), - (0xF4E, 'V'), - (0xF52, 'M', 'དྷ'), - (0xF53, 'V'), - (0xF57, 'M', 'བྷ'), - (0xF58, 'V'), - (0xF5C, 'M', 'ཛྷ'), - (0xF5D, 'V'), - (0xF69, 'M', 'ཀྵ'), - (0xF6A, 'V'), - (0xF6D, 'X'), - (0xF71, 'V'), - (0xF73, 'M', 'ཱི'), - (0xF74, 'V'), - (0xF75, 'M', 'ཱུ'), - (0xF76, 'M', 'ྲྀ'), - (0xF77, 'M', 'ྲཱྀ'), - (0xF78, 'M', 'ླྀ'), - (0xF79, 'M', 'ླཱྀ'), - (0xF7A, 'V'), - (0xF81, 'M', 'ཱྀ'), - (0xF82, 'V'), - (0xF93, 'M', 'ྒྷ'), - (0xF94, 'V'), - (0xF98, 'X'), - (0xF99, 'V'), - (0xF9D, 'M', 'ྜྷ'), - (0xF9E, 'V'), - (0xFA2, 'M', 'ྡྷ'), - (0xFA3, 'V'), - (0xFA7, 'M', 'ྦྷ'), - (0xFA8, 'V'), - (0xFAC, 'M', 'ྫྷ'), - (0xFAD, 'V'), - (0xFB9, 'M', 'ྐྵ'), - (0xFBA, 'V'), - (0xFBD, 'X'), - (0xFBE, 'V'), - (0xFCD, 'X'), - (0xFCE, 'V'), - (0xFDB, 'X'), - (0x1000, 'V'), - (0x10A0, 'X'), - (0x10C7, 'M', 'ⴧ'), - (0x10C8, 'X'), - (0x10CD, 'M', 'ⴭ'), - (0x10CE, 'X'), - (0x10D0, 'V'), - (0x10FC, 'M', 'ნ'), - (0x10FD, 'V'), - (0x115F, 'X'), - (0x1161, 'V'), - (0x1249, 'X'), - (0x124A, 'V'), - (0x124E, 'X'), - (0x1250, 'V'), - (0x1257, 'X'), - (0x1258, 'V'), - (0x1259, 'X'), - (0x125A, 'V'), - (0x125E, 'X'), - (0x1260, 'V'), - (0x1289, 'X'), - (0x128A, 'V'), - (0x128E, 'X'), - (0x1290, 'V'), - (0x12B1, 'X'), - (0x12B2, 'V'), - (0x12B6, 'X'), - (0x12B8, 'V'), - (0x12BF, 'X'), - (0x12C0, 'V'), - (0x12C1, 'X'), - (0x12C2, 'V'), - (0x12C6, 'X'), - (0x12C8, 'V'), - (0x12D7, 'X'), - (0x12D8, 'V'), - (0x1311, 'X'), - (0x1312, 'V'), + (0xEBE, "X"), + (0xEC0, "V"), + (0xEC5, "X"), + (0xEC6, "V"), + (0xEC7, "X"), + (0xEC8, "V"), + (0xECF, "X"), + (0xED0, "V"), + (0xEDA, "X"), + (0xEDC, "M", "ຫນ"), + (0xEDD, "M", "ຫມ"), + (0xEDE, "V"), + (0xEE0, "X"), + (0xF00, "V"), + (0xF0C, "M", "་"), + (0xF0D, "V"), + (0xF43, "M", "གྷ"), + (0xF44, "V"), + (0xF48, "X"), + (0xF49, "V"), + (0xF4D, "M", "ཌྷ"), + (0xF4E, "V"), + (0xF52, "M", "དྷ"), + (0xF53, "V"), + (0xF57, "M", "བྷ"), + (0xF58, "V"), + (0xF5C, "M", "ཛྷ"), + (0xF5D, "V"), + (0xF69, "M", "ཀྵ"), + (0xF6A, "V"), + (0xF6D, "X"), + (0xF71, "V"), + (0xF73, "M", "ཱི"), + (0xF74, "V"), + (0xF75, "M", "ཱུ"), + (0xF76, "M", "ྲྀ"), + (0xF77, "M", "ྲཱྀ"), + (0xF78, "M", "ླྀ"), + (0xF79, "M", "ླཱྀ"), + (0xF7A, "V"), + (0xF81, "M", "ཱྀ"), + (0xF82, "V"), + (0xF93, "M", "ྒྷ"), + (0xF94, "V"), + (0xF98, "X"), + (0xF99, "V"), + (0xF9D, "M", "ྜྷ"), + (0xF9E, "V"), + (0xFA2, "M", "ྡྷ"), + (0xFA3, "V"), + (0xFA7, "M", "ྦྷ"), + (0xFA8, "V"), + (0xFAC, "M", "ྫྷ"), + (0xFAD, "V"), + (0xFB9, "M", "ྐྵ"), + (0xFBA, "V"), + (0xFBD, "X"), + (0xFBE, "V"), + (0xFCD, "X"), + (0xFCE, "V"), + (0xFDB, "X"), + (0x1000, "V"), + (0x10A0, "X"), + (0x10C7, "M", "ⴧ"), + (0x10C8, "X"), + (0x10CD, "M", "ⴭ"), + (0x10CE, "X"), + (0x10D0, "V"), + (0x10FC, "M", "ნ"), + (0x10FD, "V"), + (0x115F, "X"), + (0x1161, "V"), + (0x1249, "X"), + (0x124A, "V"), + (0x124E, "X"), + (0x1250, "V"), + (0x1257, "X"), + (0x1258, "V"), + (0x1259, "X"), + (0x125A, "V"), + (0x125E, "X"), + (0x1260, "V"), + (0x1289, "X"), + (0x128A, "V"), + (0x128E, "X"), + (0x1290, "V"), + (0x12B1, "X"), + (0x12B2, "V"), + (0x12B6, "X"), + (0x12B8, "V"), + (0x12BF, "X"), + (0x12C0, "V"), + (0x12C1, "X"), + (0x12C2, "V"), + (0x12C6, "X"), + (0x12C8, "V"), + (0x12D7, "X"), + (0x12D8, "V"), + (0x1311, "X"), + (0x1312, "V"), ] + def _seg_14() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: return [ - (0x1316, 'X'), - (0x1318, 'V'), - (0x135B, 'X'), - (0x135D, 'V'), - (0x137D, 'X'), - (0x1380, 'V'), - (0x139A, 'X'), - (0x13A0, 'V'), - (0x13F6, 'X'), - (0x13F8, 'M', 'Ᏸ'), - (0x13F9, 'M', 'Ᏹ'), - (0x13FA, 'M', 'Ᏺ'), - (0x13FB, 'M', 'Ᏻ'), - (0x13FC, 'M', 'Ᏼ'), - (0x13FD, 'M', 'Ᏽ'), - (0x13FE, 'X'), - (0x1400, 'V'), - (0x1680, 'X'), - (0x1681, 'V'), - (0x169D, 'X'), - (0x16A0, 'V'), - (0x16F9, 'X'), - (0x1700, 'V'), - (0x1716, 'X'), - (0x171F, 'V'), - (0x1737, 'X'), - (0x1740, 'V'), - (0x1754, 'X'), - (0x1760, 'V'), - (0x176D, 'X'), - (0x176E, 'V'), - (0x1771, 'X'), - (0x1772, 'V'), - (0x1774, 'X'), - (0x1780, 'V'), - (0x17B4, 'X'), - (0x17B6, 'V'), - (0x17DE, 'X'), - (0x17E0, 'V'), - (0x17EA, 'X'), - (0x17F0, 'V'), - (0x17FA, 'X'), - (0x1800, 'V'), - (0x1806, 'X'), - (0x1807, 'V'), - (0x180B, 'I'), - (0x180E, 'X'), - (0x180F, 'I'), - (0x1810, 'V'), - (0x181A, 'X'), - (0x1820, 'V'), - (0x1879, 'X'), - (0x1880, 'V'), - (0x18AB, 'X'), - (0x18B0, 'V'), - (0x18F6, 'X'), - (0x1900, 'V'), - (0x191F, 'X'), - (0x1920, 'V'), - (0x192C, 'X'), - (0x1930, 'V'), - (0x193C, 'X'), - (0x1940, 'V'), - (0x1941, 'X'), - (0x1944, 'V'), - (0x196E, 'X'), - (0x1970, 'V'), - (0x1975, 'X'), - (0x1980, 'V'), - (0x19AC, 'X'), - (0x19B0, 'V'), - (0x19CA, 'X'), - (0x19D0, 'V'), - (0x19DB, 'X'), - (0x19DE, 'V'), - (0x1A1C, 'X'), - (0x1A1E, 'V'), - (0x1A5F, 'X'), - (0x1A60, 'V'), - (0x1A7D, 'X'), - (0x1A7F, 'V'), - (0x1A8A, 'X'), - (0x1A90, 'V'), - (0x1A9A, 'X'), - (0x1AA0, 'V'), - (0x1AAE, 'X'), - (0x1AB0, 'V'), - (0x1ACF, 'X'), - (0x1B00, 'V'), - (0x1B4D, 'X'), - (0x1B50, 'V'), - (0x1B7F, 'X'), - (0x1B80, 'V'), - (0x1BF4, 'X'), - (0x1BFC, 'V'), - (0x1C38, 'X'), - (0x1C3B, 'V'), - (0x1C4A, 'X'), - (0x1C4D, 'V'), - (0x1C80, 'M', 'в'), + (0x1316, "X"), + (0x1318, "V"), + (0x135B, "X"), + (0x135D, "V"), + (0x137D, "X"), + (0x1380, "V"), + (0x139A, "X"), + (0x13A0, "V"), + (0x13F6, "X"), + (0x13F8, "M", "Ᏸ"), + (0x13F9, "M", "Ᏹ"), + (0x13FA, "M", "Ᏺ"), + (0x13FB, "M", "Ᏻ"), + (0x13FC, "M", "Ᏼ"), + (0x13FD, "M", "Ᏽ"), + (0x13FE, "X"), + (0x1400, "V"), + (0x1680, "X"), + (0x1681, "V"), + (0x169D, "X"), + (0x16A0, "V"), + (0x16F9, "X"), + (0x1700, "V"), + (0x1716, "X"), + (0x171F, "V"), + (0x1737, "X"), + (0x1740, "V"), + (0x1754, "X"), + (0x1760, "V"), + (0x176D, "X"), + (0x176E, "V"), + (0x1771, "X"), + (0x1772, "V"), + (0x1774, "X"), + (0x1780, "V"), + (0x17B4, "X"), + (0x17B6, "V"), + (0x17DE, "X"), + (0x17E0, "V"), + (0x17EA, "X"), + (0x17F0, "V"), + (0x17FA, "X"), + (0x1800, "V"), + (0x1806, "X"), + (0x1807, "V"), + (0x180B, "I"), + (0x180E, "X"), + (0x180F, "I"), + (0x1810, "V"), + (0x181A, "X"), + (0x1820, "V"), + (0x1879, "X"), + (0x1880, "V"), + (0x18AB, "X"), + (0x18B0, "V"), + (0x18F6, "X"), + (0x1900, "V"), + (0x191F, "X"), + (0x1920, "V"), + (0x192C, "X"), + (0x1930, "V"), + (0x193C, "X"), + (0x1940, "V"), + (0x1941, "X"), + (0x1944, "V"), + (0x196E, "X"), + (0x1970, "V"), + (0x1975, "X"), + (0x1980, "V"), + (0x19AC, "X"), + (0x19B0, "V"), + (0x19CA, "X"), + (0x19D0, "V"), + (0x19DB, "X"), + (0x19DE, "V"), + (0x1A1C, "X"), + (0x1A1E, "V"), + (0x1A5F, "X"), + (0x1A60, "V"), + (0x1A7D, "X"), + (0x1A7F, "V"), + (0x1A8A, "X"), + (0x1A90, "V"), + (0x1A9A, "X"), + (0x1AA0, "V"), + (0x1AAE, "X"), + (0x1AB0, "V"), + (0x1ACF, "X"), + (0x1B00, "V"), + (0x1B4D, "X"), + (0x1B50, "V"), + (0x1B7F, "X"), + (0x1B80, "V"), + (0x1BF4, "X"), + (0x1BFC, "V"), + (0x1C38, "X"), + (0x1C3B, "V"), + (0x1C4A, "X"), + (0x1C4D, "V"), + (0x1C80, "M", "в"), ] + def _seg_15() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: return [ - (0x1C81, 'M', 'д'), - (0x1C82, 'M', 'о'), - (0x1C83, 'M', 'с'), - (0x1C84, 'M', 'т'), - (0x1C86, 'M', 'ъ'), - (0x1C87, 'M', 'ѣ'), - (0x1C88, 'M', 'ꙋ'), - (0x1C89, 'X'), - (0x1C90, 'M', 'ა'), - (0x1C91, 'M', 'ბ'), - (0x1C92, 'M', 'გ'), - (0x1C93, 'M', 'დ'), - (0x1C94, 'M', 'ე'), - (0x1C95, 'M', 'ვ'), - (0x1C96, 'M', 'ზ'), - (0x1C97, 'M', 'თ'), - (0x1C98, 'M', 'ი'), - (0x1C99, 'M', 'კ'), - (0x1C9A, 'M', 'ლ'), - (0x1C9B, 'M', 'მ'), - (0x1C9C, 'M', 'ნ'), - (0x1C9D, 'M', 'ო'), - (0x1C9E, 'M', 'პ'), - (0x1C9F, 'M', 'ჟ'), - (0x1CA0, 'M', 'რ'), - (0x1CA1, 'M', 'ს'), - (0x1CA2, 'M', 'ტ'), - (0x1CA3, 'M', 'უ'), - (0x1CA4, 'M', 'ფ'), - (0x1CA5, 'M', 'ქ'), - (0x1CA6, 'M', 'ღ'), - (0x1CA7, 'M', 'ყ'), - (0x1CA8, 'M', 'შ'), - (0x1CA9, 'M', 'ჩ'), - (0x1CAA, 'M', 'ც'), - (0x1CAB, 'M', 'ძ'), - (0x1CAC, 'M', 'წ'), - (0x1CAD, 'M', 'ჭ'), - (0x1CAE, 'M', 'ხ'), - (0x1CAF, 'M', 'ჯ'), - (0x1CB0, 'M', 'ჰ'), - (0x1CB1, 'M', 'ჱ'), - (0x1CB2, 'M', 'ჲ'), - (0x1CB3, 'M', 'ჳ'), - (0x1CB4, 'M', 'ჴ'), - (0x1CB5, 'M', 'ჵ'), - (0x1CB6, 'M', 'ჶ'), - (0x1CB7, 'M', 'ჷ'), - (0x1CB8, 'M', 'ჸ'), - (0x1CB9, 'M', 'ჹ'), - (0x1CBA, 'M', 'ჺ'), - (0x1CBB, 'X'), - (0x1CBD, 'M', 'ჽ'), - (0x1CBE, 'M', 'ჾ'), - (0x1CBF, 'M', 'ჿ'), - (0x1CC0, 'V'), - (0x1CC8, 'X'), - (0x1CD0, 'V'), - (0x1CFB, 'X'), - (0x1D00, 'V'), - (0x1D2C, 'M', 'a'), - (0x1D2D, 'M', 'æ'), - (0x1D2E, 'M', 'b'), - (0x1D2F, 'V'), - (0x1D30, 'M', 'd'), - (0x1D31, 'M', 'e'), - (0x1D32, 'M', 'ǝ'), - (0x1D33, 'M', 'g'), - (0x1D34, 'M', 'h'), - (0x1D35, 'M', 'i'), - (0x1D36, 'M', 'j'), - (0x1D37, 'M', 'k'), - (0x1D38, 'M', 'l'), - (0x1D39, 'M', 'm'), - (0x1D3A, 'M', 'n'), - (0x1D3B, 'V'), - (0x1D3C, 'M', 'o'), - (0x1D3D, 'M', 'ȣ'), - (0x1D3E, 'M', 'p'), - (0x1D3F, 'M', 'r'), - (0x1D40, 'M', 't'), - (0x1D41, 'M', 'u'), - (0x1D42, 'M', 'w'), - (0x1D43, 'M', 'a'), - (0x1D44, 'M', 'ɐ'), - (0x1D45, 'M', 'ɑ'), - (0x1D46, 'M', 'ᴂ'), - (0x1D47, 'M', 'b'), - (0x1D48, 'M', 'd'), - (0x1D49, 'M', 'e'), - (0x1D4A, 'M', 'ə'), - (0x1D4B, 'M', 'ɛ'), - (0x1D4C, 'M', 'ɜ'), - (0x1D4D, 'M', 'g'), - (0x1D4E, 'V'), - (0x1D4F, 'M', 'k'), - (0x1D50, 'M', 'm'), - (0x1D51, 'M', 'ŋ'), - (0x1D52, 'M', 'o'), - (0x1D53, 'M', 'ɔ'), + (0x1C81, "M", "д"), + (0x1C82, "M", "о"), + (0x1C83, "M", "с"), + (0x1C84, "M", "т"), + (0x1C86, "M", "ъ"), + (0x1C87, "M", "ѣ"), + (0x1C88, "M", "ꙋ"), + (0x1C89, "X"), + (0x1C90, "M", "ა"), + (0x1C91, "M", "ბ"), + (0x1C92, "M", "გ"), + (0x1C93, "M", "დ"), + (0x1C94, "M", "ე"), + (0x1C95, "M", "ვ"), + (0x1C96, "M", "ზ"), + (0x1C97, "M", "თ"), + (0x1C98, "M", "ი"), + (0x1C99, "M", "კ"), + (0x1C9A, "M", "ლ"), + (0x1C9B, "M", "მ"), + (0x1C9C, "M", "ნ"), + (0x1C9D, "M", "ო"), + (0x1C9E, "M", "პ"), + (0x1C9F, "M", "ჟ"), + (0x1CA0, "M", "რ"), + (0x1CA1, "M", "ს"), + (0x1CA2, "M", "ტ"), + (0x1CA3, "M", "უ"), + (0x1CA4, "M", "ფ"), + (0x1CA5, "M", "ქ"), + (0x1CA6, "M", "ღ"), + (0x1CA7, "M", "ყ"), + (0x1CA8, "M", "შ"), + (0x1CA9, "M", "ჩ"), + (0x1CAA, "M", "ც"), + (0x1CAB, "M", "ძ"), + (0x1CAC, "M", "წ"), + (0x1CAD, "M", "ჭ"), + (0x1CAE, "M", "ხ"), + (0x1CAF, "M", "ჯ"), + (0x1CB0, "M", "ჰ"), + (0x1CB1, "M", "ჱ"), + (0x1CB2, "M", "ჲ"), + (0x1CB3, "M", "ჳ"), + (0x1CB4, "M", "ჴ"), + (0x1CB5, "M", "ჵ"), + (0x1CB6, "M", "ჶ"), + (0x1CB7, "M", "ჷ"), + (0x1CB8, "M", "ჸ"), + (0x1CB9, "M", "ჹ"), + (0x1CBA, "M", "ჺ"), + (0x1CBB, "X"), + (0x1CBD, "M", "ჽ"), + (0x1CBE, "M", "ჾ"), + (0x1CBF, "M", "ჿ"), + (0x1CC0, "V"), + (0x1CC8, "X"), + (0x1CD0, "V"), + (0x1CFB, "X"), + (0x1D00, "V"), + (0x1D2C, "M", "a"), + (0x1D2D, "M", "æ"), + (0x1D2E, "M", "b"), + (0x1D2F, "V"), + (0x1D30, "M", "d"), + (0x1D31, "M", "e"), + (0x1D32, "M", "ǝ"), + (0x1D33, "M", "g"), + (0x1D34, "M", "h"), + (0x1D35, "M", "i"), + (0x1D36, "M", "j"), + (0x1D37, "M", "k"), + (0x1D38, "M", "l"), + (0x1D39, "M", "m"), + (0x1D3A, "M", "n"), + (0x1D3B, "V"), + (0x1D3C, "M", "o"), + (0x1D3D, "M", "ȣ"), + (0x1D3E, "M", "p"), + (0x1D3F, "M", "r"), + (0x1D40, "M", "t"), + (0x1D41, "M", "u"), + (0x1D42, "M", "w"), + (0x1D43, "M", "a"), + (0x1D44, "M", "ɐ"), + (0x1D45, "M", "ɑ"), + (0x1D46, "M", "ᴂ"), + (0x1D47, "M", "b"), + (0x1D48, "M", "d"), + (0x1D49, "M", "e"), + (0x1D4A, "M", "ə"), + (0x1D4B, "M", "ɛ"), + (0x1D4C, "M", "ɜ"), + (0x1D4D, "M", "g"), + (0x1D4E, "V"), + (0x1D4F, "M", "k"), + (0x1D50, "M", "m"), + (0x1D51, "M", "ŋ"), + (0x1D52, "M", "o"), + (0x1D53, "M", "ɔ"), ] + def _seg_16() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: return [ - (0x1D54, 'M', 'ᴖ'), - (0x1D55, 'M', 'ᴗ'), - (0x1D56, 'M', 'p'), - (0x1D57, 'M', 't'), - (0x1D58, 'M', 'u'), - (0x1D59, 'M', 'ᴝ'), - (0x1D5A, 'M', 'ɯ'), - (0x1D5B, 'M', 'v'), - (0x1D5C, 'M', 'ᴥ'), - (0x1D5D, 'M', 'β'), - (0x1D5E, 'M', 'γ'), - (0x1D5F, 'M', 'δ'), - (0x1D60, 'M', 'φ'), - (0x1D61, 'M', 'χ'), - (0x1D62, 'M', 'i'), - (0x1D63, 'M', 'r'), - (0x1D64, 'M', 'u'), - (0x1D65, 'M', 'v'), - (0x1D66, 'M', 'β'), - (0x1D67, 'M', 'γ'), - (0x1D68, 'M', 'ρ'), - (0x1D69, 'M', 'φ'), - (0x1D6A, 'M', 'χ'), - (0x1D6B, 'V'), - (0x1D78, 'M', 'н'), - (0x1D79, 'V'), - (0x1D9B, 'M', 'ɒ'), - (0x1D9C, 'M', 'c'), - (0x1D9D, 'M', 'ɕ'), - (0x1D9E, 'M', 'ð'), - (0x1D9F, 'M', 'ɜ'), - (0x1DA0, 'M', 'f'), - (0x1DA1, 'M', 'ɟ'), - (0x1DA2, 'M', 'ɡ'), - (0x1DA3, 'M', 'ɥ'), - (0x1DA4, 'M', 'ɨ'), - (0x1DA5, 'M', 'ɩ'), - (0x1DA6, 'M', 'ɪ'), - (0x1DA7, 'M', 'ᵻ'), - (0x1DA8, 'M', 'ʝ'), - (0x1DA9, 'M', 'ɭ'), - (0x1DAA, 'M', 'ᶅ'), - (0x1DAB, 'M', 'ʟ'), - (0x1DAC, 'M', 'ɱ'), - (0x1DAD, 'M', 'ɰ'), - (0x1DAE, 'M', 'ɲ'), - (0x1DAF, 'M', 'ɳ'), - (0x1DB0, 'M', 'ɴ'), - (0x1DB1, 'M', 'ɵ'), - (0x1DB2, 'M', 'ɸ'), - (0x1DB3, 'M', 'ʂ'), - (0x1DB4, 'M', 'ʃ'), - (0x1DB5, 'M', 'ƫ'), - (0x1DB6, 'M', 'ʉ'), - (0x1DB7, 'M', 'ʊ'), - (0x1DB8, 'M', 'ᴜ'), - (0x1DB9, 'M', 'ʋ'), - (0x1DBA, 'M', 'ʌ'), - (0x1DBB, 'M', 'z'), - (0x1DBC, 'M', 'ʐ'), - (0x1DBD, 'M', 'ʑ'), - (0x1DBE, 'M', 'ʒ'), - (0x1DBF, 'M', 'θ'), - (0x1DC0, 'V'), - (0x1E00, 'M', 'ḁ'), - (0x1E01, 'V'), - (0x1E02, 'M', 'ḃ'), - (0x1E03, 'V'), - (0x1E04, 'M', 'ḅ'), - (0x1E05, 'V'), - (0x1E06, 'M', 'ḇ'), - (0x1E07, 'V'), - (0x1E08, 'M', 'ḉ'), - (0x1E09, 'V'), - (0x1E0A, 'M', 'ḋ'), - (0x1E0B, 'V'), - (0x1E0C, 'M', 'ḍ'), - (0x1E0D, 'V'), - (0x1E0E, 'M', 'ḏ'), - (0x1E0F, 'V'), - (0x1E10, 'M', 'ḑ'), - (0x1E11, 'V'), - (0x1E12, 'M', 'ḓ'), - (0x1E13, 'V'), - (0x1E14, 'M', 'ḕ'), - (0x1E15, 'V'), - (0x1E16, 'M', 'ḗ'), - (0x1E17, 'V'), - (0x1E18, 'M', 'ḙ'), - (0x1E19, 'V'), - (0x1E1A, 'M', 'ḛ'), - (0x1E1B, 'V'), - (0x1E1C, 'M', 'ḝ'), - (0x1E1D, 'V'), - (0x1E1E, 'M', 'ḟ'), - (0x1E1F, 'V'), - (0x1E20, 'M', 'ḡ'), - (0x1E21, 'V'), - (0x1E22, 'M', 'ḣ'), - (0x1E23, 'V'), + (0x1D54, "M", "ᴖ"), + (0x1D55, "M", "ᴗ"), + (0x1D56, "M", "p"), + (0x1D57, "M", "t"), + (0x1D58, "M", "u"), + (0x1D59, "M", "ᴝ"), + (0x1D5A, "M", "ɯ"), + (0x1D5B, "M", "v"), + (0x1D5C, "M", "ᴥ"), + (0x1D5D, "M", "β"), + (0x1D5E, "M", "γ"), + (0x1D5F, "M", "δ"), + (0x1D60, "M", "φ"), + (0x1D61, "M", "χ"), + (0x1D62, "M", "i"), + (0x1D63, "M", "r"), + (0x1D64, "M", "u"), + (0x1D65, "M", "v"), + (0x1D66, "M", "β"), + (0x1D67, "M", "γ"), + (0x1D68, "M", "ρ"), + (0x1D69, "M", "φ"), + (0x1D6A, "M", "χ"), + (0x1D6B, "V"), + (0x1D78, "M", "н"), + (0x1D79, "V"), + (0x1D9B, "M", "ɒ"), + (0x1D9C, "M", "c"), + (0x1D9D, "M", "ɕ"), + (0x1D9E, "M", "ð"), + (0x1D9F, "M", "ɜ"), + (0x1DA0, "M", "f"), + (0x1DA1, "M", "ɟ"), + (0x1DA2, "M", "ɡ"), + (0x1DA3, "M", "ɥ"), + (0x1DA4, "M", "ɨ"), + (0x1DA5, "M", "ɩ"), + (0x1DA6, "M", "ɪ"), + (0x1DA7, "M", "ᵻ"), + (0x1DA8, "M", "ʝ"), + (0x1DA9, "M", "ɭ"), + (0x1DAA, "M", "ᶅ"), + (0x1DAB, "M", "ʟ"), + (0x1DAC, "M", "ɱ"), + (0x1DAD, "M", "ɰ"), + (0x1DAE, "M", "ɲ"), + (0x1DAF, "M", "ɳ"), + (0x1DB0, "M", "ɴ"), + (0x1DB1, "M", "ɵ"), + (0x1DB2, "M", "ɸ"), + (0x1DB3, "M", "ʂ"), + (0x1DB4, "M", "ʃ"), + (0x1DB5, "M", "ƫ"), + (0x1DB6, "M", "ʉ"), + (0x1DB7, "M", "ʊ"), + (0x1DB8, "M", "ᴜ"), + (0x1DB9, "M", "ʋ"), + (0x1DBA, "M", "ʌ"), + (0x1DBB, "M", "z"), + (0x1DBC, "M", "ʐ"), + (0x1DBD, "M", "ʑ"), + (0x1DBE, "M", "ʒ"), + (0x1DBF, "M", "θ"), + (0x1DC0, "V"), + (0x1E00, "M", "ḁ"), + (0x1E01, "V"), + (0x1E02, "M", "ḃ"), + (0x1E03, "V"), + (0x1E04, "M", "ḅ"), + (0x1E05, "V"), + (0x1E06, "M", "ḇ"), + (0x1E07, "V"), + (0x1E08, "M", "ḉ"), + (0x1E09, "V"), + (0x1E0A, "M", "ḋ"), + (0x1E0B, "V"), + (0x1E0C, "M", "ḍ"), + (0x1E0D, "V"), + (0x1E0E, "M", "ḏ"), + (0x1E0F, "V"), + (0x1E10, "M", "ḑ"), + (0x1E11, "V"), + (0x1E12, "M", "ḓ"), + (0x1E13, "V"), + (0x1E14, "M", "ḕ"), + (0x1E15, "V"), + (0x1E16, "M", "ḗ"), + (0x1E17, "V"), + (0x1E18, "M", "ḙ"), + (0x1E19, "V"), + (0x1E1A, "M", "ḛ"), + (0x1E1B, "V"), + (0x1E1C, "M", "ḝ"), + (0x1E1D, "V"), + (0x1E1E, "M", "ḟ"), + (0x1E1F, "V"), + (0x1E20, "M", "ḡ"), + (0x1E21, "V"), + (0x1E22, "M", "ḣ"), + (0x1E23, "V"), ] + def _seg_17() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: return [ - (0x1E24, 'M', 'ḥ'), - (0x1E25, 'V'), - (0x1E26, 'M', 'ḧ'), - (0x1E27, 'V'), - (0x1E28, 'M', 'ḩ'), - (0x1E29, 'V'), - (0x1E2A, 'M', 'ḫ'), - (0x1E2B, 'V'), - (0x1E2C, 'M', 'ḭ'), - (0x1E2D, 'V'), - (0x1E2E, 'M', 'ḯ'), - (0x1E2F, 'V'), - (0x1E30, 'M', 'ḱ'), - (0x1E31, 'V'), - (0x1E32, 'M', 'ḳ'), - (0x1E33, 'V'), - (0x1E34, 'M', 'ḵ'), - (0x1E35, 'V'), - (0x1E36, 'M', 'ḷ'), - (0x1E37, 'V'), - (0x1E38, 'M', 'ḹ'), - (0x1E39, 'V'), - (0x1E3A, 'M', 'ḻ'), - (0x1E3B, 'V'), - (0x1E3C, 'M', 'ḽ'), - (0x1E3D, 'V'), - (0x1E3E, 'M', 'ḿ'), - (0x1E3F, 'V'), - (0x1E40, 'M', 'ṁ'), - (0x1E41, 'V'), - (0x1E42, 'M', 'ṃ'), - (0x1E43, 'V'), - (0x1E44, 'M', 'ṅ'), - (0x1E45, 'V'), - (0x1E46, 'M', 'ṇ'), - (0x1E47, 'V'), - (0x1E48, 'M', 'ṉ'), - (0x1E49, 'V'), - (0x1E4A, 'M', 'ṋ'), - (0x1E4B, 'V'), - (0x1E4C, 'M', 'ṍ'), - (0x1E4D, 'V'), - (0x1E4E, 'M', 'ṏ'), - (0x1E4F, 'V'), - (0x1E50, 'M', 'ṑ'), - (0x1E51, 'V'), - (0x1E52, 'M', 'ṓ'), - (0x1E53, 'V'), - (0x1E54, 'M', 'ṕ'), - (0x1E55, 'V'), - (0x1E56, 'M', 'ṗ'), - (0x1E57, 'V'), - (0x1E58, 'M', 'ṙ'), - (0x1E59, 'V'), - (0x1E5A, 'M', 'ṛ'), - (0x1E5B, 'V'), - (0x1E5C, 'M', 'ṝ'), - (0x1E5D, 'V'), - (0x1E5E, 'M', 'ṟ'), - (0x1E5F, 'V'), - (0x1E60, 'M', 'ṡ'), - (0x1E61, 'V'), - (0x1E62, 'M', 'ṣ'), - (0x1E63, 'V'), - (0x1E64, 'M', 'ṥ'), - (0x1E65, 'V'), - (0x1E66, 'M', 'ṧ'), - (0x1E67, 'V'), - (0x1E68, 'M', 'ṩ'), - (0x1E69, 'V'), - (0x1E6A, 'M', 'ṫ'), - (0x1E6B, 'V'), - (0x1E6C, 'M', 'ṭ'), - (0x1E6D, 'V'), - (0x1E6E, 'M', 'ṯ'), - (0x1E6F, 'V'), - (0x1E70, 'M', 'ṱ'), - (0x1E71, 'V'), - (0x1E72, 'M', 'ṳ'), - (0x1E73, 'V'), - (0x1E74, 'M', 'ṵ'), - (0x1E75, 'V'), - (0x1E76, 'M', 'ṷ'), - (0x1E77, 'V'), - (0x1E78, 'M', 'ṹ'), - (0x1E79, 'V'), - (0x1E7A, 'M', 'ṻ'), - (0x1E7B, 'V'), - (0x1E7C, 'M', 'ṽ'), - (0x1E7D, 'V'), - (0x1E7E, 'M', 'ṿ'), - (0x1E7F, 'V'), - (0x1E80, 'M', 'ẁ'), - (0x1E81, 'V'), - (0x1E82, 'M', 'ẃ'), - (0x1E83, 'V'), - (0x1E84, 'M', 'ẅ'), - (0x1E85, 'V'), - (0x1E86, 'M', 'ẇ'), - (0x1E87, 'V'), + (0x1E24, "M", "ḥ"), + (0x1E25, "V"), + (0x1E26, "M", "ḧ"), + (0x1E27, "V"), + (0x1E28, "M", "ḩ"), + (0x1E29, "V"), + (0x1E2A, "M", "ḫ"), + (0x1E2B, "V"), + (0x1E2C, "M", "ḭ"), + (0x1E2D, "V"), + (0x1E2E, "M", "ḯ"), + (0x1E2F, "V"), + (0x1E30, "M", "ḱ"), + (0x1E31, "V"), + (0x1E32, "M", "ḳ"), + (0x1E33, "V"), + (0x1E34, "M", "ḵ"), + (0x1E35, "V"), + (0x1E36, "M", "ḷ"), + (0x1E37, "V"), + (0x1E38, "M", "ḹ"), + (0x1E39, "V"), + (0x1E3A, "M", "ḻ"), + (0x1E3B, "V"), + (0x1E3C, "M", "ḽ"), + (0x1E3D, "V"), + (0x1E3E, "M", "ḿ"), + (0x1E3F, "V"), + (0x1E40, "M", "ṁ"), + (0x1E41, "V"), + (0x1E42, "M", "ṃ"), + (0x1E43, "V"), + (0x1E44, "M", "ṅ"), + (0x1E45, "V"), + (0x1E46, "M", "ṇ"), + (0x1E47, "V"), + (0x1E48, "M", "ṉ"), + (0x1E49, "V"), + (0x1E4A, "M", "ṋ"), + (0x1E4B, "V"), + (0x1E4C, "M", "ṍ"), + (0x1E4D, "V"), + (0x1E4E, "M", "ṏ"), + (0x1E4F, "V"), + (0x1E50, "M", "ṑ"), + (0x1E51, "V"), + (0x1E52, "M", "ṓ"), + (0x1E53, "V"), + (0x1E54, "M", "ṕ"), + (0x1E55, "V"), + (0x1E56, "M", "ṗ"), + (0x1E57, "V"), + (0x1E58, "M", "ṙ"), + (0x1E59, "V"), + (0x1E5A, "M", "ṛ"), + (0x1E5B, "V"), + (0x1E5C, "M", "ṝ"), + (0x1E5D, "V"), + (0x1E5E, "M", "ṟ"), + (0x1E5F, "V"), + (0x1E60, "M", "ṡ"), + (0x1E61, "V"), + (0x1E62, "M", "ṣ"), + (0x1E63, "V"), + (0x1E64, "M", "ṥ"), + (0x1E65, "V"), + (0x1E66, "M", "ṧ"), + (0x1E67, "V"), + (0x1E68, "M", "ṩ"), + (0x1E69, "V"), + (0x1E6A, "M", "ṫ"), + (0x1E6B, "V"), + (0x1E6C, "M", "ṭ"), + (0x1E6D, "V"), + (0x1E6E, "M", "ṯ"), + (0x1E6F, "V"), + (0x1E70, "M", "ṱ"), + (0x1E71, "V"), + (0x1E72, "M", "ṳ"), + (0x1E73, "V"), + (0x1E74, "M", "ṵ"), + (0x1E75, "V"), + (0x1E76, "M", "ṷ"), + (0x1E77, "V"), + (0x1E78, "M", "ṹ"), + (0x1E79, "V"), + (0x1E7A, "M", "ṻ"), + (0x1E7B, "V"), + (0x1E7C, "M", "ṽ"), + (0x1E7D, "V"), + (0x1E7E, "M", "ṿ"), + (0x1E7F, "V"), + (0x1E80, "M", "ẁ"), + (0x1E81, "V"), + (0x1E82, "M", "ẃ"), + (0x1E83, "V"), + (0x1E84, "M", "ẅ"), + (0x1E85, "V"), + (0x1E86, "M", "ẇ"), + (0x1E87, "V"), ] + def _seg_18() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: return [ - (0x1E88, 'M', 'ẉ'), - (0x1E89, 'V'), - (0x1E8A, 'M', 'ẋ'), - (0x1E8B, 'V'), - (0x1E8C, 'M', 'ẍ'), - (0x1E8D, 'V'), - (0x1E8E, 'M', 'ẏ'), - (0x1E8F, 'V'), - (0x1E90, 'M', 'ẑ'), - (0x1E91, 'V'), - (0x1E92, 'M', 'ẓ'), - (0x1E93, 'V'), - (0x1E94, 'M', 'ẕ'), - (0x1E95, 'V'), - (0x1E9A, 'M', 'aʾ'), - (0x1E9B, 'M', 'ṡ'), - (0x1E9C, 'V'), - (0x1E9E, 'M', 'ss'), - (0x1E9F, 'V'), - (0x1EA0, 'M', 'ạ'), - (0x1EA1, 'V'), - (0x1EA2, 'M', 'ả'), - (0x1EA3, 'V'), - (0x1EA4, 'M', 'ấ'), - (0x1EA5, 'V'), - (0x1EA6, 'M', 'ầ'), - (0x1EA7, 'V'), - (0x1EA8, 'M', 'ẩ'), - (0x1EA9, 'V'), - (0x1EAA, 'M', 'ẫ'), - (0x1EAB, 'V'), - (0x1EAC, 'M', 'ậ'), - (0x1EAD, 'V'), - (0x1EAE, 'M', 'ắ'), - (0x1EAF, 'V'), - (0x1EB0, 'M', 'ằ'), - (0x1EB1, 'V'), - (0x1EB2, 'M', 'ẳ'), - (0x1EB3, 'V'), - (0x1EB4, 'M', 'ẵ'), - (0x1EB5, 'V'), - (0x1EB6, 'M', 'ặ'), - (0x1EB7, 'V'), - (0x1EB8, 'M', 'ẹ'), - (0x1EB9, 'V'), - (0x1EBA, 'M', 'ẻ'), - (0x1EBB, 'V'), - (0x1EBC, 'M', 'ẽ'), - (0x1EBD, 'V'), - (0x1EBE, 'M', 'ế'), - (0x1EBF, 'V'), - (0x1EC0, 'M', 'ề'), - (0x1EC1, 'V'), - (0x1EC2, 'M', 'ể'), - (0x1EC3, 'V'), - (0x1EC4, 'M', 'ễ'), - (0x1EC5, 'V'), - (0x1EC6, 'M', 'ệ'), - (0x1EC7, 'V'), - (0x1EC8, 'M', 'ỉ'), - (0x1EC9, 'V'), - (0x1ECA, 'M', 'ị'), - (0x1ECB, 'V'), - (0x1ECC, 'M', 'ọ'), - (0x1ECD, 'V'), - (0x1ECE, 'M', 'ỏ'), - (0x1ECF, 'V'), - (0x1ED0, 'M', 'ố'), - (0x1ED1, 'V'), - (0x1ED2, 'M', 'ồ'), - (0x1ED3, 'V'), - (0x1ED4, 'M', 'ổ'), - (0x1ED5, 'V'), - (0x1ED6, 'M', 'ỗ'), - (0x1ED7, 'V'), - (0x1ED8, 'M', 'ộ'), - (0x1ED9, 'V'), - (0x1EDA, 'M', 'ớ'), - (0x1EDB, 'V'), - (0x1EDC, 'M', 'ờ'), - (0x1EDD, 'V'), - (0x1EDE, 'M', 'ở'), - (0x1EDF, 'V'), - (0x1EE0, 'M', 'ỡ'), - (0x1EE1, 'V'), - (0x1EE2, 'M', 'ợ'), - (0x1EE3, 'V'), - (0x1EE4, 'M', 'ụ'), - (0x1EE5, 'V'), - (0x1EE6, 'M', 'ủ'), - (0x1EE7, 'V'), - (0x1EE8, 'M', 'ứ'), - (0x1EE9, 'V'), - (0x1EEA, 'M', 'ừ'), - (0x1EEB, 'V'), - (0x1EEC, 'M', 'ử'), - (0x1EED, 'V'), - (0x1EEE, 'M', 'ữ'), - (0x1EEF, 'V'), - (0x1EF0, 'M', 'ự'), + (0x1E88, "M", "ẉ"), + (0x1E89, "V"), + (0x1E8A, "M", "ẋ"), + (0x1E8B, "V"), + (0x1E8C, "M", "ẍ"), + (0x1E8D, "V"), + (0x1E8E, "M", "ẏ"), + (0x1E8F, "V"), + (0x1E90, "M", "ẑ"), + (0x1E91, "V"), + (0x1E92, "M", "ẓ"), + (0x1E93, "V"), + (0x1E94, "M", "ẕ"), + (0x1E95, "V"), + (0x1E9A, "M", "aʾ"), + (0x1E9B, "M", "ṡ"), + (0x1E9C, "V"), + (0x1E9E, "M", "ß"), + (0x1E9F, "V"), + (0x1EA0, "M", "ạ"), + (0x1EA1, "V"), + (0x1EA2, "M", "ả"), + (0x1EA3, "V"), + (0x1EA4, "M", "ấ"), + (0x1EA5, "V"), + (0x1EA6, "M", "ầ"), + (0x1EA7, "V"), + (0x1EA8, "M", "ẩ"), + (0x1EA9, "V"), + (0x1EAA, "M", "ẫ"), + (0x1EAB, "V"), + (0x1EAC, "M", "ậ"), + (0x1EAD, "V"), + (0x1EAE, "M", "ắ"), + (0x1EAF, "V"), + (0x1EB0, "M", "ằ"), + (0x1EB1, "V"), + (0x1EB2, "M", "ẳ"), + (0x1EB3, "V"), + (0x1EB4, "M", "ẵ"), + (0x1EB5, "V"), + (0x1EB6, "M", "ặ"), + (0x1EB7, "V"), + (0x1EB8, "M", "ẹ"), + (0x1EB9, "V"), + (0x1EBA, "M", "ẻ"), + (0x1EBB, "V"), + (0x1EBC, "M", "ẽ"), + (0x1EBD, "V"), + (0x1EBE, "M", "ế"), + (0x1EBF, "V"), + (0x1EC0, "M", "ề"), + (0x1EC1, "V"), + (0x1EC2, "M", "ể"), + (0x1EC3, "V"), + (0x1EC4, "M", "ễ"), + (0x1EC5, "V"), + (0x1EC6, "M", "ệ"), + (0x1EC7, "V"), + (0x1EC8, "M", "ỉ"), + (0x1EC9, "V"), + (0x1ECA, "M", "ị"), + (0x1ECB, "V"), + (0x1ECC, "M", "ọ"), + (0x1ECD, "V"), + (0x1ECE, "M", "ỏ"), + (0x1ECF, "V"), + (0x1ED0, "M", "ố"), + (0x1ED1, "V"), + (0x1ED2, "M", "ồ"), + (0x1ED3, "V"), + (0x1ED4, "M", "ổ"), + (0x1ED5, "V"), + (0x1ED6, "M", "ỗ"), + (0x1ED7, "V"), + (0x1ED8, "M", "ộ"), + (0x1ED9, "V"), + (0x1EDA, "M", "ớ"), + (0x1EDB, "V"), + (0x1EDC, "M", "ờ"), + (0x1EDD, "V"), + (0x1EDE, "M", "ở"), + (0x1EDF, "V"), + (0x1EE0, "M", "ỡ"), + (0x1EE1, "V"), + (0x1EE2, "M", "ợ"), + (0x1EE3, "V"), + (0x1EE4, "M", "ụ"), + (0x1EE5, "V"), + (0x1EE6, "M", "ủ"), + (0x1EE7, "V"), + (0x1EE8, "M", "ứ"), + (0x1EE9, "V"), + (0x1EEA, "M", "ừ"), + (0x1EEB, "V"), + (0x1EEC, "M", "ử"), + (0x1EED, "V"), + (0x1EEE, "M", "ữ"), + (0x1EEF, "V"), + (0x1EF0, "M", "ự"), ] + def _seg_19() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: return [ - (0x1EF1, 'V'), - (0x1EF2, 'M', 'ỳ'), - (0x1EF3, 'V'), - (0x1EF4, 'M', 'ỵ'), - (0x1EF5, 'V'), - (0x1EF6, 'M', 'ỷ'), - (0x1EF7, 'V'), - (0x1EF8, 'M', 'ỹ'), - (0x1EF9, 'V'), - (0x1EFA, 'M', 'ỻ'), - (0x1EFB, 'V'), - (0x1EFC, 'M', 'ỽ'), - (0x1EFD, 'V'), - (0x1EFE, 'M', 'ỿ'), - (0x1EFF, 'V'), - (0x1F08, 'M', 'ἀ'), - (0x1F09, 'M', 'ἁ'), - (0x1F0A, 'M', 'ἂ'), - (0x1F0B, 'M', 'ἃ'), - (0x1F0C, 'M', 'ἄ'), - (0x1F0D, 'M', 'ἅ'), - (0x1F0E, 'M', 'ἆ'), - (0x1F0F, 'M', 'ἇ'), - (0x1F10, 'V'), - (0x1F16, 'X'), - (0x1F18, 'M', 'ἐ'), - (0x1F19, 'M', 'ἑ'), - (0x1F1A, 'M', 'ἒ'), - (0x1F1B, 'M', 'ἓ'), - (0x1F1C, 'M', 'ἔ'), - (0x1F1D, 'M', 'ἕ'), - (0x1F1E, 'X'), - (0x1F20, 'V'), - (0x1F28, 'M', 'ἠ'), - (0x1F29, 'M', 'ἡ'), - (0x1F2A, 'M', 'ἢ'), - (0x1F2B, 'M', 'ἣ'), - (0x1F2C, 'M', 'ἤ'), - (0x1F2D, 'M', 'ἥ'), - (0x1F2E, 'M', 'ἦ'), - (0x1F2F, 'M', 'ἧ'), - (0x1F30, 'V'), - (0x1F38, 'M', 'ἰ'), - (0x1F39, 'M', 'ἱ'), - (0x1F3A, 'M', 'ἲ'), - (0x1F3B, 'M', 'ἳ'), - (0x1F3C, 'M', 'ἴ'), - (0x1F3D, 'M', 'ἵ'), - (0x1F3E, 'M', 'ἶ'), - (0x1F3F, 'M', 'ἷ'), - (0x1F40, 'V'), - (0x1F46, 'X'), - (0x1F48, 'M', 'ὀ'), - (0x1F49, 'M', 'ὁ'), - (0x1F4A, 'M', 'ὂ'), - (0x1F4B, 'M', 'ὃ'), - (0x1F4C, 'M', 'ὄ'), - (0x1F4D, 'M', 'ὅ'), - (0x1F4E, 'X'), - (0x1F50, 'V'), - (0x1F58, 'X'), - (0x1F59, 'M', 'ὑ'), - (0x1F5A, 'X'), - (0x1F5B, 'M', 'ὓ'), - (0x1F5C, 'X'), - (0x1F5D, 'M', 'ὕ'), - (0x1F5E, 'X'), - (0x1F5F, 'M', 'ὗ'), - (0x1F60, 'V'), - (0x1F68, 'M', 'ὠ'), - (0x1F69, 'M', 'ὡ'), - (0x1F6A, 'M', 'ὢ'), - (0x1F6B, 'M', 'ὣ'), - (0x1F6C, 'M', 'ὤ'), - (0x1F6D, 'M', 'ὥ'), - (0x1F6E, 'M', 'ὦ'), - (0x1F6F, 'M', 'ὧ'), - (0x1F70, 'V'), - (0x1F71, 'M', 'ά'), - (0x1F72, 'V'), - (0x1F73, 'M', 'έ'), - (0x1F74, 'V'), - (0x1F75, 'M', 'ή'), - (0x1F76, 'V'), - (0x1F77, 'M', 'ί'), - (0x1F78, 'V'), - (0x1F79, 'M', 'ό'), - (0x1F7A, 'V'), - (0x1F7B, 'M', 'ύ'), - (0x1F7C, 'V'), - (0x1F7D, 'M', 'ώ'), - (0x1F7E, 'X'), - (0x1F80, 'M', 'ἀι'), - (0x1F81, 'M', 'ἁι'), - (0x1F82, 'M', 'ἂι'), - (0x1F83, 'M', 'ἃι'), - (0x1F84, 'M', 'ἄι'), - (0x1F85, 'M', 'ἅι'), - (0x1F86, 'M', 'ἆι'), - (0x1F87, 'M', 'ἇι'), + (0x1EF1, "V"), + (0x1EF2, "M", "ỳ"), + (0x1EF3, "V"), + (0x1EF4, "M", "ỵ"), + (0x1EF5, "V"), + (0x1EF6, "M", "ỷ"), + (0x1EF7, "V"), + (0x1EF8, "M", "ỹ"), + (0x1EF9, "V"), + (0x1EFA, "M", "ỻ"), + (0x1EFB, "V"), + (0x1EFC, "M", "ỽ"), + (0x1EFD, "V"), + (0x1EFE, "M", "ỿ"), + (0x1EFF, "V"), + (0x1F08, "M", "ἀ"), + (0x1F09, "M", "ἁ"), + (0x1F0A, "M", "ἂ"), + (0x1F0B, "M", "ἃ"), + (0x1F0C, "M", "ἄ"), + (0x1F0D, "M", "ἅ"), + (0x1F0E, "M", "ἆ"), + (0x1F0F, "M", "ἇ"), + (0x1F10, "V"), + (0x1F16, "X"), + (0x1F18, "M", "ἐ"), + (0x1F19, "M", "ἑ"), + (0x1F1A, "M", "ἒ"), + (0x1F1B, "M", "ἓ"), + (0x1F1C, "M", "ἔ"), + (0x1F1D, "M", "ἕ"), + (0x1F1E, "X"), + (0x1F20, "V"), + (0x1F28, "M", "ἠ"), + (0x1F29, "M", "ἡ"), + (0x1F2A, "M", "ἢ"), + (0x1F2B, "M", "ἣ"), + (0x1F2C, "M", "ἤ"), + (0x1F2D, "M", "ἥ"), + (0x1F2E, "M", "ἦ"), + (0x1F2F, "M", "ἧ"), + (0x1F30, "V"), + (0x1F38, "M", "ἰ"), + (0x1F39, "M", "ἱ"), + (0x1F3A, "M", "ἲ"), + (0x1F3B, "M", "ἳ"), + (0x1F3C, "M", "ἴ"), + (0x1F3D, "M", "ἵ"), + (0x1F3E, "M", "ἶ"), + (0x1F3F, "M", "ἷ"), + (0x1F40, "V"), + (0x1F46, "X"), + (0x1F48, "M", "ὀ"), + (0x1F49, "M", "ὁ"), + (0x1F4A, "M", "ὂ"), + (0x1F4B, "M", "ὃ"), + (0x1F4C, "M", "ὄ"), + (0x1F4D, "M", "ὅ"), + (0x1F4E, "X"), + (0x1F50, "V"), + (0x1F58, "X"), + (0x1F59, "M", "ὑ"), + (0x1F5A, "X"), + (0x1F5B, "M", "ὓ"), + (0x1F5C, "X"), + (0x1F5D, "M", "ὕ"), + (0x1F5E, "X"), + (0x1F5F, "M", "ὗ"), + (0x1F60, "V"), + (0x1F68, "M", "ὠ"), + (0x1F69, "M", "ὡ"), + (0x1F6A, "M", "ὢ"), + (0x1F6B, "M", "ὣ"), + (0x1F6C, "M", "ὤ"), + (0x1F6D, "M", "ὥ"), + (0x1F6E, "M", "ὦ"), + (0x1F6F, "M", "ὧ"), + (0x1F70, "V"), + (0x1F71, "M", "ά"), + (0x1F72, "V"), + (0x1F73, "M", "έ"), + (0x1F74, "V"), + (0x1F75, "M", "ή"), + (0x1F76, "V"), + (0x1F77, "M", "ί"), + (0x1F78, "V"), + (0x1F79, "M", "ό"), + (0x1F7A, "V"), + (0x1F7B, "M", "ύ"), + (0x1F7C, "V"), + (0x1F7D, "M", "ώ"), + (0x1F7E, "X"), + (0x1F80, "M", "ἀι"), + (0x1F81, "M", "ἁι"), + (0x1F82, "M", "ἂι"), + (0x1F83, "M", "ἃι"), + (0x1F84, "M", "ἄι"), + (0x1F85, "M", "ἅι"), + (0x1F86, "M", "ἆι"), + (0x1F87, "M", "ἇι"), ] + def _seg_20() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: return [ - (0x1F88, 'M', 'ἀι'), - (0x1F89, 'M', 'ἁι'), - (0x1F8A, 'M', 'ἂι'), - (0x1F8B, 'M', 'ἃι'), - (0x1F8C, 'M', 'ἄι'), - (0x1F8D, 'M', 'ἅι'), - (0x1F8E, 'M', 'ἆι'), - (0x1F8F, 'M', 'ἇι'), - (0x1F90, 'M', 'ἠι'), - (0x1F91, 'M', 'ἡι'), - (0x1F92, 'M', 'ἢι'), - (0x1F93, 'M', 'ἣι'), - (0x1F94, 'M', 'ἤι'), - (0x1F95, 'M', 'ἥι'), - (0x1F96, 'M', 'ἦι'), - (0x1F97, 'M', 'ἧι'), - (0x1F98, 'M', 'ἠι'), - (0x1F99, 'M', 'ἡι'), - (0x1F9A, 'M', 'ἢι'), - (0x1F9B, 'M', 'ἣι'), - (0x1F9C, 'M', 'ἤι'), - (0x1F9D, 'M', 'ἥι'), - (0x1F9E, 'M', 'ἦι'), - (0x1F9F, 'M', 'ἧι'), - (0x1FA0, 'M', 'ὠι'), - (0x1FA1, 'M', 'ὡι'), - (0x1FA2, 'M', 'ὢι'), - (0x1FA3, 'M', 'ὣι'), - (0x1FA4, 'M', 'ὤι'), - (0x1FA5, 'M', 'ὥι'), - (0x1FA6, 'M', 'ὦι'), - (0x1FA7, 'M', 'ὧι'), - (0x1FA8, 'M', 'ὠι'), - (0x1FA9, 'M', 'ὡι'), - (0x1FAA, 'M', 'ὢι'), - (0x1FAB, 'M', 'ὣι'), - (0x1FAC, 'M', 'ὤι'), - (0x1FAD, 'M', 'ὥι'), - (0x1FAE, 'M', 'ὦι'), - (0x1FAF, 'M', 'ὧι'), - (0x1FB0, 'V'), - (0x1FB2, 'M', 'ὰι'), - (0x1FB3, 'M', 'αι'), - (0x1FB4, 'M', 'άι'), - (0x1FB5, 'X'), - (0x1FB6, 'V'), - (0x1FB7, 'M', 'ᾶι'), - (0x1FB8, 'M', 'ᾰ'), - (0x1FB9, 'M', 'ᾱ'), - (0x1FBA, 'M', 'ὰ'), - (0x1FBB, 'M', 'ά'), - (0x1FBC, 'M', 'αι'), - (0x1FBD, '3', ' ̓'), - (0x1FBE, 'M', 'ι'), - (0x1FBF, '3', ' ̓'), - (0x1FC0, '3', ' ͂'), - (0x1FC1, '3', ' ̈͂'), - (0x1FC2, 'M', 'ὴι'), - (0x1FC3, 'M', 'ηι'), - (0x1FC4, 'M', 'ήι'), - (0x1FC5, 'X'), - (0x1FC6, 'V'), - (0x1FC7, 'M', 'ῆι'), - (0x1FC8, 'M', 'ὲ'), - (0x1FC9, 'M', 'έ'), - (0x1FCA, 'M', 'ὴ'), - (0x1FCB, 'M', 'ή'), - (0x1FCC, 'M', 'ηι'), - (0x1FCD, '3', ' ̓̀'), - (0x1FCE, '3', ' ̓́'), - (0x1FCF, '3', ' ̓͂'), - (0x1FD0, 'V'), - (0x1FD3, 'M', 'ΐ'), - (0x1FD4, 'X'), - (0x1FD6, 'V'), - (0x1FD8, 'M', 'ῐ'), - (0x1FD9, 'M', 'ῑ'), - (0x1FDA, 'M', 'ὶ'), - (0x1FDB, 'M', 'ί'), - (0x1FDC, 'X'), - (0x1FDD, '3', ' ̔̀'), - (0x1FDE, '3', ' ̔́'), - (0x1FDF, '3', ' ̔͂'), - (0x1FE0, 'V'), - (0x1FE3, 'M', 'ΰ'), - (0x1FE4, 'V'), - (0x1FE8, 'M', 'ῠ'), - (0x1FE9, 'M', 'ῡ'), - (0x1FEA, 'M', 'ὺ'), - (0x1FEB, 'M', 'ύ'), - (0x1FEC, 'M', 'ῥ'), - (0x1FED, '3', ' ̈̀'), - (0x1FEE, '3', ' ̈́'), - (0x1FEF, '3', '`'), - (0x1FF0, 'X'), - (0x1FF2, 'M', 'ὼι'), - (0x1FF3, 'M', 'ωι'), - (0x1FF4, 'M', 'ώι'), - (0x1FF5, 'X'), - (0x1FF6, 'V'), + (0x1F88, "M", "ἀι"), + (0x1F89, "M", "ἁι"), + (0x1F8A, "M", "ἂι"), + (0x1F8B, "M", "ἃι"), + (0x1F8C, "M", "ἄι"), + (0x1F8D, "M", "ἅι"), + (0x1F8E, "M", "ἆι"), + (0x1F8F, "M", "ἇι"), + (0x1F90, "M", "ἠι"), + (0x1F91, "M", "ἡι"), + (0x1F92, "M", "ἢι"), + (0x1F93, "M", "ἣι"), + (0x1F94, "M", "ἤι"), + (0x1F95, "M", "ἥι"), + (0x1F96, "M", "ἦι"), + (0x1F97, "M", "ἧι"), + (0x1F98, "M", "ἠι"), + (0x1F99, "M", "ἡι"), + (0x1F9A, "M", "ἢι"), + (0x1F9B, "M", "ἣι"), + (0x1F9C, "M", "ἤι"), + (0x1F9D, "M", "ἥι"), + (0x1F9E, "M", "ἦι"), + (0x1F9F, "M", "ἧι"), + (0x1FA0, "M", "ὠι"), + (0x1FA1, "M", "ὡι"), + (0x1FA2, "M", "ὢι"), + (0x1FA3, "M", "ὣι"), + (0x1FA4, "M", "ὤι"), + (0x1FA5, "M", "ὥι"), + (0x1FA6, "M", "ὦι"), + (0x1FA7, "M", "ὧι"), + (0x1FA8, "M", "ὠι"), + (0x1FA9, "M", "ὡι"), + (0x1FAA, "M", "ὢι"), + (0x1FAB, "M", "ὣι"), + (0x1FAC, "M", "ὤι"), + (0x1FAD, "M", "ὥι"), + (0x1FAE, "M", "ὦι"), + (0x1FAF, "M", "ὧι"), + (0x1FB0, "V"), + (0x1FB2, "M", "ὰι"), + (0x1FB3, "M", "αι"), + (0x1FB4, "M", "άι"), + (0x1FB5, "X"), + (0x1FB6, "V"), + (0x1FB7, "M", "ᾶι"), + (0x1FB8, "M", "ᾰ"), + (0x1FB9, "M", "ᾱ"), + (0x1FBA, "M", "ὰ"), + (0x1FBB, "M", "ά"), + (0x1FBC, "M", "αι"), + (0x1FBD, "3", " ̓"), + (0x1FBE, "M", "ι"), + (0x1FBF, "3", " ̓"), + (0x1FC0, "3", " ͂"), + (0x1FC1, "3", " ̈͂"), + (0x1FC2, "M", "ὴι"), + (0x1FC3, "M", "ηι"), + (0x1FC4, "M", "ήι"), + (0x1FC5, "X"), + (0x1FC6, "V"), + (0x1FC7, "M", "ῆι"), + (0x1FC8, "M", "ὲ"), + (0x1FC9, "M", "έ"), + (0x1FCA, "M", "ὴ"), + (0x1FCB, "M", "ή"), + (0x1FCC, "M", "ηι"), + (0x1FCD, "3", " ̓̀"), + (0x1FCE, "3", " ̓́"), + (0x1FCF, "3", " ̓͂"), + (0x1FD0, "V"), + (0x1FD3, "M", "ΐ"), + (0x1FD4, "X"), + (0x1FD6, "V"), + (0x1FD8, "M", "ῐ"), + (0x1FD9, "M", "ῑ"), + (0x1FDA, "M", "ὶ"), + (0x1FDB, "M", "ί"), + (0x1FDC, "X"), + (0x1FDD, "3", " ̔̀"), + (0x1FDE, "3", " ̔́"), + (0x1FDF, "3", " ̔͂"), + (0x1FE0, "V"), + (0x1FE3, "M", "ΰ"), + (0x1FE4, "V"), + (0x1FE8, "M", "ῠ"), + (0x1FE9, "M", "ῡ"), + (0x1FEA, "M", "ὺ"), + (0x1FEB, "M", "ύ"), + (0x1FEC, "M", "ῥ"), + (0x1FED, "3", " ̈̀"), + (0x1FEE, "3", " ̈́"), + (0x1FEF, "3", "`"), + (0x1FF0, "X"), + (0x1FF2, "M", "ὼι"), + (0x1FF3, "M", "ωι"), + (0x1FF4, "M", "ώι"), + (0x1FF5, "X"), + (0x1FF6, "V"), ] + def _seg_21() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: return [ - (0x1FF7, 'M', 'ῶι'), - (0x1FF8, 'M', 'ὸ'), - (0x1FF9, 'M', 'ό'), - (0x1FFA, 'M', 'ὼ'), - (0x1FFB, 'M', 'ώ'), - (0x1FFC, 'M', 'ωι'), - (0x1FFD, '3', ' ́'), - (0x1FFE, '3', ' ̔'), - (0x1FFF, 'X'), - (0x2000, '3', ' '), - (0x200B, 'I'), - (0x200C, 'D', ''), - (0x200E, 'X'), - (0x2010, 'V'), - (0x2011, 'M', '‐'), - (0x2012, 'V'), - (0x2017, '3', ' ̳'), - (0x2018, 'V'), - (0x2024, 'X'), - (0x2027, 'V'), - (0x2028, 'X'), - (0x202F, '3', ' '), - (0x2030, 'V'), - (0x2033, 'M', '′′'), - (0x2034, 'M', '′′′'), - (0x2035, 'V'), - (0x2036, 'M', '‵‵'), - (0x2037, 'M', '‵‵‵'), - (0x2038, 'V'), - (0x203C, '3', '!!'), - (0x203D, 'V'), - (0x203E, '3', ' ̅'), - (0x203F, 'V'), - (0x2047, '3', '??'), - (0x2048, '3', '?!'), - (0x2049, '3', '!?'), - (0x204A, 'V'), - (0x2057, 'M', '′′′′'), - (0x2058, 'V'), - (0x205F, '3', ' '), - (0x2060, 'I'), - (0x2061, 'X'), - (0x2064, 'I'), - (0x2065, 'X'), - (0x2070, 'M', '0'), - (0x2071, 'M', 'i'), - (0x2072, 'X'), - (0x2074, 'M', '4'), - (0x2075, 'M', '5'), - (0x2076, 'M', '6'), - (0x2077, 'M', '7'), - (0x2078, 'M', '8'), - (0x2079, 'M', '9'), - (0x207A, '3', '+'), - (0x207B, 'M', '−'), - (0x207C, '3', '='), - (0x207D, '3', '('), - (0x207E, '3', ')'), - (0x207F, 'M', 'n'), - (0x2080, 'M', '0'), - (0x2081, 'M', '1'), - (0x2082, 'M', '2'), - (0x2083, 'M', '3'), - (0x2084, 'M', '4'), - (0x2085, 'M', '5'), - (0x2086, 'M', '6'), - (0x2087, 'M', '7'), - (0x2088, 'M', '8'), - (0x2089, 'M', '9'), - (0x208A, '3', '+'), - (0x208B, 'M', '−'), - (0x208C, '3', '='), - (0x208D, '3', '('), - (0x208E, '3', ')'), - (0x208F, 'X'), - (0x2090, 'M', 'a'), - (0x2091, 'M', 'e'), - (0x2092, 'M', 'o'), - (0x2093, 'M', 'x'), - (0x2094, 'M', 'ə'), - (0x2095, 'M', 'h'), - (0x2096, 'M', 'k'), - (0x2097, 'M', 'l'), - (0x2098, 'M', 'm'), - (0x2099, 'M', 'n'), - (0x209A, 'M', 'p'), - (0x209B, 'M', 's'), - (0x209C, 'M', 't'), - (0x209D, 'X'), - (0x20A0, 'V'), - (0x20A8, 'M', 'rs'), - (0x20A9, 'V'), - (0x20C1, 'X'), - (0x20D0, 'V'), - (0x20F1, 'X'), - (0x2100, '3', 'a/c'), - (0x2101, '3', 'a/s'), - (0x2102, 'M', 'c'), - (0x2103, 'M', '°c'), - (0x2104, 'V'), + (0x1FF7, "M", "ῶι"), + (0x1FF8, "M", "ὸ"), + (0x1FF9, "M", "ό"), + (0x1FFA, "M", "ὼ"), + (0x1FFB, "M", "ώ"), + (0x1FFC, "M", "ωι"), + (0x1FFD, "3", " ́"), + (0x1FFE, "3", " ̔"), + (0x1FFF, "X"), + (0x2000, "3", " "), + (0x200B, "I"), + (0x200C, "D", ""), + (0x200E, "X"), + (0x2010, "V"), + (0x2011, "M", "‐"), + (0x2012, "V"), + (0x2017, "3", " ̳"), + (0x2018, "V"), + (0x2024, "X"), + (0x2027, "V"), + (0x2028, "X"), + (0x202F, "3", " "), + (0x2030, "V"), + (0x2033, "M", "′′"), + (0x2034, "M", "′′′"), + (0x2035, "V"), + (0x2036, "M", "‵‵"), + (0x2037, "M", "‵‵‵"), + (0x2038, "V"), + (0x203C, "3", "!!"), + (0x203D, "V"), + (0x203E, "3", " ̅"), + (0x203F, "V"), + (0x2047, "3", "??"), + (0x2048, "3", "?!"), + (0x2049, "3", "!?"), + (0x204A, "V"), + (0x2057, "M", "′′′′"), + (0x2058, "V"), + (0x205F, "3", " "), + (0x2060, "I"), + (0x2061, "X"), + (0x2064, "I"), + (0x2065, "X"), + (0x2070, "M", "0"), + (0x2071, "M", "i"), + (0x2072, "X"), + (0x2074, "M", "4"), + (0x2075, "M", "5"), + (0x2076, "M", "6"), + (0x2077, "M", "7"), + (0x2078, "M", "8"), + (0x2079, "M", "9"), + (0x207A, "3", "+"), + (0x207B, "M", "−"), + (0x207C, "3", "="), + (0x207D, "3", "("), + (0x207E, "3", ")"), + (0x207F, "M", "n"), + (0x2080, "M", "0"), + (0x2081, "M", "1"), + (0x2082, "M", "2"), + (0x2083, "M", "3"), + (0x2084, "M", "4"), + (0x2085, "M", "5"), + (0x2086, "M", "6"), + (0x2087, "M", "7"), + (0x2088, "M", "8"), + (0x2089, "M", "9"), + (0x208A, "3", "+"), + (0x208B, "M", "−"), + (0x208C, "3", "="), + (0x208D, "3", "("), + (0x208E, "3", ")"), + (0x208F, "X"), + (0x2090, "M", "a"), + (0x2091, "M", "e"), + (0x2092, "M", "o"), + (0x2093, "M", "x"), + (0x2094, "M", "ə"), + (0x2095, "M", "h"), + (0x2096, "M", "k"), + (0x2097, "M", "l"), + (0x2098, "M", "m"), + (0x2099, "M", "n"), + (0x209A, "M", "p"), + (0x209B, "M", "s"), + (0x209C, "M", "t"), + (0x209D, "X"), + (0x20A0, "V"), + (0x20A8, "M", "rs"), + (0x20A9, "V"), + (0x20C1, "X"), + (0x20D0, "V"), + (0x20F1, "X"), + (0x2100, "3", "a/c"), + (0x2101, "3", "a/s"), + (0x2102, "M", "c"), + (0x2103, "M", "°c"), + (0x2104, "V"), ] + def _seg_22() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: return [ - (0x2105, '3', 'c/o'), - (0x2106, '3', 'c/u'), - (0x2107, 'M', 'ɛ'), - (0x2108, 'V'), - (0x2109, 'M', '°f'), - (0x210A, 'M', 'g'), - (0x210B, 'M', 'h'), - (0x210F, 'M', 'ħ'), - (0x2110, 'M', 'i'), - (0x2112, 'M', 'l'), - (0x2114, 'V'), - (0x2115, 'M', 'n'), - (0x2116, 'M', 'no'), - (0x2117, 'V'), - (0x2119, 'M', 'p'), - (0x211A, 'M', 'q'), - (0x211B, 'M', 'r'), - (0x211E, 'V'), - (0x2120, 'M', 'sm'), - (0x2121, 'M', 'tel'), - (0x2122, 'M', 'tm'), - (0x2123, 'V'), - (0x2124, 'M', 'z'), - (0x2125, 'V'), - (0x2126, 'M', 'ω'), - (0x2127, 'V'), - (0x2128, 'M', 'z'), - (0x2129, 'V'), - (0x212A, 'M', 'k'), - (0x212B, 'M', 'å'), - (0x212C, 'M', 'b'), - (0x212D, 'M', 'c'), - (0x212E, 'V'), - (0x212F, 'M', 'e'), - (0x2131, 'M', 'f'), - (0x2132, 'X'), - (0x2133, 'M', 'm'), - (0x2134, 'M', 'o'), - (0x2135, 'M', 'א'), - (0x2136, 'M', 'ב'), - (0x2137, 'M', 'ג'), - (0x2138, 'M', 'ד'), - (0x2139, 'M', 'i'), - (0x213A, 'V'), - (0x213B, 'M', 'fax'), - (0x213C, 'M', 'π'), - (0x213D, 'M', 'γ'), - (0x213F, 'M', 'π'), - (0x2140, 'M', '∑'), - (0x2141, 'V'), - (0x2145, 'M', 'd'), - (0x2147, 'M', 'e'), - (0x2148, 'M', 'i'), - (0x2149, 'M', 'j'), - (0x214A, 'V'), - (0x2150, 'M', '1⁄7'), - (0x2151, 'M', '1⁄9'), - (0x2152, 'M', '1⁄10'), - (0x2153, 'M', '1⁄3'), - (0x2154, 'M', '2⁄3'), - (0x2155, 'M', '1⁄5'), - (0x2156, 'M', '2⁄5'), - (0x2157, 'M', '3⁄5'), - (0x2158, 'M', '4⁄5'), - (0x2159, 'M', '1⁄6'), - (0x215A, 'M', '5⁄6'), - (0x215B, 'M', '1⁄8'), - (0x215C, 'M', '3⁄8'), - (0x215D, 'M', '5⁄8'), - (0x215E, 'M', '7⁄8'), - (0x215F, 'M', '1⁄'), - (0x2160, 'M', 'i'), - (0x2161, 'M', 'ii'), - (0x2162, 'M', 'iii'), - (0x2163, 'M', 'iv'), - (0x2164, 'M', 'v'), - (0x2165, 'M', 'vi'), - (0x2166, 'M', 'vii'), - (0x2167, 'M', 'viii'), - (0x2168, 'M', 'ix'), - (0x2169, 'M', 'x'), - (0x216A, 'M', 'xi'), - (0x216B, 'M', 'xii'), - (0x216C, 'M', 'l'), - (0x216D, 'M', 'c'), - (0x216E, 'M', 'd'), - (0x216F, 'M', 'm'), - (0x2170, 'M', 'i'), - (0x2171, 'M', 'ii'), - (0x2172, 'M', 'iii'), - (0x2173, 'M', 'iv'), - (0x2174, 'M', 'v'), - (0x2175, 'M', 'vi'), - (0x2176, 'M', 'vii'), - (0x2177, 'M', 'viii'), - (0x2178, 'M', 'ix'), - (0x2179, 'M', 'x'), - (0x217A, 'M', 'xi'), - (0x217B, 'M', 'xii'), - (0x217C, 'M', 'l'), + (0x2105, "3", "c/o"), + (0x2106, "3", "c/u"), + (0x2107, "M", "ɛ"), + (0x2108, "V"), + (0x2109, "M", "°f"), + (0x210A, "M", "g"), + (0x210B, "M", "h"), + (0x210F, "M", "ħ"), + (0x2110, "M", "i"), + (0x2112, "M", "l"), + (0x2114, "V"), + (0x2115, "M", "n"), + (0x2116, "M", "no"), + (0x2117, "V"), + (0x2119, "M", "p"), + (0x211A, "M", "q"), + (0x211B, "M", "r"), + (0x211E, "V"), + (0x2120, "M", "sm"), + (0x2121, "M", "tel"), + (0x2122, "M", "tm"), + (0x2123, "V"), + (0x2124, "M", "z"), + (0x2125, "V"), + (0x2126, "M", "ω"), + (0x2127, "V"), + (0x2128, "M", "z"), + (0x2129, "V"), + (0x212A, "M", "k"), + (0x212B, "M", "å"), + (0x212C, "M", "b"), + (0x212D, "M", "c"), + (0x212E, "V"), + (0x212F, "M", "e"), + (0x2131, "M", "f"), + (0x2132, "X"), + (0x2133, "M", "m"), + (0x2134, "M", "o"), + (0x2135, "M", "א"), + (0x2136, "M", "ב"), + (0x2137, "M", "ג"), + (0x2138, "M", "ד"), + (0x2139, "M", "i"), + (0x213A, "V"), + (0x213B, "M", "fax"), + (0x213C, "M", "π"), + (0x213D, "M", "γ"), + (0x213F, "M", "π"), + (0x2140, "M", "∑"), + (0x2141, "V"), + (0x2145, "M", "d"), + (0x2147, "M", "e"), + (0x2148, "M", "i"), + (0x2149, "M", "j"), + (0x214A, "V"), + (0x2150, "M", "1⁄7"), + (0x2151, "M", "1⁄9"), + (0x2152, "M", "1⁄10"), + (0x2153, "M", "1⁄3"), + (0x2154, "M", "2⁄3"), + (0x2155, "M", "1⁄5"), + (0x2156, "M", "2⁄5"), + (0x2157, "M", "3⁄5"), + (0x2158, "M", "4⁄5"), + (0x2159, "M", "1⁄6"), + (0x215A, "M", "5⁄6"), + (0x215B, "M", "1⁄8"), + (0x215C, "M", "3⁄8"), + (0x215D, "M", "5⁄8"), + (0x215E, "M", "7⁄8"), + (0x215F, "M", "1⁄"), + (0x2160, "M", "i"), + (0x2161, "M", "ii"), + (0x2162, "M", "iii"), + (0x2163, "M", "iv"), + (0x2164, "M", "v"), + (0x2165, "M", "vi"), + (0x2166, "M", "vii"), + (0x2167, "M", "viii"), + (0x2168, "M", "ix"), + (0x2169, "M", "x"), + (0x216A, "M", "xi"), + (0x216B, "M", "xii"), + (0x216C, "M", "l"), + (0x216D, "M", "c"), + (0x216E, "M", "d"), + (0x216F, "M", "m"), + (0x2170, "M", "i"), + (0x2171, "M", "ii"), + (0x2172, "M", "iii"), + (0x2173, "M", "iv"), + (0x2174, "M", "v"), + (0x2175, "M", "vi"), + (0x2176, "M", "vii"), + (0x2177, "M", "viii"), + (0x2178, "M", "ix"), + (0x2179, "M", "x"), + (0x217A, "M", "xi"), + (0x217B, "M", "xii"), + (0x217C, "M", "l"), ] + def _seg_23() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: return [ - (0x217D, 'M', 'c'), - (0x217E, 'M', 'd'), - (0x217F, 'M', 'm'), - (0x2180, 'V'), - (0x2183, 'X'), - (0x2184, 'V'), - (0x2189, 'M', '0⁄3'), - (0x218A, 'V'), - (0x218C, 'X'), - (0x2190, 'V'), - (0x222C, 'M', '∫∫'), - (0x222D, 'M', '∫∫∫'), - (0x222E, 'V'), - (0x222F, 'M', '∮∮'), - (0x2230, 'M', '∮∮∮'), - (0x2231, 'V'), - (0x2260, '3'), - (0x2261, 'V'), - (0x226E, '3'), - (0x2270, 'V'), - (0x2329, 'M', '〈'), - (0x232A, 'M', '〉'), - (0x232B, 'V'), - (0x2427, 'X'), - (0x2440, 'V'), - (0x244B, 'X'), - (0x2460, 'M', '1'), - (0x2461, 'M', '2'), - (0x2462, 'M', '3'), - (0x2463, 'M', '4'), - (0x2464, 'M', '5'), - (0x2465, 'M', '6'), - (0x2466, 'M', '7'), - (0x2467, 'M', '8'), - (0x2468, 'M', '9'), - (0x2469, 'M', '10'), - (0x246A, 'M', '11'), - (0x246B, 'M', '12'), - (0x246C, 'M', '13'), - (0x246D, 'M', '14'), - (0x246E, 'M', '15'), - (0x246F, 'M', '16'), - (0x2470, 'M', '17'), - (0x2471, 'M', '18'), - (0x2472, 'M', '19'), - (0x2473, 'M', '20'), - (0x2474, '3', '(1)'), - (0x2475, '3', '(2)'), - (0x2476, '3', '(3)'), - (0x2477, '3', '(4)'), - (0x2478, '3', '(5)'), - (0x2479, '3', '(6)'), - (0x247A, '3', '(7)'), - (0x247B, '3', '(8)'), - (0x247C, '3', '(9)'), - (0x247D, '3', '(10)'), - (0x247E, '3', '(11)'), - (0x247F, '3', '(12)'), - (0x2480, '3', '(13)'), - (0x2481, '3', '(14)'), - (0x2482, '3', '(15)'), - (0x2483, '3', '(16)'), - (0x2484, '3', '(17)'), - (0x2485, '3', '(18)'), - (0x2486, '3', '(19)'), - (0x2487, '3', '(20)'), - (0x2488, 'X'), - (0x249C, '3', '(a)'), - (0x249D, '3', '(b)'), - (0x249E, '3', '(c)'), - (0x249F, '3', '(d)'), - (0x24A0, '3', '(e)'), - (0x24A1, '3', '(f)'), - (0x24A2, '3', '(g)'), - (0x24A3, '3', '(h)'), - (0x24A4, '3', '(i)'), - (0x24A5, '3', '(j)'), - (0x24A6, '3', '(k)'), - (0x24A7, '3', '(l)'), - (0x24A8, '3', '(m)'), - (0x24A9, '3', '(n)'), - (0x24AA, '3', '(o)'), - (0x24AB, '3', '(p)'), - (0x24AC, '3', '(q)'), - (0x24AD, '3', '(r)'), - (0x24AE, '3', '(s)'), - (0x24AF, '3', '(t)'), - (0x24B0, '3', '(u)'), - (0x24B1, '3', '(v)'), - (0x24B2, '3', '(w)'), - (0x24B3, '3', '(x)'), - (0x24B4, '3', '(y)'), - (0x24B5, '3', '(z)'), - (0x24B6, 'M', 'a'), - (0x24B7, 'M', 'b'), - (0x24B8, 'M', 'c'), - (0x24B9, 'M', 'd'), - (0x24BA, 'M', 'e'), - (0x24BB, 'M', 'f'), - (0x24BC, 'M', 'g'), + (0x217D, "M", "c"), + (0x217E, "M", "d"), + (0x217F, "M", "m"), + (0x2180, "V"), + (0x2183, "X"), + (0x2184, "V"), + (0x2189, "M", "0⁄3"), + (0x218A, "V"), + (0x218C, "X"), + (0x2190, "V"), + (0x222C, "M", "∫∫"), + (0x222D, "M", "∫∫∫"), + (0x222E, "V"), + (0x222F, "M", "∮∮"), + (0x2230, "M", "∮∮∮"), + (0x2231, "V"), + (0x2329, "M", "〈"), + (0x232A, "M", "〉"), + (0x232B, "V"), + (0x2427, "X"), + (0x2440, "V"), + (0x244B, "X"), + (0x2460, "M", "1"), + (0x2461, "M", "2"), + (0x2462, "M", "3"), + (0x2463, "M", "4"), + (0x2464, "M", "5"), + (0x2465, "M", "6"), + (0x2466, "M", "7"), + (0x2467, "M", "8"), + (0x2468, "M", "9"), + (0x2469, "M", "10"), + (0x246A, "M", "11"), + (0x246B, "M", "12"), + (0x246C, "M", "13"), + (0x246D, "M", "14"), + (0x246E, "M", "15"), + (0x246F, "M", "16"), + (0x2470, "M", "17"), + (0x2471, "M", "18"), + (0x2472, "M", "19"), + (0x2473, "M", "20"), + (0x2474, "3", "(1)"), + (0x2475, "3", "(2)"), + (0x2476, "3", "(3)"), + (0x2477, "3", "(4)"), + (0x2478, "3", "(5)"), + (0x2479, "3", "(6)"), + (0x247A, "3", "(7)"), + (0x247B, "3", "(8)"), + (0x247C, "3", "(9)"), + (0x247D, "3", "(10)"), + (0x247E, "3", "(11)"), + (0x247F, "3", "(12)"), + (0x2480, "3", "(13)"), + (0x2481, "3", "(14)"), + (0x2482, "3", "(15)"), + (0x2483, "3", "(16)"), + (0x2484, "3", "(17)"), + (0x2485, "3", "(18)"), + (0x2486, "3", "(19)"), + (0x2487, "3", "(20)"), + (0x2488, "X"), + (0x249C, "3", "(a)"), + (0x249D, "3", "(b)"), + (0x249E, "3", "(c)"), + (0x249F, "3", "(d)"), + (0x24A0, "3", "(e)"), + (0x24A1, "3", "(f)"), + (0x24A2, "3", "(g)"), + (0x24A3, "3", "(h)"), + (0x24A4, "3", "(i)"), + (0x24A5, "3", "(j)"), + (0x24A6, "3", "(k)"), + (0x24A7, "3", "(l)"), + (0x24A8, "3", "(m)"), + (0x24A9, "3", "(n)"), + (0x24AA, "3", "(o)"), + (0x24AB, "3", "(p)"), + (0x24AC, "3", "(q)"), + (0x24AD, "3", "(r)"), + (0x24AE, "3", "(s)"), + (0x24AF, "3", "(t)"), + (0x24B0, "3", "(u)"), + (0x24B1, "3", "(v)"), + (0x24B2, "3", "(w)"), + (0x24B3, "3", "(x)"), + (0x24B4, "3", "(y)"), + (0x24B5, "3", "(z)"), + (0x24B6, "M", "a"), + (0x24B7, "M", "b"), + (0x24B8, "M", "c"), + (0x24B9, "M", "d"), + (0x24BA, "M", "e"), + (0x24BB, "M", "f"), + (0x24BC, "M", "g"), + (0x24BD, "M", "h"), + (0x24BE, "M", "i"), + (0x24BF, "M", "j"), + (0x24C0, "M", "k"), ] + def _seg_24() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: return [ - (0x24BD, 'M', 'h'), - (0x24BE, 'M', 'i'), - (0x24BF, 'M', 'j'), - (0x24C0, 'M', 'k'), - (0x24C1, 'M', 'l'), - (0x24C2, 'M', 'm'), - (0x24C3, 'M', 'n'), - (0x24C4, 'M', 'o'), - (0x24C5, 'M', 'p'), - (0x24C6, 'M', 'q'), - (0x24C7, 'M', 'r'), - (0x24C8, 'M', 's'), - (0x24C9, 'M', 't'), - (0x24CA, 'M', 'u'), - (0x24CB, 'M', 'v'), - (0x24CC, 'M', 'w'), - (0x24CD, 'M', 'x'), - (0x24CE, 'M', 'y'), - (0x24CF, 'M', 'z'), - (0x24D0, 'M', 'a'), - (0x24D1, 'M', 'b'), - (0x24D2, 'M', 'c'), - (0x24D3, 'M', 'd'), - (0x24D4, 'M', 'e'), - (0x24D5, 'M', 'f'), - (0x24D6, 'M', 'g'), - (0x24D7, 'M', 'h'), - (0x24D8, 'M', 'i'), - (0x24D9, 'M', 'j'), - (0x24DA, 'M', 'k'), - (0x24DB, 'M', 'l'), - (0x24DC, 'M', 'm'), - (0x24DD, 'M', 'n'), - (0x24DE, 'M', 'o'), - (0x24DF, 'M', 'p'), - (0x24E0, 'M', 'q'), - (0x24E1, 'M', 'r'), - (0x24E2, 'M', 's'), - (0x24E3, 'M', 't'), - (0x24E4, 'M', 'u'), - (0x24E5, 'M', 'v'), - (0x24E6, 'M', 'w'), - (0x24E7, 'M', 'x'), - (0x24E8, 'M', 'y'), - (0x24E9, 'M', 'z'), - (0x24EA, 'M', '0'), - (0x24EB, 'V'), - (0x2A0C, 'M', '∫∫∫∫'), - (0x2A0D, 'V'), - (0x2A74, '3', '::='), - (0x2A75, '3', '=='), - (0x2A76, '3', '==='), - (0x2A77, 'V'), - (0x2ADC, 'M', '⫝̸'), - (0x2ADD, 'V'), - (0x2B74, 'X'), - (0x2B76, 'V'), - (0x2B96, 'X'), - (0x2B97, 'V'), - (0x2C00, 'M', 'ⰰ'), - (0x2C01, 'M', 'ⰱ'), - (0x2C02, 'M', 'ⰲ'), - (0x2C03, 'M', 'ⰳ'), - (0x2C04, 'M', 'ⰴ'), - (0x2C05, 'M', 'ⰵ'), - (0x2C06, 'M', 'ⰶ'), - (0x2C07, 'M', 'ⰷ'), - (0x2C08, 'M', 'ⰸ'), - (0x2C09, 'M', 'ⰹ'), - (0x2C0A, 'M', 'ⰺ'), - (0x2C0B, 'M', 'ⰻ'), - (0x2C0C, 'M', 'ⰼ'), - (0x2C0D, 'M', 'ⰽ'), - (0x2C0E, 'M', 'ⰾ'), - (0x2C0F, 'M', 'ⰿ'), - (0x2C10, 'M', 'ⱀ'), - (0x2C11, 'M', 'ⱁ'), - (0x2C12, 'M', 'ⱂ'), - (0x2C13, 'M', 'ⱃ'), - (0x2C14, 'M', 'ⱄ'), - (0x2C15, 'M', 'ⱅ'), - (0x2C16, 'M', 'ⱆ'), - (0x2C17, 'M', 'ⱇ'), - (0x2C18, 'M', 'ⱈ'), - (0x2C19, 'M', 'ⱉ'), - (0x2C1A, 'M', 'ⱊ'), - (0x2C1B, 'M', 'ⱋ'), - (0x2C1C, 'M', 'ⱌ'), - (0x2C1D, 'M', 'ⱍ'), - (0x2C1E, 'M', 'ⱎ'), - (0x2C1F, 'M', 'ⱏ'), - (0x2C20, 'M', 'ⱐ'), - (0x2C21, 'M', 'ⱑ'), - (0x2C22, 'M', 'ⱒ'), - (0x2C23, 'M', 'ⱓ'), - (0x2C24, 'M', 'ⱔ'), - (0x2C25, 'M', 'ⱕ'), - (0x2C26, 'M', 'ⱖ'), - (0x2C27, 'M', 'ⱗ'), - (0x2C28, 'M', 'ⱘ'), + (0x24C1, "M", "l"), + (0x24C2, "M", "m"), + (0x24C3, "M", "n"), + (0x24C4, "M", "o"), + (0x24C5, "M", "p"), + (0x24C6, "M", "q"), + (0x24C7, "M", "r"), + (0x24C8, "M", "s"), + (0x24C9, "M", "t"), + (0x24CA, "M", "u"), + (0x24CB, "M", "v"), + (0x24CC, "M", "w"), + (0x24CD, "M", "x"), + (0x24CE, "M", "y"), + (0x24CF, "M", "z"), + (0x24D0, "M", "a"), + (0x24D1, "M", "b"), + (0x24D2, "M", "c"), + (0x24D3, "M", "d"), + (0x24D4, "M", "e"), + (0x24D5, "M", "f"), + (0x24D6, "M", "g"), + (0x24D7, "M", "h"), + (0x24D8, "M", "i"), + (0x24D9, "M", "j"), + (0x24DA, "M", "k"), + (0x24DB, "M", "l"), + (0x24DC, "M", "m"), + (0x24DD, "M", "n"), + (0x24DE, "M", "o"), + (0x24DF, "M", "p"), + (0x24E0, "M", "q"), + (0x24E1, "M", "r"), + (0x24E2, "M", "s"), + (0x24E3, "M", "t"), + (0x24E4, "M", "u"), + (0x24E5, "M", "v"), + (0x24E6, "M", "w"), + (0x24E7, "M", "x"), + (0x24E8, "M", "y"), + (0x24E9, "M", "z"), + (0x24EA, "M", "0"), + (0x24EB, "V"), + (0x2A0C, "M", "∫∫∫∫"), + (0x2A0D, "V"), + (0x2A74, "3", "::="), + (0x2A75, "3", "=="), + (0x2A76, "3", "==="), + (0x2A77, "V"), + (0x2ADC, "M", "⫝̸"), + (0x2ADD, "V"), + (0x2B74, "X"), + (0x2B76, "V"), + (0x2B96, "X"), + (0x2B97, "V"), + (0x2C00, "M", "ⰰ"), + (0x2C01, "M", "ⰱ"), + (0x2C02, "M", "ⰲ"), + (0x2C03, "M", "ⰳ"), + (0x2C04, "M", "ⰴ"), + (0x2C05, "M", "ⰵ"), + (0x2C06, "M", "ⰶ"), + (0x2C07, "M", "ⰷ"), + (0x2C08, "M", "ⰸ"), + (0x2C09, "M", "ⰹ"), + (0x2C0A, "M", "ⰺ"), + (0x2C0B, "M", "ⰻ"), + (0x2C0C, "M", "ⰼ"), + (0x2C0D, "M", "ⰽ"), + (0x2C0E, "M", "ⰾ"), + (0x2C0F, "M", "ⰿ"), + (0x2C10, "M", "ⱀ"), + (0x2C11, "M", "ⱁ"), + (0x2C12, "M", "ⱂ"), + (0x2C13, "M", "ⱃ"), + (0x2C14, "M", "ⱄ"), + (0x2C15, "M", "ⱅ"), + (0x2C16, "M", "ⱆ"), + (0x2C17, "M", "ⱇ"), + (0x2C18, "M", "ⱈ"), + (0x2C19, "M", "ⱉ"), + (0x2C1A, "M", "ⱊ"), + (0x2C1B, "M", "ⱋ"), + (0x2C1C, "M", "ⱌ"), + (0x2C1D, "M", "ⱍ"), + (0x2C1E, "M", "ⱎ"), + (0x2C1F, "M", "ⱏ"), + (0x2C20, "M", "ⱐ"), + (0x2C21, "M", "ⱑ"), + (0x2C22, "M", "ⱒ"), + (0x2C23, "M", "ⱓ"), + (0x2C24, "M", "ⱔ"), + (0x2C25, "M", "ⱕ"), + (0x2C26, "M", "ⱖ"), + (0x2C27, "M", "ⱗ"), + (0x2C28, "M", "ⱘ"), + (0x2C29, "M", "ⱙ"), + (0x2C2A, "M", "ⱚ"), + (0x2C2B, "M", "ⱛ"), + (0x2C2C, "M", "ⱜ"), ] + def _seg_25() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: return [ - (0x2C29, 'M', 'ⱙ'), - (0x2C2A, 'M', 'ⱚ'), - (0x2C2B, 'M', 'ⱛ'), - (0x2C2C, 'M', 'ⱜ'), - (0x2C2D, 'M', 'ⱝ'), - (0x2C2E, 'M', 'ⱞ'), - (0x2C2F, 'M', 'ⱟ'), - (0x2C30, 'V'), - (0x2C60, 'M', 'ⱡ'), - (0x2C61, 'V'), - (0x2C62, 'M', 'ɫ'), - (0x2C63, 'M', 'ᵽ'), - (0x2C64, 'M', 'ɽ'), - (0x2C65, 'V'), - (0x2C67, 'M', 'ⱨ'), - (0x2C68, 'V'), - (0x2C69, 'M', 'ⱪ'), - (0x2C6A, 'V'), - (0x2C6B, 'M', 'ⱬ'), - (0x2C6C, 'V'), - (0x2C6D, 'M', 'ɑ'), - (0x2C6E, 'M', 'ɱ'), - (0x2C6F, 'M', 'ɐ'), - (0x2C70, 'M', 'ɒ'), - (0x2C71, 'V'), - (0x2C72, 'M', 'ⱳ'), - (0x2C73, 'V'), - (0x2C75, 'M', 'ⱶ'), - (0x2C76, 'V'), - (0x2C7C, 'M', 'j'), - (0x2C7D, 'M', 'v'), - (0x2C7E, 'M', 'ȿ'), - (0x2C7F, 'M', 'ɀ'), - (0x2C80, 'M', 'ⲁ'), - (0x2C81, 'V'), - (0x2C82, 'M', 'ⲃ'), - (0x2C83, 'V'), - (0x2C84, 'M', 'ⲅ'), - (0x2C85, 'V'), - (0x2C86, 'M', 'ⲇ'), - (0x2C87, 'V'), - (0x2C88, 'M', 'ⲉ'), - (0x2C89, 'V'), - (0x2C8A, 'M', 'ⲋ'), - (0x2C8B, 'V'), - (0x2C8C, 'M', 'ⲍ'), - (0x2C8D, 'V'), - (0x2C8E, 'M', 'ⲏ'), - (0x2C8F, 'V'), - (0x2C90, 'M', 'ⲑ'), - (0x2C91, 'V'), - (0x2C92, 'M', 'ⲓ'), - (0x2C93, 'V'), - (0x2C94, 'M', 'ⲕ'), - (0x2C95, 'V'), - (0x2C96, 'M', 'ⲗ'), - (0x2C97, 'V'), - (0x2C98, 'M', 'ⲙ'), - (0x2C99, 'V'), - (0x2C9A, 'M', 'ⲛ'), - (0x2C9B, 'V'), - (0x2C9C, 'M', 'ⲝ'), - (0x2C9D, 'V'), - (0x2C9E, 'M', 'ⲟ'), - (0x2C9F, 'V'), - (0x2CA0, 'M', 'ⲡ'), - (0x2CA1, 'V'), - (0x2CA2, 'M', 'ⲣ'), - (0x2CA3, 'V'), - (0x2CA4, 'M', 'ⲥ'), - (0x2CA5, 'V'), - (0x2CA6, 'M', 'ⲧ'), - (0x2CA7, 'V'), - (0x2CA8, 'M', 'ⲩ'), - (0x2CA9, 'V'), - (0x2CAA, 'M', 'ⲫ'), - (0x2CAB, 'V'), - (0x2CAC, 'M', 'ⲭ'), - (0x2CAD, 'V'), - (0x2CAE, 'M', 'ⲯ'), - (0x2CAF, 'V'), - (0x2CB0, 'M', 'ⲱ'), - (0x2CB1, 'V'), - (0x2CB2, 'M', 'ⲳ'), - (0x2CB3, 'V'), - (0x2CB4, 'M', 'ⲵ'), - (0x2CB5, 'V'), - (0x2CB6, 'M', 'ⲷ'), - (0x2CB7, 'V'), - (0x2CB8, 'M', 'ⲹ'), - (0x2CB9, 'V'), - (0x2CBA, 'M', 'ⲻ'), - (0x2CBB, 'V'), - (0x2CBC, 'M', 'ⲽ'), - (0x2CBD, 'V'), - (0x2CBE, 'M', 'ⲿ'), - (0x2CBF, 'V'), - (0x2CC0, 'M', 'ⳁ'), - (0x2CC1, 'V'), - (0x2CC2, 'M', 'ⳃ'), + (0x2C2D, "M", "ⱝ"), + (0x2C2E, "M", "ⱞ"), + (0x2C2F, "M", "ⱟ"), + (0x2C30, "V"), + (0x2C60, "M", "ⱡ"), + (0x2C61, "V"), + (0x2C62, "M", "ɫ"), + (0x2C63, "M", "ᵽ"), + (0x2C64, "M", "ɽ"), + (0x2C65, "V"), + (0x2C67, "M", "ⱨ"), + (0x2C68, "V"), + (0x2C69, "M", "ⱪ"), + (0x2C6A, "V"), + (0x2C6B, "M", "ⱬ"), + (0x2C6C, "V"), + (0x2C6D, "M", "ɑ"), + (0x2C6E, "M", "ɱ"), + (0x2C6F, "M", "ɐ"), + (0x2C70, "M", "ɒ"), + (0x2C71, "V"), + (0x2C72, "M", "ⱳ"), + (0x2C73, "V"), + (0x2C75, "M", "ⱶ"), + (0x2C76, "V"), + (0x2C7C, "M", "j"), + (0x2C7D, "M", "v"), + (0x2C7E, "M", "ȿ"), + (0x2C7F, "M", "ɀ"), + (0x2C80, "M", "ⲁ"), + (0x2C81, "V"), + (0x2C82, "M", "ⲃ"), + (0x2C83, "V"), + (0x2C84, "M", "ⲅ"), + (0x2C85, "V"), + (0x2C86, "M", "ⲇ"), + (0x2C87, "V"), + (0x2C88, "M", "ⲉ"), + (0x2C89, "V"), + (0x2C8A, "M", "ⲋ"), + (0x2C8B, "V"), + (0x2C8C, "M", "ⲍ"), + (0x2C8D, "V"), + (0x2C8E, "M", "ⲏ"), + (0x2C8F, "V"), + (0x2C90, "M", "ⲑ"), + (0x2C91, "V"), + (0x2C92, "M", "ⲓ"), + (0x2C93, "V"), + (0x2C94, "M", "ⲕ"), + (0x2C95, "V"), + (0x2C96, "M", "ⲗ"), + (0x2C97, "V"), + (0x2C98, "M", "ⲙ"), + (0x2C99, "V"), + (0x2C9A, "M", "ⲛ"), + (0x2C9B, "V"), + (0x2C9C, "M", "ⲝ"), + (0x2C9D, "V"), + (0x2C9E, "M", "ⲟ"), + (0x2C9F, "V"), + (0x2CA0, "M", "ⲡ"), + (0x2CA1, "V"), + (0x2CA2, "M", "ⲣ"), + (0x2CA3, "V"), + (0x2CA4, "M", "ⲥ"), + (0x2CA5, "V"), + (0x2CA6, "M", "ⲧ"), + (0x2CA7, "V"), + (0x2CA8, "M", "ⲩ"), + (0x2CA9, "V"), + (0x2CAA, "M", "ⲫ"), + (0x2CAB, "V"), + (0x2CAC, "M", "ⲭ"), + (0x2CAD, "V"), + (0x2CAE, "M", "ⲯ"), + (0x2CAF, "V"), + (0x2CB0, "M", "ⲱ"), + (0x2CB1, "V"), + (0x2CB2, "M", "ⲳ"), + (0x2CB3, "V"), + (0x2CB4, "M", "ⲵ"), + (0x2CB5, "V"), + (0x2CB6, "M", "ⲷ"), + (0x2CB7, "V"), + (0x2CB8, "M", "ⲹ"), + (0x2CB9, "V"), + (0x2CBA, "M", "ⲻ"), + (0x2CBB, "V"), + (0x2CBC, "M", "ⲽ"), + (0x2CBD, "V"), + (0x2CBE, "M", "ⲿ"), + (0x2CBF, "V"), + (0x2CC0, "M", "ⳁ"), + (0x2CC1, "V"), + (0x2CC2, "M", "ⳃ"), + (0x2CC3, "V"), + (0x2CC4, "M", "ⳅ"), + (0x2CC5, "V"), + (0x2CC6, "M", "ⳇ"), ] + def _seg_26() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: return [ - (0x2CC3, 'V'), - (0x2CC4, 'M', 'ⳅ'), - (0x2CC5, 'V'), - (0x2CC6, 'M', 'ⳇ'), - (0x2CC7, 'V'), - (0x2CC8, 'M', 'ⳉ'), - (0x2CC9, 'V'), - (0x2CCA, 'M', 'ⳋ'), - (0x2CCB, 'V'), - (0x2CCC, 'M', 'ⳍ'), - (0x2CCD, 'V'), - (0x2CCE, 'M', 'ⳏ'), - (0x2CCF, 'V'), - (0x2CD0, 'M', 'ⳑ'), - (0x2CD1, 'V'), - (0x2CD2, 'M', 'ⳓ'), - (0x2CD3, 'V'), - (0x2CD4, 'M', 'ⳕ'), - (0x2CD5, 'V'), - (0x2CD6, 'M', 'ⳗ'), - (0x2CD7, 'V'), - (0x2CD8, 'M', 'ⳙ'), - (0x2CD9, 'V'), - (0x2CDA, 'M', 'ⳛ'), - (0x2CDB, 'V'), - (0x2CDC, 'M', 'ⳝ'), - (0x2CDD, 'V'), - (0x2CDE, 'M', 'ⳟ'), - (0x2CDF, 'V'), - (0x2CE0, 'M', 'ⳡ'), - (0x2CE1, 'V'), - (0x2CE2, 'M', 'ⳣ'), - (0x2CE3, 'V'), - (0x2CEB, 'M', 'ⳬ'), - (0x2CEC, 'V'), - (0x2CED, 'M', 'ⳮ'), - (0x2CEE, 'V'), - (0x2CF2, 'M', 'ⳳ'), - (0x2CF3, 'V'), - (0x2CF4, 'X'), - (0x2CF9, 'V'), - (0x2D26, 'X'), - (0x2D27, 'V'), - (0x2D28, 'X'), - (0x2D2D, 'V'), - (0x2D2E, 'X'), - (0x2D30, 'V'), - (0x2D68, 'X'), - (0x2D6F, 'M', 'ⵡ'), - (0x2D70, 'V'), - (0x2D71, 'X'), - (0x2D7F, 'V'), - (0x2D97, 'X'), - (0x2DA0, 'V'), - (0x2DA7, 'X'), - (0x2DA8, 'V'), - (0x2DAF, 'X'), - (0x2DB0, 'V'), - (0x2DB7, 'X'), - (0x2DB8, 'V'), - (0x2DBF, 'X'), - (0x2DC0, 'V'), - (0x2DC7, 'X'), - (0x2DC8, 'V'), - (0x2DCF, 'X'), - (0x2DD0, 'V'), - (0x2DD7, 'X'), - (0x2DD8, 'V'), - (0x2DDF, 'X'), - (0x2DE0, 'V'), - (0x2E5E, 'X'), - (0x2E80, 'V'), - (0x2E9A, 'X'), - (0x2E9B, 'V'), - (0x2E9F, 'M', '母'), - (0x2EA0, 'V'), - (0x2EF3, 'M', '龟'), - (0x2EF4, 'X'), - (0x2F00, 'M', '一'), - (0x2F01, 'M', '丨'), - (0x2F02, 'M', '丶'), - (0x2F03, 'M', '丿'), - (0x2F04, 'M', '乙'), - (0x2F05, 'M', '亅'), - (0x2F06, 'M', '二'), - (0x2F07, 'M', '亠'), - (0x2F08, 'M', '人'), - (0x2F09, 'M', '儿'), - (0x2F0A, 'M', '入'), - (0x2F0B, 'M', '八'), - (0x2F0C, 'M', '冂'), - (0x2F0D, 'M', '冖'), - (0x2F0E, 'M', '冫'), - (0x2F0F, 'M', '几'), - (0x2F10, 'M', '凵'), - (0x2F11, 'M', '刀'), - (0x2F12, 'M', '力'), - (0x2F13, 'M', '勹'), - (0x2F14, 'M', '匕'), - (0x2F15, 'M', '匚'), + (0x2CC7, "V"), + (0x2CC8, "M", "ⳉ"), + (0x2CC9, "V"), + (0x2CCA, "M", "ⳋ"), + (0x2CCB, "V"), + (0x2CCC, "M", "ⳍ"), + (0x2CCD, "V"), + (0x2CCE, "M", "ⳏ"), + (0x2CCF, "V"), + (0x2CD0, "M", "ⳑ"), + (0x2CD1, "V"), + (0x2CD2, "M", "ⳓ"), + (0x2CD3, "V"), + (0x2CD4, "M", "ⳕ"), + (0x2CD5, "V"), + (0x2CD6, "M", "ⳗ"), + (0x2CD7, "V"), + (0x2CD8, "M", "ⳙ"), + (0x2CD9, "V"), + (0x2CDA, "M", "ⳛ"), + (0x2CDB, "V"), + (0x2CDC, "M", "ⳝ"), + (0x2CDD, "V"), + (0x2CDE, "M", "ⳟ"), + (0x2CDF, "V"), + (0x2CE0, "M", "ⳡ"), + (0x2CE1, "V"), + (0x2CE2, "M", "ⳣ"), + (0x2CE3, "V"), + (0x2CEB, "M", "ⳬ"), + (0x2CEC, "V"), + (0x2CED, "M", "ⳮ"), + (0x2CEE, "V"), + (0x2CF2, "M", "ⳳ"), + (0x2CF3, "V"), + (0x2CF4, "X"), + (0x2CF9, "V"), + (0x2D26, "X"), + (0x2D27, "V"), + (0x2D28, "X"), + (0x2D2D, "V"), + (0x2D2E, "X"), + (0x2D30, "V"), + (0x2D68, "X"), + (0x2D6F, "M", "ⵡ"), + (0x2D70, "V"), + (0x2D71, "X"), + (0x2D7F, "V"), + (0x2D97, "X"), + (0x2DA0, "V"), + (0x2DA7, "X"), + (0x2DA8, "V"), + (0x2DAF, "X"), + (0x2DB0, "V"), + (0x2DB7, "X"), + (0x2DB8, "V"), + (0x2DBF, "X"), + (0x2DC0, "V"), + (0x2DC7, "X"), + (0x2DC8, "V"), + (0x2DCF, "X"), + (0x2DD0, "V"), + (0x2DD7, "X"), + (0x2DD8, "V"), + (0x2DDF, "X"), + (0x2DE0, "V"), + (0x2E5E, "X"), + (0x2E80, "V"), + (0x2E9A, "X"), + (0x2E9B, "V"), + (0x2E9F, "M", "母"), + (0x2EA0, "V"), + (0x2EF3, "M", "龟"), + (0x2EF4, "X"), + (0x2F00, "M", "一"), + (0x2F01, "M", "丨"), + (0x2F02, "M", "丶"), + (0x2F03, "M", "丿"), + (0x2F04, "M", "乙"), + (0x2F05, "M", "亅"), + (0x2F06, "M", "二"), + (0x2F07, "M", "亠"), + (0x2F08, "M", "人"), + (0x2F09, "M", "儿"), + (0x2F0A, "M", "入"), + (0x2F0B, "M", "八"), + (0x2F0C, "M", "冂"), + (0x2F0D, "M", "冖"), + (0x2F0E, "M", "冫"), + (0x2F0F, "M", "几"), + (0x2F10, "M", "凵"), + (0x2F11, "M", "刀"), + (0x2F12, "M", "力"), + (0x2F13, "M", "勹"), + (0x2F14, "M", "匕"), + (0x2F15, "M", "匚"), + (0x2F16, "M", "匸"), + (0x2F17, "M", "十"), + (0x2F18, "M", "卜"), + (0x2F19, "M", "卩"), ] + def _seg_27() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: return [ - (0x2F16, 'M', '匸'), - (0x2F17, 'M', '十'), - (0x2F18, 'M', '卜'), - (0x2F19, 'M', '卩'), - (0x2F1A, 'M', '厂'), - (0x2F1B, 'M', '厶'), - (0x2F1C, 'M', '又'), - (0x2F1D, 'M', '口'), - (0x2F1E, 'M', '囗'), - (0x2F1F, 'M', '土'), - (0x2F20, 'M', '士'), - (0x2F21, 'M', '夂'), - (0x2F22, 'M', '夊'), - (0x2F23, 'M', '夕'), - (0x2F24, 'M', '大'), - (0x2F25, 'M', '女'), - (0x2F26, 'M', '子'), - (0x2F27, 'M', '宀'), - (0x2F28, 'M', '寸'), - (0x2F29, 'M', '小'), - (0x2F2A, 'M', '尢'), - (0x2F2B, 'M', '尸'), - (0x2F2C, 'M', '屮'), - (0x2F2D, 'M', '山'), - (0x2F2E, 'M', '巛'), - (0x2F2F, 'M', '工'), - (0x2F30, 'M', '己'), - (0x2F31, 'M', '巾'), - (0x2F32, 'M', '干'), - (0x2F33, 'M', '幺'), - (0x2F34, 'M', '广'), - (0x2F35, 'M', '廴'), - (0x2F36, 'M', '廾'), - (0x2F37, 'M', '弋'), - (0x2F38, 'M', '弓'), - (0x2F39, 'M', '彐'), - (0x2F3A, 'M', '彡'), - (0x2F3B, 'M', '彳'), - (0x2F3C, 'M', '心'), - (0x2F3D, 'M', '戈'), - (0x2F3E, 'M', '戶'), - (0x2F3F, 'M', '手'), - (0x2F40, 'M', '支'), - (0x2F41, 'M', '攴'), - (0x2F42, 'M', '文'), - (0x2F43, 'M', '斗'), - (0x2F44, 'M', '斤'), - (0x2F45, 'M', '方'), - (0x2F46, 'M', '无'), - (0x2F47, 'M', '日'), - (0x2F48, 'M', '曰'), - (0x2F49, 'M', '月'), - (0x2F4A, 'M', '木'), - (0x2F4B, 'M', '欠'), - (0x2F4C, 'M', '止'), - (0x2F4D, 'M', '歹'), - (0x2F4E, 'M', '殳'), - (0x2F4F, 'M', '毋'), - (0x2F50, 'M', '比'), - (0x2F51, 'M', '毛'), - (0x2F52, 'M', '氏'), - (0x2F53, 'M', '气'), - (0x2F54, 'M', '水'), - (0x2F55, 'M', '火'), - (0x2F56, 'M', '爪'), - (0x2F57, 'M', '父'), - (0x2F58, 'M', '爻'), - (0x2F59, 'M', '爿'), - (0x2F5A, 'M', '片'), - (0x2F5B, 'M', '牙'), - (0x2F5C, 'M', '牛'), - (0x2F5D, 'M', '犬'), - (0x2F5E, 'M', '玄'), - (0x2F5F, 'M', '玉'), - (0x2F60, 'M', '瓜'), - (0x2F61, 'M', '瓦'), - (0x2F62, 'M', '甘'), - (0x2F63, 'M', '生'), - (0x2F64, 'M', '用'), - (0x2F65, 'M', '田'), - (0x2F66, 'M', '疋'), - (0x2F67, 'M', '疒'), - (0x2F68, 'M', '癶'), - (0x2F69, 'M', '白'), - (0x2F6A, 'M', '皮'), - (0x2F6B, 'M', '皿'), - (0x2F6C, 'M', '目'), - (0x2F6D, 'M', '矛'), - (0x2F6E, 'M', '矢'), - (0x2F6F, 'M', '石'), - (0x2F70, 'M', '示'), - (0x2F71, 'M', '禸'), - (0x2F72, 'M', '禾'), - (0x2F73, 'M', '穴'), - (0x2F74, 'M', '立'), - (0x2F75, 'M', '竹'), - (0x2F76, 'M', '米'), - (0x2F77, 'M', '糸'), - (0x2F78, 'M', '缶'), - (0x2F79, 'M', '网'), + (0x2F1A, "M", "厂"), + (0x2F1B, "M", "厶"), + (0x2F1C, "M", "又"), + (0x2F1D, "M", "口"), + (0x2F1E, "M", "囗"), + (0x2F1F, "M", "土"), + (0x2F20, "M", "士"), + (0x2F21, "M", "夂"), + (0x2F22, "M", "夊"), + (0x2F23, "M", "夕"), + (0x2F24, "M", "大"), + (0x2F25, "M", "女"), + (0x2F26, "M", "子"), + (0x2F27, "M", "宀"), + (0x2F28, "M", "寸"), + (0x2F29, "M", "小"), + (0x2F2A, "M", "尢"), + (0x2F2B, "M", "尸"), + (0x2F2C, "M", "屮"), + (0x2F2D, "M", "山"), + (0x2F2E, "M", "巛"), + (0x2F2F, "M", "工"), + (0x2F30, "M", "己"), + (0x2F31, "M", "巾"), + (0x2F32, "M", "干"), + (0x2F33, "M", "幺"), + (0x2F34, "M", "广"), + (0x2F35, "M", "廴"), + (0x2F36, "M", "廾"), + (0x2F37, "M", "弋"), + (0x2F38, "M", "弓"), + (0x2F39, "M", "彐"), + (0x2F3A, "M", "彡"), + (0x2F3B, "M", "彳"), + (0x2F3C, "M", "心"), + (0x2F3D, "M", "戈"), + (0x2F3E, "M", "戶"), + (0x2F3F, "M", "手"), + (0x2F40, "M", "支"), + (0x2F41, "M", "攴"), + (0x2F42, "M", "文"), + (0x2F43, "M", "斗"), + (0x2F44, "M", "斤"), + (0x2F45, "M", "方"), + (0x2F46, "M", "无"), + (0x2F47, "M", "日"), + (0x2F48, "M", "曰"), + (0x2F49, "M", "月"), + (0x2F4A, "M", "木"), + (0x2F4B, "M", "欠"), + (0x2F4C, "M", "止"), + (0x2F4D, "M", "歹"), + (0x2F4E, "M", "殳"), + (0x2F4F, "M", "毋"), + (0x2F50, "M", "比"), + (0x2F51, "M", "毛"), + (0x2F52, "M", "氏"), + (0x2F53, "M", "气"), + (0x2F54, "M", "水"), + (0x2F55, "M", "火"), + (0x2F56, "M", "爪"), + (0x2F57, "M", "父"), + (0x2F58, "M", "爻"), + (0x2F59, "M", "爿"), + (0x2F5A, "M", "片"), + (0x2F5B, "M", "牙"), + (0x2F5C, "M", "牛"), + (0x2F5D, "M", "犬"), + (0x2F5E, "M", "玄"), + (0x2F5F, "M", "玉"), + (0x2F60, "M", "瓜"), + (0x2F61, "M", "瓦"), + (0x2F62, "M", "甘"), + (0x2F63, "M", "生"), + (0x2F64, "M", "用"), + (0x2F65, "M", "田"), + (0x2F66, "M", "疋"), + (0x2F67, "M", "疒"), + (0x2F68, "M", "癶"), + (0x2F69, "M", "白"), + (0x2F6A, "M", "皮"), + (0x2F6B, "M", "皿"), + (0x2F6C, "M", "目"), + (0x2F6D, "M", "矛"), + (0x2F6E, "M", "矢"), + (0x2F6F, "M", "石"), + (0x2F70, "M", "示"), + (0x2F71, "M", "禸"), + (0x2F72, "M", "禾"), + (0x2F73, "M", "穴"), + (0x2F74, "M", "立"), + (0x2F75, "M", "竹"), + (0x2F76, "M", "米"), + (0x2F77, "M", "糸"), + (0x2F78, "M", "缶"), + (0x2F79, "M", "网"), + (0x2F7A, "M", "羊"), + (0x2F7B, "M", "羽"), + (0x2F7C, "M", "老"), + (0x2F7D, "M", "而"), ] + def _seg_28() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: return [ - (0x2F7A, 'M', '羊'), - (0x2F7B, 'M', '羽'), - (0x2F7C, 'M', '老'), - (0x2F7D, 'M', '而'), - (0x2F7E, 'M', '耒'), - (0x2F7F, 'M', '耳'), - (0x2F80, 'M', '聿'), - (0x2F81, 'M', '肉'), - (0x2F82, 'M', '臣'), - (0x2F83, 'M', '自'), - (0x2F84, 'M', '至'), - (0x2F85, 'M', '臼'), - (0x2F86, 'M', '舌'), - (0x2F87, 'M', '舛'), - (0x2F88, 'M', '舟'), - (0x2F89, 'M', '艮'), - (0x2F8A, 'M', '色'), - (0x2F8B, 'M', '艸'), - (0x2F8C, 'M', '虍'), - (0x2F8D, 'M', '虫'), - (0x2F8E, 'M', '血'), - (0x2F8F, 'M', '行'), - (0x2F90, 'M', '衣'), - (0x2F91, 'M', '襾'), - (0x2F92, 'M', '見'), - (0x2F93, 'M', '角'), - (0x2F94, 'M', '言'), - (0x2F95, 'M', '谷'), - (0x2F96, 'M', '豆'), - (0x2F97, 'M', '豕'), - (0x2F98, 'M', '豸'), - (0x2F99, 'M', '貝'), - (0x2F9A, 'M', '赤'), - (0x2F9B, 'M', '走'), - (0x2F9C, 'M', '足'), - (0x2F9D, 'M', '身'), - (0x2F9E, 'M', '車'), - (0x2F9F, 'M', '辛'), - (0x2FA0, 'M', '辰'), - (0x2FA1, 'M', '辵'), - (0x2FA2, 'M', '邑'), - (0x2FA3, 'M', '酉'), - (0x2FA4, 'M', '釆'), - (0x2FA5, 'M', '里'), - (0x2FA6, 'M', '金'), - (0x2FA7, 'M', '長'), - (0x2FA8, 'M', '門'), - (0x2FA9, 'M', '阜'), - (0x2FAA, 'M', '隶'), - (0x2FAB, 'M', '隹'), - (0x2FAC, 'M', '雨'), - (0x2FAD, 'M', '靑'), - (0x2FAE, 'M', '非'), - (0x2FAF, 'M', '面'), - (0x2FB0, 'M', '革'), - (0x2FB1, 'M', '韋'), - (0x2FB2, 'M', '韭'), - (0x2FB3, 'M', '音'), - (0x2FB4, 'M', '頁'), - (0x2FB5, 'M', '風'), - (0x2FB6, 'M', '飛'), - (0x2FB7, 'M', '食'), - (0x2FB8, 'M', '首'), - (0x2FB9, 'M', '香'), - (0x2FBA, 'M', '馬'), - (0x2FBB, 'M', '骨'), - (0x2FBC, 'M', '高'), - (0x2FBD, 'M', '髟'), - (0x2FBE, 'M', '鬥'), - (0x2FBF, 'M', '鬯'), - (0x2FC0, 'M', '鬲'), - (0x2FC1, 'M', '鬼'), - (0x2FC2, 'M', '魚'), - (0x2FC3, 'M', '鳥'), - (0x2FC4, 'M', '鹵'), - (0x2FC5, 'M', '鹿'), - (0x2FC6, 'M', '麥'), - (0x2FC7, 'M', '麻'), - (0x2FC8, 'M', '黃'), - (0x2FC9, 'M', '黍'), - (0x2FCA, 'M', '黑'), - (0x2FCB, 'M', '黹'), - (0x2FCC, 'M', '黽'), - (0x2FCD, 'M', '鼎'), - (0x2FCE, 'M', '鼓'), - (0x2FCF, 'M', '鼠'), - (0x2FD0, 'M', '鼻'), - (0x2FD1, 'M', '齊'), - (0x2FD2, 'M', '齒'), - (0x2FD3, 'M', '龍'), - (0x2FD4, 'M', '龜'), - (0x2FD5, 'M', '龠'), - (0x2FD6, 'X'), - (0x3000, '3', ' '), - (0x3001, 'V'), - (0x3002, 'M', '.'), - (0x3003, 'V'), - (0x3036, 'M', '〒'), - (0x3037, 'V'), - (0x3038, 'M', '十'), + (0x2F7E, "M", "耒"), + (0x2F7F, "M", "耳"), + (0x2F80, "M", "聿"), + (0x2F81, "M", "肉"), + (0x2F82, "M", "臣"), + (0x2F83, "M", "自"), + (0x2F84, "M", "至"), + (0x2F85, "M", "臼"), + (0x2F86, "M", "舌"), + (0x2F87, "M", "舛"), + (0x2F88, "M", "舟"), + (0x2F89, "M", "艮"), + (0x2F8A, "M", "色"), + (0x2F8B, "M", "艸"), + (0x2F8C, "M", "虍"), + (0x2F8D, "M", "虫"), + (0x2F8E, "M", "血"), + (0x2F8F, "M", "行"), + (0x2F90, "M", "衣"), + (0x2F91, "M", "襾"), + (0x2F92, "M", "見"), + (0x2F93, "M", "角"), + (0x2F94, "M", "言"), + (0x2F95, "M", "谷"), + (0x2F96, "M", "豆"), + (0x2F97, "M", "豕"), + (0x2F98, "M", "豸"), + (0x2F99, "M", "貝"), + (0x2F9A, "M", "赤"), + (0x2F9B, "M", "走"), + (0x2F9C, "M", "足"), + (0x2F9D, "M", "身"), + (0x2F9E, "M", "車"), + (0x2F9F, "M", "辛"), + (0x2FA0, "M", "辰"), + (0x2FA1, "M", "辵"), + (0x2FA2, "M", "邑"), + (0x2FA3, "M", "酉"), + (0x2FA4, "M", "釆"), + (0x2FA5, "M", "里"), + (0x2FA6, "M", "金"), + (0x2FA7, "M", "長"), + (0x2FA8, "M", "門"), + (0x2FA9, "M", "阜"), + (0x2FAA, "M", "隶"), + (0x2FAB, "M", "隹"), + (0x2FAC, "M", "雨"), + (0x2FAD, "M", "靑"), + (0x2FAE, "M", "非"), + (0x2FAF, "M", "面"), + (0x2FB0, "M", "革"), + (0x2FB1, "M", "韋"), + (0x2FB2, "M", "韭"), + (0x2FB3, "M", "音"), + (0x2FB4, "M", "頁"), + (0x2FB5, "M", "風"), + (0x2FB6, "M", "飛"), + (0x2FB7, "M", "食"), + (0x2FB8, "M", "首"), + (0x2FB9, "M", "香"), + (0x2FBA, "M", "馬"), + (0x2FBB, "M", "骨"), + (0x2FBC, "M", "高"), + (0x2FBD, "M", "髟"), + (0x2FBE, "M", "鬥"), + (0x2FBF, "M", "鬯"), + (0x2FC0, "M", "鬲"), + (0x2FC1, "M", "鬼"), + (0x2FC2, "M", "魚"), + (0x2FC3, "M", "鳥"), + (0x2FC4, "M", "鹵"), + (0x2FC5, "M", "鹿"), + (0x2FC6, "M", "麥"), + (0x2FC7, "M", "麻"), + (0x2FC8, "M", "黃"), + (0x2FC9, "M", "黍"), + (0x2FCA, "M", "黑"), + (0x2FCB, "M", "黹"), + (0x2FCC, "M", "黽"), + (0x2FCD, "M", "鼎"), + (0x2FCE, "M", "鼓"), + (0x2FCF, "M", "鼠"), + (0x2FD0, "M", "鼻"), + (0x2FD1, "M", "齊"), + (0x2FD2, "M", "齒"), + (0x2FD3, "M", "龍"), + (0x2FD4, "M", "龜"), + (0x2FD5, "M", "龠"), + (0x2FD6, "X"), + (0x3000, "3", " "), + (0x3001, "V"), + (0x3002, "M", "."), + (0x3003, "V"), + (0x3036, "M", "〒"), + (0x3037, "V"), + (0x3038, "M", "十"), + (0x3039, "M", "卄"), + (0x303A, "M", "卅"), + (0x303B, "V"), + (0x3040, "X"), ] + def _seg_29() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: return [ - (0x3039, 'M', '卄'), - (0x303A, 'M', '卅'), - (0x303B, 'V'), - (0x3040, 'X'), - (0x3041, 'V'), - (0x3097, 'X'), - (0x3099, 'V'), - (0x309B, '3', ' ゙'), - (0x309C, '3', ' ゚'), - (0x309D, 'V'), - (0x309F, 'M', 'より'), - (0x30A0, 'V'), - (0x30FF, 'M', 'コト'), - (0x3100, 'X'), - (0x3105, 'V'), - (0x3130, 'X'), - (0x3131, 'M', 'ᄀ'), - (0x3132, 'M', 'ᄁ'), - (0x3133, 'M', 'ᆪ'), - (0x3134, 'M', 'ᄂ'), - (0x3135, 'M', 'ᆬ'), - (0x3136, 'M', 'ᆭ'), - (0x3137, 'M', 'ᄃ'), - (0x3138, 'M', 'ᄄ'), - (0x3139, 'M', 'ᄅ'), - (0x313A, 'M', 'ᆰ'), - (0x313B, 'M', 'ᆱ'), - (0x313C, 'M', 'ᆲ'), - (0x313D, 'M', 'ᆳ'), - (0x313E, 'M', 'ᆴ'), - (0x313F, 'M', 'ᆵ'), - (0x3140, 'M', 'ᄚ'), - (0x3141, 'M', 'ᄆ'), - (0x3142, 'M', 'ᄇ'), - (0x3143, 'M', 'ᄈ'), - (0x3144, 'M', 'ᄡ'), - (0x3145, 'M', 'ᄉ'), - (0x3146, 'M', 'ᄊ'), - (0x3147, 'M', 'ᄋ'), - (0x3148, 'M', 'ᄌ'), - (0x3149, 'M', 'ᄍ'), - (0x314A, 'M', 'ᄎ'), - (0x314B, 'M', 'ᄏ'), - (0x314C, 'M', 'ᄐ'), - (0x314D, 'M', 'ᄑ'), - (0x314E, 'M', 'ᄒ'), - (0x314F, 'M', 'ᅡ'), - (0x3150, 'M', 'ᅢ'), - (0x3151, 'M', 'ᅣ'), - (0x3152, 'M', 'ᅤ'), - (0x3153, 'M', 'ᅥ'), - (0x3154, 'M', 'ᅦ'), - (0x3155, 'M', 'ᅧ'), - (0x3156, 'M', 'ᅨ'), - (0x3157, 'M', 'ᅩ'), - (0x3158, 'M', 'ᅪ'), - (0x3159, 'M', 'ᅫ'), - (0x315A, 'M', 'ᅬ'), - (0x315B, 'M', 'ᅭ'), - (0x315C, 'M', 'ᅮ'), - (0x315D, 'M', 'ᅯ'), - (0x315E, 'M', 'ᅰ'), - (0x315F, 'M', 'ᅱ'), - (0x3160, 'M', 'ᅲ'), - (0x3161, 'M', 'ᅳ'), - (0x3162, 'M', 'ᅴ'), - (0x3163, 'M', 'ᅵ'), - (0x3164, 'X'), - (0x3165, 'M', 'ᄔ'), - (0x3166, 'M', 'ᄕ'), - (0x3167, 'M', 'ᇇ'), - (0x3168, 'M', 'ᇈ'), - (0x3169, 'M', 'ᇌ'), - (0x316A, 'M', 'ᇎ'), - (0x316B, 'M', 'ᇓ'), - (0x316C, 'M', 'ᇗ'), - (0x316D, 'M', 'ᇙ'), - (0x316E, 'M', 'ᄜ'), - (0x316F, 'M', 'ᇝ'), - (0x3170, 'M', 'ᇟ'), - (0x3171, 'M', 'ᄝ'), - (0x3172, 'M', 'ᄞ'), - (0x3173, 'M', 'ᄠ'), - (0x3174, 'M', 'ᄢ'), - (0x3175, 'M', 'ᄣ'), - (0x3176, 'M', 'ᄧ'), - (0x3177, 'M', 'ᄩ'), - (0x3178, 'M', 'ᄫ'), - (0x3179, 'M', 'ᄬ'), - (0x317A, 'M', 'ᄭ'), - (0x317B, 'M', 'ᄮ'), - (0x317C, 'M', 'ᄯ'), - (0x317D, 'M', 'ᄲ'), - (0x317E, 'M', 'ᄶ'), - (0x317F, 'M', 'ᅀ'), - (0x3180, 'M', 'ᅇ'), - (0x3181, 'M', 'ᅌ'), - (0x3182, 'M', 'ᇱ'), - (0x3183, 'M', 'ᇲ'), - (0x3184, 'M', 'ᅗ'), + (0x3041, "V"), + (0x3097, "X"), + (0x3099, "V"), + (0x309B, "3", " ゙"), + (0x309C, "3", " ゚"), + (0x309D, "V"), + (0x309F, "M", "より"), + (0x30A0, "V"), + (0x30FF, "M", "コト"), + (0x3100, "X"), + (0x3105, "V"), + (0x3130, "X"), + (0x3131, "M", "ᄀ"), + (0x3132, "M", "ᄁ"), + (0x3133, "M", "ᆪ"), + (0x3134, "M", "ᄂ"), + (0x3135, "M", "ᆬ"), + (0x3136, "M", "ᆭ"), + (0x3137, "M", "ᄃ"), + (0x3138, "M", "ᄄ"), + (0x3139, "M", "ᄅ"), + (0x313A, "M", "ᆰ"), + (0x313B, "M", "ᆱ"), + (0x313C, "M", "ᆲ"), + (0x313D, "M", "ᆳ"), + (0x313E, "M", "ᆴ"), + (0x313F, "M", "ᆵ"), + (0x3140, "M", "ᄚ"), + (0x3141, "M", "ᄆ"), + (0x3142, "M", "ᄇ"), + (0x3143, "M", "ᄈ"), + (0x3144, "M", "ᄡ"), + (0x3145, "M", "ᄉ"), + (0x3146, "M", "ᄊ"), + (0x3147, "M", "ᄋ"), + (0x3148, "M", "ᄌ"), + (0x3149, "M", "ᄍ"), + (0x314A, "M", "ᄎ"), + (0x314B, "M", "ᄏ"), + (0x314C, "M", "ᄐ"), + (0x314D, "M", "ᄑ"), + (0x314E, "M", "ᄒ"), + (0x314F, "M", "ᅡ"), + (0x3150, "M", "ᅢ"), + (0x3151, "M", "ᅣ"), + (0x3152, "M", "ᅤ"), + (0x3153, "M", "ᅥ"), + (0x3154, "M", "ᅦ"), + (0x3155, "M", "ᅧ"), + (0x3156, "M", "ᅨ"), + (0x3157, "M", "ᅩ"), + (0x3158, "M", "ᅪ"), + (0x3159, "M", "ᅫ"), + (0x315A, "M", "ᅬ"), + (0x315B, "M", "ᅭ"), + (0x315C, "M", "ᅮ"), + (0x315D, "M", "ᅯ"), + (0x315E, "M", "ᅰ"), + (0x315F, "M", "ᅱ"), + (0x3160, "M", "ᅲ"), + (0x3161, "M", "ᅳ"), + (0x3162, "M", "ᅴ"), + (0x3163, "M", "ᅵ"), + (0x3164, "X"), + (0x3165, "M", "ᄔ"), + (0x3166, "M", "ᄕ"), + (0x3167, "M", "ᇇ"), + (0x3168, "M", "ᇈ"), + (0x3169, "M", "ᇌ"), + (0x316A, "M", "ᇎ"), + (0x316B, "M", "ᇓ"), + (0x316C, "M", "ᇗ"), + (0x316D, "M", "ᇙ"), + (0x316E, "M", "ᄜ"), + (0x316F, "M", "ᇝ"), + (0x3170, "M", "ᇟ"), + (0x3171, "M", "ᄝ"), + (0x3172, "M", "ᄞ"), + (0x3173, "M", "ᄠ"), + (0x3174, "M", "ᄢ"), + (0x3175, "M", "ᄣ"), + (0x3176, "M", "ᄧ"), + (0x3177, "M", "ᄩ"), + (0x3178, "M", "ᄫ"), + (0x3179, "M", "ᄬ"), + (0x317A, "M", "ᄭ"), + (0x317B, "M", "ᄮ"), + (0x317C, "M", "ᄯ"), + (0x317D, "M", "ᄲ"), + (0x317E, "M", "ᄶ"), + (0x317F, "M", "ᅀ"), + (0x3180, "M", "ᅇ"), + (0x3181, "M", "ᅌ"), + (0x3182, "M", "ᇱ"), + (0x3183, "M", "ᇲ"), + (0x3184, "M", "ᅗ"), + (0x3185, "M", "ᅘ"), + (0x3186, "M", "ᅙ"), + (0x3187, "M", "ᆄ"), + (0x3188, "M", "ᆅ"), ] + def _seg_30() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: return [ - (0x3185, 'M', 'ᅘ'), - (0x3186, 'M', 'ᅙ'), - (0x3187, 'M', 'ᆄ'), - (0x3188, 'M', 'ᆅ'), - (0x3189, 'M', 'ᆈ'), - (0x318A, 'M', 'ᆑ'), - (0x318B, 'M', 'ᆒ'), - (0x318C, 'M', 'ᆔ'), - (0x318D, 'M', 'ᆞ'), - (0x318E, 'M', 'ᆡ'), - (0x318F, 'X'), - (0x3190, 'V'), - (0x3192, 'M', '一'), - (0x3193, 'M', '二'), - (0x3194, 'M', '三'), - (0x3195, 'M', '四'), - (0x3196, 'M', '上'), - (0x3197, 'M', '中'), - (0x3198, 'M', '下'), - (0x3199, 'M', '甲'), - (0x319A, 'M', '乙'), - (0x319B, 'M', '丙'), - (0x319C, 'M', '丁'), - (0x319D, 'M', '天'), - (0x319E, 'M', '地'), - (0x319F, 'M', '人'), - (0x31A0, 'V'), - (0x31E4, 'X'), - (0x31F0, 'V'), - (0x3200, '3', '(ᄀ)'), - (0x3201, '3', '(ᄂ)'), - (0x3202, '3', '(ᄃ)'), - (0x3203, '3', '(ᄅ)'), - (0x3204, '3', '(ᄆ)'), - (0x3205, '3', '(ᄇ)'), - (0x3206, '3', '(ᄉ)'), - (0x3207, '3', '(ᄋ)'), - (0x3208, '3', '(ᄌ)'), - (0x3209, '3', '(ᄎ)'), - (0x320A, '3', '(ᄏ)'), - (0x320B, '3', '(ᄐ)'), - (0x320C, '3', '(ᄑ)'), - (0x320D, '3', '(ᄒ)'), - (0x320E, '3', '(가)'), - (0x320F, '3', '(나)'), - (0x3210, '3', '(다)'), - (0x3211, '3', '(라)'), - (0x3212, '3', '(마)'), - (0x3213, '3', '(바)'), - (0x3214, '3', '(사)'), - (0x3215, '3', '(아)'), - (0x3216, '3', '(자)'), - (0x3217, '3', '(차)'), - (0x3218, '3', '(카)'), - (0x3219, '3', '(타)'), - (0x321A, '3', '(파)'), - (0x321B, '3', '(하)'), - (0x321C, '3', '(주)'), - (0x321D, '3', '(오전)'), - (0x321E, '3', '(오후)'), - (0x321F, 'X'), - (0x3220, '3', '(一)'), - (0x3221, '3', '(二)'), - (0x3222, '3', '(三)'), - (0x3223, '3', '(四)'), - (0x3224, '3', '(五)'), - (0x3225, '3', '(六)'), - (0x3226, '3', '(七)'), - (0x3227, '3', '(八)'), - (0x3228, '3', '(九)'), - (0x3229, '3', '(十)'), - (0x322A, '3', '(月)'), - (0x322B, '3', '(火)'), - (0x322C, '3', '(水)'), - (0x322D, '3', '(木)'), - (0x322E, '3', '(金)'), - (0x322F, '3', '(土)'), - (0x3230, '3', '(日)'), - (0x3231, '3', '(株)'), - (0x3232, '3', '(有)'), - (0x3233, '3', '(社)'), - (0x3234, '3', '(名)'), - (0x3235, '3', '(特)'), - (0x3236, '3', '(財)'), - (0x3237, '3', '(祝)'), - (0x3238, '3', '(労)'), - (0x3239, '3', '(代)'), - (0x323A, '3', '(呼)'), - (0x323B, '3', '(学)'), - (0x323C, '3', '(監)'), - (0x323D, '3', '(企)'), - (0x323E, '3', '(資)'), - (0x323F, '3', '(協)'), - (0x3240, '3', '(祭)'), - (0x3241, '3', '(休)'), - (0x3242, '3', '(自)'), - (0x3243, '3', '(至)'), - (0x3244, 'M', '問'), - (0x3245, 'M', '幼'), - (0x3246, 'M', '文'), + (0x3189, "M", "ᆈ"), + (0x318A, "M", "ᆑ"), + (0x318B, "M", "ᆒ"), + (0x318C, "M", "ᆔ"), + (0x318D, "M", "ᆞ"), + (0x318E, "M", "ᆡ"), + (0x318F, "X"), + (0x3190, "V"), + (0x3192, "M", "一"), + (0x3193, "M", "二"), + (0x3194, "M", "三"), + (0x3195, "M", "四"), + (0x3196, "M", "上"), + (0x3197, "M", "中"), + (0x3198, "M", "下"), + (0x3199, "M", "甲"), + (0x319A, "M", "乙"), + (0x319B, "M", "丙"), + (0x319C, "M", "丁"), + (0x319D, "M", "天"), + (0x319E, "M", "地"), + (0x319F, "M", "人"), + (0x31A0, "V"), + (0x31E4, "X"), + (0x31F0, "V"), + (0x3200, "3", "(ᄀ)"), + (0x3201, "3", "(ᄂ)"), + (0x3202, "3", "(ᄃ)"), + (0x3203, "3", "(ᄅ)"), + (0x3204, "3", "(ᄆ)"), + (0x3205, "3", "(ᄇ)"), + (0x3206, "3", "(ᄉ)"), + (0x3207, "3", "(ᄋ)"), + (0x3208, "3", "(ᄌ)"), + (0x3209, "3", "(ᄎ)"), + (0x320A, "3", "(ᄏ)"), + (0x320B, "3", "(ᄐ)"), + (0x320C, "3", "(ᄑ)"), + (0x320D, "3", "(ᄒ)"), + (0x320E, "3", "(가)"), + (0x320F, "3", "(나)"), + (0x3210, "3", "(다)"), + (0x3211, "3", "(라)"), + (0x3212, "3", "(마)"), + (0x3213, "3", "(바)"), + (0x3214, "3", "(사)"), + (0x3215, "3", "(아)"), + (0x3216, "3", "(자)"), + (0x3217, "3", "(차)"), + (0x3218, "3", "(카)"), + (0x3219, "3", "(타)"), + (0x321A, "3", "(파)"), + (0x321B, "3", "(하)"), + (0x321C, "3", "(주)"), + (0x321D, "3", "(오전)"), + (0x321E, "3", "(오후)"), + (0x321F, "X"), + (0x3220, "3", "(一)"), + (0x3221, "3", "(二)"), + (0x3222, "3", "(三)"), + (0x3223, "3", "(四)"), + (0x3224, "3", "(五)"), + (0x3225, "3", "(六)"), + (0x3226, "3", "(七)"), + (0x3227, "3", "(八)"), + (0x3228, "3", "(九)"), + (0x3229, "3", "(十)"), + (0x322A, "3", "(月)"), + (0x322B, "3", "(火)"), + (0x322C, "3", "(水)"), + (0x322D, "3", "(木)"), + (0x322E, "3", "(金)"), + (0x322F, "3", "(土)"), + (0x3230, "3", "(日)"), + (0x3231, "3", "(株)"), + (0x3232, "3", "(有)"), + (0x3233, "3", "(社)"), + (0x3234, "3", "(名)"), + (0x3235, "3", "(特)"), + (0x3236, "3", "(財)"), + (0x3237, "3", "(祝)"), + (0x3238, "3", "(労)"), + (0x3239, "3", "(代)"), + (0x323A, "3", "(呼)"), + (0x323B, "3", "(学)"), + (0x323C, "3", "(監)"), + (0x323D, "3", "(企)"), + (0x323E, "3", "(資)"), + (0x323F, "3", "(協)"), + (0x3240, "3", "(祭)"), + (0x3241, "3", "(休)"), + (0x3242, "3", "(自)"), + (0x3243, "3", "(至)"), + (0x3244, "M", "問"), + (0x3245, "M", "幼"), + (0x3246, "M", "文"), + (0x3247, "M", "箏"), + (0x3248, "V"), + (0x3250, "M", "pte"), + (0x3251, "M", "21"), ] + def _seg_31() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: return [ - (0x3247, 'M', '箏'), - (0x3248, 'V'), - (0x3250, 'M', 'pte'), - (0x3251, 'M', '21'), - (0x3252, 'M', '22'), - (0x3253, 'M', '23'), - (0x3254, 'M', '24'), - (0x3255, 'M', '25'), - (0x3256, 'M', '26'), - (0x3257, 'M', '27'), - (0x3258, 'M', '28'), - (0x3259, 'M', '29'), - (0x325A, 'M', '30'), - (0x325B, 'M', '31'), - (0x325C, 'M', '32'), - (0x325D, 'M', '33'), - (0x325E, 'M', '34'), - (0x325F, 'M', '35'), - (0x3260, 'M', 'ᄀ'), - (0x3261, 'M', 'ᄂ'), - (0x3262, 'M', 'ᄃ'), - (0x3263, 'M', 'ᄅ'), - (0x3264, 'M', 'ᄆ'), - (0x3265, 'M', 'ᄇ'), - (0x3266, 'M', 'ᄉ'), - (0x3267, 'M', 'ᄋ'), - (0x3268, 'M', 'ᄌ'), - (0x3269, 'M', 'ᄎ'), - (0x326A, 'M', 'ᄏ'), - (0x326B, 'M', 'ᄐ'), - (0x326C, 'M', 'ᄑ'), - (0x326D, 'M', 'ᄒ'), - (0x326E, 'M', '가'), - (0x326F, 'M', '나'), - (0x3270, 'M', '다'), - (0x3271, 'M', '라'), - (0x3272, 'M', '마'), - (0x3273, 'M', '바'), - (0x3274, 'M', '사'), - (0x3275, 'M', '아'), - (0x3276, 'M', '자'), - (0x3277, 'M', '차'), - (0x3278, 'M', '카'), - (0x3279, 'M', '타'), - (0x327A, 'M', '파'), - (0x327B, 'M', '하'), - (0x327C, 'M', '참고'), - (0x327D, 'M', '주의'), - (0x327E, 'M', '우'), - (0x327F, 'V'), - (0x3280, 'M', '一'), - (0x3281, 'M', '二'), - (0x3282, 'M', '三'), - (0x3283, 'M', '四'), - (0x3284, 'M', '五'), - (0x3285, 'M', '六'), - (0x3286, 'M', '七'), - (0x3287, 'M', '八'), - (0x3288, 'M', '九'), - (0x3289, 'M', '十'), - (0x328A, 'M', '月'), - (0x328B, 'M', '火'), - (0x328C, 'M', '水'), - (0x328D, 'M', '木'), - (0x328E, 'M', '金'), - (0x328F, 'M', '土'), - (0x3290, 'M', '日'), - (0x3291, 'M', '株'), - (0x3292, 'M', '有'), - (0x3293, 'M', '社'), - (0x3294, 'M', '名'), - (0x3295, 'M', '特'), - (0x3296, 'M', '財'), - (0x3297, 'M', '祝'), - (0x3298, 'M', '労'), - (0x3299, 'M', '秘'), - (0x329A, 'M', '男'), - (0x329B, 'M', '女'), - (0x329C, 'M', '適'), - (0x329D, 'M', '優'), - (0x329E, 'M', '印'), - (0x329F, 'M', '注'), - (0x32A0, 'M', '項'), - (0x32A1, 'M', '休'), - (0x32A2, 'M', '写'), - (0x32A3, 'M', '正'), - (0x32A4, 'M', '上'), - (0x32A5, 'M', '中'), - (0x32A6, 'M', '下'), - (0x32A7, 'M', '左'), - (0x32A8, 'M', '右'), - (0x32A9, 'M', '医'), - (0x32AA, 'M', '宗'), - (0x32AB, 'M', '学'), - (0x32AC, 'M', '監'), - (0x32AD, 'M', '企'), - (0x32AE, 'M', '資'), - (0x32AF, 'M', '協'), - (0x32B0, 'M', '夜'), - (0x32B1, 'M', '36'), + (0x3252, "M", "22"), + (0x3253, "M", "23"), + (0x3254, "M", "24"), + (0x3255, "M", "25"), + (0x3256, "M", "26"), + (0x3257, "M", "27"), + (0x3258, "M", "28"), + (0x3259, "M", "29"), + (0x325A, "M", "30"), + (0x325B, "M", "31"), + (0x325C, "M", "32"), + (0x325D, "M", "33"), + (0x325E, "M", "34"), + (0x325F, "M", "35"), + (0x3260, "M", "ᄀ"), + (0x3261, "M", "ᄂ"), + (0x3262, "M", "ᄃ"), + (0x3263, "M", "ᄅ"), + (0x3264, "M", "ᄆ"), + (0x3265, "M", "ᄇ"), + (0x3266, "M", "ᄉ"), + (0x3267, "M", "ᄋ"), + (0x3268, "M", "ᄌ"), + (0x3269, "M", "ᄎ"), + (0x326A, "M", "ᄏ"), + (0x326B, "M", "ᄐ"), + (0x326C, "M", "ᄑ"), + (0x326D, "M", "ᄒ"), + (0x326E, "M", "가"), + (0x326F, "M", "나"), + (0x3270, "M", "다"), + (0x3271, "M", "라"), + (0x3272, "M", "마"), + (0x3273, "M", "바"), + (0x3274, "M", "사"), + (0x3275, "M", "아"), + (0x3276, "M", "자"), + (0x3277, "M", "차"), + (0x3278, "M", "카"), + (0x3279, "M", "타"), + (0x327A, "M", "파"), + (0x327B, "M", "하"), + (0x327C, "M", "참고"), + (0x327D, "M", "주의"), + (0x327E, "M", "우"), + (0x327F, "V"), + (0x3280, "M", "一"), + (0x3281, "M", "二"), + (0x3282, "M", "三"), + (0x3283, "M", "四"), + (0x3284, "M", "五"), + (0x3285, "M", "六"), + (0x3286, "M", "七"), + (0x3287, "M", "八"), + (0x3288, "M", "九"), + (0x3289, "M", "十"), + (0x328A, "M", "月"), + (0x328B, "M", "火"), + (0x328C, "M", "水"), + (0x328D, "M", "木"), + (0x328E, "M", "金"), + (0x328F, "M", "土"), + (0x3290, "M", "日"), + (0x3291, "M", "株"), + (0x3292, "M", "有"), + (0x3293, "M", "社"), + (0x3294, "M", "名"), + (0x3295, "M", "特"), + (0x3296, "M", "財"), + (0x3297, "M", "祝"), + (0x3298, "M", "労"), + (0x3299, "M", "秘"), + (0x329A, "M", "男"), + (0x329B, "M", "女"), + (0x329C, "M", "適"), + (0x329D, "M", "優"), + (0x329E, "M", "印"), + (0x329F, "M", "注"), + (0x32A0, "M", "項"), + (0x32A1, "M", "休"), + (0x32A2, "M", "写"), + (0x32A3, "M", "正"), + (0x32A4, "M", "上"), + (0x32A5, "M", "中"), + (0x32A6, "M", "下"), + (0x32A7, "M", "左"), + (0x32A8, "M", "右"), + (0x32A9, "M", "医"), + (0x32AA, "M", "宗"), + (0x32AB, "M", "学"), + (0x32AC, "M", "監"), + (0x32AD, "M", "企"), + (0x32AE, "M", "資"), + (0x32AF, "M", "協"), + (0x32B0, "M", "夜"), + (0x32B1, "M", "36"), + (0x32B2, "M", "37"), + (0x32B3, "M", "38"), + (0x32B4, "M", "39"), + (0x32B5, "M", "40"), ] + def _seg_32() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: return [ - (0x32B2, 'M', '37'), - (0x32B3, 'M', '38'), - (0x32B4, 'M', '39'), - (0x32B5, 'M', '40'), - (0x32B6, 'M', '41'), - (0x32B7, 'M', '42'), - (0x32B8, 'M', '43'), - (0x32B9, 'M', '44'), - (0x32BA, 'M', '45'), - (0x32BB, 'M', '46'), - (0x32BC, 'M', '47'), - (0x32BD, 'M', '48'), - (0x32BE, 'M', '49'), - (0x32BF, 'M', '50'), - (0x32C0, 'M', '1月'), - (0x32C1, 'M', '2月'), - (0x32C2, 'M', '3月'), - (0x32C3, 'M', '4月'), - (0x32C4, 'M', '5月'), - (0x32C5, 'M', '6月'), - (0x32C6, 'M', '7月'), - (0x32C7, 'M', '8月'), - (0x32C8, 'M', '9月'), - (0x32C9, 'M', '10月'), - (0x32CA, 'M', '11月'), - (0x32CB, 'M', '12月'), - (0x32CC, 'M', 'hg'), - (0x32CD, 'M', 'erg'), - (0x32CE, 'M', 'ev'), - (0x32CF, 'M', 'ltd'), - (0x32D0, 'M', 'ア'), - (0x32D1, 'M', 'イ'), - (0x32D2, 'M', 'ウ'), - (0x32D3, 'M', 'エ'), - (0x32D4, 'M', 'オ'), - (0x32D5, 'M', 'カ'), - (0x32D6, 'M', 'キ'), - (0x32D7, 'M', 'ク'), - (0x32D8, 'M', 'ケ'), - (0x32D9, 'M', 'コ'), - (0x32DA, 'M', 'サ'), - (0x32DB, 'M', 'シ'), - (0x32DC, 'M', 'ス'), - (0x32DD, 'M', 'セ'), - (0x32DE, 'M', 'ソ'), - (0x32DF, 'M', 'タ'), - (0x32E0, 'M', 'チ'), - (0x32E1, 'M', 'ツ'), - (0x32E2, 'M', 'テ'), - (0x32E3, 'M', 'ト'), - (0x32E4, 'M', 'ナ'), - (0x32E5, 'M', 'ニ'), - (0x32E6, 'M', 'ヌ'), - (0x32E7, 'M', 'ネ'), - (0x32E8, 'M', 'ノ'), - (0x32E9, 'M', 'ハ'), - (0x32EA, 'M', 'ヒ'), - (0x32EB, 'M', 'フ'), - (0x32EC, 'M', 'ヘ'), - (0x32ED, 'M', 'ホ'), - (0x32EE, 'M', 'マ'), - (0x32EF, 'M', 'ミ'), - (0x32F0, 'M', 'ム'), - (0x32F1, 'M', 'メ'), - (0x32F2, 'M', 'モ'), - (0x32F3, 'M', 'ヤ'), - (0x32F4, 'M', 'ユ'), - (0x32F5, 'M', 'ヨ'), - (0x32F6, 'M', 'ラ'), - (0x32F7, 'M', 'リ'), - (0x32F8, 'M', 'ル'), - (0x32F9, 'M', 'レ'), - (0x32FA, 'M', 'ロ'), - (0x32FB, 'M', 'ワ'), - (0x32FC, 'M', 'ヰ'), - (0x32FD, 'M', 'ヱ'), - (0x32FE, 'M', 'ヲ'), - (0x32FF, 'M', '令和'), - (0x3300, 'M', 'アパート'), - (0x3301, 'M', 'アルファ'), - (0x3302, 'M', 'アンペア'), - (0x3303, 'M', 'アール'), - (0x3304, 'M', 'イニング'), - (0x3305, 'M', 'インチ'), - (0x3306, 'M', 'ウォン'), - (0x3307, 'M', 'エスクード'), - (0x3308, 'M', 'エーカー'), - (0x3309, 'M', 'オンス'), - (0x330A, 'M', 'オーム'), - (0x330B, 'M', 'カイリ'), - (0x330C, 'M', 'カラット'), - (0x330D, 'M', 'カロリー'), - (0x330E, 'M', 'ガロン'), - (0x330F, 'M', 'ガンマ'), - (0x3310, 'M', 'ギガ'), - (0x3311, 'M', 'ギニー'), - (0x3312, 'M', 'キュリー'), - (0x3313, 'M', 'ギルダー'), - (0x3314, 'M', 'キロ'), - (0x3315, 'M', 'キログラム'), + (0x32B6, "M", "41"), + (0x32B7, "M", "42"), + (0x32B8, "M", "43"), + (0x32B9, "M", "44"), + (0x32BA, "M", "45"), + (0x32BB, "M", "46"), + (0x32BC, "M", "47"), + (0x32BD, "M", "48"), + (0x32BE, "M", "49"), + (0x32BF, "M", "50"), + (0x32C0, "M", "1月"), + (0x32C1, "M", "2月"), + (0x32C2, "M", "3月"), + (0x32C3, "M", "4月"), + (0x32C4, "M", "5月"), + (0x32C5, "M", "6月"), + (0x32C6, "M", "7月"), + (0x32C7, "M", "8月"), + (0x32C8, "M", "9月"), + (0x32C9, "M", "10月"), + (0x32CA, "M", "11月"), + (0x32CB, "M", "12月"), + (0x32CC, "M", "hg"), + (0x32CD, "M", "erg"), + (0x32CE, "M", "ev"), + (0x32CF, "M", "ltd"), + (0x32D0, "M", "ア"), + (0x32D1, "M", "イ"), + (0x32D2, "M", "ウ"), + (0x32D3, "M", "エ"), + (0x32D4, "M", "オ"), + (0x32D5, "M", "カ"), + (0x32D6, "M", "キ"), + (0x32D7, "M", "ク"), + (0x32D8, "M", "ケ"), + (0x32D9, "M", "コ"), + (0x32DA, "M", "サ"), + (0x32DB, "M", "シ"), + (0x32DC, "M", "ス"), + (0x32DD, "M", "セ"), + (0x32DE, "M", "ソ"), + (0x32DF, "M", "タ"), + (0x32E0, "M", "チ"), + (0x32E1, "M", "ツ"), + (0x32E2, "M", "テ"), + (0x32E3, "M", "ト"), + (0x32E4, "M", "ナ"), + (0x32E5, "M", "ニ"), + (0x32E6, "M", "ヌ"), + (0x32E7, "M", "ネ"), + (0x32E8, "M", "ノ"), + (0x32E9, "M", "ハ"), + (0x32EA, "M", "ヒ"), + (0x32EB, "M", "フ"), + (0x32EC, "M", "ヘ"), + (0x32ED, "M", "ホ"), + (0x32EE, "M", "マ"), + (0x32EF, "M", "ミ"), + (0x32F0, "M", "ム"), + (0x32F1, "M", "メ"), + (0x32F2, "M", "モ"), + (0x32F3, "M", "ヤ"), + (0x32F4, "M", "ユ"), + (0x32F5, "M", "ヨ"), + (0x32F6, "M", "ラ"), + (0x32F7, "M", "リ"), + (0x32F8, "M", "ル"), + (0x32F9, "M", "レ"), + (0x32FA, "M", "ロ"), + (0x32FB, "M", "ワ"), + (0x32FC, "M", "ヰ"), + (0x32FD, "M", "ヱ"), + (0x32FE, "M", "ヲ"), + (0x32FF, "M", "令和"), + (0x3300, "M", "アパート"), + (0x3301, "M", "アルファ"), + (0x3302, "M", "アンペア"), + (0x3303, "M", "アール"), + (0x3304, "M", "イニング"), + (0x3305, "M", "インチ"), + (0x3306, "M", "ウォン"), + (0x3307, "M", "エスクード"), + (0x3308, "M", "エーカー"), + (0x3309, "M", "オンス"), + (0x330A, "M", "オーム"), + (0x330B, "M", "カイリ"), + (0x330C, "M", "カラット"), + (0x330D, "M", "カロリー"), + (0x330E, "M", "ガロン"), + (0x330F, "M", "ガンマ"), + (0x3310, "M", "ギガ"), + (0x3311, "M", "ギニー"), + (0x3312, "M", "キュリー"), + (0x3313, "M", "ギルダー"), + (0x3314, "M", "キロ"), + (0x3315, "M", "キログラム"), + (0x3316, "M", "キロメートル"), + (0x3317, "M", "キロワット"), + (0x3318, "M", "グラム"), + (0x3319, "M", "グラムトン"), ] + def _seg_33() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: return [ - (0x3316, 'M', 'キロメートル'), - (0x3317, 'M', 'キロワット'), - (0x3318, 'M', 'グラム'), - (0x3319, 'M', 'グラムトン'), - (0x331A, 'M', 'クルゼイロ'), - (0x331B, 'M', 'クローネ'), - (0x331C, 'M', 'ケース'), - (0x331D, 'M', 'コルナ'), - (0x331E, 'M', 'コーポ'), - (0x331F, 'M', 'サイクル'), - (0x3320, 'M', 'サンチーム'), - (0x3321, 'M', 'シリング'), - (0x3322, 'M', 'センチ'), - (0x3323, 'M', 'セント'), - (0x3324, 'M', 'ダース'), - (0x3325, 'M', 'デシ'), - (0x3326, 'M', 'ドル'), - (0x3327, 'M', 'トン'), - (0x3328, 'M', 'ナノ'), - (0x3329, 'M', 'ノット'), - (0x332A, 'M', 'ハイツ'), - (0x332B, 'M', 'パーセント'), - (0x332C, 'M', 'パーツ'), - (0x332D, 'M', 'バーレル'), - (0x332E, 'M', 'ピアストル'), - (0x332F, 'M', 'ピクル'), - (0x3330, 'M', 'ピコ'), - (0x3331, 'M', 'ビル'), - (0x3332, 'M', 'ファラッド'), - (0x3333, 'M', 'フィート'), - (0x3334, 'M', 'ブッシェル'), - (0x3335, 'M', 'フラン'), - (0x3336, 'M', 'ヘクタール'), - (0x3337, 'M', 'ペソ'), - (0x3338, 'M', 'ペニヒ'), - (0x3339, 'M', 'ヘルツ'), - (0x333A, 'M', 'ペンス'), - (0x333B, 'M', 'ページ'), - (0x333C, 'M', 'ベータ'), - (0x333D, 'M', 'ポイント'), - (0x333E, 'M', 'ボルト'), - (0x333F, 'M', 'ホン'), - (0x3340, 'M', 'ポンド'), - (0x3341, 'M', 'ホール'), - (0x3342, 'M', 'ホーン'), - (0x3343, 'M', 'マイクロ'), - (0x3344, 'M', 'マイル'), - (0x3345, 'M', 'マッハ'), - (0x3346, 'M', 'マルク'), - (0x3347, 'M', 'マンション'), - (0x3348, 'M', 'ミクロン'), - (0x3349, 'M', 'ミリ'), - (0x334A, 'M', 'ミリバール'), - (0x334B, 'M', 'メガ'), - (0x334C, 'M', 'メガトン'), - (0x334D, 'M', 'メートル'), - (0x334E, 'M', 'ヤード'), - (0x334F, 'M', 'ヤール'), - (0x3350, 'M', 'ユアン'), - (0x3351, 'M', 'リットル'), - (0x3352, 'M', 'リラ'), - (0x3353, 'M', 'ルピー'), - (0x3354, 'M', 'ルーブル'), - (0x3355, 'M', 'レム'), - (0x3356, 'M', 'レントゲン'), - (0x3357, 'M', 'ワット'), - (0x3358, 'M', '0点'), - (0x3359, 'M', '1点'), - (0x335A, 'M', '2点'), - (0x335B, 'M', '3点'), - (0x335C, 'M', '4点'), - (0x335D, 'M', '5点'), - (0x335E, 'M', '6点'), - (0x335F, 'M', '7点'), - (0x3360, 'M', '8点'), - (0x3361, 'M', '9点'), - (0x3362, 'M', '10点'), - (0x3363, 'M', '11点'), - (0x3364, 'M', '12点'), - (0x3365, 'M', '13点'), - (0x3366, 'M', '14点'), - (0x3367, 'M', '15点'), - (0x3368, 'M', '16点'), - (0x3369, 'M', '17点'), - (0x336A, 'M', '18点'), - (0x336B, 'M', '19点'), - (0x336C, 'M', '20点'), - (0x336D, 'M', '21点'), - (0x336E, 'M', '22点'), - (0x336F, 'M', '23点'), - (0x3370, 'M', '24点'), - (0x3371, 'M', 'hpa'), - (0x3372, 'M', 'da'), - (0x3373, 'M', 'au'), - (0x3374, 'M', 'bar'), - (0x3375, 'M', 'ov'), - (0x3376, 'M', 'pc'), - (0x3377, 'M', 'dm'), - (0x3378, 'M', 'dm2'), - (0x3379, 'M', 'dm3'), + (0x331A, "M", "クルゼイロ"), + (0x331B, "M", "クローネ"), + (0x331C, "M", "ケース"), + (0x331D, "M", "コルナ"), + (0x331E, "M", "コーポ"), + (0x331F, "M", "サイクル"), + (0x3320, "M", "サンチーム"), + (0x3321, "M", "シリング"), + (0x3322, "M", "センチ"), + (0x3323, "M", "セント"), + (0x3324, "M", "ダース"), + (0x3325, "M", "デシ"), + (0x3326, "M", "ドル"), + (0x3327, "M", "トン"), + (0x3328, "M", "ナノ"), + (0x3329, "M", "ノット"), + (0x332A, "M", "ハイツ"), + (0x332B, "M", "パーセント"), + (0x332C, "M", "パーツ"), + (0x332D, "M", "バーレル"), + (0x332E, "M", "ピアストル"), + (0x332F, "M", "ピクル"), + (0x3330, "M", "ピコ"), + (0x3331, "M", "ビル"), + (0x3332, "M", "ファラッド"), + (0x3333, "M", "フィート"), + (0x3334, "M", "ブッシェル"), + (0x3335, "M", "フラン"), + (0x3336, "M", "ヘクタール"), + (0x3337, "M", "ペソ"), + (0x3338, "M", "ペニヒ"), + (0x3339, "M", "ヘルツ"), + (0x333A, "M", "ペンス"), + (0x333B, "M", "ページ"), + (0x333C, "M", "ベータ"), + (0x333D, "M", "ポイント"), + (0x333E, "M", "ボルト"), + (0x333F, "M", "ホン"), + (0x3340, "M", "ポンド"), + (0x3341, "M", "ホール"), + (0x3342, "M", "ホーン"), + (0x3343, "M", "マイクロ"), + (0x3344, "M", "マイル"), + (0x3345, "M", "マッハ"), + (0x3346, "M", "マルク"), + (0x3347, "M", "マンション"), + (0x3348, "M", "ミクロン"), + (0x3349, "M", "ミリ"), + (0x334A, "M", "ミリバール"), + (0x334B, "M", "メガ"), + (0x334C, "M", "メガトン"), + (0x334D, "M", "メートル"), + (0x334E, "M", "ヤード"), + (0x334F, "M", "ヤール"), + (0x3350, "M", "ユアン"), + (0x3351, "M", "リットル"), + (0x3352, "M", "リラ"), + (0x3353, "M", "ルピー"), + (0x3354, "M", "ルーブル"), + (0x3355, "M", "レム"), + (0x3356, "M", "レントゲン"), + (0x3357, "M", "ワット"), + (0x3358, "M", "0点"), + (0x3359, "M", "1点"), + (0x335A, "M", "2点"), + (0x335B, "M", "3点"), + (0x335C, "M", "4点"), + (0x335D, "M", "5点"), + (0x335E, "M", "6点"), + (0x335F, "M", "7点"), + (0x3360, "M", "8点"), + (0x3361, "M", "9点"), + (0x3362, "M", "10点"), + (0x3363, "M", "11点"), + (0x3364, "M", "12点"), + (0x3365, "M", "13点"), + (0x3366, "M", "14点"), + (0x3367, "M", "15点"), + (0x3368, "M", "16点"), + (0x3369, "M", "17点"), + (0x336A, "M", "18点"), + (0x336B, "M", "19点"), + (0x336C, "M", "20点"), + (0x336D, "M", "21点"), + (0x336E, "M", "22点"), + (0x336F, "M", "23点"), + (0x3370, "M", "24点"), + (0x3371, "M", "hpa"), + (0x3372, "M", "da"), + (0x3373, "M", "au"), + (0x3374, "M", "bar"), + (0x3375, "M", "ov"), + (0x3376, "M", "pc"), + (0x3377, "M", "dm"), + (0x3378, "M", "dm2"), + (0x3379, "M", "dm3"), + (0x337A, "M", "iu"), + (0x337B, "M", "平成"), + (0x337C, "M", "昭和"), + (0x337D, "M", "大正"), ] + def _seg_34() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: return [ - (0x337A, 'M', 'iu'), - (0x337B, 'M', '平成'), - (0x337C, 'M', '昭和'), - (0x337D, 'M', '大正'), - (0x337E, 'M', '明治'), - (0x337F, 'M', '株式会社'), - (0x3380, 'M', 'pa'), - (0x3381, 'M', 'na'), - (0x3382, 'M', 'μa'), - (0x3383, 'M', 'ma'), - (0x3384, 'M', 'ka'), - (0x3385, 'M', 'kb'), - (0x3386, 'M', 'mb'), - (0x3387, 'M', 'gb'), - (0x3388, 'M', 'cal'), - (0x3389, 'M', 'kcal'), - (0x338A, 'M', 'pf'), - (0x338B, 'M', 'nf'), - (0x338C, 'M', 'μf'), - (0x338D, 'M', 'μg'), - (0x338E, 'M', 'mg'), - (0x338F, 'M', 'kg'), - (0x3390, 'M', 'hz'), - (0x3391, 'M', 'khz'), - (0x3392, 'M', 'mhz'), - (0x3393, 'M', 'ghz'), - (0x3394, 'M', 'thz'), - (0x3395, 'M', 'μl'), - (0x3396, 'M', 'ml'), - (0x3397, 'M', 'dl'), - (0x3398, 'M', 'kl'), - (0x3399, 'M', 'fm'), - (0x339A, 'M', 'nm'), - (0x339B, 'M', 'μm'), - (0x339C, 'M', 'mm'), - (0x339D, 'M', 'cm'), - (0x339E, 'M', 'km'), - (0x339F, 'M', 'mm2'), - (0x33A0, 'M', 'cm2'), - (0x33A1, 'M', 'm2'), - (0x33A2, 'M', 'km2'), - (0x33A3, 'M', 'mm3'), - (0x33A4, 'M', 'cm3'), - (0x33A5, 'M', 'm3'), - (0x33A6, 'M', 'km3'), - (0x33A7, 'M', 'm∕s'), - (0x33A8, 'M', 'm∕s2'), - (0x33A9, 'M', 'pa'), - (0x33AA, 'M', 'kpa'), - (0x33AB, 'M', 'mpa'), - (0x33AC, 'M', 'gpa'), - (0x33AD, 'M', 'rad'), - (0x33AE, 'M', 'rad∕s'), - (0x33AF, 'M', 'rad∕s2'), - (0x33B0, 'M', 'ps'), - (0x33B1, 'M', 'ns'), - (0x33B2, 'M', 'μs'), - (0x33B3, 'M', 'ms'), - (0x33B4, 'M', 'pv'), - (0x33B5, 'M', 'nv'), - (0x33B6, 'M', 'μv'), - (0x33B7, 'M', 'mv'), - (0x33B8, 'M', 'kv'), - (0x33B9, 'M', 'mv'), - (0x33BA, 'M', 'pw'), - (0x33BB, 'M', 'nw'), - (0x33BC, 'M', 'μw'), - (0x33BD, 'M', 'mw'), - (0x33BE, 'M', 'kw'), - (0x33BF, 'M', 'mw'), - (0x33C0, 'M', 'kω'), - (0x33C1, 'M', 'mω'), - (0x33C2, 'X'), - (0x33C3, 'M', 'bq'), - (0x33C4, 'M', 'cc'), - (0x33C5, 'M', 'cd'), - (0x33C6, 'M', 'c∕kg'), - (0x33C7, 'X'), - (0x33C8, 'M', 'db'), - (0x33C9, 'M', 'gy'), - (0x33CA, 'M', 'ha'), - (0x33CB, 'M', 'hp'), - (0x33CC, 'M', 'in'), - (0x33CD, 'M', 'kk'), - (0x33CE, 'M', 'km'), - (0x33CF, 'M', 'kt'), - (0x33D0, 'M', 'lm'), - (0x33D1, 'M', 'ln'), - (0x33D2, 'M', 'log'), - (0x33D3, 'M', 'lx'), - (0x33D4, 'M', 'mb'), - (0x33D5, 'M', 'mil'), - (0x33D6, 'M', 'mol'), - (0x33D7, 'M', 'ph'), - (0x33D8, 'X'), - (0x33D9, 'M', 'ppm'), - (0x33DA, 'M', 'pr'), - (0x33DB, 'M', 'sr'), - (0x33DC, 'M', 'sv'), - (0x33DD, 'M', 'wb'), + (0x337E, "M", "明治"), + (0x337F, "M", "株式会社"), + (0x3380, "M", "pa"), + (0x3381, "M", "na"), + (0x3382, "M", "μa"), + (0x3383, "M", "ma"), + (0x3384, "M", "ka"), + (0x3385, "M", "kb"), + (0x3386, "M", "mb"), + (0x3387, "M", "gb"), + (0x3388, "M", "cal"), + (0x3389, "M", "kcal"), + (0x338A, "M", "pf"), + (0x338B, "M", "nf"), + (0x338C, "M", "μf"), + (0x338D, "M", "μg"), + (0x338E, "M", "mg"), + (0x338F, "M", "kg"), + (0x3390, "M", "hz"), + (0x3391, "M", "khz"), + (0x3392, "M", "mhz"), + (0x3393, "M", "ghz"), + (0x3394, "M", "thz"), + (0x3395, "M", "μl"), + (0x3396, "M", "ml"), + (0x3397, "M", "dl"), + (0x3398, "M", "kl"), + (0x3399, "M", "fm"), + (0x339A, "M", "nm"), + (0x339B, "M", "μm"), + (0x339C, "M", "mm"), + (0x339D, "M", "cm"), + (0x339E, "M", "km"), + (0x339F, "M", "mm2"), + (0x33A0, "M", "cm2"), + (0x33A1, "M", "m2"), + (0x33A2, "M", "km2"), + (0x33A3, "M", "mm3"), + (0x33A4, "M", "cm3"), + (0x33A5, "M", "m3"), + (0x33A6, "M", "km3"), + (0x33A7, "M", "m∕s"), + (0x33A8, "M", "m∕s2"), + (0x33A9, "M", "pa"), + (0x33AA, "M", "kpa"), + (0x33AB, "M", "mpa"), + (0x33AC, "M", "gpa"), + (0x33AD, "M", "rad"), + (0x33AE, "M", "rad∕s"), + (0x33AF, "M", "rad∕s2"), + (0x33B0, "M", "ps"), + (0x33B1, "M", "ns"), + (0x33B2, "M", "μs"), + (0x33B3, "M", "ms"), + (0x33B4, "M", "pv"), + (0x33B5, "M", "nv"), + (0x33B6, "M", "μv"), + (0x33B7, "M", "mv"), + (0x33B8, "M", "kv"), + (0x33B9, "M", "mv"), + (0x33BA, "M", "pw"), + (0x33BB, "M", "nw"), + (0x33BC, "M", "μw"), + (0x33BD, "M", "mw"), + (0x33BE, "M", "kw"), + (0x33BF, "M", "mw"), + (0x33C0, "M", "kω"), + (0x33C1, "M", "mω"), + (0x33C2, "X"), + (0x33C3, "M", "bq"), + (0x33C4, "M", "cc"), + (0x33C5, "M", "cd"), + (0x33C6, "M", "c∕kg"), + (0x33C7, "X"), + (0x33C8, "M", "db"), + (0x33C9, "M", "gy"), + (0x33CA, "M", "ha"), + (0x33CB, "M", "hp"), + (0x33CC, "M", "in"), + (0x33CD, "M", "kk"), + (0x33CE, "M", "km"), + (0x33CF, "M", "kt"), + (0x33D0, "M", "lm"), + (0x33D1, "M", "ln"), + (0x33D2, "M", "log"), + (0x33D3, "M", "lx"), + (0x33D4, "M", "mb"), + (0x33D5, "M", "mil"), + (0x33D6, "M", "mol"), + (0x33D7, "M", "ph"), + (0x33D8, "X"), + (0x33D9, "M", "ppm"), + (0x33DA, "M", "pr"), + (0x33DB, "M", "sr"), + (0x33DC, "M", "sv"), + (0x33DD, "M", "wb"), + (0x33DE, "M", "v∕m"), + (0x33DF, "M", "a∕m"), + (0x33E0, "M", "1日"), + (0x33E1, "M", "2日"), ] + def _seg_35() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: return [ - (0x33DE, 'M', 'v∕m'), - (0x33DF, 'M', 'a∕m'), - (0x33E0, 'M', '1日'), - (0x33E1, 'M', '2日'), - (0x33E2, 'M', '3日'), - (0x33E3, 'M', '4日'), - (0x33E4, 'M', '5日'), - (0x33E5, 'M', '6日'), - (0x33E6, 'M', '7日'), - (0x33E7, 'M', '8日'), - (0x33E8, 'M', '9日'), - (0x33E9, 'M', '10日'), - (0x33EA, 'M', '11日'), - (0x33EB, 'M', '12日'), - (0x33EC, 'M', '13日'), - (0x33ED, 'M', '14日'), - (0x33EE, 'M', '15日'), - (0x33EF, 'M', '16日'), - (0x33F0, 'M', '17日'), - (0x33F1, 'M', '18日'), - (0x33F2, 'M', '19日'), - (0x33F3, 'M', '20日'), - (0x33F4, 'M', '21日'), - (0x33F5, 'M', '22日'), - (0x33F6, 'M', '23日'), - (0x33F7, 'M', '24日'), - (0x33F8, 'M', '25日'), - (0x33F9, 'M', '26日'), - (0x33FA, 'M', '27日'), - (0x33FB, 'M', '28日'), - (0x33FC, 'M', '29日'), - (0x33FD, 'M', '30日'), - (0x33FE, 'M', '31日'), - (0x33FF, 'M', 'gal'), - (0x3400, 'V'), - (0xA48D, 'X'), - (0xA490, 'V'), - (0xA4C7, 'X'), - (0xA4D0, 'V'), - (0xA62C, 'X'), - (0xA640, 'M', 'ꙁ'), - (0xA641, 'V'), - (0xA642, 'M', 'ꙃ'), - (0xA643, 'V'), - (0xA644, 'M', 'ꙅ'), - (0xA645, 'V'), - (0xA646, 'M', 'ꙇ'), - (0xA647, 'V'), - (0xA648, 'M', 'ꙉ'), - (0xA649, 'V'), - (0xA64A, 'M', 'ꙋ'), - (0xA64B, 'V'), - (0xA64C, 'M', 'ꙍ'), - (0xA64D, 'V'), - (0xA64E, 'M', 'ꙏ'), - (0xA64F, 'V'), - (0xA650, 'M', 'ꙑ'), - (0xA651, 'V'), - (0xA652, 'M', 'ꙓ'), - (0xA653, 'V'), - (0xA654, 'M', 'ꙕ'), - (0xA655, 'V'), - (0xA656, 'M', 'ꙗ'), - (0xA657, 'V'), - (0xA658, 'M', 'ꙙ'), - (0xA659, 'V'), - (0xA65A, 'M', 'ꙛ'), - (0xA65B, 'V'), - (0xA65C, 'M', 'ꙝ'), - (0xA65D, 'V'), - (0xA65E, 'M', 'ꙟ'), - (0xA65F, 'V'), - (0xA660, 'M', 'ꙡ'), - (0xA661, 'V'), - (0xA662, 'M', 'ꙣ'), - (0xA663, 'V'), - (0xA664, 'M', 'ꙥ'), - (0xA665, 'V'), - (0xA666, 'M', 'ꙧ'), - (0xA667, 'V'), - (0xA668, 'M', 'ꙩ'), - (0xA669, 'V'), - (0xA66A, 'M', 'ꙫ'), - (0xA66B, 'V'), - (0xA66C, 'M', 'ꙭ'), - (0xA66D, 'V'), - (0xA680, 'M', 'ꚁ'), - (0xA681, 'V'), - (0xA682, 'M', 'ꚃ'), - (0xA683, 'V'), - (0xA684, 'M', 'ꚅ'), - (0xA685, 'V'), - (0xA686, 'M', 'ꚇ'), - (0xA687, 'V'), - (0xA688, 'M', 'ꚉ'), - (0xA689, 'V'), - (0xA68A, 'M', 'ꚋ'), - (0xA68B, 'V'), - (0xA68C, 'M', 'ꚍ'), - (0xA68D, 'V'), + (0x33E2, "M", "3日"), + (0x33E3, "M", "4日"), + (0x33E4, "M", "5日"), + (0x33E5, "M", "6日"), + (0x33E6, "M", "7日"), + (0x33E7, "M", "8日"), + (0x33E8, "M", "9日"), + (0x33E9, "M", "10日"), + (0x33EA, "M", "11日"), + (0x33EB, "M", "12日"), + (0x33EC, "M", "13日"), + (0x33ED, "M", "14日"), + (0x33EE, "M", "15日"), + (0x33EF, "M", "16日"), + (0x33F0, "M", "17日"), + (0x33F1, "M", "18日"), + (0x33F2, "M", "19日"), + (0x33F3, "M", "20日"), + (0x33F4, "M", "21日"), + (0x33F5, "M", "22日"), + (0x33F6, "M", "23日"), + (0x33F7, "M", "24日"), + (0x33F8, "M", "25日"), + (0x33F9, "M", "26日"), + (0x33FA, "M", "27日"), + (0x33FB, "M", "28日"), + (0x33FC, "M", "29日"), + (0x33FD, "M", "30日"), + (0x33FE, "M", "31日"), + (0x33FF, "M", "gal"), + (0x3400, "V"), + (0xA48D, "X"), + (0xA490, "V"), + (0xA4C7, "X"), + (0xA4D0, "V"), + (0xA62C, "X"), + (0xA640, "M", "ꙁ"), + (0xA641, "V"), + (0xA642, "M", "ꙃ"), + (0xA643, "V"), + (0xA644, "M", "ꙅ"), + (0xA645, "V"), + (0xA646, "M", "ꙇ"), + (0xA647, "V"), + (0xA648, "M", "ꙉ"), + (0xA649, "V"), + (0xA64A, "M", "ꙋ"), + (0xA64B, "V"), + (0xA64C, "M", "ꙍ"), + (0xA64D, "V"), + (0xA64E, "M", "ꙏ"), + (0xA64F, "V"), + (0xA650, "M", "ꙑ"), + (0xA651, "V"), + (0xA652, "M", "ꙓ"), + (0xA653, "V"), + (0xA654, "M", "ꙕ"), + (0xA655, "V"), + (0xA656, "M", "ꙗ"), + (0xA657, "V"), + (0xA658, "M", "ꙙ"), + (0xA659, "V"), + (0xA65A, "M", "ꙛ"), + (0xA65B, "V"), + (0xA65C, "M", "ꙝ"), + (0xA65D, "V"), + (0xA65E, "M", "ꙟ"), + (0xA65F, "V"), + (0xA660, "M", "ꙡ"), + (0xA661, "V"), + (0xA662, "M", "ꙣ"), + (0xA663, "V"), + (0xA664, "M", "ꙥ"), + (0xA665, "V"), + (0xA666, "M", "ꙧ"), + (0xA667, "V"), + (0xA668, "M", "ꙩ"), + (0xA669, "V"), + (0xA66A, "M", "ꙫ"), + (0xA66B, "V"), + (0xA66C, "M", "ꙭ"), + (0xA66D, "V"), + (0xA680, "M", "ꚁ"), + (0xA681, "V"), + (0xA682, "M", "ꚃ"), + (0xA683, "V"), + (0xA684, "M", "ꚅ"), + (0xA685, "V"), + (0xA686, "M", "ꚇ"), + (0xA687, "V"), + (0xA688, "M", "ꚉ"), + (0xA689, "V"), + (0xA68A, "M", "ꚋ"), + (0xA68B, "V"), + (0xA68C, "M", "ꚍ"), + (0xA68D, "V"), + (0xA68E, "M", "ꚏ"), + (0xA68F, "V"), + (0xA690, "M", "ꚑ"), + (0xA691, "V"), ] + def _seg_36() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: return [ - (0xA68E, 'M', 'ꚏ'), - (0xA68F, 'V'), - (0xA690, 'M', 'ꚑ'), - (0xA691, 'V'), - (0xA692, 'M', 'ꚓ'), - (0xA693, 'V'), - (0xA694, 'M', 'ꚕ'), - (0xA695, 'V'), - (0xA696, 'M', 'ꚗ'), - (0xA697, 'V'), - (0xA698, 'M', 'ꚙ'), - (0xA699, 'V'), - (0xA69A, 'M', 'ꚛ'), - (0xA69B, 'V'), - (0xA69C, 'M', 'ъ'), - (0xA69D, 'M', 'ь'), - (0xA69E, 'V'), - (0xA6F8, 'X'), - (0xA700, 'V'), - (0xA722, 'M', 'ꜣ'), - (0xA723, 'V'), - (0xA724, 'M', 'ꜥ'), - (0xA725, 'V'), - (0xA726, 'M', 'ꜧ'), - (0xA727, 'V'), - (0xA728, 'M', 'ꜩ'), - (0xA729, 'V'), - (0xA72A, 'M', 'ꜫ'), - (0xA72B, 'V'), - (0xA72C, 'M', 'ꜭ'), - (0xA72D, 'V'), - (0xA72E, 'M', 'ꜯ'), - (0xA72F, 'V'), - (0xA732, 'M', 'ꜳ'), - (0xA733, 'V'), - (0xA734, 'M', 'ꜵ'), - (0xA735, 'V'), - (0xA736, 'M', 'ꜷ'), - (0xA737, 'V'), - (0xA738, 'M', 'ꜹ'), - (0xA739, 'V'), - (0xA73A, 'M', 'ꜻ'), - (0xA73B, 'V'), - (0xA73C, 'M', 'ꜽ'), - (0xA73D, 'V'), - (0xA73E, 'M', 'ꜿ'), - (0xA73F, 'V'), - (0xA740, 'M', 'ꝁ'), - (0xA741, 'V'), - (0xA742, 'M', 'ꝃ'), - (0xA743, 'V'), - (0xA744, 'M', 'ꝅ'), - (0xA745, 'V'), - (0xA746, 'M', 'ꝇ'), - (0xA747, 'V'), - (0xA748, 'M', 'ꝉ'), - (0xA749, 'V'), - (0xA74A, 'M', 'ꝋ'), - (0xA74B, 'V'), - (0xA74C, 'M', 'ꝍ'), - (0xA74D, 'V'), - (0xA74E, 'M', 'ꝏ'), - (0xA74F, 'V'), - (0xA750, 'M', 'ꝑ'), - (0xA751, 'V'), - (0xA752, 'M', 'ꝓ'), - (0xA753, 'V'), - (0xA754, 'M', 'ꝕ'), - (0xA755, 'V'), - (0xA756, 'M', 'ꝗ'), - (0xA757, 'V'), - (0xA758, 'M', 'ꝙ'), - (0xA759, 'V'), - (0xA75A, 'M', 'ꝛ'), - (0xA75B, 'V'), - (0xA75C, 'M', 'ꝝ'), - (0xA75D, 'V'), - (0xA75E, 'M', 'ꝟ'), - (0xA75F, 'V'), - (0xA760, 'M', 'ꝡ'), - (0xA761, 'V'), - (0xA762, 'M', 'ꝣ'), - (0xA763, 'V'), - (0xA764, 'M', 'ꝥ'), - (0xA765, 'V'), - (0xA766, 'M', 'ꝧ'), - (0xA767, 'V'), - (0xA768, 'M', 'ꝩ'), - (0xA769, 'V'), - (0xA76A, 'M', 'ꝫ'), - (0xA76B, 'V'), - (0xA76C, 'M', 'ꝭ'), - (0xA76D, 'V'), - (0xA76E, 'M', 'ꝯ'), - (0xA76F, 'V'), - (0xA770, 'M', 'ꝯ'), - (0xA771, 'V'), - (0xA779, 'M', 'ꝺ'), - (0xA77A, 'V'), - (0xA77B, 'M', 'ꝼ'), + (0xA692, "M", "ꚓ"), + (0xA693, "V"), + (0xA694, "M", "ꚕ"), + (0xA695, "V"), + (0xA696, "M", "ꚗ"), + (0xA697, "V"), + (0xA698, "M", "ꚙ"), + (0xA699, "V"), + (0xA69A, "M", "ꚛ"), + (0xA69B, "V"), + (0xA69C, "M", "ъ"), + (0xA69D, "M", "ь"), + (0xA69E, "V"), + (0xA6F8, "X"), + (0xA700, "V"), + (0xA722, "M", "ꜣ"), + (0xA723, "V"), + (0xA724, "M", "ꜥ"), + (0xA725, "V"), + (0xA726, "M", "ꜧ"), + (0xA727, "V"), + (0xA728, "M", "ꜩ"), + (0xA729, "V"), + (0xA72A, "M", "ꜫ"), + (0xA72B, "V"), + (0xA72C, "M", "ꜭ"), + (0xA72D, "V"), + (0xA72E, "M", "ꜯ"), + (0xA72F, "V"), + (0xA732, "M", "ꜳ"), + (0xA733, "V"), + (0xA734, "M", "ꜵ"), + (0xA735, "V"), + (0xA736, "M", "ꜷ"), + (0xA737, "V"), + (0xA738, "M", "ꜹ"), + (0xA739, "V"), + (0xA73A, "M", "ꜻ"), + (0xA73B, "V"), + (0xA73C, "M", "ꜽ"), + (0xA73D, "V"), + (0xA73E, "M", "ꜿ"), + (0xA73F, "V"), + (0xA740, "M", "ꝁ"), + (0xA741, "V"), + (0xA742, "M", "ꝃ"), + (0xA743, "V"), + (0xA744, "M", "ꝅ"), + (0xA745, "V"), + (0xA746, "M", "ꝇ"), + (0xA747, "V"), + (0xA748, "M", "ꝉ"), + (0xA749, "V"), + (0xA74A, "M", "ꝋ"), + (0xA74B, "V"), + (0xA74C, "M", "ꝍ"), + (0xA74D, "V"), + (0xA74E, "M", "ꝏ"), + (0xA74F, "V"), + (0xA750, "M", "ꝑ"), + (0xA751, "V"), + (0xA752, "M", "ꝓ"), + (0xA753, "V"), + (0xA754, "M", "ꝕ"), + (0xA755, "V"), + (0xA756, "M", "ꝗ"), + (0xA757, "V"), + (0xA758, "M", "ꝙ"), + (0xA759, "V"), + (0xA75A, "M", "ꝛ"), + (0xA75B, "V"), + (0xA75C, "M", "ꝝ"), + (0xA75D, "V"), + (0xA75E, "M", "ꝟ"), + (0xA75F, "V"), + (0xA760, "M", "ꝡ"), + (0xA761, "V"), + (0xA762, "M", "ꝣ"), + (0xA763, "V"), + (0xA764, "M", "ꝥ"), + (0xA765, "V"), + (0xA766, "M", "ꝧ"), + (0xA767, "V"), + (0xA768, "M", "ꝩ"), + (0xA769, "V"), + (0xA76A, "M", "ꝫ"), + (0xA76B, "V"), + (0xA76C, "M", "ꝭ"), + (0xA76D, "V"), + (0xA76E, "M", "ꝯ"), + (0xA76F, "V"), + (0xA770, "M", "ꝯ"), + (0xA771, "V"), + (0xA779, "M", "ꝺ"), + (0xA77A, "V"), + (0xA77B, "M", "ꝼ"), + (0xA77C, "V"), + (0xA77D, "M", "ᵹ"), + (0xA77E, "M", "ꝿ"), + (0xA77F, "V"), ] + def _seg_37() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: return [ - (0xA77C, 'V'), - (0xA77D, 'M', 'ᵹ'), - (0xA77E, 'M', 'ꝿ'), - (0xA77F, 'V'), - (0xA780, 'M', 'ꞁ'), - (0xA781, 'V'), - (0xA782, 'M', 'ꞃ'), - (0xA783, 'V'), - (0xA784, 'M', 'ꞅ'), - (0xA785, 'V'), - (0xA786, 'M', 'ꞇ'), - (0xA787, 'V'), - (0xA78B, 'M', 'ꞌ'), - (0xA78C, 'V'), - (0xA78D, 'M', 'ɥ'), - (0xA78E, 'V'), - (0xA790, 'M', 'ꞑ'), - (0xA791, 'V'), - (0xA792, 'M', 'ꞓ'), - (0xA793, 'V'), - (0xA796, 'M', 'ꞗ'), - (0xA797, 'V'), - (0xA798, 'M', 'ꞙ'), - (0xA799, 'V'), - (0xA79A, 'M', 'ꞛ'), - (0xA79B, 'V'), - (0xA79C, 'M', 'ꞝ'), - (0xA79D, 'V'), - (0xA79E, 'M', 'ꞟ'), - (0xA79F, 'V'), - (0xA7A0, 'M', 'ꞡ'), - (0xA7A1, 'V'), - (0xA7A2, 'M', 'ꞣ'), - (0xA7A3, 'V'), - (0xA7A4, 'M', 'ꞥ'), - (0xA7A5, 'V'), - (0xA7A6, 'M', 'ꞧ'), - (0xA7A7, 'V'), - (0xA7A8, 'M', 'ꞩ'), - (0xA7A9, 'V'), - (0xA7AA, 'M', 'ɦ'), - (0xA7AB, 'M', 'ɜ'), - (0xA7AC, 'M', 'ɡ'), - (0xA7AD, 'M', 'ɬ'), - (0xA7AE, 'M', 'ɪ'), - (0xA7AF, 'V'), - (0xA7B0, 'M', 'ʞ'), - (0xA7B1, 'M', 'ʇ'), - (0xA7B2, 'M', 'ʝ'), - (0xA7B3, 'M', 'ꭓ'), - (0xA7B4, 'M', 'ꞵ'), - (0xA7B5, 'V'), - (0xA7B6, 'M', 'ꞷ'), - (0xA7B7, 'V'), - (0xA7B8, 'M', 'ꞹ'), - (0xA7B9, 'V'), - (0xA7BA, 'M', 'ꞻ'), - (0xA7BB, 'V'), - (0xA7BC, 'M', 'ꞽ'), - (0xA7BD, 'V'), - (0xA7BE, 'M', 'ꞿ'), - (0xA7BF, 'V'), - (0xA7C0, 'M', 'ꟁ'), - (0xA7C1, 'V'), - (0xA7C2, 'M', 'ꟃ'), - (0xA7C3, 'V'), - (0xA7C4, 'M', 'ꞔ'), - (0xA7C5, 'M', 'ʂ'), - (0xA7C6, 'M', 'ᶎ'), - (0xA7C7, 'M', 'ꟈ'), - (0xA7C8, 'V'), - (0xA7C9, 'M', 'ꟊ'), - (0xA7CA, 'V'), - (0xA7CB, 'X'), - (0xA7D0, 'M', 'ꟑ'), - (0xA7D1, 'V'), - (0xA7D2, 'X'), - (0xA7D3, 'V'), - (0xA7D4, 'X'), - (0xA7D5, 'V'), - (0xA7D6, 'M', 'ꟗ'), - (0xA7D7, 'V'), - (0xA7D8, 'M', 'ꟙ'), - (0xA7D9, 'V'), - (0xA7DA, 'X'), - (0xA7F2, 'M', 'c'), - (0xA7F3, 'M', 'f'), - (0xA7F4, 'M', 'q'), - (0xA7F5, 'M', 'ꟶ'), - (0xA7F6, 'V'), - (0xA7F8, 'M', 'ħ'), - (0xA7F9, 'M', 'œ'), - (0xA7FA, 'V'), - (0xA82D, 'X'), - (0xA830, 'V'), - (0xA83A, 'X'), - (0xA840, 'V'), - (0xA878, 'X'), - (0xA880, 'V'), - (0xA8C6, 'X'), + (0xA780, "M", "ꞁ"), + (0xA781, "V"), + (0xA782, "M", "ꞃ"), + (0xA783, "V"), + (0xA784, "M", "ꞅ"), + (0xA785, "V"), + (0xA786, "M", "ꞇ"), + (0xA787, "V"), + (0xA78B, "M", "ꞌ"), + (0xA78C, "V"), + (0xA78D, "M", "ɥ"), + (0xA78E, "V"), + (0xA790, "M", "ꞑ"), + (0xA791, "V"), + (0xA792, "M", "ꞓ"), + (0xA793, "V"), + (0xA796, "M", "ꞗ"), + (0xA797, "V"), + (0xA798, "M", "ꞙ"), + (0xA799, "V"), + (0xA79A, "M", "ꞛ"), + (0xA79B, "V"), + (0xA79C, "M", "ꞝ"), + (0xA79D, "V"), + (0xA79E, "M", "ꞟ"), + (0xA79F, "V"), + (0xA7A0, "M", "ꞡ"), + (0xA7A1, "V"), + (0xA7A2, "M", "ꞣ"), + (0xA7A3, "V"), + (0xA7A4, "M", "ꞥ"), + (0xA7A5, "V"), + (0xA7A6, "M", "ꞧ"), + (0xA7A7, "V"), + (0xA7A8, "M", "ꞩ"), + (0xA7A9, "V"), + (0xA7AA, "M", "ɦ"), + (0xA7AB, "M", "ɜ"), + (0xA7AC, "M", "ɡ"), + (0xA7AD, "M", "ɬ"), + (0xA7AE, "M", "ɪ"), + (0xA7AF, "V"), + (0xA7B0, "M", "ʞ"), + (0xA7B1, "M", "ʇ"), + (0xA7B2, "M", "ʝ"), + (0xA7B3, "M", "ꭓ"), + (0xA7B4, "M", "ꞵ"), + (0xA7B5, "V"), + (0xA7B6, "M", "ꞷ"), + (0xA7B7, "V"), + (0xA7B8, "M", "ꞹ"), + (0xA7B9, "V"), + (0xA7BA, "M", "ꞻ"), + (0xA7BB, "V"), + (0xA7BC, "M", "ꞽ"), + (0xA7BD, "V"), + (0xA7BE, "M", "ꞿ"), + (0xA7BF, "V"), + (0xA7C0, "M", "ꟁ"), + (0xA7C1, "V"), + (0xA7C2, "M", "ꟃ"), + (0xA7C3, "V"), + (0xA7C4, "M", "ꞔ"), + (0xA7C5, "M", "ʂ"), + (0xA7C6, "M", "ᶎ"), + (0xA7C7, "M", "ꟈ"), + (0xA7C8, "V"), + (0xA7C9, "M", "ꟊ"), + (0xA7CA, "V"), + (0xA7CB, "X"), + (0xA7D0, "M", "ꟑ"), + (0xA7D1, "V"), + (0xA7D2, "X"), + (0xA7D3, "V"), + (0xA7D4, "X"), + (0xA7D5, "V"), + (0xA7D6, "M", "ꟗ"), + (0xA7D7, "V"), + (0xA7D8, "M", "ꟙ"), + (0xA7D9, "V"), + (0xA7DA, "X"), + (0xA7F2, "M", "c"), + (0xA7F3, "M", "f"), + (0xA7F4, "M", "q"), + (0xA7F5, "M", "ꟶ"), + (0xA7F6, "V"), + (0xA7F8, "M", "ħ"), + (0xA7F9, "M", "œ"), + (0xA7FA, "V"), + (0xA82D, "X"), + (0xA830, "V"), + (0xA83A, "X"), + (0xA840, "V"), + (0xA878, "X"), + (0xA880, "V"), + (0xA8C6, "X"), + (0xA8CE, "V"), + (0xA8DA, "X"), + (0xA8E0, "V"), + (0xA954, "X"), ] + def _seg_38() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: return [ - (0xA8CE, 'V'), - (0xA8DA, 'X'), - (0xA8E0, 'V'), - (0xA954, 'X'), - (0xA95F, 'V'), - (0xA97D, 'X'), - (0xA980, 'V'), - (0xA9CE, 'X'), - (0xA9CF, 'V'), - (0xA9DA, 'X'), - (0xA9DE, 'V'), - (0xA9FF, 'X'), - (0xAA00, 'V'), - (0xAA37, 'X'), - (0xAA40, 'V'), - (0xAA4E, 'X'), - (0xAA50, 'V'), - (0xAA5A, 'X'), - (0xAA5C, 'V'), - (0xAAC3, 'X'), - (0xAADB, 'V'), - (0xAAF7, 'X'), - (0xAB01, 'V'), - (0xAB07, 'X'), - (0xAB09, 'V'), - (0xAB0F, 'X'), - (0xAB11, 'V'), - (0xAB17, 'X'), - (0xAB20, 'V'), - (0xAB27, 'X'), - (0xAB28, 'V'), - (0xAB2F, 'X'), - (0xAB30, 'V'), - (0xAB5C, 'M', 'ꜧ'), - (0xAB5D, 'M', 'ꬷ'), - (0xAB5E, 'M', 'ɫ'), - (0xAB5F, 'M', 'ꭒ'), - (0xAB60, 'V'), - (0xAB69, 'M', 'ʍ'), - (0xAB6A, 'V'), - (0xAB6C, 'X'), - (0xAB70, 'M', 'Ꭰ'), - (0xAB71, 'M', 'Ꭱ'), - (0xAB72, 'M', 'Ꭲ'), - (0xAB73, 'M', 'Ꭳ'), - (0xAB74, 'M', 'Ꭴ'), - (0xAB75, 'M', 'Ꭵ'), - (0xAB76, 'M', 'Ꭶ'), - (0xAB77, 'M', 'Ꭷ'), - (0xAB78, 'M', 'Ꭸ'), - (0xAB79, 'M', 'Ꭹ'), - (0xAB7A, 'M', 'Ꭺ'), - (0xAB7B, 'M', 'Ꭻ'), - (0xAB7C, 'M', 'Ꭼ'), - (0xAB7D, 'M', 'Ꭽ'), - (0xAB7E, 'M', 'Ꭾ'), - (0xAB7F, 'M', 'Ꭿ'), - (0xAB80, 'M', 'Ꮀ'), - (0xAB81, 'M', 'Ꮁ'), - (0xAB82, 'M', 'Ꮂ'), - (0xAB83, 'M', 'Ꮃ'), - (0xAB84, 'M', 'Ꮄ'), - (0xAB85, 'M', 'Ꮅ'), - (0xAB86, 'M', 'Ꮆ'), - (0xAB87, 'M', 'Ꮇ'), - (0xAB88, 'M', 'Ꮈ'), - (0xAB89, 'M', 'Ꮉ'), - (0xAB8A, 'M', 'Ꮊ'), - (0xAB8B, 'M', 'Ꮋ'), - (0xAB8C, 'M', 'Ꮌ'), - (0xAB8D, 'M', 'Ꮍ'), - (0xAB8E, 'M', 'Ꮎ'), - (0xAB8F, 'M', 'Ꮏ'), - (0xAB90, 'M', 'Ꮐ'), - (0xAB91, 'M', 'Ꮑ'), - (0xAB92, 'M', 'Ꮒ'), - (0xAB93, 'M', 'Ꮓ'), - (0xAB94, 'M', 'Ꮔ'), - (0xAB95, 'M', 'Ꮕ'), - (0xAB96, 'M', 'Ꮖ'), - (0xAB97, 'M', 'Ꮗ'), - (0xAB98, 'M', 'Ꮘ'), - (0xAB99, 'M', 'Ꮙ'), - (0xAB9A, 'M', 'Ꮚ'), - (0xAB9B, 'M', 'Ꮛ'), - (0xAB9C, 'M', 'Ꮜ'), - (0xAB9D, 'M', 'Ꮝ'), - (0xAB9E, 'M', 'Ꮞ'), - (0xAB9F, 'M', 'Ꮟ'), - (0xABA0, 'M', 'Ꮠ'), - (0xABA1, 'M', 'Ꮡ'), - (0xABA2, 'M', 'Ꮢ'), - (0xABA3, 'M', 'Ꮣ'), - (0xABA4, 'M', 'Ꮤ'), - (0xABA5, 'M', 'Ꮥ'), - (0xABA6, 'M', 'Ꮦ'), - (0xABA7, 'M', 'Ꮧ'), - (0xABA8, 'M', 'Ꮨ'), - (0xABA9, 'M', 'Ꮩ'), - (0xABAA, 'M', 'Ꮪ'), + (0xA95F, "V"), + (0xA97D, "X"), + (0xA980, "V"), + (0xA9CE, "X"), + (0xA9CF, "V"), + (0xA9DA, "X"), + (0xA9DE, "V"), + (0xA9FF, "X"), + (0xAA00, "V"), + (0xAA37, "X"), + (0xAA40, "V"), + (0xAA4E, "X"), + (0xAA50, "V"), + (0xAA5A, "X"), + (0xAA5C, "V"), + (0xAAC3, "X"), + (0xAADB, "V"), + (0xAAF7, "X"), + (0xAB01, "V"), + (0xAB07, "X"), + (0xAB09, "V"), + (0xAB0F, "X"), + (0xAB11, "V"), + (0xAB17, "X"), + (0xAB20, "V"), + (0xAB27, "X"), + (0xAB28, "V"), + (0xAB2F, "X"), + (0xAB30, "V"), + (0xAB5C, "M", "ꜧ"), + (0xAB5D, "M", "ꬷ"), + (0xAB5E, "M", "ɫ"), + (0xAB5F, "M", "ꭒ"), + (0xAB60, "V"), + (0xAB69, "M", "ʍ"), + (0xAB6A, "V"), + (0xAB6C, "X"), + (0xAB70, "M", "Ꭰ"), + (0xAB71, "M", "Ꭱ"), + (0xAB72, "M", "Ꭲ"), + (0xAB73, "M", "Ꭳ"), + (0xAB74, "M", "Ꭴ"), + (0xAB75, "M", "Ꭵ"), + (0xAB76, "M", "Ꭶ"), + (0xAB77, "M", "Ꭷ"), + (0xAB78, "M", "Ꭸ"), + (0xAB79, "M", "Ꭹ"), + (0xAB7A, "M", "Ꭺ"), + (0xAB7B, "M", "Ꭻ"), + (0xAB7C, "M", "Ꭼ"), + (0xAB7D, "M", "Ꭽ"), + (0xAB7E, "M", "Ꭾ"), + (0xAB7F, "M", "Ꭿ"), + (0xAB80, "M", "Ꮀ"), + (0xAB81, "M", "Ꮁ"), + (0xAB82, "M", "Ꮂ"), + (0xAB83, "M", "Ꮃ"), + (0xAB84, "M", "Ꮄ"), + (0xAB85, "M", "Ꮅ"), + (0xAB86, "M", "Ꮆ"), + (0xAB87, "M", "Ꮇ"), + (0xAB88, "M", "Ꮈ"), + (0xAB89, "M", "Ꮉ"), + (0xAB8A, "M", "Ꮊ"), + (0xAB8B, "M", "Ꮋ"), + (0xAB8C, "M", "Ꮌ"), + (0xAB8D, "M", "Ꮍ"), + (0xAB8E, "M", "Ꮎ"), + (0xAB8F, "M", "Ꮏ"), + (0xAB90, "M", "Ꮐ"), + (0xAB91, "M", "Ꮑ"), + (0xAB92, "M", "Ꮒ"), + (0xAB93, "M", "Ꮓ"), + (0xAB94, "M", "Ꮔ"), + (0xAB95, "M", "Ꮕ"), + (0xAB96, "M", "Ꮖ"), + (0xAB97, "M", "Ꮗ"), + (0xAB98, "M", "Ꮘ"), + (0xAB99, "M", "Ꮙ"), + (0xAB9A, "M", "Ꮚ"), + (0xAB9B, "M", "Ꮛ"), + (0xAB9C, "M", "Ꮜ"), + (0xAB9D, "M", "Ꮝ"), + (0xAB9E, "M", "Ꮞ"), + (0xAB9F, "M", "Ꮟ"), + (0xABA0, "M", "Ꮠ"), + (0xABA1, "M", "Ꮡ"), + (0xABA2, "M", "Ꮢ"), + (0xABA3, "M", "Ꮣ"), + (0xABA4, "M", "Ꮤ"), + (0xABA5, "M", "Ꮥ"), + (0xABA6, "M", "Ꮦ"), + (0xABA7, "M", "Ꮧ"), + (0xABA8, "M", "Ꮨ"), + (0xABA9, "M", "Ꮩ"), + (0xABAA, "M", "Ꮪ"), + (0xABAB, "M", "Ꮫ"), + (0xABAC, "M", "Ꮬ"), + (0xABAD, "M", "Ꮭ"), + (0xABAE, "M", "Ꮮ"), ] + def _seg_39() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: return [ - (0xABAB, 'M', 'Ꮫ'), - (0xABAC, 'M', 'Ꮬ'), - (0xABAD, 'M', 'Ꮭ'), - (0xABAE, 'M', 'Ꮮ'), - (0xABAF, 'M', 'Ꮯ'), - (0xABB0, 'M', 'Ꮰ'), - (0xABB1, 'M', 'Ꮱ'), - (0xABB2, 'M', 'Ꮲ'), - (0xABB3, 'M', 'Ꮳ'), - (0xABB4, 'M', 'Ꮴ'), - (0xABB5, 'M', 'Ꮵ'), - (0xABB6, 'M', 'Ꮶ'), - (0xABB7, 'M', 'Ꮷ'), - (0xABB8, 'M', 'Ꮸ'), - (0xABB9, 'M', 'Ꮹ'), - (0xABBA, 'M', 'Ꮺ'), - (0xABBB, 'M', 'Ꮻ'), - (0xABBC, 'M', 'Ꮼ'), - (0xABBD, 'M', 'Ꮽ'), - (0xABBE, 'M', 'Ꮾ'), - (0xABBF, 'M', 'Ꮿ'), - (0xABC0, 'V'), - (0xABEE, 'X'), - (0xABF0, 'V'), - (0xABFA, 'X'), - (0xAC00, 'V'), - (0xD7A4, 'X'), - (0xD7B0, 'V'), - (0xD7C7, 'X'), - (0xD7CB, 'V'), - (0xD7FC, 'X'), - (0xF900, 'M', '豈'), - (0xF901, 'M', '更'), - (0xF902, 'M', '車'), - (0xF903, 'M', '賈'), - (0xF904, 'M', '滑'), - (0xF905, 'M', '串'), - (0xF906, 'M', '句'), - (0xF907, 'M', '龜'), - (0xF909, 'M', '契'), - (0xF90A, 'M', '金'), - (0xF90B, 'M', '喇'), - (0xF90C, 'M', '奈'), - (0xF90D, 'M', '懶'), - (0xF90E, 'M', '癩'), - (0xF90F, 'M', '羅'), - (0xF910, 'M', '蘿'), - (0xF911, 'M', '螺'), - (0xF912, 'M', '裸'), - (0xF913, 'M', '邏'), - (0xF914, 'M', '樂'), - (0xF915, 'M', '洛'), - (0xF916, 'M', '烙'), - (0xF917, 'M', '珞'), - (0xF918, 'M', '落'), - (0xF919, 'M', '酪'), - (0xF91A, 'M', '駱'), - (0xF91B, 'M', '亂'), - (0xF91C, 'M', '卵'), - (0xF91D, 'M', '欄'), - (0xF91E, 'M', '爛'), - (0xF91F, 'M', '蘭'), - (0xF920, 'M', '鸞'), - (0xF921, 'M', '嵐'), - (0xF922, 'M', '濫'), - (0xF923, 'M', '藍'), - (0xF924, 'M', '襤'), - (0xF925, 'M', '拉'), - (0xF926, 'M', '臘'), - (0xF927, 'M', '蠟'), - (0xF928, 'M', '廊'), - (0xF929, 'M', '朗'), - (0xF92A, 'M', '浪'), - (0xF92B, 'M', '狼'), - (0xF92C, 'M', '郎'), - (0xF92D, 'M', '來'), - (0xF92E, 'M', '冷'), - (0xF92F, 'M', '勞'), - (0xF930, 'M', '擄'), - (0xF931, 'M', '櫓'), - (0xF932, 'M', '爐'), - (0xF933, 'M', '盧'), - (0xF934, 'M', '老'), - (0xF935, 'M', '蘆'), - (0xF936, 'M', '虜'), - (0xF937, 'M', '路'), - (0xF938, 'M', '露'), - (0xF939, 'M', '魯'), - (0xF93A, 'M', '鷺'), - (0xF93B, 'M', '碌'), - (0xF93C, 'M', '祿'), - (0xF93D, 'M', '綠'), - (0xF93E, 'M', '菉'), - (0xF93F, 'M', '錄'), - (0xF940, 'M', '鹿'), - (0xF941, 'M', '論'), - (0xF942, 'M', '壟'), - (0xF943, 'M', '弄'), - (0xF944, 'M', '籠'), - (0xF945, 'M', '聾'), + (0xABAF, "M", "Ꮯ"), + (0xABB0, "M", "Ꮰ"), + (0xABB1, "M", "Ꮱ"), + (0xABB2, "M", "Ꮲ"), + (0xABB3, "M", "Ꮳ"), + (0xABB4, "M", "Ꮴ"), + (0xABB5, "M", "Ꮵ"), + (0xABB6, "M", "Ꮶ"), + (0xABB7, "M", "Ꮷ"), + (0xABB8, "M", "Ꮸ"), + (0xABB9, "M", "Ꮹ"), + (0xABBA, "M", "Ꮺ"), + (0xABBB, "M", "Ꮻ"), + (0xABBC, "M", "Ꮼ"), + (0xABBD, "M", "Ꮽ"), + (0xABBE, "M", "Ꮾ"), + (0xABBF, "M", "Ꮿ"), + (0xABC0, "V"), + (0xABEE, "X"), + (0xABF0, "V"), + (0xABFA, "X"), + (0xAC00, "V"), + (0xD7A4, "X"), + (0xD7B0, "V"), + (0xD7C7, "X"), + (0xD7CB, "V"), + (0xD7FC, "X"), + (0xF900, "M", "豈"), + (0xF901, "M", "更"), + (0xF902, "M", "車"), + (0xF903, "M", "賈"), + (0xF904, "M", "滑"), + (0xF905, "M", "串"), + (0xF906, "M", "句"), + (0xF907, "M", "龜"), + (0xF909, "M", "契"), + (0xF90A, "M", "金"), + (0xF90B, "M", "喇"), + (0xF90C, "M", "奈"), + (0xF90D, "M", "懶"), + (0xF90E, "M", "癩"), + (0xF90F, "M", "羅"), + (0xF910, "M", "蘿"), + (0xF911, "M", "螺"), + (0xF912, "M", "裸"), + (0xF913, "M", "邏"), + (0xF914, "M", "樂"), + (0xF915, "M", "洛"), + (0xF916, "M", "烙"), + (0xF917, "M", "珞"), + (0xF918, "M", "落"), + (0xF919, "M", "酪"), + (0xF91A, "M", "駱"), + (0xF91B, "M", "亂"), + (0xF91C, "M", "卵"), + (0xF91D, "M", "欄"), + (0xF91E, "M", "爛"), + (0xF91F, "M", "蘭"), + (0xF920, "M", "鸞"), + (0xF921, "M", "嵐"), + (0xF922, "M", "濫"), + (0xF923, "M", "藍"), + (0xF924, "M", "襤"), + (0xF925, "M", "拉"), + (0xF926, "M", "臘"), + (0xF927, "M", "蠟"), + (0xF928, "M", "廊"), + (0xF929, "M", "朗"), + (0xF92A, "M", "浪"), + (0xF92B, "M", "狼"), + (0xF92C, "M", "郎"), + (0xF92D, "M", "來"), + (0xF92E, "M", "冷"), + (0xF92F, "M", "勞"), + (0xF930, "M", "擄"), + (0xF931, "M", "櫓"), + (0xF932, "M", "爐"), + (0xF933, "M", "盧"), + (0xF934, "M", "老"), + (0xF935, "M", "蘆"), + (0xF936, "M", "虜"), + (0xF937, "M", "路"), + (0xF938, "M", "露"), + (0xF939, "M", "魯"), + (0xF93A, "M", "鷺"), + (0xF93B, "M", "碌"), + (0xF93C, "M", "祿"), + (0xF93D, "M", "綠"), + (0xF93E, "M", "菉"), + (0xF93F, "M", "錄"), + (0xF940, "M", "鹿"), + (0xF941, "M", "論"), + (0xF942, "M", "壟"), + (0xF943, "M", "弄"), + (0xF944, "M", "籠"), + (0xF945, "M", "聾"), + (0xF946, "M", "牢"), + (0xF947, "M", "磊"), + (0xF948, "M", "賂"), + (0xF949, "M", "雷"), ] + def _seg_40() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: return [ - (0xF946, 'M', '牢'), - (0xF947, 'M', '磊'), - (0xF948, 'M', '賂'), - (0xF949, 'M', '雷'), - (0xF94A, 'M', '壘'), - (0xF94B, 'M', '屢'), - (0xF94C, 'M', '樓'), - (0xF94D, 'M', '淚'), - (0xF94E, 'M', '漏'), - (0xF94F, 'M', '累'), - (0xF950, 'M', '縷'), - (0xF951, 'M', '陋'), - (0xF952, 'M', '勒'), - (0xF953, 'M', '肋'), - (0xF954, 'M', '凜'), - (0xF955, 'M', '凌'), - (0xF956, 'M', '稜'), - (0xF957, 'M', '綾'), - (0xF958, 'M', '菱'), - (0xF959, 'M', '陵'), - (0xF95A, 'M', '讀'), - (0xF95B, 'M', '拏'), - (0xF95C, 'M', '樂'), - (0xF95D, 'M', '諾'), - (0xF95E, 'M', '丹'), - (0xF95F, 'M', '寧'), - (0xF960, 'M', '怒'), - (0xF961, 'M', '率'), - (0xF962, 'M', '異'), - (0xF963, 'M', '北'), - (0xF964, 'M', '磻'), - (0xF965, 'M', '便'), - (0xF966, 'M', '復'), - (0xF967, 'M', '不'), - (0xF968, 'M', '泌'), - (0xF969, 'M', '數'), - (0xF96A, 'M', '索'), - (0xF96B, 'M', '參'), - (0xF96C, 'M', '塞'), - (0xF96D, 'M', '省'), - (0xF96E, 'M', '葉'), - (0xF96F, 'M', '說'), - (0xF970, 'M', '殺'), - (0xF971, 'M', '辰'), - (0xF972, 'M', '沈'), - (0xF973, 'M', '拾'), - (0xF974, 'M', '若'), - (0xF975, 'M', '掠'), - (0xF976, 'M', '略'), - (0xF977, 'M', '亮'), - (0xF978, 'M', '兩'), - (0xF979, 'M', '凉'), - (0xF97A, 'M', '梁'), - (0xF97B, 'M', '糧'), - (0xF97C, 'M', '良'), - (0xF97D, 'M', '諒'), - (0xF97E, 'M', '量'), - (0xF97F, 'M', '勵'), - (0xF980, 'M', '呂'), - (0xF981, 'M', '女'), - (0xF982, 'M', '廬'), - (0xF983, 'M', '旅'), - (0xF984, 'M', '濾'), - (0xF985, 'M', '礪'), - (0xF986, 'M', '閭'), - (0xF987, 'M', '驪'), - (0xF988, 'M', '麗'), - (0xF989, 'M', '黎'), - (0xF98A, 'M', '力'), - (0xF98B, 'M', '曆'), - (0xF98C, 'M', '歷'), - (0xF98D, 'M', '轢'), - (0xF98E, 'M', '年'), - (0xF98F, 'M', '憐'), - (0xF990, 'M', '戀'), - (0xF991, 'M', '撚'), - (0xF992, 'M', '漣'), - (0xF993, 'M', '煉'), - (0xF994, 'M', '璉'), - (0xF995, 'M', '秊'), - (0xF996, 'M', '練'), - (0xF997, 'M', '聯'), - (0xF998, 'M', '輦'), - (0xF999, 'M', '蓮'), - (0xF99A, 'M', '連'), - (0xF99B, 'M', '鍊'), - (0xF99C, 'M', '列'), - (0xF99D, 'M', '劣'), - (0xF99E, 'M', '咽'), - (0xF99F, 'M', '烈'), - (0xF9A0, 'M', '裂'), - (0xF9A1, 'M', '說'), - (0xF9A2, 'M', '廉'), - (0xF9A3, 'M', '念'), - (0xF9A4, 'M', '捻'), - (0xF9A5, 'M', '殮'), - (0xF9A6, 'M', '簾'), - (0xF9A7, 'M', '獵'), - (0xF9A8, 'M', '令'), - (0xF9A9, 'M', '囹'), + (0xF94A, "M", "壘"), + (0xF94B, "M", "屢"), + (0xF94C, "M", "樓"), + (0xF94D, "M", "淚"), + (0xF94E, "M", "漏"), + (0xF94F, "M", "累"), + (0xF950, "M", "縷"), + (0xF951, "M", "陋"), + (0xF952, "M", "勒"), + (0xF953, "M", "肋"), + (0xF954, "M", "凜"), + (0xF955, "M", "凌"), + (0xF956, "M", "稜"), + (0xF957, "M", "綾"), + (0xF958, "M", "菱"), + (0xF959, "M", "陵"), + (0xF95A, "M", "讀"), + (0xF95B, "M", "拏"), + (0xF95C, "M", "樂"), + (0xF95D, "M", "諾"), + (0xF95E, "M", "丹"), + (0xF95F, "M", "寧"), + (0xF960, "M", "怒"), + (0xF961, "M", "率"), + (0xF962, "M", "異"), + (0xF963, "M", "北"), + (0xF964, "M", "磻"), + (0xF965, "M", "便"), + (0xF966, "M", "復"), + (0xF967, "M", "不"), + (0xF968, "M", "泌"), + (0xF969, "M", "數"), + (0xF96A, "M", "索"), + (0xF96B, "M", "參"), + (0xF96C, "M", "塞"), + (0xF96D, "M", "省"), + (0xF96E, "M", "葉"), + (0xF96F, "M", "說"), + (0xF970, "M", "殺"), + (0xF971, "M", "辰"), + (0xF972, "M", "沈"), + (0xF973, "M", "拾"), + (0xF974, "M", "若"), + (0xF975, "M", "掠"), + (0xF976, "M", "略"), + (0xF977, "M", "亮"), + (0xF978, "M", "兩"), + (0xF979, "M", "凉"), + (0xF97A, "M", "梁"), + (0xF97B, "M", "糧"), + (0xF97C, "M", "良"), + (0xF97D, "M", "諒"), + (0xF97E, "M", "量"), + (0xF97F, "M", "勵"), + (0xF980, "M", "呂"), + (0xF981, "M", "女"), + (0xF982, "M", "廬"), + (0xF983, "M", "旅"), + (0xF984, "M", "濾"), + (0xF985, "M", "礪"), + (0xF986, "M", "閭"), + (0xF987, "M", "驪"), + (0xF988, "M", "麗"), + (0xF989, "M", "黎"), + (0xF98A, "M", "力"), + (0xF98B, "M", "曆"), + (0xF98C, "M", "歷"), + (0xF98D, "M", "轢"), + (0xF98E, "M", "年"), + (0xF98F, "M", "憐"), + (0xF990, "M", "戀"), + (0xF991, "M", "撚"), + (0xF992, "M", "漣"), + (0xF993, "M", "煉"), + (0xF994, "M", "璉"), + (0xF995, "M", "秊"), + (0xF996, "M", "練"), + (0xF997, "M", "聯"), + (0xF998, "M", "輦"), + (0xF999, "M", "蓮"), + (0xF99A, "M", "連"), + (0xF99B, "M", "鍊"), + (0xF99C, "M", "列"), + (0xF99D, "M", "劣"), + (0xF99E, "M", "咽"), + (0xF99F, "M", "烈"), + (0xF9A0, "M", "裂"), + (0xF9A1, "M", "說"), + (0xF9A2, "M", "廉"), + (0xF9A3, "M", "念"), + (0xF9A4, "M", "捻"), + (0xF9A5, "M", "殮"), + (0xF9A6, "M", "簾"), + (0xF9A7, "M", "獵"), + (0xF9A8, "M", "令"), + (0xF9A9, "M", "囹"), + (0xF9AA, "M", "寧"), + (0xF9AB, "M", "嶺"), + (0xF9AC, "M", "怜"), + (0xF9AD, "M", "玲"), ] + def _seg_41() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: return [ - (0xF9AA, 'M', '寧'), - (0xF9AB, 'M', '嶺'), - (0xF9AC, 'M', '怜'), - (0xF9AD, 'M', '玲'), - (0xF9AE, 'M', '瑩'), - (0xF9AF, 'M', '羚'), - (0xF9B0, 'M', '聆'), - (0xF9B1, 'M', '鈴'), - (0xF9B2, 'M', '零'), - (0xF9B3, 'M', '靈'), - (0xF9B4, 'M', '領'), - (0xF9B5, 'M', '例'), - (0xF9B6, 'M', '禮'), - (0xF9B7, 'M', '醴'), - (0xF9B8, 'M', '隸'), - (0xF9B9, 'M', '惡'), - (0xF9BA, 'M', '了'), - (0xF9BB, 'M', '僚'), - (0xF9BC, 'M', '寮'), - (0xF9BD, 'M', '尿'), - (0xF9BE, 'M', '料'), - (0xF9BF, 'M', '樂'), - (0xF9C0, 'M', '燎'), - (0xF9C1, 'M', '療'), - (0xF9C2, 'M', '蓼'), - (0xF9C3, 'M', '遼'), - (0xF9C4, 'M', '龍'), - (0xF9C5, 'M', '暈'), - (0xF9C6, 'M', '阮'), - (0xF9C7, 'M', '劉'), - (0xF9C8, 'M', '杻'), - (0xF9C9, 'M', '柳'), - (0xF9CA, 'M', '流'), - (0xF9CB, 'M', '溜'), - (0xF9CC, 'M', '琉'), - (0xF9CD, 'M', '留'), - (0xF9CE, 'M', '硫'), - (0xF9CF, 'M', '紐'), - (0xF9D0, 'M', '類'), - (0xF9D1, 'M', '六'), - (0xF9D2, 'M', '戮'), - (0xF9D3, 'M', '陸'), - (0xF9D4, 'M', '倫'), - (0xF9D5, 'M', '崙'), - (0xF9D6, 'M', '淪'), - (0xF9D7, 'M', '輪'), - (0xF9D8, 'M', '律'), - (0xF9D9, 'M', '慄'), - (0xF9DA, 'M', '栗'), - (0xF9DB, 'M', '率'), - (0xF9DC, 'M', '隆'), - (0xF9DD, 'M', '利'), - (0xF9DE, 'M', '吏'), - (0xF9DF, 'M', '履'), - (0xF9E0, 'M', '易'), - (0xF9E1, 'M', '李'), - (0xF9E2, 'M', '梨'), - (0xF9E3, 'M', '泥'), - (0xF9E4, 'M', '理'), - (0xF9E5, 'M', '痢'), - (0xF9E6, 'M', '罹'), - (0xF9E7, 'M', '裏'), - (0xF9E8, 'M', '裡'), - (0xF9E9, 'M', '里'), - (0xF9EA, 'M', '離'), - (0xF9EB, 'M', '匿'), - (0xF9EC, 'M', '溺'), - (0xF9ED, 'M', '吝'), - (0xF9EE, 'M', '燐'), - (0xF9EF, 'M', '璘'), - (0xF9F0, 'M', '藺'), - (0xF9F1, 'M', '隣'), - (0xF9F2, 'M', '鱗'), - (0xF9F3, 'M', '麟'), - (0xF9F4, 'M', '林'), - (0xF9F5, 'M', '淋'), - (0xF9F6, 'M', '臨'), - (0xF9F7, 'M', '立'), - (0xF9F8, 'M', '笠'), - (0xF9F9, 'M', '粒'), - (0xF9FA, 'M', '狀'), - (0xF9FB, 'M', '炙'), - (0xF9FC, 'M', '識'), - (0xF9FD, 'M', '什'), - (0xF9FE, 'M', '茶'), - (0xF9FF, 'M', '刺'), - (0xFA00, 'M', '切'), - (0xFA01, 'M', '度'), - (0xFA02, 'M', '拓'), - (0xFA03, 'M', '糖'), - (0xFA04, 'M', '宅'), - (0xFA05, 'M', '洞'), - (0xFA06, 'M', '暴'), - (0xFA07, 'M', '輻'), - (0xFA08, 'M', '行'), - (0xFA09, 'M', '降'), - (0xFA0A, 'M', '見'), - (0xFA0B, 'M', '廓'), - (0xFA0C, 'M', '兀'), - (0xFA0D, 'M', '嗀'), + (0xF9AE, "M", "瑩"), + (0xF9AF, "M", "羚"), + (0xF9B0, "M", "聆"), + (0xF9B1, "M", "鈴"), + (0xF9B2, "M", "零"), + (0xF9B3, "M", "靈"), + (0xF9B4, "M", "領"), + (0xF9B5, "M", "例"), + (0xF9B6, "M", "禮"), + (0xF9B7, "M", "醴"), + (0xF9B8, "M", "隸"), + (0xF9B9, "M", "惡"), + (0xF9BA, "M", "了"), + (0xF9BB, "M", "僚"), + (0xF9BC, "M", "寮"), + (0xF9BD, "M", "尿"), + (0xF9BE, "M", "料"), + (0xF9BF, "M", "樂"), + (0xF9C0, "M", "燎"), + (0xF9C1, "M", "療"), + (0xF9C2, "M", "蓼"), + (0xF9C3, "M", "遼"), + (0xF9C4, "M", "龍"), + (0xF9C5, "M", "暈"), + (0xF9C6, "M", "阮"), + (0xF9C7, "M", "劉"), + (0xF9C8, "M", "杻"), + (0xF9C9, "M", "柳"), + (0xF9CA, "M", "流"), + (0xF9CB, "M", "溜"), + (0xF9CC, "M", "琉"), + (0xF9CD, "M", "留"), + (0xF9CE, "M", "硫"), + (0xF9CF, "M", "紐"), + (0xF9D0, "M", "類"), + (0xF9D1, "M", "六"), + (0xF9D2, "M", "戮"), + (0xF9D3, "M", "陸"), + (0xF9D4, "M", "倫"), + (0xF9D5, "M", "崙"), + (0xF9D6, "M", "淪"), + (0xF9D7, "M", "輪"), + (0xF9D8, "M", "律"), + (0xF9D9, "M", "慄"), + (0xF9DA, "M", "栗"), + (0xF9DB, "M", "率"), + (0xF9DC, "M", "隆"), + (0xF9DD, "M", "利"), + (0xF9DE, "M", "吏"), + (0xF9DF, "M", "履"), + (0xF9E0, "M", "易"), + (0xF9E1, "M", "李"), + (0xF9E2, "M", "梨"), + (0xF9E3, "M", "泥"), + (0xF9E4, "M", "理"), + (0xF9E5, "M", "痢"), + (0xF9E6, "M", "罹"), + (0xF9E7, "M", "裏"), + (0xF9E8, "M", "裡"), + (0xF9E9, "M", "里"), + (0xF9EA, "M", "離"), + (0xF9EB, "M", "匿"), + (0xF9EC, "M", "溺"), + (0xF9ED, "M", "吝"), + (0xF9EE, "M", "燐"), + (0xF9EF, "M", "璘"), + (0xF9F0, "M", "藺"), + (0xF9F1, "M", "隣"), + (0xF9F2, "M", "鱗"), + (0xF9F3, "M", "麟"), + (0xF9F4, "M", "林"), + (0xF9F5, "M", "淋"), + (0xF9F6, "M", "臨"), + (0xF9F7, "M", "立"), + (0xF9F8, "M", "笠"), + (0xF9F9, "M", "粒"), + (0xF9FA, "M", "狀"), + (0xF9FB, "M", "炙"), + (0xF9FC, "M", "識"), + (0xF9FD, "M", "什"), + (0xF9FE, "M", "茶"), + (0xF9FF, "M", "刺"), + (0xFA00, "M", "切"), + (0xFA01, "M", "度"), + (0xFA02, "M", "拓"), + (0xFA03, "M", "糖"), + (0xFA04, "M", "宅"), + (0xFA05, "M", "洞"), + (0xFA06, "M", "暴"), + (0xFA07, "M", "輻"), + (0xFA08, "M", "行"), + (0xFA09, "M", "降"), + (0xFA0A, "M", "見"), + (0xFA0B, "M", "廓"), + (0xFA0C, "M", "兀"), + (0xFA0D, "M", "嗀"), + (0xFA0E, "V"), + (0xFA10, "M", "塚"), + (0xFA11, "V"), + (0xFA12, "M", "晴"), ] + def _seg_42() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: return [ - (0xFA0E, 'V'), - (0xFA10, 'M', '塚'), - (0xFA11, 'V'), - (0xFA12, 'M', '晴'), - (0xFA13, 'V'), - (0xFA15, 'M', '凞'), - (0xFA16, 'M', '猪'), - (0xFA17, 'M', '益'), - (0xFA18, 'M', '礼'), - (0xFA19, 'M', '神'), - (0xFA1A, 'M', '祥'), - (0xFA1B, 'M', '福'), - (0xFA1C, 'M', '靖'), - (0xFA1D, 'M', '精'), - (0xFA1E, 'M', '羽'), - (0xFA1F, 'V'), - (0xFA20, 'M', '蘒'), - (0xFA21, 'V'), - (0xFA22, 'M', '諸'), - (0xFA23, 'V'), - (0xFA25, 'M', '逸'), - (0xFA26, 'M', '都'), - (0xFA27, 'V'), - (0xFA2A, 'M', '飯'), - (0xFA2B, 'M', '飼'), - (0xFA2C, 'M', '館'), - (0xFA2D, 'M', '鶴'), - (0xFA2E, 'M', '郞'), - (0xFA2F, 'M', '隷'), - (0xFA30, 'M', '侮'), - (0xFA31, 'M', '僧'), - (0xFA32, 'M', '免'), - (0xFA33, 'M', '勉'), - (0xFA34, 'M', '勤'), - (0xFA35, 'M', '卑'), - (0xFA36, 'M', '喝'), - (0xFA37, 'M', '嘆'), - (0xFA38, 'M', '器'), - (0xFA39, 'M', '塀'), - (0xFA3A, 'M', '墨'), - (0xFA3B, 'M', '層'), - (0xFA3C, 'M', '屮'), - (0xFA3D, 'M', '悔'), - (0xFA3E, 'M', '慨'), - (0xFA3F, 'M', '憎'), - (0xFA40, 'M', '懲'), - (0xFA41, 'M', '敏'), - (0xFA42, 'M', '既'), - (0xFA43, 'M', '暑'), - (0xFA44, 'M', '梅'), - (0xFA45, 'M', '海'), - (0xFA46, 'M', '渚'), - (0xFA47, 'M', '漢'), - (0xFA48, 'M', '煮'), - (0xFA49, 'M', '爫'), - (0xFA4A, 'M', '琢'), - (0xFA4B, 'M', '碑'), - (0xFA4C, 'M', '社'), - (0xFA4D, 'M', '祉'), - (0xFA4E, 'M', '祈'), - (0xFA4F, 'M', '祐'), - (0xFA50, 'M', '祖'), - (0xFA51, 'M', '祝'), - (0xFA52, 'M', '禍'), - (0xFA53, 'M', '禎'), - (0xFA54, 'M', '穀'), - (0xFA55, 'M', '突'), - (0xFA56, 'M', '節'), - (0xFA57, 'M', '練'), - (0xFA58, 'M', '縉'), - (0xFA59, 'M', '繁'), - (0xFA5A, 'M', '署'), - (0xFA5B, 'M', '者'), - (0xFA5C, 'M', '臭'), - (0xFA5D, 'M', '艹'), - (0xFA5F, 'M', '著'), - (0xFA60, 'M', '褐'), - (0xFA61, 'M', '視'), - (0xFA62, 'M', '謁'), - (0xFA63, 'M', '謹'), - (0xFA64, 'M', '賓'), - (0xFA65, 'M', '贈'), - (0xFA66, 'M', '辶'), - (0xFA67, 'M', '逸'), - (0xFA68, 'M', '難'), - (0xFA69, 'M', '響'), - (0xFA6A, 'M', '頻'), - (0xFA6B, 'M', '恵'), - (0xFA6C, 'M', '𤋮'), - (0xFA6D, 'M', '舘'), - (0xFA6E, 'X'), - (0xFA70, 'M', '並'), - (0xFA71, 'M', '况'), - (0xFA72, 'M', '全'), - (0xFA73, 'M', '侀'), - (0xFA74, 'M', '充'), - (0xFA75, 'M', '冀'), - (0xFA76, 'M', '勇'), - (0xFA77, 'M', '勺'), - (0xFA78, 'M', '喝'), + (0xFA13, "V"), + (0xFA15, "M", "凞"), + (0xFA16, "M", "猪"), + (0xFA17, "M", "益"), + (0xFA18, "M", "礼"), + (0xFA19, "M", "神"), + (0xFA1A, "M", "祥"), + (0xFA1B, "M", "福"), + (0xFA1C, "M", "靖"), + (0xFA1D, "M", "精"), + (0xFA1E, "M", "羽"), + (0xFA1F, "V"), + (0xFA20, "M", "蘒"), + (0xFA21, "V"), + (0xFA22, "M", "諸"), + (0xFA23, "V"), + (0xFA25, "M", "逸"), + (0xFA26, "M", "都"), + (0xFA27, "V"), + (0xFA2A, "M", "飯"), + (0xFA2B, "M", "飼"), + (0xFA2C, "M", "館"), + (0xFA2D, "M", "鶴"), + (0xFA2E, "M", "郞"), + (0xFA2F, "M", "隷"), + (0xFA30, "M", "侮"), + (0xFA31, "M", "僧"), + (0xFA32, "M", "免"), + (0xFA33, "M", "勉"), + (0xFA34, "M", "勤"), + (0xFA35, "M", "卑"), + (0xFA36, "M", "喝"), + (0xFA37, "M", "嘆"), + (0xFA38, "M", "器"), + (0xFA39, "M", "塀"), + (0xFA3A, "M", "墨"), + (0xFA3B, "M", "層"), + (0xFA3C, "M", "屮"), + (0xFA3D, "M", "悔"), + (0xFA3E, "M", "慨"), + (0xFA3F, "M", "憎"), + (0xFA40, "M", "懲"), + (0xFA41, "M", "敏"), + (0xFA42, "M", "既"), + (0xFA43, "M", "暑"), + (0xFA44, "M", "梅"), + (0xFA45, "M", "海"), + (0xFA46, "M", "渚"), + (0xFA47, "M", "漢"), + (0xFA48, "M", "煮"), + (0xFA49, "M", "爫"), + (0xFA4A, "M", "琢"), + (0xFA4B, "M", "碑"), + (0xFA4C, "M", "社"), + (0xFA4D, "M", "祉"), + (0xFA4E, "M", "祈"), + (0xFA4F, "M", "祐"), + (0xFA50, "M", "祖"), + (0xFA51, "M", "祝"), + (0xFA52, "M", "禍"), + (0xFA53, "M", "禎"), + (0xFA54, "M", "穀"), + (0xFA55, "M", "突"), + (0xFA56, "M", "節"), + (0xFA57, "M", "練"), + (0xFA58, "M", "縉"), + (0xFA59, "M", "繁"), + (0xFA5A, "M", "署"), + (0xFA5B, "M", "者"), + (0xFA5C, "M", "臭"), + (0xFA5D, "M", "艹"), + (0xFA5F, "M", "著"), + (0xFA60, "M", "褐"), + (0xFA61, "M", "視"), + (0xFA62, "M", "謁"), + (0xFA63, "M", "謹"), + (0xFA64, "M", "賓"), + (0xFA65, "M", "贈"), + (0xFA66, "M", "辶"), + (0xFA67, "M", "逸"), + (0xFA68, "M", "難"), + (0xFA69, "M", "響"), + (0xFA6A, "M", "頻"), + (0xFA6B, "M", "恵"), + (0xFA6C, "M", "𤋮"), + (0xFA6D, "M", "舘"), + (0xFA6E, "X"), + (0xFA70, "M", "並"), + (0xFA71, "M", "况"), + (0xFA72, "M", "全"), + (0xFA73, "M", "侀"), + (0xFA74, "M", "充"), + (0xFA75, "M", "冀"), + (0xFA76, "M", "勇"), + (0xFA77, "M", "勺"), + (0xFA78, "M", "喝"), + (0xFA79, "M", "啕"), + (0xFA7A, "M", "喙"), + (0xFA7B, "M", "嗢"), + (0xFA7C, "M", "塚"), ] + def _seg_43() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: return [ - (0xFA79, 'M', '啕'), - (0xFA7A, 'M', '喙'), - (0xFA7B, 'M', '嗢'), - (0xFA7C, 'M', '塚'), - (0xFA7D, 'M', '墳'), - (0xFA7E, 'M', '奄'), - (0xFA7F, 'M', '奔'), - (0xFA80, 'M', '婢'), - (0xFA81, 'M', '嬨'), - (0xFA82, 'M', '廒'), - (0xFA83, 'M', '廙'), - (0xFA84, 'M', '彩'), - (0xFA85, 'M', '徭'), - (0xFA86, 'M', '惘'), - (0xFA87, 'M', '慎'), - (0xFA88, 'M', '愈'), - (0xFA89, 'M', '憎'), - (0xFA8A, 'M', '慠'), - (0xFA8B, 'M', '懲'), - (0xFA8C, 'M', '戴'), - (0xFA8D, 'M', '揄'), - (0xFA8E, 'M', '搜'), - (0xFA8F, 'M', '摒'), - (0xFA90, 'M', '敖'), - (0xFA91, 'M', '晴'), - (0xFA92, 'M', '朗'), - (0xFA93, 'M', '望'), - (0xFA94, 'M', '杖'), - (0xFA95, 'M', '歹'), - (0xFA96, 'M', '殺'), - (0xFA97, 'M', '流'), - (0xFA98, 'M', '滛'), - (0xFA99, 'M', '滋'), - (0xFA9A, 'M', '漢'), - (0xFA9B, 'M', '瀞'), - (0xFA9C, 'M', '煮'), - (0xFA9D, 'M', '瞧'), - (0xFA9E, 'M', '爵'), - (0xFA9F, 'M', '犯'), - (0xFAA0, 'M', '猪'), - (0xFAA1, 'M', '瑱'), - (0xFAA2, 'M', '甆'), - (0xFAA3, 'M', '画'), - (0xFAA4, 'M', '瘝'), - (0xFAA5, 'M', '瘟'), - (0xFAA6, 'M', '益'), - (0xFAA7, 'M', '盛'), - (0xFAA8, 'M', '直'), - (0xFAA9, 'M', '睊'), - (0xFAAA, 'M', '着'), - (0xFAAB, 'M', '磌'), - (0xFAAC, 'M', '窱'), - (0xFAAD, 'M', '節'), - (0xFAAE, 'M', '类'), - (0xFAAF, 'M', '絛'), - (0xFAB0, 'M', '練'), - (0xFAB1, 'M', '缾'), - (0xFAB2, 'M', '者'), - (0xFAB3, 'M', '荒'), - (0xFAB4, 'M', '華'), - (0xFAB5, 'M', '蝹'), - (0xFAB6, 'M', '襁'), - (0xFAB7, 'M', '覆'), - (0xFAB8, 'M', '視'), - (0xFAB9, 'M', '調'), - (0xFABA, 'M', '諸'), - (0xFABB, 'M', '請'), - (0xFABC, 'M', '謁'), - (0xFABD, 'M', '諾'), - (0xFABE, 'M', '諭'), - (0xFABF, 'M', '謹'), - (0xFAC0, 'M', '變'), - (0xFAC1, 'M', '贈'), - (0xFAC2, 'M', '輸'), - (0xFAC3, 'M', '遲'), - (0xFAC4, 'M', '醙'), - (0xFAC5, 'M', '鉶'), - (0xFAC6, 'M', '陼'), - (0xFAC7, 'M', '難'), - (0xFAC8, 'M', '靖'), - (0xFAC9, 'M', '韛'), - (0xFACA, 'M', '響'), - (0xFACB, 'M', '頋'), - (0xFACC, 'M', '頻'), - (0xFACD, 'M', '鬒'), - (0xFACE, 'M', '龜'), - (0xFACF, 'M', '𢡊'), - (0xFAD0, 'M', '𢡄'), - (0xFAD1, 'M', '𣏕'), - (0xFAD2, 'M', '㮝'), - (0xFAD3, 'M', '䀘'), - (0xFAD4, 'M', '䀹'), - (0xFAD5, 'M', '𥉉'), - (0xFAD6, 'M', '𥳐'), - (0xFAD7, 'M', '𧻓'), - (0xFAD8, 'M', '齃'), - (0xFAD9, 'M', '龎'), - (0xFADA, 'X'), - (0xFB00, 'M', 'ff'), - (0xFB01, 'M', 'fi'), + (0xFA7D, "M", "墳"), + (0xFA7E, "M", "奄"), + (0xFA7F, "M", "奔"), + (0xFA80, "M", "婢"), + (0xFA81, "M", "嬨"), + (0xFA82, "M", "廒"), + (0xFA83, "M", "廙"), + (0xFA84, "M", "彩"), + (0xFA85, "M", "徭"), + (0xFA86, "M", "惘"), + (0xFA87, "M", "慎"), + (0xFA88, "M", "愈"), + (0xFA89, "M", "憎"), + (0xFA8A, "M", "慠"), + (0xFA8B, "M", "懲"), + (0xFA8C, "M", "戴"), + (0xFA8D, "M", "揄"), + (0xFA8E, "M", "搜"), + (0xFA8F, "M", "摒"), + (0xFA90, "M", "敖"), + (0xFA91, "M", "晴"), + (0xFA92, "M", "朗"), + (0xFA93, "M", "望"), + (0xFA94, "M", "杖"), + (0xFA95, "M", "歹"), + (0xFA96, "M", "殺"), + (0xFA97, "M", "流"), + (0xFA98, "M", "滛"), + (0xFA99, "M", "滋"), + (0xFA9A, "M", "漢"), + (0xFA9B, "M", "瀞"), + (0xFA9C, "M", "煮"), + (0xFA9D, "M", "瞧"), + (0xFA9E, "M", "爵"), + (0xFA9F, "M", "犯"), + (0xFAA0, "M", "猪"), + (0xFAA1, "M", "瑱"), + (0xFAA2, "M", "甆"), + (0xFAA3, "M", "画"), + (0xFAA4, "M", "瘝"), + (0xFAA5, "M", "瘟"), + (0xFAA6, "M", "益"), + (0xFAA7, "M", "盛"), + (0xFAA8, "M", "直"), + (0xFAA9, "M", "睊"), + (0xFAAA, "M", "着"), + (0xFAAB, "M", "磌"), + (0xFAAC, "M", "窱"), + (0xFAAD, "M", "節"), + (0xFAAE, "M", "类"), + (0xFAAF, "M", "絛"), + (0xFAB0, "M", "練"), + (0xFAB1, "M", "缾"), + (0xFAB2, "M", "者"), + (0xFAB3, "M", "荒"), + (0xFAB4, "M", "華"), + (0xFAB5, "M", "蝹"), + (0xFAB6, "M", "襁"), + (0xFAB7, "M", "覆"), + (0xFAB8, "M", "視"), + (0xFAB9, "M", "調"), + (0xFABA, "M", "諸"), + (0xFABB, "M", "請"), + (0xFABC, "M", "謁"), + (0xFABD, "M", "諾"), + (0xFABE, "M", "諭"), + (0xFABF, "M", "謹"), + (0xFAC0, "M", "變"), + (0xFAC1, "M", "贈"), + (0xFAC2, "M", "輸"), + (0xFAC3, "M", "遲"), + (0xFAC4, "M", "醙"), + (0xFAC5, "M", "鉶"), + (0xFAC6, "M", "陼"), + (0xFAC7, "M", "難"), + (0xFAC8, "M", "靖"), + (0xFAC9, "M", "韛"), + (0xFACA, "M", "響"), + (0xFACB, "M", "頋"), + (0xFACC, "M", "頻"), + (0xFACD, "M", "鬒"), + (0xFACE, "M", "龜"), + (0xFACF, "M", "𢡊"), + (0xFAD0, "M", "𢡄"), + (0xFAD1, "M", "𣏕"), + (0xFAD2, "M", "㮝"), + (0xFAD3, "M", "䀘"), + (0xFAD4, "M", "䀹"), + (0xFAD5, "M", "𥉉"), + (0xFAD6, "M", "𥳐"), + (0xFAD7, "M", "𧻓"), + (0xFAD8, "M", "齃"), + (0xFAD9, "M", "龎"), + (0xFADA, "X"), + (0xFB00, "M", "ff"), + (0xFB01, "M", "fi"), + (0xFB02, "M", "fl"), + (0xFB03, "M", "ffi"), + (0xFB04, "M", "ffl"), + (0xFB05, "M", "st"), ] + def _seg_44() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: return [ - (0xFB02, 'M', 'fl'), - (0xFB03, 'M', 'ffi'), - (0xFB04, 'M', 'ffl'), - (0xFB05, 'M', 'st'), - (0xFB07, 'X'), - (0xFB13, 'M', 'մն'), - (0xFB14, 'M', 'մե'), - (0xFB15, 'M', 'մի'), - (0xFB16, 'M', 'վն'), - (0xFB17, 'M', 'մխ'), - (0xFB18, 'X'), - (0xFB1D, 'M', 'יִ'), - (0xFB1E, 'V'), - (0xFB1F, 'M', 'ײַ'), - (0xFB20, 'M', 'ע'), - (0xFB21, 'M', 'א'), - (0xFB22, 'M', 'ד'), - (0xFB23, 'M', 'ה'), - (0xFB24, 'M', 'כ'), - (0xFB25, 'M', 'ל'), - (0xFB26, 'M', 'ם'), - (0xFB27, 'M', 'ר'), - (0xFB28, 'M', 'ת'), - (0xFB29, '3', '+'), - (0xFB2A, 'M', 'שׁ'), - (0xFB2B, 'M', 'שׂ'), - (0xFB2C, 'M', 'שּׁ'), - (0xFB2D, 'M', 'שּׂ'), - (0xFB2E, 'M', 'אַ'), - (0xFB2F, 'M', 'אָ'), - (0xFB30, 'M', 'אּ'), - (0xFB31, 'M', 'בּ'), - (0xFB32, 'M', 'גּ'), - (0xFB33, 'M', 'דּ'), - (0xFB34, 'M', 'הּ'), - (0xFB35, 'M', 'וּ'), - (0xFB36, 'M', 'זּ'), - (0xFB37, 'X'), - (0xFB38, 'M', 'טּ'), - (0xFB39, 'M', 'יּ'), - (0xFB3A, 'M', 'ךּ'), - (0xFB3B, 'M', 'כּ'), - (0xFB3C, 'M', 'לּ'), - (0xFB3D, 'X'), - (0xFB3E, 'M', 'מּ'), - (0xFB3F, 'X'), - (0xFB40, 'M', 'נּ'), - (0xFB41, 'M', 'סּ'), - (0xFB42, 'X'), - (0xFB43, 'M', 'ףּ'), - (0xFB44, 'M', 'פּ'), - (0xFB45, 'X'), - (0xFB46, 'M', 'צּ'), - (0xFB47, 'M', 'קּ'), - (0xFB48, 'M', 'רּ'), - (0xFB49, 'M', 'שּ'), - (0xFB4A, 'M', 'תּ'), - (0xFB4B, 'M', 'וֹ'), - (0xFB4C, 'M', 'בֿ'), - (0xFB4D, 'M', 'כֿ'), - (0xFB4E, 'M', 'פֿ'), - (0xFB4F, 'M', 'אל'), - (0xFB50, 'M', 'ٱ'), - (0xFB52, 'M', 'ٻ'), - (0xFB56, 'M', 'پ'), - (0xFB5A, 'M', 'ڀ'), - (0xFB5E, 'M', 'ٺ'), - (0xFB62, 'M', 'ٿ'), - (0xFB66, 'M', 'ٹ'), - (0xFB6A, 'M', 'ڤ'), - (0xFB6E, 'M', 'ڦ'), - (0xFB72, 'M', 'ڄ'), - (0xFB76, 'M', 'ڃ'), - (0xFB7A, 'M', 'چ'), - (0xFB7E, 'M', 'ڇ'), - (0xFB82, 'M', 'ڍ'), - (0xFB84, 'M', 'ڌ'), - (0xFB86, 'M', 'ڎ'), - (0xFB88, 'M', 'ڈ'), - (0xFB8A, 'M', 'ژ'), - (0xFB8C, 'M', 'ڑ'), - (0xFB8E, 'M', 'ک'), - (0xFB92, 'M', 'گ'), - (0xFB96, 'M', 'ڳ'), - (0xFB9A, 'M', 'ڱ'), - (0xFB9E, 'M', 'ں'), - (0xFBA0, 'M', 'ڻ'), - (0xFBA4, 'M', 'ۀ'), - (0xFBA6, 'M', 'ہ'), - (0xFBAA, 'M', 'ھ'), - (0xFBAE, 'M', 'ے'), - (0xFBB0, 'M', 'ۓ'), - (0xFBB2, 'V'), - (0xFBC3, 'X'), - (0xFBD3, 'M', 'ڭ'), - (0xFBD7, 'M', 'ۇ'), - (0xFBD9, 'M', 'ۆ'), - (0xFBDB, 'M', 'ۈ'), - (0xFBDD, 'M', 'ۇٴ'), - (0xFBDE, 'M', 'ۋ'), + (0xFB07, "X"), + (0xFB13, "M", "մն"), + (0xFB14, "M", "մե"), + (0xFB15, "M", "մի"), + (0xFB16, "M", "վն"), + (0xFB17, "M", "մխ"), + (0xFB18, "X"), + (0xFB1D, "M", "יִ"), + (0xFB1E, "V"), + (0xFB1F, "M", "ײַ"), + (0xFB20, "M", "ע"), + (0xFB21, "M", "א"), + (0xFB22, "M", "ד"), + (0xFB23, "M", "ה"), + (0xFB24, "M", "כ"), + (0xFB25, "M", "ל"), + (0xFB26, "M", "ם"), + (0xFB27, "M", "ר"), + (0xFB28, "M", "ת"), + (0xFB29, "3", "+"), + (0xFB2A, "M", "שׁ"), + (0xFB2B, "M", "שׂ"), + (0xFB2C, "M", "שּׁ"), + (0xFB2D, "M", "שּׂ"), + (0xFB2E, "M", "אַ"), + (0xFB2F, "M", "אָ"), + (0xFB30, "M", "אּ"), + (0xFB31, "M", "בּ"), + (0xFB32, "M", "גּ"), + (0xFB33, "M", "דּ"), + (0xFB34, "M", "הּ"), + (0xFB35, "M", "וּ"), + (0xFB36, "M", "זּ"), + (0xFB37, "X"), + (0xFB38, "M", "טּ"), + (0xFB39, "M", "יּ"), + (0xFB3A, "M", "ךּ"), + (0xFB3B, "M", "כּ"), + (0xFB3C, "M", "לּ"), + (0xFB3D, "X"), + (0xFB3E, "M", "מּ"), + (0xFB3F, "X"), + (0xFB40, "M", "נּ"), + (0xFB41, "M", "סּ"), + (0xFB42, "X"), + (0xFB43, "M", "ףּ"), + (0xFB44, "M", "פּ"), + (0xFB45, "X"), + (0xFB46, "M", "צּ"), + (0xFB47, "M", "קּ"), + (0xFB48, "M", "רּ"), + (0xFB49, "M", "שּ"), + (0xFB4A, "M", "תּ"), + (0xFB4B, "M", "וֹ"), + (0xFB4C, "M", "בֿ"), + (0xFB4D, "M", "כֿ"), + (0xFB4E, "M", "פֿ"), + (0xFB4F, "M", "אל"), + (0xFB50, "M", "ٱ"), + (0xFB52, "M", "ٻ"), + (0xFB56, "M", "پ"), + (0xFB5A, "M", "ڀ"), + (0xFB5E, "M", "ٺ"), + (0xFB62, "M", "ٿ"), + (0xFB66, "M", "ٹ"), + (0xFB6A, "M", "ڤ"), + (0xFB6E, "M", "ڦ"), + (0xFB72, "M", "ڄ"), + (0xFB76, "M", "ڃ"), + (0xFB7A, "M", "چ"), + (0xFB7E, "M", "ڇ"), + (0xFB82, "M", "ڍ"), + (0xFB84, "M", "ڌ"), + (0xFB86, "M", "ڎ"), + (0xFB88, "M", "ڈ"), + (0xFB8A, "M", "ژ"), + (0xFB8C, "M", "ڑ"), + (0xFB8E, "M", "ک"), + (0xFB92, "M", "گ"), + (0xFB96, "M", "ڳ"), + (0xFB9A, "M", "ڱ"), + (0xFB9E, "M", "ں"), + (0xFBA0, "M", "ڻ"), + (0xFBA4, "M", "ۀ"), + (0xFBA6, "M", "ہ"), + (0xFBAA, "M", "ھ"), + (0xFBAE, "M", "ے"), + (0xFBB0, "M", "ۓ"), + (0xFBB2, "V"), + (0xFBC3, "X"), + (0xFBD3, "M", "ڭ"), + (0xFBD7, "M", "ۇ"), + (0xFBD9, "M", "ۆ"), + (0xFBDB, "M", "ۈ"), + (0xFBDD, "M", "ۇٴ"), + (0xFBDE, "M", "ۋ"), + (0xFBE0, "M", "ۅ"), + (0xFBE2, "M", "ۉ"), + (0xFBE4, "M", "ې"), + (0xFBE8, "M", "ى"), ] + def _seg_45() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: return [ - (0xFBE0, 'M', 'ۅ'), - (0xFBE2, 'M', 'ۉ'), - (0xFBE4, 'M', 'ې'), - (0xFBE8, 'M', 'ى'), - (0xFBEA, 'M', 'ئا'), - (0xFBEC, 'M', 'ئە'), - (0xFBEE, 'M', 'ئو'), - (0xFBF0, 'M', 'ئۇ'), - (0xFBF2, 'M', 'ئۆ'), - (0xFBF4, 'M', 'ئۈ'), - (0xFBF6, 'M', 'ئې'), - (0xFBF9, 'M', 'ئى'), - (0xFBFC, 'M', 'ی'), - (0xFC00, 'M', 'ئج'), - (0xFC01, 'M', 'ئح'), - (0xFC02, 'M', 'ئم'), - (0xFC03, 'M', 'ئى'), - (0xFC04, 'M', 'ئي'), - (0xFC05, 'M', 'بج'), - (0xFC06, 'M', 'بح'), - (0xFC07, 'M', 'بخ'), - (0xFC08, 'M', 'بم'), - (0xFC09, 'M', 'بى'), - (0xFC0A, 'M', 'بي'), - (0xFC0B, 'M', 'تج'), - (0xFC0C, 'M', 'تح'), - (0xFC0D, 'M', 'تخ'), - (0xFC0E, 'M', 'تم'), - (0xFC0F, 'M', 'تى'), - (0xFC10, 'M', 'تي'), - (0xFC11, 'M', 'ثج'), - (0xFC12, 'M', 'ثم'), - (0xFC13, 'M', 'ثى'), - (0xFC14, 'M', 'ثي'), - (0xFC15, 'M', 'جح'), - (0xFC16, 'M', 'جم'), - (0xFC17, 'M', 'حج'), - (0xFC18, 'M', 'حم'), - (0xFC19, 'M', 'خج'), - (0xFC1A, 'M', 'خح'), - (0xFC1B, 'M', 'خم'), - (0xFC1C, 'M', 'سج'), - (0xFC1D, 'M', 'سح'), - (0xFC1E, 'M', 'سخ'), - (0xFC1F, 'M', 'سم'), - (0xFC20, 'M', 'صح'), - (0xFC21, 'M', 'صم'), - (0xFC22, 'M', 'ضج'), - (0xFC23, 'M', 'ضح'), - (0xFC24, 'M', 'ضخ'), - (0xFC25, 'M', 'ضم'), - (0xFC26, 'M', 'طح'), - (0xFC27, 'M', 'طم'), - (0xFC28, 'M', 'ظم'), - (0xFC29, 'M', 'عج'), - (0xFC2A, 'M', 'عم'), - (0xFC2B, 'M', 'غج'), - (0xFC2C, 'M', 'غم'), - (0xFC2D, 'M', 'فج'), - (0xFC2E, 'M', 'فح'), - (0xFC2F, 'M', 'فخ'), - (0xFC30, 'M', 'فم'), - (0xFC31, 'M', 'فى'), - (0xFC32, 'M', 'في'), - (0xFC33, 'M', 'قح'), - (0xFC34, 'M', 'قم'), - (0xFC35, 'M', 'قى'), - (0xFC36, 'M', 'قي'), - (0xFC37, 'M', 'كا'), - (0xFC38, 'M', 'كج'), - (0xFC39, 'M', 'كح'), - (0xFC3A, 'M', 'كخ'), - (0xFC3B, 'M', 'كل'), - (0xFC3C, 'M', 'كم'), - (0xFC3D, 'M', 'كى'), - (0xFC3E, 'M', 'كي'), - (0xFC3F, 'M', 'لج'), - (0xFC40, 'M', 'لح'), - (0xFC41, 'M', 'لخ'), - (0xFC42, 'M', 'لم'), - (0xFC43, 'M', 'لى'), - (0xFC44, 'M', 'لي'), - (0xFC45, 'M', 'مج'), - (0xFC46, 'M', 'مح'), - (0xFC47, 'M', 'مخ'), - (0xFC48, 'M', 'مم'), - (0xFC49, 'M', 'مى'), - (0xFC4A, 'M', 'مي'), - (0xFC4B, 'M', 'نج'), - (0xFC4C, 'M', 'نح'), - (0xFC4D, 'M', 'نخ'), - (0xFC4E, 'M', 'نم'), - (0xFC4F, 'M', 'نى'), - (0xFC50, 'M', 'ني'), - (0xFC51, 'M', 'هج'), - (0xFC52, 'M', 'هم'), - (0xFC53, 'M', 'هى'), - (0xFC54, 'M', 'هي'), - (0xFC55, 'M', 'يج'), - (0xFC56, 'M', 'يح'), + (0xFBEA, "M", "ئا"), + (0xFBEC, "M", "ئە"), + (0xFBEE, "M", "ئو"), + (0xFBF0, "M", "ئۇ"), + (0xFBF2, "M", "ئۆ"), + (0xFBF4, "M", "ئۈ"), + (0xFBF6, "M", "ئې"), + (0xFBF9, "M", "ئى"), + (0xFBFC, "M", "ی"), + (0xFC00, "M", "ئج"), + (0xFC01, "M", "ئح"), + (0xFC02, "M", "ئم"), + (0xFC03, "M", "ئى"), + (0xFC04, "M", "ئي"), + (0xFC05, "M", "بج"), + (0xFC06, "M", "بح"), + (0xFC07, "M", "بخ"), + (0xFC08, "M", "بم"), + (0xFC09, "M", "بى"), + (0xFC0A, "M", "بي"), + (0xFC0B, "M", "تج"), + (0xFC0C, "M", "تح"), + (0xFC0D, "M", "تخ"), + (0xFC0E, "M", "تم"), + (0xFC0F, "M", "تى"), + (0xFC10, "M", "تي"), + (0xFC11, "M", "ثج"), + (0xFC12, "M", "ثم"), + (0xFC13, "M", "ثى"), + (0xFC14, "M", "ثي"), + (0xFC15, "M", "جح"), + (0xFC16, "M", "جم"), + (0xFC17, "M", "حج"), + (0xFC18, "M", "حم"), + (0xFC19, "M", "خج"), + (0xFC1A, "M", "خح"), + (0xFC1B, "M", "خم"), + (0xFC1C, "M", "سج"), + (0xFC1D, "M", "سح"), + (0xFC1E, "M", "سخ"), + (0xFC1F, "M", "سم"), + (0xFC20, "M", "صح"), + (0xFC21, "M", "صم"), + (0xFC22, "M", "ضج"), + (0xFC23, "M", "ضح"), + (0xFC24, "M", "ضخ"), + (0xFC25, "M", "ضم"), + (0xFC26, "M", "طح"), + (0xFC27, "M", "طم"), + (0xFC28, "M", "ظم"), + (0xFC29, "M", "عج"), + (0xFC2A, "M", "عم"), + (0xFC2B, "M", "غج"), + (0xFC2C, "M", "غم"), + (0xFC2D, "M", "فج"), + (0xFC2E, "M", "فح"), + (0xFC2F, "M", "فخ"), + (0xFC30, "M", "فم"), + (0xFC31, "M", "فى"), + (0xFC32, "M", "في"), + (0xFC33, "M", "قح"), + (0xFC34, "M", "قم"), + (0xFC35, "M", "قى"), + (0xFC36, "M", "قي"), + (0xFC37, "M", "كا"), + (0xFC38, "M", "كج"), + (0xFC39, "M", "كح"), + (0xFC3A, "M", "كخ"), + (0xFC3B, "M", "كل"), + (0xFC3C, "M", "كم"), + (0xFC3D, "M", "كى"), + (0xFC3E, "M", "كي"), + (0xFC3F, "M", "لج"), + (0xFC40, "M", "لح"), + (0xFC41, "M", "لخ"), + (0xFC42, "M", "لم"), + (0xFC43, "M", "لى"), + (0xFC44, "M", "لي"), + (0xFC45, "M", "مج"), + (0xFC46, "M", "مح"), + (0xFC47, "M", "مخ"), + (0xFC48, "M", "مم"), + (0xFC49, "M", "مى"), + (0xFC4A, "M", "مي"), + (0xFC4B, "M", "نج"), + (0xFC4C, "M", "نح"), + (0xFC4D, "M", "نخ"), + (0xFC4E, "M", "نم"), + (0xFC4F, "M", "نى"), + (0xFC50, "M", "ني"), + (0xFC51, "M", "هج"), + (0xFC52, "M", "هم"), + (0xFC53, "M", "هى"), + (0xFC54, "M", "هي"), + (0xFC55, "M", "يج"), + (0xFC56, "M", "يح"), + (0xFC57, "M", "يخ"), + (0xFC58, "M", "يم"), + (0xFC59, "M", "يى"), + (0xFC5A, "M", "يي"), ] + def _seg_46() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: return [ - (0xFC57, 'M', 'يخ'), - (0xFC58, 'M', 'يم'), - (0xFC59, 'M', 'يى'), - (0xFC5A, 'M', 'يي'), - (0xFC5B, 'M', 'ذٰ'), - (0xFC5C, 'M', 'رٰ'), - (0xFC5D, 'M', 'ىٰ'), - (0xFC5E, '3', ' ٌّ'), - (0xFC5F, '3', ' ٍّ'), - (0xFC60, '3', ' َّ'), - (0xFC61, '3', ' ُّ'), - (0xFC62, '3', ' ِّ'), - (0xFC63, '3', ' ّٰ'), - (0xFC64, 'M', 'ئر'), - (0xFC65, 'M', 'ئز'), - (0xFC66, 'M', 'ئم'), - (0xFC67, 'M', 'ئن'), - (0xFC68, 'M', 'ئى'), - (0xFC69, 'M', 'ئي'), - (0xFC6A, 'M', 'بر'), - (0xFC6B, 'M', 'بز'), - (0xFC6C, 'M', 'بم'), - (0xFC6D, 'M', 'بن'), - (0xFC6E, 'M', 'بى'), - (0xFC6F, 'M', 'بي'), - (0xFC70, 'M', 'تر'), - (0xFC71, 'M', 'تز'), - (0xFC72, 'M', 'تم'), - (0xFC73, 'M', 'تن'), - (0xFC74, 'M', 'تى'), - (0xFC75, 'M', 'تي'), - (0xFC76, 'M', 'ثر'), - (0xFC77, 'M', 'ثز'), - (0xFC78, 'M', 'ثم'), - (0xFC79, 'M', 'ثن'), - (0xFC7A, 'M', 'ثى'), - (0xFC7B, 'M', 'ثي'), - (0xFC7C, 'M', 'فى'), - (0xFC7D, 'M', 'في'), - (0xFC7E, 'M', 'قى'), - (0xFC7F, 'M', 'قي'), - (0xFC80, 'M', 'كا'), - (0xFC81, 'M', 'كل'), - (0xFC82, 'M', 'كم'), - (0xFC83, 'M', 'كى'), - (0xFC84, 'M', 'كي'), - (0xFC85, 'M', 'لم'), - (0xFC86, 'M', 'لى'), - (0xFC87, 'M', 'لي'), - (0xFC88, 'M', 'ما'), - (0xFC89, 'M', 'مم'), - (0xFC8A, 'M', 'نر'), - (0xFC8B, 'M', 'نز'), - (0xFC8C, 'M', 'نم'), - (0xFC8D, 'M', 'نن'), - (0xFC8E, 'M', 'نى'), - (0xFC8F, 'M', 'ني'), - (0xFC90, 'M', 'ىٰ'), - (0xFC91, 'M', 'ير'), - (0xFC92, 'M', 'يز'), - (0xFC93, 'M', 'يم'), - (0xFC94, 'M', 'ين'), - (0xFC95, 'M', 'يى'), - (0xFC96, 'M', 'يي'), - (0xFC97, 'M', 'ئج'), - (0xFC98, 'M', 'ئح'), - (0xFC99, 'M', 'ئخ'), - (0xFC9A, 'M', 'ئم'), - (0xFC9B, 'M', 'ئه'), - (0xFC9C, 'M', 'بج'), - (0xFC9D, 'M', 'بح'), - (0xFC9E, 'M', 'بخ'), - (0xFC9F, 'M', 'بم'), - (0xFCA0, 'M', 'به'), - (0xFCA1, 'M', 'تج'), - (0xFCA2, 'M', 'تح'), - (0xFCA3, 'M', 'تخ'), - (0xFCA4, 'M', 'تم'), - (0xFCA5, 'M', 'ته'), - (0xFCA6, 'M', 'ثم'), - (0xFCA7, 'M', 'جح'), - (0xFCA8, 'M', 'جم'), - (0xFCA9, 'M', 'حج'), - (0xFCAA, 'M', 'حم'), - (0xFCAB, 'M', 'خج'), - (0xFCAC, 'M', 'خم'), - (0xFCAD, 'M', 'سج'), - (0xFCAE, 'M', 'سح'), - (0xFCAF, 'M', 'سخ'), - (0xFCB0, 'M', 'سم'), - (0xFCB1, 'M', 'صح'), - (0xFCB2, 'M', 'صخ'), - (0xFCB3, 'M', 'صم'), - (0xFCB4, 'M', 'ضج'), - (0xFCB5, 'M', 'ضح'), - (0xFCB6, 'M', 'ضخ'), - (0xFCB7, 'M', 'ضم'), - (0xFCB8, 'M', 'طح'), - (0xFCB9, 'M', 'ظم'), - (0xFCBA, 'M', 'عج'), + (0xFC5B, "M", "ذٰ"), + (0xFC5C, "M", "رٰ"), + (0xFC5D, "M", "ىٰ"), + (0xFC5E, "3", " ٌّ"), + (0xFC5F, "3", " ٍّ"), + (0xFC60, "3", " َّ"), + (0xFC61, "3", " ُّ"), + (0xFC62, "3", " ِّ"), + (0xFC63, "3", " ّٰ"), + (0xFC64, "M", "ئر"), + (0xFC65, "M", "ئز"), + (0xFC66, "M", "ئم"), + (0xFC67, "M", "ئن"), + (0xFC68, "M", "ئى"), + (0xFC69, "M", "ئي"), + (0xFC6A, "M", "بر"), + (0xFC6B, "M", "بز"), + (0xFC6C, "M", "بم"), + (0xFC6D, "M", "بن"), + (0xFC6E, "M", "بى"), + (0xFC6F, "M", "بي"), + (0xFC70, "M", "تر"), + (0xFC71, "M", "تز"), + (0xFC72, "M", "تم"), + (0xFC73, "M", "تن"), + (0xFC74, "M", "تى"), + (0xFC75, "M", "تي"), + (0xFC76, "M", "ثر"), + (0xFC77, "M", "ثز"), + (0xFC78, "M", "ثم"), + (0xFC79, "M", "ثن"), + (0xFC7A, "M", "ثى"), + (0xFC7B, "M", "ثي"), + (0xFC7C, "M", "فى"), + (0xFC7D, "M", "في"), + (0xFC7E, "M", "قى"), + (0xFC7F, "M", "قي"), + (0xFC80, "M", "كا"), + (0xFC81, "M", "كل"), + (0xFC82, "M", "كم"), + (0xFC83, "M", "كى"), + (0xFC84, "M", "كي"), + (0xFC85, "M", "لم"), + (0xFC86, "M", "لى"), + (0xFC87, "M", "لي"), + (0xFC88, "M", "ما"), + (0xFC89, "M", "مم"), + (0xFC8A, "M", "نر"), + (0xFC8B, "M", "نز"), + (0xFC8C, "M", "نم"), + (0xFC8D, "M", "نن"), + (0xFC8E, "M", "نى"), + (0xFC8F, "M", "ني"), + (0xFC90, "M", "ىٰ"), + (0xFC91, "M", "ير"), + (0xFC92, "M", "يز"), + (0xFC93, "M", "يم"), + (0xFC94, "M", "ين"), + (0xFC95, "M", "يى"), + (0xFC96, "M", "يي"), + (0xFC97, "M", "ئج"), + (0xFC98, "M", "ئح"), + (0xFC99, "M", "ئخ"), + (0xFC9A, "M", "ئم"), + (0xFC9B, "M", "ئه"), + (0xFC9C, "M", "بج"), + (0xFC9D, "M", "بح"), + (0xFC9E, "M", "بخ"), + (0xFC9F, "M", "بم"), + (0xFCA0, "M", "به"), + (0xFCA1, "M", "تج"), + (0xFCA2, "M", "تح"), + (0xFCA3, "M", "تخ"), + (0xFCA4, "M", "تم"), + (0xFCA5, "M", "ته"), + (0xFCA6, "M", "ثم"), + (0xFCA7, "M", "جح"), + (0xFCA8, "M", "جم"), + (0xFCA9, "M", "حج"), + (0xFCAA, "M", "حم"), + (0xFCAB, "M", "خج"), + (0xFCAC, "M", "خم"), + (0xFCAD, "M", "سج"), + (0xFCAE, "M", "سح"), + (0xFCAF, "M", "سخ"), + (0xFCB0, "M", "سم"), + (0xFCB1, "M", "صح"), + (0xFCB2, "M", "صخ"), + (0xFCB3, "M", "صم"), + (0xFCB4, "M", "ضج"), + (0xFCB5, "M", "ضح"), + (0xFCB6, "M", "ضخ"), + (0xFCB7, "M", "ضم"), + (0xFCB8, "M", "طح"), + (0xFCB9, "M", "ظم"), + (0xFCBA, "M", "عج"), + (0xFCBB, "M", "عم"), + (0xFCBC, "M", "غج"), + (0xFCBD, "M", "غم"), + (0xFCBE, "M", "فج"), ] + def _seg_47() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: return [ - (0xFCBB, 'M', 'عم'), - (0xFCBC, 'M', 'غج'), - (0xFCBD, 'M', 'غم'), - (0xFCBE, 'M', 'فج'), - (0xFCBF, 'M', 'فح'), - (0xFCC0, 'M', 'فخ'), - (0xFCC1, 'M', 'فم'), - (0xFCC2, 'M', 'قح'), - (0xFCC3, 'M', 'قم'), - (0xFCC4, 'M', 'كج'), - (0xFCC5, 'M', 'كح'), - (0xFCC6, 'M', 'كخ'), - (0xFCC7, 'M', 'كل'), - (0xFCC8, 'M', 'كم'), - (0xFCC9, 'M', 'لج'), - (0xFCCA, 'M', 'لح'), - (0xFCCB, 'M', 'لخ'), - (0xFCCC, 'M', 'لم'), - (0xFCCD, 'M', 'له'), - (0xFCCE, 'M', 'مج'), - (0xFCCF, 'M', 'مح'), - (0xFCD0, 'M', 'مخ'), - (0xFCD1, 'M', 'مم'), - (0xFCD2, 'M', 'نج'), - (0xFCD3, 'M', 'نح'), - (0xFCD4, 'M', 'نخ'), - (0xFCD5, 'M', 'نم'), - (0xFCD6, 'M', 'نه'), - (0xFCD7, 'M', 'هج'), - (0xFCD8, 'M', 'هم'), - (0xFCD9, 'M', 'هٰ'), - (0xFCDA, 'M', 'يج'), - (0xFCDB, 'M', 'يح'), - (0xFCDC, 'M', 'يخ'), - (0xFCDD, 'M', 'يم'), - (0xFCDE, 'M', 'يه'), - (0xFCDF, 'M', 'ئم'), - (0xFCE0, 'M', 'ئه'), - (0xFCE1, 'M', 'بم'), - (0xFCE2, 'M', 'به'), - (0xFCE3, 'M', 'تم'), - (0xFCE4, 'M', 'ته'), - (0xFCE5, 'M', 'ثم'), - (0xFCE6, 'M', 'ثه'), - (0xFCE7, 'M', 'سم'), - (0xFCE8, 'M', 'سه'), - (0xFCE9, 'M', 'شم'), - (0xFCEA, 'M', 'شه'), - (0xFCEB, 'M', 'كل'), - (0xFCEC, 'M', 'كم'), - (0xFCED, 'M', 'لم'), - (0xFCEE, 'M', 'نم'), - (0xFCEF, 'M', 'نه'), - (0xFCF0, 'M', 'يم'), - (0xFCF1, 'M', 'يه'), - (0xFCF2, 'M', 'ـَّ'), - (0xFCF3, 'M', 'ـُّ'), - (0xFCF4, 'M', 'ـِّ'), - (0xFCF5, 'M', 'طى'), - (0xFCF6, 'M', 'طي'), - (0xFCF7, 'M', 'عى'), - (0xFCF8, 'M', 'عي'), - (0xFCF9, 'M', 'غى'), - (0xFCFA, 'M', 'غي'), - (0xFCFB, 'M', 'سى'), - (0xFCFC, 'M', 'سي'), - (0xFCFD, 'M', 'شى'), - (0xFCFE, 'M', 'شي'), - (0xFCFF, 'M', 'حى'), - (0xFD00, 'M', 'حي'), - (0xFD01, 'M', 'جى'), - (0xFD02, 'M', 'جي'), - (0xFD03, 'M', 'خى'), - (0xFD04, 'M', 'خي'), - (0xFD05, 'M', 'صى'), - (0xFD06, 'M', 'صي'), - (0xFD07, 'M', 'ضى'), - (0xFD08, 'M', 'ضي'), - (0xFD09, 'M', 'شج'), - (0xFD0A, 'M', 'شح'), - (0xFD0B, 'M', 'شخ'), - (0xFD0C, 'M', 'شم'), - (0xFD0D, 'M', 'شر'), - (0xFD0E, 'M', 'سر'), - (0xFD0F, 'M', 'صر'), - (0xFD10, 'M', 'ضر'), - (0xFD11, 'M', 'طى'), - (0xFD12, 'M', 'طي'), - (0xFD13, 'M', 'عى'), - (0xFD14, 'M', 'عي'), - (0xFD15, 'M', 'غى'), - (0xFD16, 'M', 'غي'), - (0xFD17, 'M', 'سى'), - (0xFD18, 'M', 'سي'), - (0xFD19, 'M', 'شى'), - (0xFD1A, 'M', 'شي'), - (0xFD1B, 'M', 'حى'), - (0xFD1C, 'M', 'حي'), - (0xFD1D, 'M', 'جى'), - (0xFD1E, 'M', 'جي'), + (0xFCBF, "M", "فح"), + (0xFCC0, "M", "فخ"), + (0xFCC1, "M", "فم"), + (0xFCC2, "M", "قح"), + (0xFCC3, "M", "قم"), + (0xFCC4, "M", "كج"), + (0xFCC5, "M", "كح"), + (0xFCC6, "M", "كخ"), + (0xFCC7, "M", "كل"), + (0xFCC8, "M", "كم"), + (0xFCC9, "M", "لج"), + (0xFCCA, "M", "لح"), + (0xFCCB, "M", "لخ"), + (0xFCCC, "M", "لم"), + (0xFCCD, "M", "له"), + (0xFCCE, "M", "مج"), + (0xFCCF, "M", "مح"), + (0xFCD0, "M", "مخ"), + (0xFCD1, "M", "مم"), + (0xFCD2, "M", "نج"), + (0xFCD3, "M", "نح"), + (0xFCD4, "M", "نخ"), + (0xFCD5, "M", "نم"), + (0xFCD6, "M", "نه"), + (0xFCD7, "M", "هج"), + (0xFCD8, "M", "هم"), + (0xFCD9, "M", "هٰ"), + (0xFCDA, "M", "يج"), + (0xFCDB, "M", "يح"), + (0xFCDC, "M", "يخ"), + (0xFCDD, "M", "يم"), + (0xFCDE, "M", "يه"), + (0xFCDF, "M", "ئم"), + (0xFCE0, "M", "ئه"), + (0xFCE1, "M", "بم"), + (0xFCE2, "M", "به"), + (0xFCE3, "M", "تم"), + (0xFCE4, "M", "ته"), + (0xFCE5, "M", "ثم"), + (0xFCE6, "M", "ثه"), + (0xFCE7, "M", "سم"), + (0xFCE8, "M", "سه"), + (0xFCE9, "M", "شم"), + (0xFCEA, "M", "شه"), + (0xFCEB, "M", "كل"), + (0xFCEC, "M", "كم"), + (0xFCED, "M", "لم"), + (0xFCEE, "M", "نم"), + (0xFCEF, "M", "نه"), + (0xFCF0, "M", "يم"), + (0xFCF1, "M", "يه"), + (0xFCF2, "M", "ـَّ"), + (0xFCF3, "M", "ـُّ"), + (0xFCF4, "M", "ـِّ"), + (0xFCF5, "M", "طى"), + (0xFCF6, "M", "طي"), + (0xFCF7, "M", "عى"), + (0xFCF8, "M", "عي"), + (0xFCF9, "M", "غى"), + (0xFCFA, "M", "غي"), + (0xFCFB, "M", "سى"), + (0xFCFC, "M", "سي"), + (0xFCFD, "M", "شى"), + (0xFCFE, "M", "شي"), + (0xFCFF, "M", "حى"), + (0xFD00, "M", "حي"), + (0xFD01, "M", "جى"), + (0xFD02, "M", "جي"), + (0xFD03, "M", "خى"), + (0xFD04, "M", "خي"), + (0xFD05, "M", "صى"), + (0xFD06, "M", "صي"), + (0xFD07, "M", "ضى"), + (0xFD08, "M", "ضي"), + (0xFD09, "M", "شج"), + (0xFD0A, "M", "شح"), + (0xFD0B, "M", "شخ"), + (0xFD0C, "M", "شم"), + (0xFD0D, "M", "شر"), + (0xFD0E, "M", "سر"), + (0xFD0F, "M", "صر"), + (0xFD10, "M", "ضر"), + (0xFD11, "M", "طى"), + (0xFD12, "M", "طي"), + (0xFD13, "M", "عى"), + (0xFD14, "M", "عي"), + (0xFD15, "M", "غى"), + (0xFD16, "M", "غي"), + (0xFD17, "M", "سى"), + (0xFD18, "M", "سي"), + (0xFD19, "M", "شى"), + (0xFD1A, "M", "شي"), + (0xFD1B, "M", "حى"), + (0xFD1C, "M", "حي"), + (0xFD1D, "M", "جى"), + (0xFD1E, "M", "جي"), + (0xFD1F, "M", "خى"), + (0xFD20, "M", "خي"), + (0xFD21, "M", "صى"), + (0xFD22, "M", "صي"), ] + def _seg_48() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: return [ - (0xFD1F, 'M', 'خى'), - (0xFD20, 'M', 'خي'), - (0xFD21, 'M', 'صى'), - (0xFD22, 'M', 'صي'), - (0xFD23, 'M', 'ضى'), - (0xFD24, 'M', 'ضي'), - (0xFD25, 'M', 'شج'), - (0xFD26, 'M', 'شح'), - (0xFD27, 'M', 'شخ'), - (0xFD28, 'M', 'شم'), - (0xFD29, 'M', 'شر'), - (0xFD2A, 'M', 'سر'), - (0xFD2B, 'M', 'صر'), - (0xFD2C, 'M', 'ضر'), - (0xFD2D, 'M', 'شج'), - (0xFD2E, 'M', 'شح'), - (0xFD2F, 'M', 'شخ'), - (0xFD30, 'M', 'شم'), - (0xFD31, 'M', 'سه'), - (0xFD32, 'M', 'شه'), - (0xFD33, 'M', 'طم'), - (0xFD34, 'M', 'سج'), - (0xFD35, 'M', 'سح'), - (0xFD36, 'M', 'سخ'), - (0xFD37, 'M', 'شج'), - (0xFD38, 'M', 'شح'), - (0xFD39, 'M', 'شخ'), - (0xFD3A, 'M', 'طم'), - (0xFD3B, 'M', 'ظم'), - (0xFD3C, 'M', 'اً'), - (0xFD3E, 'V'), - (0xFD50, 'M', 'تجم'), - (0xFD51, 'M', 'تحج'), - (0xFD53, 'M', 'تحم'), - (0xFD54, 'M', 'تخم'), - (0xFD55, 'M', 'تمج'), - (0xFD56, 'M', 'تمح'), - (0xFD57, 'M', 'تمخ'), - (0xFD58, 'M', 'جمح'), - (0xFD5A, 'M', 'حمي'), - (0xFD5B, 'M', 'حمى'), - (0xFD5C, 'M', 'سحج'), - (0xFD5D, 'M', 'سجح'), - (0xFD5E, 'M', 'سجى'), - (0xFD5F, 'M', 'سمح'), - (0xFD61, 'M', 'سمج'), - (0xFD62, 'M', 'سمم'), - (0xFD64, 'M', 'صحح'), - (0xFD66, 'M', 'صمم'), - (0xFD67, 'M', 'شحم'), - (0xFD69, 'M', 'شجي'), - (0xFD6A, 'M', 'شمخ'), - (0xFD6C, 'M', 'شمم'), - (0xFD6E, 'M', 'ضحى'), - (0xFD6F, 'M', 'ضخم'), - (0xFD71, 'M', 'طمح'), - (0xFD73, 'M', 'طمم'), - (0xFD74, 'M', 'طمي'), - (0xFD75, 'M', 'عجم'), - (0xFD76, 'M', 'عمم'), - (0xFD78, 'M', 'عمى'), - (0xFD79, 'M', 'غمم'), - (0xFD7A, 'M', 'غمي'), - (0xFD7B, 'M', 'غمى'), - (0xFD7C, 'M', 'فخم'), - (0xFD7E, 'M', 'قمح'), - (0xFD7F, 'M', 'قمم'), - (0xFD80, 'M', 'لحم'), - (0xFD81, 'M', 'لحي'), - (0xFD82, 'M', 'لحى'), - (0xFD83, 'M', 'لجج'), - (0xFD85, 'M', 'لخم'), - (0xFD87, 'M', 'لمح'), - (0xFD89, 'M', 'محج'), - (0xFD8A, 'M', 'محم'), - (0xFD8B, 'M', 'محي'), - (0xFD8C, 'M', 'مجح'), - (0xFD8D, 'M', 'مجم'), - (0xFD8E, 'M', 'مخج'), - (0xFD8F, 'M', 'مخم'), - (0xFD90, 'X'), - (0xFD92, 'M', 'مجخ'), - (0xFD93, 'M', 'همج'), - (0xFD94, 'M', 'همم'), - (0xFD95, 'M', 'نحم'), - (0xFD96, 'M', 'نحى'), - (0xFD97, 'M', 'نجم'), - (0xFD99, 'M', 'نجى'), - (0xFD9A, 'M', 'نمي'), - (0xFD9B, 'M', 'نمى'), - (0xFD9C, 'M', 'يمم'), - (0xFD9E, 'M', 'بخي'), - (0xFD9F, 'M', 'تجي'), - (0xFDA0, 'M', 'تجى'), - (0xFDA1, 'M', 'تخي'), - (0xFDA2, 'M', 'تخى'), - (0xFDA3, 'M', 'تمي'), - (0xFDA4, 'M', 'تمى'), - (0xFDA5, 'M', 'جمي'), - (0xFDA6, 'M', 'جحى'), + (0xFD23, "M", "ضى"), + (0xFD24, "M", "ضي"), + (0xFD25, "M", "شج"), + (0xFD26, "M", "شح"), + (0xFD27, "M", "شخ"), + (0xFD28, "M", "شم"), + (0xFD29, "M", "شر"), + (0xFD2A, "M", "سر"), + (0xFD2B, "M", "صر"), + (0xFD2C, "M", "ضر"), + (0xFD2D, "M", "شج"), + (0xFD2E, "M", "شح"), + (0xFD2F, "M", "شخ"), + (0xFD30, "M", "شم"), + (0xFD31, "M", "سه"), + (0xFD32, "M", "شه"), + (0xFD33, "M", "طم"), + (0xFD34, "M", "سج"), + (0xFD35, "M", "سح"), + (0xFD36, "M", "سخ"), + (0xFD37, "M", "شج"), + (0xFD38, "M", "شح"), + (0xFD39, "M", "شخ"), + (0xFD3A, "M", "طم"), + (0xFD3B, "M", "ظم"), + (0xFD3C, "M", "اً"), + (0xFD3E, "V"), + (0xFD50, "M", "تجم"), + (0xFD51, "M", "تحج"), + (0xFD53, "M", "تحم"), + (0xFD54, "M", "تخم"), + (0xFD55, "M", "تمج"), + (0xFD56, "M", "تمح"), + (0xFD57, "M", "تمخ"), + (0xFD58, "M", "جمح"), + (0xFD5A, "M", "حمي"), + (0xFD5B, "M", "حمى"), + (0xFD5C, "M", "سحج"), + (0xFD5D, "M", "سجح"), + (0xFD5E, "M", "سجى"), + (0xFD5F, "M", "سمح"), + (0xFD61, "M", "سمج"), + (0xFD62, "M", "سمم"), + (0xFD64, "M", "صحح"), + (0xFD66, "M", "صمم"), + (0xFD67, "M", "شحم"), + (0xFD69, "M", "شجي"), + (0xFD6A, "M", "شمخ"), + (0xFD6C, "M", "شمم"), + (0xFD6E, "M", "ضحى"), + (0xFD6F, "M", "ضخم"), + (0xFD71, "M", "طمح"), + (0xFD73, "M", "طمم"), + (0xFD74, "M", "طمي"), + (0xFD75, "M", "عجم"), + (0xFD76, "M", "عمم"), + (0xFD78, "M", "عمى"), + (0xFD79, "M", "غمم"), + (0xFD7A, "M", "غمي"), + (0xFD7B, "M", "غمى"), + (0xFD7C, "M", "فخم"), + (0xFD7E, "M", "قمح"), + (0xFD7F, "M", "قمم"), + (0xFD80, "M", "لحم"), + (0xFD81, "M", "لحي"), + (0xFD82, "M", "لحى"), + (0xFD83, "M", "لجج"), + (0xFD85, "M", "لخم"), + (0xFD87, "M", "لمح"), + (0xFD89, "M", "محج"), + (0xFD8A, "M", "محم"), + (0xFD8B, "M", "محي"), + (0xFD8C, "M", "مجح"), + (0xFD8D, "M", "مجم"), + (0xFD8E, "M", "مخج"), + (0xFD8F, "M", "مخم"), + (0xFD90, "X"), + (0xFD92, "M", "مجخ"), + (0xFD93, "M", "همج"), + (0xFD94, "M", "همم"), + (0xFD95, "M", "نحم"), + (0xFD96, "M", "نحى"), + (0xFD97, "M", "نجم"), + (0xFD99, "M", "نجى"), + (0xFD9A, "M", "نمي"), + (0xFD9B, "M", "نمى"), + (0xFD9C, "M", "يمم"), + (0xFD9E, "M", "بخي"), + (0xFD9F, "M", "تجي"), + (0xFDA0, "M", "تجى"), + (0xFDA1, "M", "تخي"), + (0xFDA2, "M", "تخى"), + (0xFDA3, "M", "تمي"), + (0xFDA4, "M", "تمى"), + (0xFDA5, "M", "جمي"), + (0xFDA6, "M", "جحى"), + (0xFDA7, "M", "جمى"), + (0xFDA8, "M", "سخى"), + (0xFDA9, "M", "صحي"), + (0xFDAA, "M", "شحي"), ] + def _seg_49() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: return [ - (0xFDA7, 'M', 'جمى'), - (0xFDA8, 'M', 'سخى'), - (0xFDA9, 'M', 'صحي'), - (0xFDAA, 'M', 'شحي'), - (0xFDAB, 'M', 'ضحي'), - (0xFDAC, 'M', 'لجي'), - (0xFDAD, 'M', 'لمي'), - (0xFDAE, 'M', 'يحي'), - (0xFDAF, 'M', 'يجي'), - (0xFDB0, 'M', 'يمي'), - (0xFDB1, 'M', 'ممي'), - (0xFDB2, 'M', 'قمي'), - (0xFDB3, 'M', 'نحي'), - (0xFDB4, 'M', 'قمح'), - (0xFDB5, 'M', 'لحم'), - (0xFDB6, 'M', 'عمي'), - (0xFDB7, 'M', 'كمي'), - (0xFDB8, 'M', 'نجح'), - (0xFDB9, 'M', 'مخي'), - (0xFDBA, 'M', 'لجم'), - (0xFDBB, 'M', 'كمم'), - (0xFDBC, 'M', 'لجم'), - (0xFDBD, 'M', 'نجح'), - (0xFDBE, 'M', 'جحي'), - (0xFDBF, 'M', 'حجي'), - (0xFDC0, 'M', 'مجي'), - (0xFDC1, 'M', 'فمي'), - (0xFDC2, 'M', 'بحي'), - (0xFDC3, 'M', 'كمم'), - (0xFDC4, 'M', 'عجم'), - (0xFDC5, 'M', 'صمم'), - (0xFDC6, 'M', 'سخي'), - (0xFDC7, 'M', 'نجي'), - (0xFDC8, 'X'), - (0xFDCF, 'V'), - (0xFDD0, 'X'), - (0xFDF0, 'M', 'صلے'), - (0xFDF1, 'M', 'قلے'), - (0xFDF2, 'M', 'الله'), - (0xFDF3, 'M', 'اكبر'), - (0xFDF4, 'M', 'محمد'), - (0xFDF5, 'M', 'صلعم'), - (0xFDF6, 'M', 'رسول'), - (0xFDF7, 'M', 'عليه'), - (0xFDF8, 'M', 'وسلم'), - (0xFDF9, 'M', 'صلى'), - (0xFDFA, '3', 'صلى الله عليه وسلم'), - (0xFDFB, '3', 'جل جلاله'), - (0xFDFC, 'M', 'ریال'), - (0xFDFD, 'V'), - (0xFE00, 'I'), - (0xFE10, '3', ','), - (0xFE11, 'M', '、'), - (0xFE12, 'X'), - (0xFE13, '3', ':'), - (0xFE14, '3', ';'), - (0xFE15, '3', '!'), - (0xFE16, '3', '?'), - (0xFE17, 'M', '〖'), - (0xFE18, 'M', '〗'), - (0xFE19, 'X'), - (0xFE20, 'V'), - (0xFE30, 'X'), - (0xFE31, 'M', '—'), - (0xFE32, 'M', '–'), - (0xFE33, '3', '_'), - (0xFE35, '3', '('), - (0xFE36, '3', ')'), - (0xFE37, '3', '{'), - (0xFE38, '3', '}'), - (0xFE39, 'M', '〔'), - (0xFE3A, 'M', '〕'), - (0xFE3B, 'M', '【'), - (0xFE3C, 'M', '】'), - (0xFE3D, 'M', '《'), - (0xFE3E, 'M', '》'), - (0xFE3F, 'M', '〈'), - (0xFE40, 'M', '〉'), - (0xFE41, 'M', '「'), - (0xFE42, 'M', '」'), - (0xFE43, 'M', '『'), - (0xFE44, 'M', '』'), - (0xFE45, 'V'), - (0xFE47, '3', '['), - (0xFE48, '3', ']'), - (0xFE49, '3', ' ̅'), - (0xFE4D, '3', '_'), - (0xFE50, '3', ','), - (0xFE51, 'M', '、'), - (0xFE52, 'X'), - (0xFE54, '3', ';'), - (0xFE55, '3', ':'), - (0xFE56, '3', '?'), - (0xFE57, '3', '!'), - (0xFE58, 'M', '—'), - (0xFE59, '3', '('), - (0xFE5A, '3', ')'), - (0xFE5B, '3', '{'), - (0xFE5C, '3', '}'), - (0xFE5D, 'M', '〔'), + (0xFDAB, "M", "ضحي"), + (0xFDAC, "M", "لجي"), + (0xFDAD, "M", "لمي"), + (0xFDAE, "M", "يحي"), + (0xFDAF, "M", "يجي"), + (0xFDB0, "M", "يمي"), + (0xFDB1, "M", "ممي"), + (0xFDB2, "M", "قمي"), + (0xFDB3, "M", "نحي"), + (0xFDB4, "M", "قمح"), + (0xFDB5, "M", "لحم"), + (0xFDB6, "M", "عمي"), + (0xFDB7, "M", "كمي"), + (0xFDB8, "M", "نجح"), + (0xFDB9, "M", "مخي"), + (0xFDBA, "M", "لجم"), + (0xFDBB, "M", "كمم"), + (0xFDBC, "M", "لجم"), + (0xFDBD, "M", "نجح"), + (0xFDBE, "M", "جحي"), + (0xFDBF, "M", "حجي"), + (0xFDC0, "M", "مجي"), + (0xFDC1, "M", "فمي"), + (0xFDC2, "M", "بحي"), + (0xFDC3, "M", "كمم"), + (0xFDC4, "M", "عجم"), + (0xFDC5, "M", "صمم"), + (0xFDC6, "M", "سخي"), + (0xFDC7, "M", "نجي"), + (0xFDC8, "X"), + (0xFDCF, "V"), + (0xFDD0, "X"), + (0xFDF0, "M", "صلے"), + (0xFDF1, "M", "قلے"), + (0xFDF2, "M", "الله"), + (0xFDF3, "M", "اكبر"), + (0xFDF4, "M", "محمد"), + (0xFDF5, "M", "صلعم"), + (0xFDF6, "M", "رسول"), + (0xFDF7, "M", "عليه"), + (0xFDF8, "M", "وسلم"), + (0xFDF9, "M", "صلى"), + (0xFDFA, "3", "صلى الله عليه وسلم"), + (0xFDFB, "3", "جل جلاله"), + (0xFDFC, "M", "ریال"), + (0xFDFD, "V"), + (0xFE00, "I"), + (0xFE10, "3", ","), + (0xFE11, "M", "、"), + (0xFE12, "X"), + (0xFE13, "3", ":"), + (0xFE14, "3", ";"), + (0xFE15, "3", "!"), + (0xFE16, "3", "?"), + (0xFE17, "M", "〖"), + (0xFE18, "M", "〗"), + (0xFE19, "X"), + (0xFE20, "V"), + (0xFE30, "X"), + (0xFE31, "M", "—"), + (0xFE32, "M", "–"), + (0xFE33, "3", "_"), + (0xFE35, "3", "("), + (0xFE36, "3", ")"), + (0xFE37, "3", "{"), + (0xFE38, "3", "}"), + (0xFE39, "M", "〔"), + (0xFE3A, "M", "〕"), + (0xFE3B, "M", "【"), + (0xFE3C, "M", "】"), + (0xFE3D, "M", "《"), + (0xFE3E, "M", "》"), + (0xFE3F, "M", "〈"), + (0xFE40, "M", "〉"), + (0xFE41, "M", "「"), + (0xFE42, "M", "」"), + (0xFE43, "M", "『"), + (0xFE44, "M", "』"), + (0xFE45, "V"), + (0xFE47, "3", "["), + (0xFE48, "3", "]"), + (0xFE49, "3", " ̅"), + (0xFE4D, "3", "_"), + (0xFE50, "3", ","), + (0xFE51, "M", "、"), + (0xFE52, "X"), + (0xFE54, "3", ";"), + (0xFE55, "3", ":"), + (0xFE56, "3", "?"), + (0xFE57, "3", "!"), + (0xFE58, "M", "—"), + (0xFE59, "3", "("), + (0xFE5A, "3", ")"), + (0xFE5B, "3", "{"), + (0xFE5C, "3", "}"), + (0xFE5D, "M", "〔"), + (0xFE5E, "M", "〕"), + (0xFE5F, "3", "#"), + (0xFE60, "3", "&"), + (0xFE61, "3", "*"), ] + def _seg_50() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: return [ - (0xFE5E, 'M', '〕'), - (0xFE5F, '3', '#'), - (0xFE60, '3', '&'), - (0xFE61, '3', '*'), - (0xFE62, '3', '+'), - (0xFE63, 'M', '-'), - (0xFE64, '3', '<'), - (0xFE65, '3', '>'), - (0xFE66, '3', '='), - (0xFE67, 'X'), - (0xFE68, '3', '\\'), - (0xFE69, '3', '$'), - (0xFE6A, '3', '%'), - (0xFE6B, '3', '@'), - (0xFE6C, 'X'), - (0xFE70, '3', ' ً'), - (0xFE71, 'M', 'ـً'), - (0xFE72, '3', ' ٌ'), - (0xFE73, 'V'), - (0xFE74, '3', ' ٍ'), - (0xFE75, 'X'), - (0xFE76, '3', ' َ'), - (0xFE77, 'M', 'ـَ'), - (0xFE78, '3', ' ُ'), - (0xFE79, 'M', 'ـُ'), - (0xFE7A, '3', ' ِ'), - (0xFE7B, 'M', 'ـِ'), - (0xFE7C, '3', ' ّ'), - (0xFE7D, 'M', 'ـّ'), - (0xFE7E, '3', ' ْ'), - (0xFE7F, 'M', 'ـْ'), - (0xFE80, 'M', 'ء'), - (0xFE81, 'M', 'آ'), - (0xFE83, 'M', 'أ'), - (0xFE85, 'M', 'ؤ'), - (0xFE87, 'M', 'إ'), - (0xFE89, 'M', 'ئ'), - (0xFE8D, 'M', 'ا'), - (0xFE8F, 'M', 'ب'), - (0xFE93, 'M', 'ة'), - (0xFE95, 'M', 'ت'), - (0xFE99, 'M', 'ث'), - (0xFE9D, 'M', 'ج'), - (0xFEA1, 'M', 'ح'), - (0xFEA5, 'M', 'خ'), - (0xFEA9, 'M', 'د'), - (0xFEAB, 'M', 'ذ'), - (0xFEAD, 'M', 'ر'), - (0xFEAF, 'M', 'ز'), - (0xFEB1, 'M', 'س'), - (0xFEB5, 'M', 'ش'), - (0xFEB9, 'M', 'ص'), - (0xFEBD, 'M', 'ض'), - (0xFEC1, 'M', 'ط'), - (0xFEC5, 'M', 'ظ'), - (0xFEC9, 'M', 'ع'), - (0xFECD, 'M', 'غ'), - (0xFED1, 'M', 'ف'), - (0xFED5, 'M', 'ق'), - (0xFED9, 'M', 'ك'), - (0xFEDD, 'M', 'ل'), - (0xFEE1, 'M', 'م'), - (0xFEE5, 'M', 'ن'), - (0xFEE9, 'M', 'ه'), - (0xFEED, 'M', 'و'), - (0xFEEF, 'M', 'ى'), - (0xFEF1, 'M', 'ي'), - (0xFEF5, 'M', 'لآ'), - (0xFEF7, 'M', 'لأ'), - (0xFEF9, 'M', 'لإ'), - (0xFEFB, 'M', 'لا'), - (0xFEFD, 'X'), - (0xFEFF, 'I'), - (0xFF00, 'X'), - (0xFF01, '3', '!'), - (0xFF02, '3', '"'), - (0xFF03, '3', '#'), - (0xFF04, '3', '$'), - (0xFF05, '3', '%'), - (0xFF06, '3', '&'), - (0xFF07, '3', '\''), - (0xFF08, '3', '('), - (0xFF09, '3', ')'), - (0xFF0A, '3', '*'), - (0xFF0B, '3', '+'), - (0xFF0C, '3', ','), - (0xFF0D, 'M', '-'), - (0xFF0E, 'M', '.'), - (0xFF0F, '3', '/'), - (0xFF10, 'M', '0'), - (0xFF11, 'M', '1'), - (0xFF12, 'M', '2'), - (0xFF13, 'M', '3'), - (0xFF14, 'M', '4'), - (0xFF15, 'M', '5'), - (0xFF16, 'M', '6'), - (0xFF17, 'M', '7'), - (0xFF18, 'M', '8'), - (0xFF19, 'M', '9'), - (0xFF1A, '3', ':'), + (0xFE62, "3", "+"), + (0xFE63, "M", "-"), + (0xFE64, "3", "<"), + (0xFE65, "3", ">"), + (0xFE66, "3", "="), + (0xFE67, "X"), + (0xFE68, "3", "\\"), + (0xFE69, "3", "$"), + (0xFE6A, "3", "%"), + (0xFE6B, "3", "@"), + (0xFE6C, "X"), + (0xFE70, "3", " ً"), + (0xFE71, "M", "ـً"), + (0xFE72, "3", " ٌ"), + (0xFE73, "V"), + (0xFE74, "3", " ٍ"), + (0xFE75, "X"), + (0xFE76, "3", " َ"), + (0xFE77, "M", "ـَ"), + (0xFE78, "3", " ُ"), + (0xFE79, "M", "ـُ"), + (0xFE7A, "3", " ِ"), + (0xFE7B, "M", "ـِ"), + (0xFE7C, "3", " ّ"), + (0xFE7D, "M", "ـّ"), + (0xFE7E, "3", " ْ"), + (0xFE7F, "M", "ـْ"), + (0xFE80, "M", "ء"), + (0xFE81, "M", "آ"), + (0xFE83, "M", "أ"), + (0xFE85, "M", "ؤ"), + (0xFE87, "M", "إ"), + (0xFE89, "M", "ئ"), + (0xFE8D, "M", "ا"), + (0xFE8F, "M", "ب"), + (0xFE93, "M", "ة"), + (0xFE95, "M", "ت"), + (0xFE99, "M", "ث"), + (0xFE9D, "M", "ج"), + (0xFEA1, "M", "ح"), + (0xFEA5, "M", "خ"), + (0xFEA9, "M", "د"), + (0xFEAB, "M", "ذ"), + (0xFEAD, "M", "ر"), + (0xFEAF, "M", "ز"), + (0xFEB1, "M", "س"), + (0xFEB5, "M", "ش"), + (0xFEB9, "M", "ص"), + (0xFEBD, "M", "ض"), + (0xFEC1, "M", "ط"), + (0xFEC5, "M", "ظ"), + (0xFEC9, "M", "ع"), + (0xFECD, "M", "غ"), + (0xFED1, "M", "ف"), + (0xFED5, "M", "ق"), + (0xFED9, "M", "ك"), + (0xFEDD, "M", "ل"), + (0xFEE1, "M", "م"), + (0xFEE5, "M", "ن"), + (0xFEE9, "M", "ه"), + (0xFEED, "M", "و"), + (0xFEEF, "M", "ى"), + (0xFEF1, "M", "ي"), + (0xFEF5, "M", "لآ"), + (0xFEF7, "M", "لأ"), + (0xFEF9, "M", "لإ"), + (0xFEFB, "M", "لا"), + (0xFEFD, "X"), + (0xFEFF, "I"), + (0xFF00, "X"), + (0xFF01, "3", "!"), + (0xFF02, "3", '"'), + (0xFF03, "3", "#"), + (0xFF04, "3", "$"), + (0xFF05, "3", "%"), + (0xFF06, "3", "&"), + (0xFF07, "3", "'"), + (0xFF08, "3", "("), + (0xFF09, "3", ")"), + (0xFF0A, "3", "*"), + (0xFF0B, "3", "+"), + (0xFF0C, "3", ","), + (0xFF0D, "M", "-"), + (0xFF0E, "M", "."), + (0xFF0F, "3", "/"), + (0xFF10, "M", "0"), + (0xFF11, "M", "1"), + (0xFF12, "M", "2"), + (0xFF13, "M", "3"), + (0xFF14, "M", "4"), + (0xFF15, "M", "5"), + (0xFF16, "M", "6"), + (0xFF17, "M", "7"), + (0xFF18, "M", "8"), + (0xFF19, "M", "9"), + (0xFF1A, "3", ":"), + (0xFF1B, "3", ";"), + (0xFF1C, "3", "<"), + (0xFF1D, "3", "="), + (0xFF1E, "3", ">"), ] + def _seg_51() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: return [ - (0xFF1B, '3', ';'), - (0xFF1C, '3', '<'), - (0xFF1D, '3', '='), - (0xFF1E, '3', '>'), - (0xFF1F, '3', '?'), - (0xFF20, '3', '@'), - (0xFF21, 'M', 'a'), - (0xFF22, 'M', 'b'), - (0xFF23, 'M', 'c'), - (0xFF24, 'M', 'd'), - (0xFF25, 'M', 'e'), - (0xFF26, 'M', 'f'), - (0xFF27, 'M', 'g'), - (0xFF28, 'M', 'h'), - (0xFF29, 'M', 'i'), - (0xFF2A, 'M', 'j'), - (0xFF2B, 'M', 'k'), - (0xFF2C, 'M', 'l'), - (0xFF2D, 'M', 'm'), - (0xFF2E, 'M', 'n'), - (0xFF2F, 'M', 'o'), - (0xFF30, 'M', 'p'), - (0xFF31, 'M', 'q'), - (0xFF32, 'M', 'r'), - (0xFF33, 'M', 's'), - (0xFF34, 'M', 't'), - (0xFF35, 'M', 'u'), - (0xFF36, 'M', 'v'), - (0xFF37, 'M', 'w'), - (0xFF38, 'M', 'x'), - (0xFF39, 'M', 'y'), - (0xFF3A, 'M', 'z'), - (0xFF3B, '3', '['), - (0xFF3C, '3', '\\'), - (0xFF3D, '3', ']'), - (0xFF3E, '3', '^'), - (0xFF3F, '3', '_'), - (0xFF40, '3', '`'), - (0xFF41, 'M', 'a'), - (0xFF42, 'M', 'b'), - (0xFF43, 'M', 'c'), - (0xFF44, 'M', 'd'), - (0xFF45, 'M', 'e'), - (0xFF46, 'M', 'f'), - (0xFF47, 'M', 'g'), - (0xFF48, 'M', 'h'), - (0xFF49, 'M', 'i'), - (0xFF4A, 'M', 'j'), - (0xFF4B, 'M', 'k'), - (0xFF4C, 'M', 'l'), - (0xFF4D, 'M', 'm'), - (0xFF4E, 'M', 'n'), - (0xFF4F, 'M', 'o'), - (0xFF50, 'M', 'p'), - (0xFF51, 'M', 'q'), - (0xFF52, 'M', 'r'), - (0xFF53, 'M', 's'), - (0xFF54, 'M', 't'), - (0xFF55, 'M', 'u'), - (0xFF56, 'M', 'v'), - (0xFF57, 'M', 'w'), - (0xFF58, 'M', 'x'), - (0xFF59, 'M', 'y'), - (0xFF5A, 'M', 'z'), - (0xFF5B, '3', '{'), - (0xFF5C, '3', '|'), - (0xFF5D, '3', '}'), - (0xFF5E, '3', '~'), - (0xFF5F, 'M', '⦅'), - (0xFF60, 'M', '⦆'), - (0xFF61, 'M', '.'), - (0xFF62, 'M', '「'), - (0xFF63, 'M', '」'), - (0xFF64, 'M', '、'), - (0xFF65, 'M', '・'), - (0xFF66, 'M', 'ヲ'), - (0xFF67, 'M', 'ァ'), - (0xFF68, 'M', 'ィ'), - (0xFF69, 'M', 'ゥ'), - (0xFF6A, 'M', 'ェ'), - (0xFF6B, 'M', 'ォ'), - (0xFF6C, 'M', 'ャ'), - (0xFF6D, 'M', 'ュ'), - (0xFF6E, 'M', 'ョ'), - (0xFF6F, 'M', 'ッ'), - (0xFF70, 'M', 'ー'), - (0xFF71, 'M', 'ア'), - (0xFF72, 'M', 'イ'), - (0xFF73, 'M', 'ウ'), - (0xFF74, 'M', 'エ'), - (0xFF75, 'M', 'オ'), - (0xFF76, 'M', 'カ'), - (0xFF77, 'M', 'キ'), - (0xFF78, 'M', 'ク'), - (0xFF79, 'M', 'ケ'), - (0xFF7A, 'M', 'コ'), - (0xFF7B, 'M', 'サ'), - (0xFF7C, 'M', 'シ'), - (0xFF7D, 'M', 'ス'), - (0xFF7E, 'M', 'セ'), + (0xFF1F, "3", "?"), + (0xFF20, "3", "@"), + (0xFF21, "M", "a"), + (0xFF22, "M", "b"), + (0xFF23, "M", "c"), + (0xFF24, "M", "d"), + (0xFF25, "M", "e"), + (0xFF26, "M", "f"), + (0xFF27, "M", "g"), + (0xFF28, "M", "h"), + (0xFF29, "M", "i"), + (0xFF2A, "M", "j"), + (0xFF2B, "M", "k"), + (0xFF2C, "M", "l"), + (0xFF2D, "M", "m"), + (0xFF2E, "M", "n"), + (0xFF2F, "M", "o"), + (0xFF30, "M", "p"), + (0xFF31, "M", "q"), + (0xFF32, "M", "r"), + (0xFF33, "M", "s"), + (0xFF34, "M", "t"), + (0xFF35, "M", "u"), + (0xFF36, "M", "v"), + (0xFF37, "M", "w"), + (0xFF38, "M", "x"), + (0xFF39, "M", "y"), + (0xFF3A, "M", "z"), + (0xFF3B, "3", "["), + (0xFF3C, "3", "\\"), + (0xFF3D, "3", "]"), + (0xFF3E, "3", "^"), + (0xFF3F, "3", "_"), + (0xFF40, "3", "`"), + (0xFF41, "M", "a"), + (0xFF42, "M", "b"), + (0xFF43, "M", "c"), + (0xFF44, "M", "d"), + (0xFF45, "M", "e"), + (0xFF46, "M", "f"), + (0xFF47, "M", "g"), + (0xFF48, "M", "h"), + (0xFF49, "M", "i"), + (0xFF4A, "M", "j"), + (0xFF4B, "M", "k"), + (0xFF4C, "M", "l"), + (0xFF4D, "M", "m"), + (0xFF4E, "M", "n"), + (0xFF4F, "M", "o"), + (0xFF50, "M", "p"), + (0xFF51, "M", "q"), + (0xFF52, "M", "r"), + (0xFF53, "M", "s"), + (0xFF54, "M", "t"), + (0xFF55, "M", "u"), + (0xFF56, "M", "v"), + (0xFF57, "M", "w"), + (0xFF58, "M", "x"), + (0xFF59, "M", "y"), + (0xFF5A, "M", "z"), + (0xFF5B, "3", "{"), + (0xFF5C, "3", "|"), + (0xFF5D, "3", "}"), + (0xFF5E, "3", "~"), + (0xFF5F, "M", "⦅"), + (0xFF60, "M", "⦆"), + (0xFF61, "M", "."), + (0xFF62, "M", "「"), + (0xFF63, "M", "」"), + (0xFF64, "M", "、"), + (0xFF65, "M", "・"), + (0xFF66, "M", "ヲ"), + (0xFF67, "M", "ァ"), + (0xFF68, "M", "ィ"), + (0xFF69, "M", "ゥ"), + (0xFF6A, "M", "ェ"), + (0xFF6B, "M", "ォ"), + (0xFF6C, "M", "ャ"), + (0xFF6D, "M", "ュ"), + (0xFF6E, "M", "ョ"), + (0xFF6F, "M", "ッ"), + (0xFF70, "M", "ー"), + (0xFF71, "M", "ア"), + (0xFF72, "M", "イ"), + (0xFF73, "M", "ウ"), + (0xFF74, "M", "エ"), + (0xFF75, "M", "オ"), + (0xFF76, "M", "カ"), + (0xFF77, "M", "キ"), + (0xFF78, "M", "ク"), + (0xFF79, "M", "ケ"), + (0xFF7A, "M", "コ"), + (0xFF7B, "M", "サ"), + (0xFF7C, "M", "シ"), + (0xFF7D, "M", "ス"), + (0xFF7E, "M", "セ"), + (0xFF7F, "M", "ソ"), + (0xFF80, "M", "タ"), + (0xFF81, "M", "チ"), + (0xFF82, "M", "ツ"), ] + def _seg_52() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: return [ - (0xFF7F, 'M', 'ソ'), - (0xFF80, 'M', 'タ'), - (0xFF81, 'M', 'チ'), - (0xFF82, 'M', 'ツ'), - (0xFF83, 'M', 'テ'), - (0xFF84, 'M', 'ト'), - (0xFF85, 'M', 'ナ'), - (0xFF86, 'M', 'ニ'), - (0xFF87, 'M', 'ヌ'), - (0xFF88, 'M', 'ネ'), - (0xFF89, 'M', 'ノ'), - (0xFF8A, 'M', 'ハ'), - (0xFF8B, 'M', 'ヒ'), - (0xFF8C, 'M', 'フ'), - (0xFF8D, 'M', 'ヘ'), - (0xFF8E, 'M', 'ホ'), - (0xFF8F, 'M', 'マ'), - (0xFF90, 'M', 'ミ'), - (0xFF91, 'M', 'ム'), - (0xFF92, 'M', 'メ'), - (0xFF93, 'M', 'モ'), - (0xFF94, 'M', 'ヤ'), - (0xFF95, 'M', 'ユ'), - (0xFF96, 'M', 'ヨ'), - (0xFF97, 'M', 'ラ'), - (0xFF98, 'M', 'リ'), - (0xFF99, 'M', 'ル'), - (0xFF9A, 'M', 'レ'), - (0xFF9B, 'M', 'ロ'), - (0xFF9C, 'M', 'ワ'), - (0xFF9D, 'M', 'ン'), - (0xFF9E, 'M', '゙'), - (0xFF9F, 'M', '゚'), - (0xFFA0, 'X'), - (0xFFA1, 'M', 'ᄀ'), - (0xFFA2, 'M', 'ᄁ'), - (0xFFA3, 'M', 'ᆪ'), - (0xFFA4, 'M', 'ᄂ'), - (0xFFA5, 'M', 'ᆬ'), - (0xFFA6, 'M', 'ᆭ'), - (0xFFA7, 'M', 'ᄃ'), - (0xFFA8, 'M', 'ᄄ'), - (0xFFA9, 'M', 'ᄅ'), - (0xFFAA, 'M', 'ᆰ'), - (0xFFAB, 'M', 'ᆱ'), - (0xFFAC, 'M', 'ᆲ'), - (0xFFAD, 'M', 'ᆳ'), - (0xFFAE, 'M', 'ᆴ'), - (0xFFAF, 'M', 'ᆵ'), - (0xFFB0, 'M', 'ᄚ'), - (0xFFB1, 'M', 'ᄆ'), - (0xFFB2, 'M', 'ᄇ'), - (0xFFB3, 'M', 'ᄈ'), - (0xFFB4, 'M', 'ᄡ'), - (0xFFB5, 'M', 'ᄉ'), - (0xFFB6, 'M', 'ᄊ'), - (0xFFB7, 'M', 'ᄋ'), - (0xFFB8, 'M', 'ᄌ'), - (0xFFB9, 'M', 'ᄍ'), - (0xFFBA, 'M', 'ᄎ'), - (0xFFBB, 'M', 'ᄏ'), - (0xFFBC, 'M', 'ᄐ'), - (0xFFBD, 'M', 'ᄑ'), - (0xFFBE, 'M', 'ᄒ'), - (0xFFBF, 'X'), - (0xFFC2, 'M', 'ᅡ'), - (0xFFC3, 'M', 'ᅢ'), - (0xFFC4, 'M', 'ᅣ'), - (0xFFC5, 'M', 'ᅤ'), - (0xFFC6, 'M', 'ᅥ'), - (0xFFC7, 'M', 'ᅦ'), - (0xFFC8, 'X'), - (0xFFCA, 'M', 'ᅧ'), - (0xFFCB, 'M', 'ᅨ'), - (0xFFCC, 'M', 'ᅩ'), - (0xFFCD, 'M', 'ᅪ'), - (0xFFCE, 'M', 'ᅫ'), - (0xFFCF, 'M', 'ᅬ'), - (0xFFD0, 'X'), - (0xFFD2, 'M', 'ᅭ'), - (0xFFD3, 'M', 'ᅮ'), - (0xFFD4, 'M', 'ᅯ'), - (0xFFD5, 'M', 'ᅰ'), - (0xFFD6, 'M', 'ᅱ'), - (0xFFD7, 'M', 'ᅲ'), - (0xFFD8, 'X'), - (0xFFDA, 'M', 'ᅳ'), - (0xFFDB, 'M', 'ᅴ'), - (0xFFDC, 'M', 'ᅵ'), - (0xFFDD, 'X'), - (0xFFE0, 'M', '¢'), - (0xFFE1, 'M', '£'), - (0xFFE2, 'M', '¬'), - (0xFFE3, '3', ' ̄'), - (0xFFE4, 'M', '¦'), - (0xFFE5, 'M', '¥'), - (0xFFE6, 'M', '₩'), - (0xFFE7, 'X'), - (0xFFE8, 'M', '│'), - (0xFFE9, 'M', '←'), + (0xFF83, "M", "テ"), + (0xFF84, "M", "ト"), + (0xFF85, "M", "ナ"), + (0xFF86, "M", "ニ"), + (0xFF87, "M", "ヌ"), + (0xFF88, "M", "ネ"), + (0xFF89, "M", "ノ"), + (0xFF8A, "M", "ハ"), + (0xFF8B, "M", "ヒ"), + (0xFF8C, "M", "フ"), + (0xFF8D, "M", "ヘ"), + (0xFF8E, "M", "ホ"), + (0xFF8F, "M", "マ"), + (0xFF90, "M", "ミ"), + (0xFF91, "M", "ム"), + (0xFF92, "M", "メ"), + (0xFF93, "M", "モ"), + (0xFF94, "M", "ヤ"), + (0xFF95, "M", "ユ"), + (0xFF96, "M", "ヨ"), + (0xFF97, "M", "ラ"), + (0xFF98, "M", "リ"), + (0xFF99, "M", "ル"), + (0xFF9A, "M", "レ"), + (0xFF9B, "M", "ロ"), + (0xFF9C, "M", "ワ"), + (0xFF9D, "M", "ン"), + (0xFF9E, "M", "゙"), + (0xFF9F, "M", "゚"), + (0xFFA0, "X"), + (0xFFA1, "M", "ᄀ"), + (0xFFA2, "M", "ᄁ"), + (0xFFA3, "M", "ᆪ"), + (0xFFA4, "M", "ᄂ"), + (0xFFA5, "M", "ᆬ"), + (0xFFA6, "M", "ᆭ"), + (0xFFA7, "M", "ᄃ"), + (0xFFA8, "M", "ᄄ"), + (0xFFA9, "M", "ᄅ"), + (0xFFAA, "M", "ᆰ"), + (0xFFAB, "M", "ᆱ"), + (0xFFAC, "M", "ᆲ"), + (0xFFAD, "M", "ᆳ"), + (0xFFAE, "M", "ᆴ"), + (0xFFAF, "M", "ᆵ"), + (0xFFB0, "M", "ᄚ"), + (0xFFB1, "M", "ᄆ"), + (0xFFB2, "M", "ᄇ"), + (0xFFB3, "M", "ᄈ"), + (0xFFB4, "M", "ᄡ"), + (0xFFB5, "M", "ᄉ"), + (0xFFB6, "M", "ᄊ"), + (0xFFB7, "M", "ᄋ"), + (0xFFB8, "M", "ᄌ"), + (0xFFB9, "M", "ᄍ"), + (0xFFBA, "M", "ᄎ"), + (0xFFBB, "M", "ᄏ"), + (0xFFBC, "M", "ᄐ"), + (0xFFBD, "M", "ᄑ"), + (0xFFBE, "M", "ᄒ"), + (0xFFBF, "X"), + (0xFFC2, "M", "ᅡ"), + (0xFFC3, "M", "ᅢ"), + (0xFFC4, "M", "ᅣ"), + (0xFFC5, "M", "ᅤ"), + (0xFFC6, "M", "ᅥ"), + (0xFFC7, "M", "ᅦ"), + (0xFFC8, "X"), + (0xFFCA, "M", "ᅧ"), + (0xFFCB, "M", "ᅨ"), + (0xFFCC, "M", "ᅩ"), + (0xFFCD, "M", "ᅪ"), + (0xFFCE, "M", "ᅫ"), + (0xFFCF, "M", "ᅬ"), + (0xFFD0, "X"), + (0xFFD2, "M", "ᅭ"), + (0xFFD3, "M", "ᅮ"), + (0xFFD4, "M", "ᅯ"), + (0xFFD5, "M", "ᅰ"), + (0xFFD6, "M", "ᅱ"), + (0xFFD7, "M", "ᅲ"), + (0xFFD8, "X"), + (0xFFDA, "M", "ᅳ"), + (0xFFDB, "M", "ᅴ"), + (0xFFDC, "M", "ᅵ"), + (0xFFDD, "X"), + (0xFFE0, "M", "¢"), + (0xFFE1, "M", "£"), + (0xFFE2, "M", "¬"), + (0xFFE3, "3", " ̄"), + (0xFFE4, "M", "¦"), + (0xFFE5, "M", "¥"), + (0xFFE6, "M", "₩"), + (0xFFE7, "X"), + (0xFFE8, "M", "│"), + (0xFFE9, "M", "←"), + (0xFFEA, "M", "↑"), + (0xFFEB, "M", "→"), + (0xFFEC, "M", "↓"), + (0xFFED, "M", "■"), ] + def _seg_53() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: return [ - (0xFFEA, 'M', '↑'), - (0xFFEB, 'M', '→'), - (0xFFEC, 'M', '↓'), - (0xFFED, 'M', '■'), - (0xFFEE, 'M', '○'), - (0xFFEF, 'X'), - (0x10000, 'V'), - (0x1000C, 'X'), - (0x1000D, 'V'), - (0x10027, 'X'), - (0x10028, 'V'), - (0x1003B, 'X'), - (0x1003C, 'V'), - (0x1003E, 'X'), - (0x1003F, 'V'), - (0x1004E, 'X'), - (0x10050, 'V'), - (0x1005E, 'X'), - (0x10080, 'V'), - (0x100FB, 'X'), - (0x10100, 'V'), - (0x10103, 'X'), - (0x10107, 'V'), - (0x10134, 'X'), - (0x10137, 'V'), - (0x1018F, 'X'), - (0x10190, 'V'), - (0x1019D, 'X'), - (0x101A0, 'V'), - (0x101A1, 'X'), - (0x101D0, 'V'), - (0x101FE, 'X'), - (0x10280, 'V'), - (0x1029D, 'X'), - (0x102A0, 'V'), - (0x102D1, 'X'), - (0x102E0, 'V'), - (0x102FC, 'X'), - (0x10300, 'V'), - (0x10324, 'X'), - (0x1032D, 'V'), - (0x1034B, 'X'), - (0x10350, 'V'), - (0x1037B, 'X'), - (0x10380, 'V'), - (0x1039E, 'X'), - (0x1039F, 'V'), - (0x103C4, 'X'), - (0x103C8, 'V'), - (0x103D6, 'X'), - (0x10400, 'M', '𐐨'), - (0x10401, 'M', '𐐩'), - (0x10402, 'M', '𐐪'), - (0x10403, 'M', '𐐫'), - (0x10404, 'M', '𐐬'), - (0x10405, 'M', '𐐭'), - (0x10406, 'M', '𐐮'), - (0x10407, 'M', '𐐯'), - (0x10408, 'M', '𐐰'), - (0x10409, 'M', '𐐱'), - (0x1040A, 'M', '𐐲'), - (0x1040B, 'M', '𐐳'), - (0x1040C, 'M', '𐐴'), - (0x1040D, 'M', '𐐵'), - (0x1040E, 'M', '𐐶'), - (0x1040F, 'M', '𐐷'), - (0x10410, 'M', '𐐸'), - (0x10411, 'M', '𐐹'), - (0x10412, 'M', '𐐺'), - (0x10413, 'M', '𐐻'), - (0x10414, 'M', '𐐼'), - (0x10415, 'M', '𐐽'), - (0x10416, 'M', '𐐾'), - (0x10417, 'M', '𐐿'), - (0x10418, 'M', '𐑀'), - (0x10419, 'M', '𐑁'), - (0x1041A, 'M', '𐑂'), - (0x1041B, 'M', '𐑃'), - (0x1041C, 'M', '𐑄'), - (0x1041D, 'M', '𐑅'), - (0x1041E, 'M', '𐑆'), - (0x1041F, 'M', '𐑇'), - (0x10420, 'M', '𐑈'), - (0x10421, 'M', '𐑉'), - (0x10422, 'M', '𐑊'), - (0x10423, 'M', '𐑋'), - (0x10424, 'M', '𐑌'), - (0x10425, 'M', '𐑍'), - (0x10426, 'M', '𐑎'), - (0x10427, 'M', '𐑏'), - (0x10428, 'V'), - (0x1049E, 'X'), - (0x104A0, 'V'), - (0x104AA, 'X'), - (0x104B0, 'M', '𐓘'), - (0x104B1, 'M', '𐓙'), - (0x104B2, 'M', '𐓚'), - (0x104B3, 'M', '𐓛'), - (0x104B4, 'M', '𐓜'), - (0x104B5, 'M', '𐓝'), + (0xFFEE, "M", "○"), + (0xFFEF, "X"), + (0x10000, "V"), + (0x1000C, "X"), + (0x1000D, "V"), + (0x10027, "X"), + (0x10028, "V"), + (0x1003B, "X"), + (0x1003C, "V"), + (0x1003E, "X"), + (0x1003F, "V"), + (0x1004E, "X"), + (0x10050, "V"), + (0x1005E, "X"), + (0x10080, "V"), + (0x100FB, "X"), + (0x10100, "V"), + (0x10103, "X"), + (0x10107, "V"), + (0x10134, "X"), + (0x10137, "V"), + (0x1018F, "X"), + (0x10190, "V"), + (0x1019D, "X"), + (0x101A0, "V"), + (0x101A1, "X"), + (0x101D0, "V"), + (0x101FE, "X"), + (0x10280, "V"), + (0x1029D, "X"), + (0x102A0, "V"), + (0x102D1, "X"), + (0x102E0, "V"), + (0x102FC, "X"), + (0x10300, "V"), + (0x10324, "X"), + (0x1032D, "V"), + (0x1034B, "X"), + (0x10350, "V"), + (0x1037B, "X"), + (0x10380, "V"), + (0x1039E, "X"), + (0x1039F, "V"), + (0x103C4, "X"), + (0x103C8, "V"), + (0x103D6, "X"), + (0x10400, "M", "𐐨"), + (0x10401, "M", "𐐩"), + (0x10402, "M", "𐐪"), + (0x10403, "M", "𐐫"), + (0x10404, "M", "𐐬"), + (0x10405, "M", "𐐭"), + (0x10406, "M", "𐐮"), + (0x10407, "M", "𐐯"), + (0x10408, "M", "𐐰"), + (0x10409, "M", "𐐱"), + (0x1040A, "M", "𐐲"), + (0x1040B, "M", "𐐳"), + (0x1040C, "M", "𐐴"), + (0x1040D, "M", "𐐵"), + (0x1040E, "M", "𐐶"), + (0x1040F, "M", "𐐷"), + (0x10410, "M", "𐐸"), + (0x10411, "M", "𐐹"), + (0x10412, "M", "𐐺"), + (0x10413, "M", "𐐻"), + (0x10414, "M", "𐐼"), + (0x10415, "M", "𐐽"), + (0x10416, "M", "𐐾"), + (0x10417, "M", "𐐿"), + (0x10418, "M", "𐑀"), + (0x10419, "M", "𐑁"), + (0x1041A, "M", "𐑂"), + (0x1041B, "M", "𐑃"), + (0x1041C, "M", "𐑄"), + (0x1041D, "M", "𐑅"), + (0x1041E, "M", "𐑆"), + (0x1041F, "M", "𐑇"), + (0x10420, "M", "𐑈"), + (0x10421, "M", "𐑉"), + (0x10422, "M", "𐑊"), + (0x10423, "M", "𐑋"), + (0x10424, "M", "𐑌"), + (0x10425, "M", "𐑍"), + (0x10426, "M", "𐑎"), + (0x10427, "M", "𐑏"), + (0x10428, "V"), + (0x1049E, "X"), + (0x104A0, "V"), + (0x104AA, "X"), + (0x104B0, "M", "𐓘"), + (0x104B1, "M", "𐓙"), + (0x104B2, "M", "𐓚"), + (0x104B3, "M", "𐓛"), + (0x104B4, "M", "𐓜"), + (0x104B5, "M", "𐓝"), + (0x104B6, "M", "𐓞"), + (0x104B7, "M", "𐓟"), + (0x104B8, "M", "𐓠"), + (0x104B9, "M", "𐓡"), ] + def _seg_54() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: return [ - (0x104B6, 'M', '𐓞'), - (0x104B7, 'M', '𐓟'), - (0x104B8, 'M', '𐓠'), - (0x104B9, 'M', '𐓡'), - (0x104BA, 'M', '𐓢'), - (0x104BB, 'M', '𐓣'), - (0x104BC, 'M', '𐓤'), - (0x104BD, 'M', '𐓥'), - (0x104BE, 'M', '𐓦'), - (0x104BF, 'M', '𐓧'), - (0x104C0, 'M', '𐓨'), - (0x104C1, 'M', '𐓩'), - (0x104C2, 'M', '𐓪'), - (0x104C3, 'M', '𐓫'), - (0x104C4, 'M', '𐓬'), - (0x104C5, 'M', '𐓭'), - (0x104C6, 'M', '𐓮'), - (0x104C7, 'M', '𐓯'), - (0x104C8, 'M', '𐓰'), - (0x104C9, 'M', '𐓱'), - (0x104CA, 'M', '𐓲'), - (0x104CB, 'M', '𐓳'), - (0x104CC, 'M', '𐓴'), - (0x104CD, 'M', '𐓵'), - (0x104CE, 'M', '𐓶'), - (0x104CF, 'M', '𐓷'), - (0x104D0, 'M', '𐓸'), - (0x104D1, 'M', '𐓹'), - (0x104D2, 'M', '𐓺'), - (0x104D3, 'M', '𐓻'), - (0x104D4, 'X'), - (0x104D8, 'V'), - (0x104FC, 'X'), - (0x10500, 'V'), - (0x10528, 'X'), - (0x10530, 'V'), - (0x10564, 'X'), - (0x1056F, 'V'), - (0x10570, 'M', '𐖗'), - (0x10571, 'M', '𐖘'), - (0x10572, 'M', '𐖙'), - (0x10573, 'M', '𐖚'), - (0x10574, 'M', '𐖛'), - (0x10575, 'M', '𐖜'), - (0x10576, 'M', '𐖝'), - (0x10577, 'M', '𐖞'), - (0x10578, 'M', '𐖟'), - (0x10579, 'M', '𐖠'), - (0x1057A, 'M', '𐖡'), - (0x1057B, 'X'), - (0x1057C, 'M', '𐖣'), - (0x1057D, 'M', '𐖤'), - (0x1057E, 'M', '𐖥'), - (0x1057F, 'M', '𐖦'), - (0x10580, 'M', '𐖧'), - (0x10581, 'M', '𐖨'), - (0x10582, 'M', '𐖩'), - (0x10583, 'M', '𐖪'), - (0x10584, 'M', '𐖫'), - (0x10585, 'M', '𐖬'), - (0x10586, 'M', '𐖭'), - (0x10587, 'M', '𐖮'), - (0x10588, 'M', '𐖯'), - (0x10589, 'M', '𐖰'), - (0x1058A, 'M', '𐖱'), - (0x1058B, 'X'), - (0x1058C, 'M', '𐖳'), - (0x1058D, 'M', '𐖴'), - (0x1058E, 'M', '𐖵'), - (0x1058F, 'M', '𐖶'), - (0x10590, 'M', '𐖷'), - (0x10591, 'M', '𐖸'), - (0x10592, 'M', '𐖹'), - (0x10593, 'X'), - (0x10594, 'M', '𐖻'), - (0x10595, 'M', '𐖼'), - (0x10596, 'X'), - (0x10597, 'V'), - (0x105A2, 'X'), - (0x105A3, 'V'), - (0x105B2, 'X'), - (0x105B3, 'V'), - (0x105BA, 'X'), - (0x105BB, 'V'), - (0x105BD, 'X'), - (0x10600, 'V'), - (0x10737, 'X'), - (0x10740, 'V'), - (0x10756, 'X'), - (0x10760, 'V'), - (0x10768, 'X'), - (0x10780, 'V'), - (0x10781, 'M', 'ː'), - (0x10782, 'M', 'ˑ'), - (0x10783, 'M', 'æ'), - (0x10784, 'M', 'ʙ'), - (0x10785, 'M', 'ɓ'), - (0x10786, 'X'), - (0x10787, 'M', 'ʣ'), - (0x10788, 'M', 'ꭦ'), + (0x104BA, "M", "𐓢"), + (0x104BB, "M", "𐓣"), + (0x104BC, "M", "𐓤"), + (0x104BD, "M", "𐓥"), + (0x104BE, "M", "𐓦"), + (0x104BF, "M", "𐓧"), + (0x104C0, "M", "𐓨"), + (0x104C1, "M", "𐓩"), + (0x104C2, "M", "𐓪"), + (0x104C3, "M", "𐓫"), + (0x104C4, "M", "𐓬"), + (0x104C5, "M", "𐓭"), + (0x104C6, "M", "𐓮"), + (0x104C7, "M", "𐓯"), + (0x104C8, "M", "𐓰"), + (0x104C9, "M", "𐓱"), + (0x104CA, "M", "𐓲"), + (0x104CB, "M", "𐓳"), + (0x104CC, "M", "𐓴"), + (0x104CD, "M", "𐓵"), + (0x104CE, "M", "𐓶"), + (0x104CF, "M", "𐓷"), + (0x104D0, "M", "𐓸"), + (0x104D1, "M", "𐓹"), + (0x104D2, "M", "𐓺"), + (0x104D3, "M", "𐓻"), + (0x104D4, "X"), + (0x104D8, "V"), + (0x104FC, "X"), + (0x10500, "V"), + (0x10528, "X"), + (0x10530, "V"), + (0x10564, "X"), + (0x1056F, "V"), + (0x10570, "M", "𐖗"), + (0x10571, "M", "𐖘"), + (0x10572, "M", "𐖙"), + (0x10573, "M", "𐖚"), + (0x10574, "M", "𐖛"), + (0x10575, "M", "𐖜"), + (0x10576, "M", "𐖝"), + (0x10577, "M", "𐖞"), + (0x10578, "M", "𐖟"), + (0x10579, "M", "𐖠"), + (0x1057A, "M", "𐖡"), + (0x1057B, "X"), + (0x1057C, "M", "𐖣"), + (0x1057D, "M", "𐖤"), + (0x1057E, "M", "𐖥"), + (0x1057F, "M", "𐖦"), + (0x10580, "M", "𐖧"), + (0x10581, "M", "𐖨"), + (0x10582, "M", "𐖩"), + (0x10583, "M", "𐖪"), + (0x10584, "M", "𐖫"), + (0x10585, "M", "𐖬"), + (0x10586, "M", "𐖭"), + (0x10587, "M", "𐖮"), + (0x10588, "M", "𐖯"), + (0x10589, "M", "𐖰"), + (0x1058A, "M", "𐖱"), + (0x1058B, "X"), + (0x1058C, "M", "𐖳"), + (0x1058D, "M", "𐖴"), + (0x1058E, "M", "𐖵"), + (0x1058F, "M", "𐖶"), + (0x10590, "M", "𐖷"), + (0x10591, "M", "𐖸"), + (0x10592, "M", "𐖹"), + (0x10593, "X"), + (0x10594, "M", "𐖻"), + (0x10595, "M", "𐖼"), + (0x10596, "X"), + (0x10597, "V"), + (0x105A2, "X"), + (0x105A3, "V"), + (0x105B2, "X"), + (0x105B3, "V"), + (0x105BA, "X"), + (0x105BB, "V"), + (0x105BD, "X"), + (0x10600, "V"), + (0x10737, "X"), + (0x10740, "V"), + (0x10756, "X"), + (0x10760, "V"), + (0x10768, "X"), + (0x10780, "V"), + (0x10781, "M", "ː"), + (0x10782, "M", "ˑ"), + (0x10783, "M", "æ"), + (0x10784, "M", "ʙ"), + (0x10785, "M", "ɓ"), + (0x10786, "X"), + (0x10787, "M", "ʣ"), + (0x10788, "M", "ꭦ"), + (0x10789, "M", "ʥ"), + (0x1078A, "M", "ʤ"), + (0x1078B, "M", "ɖ"), + (0x1078C, "M", "ɗ"), ] + def _seg_55() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: return [ - (0x10789, 'M', 'ʥ'), - (0x1078A, 'M', 'ʤ'), - (0x1078B, 'M', 'ɖ'), - (0x1078C, 'M', 'ɗ'), - (0x1078D, 'M', 'ᶑ'), - (0x1078E, 'M', 'ɘ'), - (0x1078F, 'M', 'ɞ'), - (0x10790, 'M', 'ʩ'), - (0x10791, 'M', 'ɤ'), - (0x10792, 'M', 'ɢ'), - (0x10793, 'M', 'ɠ'), - (0x10794, 'M', 'ʛ'), - (0x10795, 'M', 'ħ'), - (0x10796, 'M', 'ʜ'), - (0x10797, 'M', 'ɧ'), - (0x10798, 'M', 'ʄ'), - (0x10799, 'M', 'ʪ'), - (0x1079A, 'M', 'ʫ'), - (0x1079B, 'M', 'ɬ'), - (0x1079C, 'M', '𝼄'), - (0x1079D, 'M', 'ꞎ'), - (0x1079E, 'M', 'ɮ'), - (0x1079F, 'M', '𝼅'), - (0x107A0, 'M', 'ʎ'), - (0x107A1, 'M', '𝼆'), - (0x107A2, 'M', 'ø'), - (0x107A3, 'M', 'ɶ'), - (0x107A4, 'M', 'ɷ'), - (0x107A5, 'M', 'q'), - (0x107A6, 'M', 'ɺ'), - (0x107A7, 'M', '𝼈'), - (0x107A8, 'M', 'ɽ'), - (0x107A9, 'M', 'ɾ'), - (0x107AA, 'M', 'ʀ'), - (0x107AB, 'M', 'ʨ'), - (0x107AC, 'M', 'ʦ'), - (0x107AD, 'M', 'ꭧ'), - (0x107AE, 'M', 'ʧ'), - (0x107AF, 'M', 'ʈ'), - (0x107B0, 'M', 'ⱱ'), - (0x107B1, 'X'), - (0x107B2, 'M', 'ʏ'), - (0x107B3, 'M', 'ʡ'), - (0x107B4, 'M', 'ʢ'), - (0x107B5, 'M', 'ʘ'), - (0x107B6, 'M', 'ǀ'), - (0x107B7, 'M', 'ǁ'), - (0x107B8, 'M', 'ǂ'), - (0x107B9, 'M', '𝼊'), - (0x107BA, 'M', '𝼞'), - (0x107BB, 'X'), - (0x10800, 'V'), - (0x10806, 'X'), - (0x10808, 'V'), - (0x10809, 'X'), - (0x1080A, 'V'), - (0x10836, 'X'), - (0x10837, 'V'), - (0x10839, 'X'), - (0x1083C, 'V'), - (0x1083D, 'X'), - (0x1083F, 'V'), - (0x10856, 'X'), - (0x10857, 'V'), - (0x1089F, 'X'), - (0x108A7, 'V'), - (0x108B0, 'X'), - (0x108E0, 'V'), - (0x108F3, 'X'), - (0x108F4, 'V'), - (0x108F6, 'X'), - (0x108FB, 'V'), - (0x1091C, 'X'), - (0x1091F, 'V'), - (0x1093A, 'X'), - (0x1093F, 'V'), - (0x10940, 'X'), - (0x10980, 'V'), - (0x109B8, 'X'), - (0x109BC, 'V'), - (0x109D0, 'X'), - (0x109D2, 'V'), - (0x10A04, 'X'), - (0x10A05, 'V'), - (0x10A07, 'X'), - (0x10A0C, 'V'), - (0x10A14, 'X'), - (0x10A15, 'V'), - (0x10A18, 'X'), - (0x10A19, 'V'), - (0x10A36, 'X'), - (0x10A38, 'V'), - (0x10A3B, 'X'), - (0x10A3F, 'V'), - (0x10A49, 'X'), - (0x10A50, 'V'), - (0x10A59, 'X'), - (0x10A60, 'V'), - (0x10AA0, 'X'), - (0x10AC0, 'V'), + (0x1078D, "M", "ᶑ"), + (0x1078E, "M", "ɘ"), + (0x1078F, "M", "ɞ"), + (0x10790, "M", "ʩ"), + (0x10791, "M", "ɤ"), + (0x10792, "M", "ɢ"), + (0x10793, "M", "ɠ"), + (0x10794, "M", "ʛ"), + (0x10795, "M", "ħ"), + (0x10796, "M", "ʜ"), + (0x10797, "M", "ɧ"), + (0x10798, "M", "ʄ"), + (0x10799, "M", "ʪ"), + (0x1079A, "M", "ʫ"), + (0x1079B, "M", "ɬ"), + (0x1079C, "M", "𝼄"), + (0x1079D, "M", "ꞎ"), + (0x1079E, "M", "ɮ"), + (0x1079F, "M", "𝼅"), + (0x107A0, "M", "ʎ"), + (0x107A1, "M", "𝼆"), + (0x107A2, "M", "ø"), + (0x107A3, "M", "ɶ"), + (0x107A4, "M", "ɷ"), + (0x107A5, "M", "q"), + (0x107A6, "M", "ɺ"), + (0x107A7, "M", "𝼈"), + (0x107A8, "M", "ɽ"), + (0x107A9, "M", "ɾ"), + (0x107AA, "M", "ʀ"), + (0x107AB, "M", "ʨ"), + (0x107AC, "M", "ʦ"), + (0x107AD, "M", "ꭧ"), + (0x107AE, "M", "ʧ"), + (0x107AF, "M", "ʈ"), + (0x107B0, "M", "ⱱ"), + (0x107B1, "X"), + (0x107B2, "M", "ʏ"), + (0x107B3, "M", "ʡ"), + (0x107B4, "M", "ʢ"), + (0x107B5, "M", "ʘ"), + (0x107B6, "M", "ǀ"), + (0x107B7, "M", "ǁ"), + (0x107B8, "M", "ǂ"), + (0x107B9, "M", "𝼊"), + (0x107BA, "M", "𝼞"), + (0x107BB, "X"), + (0x10800, "V"), + (0x10806, "X"), + (0x10808, "V"), + (0x10809, "X"), + (0x1080A, "V"), + (0x10836, "X"), + (0x10837, "V"), + (0x10839, "X"), + (0x1083C, "V"), + (0x1083D, "X"), + (0x1083F, "V"), + (0x10856, "X"), + (0x10857, "V"), + (0x1089F, "X"), + (0x108A7, "V"), + (0x108B0, "X"), + (0x108E0, "V"), + (0x108F3, "X"), + (0x108F4, "V"), + (0x108F6, "X"), + (0x108FB, "V"), + (0x1091C, "X"), + (0x1091F, "V"), + (0x1093A, "X"), + (0x1093F, "V"), + (0x10940, "X"), + (0x10980, "V"), + (0x109B8, "X"), + (0x109BC, "V"), + (0x109D0, "X"), + (0x109D2, "V"), + (0x10A04, "X"), + (0x10A05, "V"), + (0x10A07, "X"), + (0x10A0C, "V"), + (0x10A14, "X"), + (0x10A15, "V"), + (0x10A18, "X"), + (0x10A19, "V"), + (0x10A36, "X"), + (0x10A38, "V"), + (0x10A3B, "X"), + (0x10A3F, "V"), + (0x10A49, "X"), + (0x10A50, "V"), + (0x10A59, "X"), + (0x10A60, "V"), + (0x10AA0, "X"), + (0x10AC0, "V"), + (0x10AE7, "X"), + (0x10AEB, "V"), + (0x10AF7, "X"), + (0x10B00, "V"), ] + def _seg_56() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: return [ - (0x10AE7, 'X'), - (0x10AEB, 'V'), - (0x10AF7, 'X'), - (0x10B00, 'V'), - (0x10B36, 'X'), - (0x10B39, 'V'), - (0x10B56, 'X'), - (0x10B58, 'V'), - (0x10B73, 'X'), - (0x10B78, 'V'), - (0x10B92, 'X'), - (0x10B99, 'V'), - (0x10B9D, 'X'), - (0x10BA9, 'V'), - (0x10BB0, 'X'), - (0x10C00, 'V'), - (0x10C49, 'X'), - (0x10C80, 'M', '𐳀'), - (0x10C81, 'M', '𐳁'), - (0x10C82, 'M', '𐳂'), - (0x10C83, 'M', '𐳃'), - (0x10C84, 'M', '𐳄'), - (0x10C85, 'M', '𐳅'), - (0x10C86, 'M', '𐳆'), - (0x10C87, 'M', '𐳇'), - (0x10C88, 'M', '𐳈'), - (0x10C89, 'M', '𐳉'), - (0x10C8A, 'M', '𐳊'), - (0x10C8B, 'M', '𐳋'), - (0x10C8C, 'M', '𐳌'), - (0x10C8D, 'M', '𐳍'), - (0x10C8E, 'M', '𐳎'), - (0x10C8F, 'M', '𐳏'), - (0x10C90, 'M', '𐳐'), - (0x10C91, 'M', '𐳑'), - (0x10C92, 'M', '𐳒'), - (0x10C93, 'M', '𐳓'), - (0x10C94, 'M', '𐳔'), - (0x10C95, 'M', '𐳕'), - (0x10C96, 'M', '𐳖'), - (0x10C97, 'M', '𐳗'), - (0x10C98, 'M', '𐳘'), - (0x10C99, 'M', '𐳙'), - (0x10C9A, 'M', '𐳚'), - (0x10C9B, 'M', '𐳛'), - (0x10C9C, 'M', '𐳜'), - (0x10C9D, 'M', '𐳝'), - (0x10C9E, 'M', '𐳞'), - (0x10C9F, 'M', '𐳟'), - (0x10CA0, 'M', '𐳠'), - (0x10CA1, 'M', '𐳡'), - (0x10CA2, 'M', '𐳢'), - (0x10CA3, 'M', '𐳣'), - (0x10CA4, 'M', '𐳤'), - (0x10CA5, 'M', '𐳥'), - (0x10CA6, 'M', '𐳦'), - (0x10CA7, 'M', '𐳧'), - (0x10CA8, 'M', '𐳨'), - (0x10CA9, 'M', '𐳩'), - (0x10CAA, 'M', '𐳪'), - (0x10CAB, 'M', '𐳫'), - (0x10CAC, 'M', '𐳬'), - (0x10CAD, 'M', '𐳭'), - (0x10CAE, 'M', '𐳮'), - (0x10CAF, 'M', '𐳯'), - (0x10CB0, 'M', '𐳰'), - (0x10CB1, 'M', '𐳱'), - (0x10CB2, 'M', '𐳲'), - (0x10CB3, 'X'), - (0x10CC0, 'V'), - (0x10CF3, 'X'), - (0x10CFA, 'V'), - (0x10D28, 'X'), - (0x10D30, 'V'), - (0x10D3A, 'X'), - (0x10E60, 'V'), - (0x10E7F, 'X'), - (0x10E80, 'V'), - (0x10EAA, 'X'), - (0x10EAB, 'V'), - (0x10EAE, 'X'), - (0x10EB0, 'V'), - (0x10EB2, 'X'), - (0x10EFD, 'V'), - (0x10F28, 'X'), - (0x10F30, 'V'), - (0x10F5A, 'X'), - (0x10F70, 'V'), - (0x10F8A, 'X'), - (0x10FB0, 'V'), - (0x10FCC, 'X'), - (0x10FE0, 'V'), - (0x10FF7, 'X'), - (0x11000, 'V'), - (0x1104E, 'X'), - (0x11052, 'V'), - (0x11076, 'X'), - (0x1107F, 'V'), - (0x110BD, 'X'), - (0x110BE, 'V'), + (0x10B36, "X"), + (0x10B39, "V"), + (0x10B56, "X"), + (0x10B58, "V"), + (0x10B73, "X"), + (0x10B78, "V"), + (0x10B92, "X"), + (0x10B99, "V"), + (0x10B9D, "X"), + (0x10BA9, "V"), + (0x10BB0, "X"), + (0x10C00, "V"), + (0x10C49, "X"), + (0x10C80, "M", "𐳀"), + (0x10C81, "M", "𐳁"), + (0x10C82, "M", "𐳂"), + (0x10C83, "M", "𐳃"), + (0x10C84, "M", "𐳄"), + (0x10C85, "M", "𐳅"), + (0x10C86, "M", "𐳆"), + (0x10C87, "M", "𐳇"), + (0x10C88, "M", "𐳈"), + (0x10C89, "M", "𐳉"), + (0x10C8A, "M", "𐳊"), + (0x10C8B, "M", "𐳋"), + (0x10C8C, "M", "𐳌"), + (0x10C8D, "M", "𐳍"), + (0x10C8E, "M", "𐳎"), + (0x10C8F, "M", "𐳏"), + (0x10C90, "M", "𐳐"), + (0x10C91, "M", "𐳑"), + (0x10C92, "M", "𐳒"), + (0x10C93, "M", "𐳓"), + (0x10C94, "M", "𐳔"), + (0x10C95, "M", "𐳕"), + (0x10C96, "M", "𐳖"), + (0x10C97, "M", "𐳗"), + (0x10C98, "M", "𐳘"), + (0x10C99, "M", "𐳙"), + (0x10C9A, "M", "𐳚"), + (0x10C9B, "M", "𐳛"), + (0x10C9C, "M", "𐳜"), + (0x10C9D, "M", "𐳝"), + (0x10C9E, "M", "𐳞"), + (0x10C9F, "M", "𐳟"), + (0x10CA0, "M", "𐳠"), + (0x10CA1, "M", "𐳡"), + (0x10CA2, "M", "𐳢"), + (0x10CA3, "M", "𐳣"), + (0x10CA4, "M", "𐳤"), + (0x10CA5, "M", "𐳥"), + (0x10CA6, "M", "𐳦"), + (0x10CA7, "M", "𐳧"), + (0x10CA8, "M", "𐳨"), + (0x10CA9, "M", "𐳩"), + (0x10CAA, "M", "𐳪"), + (0x10CAB, "M", "𐳫"), + (0x10CAC, "M", "𐳬"), + (0x10CAD, "M", "𐳭"), + (0x10CAE, "M", "𐳮"), + (0x10CAF, "M", "𐳯"), + (0x10CB0, "M", "𐳰"), + (0x10CB1, "M", "𐳱"), + (0x10CB2, "M", "𐳲"), + (0x10CB3, "X"), + (0x10CC0, "V"), + (0x10CF3, "X"), + (0x10CFA, "V"), + (0x10D28, "X"), + (0x10D30, "V"), + (0x10D3A, "X"), + (0x10E60, "V"), + (0x10E7F, "X"), + (0x10E80, "V"), + (0x10EAA, "X"), + (0x10EAB, "V"), + (0x10EAE, "X"), + (0x10EB0, "V"), + (0x10EB2, "X"), + (0x10EFD, "V"), + (0x10F28, "X"), + (0x10F30, "V"), + (0x10F5A, "X"), + (0x10F70, "V"), + (0x10F8A, "X"), + (0x10FB0, "V"), + (0x10FCC, "X"), + (0x10FE0, "V"), + (0x10FF7, "X"), + (0x11000, "V"), + (0x1104E, "X"), + (0x11052, "V"), + (0x11076, "X"), + (0x1107F, "V"), + (0x110BD, "X"), + (0x110BE, "V"), + (0x110C3, "X"), + (0x110D0, "V"), + (0x110E9, "X"), + (0x110F0, "V"), ] + def _seg_57() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: return [ - (0x110C3, 'X'), - (0x110D0, 'V'), - (0x110E9, 'X'), - (0x110F0, 'V'), - (0x110FA, 'X'), - (0x11100, 'V'), - (0x11135, 'X'), - (0x11136, 'V'), - (0x11148, 'X'), - (0x11150, 'V'), - (0x11177, 'X'), - (0x11180, 'V'), - (0x111E0, 'X'), - (0x111E1, 'V'), - (0x111F5, 'X'), - (0x11200, 'V'), - (0x11212, 'X'), - (0x11213, 'V'), - (0x11242, 'X'), - (0x11280, 'V'), - (0x11287, 'X'), - (0x11288, 'V'), - (0x11289, 'X'), - (0x1128A, 'V'), - (0x1128E, 'X'), - (0x1128F, 'V'), - (0x1129E, 'X'), - (0x1129F, 'V'), - (0x112AA, 'X'), - (0x112B0, 'V'), - (0x112EB, 'X'), - (0x112F0, 'V'), - (0x112FA, 'X'), - (0x11300, 'V'), - (0x11304, 'X'), - (0x11305, 'V'), - (0x1130D, 'X'), - (0x1130F, 'V'), - (0x11311, 'X'), - (0x11313, 'V'), - (0x11329, 'X'), - (0x1132A, 'V'), - (0x11331, 'X'), - (0x11332, 'V'), - (0x11334, 'X'), - (0x11335, 'V'), - (0x1133A, 'X'), - (0x1133B, 'V'), - (0x11345, 'X'), - (0x11347, 'V'), - (0x11349, 'X'), - (0x1134B, 'V'), - (0x1134E, 'X'), - (0x11350, 'V'), - (0x11351, 'X'), - (0x11357, 'V'), - (0x11358, 'X'), - (0x1135D, 'V'), - (0x11364, 'X'), - (0x11366, 'V'), - (0x1136D, 'X'), - (0x11370, 'V'), - (0x11375, 'X'), - (0x11400, 'V'), - (0x1145C, 'X'), - (0x1145D, 'V'), - (0x11462, 'X'), - (0x11480, 'V'), - (0x114C8, 'X'), - (0x114D0, 'V'), - (0x114DA, 'X'), - (0x11580, 'V'), - (0x115B6, 'X'), - (0x115B8, 'V'), - (0x115DE, 'X'), - (0x11600, 'V'), - (0x11645, 'X'), - (0x11650, 'V'), - (0x1165A, 'X'), - (0x11660, 'V'), - (0x1166D, 'X'), - (0x11680, 'V'), - (0x116BA, 'X'), - (0x116C0, 'V'), - (0x116CA, 'X'), - (0x11700, 'V'), - (0x1171B, 'X'), - (0x1171D, 'V'), - (0x1172C, 'X'), - (0x11730, 'V'), - (0x11747, 'X'), - (0x11800, 'V'), - (0x1183C, 'X'), - (0x118A0, 'M', '𑣀'), - (0x118A1, 'M', '𑣁'), - (0x118A2, 'M', '𑣂'), - (0x118A3, 'M', '𑣃'), - (0x118A4, 'M', '𑣄'), - (0x118A5, 'M', '𑣅'), - (0x118A6, 'M', '𑣆'), + (0x110FA, "X"), + (0x11100, "V"), + (0x11135, "X"), + (0x11136, "V"), + (0x11148, "X"), + (0x11150, "V"), + (0x11177, "X"), + (0x11180, "V"), + (0x111E0, "X"), + (0x111E1, "V"), + (0x111F5, "X"), + (0x11200, "V"), + (0x11212, "X"), + (0x11213, "V"), + (0x11242, "X"), + (0x11280, "V"), + (0x11287, "X"), + (0x11288, "V"), + (0x11289, "X"), + (0x1128A, "V"), + (0x1128E, "X"), + (0x1128F, "V"), + (0x1129E, "X"), + (0x1129F, "V"), + (0x112AA, "X"), + (0x112B0, "V"), + (0x112EB, "X"), + (0x112F0, "V"), + (0x112FA, "X"), + (0x11300, "V"), + (0x11304, "X"), + (0x11305, "V"), + (0x1130D, "X"), + (0x1130F, "V"), + (0x11311, "X"), + (0x11313, "V"), + (0x11329, "X"), + (0x1132A, "V"), + (0x11331, "X"), + (0x11332, "V"), + (0x11334, "X"), + (0x11335, "V"), + (0x1133A, "X"), + (0x1133B, "V"), + (0x11345, "X"), + (0x11347, "V"), + (0x11349, "X"), + (0x1134B, "V"), + (0x1134E, "X"), + (0x11350, "V"), + (0x11351, "X"), + (0x11357, "V"), + (0x11358, "X"), + (0x1135D, "V"), + (0x11364, "X"), + (0x11366, "V"), + (0x1136D, "X"), + (0x11370, "V"), + (0x11375, "X"), + (0x11400, "V"), + (0x1145C, "X"), + (0x1145D, "V"), + (0x11462, "X"), + (0x11480, "V"), + (0x114C8, "X"), + (0x114D0, "V"), + (0x114DA, "X"), + (0x11580, "V"), + (0x115B6, "X"), + (0x115B8, "V"), + (0x115DE, "X"), + (0x11600, "V"), + (0x11645, "X"), + (0x11650, "V"), + (0x1165A, "X"), + (0x11660, "V"), + (0x1166D, "X"), + (0x11680, "V"), + (0x116BA, "X"), + (0x116C0, "V"), + (0x116CA, "X"), + (0x11700, "V"), + (0x1171B, "X"), + (0x1171D, "V"), + (0x1172C, "X"), + (0x11730, "V"), + (0x11747, "X"), + (0x11800, "V"), + (0x1183C, "X"), + (0x118A0, "M", "𑣀"), + (0x118A1, "M", "𑣁"), + (0x118A2, "M", "𑣂"), + (0x118A3, "M", "𑣃"), + (0x118A4, "M", "𑣄"), + (0x118A5, "M", "𑣅"), + (0x118A6, "M", "𑣆"), + (0x118A7, "M", "𑣇"), + (0x118A8, "M", "𑣈"), + (0x118A9, "M", "𑣉"), + (0x118AA, "M", "𑣊"), ] + def _seg_58() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: return [ - (0x118A7, 'M', '𑣇'), - (0x118A8, 'M', '𑣈'), - (0x118A9, 'M', '𑣉'), - (0x118AA, 'M', '𑣊'), - (0x118AB, 'M', '𑣋'), - (0x118AC, 'M', '𑣌'), - (0x118AD, 'M', '𑣍'), - (0x118AE, 'M', '𑣎'), - (0x118AF, 'M', '𑣏'), - (0x118B0, 'M', '𑣐'), - (0x118B1, 'M', '𑣑'), - (0x118B2, 'M', '𑣒'), - (0x118B3, 'M', '𑣓'), - (0x118B4, 'M', '𑣔'), - (0x118B5, 'M', '𑣕'), - (0x118B6, 'M', '𑣖'), - (0x118B7, 'M', '𑣗'), - (0x118B8, 'M', '𑣘'), - (0x118B9, 'M', '𑣙'), - (0x118BA, 'M', '𑣚'), - (0x118BB, 'M', '𑣛'), - (0x118BC, 'M', '𑣜'), - (0x118BD, 'M', '𑣝'), - (0x118BE, 'M', '𑣞'), - (0x118BF, 'M', '𑣟'), - (0x118C0, 'V'), - (0x118F3, 'X'), - (0x118FF, 'V'), - (0x11907, 'X'), - (0x11909, 'V'), - (0x1190A, 'X'), - (0x1190C, 'V'), - (0x11914, 'X'), - (0x11915, 'V'), - (0x11917, 'X'), - (0x11918, 'V'), - (0x11936, 'X'), - (0x11937, 'V'), - (0x11939, 'X'), - (0x1193B, 'V'), - (0x11947, 'X'), - (0x11950, 'V'), - (0x1195A, 'X'), - (0x119A0, 'V'), - (0x119A8, 'X'), - (0x119AA, 'V'), - (0x119D8, 'X'), - (0x119DA, 'V'), - (0x119E5, 'X'), - (0x11A00, 'V'), - (0x11A48, 'X'), - (0x11A50, 'V'), - (0x11AA3, 'X'), - (0x11AB0, 'V'), - (0x11AF9, 'X'), - (0x11B00, 'V'), - (0x11B0A, 'X'), - (0x11C00, 'V'), - (0x11C09, 'X'), - (0x11C0A, 'V'), - (0x11C37, 'X'), - (0x11C38, 'V'), - (0x11C46, 'X'), - (0x11C50, 'V'), - (0x11C6D, 'X'), - (0x11C70, 'V'), - (0x11C90, 'X'), - (0x11C92, 'V'), - (0x11CA8, 'X'), - (0x11CA9, 'V'), - (0x11CB7, 'X'), - (0x11D00, 'V'), - (0x11D07, 'X'), - (0x11D08, 'V'), - (0x11D0A, 'X'), - (0x11D0B, 'V'), - (0x11D37, 'X'), - (0x11D3A, 'V'), - (0x11D3B, 'X'), - (0x11D3C, 'V'), - (0x11D3E, 'X'), - (0x11D3F, 'V'), - (0x11D48, 'X'), - (0x11D50, 'V'), - (0x11D5A, 'X'), - (0x11D60, 'V'), - (0x11D66, 'X'), - (0x11D67, 'V'), - (0x11D69, 'X'), - (0x11D6A, 'V'), - (0x11D8F, 'X'), - (0x11D90, 'V'), - (0x11D92, 'X'), - (0x11D93, 'V'), - (0x11D99, 'X'), - (0x11DA0, 'V'), - (0x11DAA, 'X'), - (0x11EE0, 'V'), - (0x11EF9, 'X'), - (0x11F00, 'V'), + (0x118AB, "M", "𑣋"), + (0x118AC, "M", "𑣌"), + (0x118AD, "M", "𑣍"), + (0x118AE, "M", "𑣎"), + (0x118AF, "M", "𑣏"), + (0x118B0, "M", "𑣐"), + (0x118B1, "M", "𑣑"), + (0x118B2, "M", "𑣒"), + (0x118B3, "M", "𑣓"), + (0x118B4, "M", "𑣔"), + (0x118B5, "M", "𑣕"), + (0x118B6, "M", "𑣖"), + (0x118B7, "M", "𑣗"), + (0x118B8, "M", "𑣘"), + (0x118B9, "M", "𑣙"), + (0x118BA, "M", "𑣚"), + (0x118BB, "M", "𑣛"), + (0x118BC, "M", "𑣜"), + (0x118BD, "M", "𑣝"), + (0x118BE, "M", "𑣞"), + (0x118BF, "M", "𑣟"), + (0x118C0, "V"), + (0x118F3, "X"), + (0x118FF, "V"), + (0x11907, "X"), + (0x11909, "V"), + (0x1190A, "X"), + (0x1190C, "V"), + (0x11914, "X"), + (0x11915, "V"), + (0x11917, "X"), + (0x11918, "V"), + (0x11936, "X"), + (0x11937, "V"), + (0x11939, "X"), + (0x1193B, "V"), + (0x11947, "X"), + (0x11950, "V"), + (0x1195A, "X"), + (0x119A0, "V"), + (0x119A8, "X"), + (0x119AA, "V"), + (0x119D8, "X"), + (0x119DA, "V"), + (0x119E5, "X"), + (0x11A00, "V"), + (0x11A48, "X"), + (0x11A50, "V"), + (0x11AA3, "X"), + (0x11AB0, "V"), + (0x11AF9, "X"), + (0x11B00, "V"), + (0x11B0A, "X"), + (0x11C00, "V"), + (0x11C09, "X"), + (0x11C0A, "V"), + (0x11C37, "X"), + (0x11C38, "V"), + (0x11C46, "X"), + (0x11C50, "V"), + (0x11C6D, "X"), + (0x11C70, "V"), + (0x11C90, "X"), + (0x11C92, "V"), + (0x11CA8, "X"), + (0x11CA9, "V"), + (0x11CB7, "X"), + (0x11D00, "V"), + (0x11D07, "X"), + (0x11D08, "V"), + (0x11D0A, "X"), + (0x11D0B, "V"), + (0x11D37, "X"), + (0x11D3A, "V"), + (0x11D3B, "X"), + (0x11D3C, "V"), + (0x11D3E, "X"), + (0x11D3F, "V"), + (0x11D48, "X"), + (0x11D50, "V"), + (0x11D5A, "X"), + (0x11D60, "V"), + (0x11D66, "X"), + (0x11D67, "V"), + (0x11D69, "X"), + (0x11D6A, "V"), + (0x11D8F, "X"), + (0x11D90, "V"), + (0x11D92, "X"), + (0x11D93, "V"), + (0x11D99, "X"), + (0x11DA0, "V"), + (0x11DAA, "X"), + (0x11EE0, "V"), + (0x11EF9, "X"), + (0x11F00, "V"), + (0x11F11, "X"), + (0x11F12, "V"), + (0x11F3B, "X"), + (0x11F3E, "V"), ] + def _seg_59() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: return [ - (0x11F11, 'X'), - (0x11F12, 'V'), - (0x11F3B, 'X'), - (0x11F3E, 'V'), - (0x11F5A, 'X'), - (0x11FB0, 'V'), - (0x11FB1, 'X'), - (0x11FC0, 'V'), - (0x11FF2, 'X'), - (0x11FFF, 'V'), - (0x1239A, 'X'), - (0x12400, 'V'), - (0x1246F, 'X'), - (0x12470, 'V'), - (0x12475, 'X'), - (0x12480, 'V'), - (0x12544, 'X'), - (0x12F90, 'V'), - (0x12FF3, 'X'), - (0x13000, 'V'), - (0x13430, 'X'), - (0x13440, 'V'), - (0x13456, 'X'), - (0x14400, 'V'), - (0x14647, 'X'), - (0x16800, 'V'), - (0x16A39, 'X'), - (0x16A40, 'V'), - (0x16A5F, 'X'), - (0x16A60, 'V'), - (0x16A6A, 'X'), - (0x16A6E, 'V'), - (0x16ABF, 'X'), - (0x16AC0, 'V'), - (0x16ACA, 'X'), - (0x16AD0, 'V'), - (0x16AEE, 'X'), - (0x16AF0, 'V'), - (0x16AF6, 'X'), - (0x16B00, 'V'), - (0x16B46, 'X'), - (0x16B50, 'V'), - (0x16B5A, 'X'), - (0x16B5B, 'V'), - (0x16B62, 'X'), - (0x16B63, 'V'), - (0x16B78, 'X'), - (0x16B7D, 'V'), - (0x16B90, 'X'), - (0x16E40, 'M', '𖹠'), - (0x16E41, 'M', '𖹡'), - (0x16E42, 'M', '𖹢'), - (0x16E43, 'M', '𖹣'), - (0x16E44, 'M', '𖹤'), - (0x16E45, 'M', '𖹥'), - (0x16E46, 'M', '𖹦'), - (0x16E47, 'M', '𖹧'), - (0x16E48, 'M', '𖹨'), - (0x16E49, 'M', '𖹩'), - (0x16E4A, 'M', '𖹪'), - (0x16E4B, 'M', '𖹫'), - (0x16E4C, 'M', '𖹬'), - (0x16E4D, 'M', '𖹭'), - (0x16E4E, 'M', '𖹮'), - (0x16E4F, 'M', '𖹯'), - (0x16E50, 'M', '𖹰'), - (0x16E51, 'M', '𖹱'), - (0x16E52, 'M', '𖹲'), - (0x16E53, 'M', '𖹳'), - (0x16E54, 'M', '𖹴'), - (0x16E55, 'M', '𖹵'), - (0x16E56, 'M', '𖹶'), - (0x16E57, 'M', '𖹷'), - (0x16E58, 'M', '𖹸'), - (0x16E59, 'M', '𖹹'), - (0x16E5A, 'M', '𖹺'), - (0x16E5B, 'M', '𖹻'), - (0x16E5C, 'M', '𖹼'), - (0x16E5D, 'M', '𖹽'), - (0x16E5E, 'M', '𖹾'), - (0x16E5F, 'M', '𖹿'), - (0x16E60, 'V'), - (0x16E9B, 'X'), - (0x16F00, 'V'), - (0x16F4B, 'X'), - (0x16F4F, 'V'), - (0x16F88, 'X'), - (0x16F8F, 'V'), - (0x16FA0, 'X'), - (0x16FE0, 'V'), - (0x16FE5, 'X'), - (0x16FF0, 'V'), - (0x16FF2, 'X'), - (0x17000, 'V'), - (0x187F8, 'X'), - (0x18800, 'V'), - (0x18CD6, 'X'), - (0x18D00, 'V'), - (0x18D09, 'X'), - (0x1AFF0, 'V'), + (0x11F5A, "X"), + (0x11FB0, "V"), + (0x11FB1, "X"), + (0x11FC0, "V"), + (0x11FF2, "X"), + (0x11FFF, "V"), + (0x1239A, "X"), + (0x12400, "V"), + (0x1246F, "X"), + (0x12470, "V"), + (0x12475, "X"), + (0x12480, "V"), + (0x12544, "X"), + (0x12F90, "V"), + (0x12FF3, "X"), + (0x13000, "V"), + (0x13430, "X"), + (0x13440, "V"), + (0x13456, "X"), + (0x14400, "V"), + (0x14647, "X"), + (0x16800, "V"), + (0x16A39, "X"), + (0x16A40, "V"), + (0x16A5F, "X"), + (0x16A60, "V"), + (0x16A6A, "X"), + (0x16A6E, "V"), + (0x16ABF, "X"), + (0x16AC0, "V"), + (0x16ACA, "X"), + (0x16AD0, "V"), + (0x16AEE, "X"), + (0x16AF0, "V"), + (0x16AF6, "X"), + (0x16B00, "V"), + (0x16B46, "X"), + (0x16B50, "V"), + (0x16B5A, "X"), + (0x16B5B, "V"), + (0x16B62, "X"), + (0x16B63, "V"), + (0x16B78, "X"), + (0x16B7D, "V"), + (0x16B90, "X"), + (0x16E40, "M", "𖹠"), + (0x16E41, "M", "𖹡"), + (0x16E42, "M", "𖹢"), + (0x16E43, "M", "𖹣"), + (0x16E44, "M", "𖹤"), + (0x16E45, "M", "𖹥"), + (0x16E46, "M", "𖹦"), + (0x16E47, "M", "𖹧"), + (0x16E48, "M", "𖹨"), + (0x16E49, "M", "𖹩"), + (0x16E4A, "M", "𖹪"), + (0x16E4B, "M", "𖹫"), + (0x16E4C, "M", "𖹬"), + (0x16E4D, "M", "𖹭"), + (0x16E4E, "M", "𖹮"), + (0x16E4F, "M", "𖹯"), + (0x16E50, "M", "𖹰"), + (0x16E51, "M", "𖹱"), + (0x16E52, "M", "𖹲"), + (0x16E53, "M", "𖹳"), + (0x16E54, "M", "𖹴"), + (0x16E55, "M", "𖹵"), + (0x16E56, "M", "𖹶"), + (0x16E57, "M", "𖹷"), + (0x16E58, "M", "𖹸"), + (0x16E59, "M", "𖹹"), + (0x16E5A, "M", "𖹺"), + (0x16E5B, "M", "𖹻"), + (0x16E5C, "M", "𖹼"), + (0x16E5D, "M", "𖹽"), + (0x16E5E, "M", "𖹾"), + (0x16E5F, "M", "𖹿"), + (0x16E60, "V"), + (0x16E9B, "X"), + (0x16F00, "V"), + (0x16F4B, "X"), + (0x16F4F, "V"), + (0x16F88, "X"), + (0x16F8F, "V"), + (0x16FA0, "X"), + (0x16FE0, "V"), + (0x16FE5, "X"), + (0x16FF0, "V"), + (0x16FF2, "X"), + (0x17000, "V"), + (0x187F8, "X"), + (0x18800, "V"), + (0x18CD6, "X"), + (0x18D00, "V"), + (0x18D09, "X"), + (0x1AFF0, "V"), + (0x1AFF4, "X"), + (0x1AFF5, "V"), + (0x1AFFC, "X"), + (0x1AFFD, "V"), ] + def _seg_60() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: return [ - (0x1AFF4, 'X'), - (0x1AFF5, 'V'), - (0x1AFFC, 'X'), - (0x1AFFD, 'V'), - (0x1AFFF, 'X'), - (0x1B000, 'V'), - (0x1B123, 'X'), - (0x1B132, 'V'), - (0x1B133, 'X'), - (0x1B150, 'V'), - (0x1B153, 'X'), - (0x1B155, 'V'), - (0x1B156, 'X'), - (0x1B164, 'V'), - (0x1B168, 'X'), - (0x1B170, 'V'), - (0x1B2FC, 'X'), - (0x1BC00, 'V'), - (0x1BC6B, 'X'), - (0x1BC70, 'V'), - (0x1BC7D, 'X'), - (0x1BC80, 'V'), - (0x1BC89, 'X'), - (0x1BC90, 'V'), - (0x1BC9A, 'X'), - (0x1BC9C, 'V'), - (0x1BCA0, 'I'), - (0x1BCA4, 'X'), - (0x1CF00, 'V'), - (0x1CF2E, 'X'), - (0x1CF30, 'V'), - (0x1CF47, 'X'), - (0x1CF50, 'V'), - (0x1CFC4, 'X'), - (0x1D000, 'V'), - (0x1D0F6, 'X'), - (0x1D100, 'V'), - (0x1D127, 'X'), - (0x1D129, 'V'), - (0x1D15E, 'M', '𝅗𝅥'), - (0x1D15F, 'M', '𝅘𝅥'), - (0x1D160, 'M', '𝅘𝅥𝅮'), - (0x1D161, 'M', '𝅘𝅥𝅯'), - (0x1D162, 'M', '𝅘𝅥𝅰'), - (0x1D163, 'M', '𝅘𝅥𝅱'), - (0x1D164, 'M', '𝅘𝅥𝅲'), - (0x1D165, 'V'), - (0x1D173, 'X'), - (0x1D17B, 'V'), - (0x1D1BB, 'M', '𝆹𝅥'), - (0x1D1BC, 'M', '𝆺𝅥'), - (0x1D1BD, 'M', '𝆹𝅥𝅮'), - (0x1D1BE, 'M', '𝆺𝅥𝅮'), - (0x1D1BF, 'M', '𝆹𝅥𝅯'), - (0x1D1C0, 'M', '𝆺𝅥𝅯'), - (0x1D1C1, 'V'), - (0x1D1EB, 'X'), - (0x1D200, 'V'), - (0x1D246, 'X'), - (0x1D2C0, 'V'), - (0x1D2D4, 'X'), - (0x1D2E0, 'V'), - (0x1D2F4, 'X'), - (0x1D300, 'V'), - (0x1D357, 'X'), - (0x1D360, 'V'), - (0x1D379, 'X'), - (0x1D400, 'M', 'a'), - (0x1D401, 'M', 'b'), - (0x1D402, 'M', 'c'), - (0x1D403, 'M', 'd'), - (0x1D404, 'M', 'e'), - (0x1D405, 'M', 'f'), - (0x1D406, 'M', 'g'), - (0x1D407, 'M', 'h'), - (0x1D408, 'M', 'i'), - (0x1D409, 'M', 'j'), - (0x1D40A, 'M', 'k'), - (0x1D40B, 'M', 'l'), - (0x1D40C, 'M', 'm'), - (0x1D40D, 'M', 'n'), - (0x1D40E, 'M', 'o'), - (0x1D40F, 'M', 'p'), - (0x1D410, 'M', 'q'), - (0x1D411, 'M', 'r'), - (0x1D412, 'M', 's'), - (0x1D413, 'M', 't'), - (0x1D414, 'M', 'u'), - (0x1D415, 'M', 'v'), - (0x1D416, 'M', 'w'), - (0x1D417, 'M', 'x'), - (0x1D418, 'M', 'y'), - (0x1D419, 'M', 'z'), - (0x1D41A, 'M', 'a'), - (0x1D41B, 'M', 'b'), - (0x1D41C, 'M', 'c'), - (0x1D41D, 'M', 'd'), - (0x1D41E, 'M', 'e'), - (0x1D41F, 'M', 'f'), - (0x1D420, 'M', 'g'), + (0x1AFFF, "X"), + (0x1B000, "V"), + (0x1B123, "X"), + (0x1B132, "V"), + (0x1B133, "X"), + (0x1B150, "V"), + (0x1B153, "X"), + (0x1B155, "V"), + (0x1B156, "X"), + (0x1B164, "V"), + (0x1B168, "X"), + (0x1B170, "V"), + (0x1B2FC, "X"), + (0x1BC00, "V"), + (0x1BC6B, "X"), + (0x1BC70, "V"), + (0x1BC7D, "X"), + (0x1BC80, "V"), + (0x1BC89, "X"), + (0x1BC90, "V"), + (0x1BC9A, "X"), + (0x1BC9C, "V"), + (0x1BCA0, "I"), + (0x1BCA4, "X"), + (0x1CF00, "V"), + (0x1CF2E, "X"), + (0x1CF30, "V"), + (0x1CF47, "X"), + (0x1CF50, "V"), + (0x1CFC4, "X"), + (0x1D000, "V"), + (0x1D0F6, "X"), + (0x1D100, "V"), + (0x1D127, "X"), + (0x1D129, "V"), + (0x1D15E, "M", "𝅗𝅥"), + (0x1D15F, "M", "𝅘𝅥"), + (0x1D160, "M", "𝅘𝅥𝅮"), + (0x1D161, "M", "𝅘𝅥𝅯"), + (0x1D162, "M", "𝅘𝅥𝅰"), + (0x1D163, "M", "𝅘𝅥𝅱"), + (0x1D164, "M", "𝅘𝅥𝅲"), + (0x1D165, "V"), + (0x1D173, "X"), + (0x1D17B, "V"), + (0x1D1BB, "M", "𝆹𝅥"), + (0x1D1BC, "M", "𝆺𝅥"), + (0x1D1BD, "M", "𝆹𝅥𝅮"), + (0x1D1BE, "M", "𝆺𝅥𝅮"), + (0x1D1BF, "M", "𝆹𝅥𝅯"), + (0x1D1C0, "M", "𝆺𝅥𝅯"), + (0x1D1C1, "V"), + (0x1D1EB, "X"), + (0x1D200, "V"), + (0x1D246, "X"), + (0x1D2C0, "V"), + (0x1D2D4, "X"), + (0x1D2E0, "V"), + (0x1D2F4, "X"), + (0x1D300, "V"), + (0x1D357, "X"), + (0x1D360, "V"), + (0x1D379, "X"), + (0x1D400, "M", "a"), + (0x1D401, "M", "b"), + (0x1D402, "M", "c"), + (0x1D403, "M", "d"), + (0x1D404, "M", "e"), + (0x1D405, "M", "f"), + (0x1D406, "M", "g"), + (0x1D407, "M", "h"), + (0x1D408, "M", "i"), + (0x1D409, "M", "j"), + (0x1D40A, "M", "k"), + (0x1D40B, "M", "l"), + (0x1D40C, "M", "m"), + (0x1D40D, "M", "n"), + (0x1D40E, "M", "o"), + (0x1D40F, "M", "p"), + (0x1D410, "M", "q"), + (0x1D411, "M", "r"), + (0x1D412, "M", "s"), + (0x1D413, "M", "t"), + (0x1D414, "M", "u"), + (0x1D415, "M", "v"), + (0x1D416, "M", "w"), + (0x1D417, "M", "x"), + (0x1D418, "M", "y"), + (0x1D419, "M", "z"), + (0x1D41A, "M", "a"), + (0x1D41B, "M", "b"), + (0x1D41C, "M", "c"), + (0x1D41D, "M", "d"), + (0x1D41E, "M", "e"), + (0x1D41F, "M", "f"), + (0x1D420, "M", "g"), + (0x1D421, "M", "h"), + (0x1D422, "M", "i"), + (0x1D423, "M", "j"), + (0x1D424, "M", "k"), ] + def _seg_61() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: return [ - (0x1D421, 'M', 'h'), - (0x1D422, 'M', 'i'), - (0x1D423, 'M', 'j'), - (0x1D424, 'M', 'k'), - (0x1D425, 'M', 'l'), - (0x1D426, 'M', 'm'), - (0x1D427, 'M', 'n'), - (0x1D428, 'M', 'o'), - (0x1D429, 'M', 'p'), - (0x1D42A, 'M', 'q'), - (0x1D42B, 'M', 'r'), - (0x1D42C, 'M', 's'), - (0x1D42D, 'M', 't'), - (0x1D42E, 'M', 'u'), - (0x1D42F, 'M', 'v'), - (0x1D430, 'M', 'w'), - (0x1D431, 'M', 'x'), - (0x1D432, 'M', 'y'), - (0x1D433, 'M', 'z'), - (0x1D434, 'M', 'a'), - (0x1D435, 'M', 'b'), - (0x1D436, 'M', 'c'), - (0x1D437, 'M', 'd'), - (0x1D438, 'M', 'e'), - (0x1D439, 'M', 'f'), - (0x1D43A, 'M', 'g'), - (0x1D43B, 'M', 'h'), - (0x1D43C, 'M', 'i'), - (0x1D43D, 'M', 'j'), - (0x1D43E, 'M', 'k'), - (0x1D43F, 'M', 'l'), - (0x1D440, 'M', 'm'), - (0x1D441, 'M', 'n'), - (0x1D442, 'M', 'o'), - (0x1D443, 'M', 'p'), - (0x1D444, 'M', 'q'), - (0x1D445, 'M', 'r'), - (0x1D446, 'M', 's'), - (0x1D447, 'M', 't'), - (0x1D448, 'M', 'u'), - (0x1D449, 'M', 'v'), - (0x1D44A, 'M', 'w'), - (0x1D44B, 'M', 'x'), - (0x1D44C, 'M', 'y'), - (0x1D44D, 'M', 'z'), - (0x1D44E, 'M', 'a'), - (0x1D44F, 'M', 'b'), - (0x1D450, 'M', 'c'), - (0x1D451, 'M', 'd'), - (0x1D452, 'M', 'e'), - (0x1D453, 'M', 'f'), - (0x1D454, 'M', 'g'), - (0x1D455, 'X'), - (0x1D456, 'M', 'i'), - (0x1D457, 'M', 'j'), - (0x1D458, 'M', 'k'), - (0x1D459, 'M', 'l'), - (0x1D45A, 'M', 'm'), - (0x1D45B, 'M', 'n'), - (0x1D45C, 'M', 'o'), - (0x1D45D, 'M', 'p'), - (0x1D45E, 'M', 'q'), - (0x1D45F, 'M', 'r'), - (0x1D460, 'M', 's'), - (0x1D461, 'M', 't'), - (0x1D462, 'M', 'u'), - (0x1D463, 'M', 'v'), - (0x1D464, 'M', 'w'), - (0x1D465, 'M', 'x'), - (0x1D466, 'M', 'y'), - (0x1D467, 'M', 'z'), - (0x1D468, 'M', 'a'), - (0x1D469, 'M', 'b'), - (0x1D46A, 'M', 'c'), - (0x1D46B, 'M', 'd'), - (0x1D46C, 'M', 'e'), - (0x1D46D, 'M', 'f'), - (0x1D46E, 'M', 'g'), - (0x1D46F, 'M', 'h'), - (0x1D470, 'M', 'i'), - (0x1D471, 'M', 'j'), - (0x1D472, 'M', 'k'), - (0x1D473, 'M', 'l'), - (0x1D474, 'M', 'm'), - (0x1D475, 'M', 'n'), - (0x1D476, 'M', 'o'), - (0x1D477, 'M', 'p'), - (0x1D478, 'M', 'q'), - (0x1D479, 'M', 'r'), - (0x1D47A, 'M', 's'), - (0x1D47B, 'M', 't'), - (0x1D47C, 'M', 'u'), - (0x1D47D, 'M', 'v'), - (0x1D47E, 'M', 'w'), - (0x1D47F, 'M', 'x'), - (0x1D480, 'M', 'y'), - (0x1D481, 'M', 'z'), - (0x1D482, 'M', 'a'), - (0x1D483, 'M', 'b'), - (0x1D484, 'M', 'c'), + (0x1D425, "M", "l"), + (0x1D426, "M", "m"), + (0x1D427, "M", "n"), + (0x1D428, "M", "o"), + (0x1D429, "M", "p"), + (0x1D42A, "M", "q"), + (0x1D42B, "M", "r"), + (0x1D42C, "M", "s"), + (0x1D42D, "M", "t"), + (0x1D42E, "M", "u"), + (0x1D42F, "M", "v"), + (0x1D430, "M", "w"), + (0x1D431, "M", "x"), + (0x1D432, "M", "y"), + (0x1D433, "M", "z"), + (0x1D434, "M", "a"), + (0x1D435, "M", "b"), + (0x1D436, "M", "c"), + (0x1D437, "M", "d"), + (0x1D438, "M", "e"), + (0x1D439, "M", "f"), + (0x1D43A, "M", "g"), + (0x1D43B, "M", "h"), + (0x1D43C, "M", "i"), + (0x1D43D, "M", "j"), + (0x1D43E, "M", "k"), + (0x1D43F, "M", "l"), + (0x1D440, "M", "m"), + (0x1D441, "M", "n"), + (0x1D442, "M", "o"), + (0x1D443, "M", "p"), + (0x1D444, "M", "q"), + (0x1D445, "M", "r"), + (0x1D446, "M", "s"), + (0x1D447, "M", "t"), + (0x1D448, "M", "u"), + (0x1D449, "M", "v"), + (0x1D44A, "M", "w"), + (0x1D44B, "M", "x"), + (0x1D44C, "M", "y"), + (0x1D44D, "M", "z"), + (0x1D44E, "M", "a"), + (0x1D44F, "M", "b"), + (0x1D450, "M", "c"), + (0x1D451, "M", "d"), + (0x1D452, "M", "e"), + (0x1D453, "M", "f"), + (0x1D454, "M", "g"), + (0x1D455, "X"), + (0x1D456, "M", "i"), + (0x1D457, "M", "j"), + (0x1D458, "M", "k"), + (0x1D459, "M", "l"), + (0x1D45A, "M", "m"), + (0x1D45B, "M", "n"), + (0x1D45C, "M", "o"), + (0x1D45D, "M", "p"), + (0x1D45E, "M", "q"), + (0x1D45F, "M", "r"), + (0x1D460, "M", "s"), + (0x1D461, "M", "t"), + (0x1D462, "M", "u"), + (0x1D463, "M", "v"), + (0x1D464, "M", "w"), + (0x1D465, "M", "x"), + (0x1D466, "M", "y"), + (0x1D467, "M", "z"), + (0x1D468, "M", "a"), + (0x1D469, "M", "b"), + (0x1D46A, "M", "c"), + (0x1D46B, "M", "d"), + (0x1D46C, "M", "e"), + (0x1D46D, "M", "f"), + (0x1D46E, "M", "g"), + (0x1D46F, "M", "h"), + (0x1D470, "M", "i"), + (0x1D471, "M", "j"), + (0x1D472, "M", "k"), + (0x1D473, "M", "l"), + (0x1D474, "M", "m"), + (0x1D475, "M", "n"), + (0x1D476, "M", "o"), + (0x1D477, "M", "p"), + (0x1D478, "M", "q"), + (0x1D479, "M", "r"), + (0x1D47A, "M", "s"), + (0x1D47B, "M", "t"), + (0x1D47C, "M", "u"), + (0x1D47D, "M", "v"), + (0x1D47E, "M", "w"), + (0x1D47F, "M", "x"), + (0x1D480, "M", "y"), + (0x1D481, "M", "z"), + (0x1D482, "M", "a"), + (0x1D483, "M", "b"), + (0x1D484, "M", "c"), + (0x1D485, "M", "d"), + (0x1D486, "M", "e"), + (0x1D487, "M", "f"), + (0x1D488, "M", "g"), ] + def _seg_62() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: return [ - (0x1D485, 'M', 'd'), - (0x1D486, 'M', 'e'), - (0x1D487, 'M', 'f'), - (0x1D488, 'M', 'g'), - (0x1D489, 'M', 'h'), - (0x1D48A, 'M', 'i'), - (0x1D48B, 'M', 'j'), - (0x1D48C, 'M', 'k'), - (0x1D48D, 'M', 'l'), - (0x1D48E, 'M', 'm'), - (0x1D48F, 'M', 'n'), - (0x1D490, 'M', 'o'), - (0x1D491, 'M', 'p'), - (0x1D492, 'M', 'q'), - (0x1D493, 'M', 'r'), - (0x1D494, 'M', 's'), - (0x1D495, 'M', 't'), - (0x1D496, 'M', 'u'), - (0x1D497, 'M', 'v'), - (0x1D498, 'M', 'w'), - (0x1D499, 'M', 'x'), - (0x1D49A, 'M', 'y'), - (0x1D49B, 'M', 'z'), - (0x1D49C, 'M', 'a'), - (0x1D49D, 'X'), - (0x1D49E, 'M', 'c'), - (0x1D49F, 'M', 'd'), - (0x1D4A0, 'X'), - (0x1D4A2, 'M', 'g'), - (0x1D4A3, 'X'), - (0x1D4A5, 'M', 'j'), - (0x1D4A6, 'M', 'k'), - (0x1D4A7, 'X'), - (0x1D4A9, 'M', 'n'), - (0x1D4AA, 'M', 'o'), - (0x1D4AB, 'M', 'p'), - (0x1D4AC, 'M', 'q'), - (0x1D4AD, 'X'), - (0x1D4AE, 'M', 's'), - (0x1D4AF, 'M', 't'), - (0x1D4B0, 'M', 'u'), - (0x1D4B1, 'M', 'v'), - (0x1D4B2, 'M', 'w'), - (0x1D4B3, 'M', 'x'), - (0x1D4B4, 'M', 'y'), - (0x1D4B5, 'M', 'z'), - (0x1D4B6, 'M', 'a'), - (0x1D4B7, 'M', 'b'), - (0x1D4B8, 'M', 'c'), - (0x1D4B9, 'M', 'd'), - (0x1D4BA, 'X'), - (0x1D4BB, 'M', 'f'), - (0x1D4BC, 'X'), - (0x1D4BD, 'M', 'h'), - (0x1D4BE, 'M', 'i'), - (0x1D4BF, 'M', 'j'), - (0x1D4C0, 'M', 'k'), - (0x1D4C1, 'M', 'l'), - (0x1D4C2, 'M', 'm'), - (0x1D4C3, 'M', 'n'), - (0x1D4C4, 'X'), - (0x1D4C5, 'M', 'p'), - (0x1D4C6, 'M', 'q'), - (0x1D4C7, 'M', 'r'), - (0x1D4C8, 'M', 's'), - (0x1D4C9, 'M', 't'), - (0x1D4CA, 'M', 'u'), - (0x1D4CB, 'M', 'v'), - (0x1D4CC, 'M', 'w'), - (0x1D4CD, 'M', 'x'), - (0x1D4CE, 'M', 'y'), - (0x1D4CF, 'M', 'z'), - (0x1D4D0, 'M', 'a'), - (0x1D4D1, 'M', 'b'), - (0x1D4D2, 'M', 'c'), - (0x1D4D3, 'M', 'd'), - (0x1D4D4, 'M', 'e'), - (0x1D4D5, 'M', 'f'), - (0x1D4D6, 'M', 'g'), - (0x1D4D7, 'M', 'h'), - (0x1D4D8, 'M', 'i'), - (0x1D4D9, 'M', 'j'), - (0x1D4DA, 'M', 'k'), - (0x1D4DB, 'M', 'l'), - (0x1D4DC, 'M', 'm'), - (0x1D4DD, 'M', 'n'), - (0x1D4DE, 'M', 'o'), - (0x1D4DF, 'M', 'p'), - (0x1D4E0, 'M', 'q'), - (0x1D4E1, 'M', 'r'), - (0x1D4E2, 'M', 's'), - (0x1D4E3, 'M', 't'), - (0x1D4E4, 'M', 'u'), - (0x1D4E5, 'M', 'v'), - (0x1D4E6, 'M', 'w'), - (0x1D4E7, 'M', 'x'), - (0x1D4E8, 'M', 'y'), - (0x1D4E9, 'M', 'z'), - (0x1D4EA, 'M', 'a'), - (0x1D4EB, 'M', 'b'), + (0x1D489, "M", "h"), + (0x1D48A, "M", "i"), + (0x1D48B, "M", "j"), + (0x1D48C, "M", "k"), + (0x1D48D, "M", "l"), + (0x1D48E, "M", "m"), + (0x1D48F, "M", "n"), + (0x1D490, "M", "o"), + (0x1D491, "M", "p"), + (0x1D492, "M", "q"), + (0x1D493, "M", "r"), + (0x1D494, "M", "s"), + (0x1D495, "M", "t"), + (0x1D496, "M", "u"), + (0x1D497, "M", "v"), + (0x1D498, "M", "w"), + (0x1D499, "M", "x"), + (0x1D49A, "M", "y"), + (0x1D49B, "M", "z"), + (0x1D49C, "M", "a"), + (0x1D49D, "X"), + (0x1D49E, "M", "c"), + (0x1D49F, "M", "d"), + (0x1D4A0, "X"), + (0x1D4A2, "M", "g"), + (0x1D4A3, "X"), + (0x1D4A5, "M", "j"), + (0x1D4A6, "M", "k"), + (0x1D4A7, "X"), + (0x1D4A9, "M", "n"), + (0x1D4AA, "M", "o"), + (0x1D4AB, "M", "p"), + (0x1D4AC, "M", "q"), + (0x1D4AD, "X"), + (0x1D4AE, "M", "s"), + (0x1D4AF, "M", "t"), + (0x1D4B0, "M", "u"), + (0x1D4B1, "M", "v"), + (0x1D4B2, "M", "w"), + (0x1D4B3, "M", "x"), + (0x1D4B4, "M", "y"), + (0x1D4B5, "M", "z"), + (0x1D4B6, "M", "a"), + (0x1D4B7, "M", "b"), + (0x1D4B8, "M", "c"), + (0x1D4B9, "M", "d"), + (0x1D4BA, "X"), + (0x1D4BB, "M", "f"), + (0x1D4BC, "X"), + (0x1D4BD, "M", "h"), + (0x1D4BE, "M", "i"), + (0x1D4BF, "M", "j"), + (0x1D4C0, "M", "k"), + (0x1D4C1, "M", "l"), + (0x1D4C2, "M", "m"), + (0x1D4C3, "M", "n"), + (0x1D4C4, "X"), + (0x1D4C5, "M", "p"), + (0x1D4C6, "M", "q"), + (0x1D4C7, "M", "r"), + (0x1D4C8, "M", "s"), + (0x1D4C9, "M", "t"), + (0x1D4CA, "M", "u"), + (0x1D4CB, "M", "v"), + (0x1D4CC, "M", "w"), + (0x1D4CD, "M", "x"), + (0x1D4CE, "M", "y"), + (0x1D4CF, "M", "z"), + (0x1D4D0, "M", "a"), + (0x1D4D1, "M", "b"), + (0x1D4D2, "M", "c"), + (0x1D4D3, "M", "d"), + (0x1D4D4, "M", "e"), + (0x1D4D5, "M", "f"), + (0x1D4D6, "M", "g"), + (0x1D4D7, "M", "h"), + (0x1D4D8, "M", "i"), + (0x1D4D9, "M", "j"), + (0x1D4DA, "M", "k"), + (0x1D4DB, "M", "l"), + (0x1D4DC, "M", "m"), + (0x1D4DD, "M", "n"), + (0x1D4DE, "M", "o"), + (0x1D4DF, "M", "p"), + (0x1D4E0, "M", "q"), + (0x1D4E1, "M", "r"), + (0x1D4E2, "M", "s"), + (0x1D4E3, "M", "t"), + (0x1D4E4, "M", "u"), + (0x1D4E5, "M", "v"), + (0x1D4E6, "M", "w"), + (0x1D4E7, "M", "x"), + (0x1D4E8, "M", "y"), + (0x1D4E9, "M", "z"), + (0x1D4EA, "M", "a"), + (0x1D4EB, "M", "b"), + (0x1D4EC, "M", "c"), + (0x1D4ED, "M", "d"), + (0x1D4EE, "M", "e"), + (0x1D4EF, "M", "f"), ] + def _seg_63() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: return [ - (0x1D4EC, 'M', 'c'), - (0x1D4ED, 'M', 'd'), - (0x1D4EE, 'M', 'e'), - (0x1D4EF, 'M', 'f'), - (0x1D4F0, 'M', 'g'), - (0x1D4F1, 'M', 'h'), - (0x1D4F2, 'M', 'i'), - (0x1D4F3, 'M', 'j'), - (0x1D4F4, 'M', 'k'), - (0x1D4F5, 'M', 'l'), - (0x1D4F6, 'M', 'm'), - (0x1D4F7, 'M', 'n'), - (0x1D4F8, 'M', 'o'), - (0x1D4F9, 'M', 'p'), - (0x1D4FA, 'M', 'q'), - (0x1D4FB, 'M', 'r'), - (0x1D4FC, 'M', 's'), - (0x1D4FD, 'M', 't'), - (0x1D4FE, 'M', 'u'), - (0x1D4FF, 'M', 'v'), - (0x1D500, 'M', 'w'), - (0x1D501, 'M', 'x'), - (0x1D502, 'M', 'y'), - (0x1D503, 'M', 'z'), - (0x1D504, 'M', 'a'), - (0x1D505, 'M', 'b'), - (0x1D506, 'X'), - (0x1D507, 'M', 'd'), - (0x1D508, 'M', 'e'), - (0x1D509, 'M', 'f'), - (0x1D50A, 'M', 'g'), - (0x1D50B, 'X'), - (0x1D50D, 'M', 'j'), - (0x1D50E, 'M', 'k'), - (0x1D50F, 'M', 'l'), - (0x1D510, 'M', 'm'), - (0x1D511, 'M', 'n'), - (0x1D512, 'M', 'o'), - (0x1D513, 'M', 'p'), - (0x1D514, 'M', 'q'), - (0x1D515, 'X'), - (0x1D516, 'M', 's'), - (0x1D517, 'M', 't'), - (0x1D518, 'M', 'u'), - (0x1D519, 'M', 'v'), - (0x1D51A, 'M', 'w'), - (0x1D51B, 'M', 'x'), - (0x1D51C, 'M', 'y'), - (0x1D51D, 'X'), - (0x1D51E, 'M', 'a'), - (0x1D51F, 'M', 'b'), - (0x1D520, 'M', 'c'), - (0x1D521, 'M', 'd'), - (0x1D522, 'M', 'e'), - (0x1D523, 'M', 'f'), - (0x1D524, 'M', 'g'), - (0x1D525, 'M', 'h'), - (0x1D526, 'M', 'i'), - (0x1D527, 'M', 'j'), - (0x1D528, 'M', 'k'), - (0x1D529, 'M', 'l'), - (0x1D52A, 'M', 'm'), - (0x1D52B, 'M', 'n'), - (0x1D52C, 'M', 'o'), - (0x1D52D, 'M', 'p'), - (0x1D52E, 'M', 'q'), - (0x1D52F, 'M', 'r'), - (0x1D530, 'M', 's'), - (0x1D531, 'M', 't'), - (0x1D532, 'M', 'u'), - (0x1D533, 'M', 'v'), - (0x1D534, 'M', 'w'), - (0x1D535, 'M', 'x'), - (0x1D536, 'M', 'y'), - (0x1D537, 'M', 'z'), - (0x1D538, 'M', 'a'), - (0x1D539, 'M', 'b'), - (0x1D53A, 'X'), - (0x1D53B, 'M', 'd'), - (0x1D53C, 'M', 'e'), - (0x1D53D, 'M', 'f'), - (0x1D53E, 'M', 'g'), - (0x1D53F, 'X'), - (0x1D540, 'M', 'i'), - (0x1D541, 'M', 'j'), - (0x1D542, 'M', 'k'), - (0x1D543, 'M', 'l'), - (0x1D544, 'M', 'm'), - (0x1D545, 'X'), - (0x1D546, 'M', 'o'), - (0x1D547, 'X'), - (0x1D54A, 'M', 's'), - (0x1D54B, 'M', 't'), - (0x1D54C, 'M', 'u'), - (0x1D54D, 'M', 'v'), - (0x1D54E, 'M', 'w'), - (0x1D54F, 'M', 'x'), - (0x1D550, 'M', 'y'), - (0x1D551, 'X'), - (0x1D552, 'M', 'a'), + (0x1D4F0, "M", "g"), + (0x1D4F1, "M", "h"), + (0x1D4F2, "M", "i"), + (0x1D4F3, "M", "j"), + (0x1D4F4, "M", "k"), + (0x1D4F5, "M", "l"), + (0x1D4F6, "M", "m"), + (0x1D4F7, "M", "n"), + (0x1D4F8, "M", "o"), + (0x1D4F9, "M", "p"), + (0x1D4FA, "M", "q"), + (0x1D4FB, "M", "r"), + (0x1D4FC, "M", "s"), + (0x1D4FD, "M", "t"), + (0x1D4FE, "M", "u"), + (0x1D4FF, "M", "v"), + (0x1D500, "M", "w"), + (0x1D501, "M", "x"), + (0x1D502, "M", "y"), + (0x1D503, "M", "z"), + (0x1D504, "M", "a"), + (0x1D505, "M", "b"), + (0x1D506, "X"), + (0x1D507, "M", "d"), + (0x1D508, "M", "e"), + (0x1D509, "M", "f"), + (0x1D50A, "M", "g"), + (0x1D50B, "X"), + (0x1D50D, "M", "j"), + (0x1D50E, "M", "k"), + (0x1D50F, "M", "l"), + (0x1D510, "M", "m"), + (0x1D511, "M", "n"), + (0x1D512, "M", "o"), + (0x1D513, "M", "p"), + (0x1D514, "M", "q"), + (0x1D515, "X"), + (0x1D516, "M", "s"), + (0x1D517, "M", "t"), + (0x1D518, "M", "u"), + (0x1D519, "M", "v"), + (0x1D51A, "M", "w"), + (0x1D51B, "M", "x"), + (0x1D51C, "M", "y"), + (0x1D51D, "X"), + (0x1D51E, "M", "a"), + (0x1D51F, "M", "b"), + (0x1D520, "M", "c"), + (0x1D521, "M", "d"), + (0x1D522, "M", "e"), + (0x1D523, "M", "f"), + (0x1D524, "M", "g"), + (0x1D525, "M", "h"), + (0x1D526, "M", "i"), + (0x1D527, "M", "j"), + (0x1D528, "M", "k"), + (0x1D529, "M", "l"), + (0x1D52A, "M", "m"), + (0x1D52B, "M", "n"), + (0x1D52C, "M", "o"), + (0x1D52D, "M", "p"), + (0x1D52E, "M", "q"), + (0x1D52F, "M", "r"), + (0x1D530, "M", "s"), + (0x1D531, "M", "t"), + (0x1D532, "M", "u"), + (0x1D533, "M", "v"), + (0x1D534, "M", "w"), + (0x1D535, "M", "x"), + (0x1D536, "M", "y"), + (0x1D537, "M", "z"), + (0x1D538, "M", "a"), + (0x1D539, "M", "b"), + (0x1D53A, "X"), + (0x1D53B, "M", "d"), + (0x1D53C, "M", "e"), + (0x1D53D, "M", "f"), + (0x1D53E, "M", "g"), + (0x1D53F, "X"), + (0x1D540, "M", "i"), + (0x1D541, "M", "j"), + (0x1D542, "M", "k"), + (0x1D543, "M", "l"), + (0x1D544, "M", "m"), + (0x1D545, "X"), + (0x1D546, "M", "o"), + (0x1D547, "X"), + (0x1D54A, "M", "s"), + (0x1D54B, "M", "t"), + (0x1D54C, "M", "u"), + (0x1D54D, "M", "v"), + (0x1D54E, "M", "w"), + (0x1D54F, "M", "x"), + (0x1D550, "M", "y"), + (0x1D551, "X"), + (0x1D552, "M", "a"), + (0x1D553, "M", "b"), + (0x1D554, "M", "c"), + (0x1D555, "M", "d"), + (0x1D556, "M", "e"), ] + def _seg_64() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: return [ - (0x1D553, 'M', 'b'), - (0x1D554, 'M', 'c'), - (0x1D555, 'M', 'd'), - (0x1D556, 'M', 'e'), - (0x1D557, 'M', 'f'), - (0x1D558, 'M', 'g'), - (0x1D559, 'M', 'h'), - (0x1D55A, 'M', 'i'), - (0x1D55B, 'M', 'j'), - (0x1D55C, 'M', 'k'), - (0x1D55D, 'M', 'l'), - (0x1D55E, 'M', 'm'), - (0x1D55F, 'M', 'n'), - (0x1D560, 'M', 'o'), - (0x1D561, 'M', 'p'), - (0x1D562, 'M', 'q'), - (0x1D563, 'M', 'r'), - (0x1D564, 'M', 's'), - (0x1D565, 'M', 't'), - (0x1D566, 'M', 'u'), - (0x1D567, 'M', 'v'), - (0x1D568, 'M', 'w'), - (0x1D569, 'M', 'x'), - (0x1D56A, 'M', 'y'), - (0x1D56B, 'M', 'z'), - (0x1D56C, 'M', 'a'), - (0x1D56D, 'M', 'b'), - (0x1D56E, 'M', 'c'), - (0x1D56F, 'M', 'd'), - (0x1D570, 'M', 'e'), - (0x1D571, 'M', 'f'), - (0x1D572, 'M', 'g'), - (0x1D573, 'M', 'h'), - (0x1D574, 'M', 'i'), - (0x1D575, 'M', 'j'), - (0x1D576, 'M', 'k'), - (0x1D577, 'M', 'l'), - (0x1D578, 'M', 'm'), - (0x1D579, 'M', 'n'), - (0x1D57A, 'M', 'o'), - (0x1D57B, 'M', 'p'), - (0x1D57C, 'M', 'q'), - (0x1D57D, 'M', 'r'), - (0x1D57E, 'M', 's'), - (0x1D57F, 'M', 't'), - (0x1D580, 'M', 'u'), - (0x1D581, 'M', 'v'), - (0x1D582, 'M', 'w'), - (0x1D583, 'M', 'x'), - (0x1D584, 'M', 'y'), - (0x1D585, 'M', 'z'), - (0x1D586, 'M', 'a'), - (0x1D587, 'M', 'b'), - (0x1D588, 'M', 'c'), - (0x1D589, 'M', 'd'), - (0x1D58A, 'M', 'e'), - (0x1D58B, 'M', 'f'), - (0x1D58C, 'M', 'g'), - (0x1D58D, 'M', 'h'), - (0x1D58E, 'M', 'i'), - (0x1D58F, 'M', 'j'), - (0x1D590, 'M', 'k'), - (0x1D591, 'M', 'l'), - (0x1D592, 'M', 'm'), - (0x1D593, 'M', 'n'), - (0x1D594, 'M', 'o'), - (0x1D595, 'M', 'p'), - (0x1D596, 'M', 'q'), - (0x1D597, 'M', 'r'), - (0x1D598, 'M', 's'), - (0x1D599, 'M', 't'), - (0x1D59A, 'M', 'u'), - (0x1D59B, 'M', 'v'), - (0x1D59C, 'M', 'w'), - (0x1D59D, 'M', 'x'), - (0x1D59E, 'M', 'y'), - (0x1D59F, 'M', 'z'), - (0x1D5A0, 'M', 'a'), - (0x1D5A1, 'M', 'b'), - (0x1D5A2, 'M', 'c'), - (0x1D5A3, 'M', 'd'), - (0x1D5A4, 'M', 'e'), - (0x1D5A5, 'M', 'f'), - (0x1D5A6, 'M', 'g'), - (0x1D5A7, 'M', 'h'), - (0x1D5A8, 'M', 'i'), - (0x1D5A9, 'M', 'j'), - (0x1D5AA, 'M', 'k'), - (0x1D5AB, 'M', 'l'), - (0x1D5AC, 'M', 'm'), - (0x1D5AD, 'M', 'n'), - (0x1D5AE, 'M', 'o'), - (0x1D5AF, 'M', 'p'), - (0x1D5B0, 'M', 'q'), - (0x1D5B1, 'M', 'r'), - (0x1D5B2, 'M', 's'), - (0x1D5B3, 'M', 't'), - (0x1D5B4, 'M', 'u'), - (0x1D5B5, 'M', 'v'), - (0x1D5B6, 'M', 'w'), + (0x1D557, "M", "f"), + (0x1D558, "M", "g"), + (0x1D559, "M", "h"), + (0x1D55A, "M", "i"), + (0x1D55B, "M", "j"), + (0x1D55C, "M", "k"), + (0x1D55D, "M", "l"), + (0x1D55E, "M", "m"), + (0x1D55F, "M", "n"), + (0x1D560, "M", "o"), + (0x1D561, "M", "p"), + (0x1D562, "M", "q"), + (0x1D563, "M", "r"), + (0x1D564, "M", "s"), + (0x1D565, "M", "t"), + (0x1D566, "M", "u"), + (0x1D567, "M", "v"), + (0x1D568, "M", "w"), + (0x1D569, "M", "x"), + (0x1D56A, "M", "y"), + (0x1D56B, "M", "z"), + (0x1D56C, "M", "a"), + (0x1D56D, "M", "b"), + (0x1D56E, "M", "c"), + (0x1D56F, "M", "d"), + (0x1D570, "M", "e"), + (0x1D571, "M", "f"), + (0x1D572, "M", "g"), + (0x1D573, "M", "h"), + (0x1D574, "M", "i"), + (0x1D575, "M", "j"), + (0x1D576, "M", "k"), + (0x1D577, "M", "l"), + (0x1D578, "M", "m"), + (0x1D579, "M", "n"), + (0x1D57A, "M", "o"), + (0x1D57B, "M", "p"), + (0x1D57C, "M", "q"), + (0x1D57D, "M", "r"), + (0x1D57E, "M", "s"), + (0x1D57F, "M", "t"), + (0x1D580, "M", "u"), + (0x1D581, "M", "v"), + (0x1D582, "M", "w"), + (0x1D583, "M", "x"), + (0x1D584, "M", "y"), + (0x1D585, "M", "z"), + (0x1D586, "M", "a"), + (0x1D587, "M", "b"), + (0x1D588, "M", "c"), + (0x1D589, "M", "d"), + (0x1D58A, "M", "e"), + (0x1D58B, "M", "f"), + (0x1D58C, "M", "g"), + (0x1D58D, "M", "h"), + (0x1D58E, "M", "i"), + (0x1D58F, "M", "j"), + (0x1D590, "M", "k"), + (0x1D591, "M", "l"), + (0x1D592, "M", "m"), + (0x1D593, "M", "n"), + (0x1D594, "M", "o"), + (0x1D595, "M", "p"), + (0x1D596, "M", "q"), + (0x1D597, "M", "r"), + (0x1D598, "M", "s"), + (0x1D599, "M", "t"), + (0x1D59A, "M", "u"), + (0x1D59B, "M", "v"), + (0x1D59C, "M", "w"), + (0x1D59D, "M", "x"), + (0x1D59E, "M", "y"), + (0x1D59F, "M", "z"), + (0x1D5A0, "M", "a"), + (0x1D5A1, "M", "b"), + (0x1D5A2, "M", "c"), + (0x1D5A3, "M", "d"), + (0x1D5A4, "M", "e"), + (0x1D5A5, "M", "f"), + (0x1D5A6, "M", "g"), + (0x1D5A7, "M", "h"), + (0x1D5A8, "M", "i"), + (0x1D5A9, "M", "j"), + (0x1D5AA, "M", "k"), + (0x1D5AB, "M", "l"), + (0x1D5AC, "M", "m"), + (0x1D5AD, "M", "n"), + (0x1D5AE, "M", "o"), + (0x1D5AF, "M", "p"), + (0x1D5B0, "M", "q"), + (0x1D5B1, "M", "r"), + (0x1D5B2, "M", "s"), + (0x1D5B3, "M", "t"), + (0x1D5B4, "M", "u"), + (0x1D5B5, "M", "v"), + (0x1D5B6, "M", "w"), + (0x1D5B7, "M", "x"), + (0x1D5B8, "M", "y"), + (0x1D5B9, "M", "z"), + (0x1D5BA, "M", "a"), ] + def _seg_65() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: return [ - (0x1D5B7, 'M', 'x'), - (0x1D5B8, 'M', 'y'), - (0x1D5B9, 'M', 'z'), - (0x1D5BA, 'M', 'a'), - (0x1D5BB, 'M', 'b'), - (0x1D5BC, 'M', 'c'), - (0x1D5BD, 'M', 'd'), - (0x1D5BE, 'M', 'e'), - (0x1D5BF, 'M', 'f'), - (0x1D5C0, 'M', 'g'), - (0x1D5C1, 'M', 'h'), - (0x1D5C2, 'M', 'i'), - (0x1D5C3, 'M', 'j'), - (0x1D5C4, 'M', 'k'), - (0x1D5C5, 'M', 'l'), - (0x1D5C6, 'M', 'm'), - (0x1D5C7, 'M', 'n'), - (0x1D5C8, 'M', 'o'), - (0x1D5C9, 'M', 'p'), - (0x1D5CA, 'M', 'q'), - (0x1D5CB, 'M', 'r'), - (0x1D5CC, 'M', 's'), - (0x1D5CD, 'M', 't'), - (0x1D5CE, 'M', 'u'), - (0x1D5CF, 'M', 'v'), - (0x1D5D0, 'M', 'w'), - (0x1D5D1, 'M', 'x'), - (0x1D5D2, 'M', 'y'), - (0x1D5D3, 'M', 'z'), - (0x1D5D4, 'M', 'a'), - (0x1D5D5, 'M', 'b'), - (0x1D5D6, 'M', 'c'), - (0x1D5D7, 'M', 'd'), - (0x1D5D8, 'M', 'e'), - (0x1D5D9, 'M', 'f'), - (0x1D5DA, 'M', 'g'), - (0x1D5DB, 'M', 'h'), - (0x1D5DC, 'M', 'i'), - (0x1D5DD, 'M', 'j'), - (0x1D5DE, 'M', 'k'), - (0x1D5DF, 'M', 'l'), - (0x1D5E0, 'M', 'm'), - (0x1D5E1, 'M', 'n'), - (0x1D5E2, 'M', 'o'), - (0x1D5E3, 'M', 'p'), - (0x1D5E4, 'M', 'q'), - (0x1D5E5, 'M', 'r'), - (0x1D5E6, 'M', 's'), - (0x1D5E7, 'M', 't'), - (0x1D5E8, 'M', 'u'), - (0x1D5E9, 'M', 'v'), - (0x1D5EA, 'M', 'w'), - (0x1D5EB, 'M', 'x'), - (0x1D5EC, 'M', 'y'), - (0x1D5ED, 'M', 'z'), - (0x1D5EE, 'M', 'a'), - (0x1D5EF, 'M', 'b'), - (0x1D5F0, 'M', 'c'), - (0x1D5F1, 'M', 'd'), - (0x1D5F2, 'M', 'e'), - (0x1D5F3, 'M', 'f'), - (0x1D5F4, 'M', 'g'), - (0x1D5F5, 'M', 'h'), - (0x1D5F6, 'M', 'i'), - (0x1D5F7, 'M', 'j'), - (0x1D5F8, 'M', 'k'), - (0x1D5F9, 'M', 'l'), - (0x1D5FA, 'M', 'm'), - (0x1D5FB, 'M', 'n'), - (0x1D5FC, 'M', 'o'), - (0x1D5FD, 'M', 'p'), - (0x1D5FE, 'M', 'q'), - (0x1D5FF, 'M', 'r'), - (0x1D600, 'M', 's'), - (0x1D601, 'M', 't'), - (0x1D602, 'M', 'u'), - (0x1D603, 'M', 'v'), - (0x1D604, 'M', 'w'), - (0x1D605, 'M', 'x'), - (0x1D606, 'M', 'y'), - (0x1D607, 'M', 'z'), - (0x1D608, 'M', 'a'), - (0x1D609, 'M', 'b'), - (0x1D60A, 'M', 'c'), - (0x1D60B, 'M', 'd'), - (0x1D60C, 'M', 'e'), - (0x1D60D, 'M', 'f'), - (0x1D60E, 'M', 'g'), - (0x1D60F, 'M', 'h'), - (0x1D610, 'M', 'i'), - (0x1D611, 'M', 'j'), - (0x1D612, 'M', 'k'), - (0x1D613, 'M', 'l'), - (0x1D614, 'M', 'm'), - (0x1D615, 'M', 'n'), - (0x1D616, 'M', 'o'), - (0x1D617, 'M', 'p'), - (0x1D618, 'M', 'q'), - (0x1D619, 'M', 'r'), - (0x1D61A, 'M', 's'), + (0x1D5BB, "M", "b"), + (0x1D5BC, "M", "c"), + (0x1D5BD, "M", "d"), + (0x1D5BE, "M", "e"), + (0x1D5BF, "M", "f"), + (0x1D5C0, "M", "g"), + (0x1D5C1, "M", "h"), + (0x1D5C2, "M", "i"), + (0x1D5C3, "M", "j"), + (0x1D5C4, "M", "k"), + (0x1D5C5, "M", "l"), + (0x1D5C6, "M", "m"), + (0x1D5C7, "M", "n"), + (0x1D5C8, "M", "o"), + (0x1D5C9, "M", "p"), + (0x1D5CA, "M", "q"), + (0x1D5CB, "M", "r"), + (0x1D5CC, "M", "s"), + (0x1D5CD, "M", "t"), + (0x1D5CE, "M", "u"), + (0x1D5CF, "M", "v"), + (0x1D5D0, "M", "w"), + (0x1D5D1, "M", "x"), + (0x1D5D2, "M", "y"), + (0x1D5D3, "M", "z"), + (0x1D5D4, "M", "a"), + (0x1D5D5, "M", "b"), + (0x1D5D6, "M", "c"), + (0x1D5D7, "M", "d"), + (0x1D5D8, "M", "e"), + (0x1D5D9, "M", "f"), + (0x1D5DA, "M", "g"), + (0x1D5DB, "M", "h"), + (0x1D5DC, "M", "i"), + (0x1D5DD, "M", "j"), + (0x1D5DE, "M", "k"), + (0x1D5DF, "M", "l"), + (0x1D5E0, "M", "m"), + (0x1D5E1, "M", "n"), + (0x1D5E2, "M", "o"), + (0x1D5E3, "M", "p"), + (0x1D5E4, "M", "q"), + (0x1D5E5, "M", "r"), + (0x1D5E6, "M", "s"), + (0x1D5E7, "M", "t"), + (0x1D5E8, "M", "u"), + (0x1D5E9, "M", "v"), + (0x1D5EA, "M", "w"), + (0x1D5EB, "M", "x"), + (0x1D5EC, "M", "y"), + (0x1D5ED, "M", "z"), + (0x1D5EE, "M", "a"), + (0x1D5EF, "M", "b"), + (0x1D5F0, "M", "c"), + (0x1D5F1, "M", "d"), + (0x1D5F2, "M", "e"), + (0x1D5F3, "M", "f"), + (0x1D5F4, "M", "g"), + (0x1D5F5, "M", "h"), + (0x1D5F6, "M", "i"), + (0x1D5F7, "M", "j"), + (0x1D5F8, "M", "k"), + (0x1D5F9, "M", "l"), + (0x1D5FA, "M", "m"), + (0x1D5FB, "M", "n"), + (0x1D5FC, "M", "o"), + (0x1D5FD, "M", "p"), + (0x1D5FE, "M", "q"), + (0x1D5FF, "M", "r"), + (0x1D600, "M", "s"), + (0x1D601, "M", "t"), + (0x1D602, "M", "u"), + (0x1D603, "M", "v"), + (0x1D604, "M", "w"), + (0x1D605, "M", "x"), + (0x1D606, "M", "y"), + (0x1D607, "M", "z"), + (0x1D608, "M", "a"), + (0x1D609, "M", "b"), + (0x1D60A, "M", "c"), + (0x1D60B, "M", "d"), + (0x1D60C, "M", "e"), + (0x1D60D, "M", "f"), + (0x1D60E, "M", "g"), + (0x1D60F, "M", "h"), + (0x1D610, "M", "i"), + (0x1D611, "M", "j"), + (0x1D612, "M", "k"), + (0x1D613, "M", "l"), + (0x1D614, "M", "m"), + (0x1D615, "M", "n"), + (0x1D616, "M", "o"), + (0x1D617, "M", "p"), + (0x1D618, "M", "q"), + (0x1D619, "M", "r"), + (0x1D61A, "M", "s"), + (0x1D61B, "M", "t"), + (0x1D61C, "M", "u"), + (0x1D61D, "M", "v"), + (0x1D61E, "M", "w"), ] + def _seg_66() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: return [ - (0x1D61B, 'M', 't'), - (0x1D61C, 'M', 'u'), - (0x1D61D, 'M', 'v'), - (0x1D61E, 'M', 'w'), - (0x1D61F, 'M', 'x'), - (0x1D620, 'M', 'y'), - (0x1D621, 'M', 'z'), - (0x1D622, 'M', 'a'), - (0x1D623, 'M', 'b'), - (0x1D624, 'M', 'c'), - (0x1D625, 'M', 'd'), - (0x1D626, 'M', 'e'), - (0x1D627, 'M', 'f'), - (0x1D628, 'M', 'g'), - (0x1D629, 'M', 'h'), - (0x1D62A, 'M', 'i'), - (0x1D62B, 'M', 'j'), - (0x1D62C, 'M', 'k'), - (0x1D62D, 'M', 'l'), - (0x1D62E, 'M', 'm'), - (0x1D62F, 'M', 'n'), - (0x1D630, 'M', 'o'), - (0x1D631, 'M', 'p'), - (0x1D632, 'M', 'q'), - (0x1D633, 'M', 'r'), - (0x1D634, 'M', 's'), - (0x1D635, 'M', 't'), - (0x1D636, 'M', 'u'), - (0x1D637, 'M', 'v'), - (0x1D638, 'M', 'w'), - (0x1D639, 'M', 'x'), - (0x1D63A, 'M', 'y'), - (0x1D63B, 'M', 'z'), - (0x1D63C, 'M', 'a'), - (0x1D63D, 'M', 'b'), - (0x1D63E, 'M', 'c'), - (0x1D63F, 'M', 'd'), - (0x1D640, 'M', 'e'), - (0x1D641, 'M', 'f'), - (0x1D642, 'M', 'g'), - (0x1D643, 'M', 'h'), - (0x1D644, 'M', 'i'), - (0x1D645, 'M', 'j'), - (0x1D646, 'M', 'k'), - (0x1D647, 'M', 'l'), - (0x1D648, 'M', 'm'), - (0x1D649, 'M', 'n'), - (0x1D64A, 'M', 'o'), - (0x1D64B, 'M', 'p'), - (0x1D64C, 'M', 'q'), - (0x1D64D, 'M', 'r'), - (0x1D64E, 'M', 's'), - (0x1D64F, 'M', 't'), - (0x1D650, 'M', 'u'), - (0x1D651, 'M', 'v'), - (0x1D652, 'M', 'w'), - (0x1D653, 'M', 'x'), - (0x1D654, 'M', 'y'), - (0x1D655, 'M', 'z'), - (0x1D656, 'M', 'a'), - (0x1D657, 'M', 'b'), - (0x1D658, 'M', 'c'), - (0x1D659, 'M', 'd'), - (0x1D65A, 'M', 'e'), - (0x1D65B, 'M', 'f'), - (0x1D65C, 'M', 'g'), - (0x1D65D, 'M', 'h'), - (0x1D65E, 'M', 'i'), - (0x1D65F, 'M', 'j'), - (0x1D660, 'M', 'k'), - (0x1D661, 'M', 'l'), - (0x1D662, 'M', 'm'), - (0x1D663, 'M', 'n'), - (0x1D664, 'M', 'o'), - (0x1D665, 'M', 'p'), - (0x1D666, 'M', 'q'), - (0x1D667, 'M', 'r'), - (0x1D668, 'M', 's'), - (0x1D669, 'M', 't'), - (0x1D66A, 'M', 'u'), - (0x1D66B, 'M', 'v'), - (0x1D66C, 'M', 'w'), - (0x1D66D, 'M', 'x'), - (0x1D66E, 'M', 'y'), - (0x1D66F, 'M', 'z'), - (0x1D670, 'M', 'a'), - (0x1D671, 'M', 'b'), - (0x1D672, 'M', 'c'), - (0x1D673, 'M', 'd'), - (0x1D674, 'M', 'e'), - (0x1D675, 'M', 'f'), - (0x1D676, 'M', 'g'), - (0x1D677, 'M', 'h'), - (0x1D678, 'M', 'i'), - (0x1D679, 'M', 'j'), - (0x1D67A, 'M', 'k'), - (0x1D67B, 'M', 'l'), - (0x1D67C, 'M', 'm'), - (0x1D67D, 'M', 'n'), - (0x1D67E, 'M', 'o'), + (0x1D61F, "M", "x"), + (0x1D620, "M", "y"), + (0x1D621, "M", "z"), + (0x1D622, "M", "a"), + (0x1D623, "M", "b"), + (0x1D624, "M", "c"), + (0x1D625, "M", "d"), + (0x1D626, "M", "e"), + (0x1D627, "M", "f"), + (0x1D628, "M", "g"), + (0x1D629, "M", "h"), + (0x1D62A, "M", "i"), + (0x1D62B, "M", "j"), + (0x1D62C, "M", "k"), + (0x1D62D, "M", "l"), + (0x1D62E, "M", "m"), + (0x1D62F, "M", "n"), + (0x1D630, "M", "o"), + (0x1D631, "M", "p"), + (0x1D632, "M", "q"), + (0x1D633, "M", "r"), + (0x1D634, "M", "s"), + (0x1D635, "M", "t"), + (0x1D636, "M", "u"), + (0x1D637, "M", "v"), + (0x1D638, "M", "w"), + (0x1D639, "M", "x"), + (0x1D63A, "M", "y"), + (0x1D63B, "M", "z"), + (0x1D63C, "M", "a"), + (0x1D63D, "M", "b"), + (0x1D63E, "M", "c"), + (0x1D63F, "M", "d"), + (0x1D640, "M", "e"), + (0x1D641, "M", "f"), + (0x1D642, "M", "g"), + (0x1D643, "M", "h"), + (0x1D644, "M", "i"), + (0x1D645, "M", "j"), + (0x1D646, "M", "k"), + (0x1D647, "M", "l"), + (0x1D648, "M", "m"), + (0x1D649, "M", "n"), + (0x1D64A, "M", "o"), + (0x1D64B, "M", "p"), + (0x1D64C, "M", "q"), + (0x1D64D, "M", "r"), + (0x1D64E, "M", "s"), + (0x1D64F, "M", "t"), + (0x1D650, "M", "u"), + (0x1D651, "M", "v"), + (0x1D652, "M", "w"), + (0x1D653, "M", "x"), + (0x1D654, "M", "y"), + (0x1D655, "M", "z"), + (0x1D656, "M", "a"), + (0x1D657, "M", "b"), + (0x1D658, "M", "c"), + (0x1D659, "M", "d"), + (0x1D65A, "M", "e"), + (0x1D65B, "M", "f"), + (0x1D65C, "M", "g"), + (0x1D65D, "M", "h"), + (0x1D65E, "M", "i"), + (0x1D65F, "M", "j"), + (0x1D660, "M", "k"), + (0x1D661, "M", "l"), + (0x1D662, "M", "m"), + (0x1D663, "M", "n"), + (0x1D664, "M", "o"), + (0x1D665, "M", "p"), + (0x1D666, "M", "q"), + (0x1D667, "M", "r"), + (0x1D668, "M", "s"), + (0x1D669, "M", "t"), + (0x1D66A, "M", "u"), + (0x1D66B, "M", "v"), + (0x1D66C, "M", "w"), + (0x1D66D, "M", "x"), + (0x1D66E, "M", "y"), + (0x1D66F, "M", "z"), + (0x1D670, "M", "a"), + (0x1D671, "M", "b"), + (0x1D672, "M", "c"), + (0x1D673, "M", "d"), + (0x1D674, "M", "e"), + (0x1D675, "M", "f"), + (0x1D676, "M", "g"), + (0x1D677, "M", "h"), + (0x1D678, "M", "i"), + (0x1D679, "M", "j"), + (0x1D67A, "M", "k"), + (0x1D67B, "M", "l"), + (0x1D67C, "M", "m"), + (0x1D67D, "M", "n"), + (0x1D67E, "M", "o"), + (0x1D67F, "M", "p"), + (0x1D680, "M", "q"), + (0x1D681, "M", "r"), + (0x1D682, "M", "s"), ] + def _seg_67() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: return [ - (0x1D67F, 'M', 'p'), - (0x1D680, 'M', 'q'), - (0x1D681, 'M', 'r'), - (0x1D682, 'M', 's'), - (0x1D683, 'M', 't'), - (0x1D684, 'M', 'u'), - (0x1D685, 'M', 'v'), - (0x1D686, 'M', 'w'), - (0x1D687, 'M', 'x'), - (0x1D688, 'M', 'y'), - (0x1D689, 'M', 'z'), - (0x1D68A, 'M', 'a'), - (0x1D68B, 'M', 'b'), - (0x1D68C, 'M', 'c'), - (0x1D68D, 'M', 'd'), - (0x1D68E, 'M', 'e'), - (0x1D68F, 'M', 'f'), - (0x1D690, 'M', 'g'), - (0x1D691, 'M', 'h'), - (0x1D692, 'M', 'i'), - (0x1D693, 'M', 'j'), - (0x1D694, 'M', 'k'), - (0x1D695, 'M', 'l'), - (0x1D696, 'M', 'm'), - (0x1D697, 'M', 'n'), - (0x1D698, 'M', 'o'), - (0x1D699, 'M', 'p'), - (0x1D69A, 'M', 'q'), - (0x1D69B, 'M', 'r'), - (0x1D69C, 'M', 's'), - (0x1D69D, 'M', 't'), - (0x1D69E, 'M', 'u'), - (0x1D69F, 'M', 'v'), - (0x1D6A0, 'M', 'w'), - (0x1D6A1, 'M', 'x'), - (0x1D6A2, 'M', 'y'), - (0x1D6A3, 'M', 'z'), - (0x1D6A4, 'M', 'ı'), - (0x1D6A5, 'M', 'ȷ'), - (0x1D6A6, 'X'), - (0x1D6A8, 'M', 'α'), - (0x1D6A9, 'M', 'β'), - (0x1D6AA, 'M', 'γ'), - (0x1D6AB, 'M', 'δ'), - (0x1D6AC, 'M', 'ε'), - (0x1D6AD, 'M', 'ζ'), - (0x1D6AE, 'M', 'η'), - (0x1D6AF, 'M', 'θ'), - (0x1D6B0, 'M', 'ι'), - (0x1D6B1, 'M', 'κ'), - (0x1D6B2, 'M', 'λ'), - (0x1D6B3, 'M', 'μ'), - (0x1D6B4, 'M', 'ν'), - (0x1D6B5, 'M', 'ξ'), - (0x1D6B6, 'M', 'ο'), - (0x1D6B7, 'M', 'π'), - (0x1D6B8, 'M', 'ρ'), - (0x1D6B9, 'M', 'θ'), - (0x1D6BA, 'M', 'σ'), - (0x1D6BB, 'M', 'τ'), - (0x1D6BC, 'M', 'υ'), - (0x1D6BD, 'M', 'φ'), - (0x1D6BE, 'M', 'χ'), - (0x1D6BF, 'M', 'ψ'), - (0x1D6C0, 'M', 'ω'), - (0x1D6C1, 'M', '∇'), - (0x1D6C2, 'M', 'α'), - (0x1D6C3, 'M', 'β'), - (0x1D6C4, 'M', 'γ'), - (0x1D6C5, 'M', 'δ'), - (0x1D6C6, 'M', 'ε'), - (0x1D6C7, 'M', 'ζ'), - (0x1D6C8, 'M', 'η'), - (0x1D6C9, 'M', 'θ'), - (0x1D6CA, 'M', 'ι'), - (0x1D6CB, 'M', 'κ'), - (0x1D6CC, 'M', 'λ'), - (0x1D6CD, 'M', 'μ'), - (0x1D6CE, 'M', 'ν'), - (0x1D6CF, 'M', 'ξ'), - (0x1D6D0, 'M', 'ο'), - (0x1D6D1, 'M', 'π'), - (0x1D6D2, 'M', 'ρ'), - (0x1D6D3, 'M', 'σ'), - (0x1D6D5, 'M', 'τ'), - (0x1D6D6, 'M', 'υ'), - (0x1D6D7, 'M', 'φ'), - (0x1D6D8, 'M', 'χ'), - (0x1D6D9, 'M', 'ψ'), - (0x1D6DA, 'M', 'ω'), - (0x1D6DB, 'M', '∂'), - (0x1D6DC, 'M', 'ε'), - (0x1D6DD, 'M', 'θ'), - (0x1D6DE, 'M', 'κ'), - (0x1D6DF, 'M', 'φ'), - (0x1D6E0, 'M', 'ρ'), - (0x1D6E1, 'M', 'π'), - (0x1D6E2, 'M', 'α'), - (0x1D6E3, 'M', 'β'), - (0x1D6E4, 'M', 'γ'), + (0x1D683, "M", "t"), + (0x1D684, "M", "u"), + (0x1D685, "M", "v"), + (0x1D686, "M", "w"), + (0x1D687, "M", "x"), + (0x1D688, "M", "y"), + (0x1D689, "M", "z"), + (0x1D68A, "M", "a"), + (0x1D68B, "M", "b"), + (0x1D68C, "M", "c"), + (0x1D68D, "M", "d"), + (0x1D68E, "M", "e"), + (0x1D68F, "M", "f"), + (0x1D690, "M", "g"), + (0x1D691, "M", "h"), + (0x1D692, "M", "i"), + (0x1D693, "M", "j"), + (0x1D694, "M", "k"), + (0x1D695, "M", "l"), + (0x1D696, "M", "m"), + (0x1D697, "M", "n"), + (0x1D698, "M", "o"), + (0x1D699, "M", "p"), + (0x1D69A, "M", "q"), + (0x1D69B, "M", "r"), + (0x1D69C, "M", "s"), + (0x1D69D, "M", "t"), + (0x1D69E, "M", "u"), + (0x1D69F, "M", "v"), + (0x1D6A0, "M", "w"), + (0x1D6A1, "M", "x"), + (0x1D6A2, "M", "y"), + (0x1D6A3, "M", "z"), + (0x1D6A4, "M", "ı"), + (0x1D6A5, "M", "ȷ"), + (0x1D6A6, "X"), + (0x1D6A8, "M", "α"), + (0x1D6A9, "M", "β"), + (0x1D6AA, "M", "γ"), + (0x1D6AB, "M", "δ"), + (0x1D6AC, "M", "ε"), + (0x1D6AD, "M", "ζ"), + (0x1D6AE, "M", "η"), + (0x1D6AF, "M", "θ"), + (0x1D6B0, "M", "ι"), + (0x1D6B1, "M", "κ"), + (0x1D6B2, "M", "λ"), + (0x1D6B3, "M", "μ"), + (0x1D6B4, "M", "ν"), + (0x1D6B5, "M", "ξ"), + (0x1D6B6, "M", "ο"), + (0x1D6B7, "M", "π"), + (0x1D6B8, "M", "ρ"), + (0x1D6B9, "M", "θ"), + (0x1D6BA, "M", "σ"), + (0x1D6BB, "M", "τ"), + (0x1D6BC, "M", "υ"), + (0x1D6BD, "M", "φ"), + (0x1D6BE, "M", "χ"), + (0x1D6BF, "M", "ψ"), + (0x1D6C0, "M", "ω"), + (0x1D6C1, "M", "∇"), + (0x1D6C2, "M", "α"), + (0x1D6C3, "M", "β"), + (0x1D6C4, "M", "γ"), + (0x1D6C5, "M", "δ"), + (0x1D6C6, "M", "ε"), + (0x1D6C7, "M", "ζ"), + (0x1D6C8, "M", "η"), + (0x1D6C9, "M", "θ"), + (0x1D6CA, "M", "ι"), + (0x1D6CB, "M", "κ"), + (0x1D6CC, "M", "λ"), + (0x1D6CD, "M", "μ"), + (0x1D6CE, "M", "ν"), + (0x1D6CF, "M", "ξ"), + (0x1D6D0, "M", "ο"), + (0x1D6D1, "M", "π"), + (0x1D6D2, "M", "ρ"), + (0x1D6D3, "M", "σ"), + (0x1D6D5, "M", "τ"), + (0x1D6D6, "M", "υ"), + (0x1D6D7, "M", "φ"), + (0x1D6D8, "M", "χ"), + (0x1D6D9, "M", "ψ"), + (0x1D6DA, "M", "ω"), + (0x1D6DB, "M", "∂"), + (0x1D6DC, "M", "ε"), + (0x1D6DD, "M", "θ"), + (0x1D6DE, "M", "κ"), + (0x1D6DF, "M", "φ"), + (0x1D6E0, "M", "ρ"), + (0x1D6E1, "M", "π"), + (0x1D6E2, "M", "α"), + (0x1D6E3, "M", "β"), + (0x1D6E4, "M", "γ"), + (0x1D6E5, "M", "δ"), + (0x1D6E6, "M", "ε"), + (0x1D6E7, "M", "ζ"), + (0x1D6E8, "M", "η"), ] + def _seg_68() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: return [ - (0x1D6E5, 'M', 'δ'), - (0x1D6E6, 'M', 'ε'), - (0x1D6E7, 'M', 'ζ'), - (0x1D6E8, 'M', 'η'), - (0x1D6E9, 'M', 'θ'), - (0x1D6EA, 'M', 'ι'), - (0x1D6EB, 'M', 'κ'), - (0x1D6EC, 'M', 'λ'), - (0x1D6ED, 'M', 'μ'), - (0x1D6EE, 'M', 'ν'), - (0x1D6EF, 'M', 'ξ'), - (0x1D6F0, 'M', 'ο'), - (0x1D6F1, 'M', 'π'), - (0x1D6F2, 'M', 'ρ'), - (0x1D6F3, 'M', 'θ'), - (0x1D6F4, 'M', 'σ'), - (0x1D6F5, 'M', 'τ'), - (0x1D6F6, 'M', 'υ'), - (0x1D6F7, 'M', 'φ'), - (0x1D6F8, 'M', 'χ'), - (0x1D6F9, 'M', 'ψ'), - (0x1D6FA, 'M', 'ω'), - (0x1D6FB, 'M', '∇'), - (0x1D6FC, 'M', 'α'), - (0x1D6FD, 'M', 'β'), - (0x1D6FE, 'M', 'γ'), - (0x1D6FF, 'M', 'δ'), - (0x1D700, 'M', 'ε'), - (0x1D701, 'M', 'ζ'), - (0x1D702, 'M', 'η'), - (0x1D703, 'M', 'θ'), - (0x1D704, 'M', 'ι'), - (0x1D705, 'M', 'κ'), - (0x1D706, 'M', 'λ'), - (0x1D707, 'M', 'μ'), - (0x1D708, 'M', 'ν'), - (0x1D709, 'M', 'ξ'), - (0x1D70A, 'M', 'ο'), - (0x1D70B, 'M', 'π'), - (0x1D70C, 'M', 'ρ'), - (0x1D70D, 'M', 'σ'), - (0x1D70F, 'M', 'τ'), - (0x1D710, 'M', 'υ'), - (0x1D711, 'M', 'φ'), - (0x1D712, 'M', 'χ'), - (0x1D713, 'M', 'ψ'), - (0x1D714, 'M', 'ω'), - (0x1D715, 'M', '∂'), - (0x1D716, 'M', 'ε'), - (0x1D717, 'M', 'θ'), - (0x1D718, 'M', 'κ'), - (0x1D719, 'M', 'φ'), - (0x1D71A, 'M', 'ρ'), - (0x1D71B, 'M', 'π'), - (0x1D71C, 'M', 'α'), - (0x1D71D, 'M', 'β'), - (0x1D71E, 'M', 'γ'), - (0x1D71F, 'M', 'δ'), - (0x1D720, 'M', 'ε'), - (0x1D721, 'M', 'ζ'), - (0x1D722, 'M', 'η'), - (0x1D723, 'M', 'θ'), - (0x1D724, 'M', 'ι'), - (0x1D725, 'M', 'κ'), - (0x1D726, 'M', 'λ'), - (0x1D727, 'M', 'μ'), - (0x1D728, 'M', 'ν'), - (0x1D729, 'M', 'ξ'), - (0x1D72A, 'M', 'ο'), - (0x1D72B, 'M', 'π'), - (0x1D72C, 'M', 'ρ'), - (0x1D72D, 'M', 'θ'), - (0x1D72E, 'M', 'σ'), - (0x1D72F, 'M', 'τ'), - (0x1D730, 'M', 'υ'), - (0x1D731, 'M', 'φ'), - (0x1D732, 'M', 'χ'), - (0x1D733, 'M', 'ψ'), - (0x1D734, 'M', 'ω'), - (0x1D735, 'M', '∇'), - (0x1D736, 'M', 'α'), - (0x1D737, 'M', 'β'), - (0x1D738, 'M', 'γ'), - (0x1D739, 'M', 'δ'), - (0x1D73A, 'M', 'ε'), - (0x1D73B, 'M', 'ζ'), - (0x1D73C, 'M', 'η'), - (0x1D73D, 'M', 'θ'), - (0x1D73E, 'M', 'ι'), - (0x1D73F, 'M', 'κ'), - (0x1D740, 'M', 'λ'), - (0x1D741, 'M', 'μ'), - (0x1D742, 'M', 'ν'), - (0x1D743, 'M', 'ξ'), - (0x1D744, 'M', 'ο'), - (0x1D745, 'M', 'π'), - (0x1D746, 'M', 'ρ'), - (0x1D747, 'M', 'σ'), - (0x1D749, 'M', 'τ'), - (0x1D74A, 'M', 'υ'), + (0x1D6E9, "M", "θ"), + (0x1D6EA, "M", "ι"), + (0x1D6EB, "M", "κ"), + (0x1D6EC, "M", "λ"), + (0x1D6ED, "M", "μ"), + (0x1D6EE, "M", "ν"), + (0x1D6EF, "M", "ξ"), + (0x1D6F0, "M", "ο"), + (0x1D6F1, "M", "π"), + (0x1D6F2, "M", "ρ"), + (0x1D6F3, "M", "θ"), + (0x1D6F4, "M", "σ"), + (0x1D6F5, "M", "τ"), + (0x1D6F6, "M", "υ"), + (0x1D6F7, "M", "φ"), + (0x1D6F8, "M", "χ"), + (0x1D6F9, "M", "ψ"), + (0x1D6FA, "M", "ω"), + (0x1D6FB, "M", "∇"), + (0x1D6FC, "M", "α"), + (0x1D6FD, "M", "β"), + (0x1D6FE, "M", "γ"), + (0x1D6FF, "M", "δ"), + (0x1D700, "M", "ε"), + (0x1D701, "M", "ζ"), + (0x1D702, "M", "η"), + (0x1D703, "M", "θ"), + (0x1D704, "M", "ι"), + (0x1D705, "M", "κ"), + (0x1D706, "M", "λ"), + (0x1D707, "M", "μ"), + (0x1D708, "M", "ν"), + (0x1D709, "M", "ξ"), + (0x1D70A, "M", "ο"), + (0x1D70B, "M", "π"), + (0x1D70C, "M", "ρ"), + (0x1D70D, "M", "σ"), + (0x1D70F, "M", "τ"), + (0x1D710, "M", "υ"), + (0x1D711, "M", "φ"), + (0x1D712, "M", "χ"), + (0x1D713, "M", "ψ"), + (0x1D714, "M", "ω"), + (0x1D715, "M", "∂"), + (0x1D716, "M", "ε"), + (0x1D717, "M", "θ"), + (0x1D718, "M", "κ"), + (0x1D719, "M", "φ"), + (0x1D71A, "M", "ρ"), + (0x1D71B, "M", "π"), + (0x1D71C, "M", "α"), + (0x1D71D, "M", "β"), + (0x1D71E, "M", "γ"), + (0x1D71F, "M", "δ"), + (0x1D720, "M", "ε"), + (0x1D721, "M", "ζ"), + (0x1D722, "M", "η"), + (0x1D723, "M", "θ"), + (0x1D724, "M", "ι"), + (0x1D725, "M", "κ"), + (0x1D726, "M", "λ"), + (0x1D727, "M", "μ"), + (0x1D728, "M", "ν"), + (0x1D729, "M", "ξ"), + (0x1D72A, "M", "ο"), + (0x1D72B, "M", "π"), + (0x1D72C, "M", "ρ"), + (0x1D72D, "M", "θ"), + (0x1D72E, "M", "σ"), + (0x1D72F, "M", "τ"), + (0x1D730, "M", "υ"), + (0x1D731, "M", "φ"), + (0x1D732, "M", "χ"), + (0x1D733, "M", "ψ"), + (0x1D734, "M", "ω"), + (0x1D735, "M", "∇"), + (0x1D736, "M", "α"), + (0x1D737, "M", "β"), + (0x1D738, "M", "γ"), + (0x1D739, "M", "δ"), + (0x1D73A, "M", "ε"), + (0x1D73B, "M", "ζ"), + (0x1D73C, "M", "η"), + (0x1D73D, "M", "θ"), + (0x1D73E, "M", "ι"), + (0x1D73F, "M", "κ"), + (0x1D740, "M", "λ"), + (0x1D741, "M", "μ"), + (0x1D742, "M", "ν"), + (0x1D743, "M", "ξ"), + (0x1D744, "M", "ο"), + (0x1D745, "M", "π"), + (0x1D746, "M", "ρ"), + (0x1D747, "M", "σ"), + (0x1D749, "M", "τ"), + (0x1D74A, "M", "υ"), + (0x1D74B, "M", "φ"), + (0x1D74C, "M", "χ"), + (0x1D74D, "M", "ψ"), + (0x1D74E, "M", "ω"), ] + def _seg_69() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: return [ - (0x1D74B, 'M', 'φ'), - (0x1D74C, 'M', 'χ'), - (0x1D74D, 'M', 'ψ'), - (0x1D74E, 'M', 'ω'), - (0x1D74F, 'M', '∂'), - (0x1D750, 'M', 'ε'), - (0x1D751, 'M', 'θ'), - (0x1D752, 'M', 'κ'), - (0x1D753, 'M', 'φ'), - (0x1D754, 'M', 'ρ'), - (0x1D755, 'M', 'π'), - (0x1D756, 'M', 'α'), - (0x1D757, 'M', 'β'), - (0x1D758, 'M', 'γ'), - (0x1D759, 'M', 'δ'), - (0x1D75A, 'M', 'ε'), - (0x1D75B, 'M', 'ζ'), - (0x1D75C, 'M', 'η'), - (0x1D75D, 'M', 'θ'), - (0x1D75E, 'M', 'ι'), - (0x1D75F, 'M', 'κ'), - (0x1D760, 'M', 'λ'), - (0x1D761, 'M', 'μ'), - (0x1D762, 'M', 'ν'), - (0x1D763, 'M', 'ξ'), - (0x1D764, 'M', 'ο'), - (0x1D765, 'M', 'π'), - (0x1D766, 'M', 'ρ'), - (0x1D767, 'M', 'θ'), - (0x1D768, 'M', 'σ'), - (0x1D769, 'M', 'τ'), - (0x1D76A, 'M', 'υ'), - (0x1D76B, 'M', 'φ'), - (0x1D76C, 'M', 'χ'), - (0x1D76D, 'M', 'ψ'), - (0x1D76E, 'M', 'ω'), - (0x1D76F, 'M', '∇'), - (0x1D770, 'M', 'α'), - (0x1D771, 'M', 'β'), - (0x1D772, 'M', 'γ'), - (0x1D773, 'M', 'δ'), - (0x1D774, 'M', 'ε'), - (0x1D775, 'M', 'ζ'), - (0x1D776, 'M', 'η'), - (0x1D777, 'M', 'θ'), - (0x1D778, 'M', 'ι'), - (0x1D779, 'M', 'κ'), - (0x1D77A, 'M', 'λ'), - (0x1D77B, 'M', 'μ'), - (0x1D77C, 'M', 'ν'), - (0x1D77D, 'M', 'ξ'), - (0x1D77E, 'M', 'ο'), - (0x1D77F, 'M', 'π'), - (0x1D780, 'M', 'ρ'), - (0x1D781, 'M', 'σ'), - (0x1D783, 'M', 'τ'), - (0x1D784, 'M', 'υ'), - (0x1D785, 'M', 'φ'), - (0x1D786, 'M', 'χ'), - (0x1D787, 'M', 'ψ'), - (0x1D788, 'M', 'ω'), - (0x1D789, 'M', '∂'), - (0x1D78A, 'M', 'ε'), - (0x1D78B, 'M', 'θ'), - (0x1D78C, 'M', 'κ'), - (0x1D78D, 'M', 'φ'), - (0x1D78E, 'M', 'ρ'), - (0x1D78F, 'M', 'π'), - (0x1D790, 'M', 'α'), - (0x1D791, 'M', 'β'), - (0x1D792, 'M', 'γ'), - (0x1D793, 'M', 'δ'), - (0x1D794, 'M', 'ε'), - (0x1D795, 'M', 'ζ'), - (0x1D796, 'M', 'η'), - (0x1D797, 'M', 'θ'), - (0x1D798, 'M', 'ι'), - (0x1D799, 'M', 'κ'), - (0x1D79A, 'M', 'λ'), - (0x1D79B, 'M', 'μ'), - (0x1D79C, 'M', 'ν'), - (0x1D79D, 'M', 'ξ'), - (0x1D79E, 'M', 'ο'), - (0x1D79F, 'M', 'π'), - (0x1D7A0, 'M', 'ρ'), - (0x1D7A1, 'M', 'θ'), - (0x1D7A2, 'M', 'σ'), - (0x1D7A3, 'M', 'τ'), - (0x1D7A4, 'M', 'υ'), - (0x1D7A5, 'M', 'φ'), - (0x1D7A6, 'M', 'χ'), - (0x1D7A7, 'M', 'ψ'), - (0x1D7A8, 'M', 'ω'), - (0x1D7A9, 'M', '∇'), - (0x1D7AA, 'M', 'α'), - (0x1D7AB, 'M', 'β'), - (0x1D7AC, 'M', 'γ'), - (0x1D7AD, 'M', 'δ'), - (0x1D7AE, 'M', 'ε'), - (0x1D7AF, 'M', 'ζ'), + (0x1D74F, "M", "∂"), + (0x1D750, "M", "ε"), + (0x1D751, "M", "θ"), + (0x1D752, "M", "κ"), + (0x1D753, "M", "φ"), + (0x1D754, "M", "ρ"), + (0x1D755, "M", "π"), + (0x1D756, "M", "α"), + (0x1D757, "M", "β"), + (0x1D758, "M", "γ"), + (0x1D759, "M", "δ"), + (0x1D75A, "M", "ε"), + (0x1D75B, "M", "ζ"), + (0x1D75C, "M", "η"), + (0x1D75D, "M", "θ"), + (0x1D75E, "M", "ι"), + (0x1D75F, "M", "κ"), + (0x1D760, "M", "λ"), + (0x1D761, "M", "μ"), + (0x1D762, "M", "ν"), + (0x1D763, "M", "ξ"), + (0x1D764, "M", "ο"), + (0x1D765, "M", "π"), + (0x1D766, "M", "ρ"), + (0x1D767, "M", "θ"), + (0x1D768, "M", "σ"), + (0x1D769, "M", "τ"), + (0x1D76A, "M", "υ"), + (0x1D76B, "M", "φ"), + (0x1D76C, "M", "χ"), + (0x1D76D, "M", "ψ"), + (0x1D76E, "M", "ω"), + (0x1D76F, "M", "∇"), + (0x1D770, "M", "α"), + (0x1D771, "M", "β"), + (0x1D772, "M", "γ"), + (0x1D773, "M", "δ"), + (0x1D774, "M", "ε"), + (0x1D775, "M", "ζ"), + (0x1D776, "M", "η"), + (0x1D777, "M", "θ"), + (0x1D778, "M", "ι"), + (0x1D779, "M", "κ"), + (0x1D77A, "M", "λ"), + (0x1D77B, "M", "μ"), + (0x1D77C, "M", "ν"), + (0x1D77D, "M", "ξ"), + (0x1D77E, "M", "ο"), + (0x1D77F, "M", "π"), + (0x1D780, "M", "ρ"), + (0x1D781, "M", "σ"), + (0x1D783, "M", "τ"), + (0x1D784, "M", "υ"), + (0x1D785, "M", "φ"), + (0x1D786, "M", "χ"), + (0x1D787, "M", "ψ"), + (0x1D788, "M", "ω"), + (0x1D789, "M", "∂"), + (0x1D78A, "M", "ε"), + (0x1D78B, "M", "θ"), + (0x1D78C, "M", "κ"), + (0x1D78D, "M", "φ"), + (0x1D78E, "M", "ρ"), + (0x1D78F, "M", "π"), + (0x1D790, "M", "α"), + (0x1D791, "M", "β"), + (0x1D792, "M", "γ"), + (0x1D793, "M", "δ"), + (0x1D794, "M", "ε"), + (0x1D795, "M", "ζ"), + (0x1D796, "M", "η"), + (0x1D797, "M", "θ"), + (0x1D798, "M", "ι"), + (0x1D799, "M", "κ"), + (0x1D79A, "M", "λ"), + (0x1D79B, "M", "μ"), + (0x1D79C, "M", "ν"), + (0x1D79D, "M", "ξ"), + (0x1D79E, "M", "ο"), + (0x1D79F, "M", "π"), + (0x1D7A0, "M", "ρ"), + (0x1D7A1, "M", "θ"), + (0x1D7A2, "M", "σ"), + (0x1D7A3, "M", "τ"), + (0x1D7A4, "M", "υ"), + (0x1D7A5, "M", "φ"), + (0x1D7A6, "M", "χ"), + (0x1D7A7, "M", "ψ"), + (0x1D7A8, "M", "ω"), + (0x1D7A9, "M", "∇"), + (0x1D7AA, "M", "α"), + (0x1D7AB, "M", "β"), + (0x1D7AC, "M", "γ"), + (0x1D7AD, "M", "δ"), + (0x1D7AE, "M", "ε"), + (0x1D7AF, "M", "ζ"), + (0x1D7B0, "M", "η"), + (0x1D7B1, "M", "θ"), + (0x1D7B2, "M", "ι"), + (0x1D7B3, "M", "κ"), ] + def _seg_70() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: return [ - (0x1D7B0, 'M', 'η'), - (0x1D7B1, 'M', 'θ'), - (0x1D7B2, 'M', 'ι'), - (0x1D7B3, 'M', 'κ'), - (0x1D7B4, 'M', 'λ'), - (0x1D7B5, 'M', 'μ'), - (0x1D7B6, 'M', 'ν'), - (0x1D7B7, 'M', 'ξ'), - (0x1D7B8, 'M', 'ο'), - (0x1D7B9, 'M', 'π'), - (0x1D7BA, 'M', 'ρ'), - (0x1D7BB, 'M', 'σ'), - (0x1D7BD, 'M', 'τ'), - (0x1D7BE, 'M', 'υ'), - (0x1D7BF, 'M', 'φ'), - (0x1D7C0, 'M', 'χ'), - (0x1D7C1, 'M', 'ψ'), - (0x1D7C2, 'M', 'ω'), - (0x1D7C3, 'M', '∂'), - (0x1D7C4, 'M', 'ε'), - (0x1D7C5, 'M', 'θ'), - (0x1D7C6, 'M', 'κ'), - (0x1D7C7, 'M', 'φ'), - (0x1D7C8, 'M', 'ρ'), - (0x1D7C9, 'M', 'π'), - (0x1D7CA, 'M', 'ϝ'), - (0x1D7CC, 'X'), - (0x1D7CE, 'M', '0'), - (0x1D7CF, 'M', '1'), - (0x1D7D0, 'M', '2'), - (0x1D7D1, 'M', '3'), - (0x1D7D2, 'M', '4'), - (0x1D7D3, 'M', '5'), - (0x1D7D4, 'M', '6'), - (0x1D7D5, 'M', '7'), - (0x1D7D6, 'M', '8'), - (0x1D7D7, 'M', '9'), - (0x1D7D8, 'M', '0'), - (0x1D7D9, 'M', '1'), - (0x1D7DA, 'M', '2'), - (0x1D7DB, 'M', '3'), - (0x1D7DC, 'M', '4'), - (0x1D7DD, 'M', '5'), - (0x1D7DE, 'M', '6'), - (0x1D7DF, 'M', '7'), - (0x1D7E0, 'M', '8'), - (0x1D7E1, 'M', '9'), - (0x1D7E2, 'M', '0'), - (0x1D7E3, 'M', '1'), - (0x1D7E4, 'M', '2'), - (0x1D7E5, 'M', '3'), - (0x1D7E6, 'M', '4'), - (0x1D7E7, 'M', '5'), - (0x1D7E8, 'M', '6'), - (0x1D7E9, 'M', '7'), - (0x1D7EA, 'M', '8'), - (0x1D7EB, 'M', '9'), - (0x1D7EC, 'M', '0'), - (0x1D7ED, 'M', '1'), - (0x1D7EE, 'M', '2'), - (0x1D7EF, 'M', '3'), - (0x1D7F0, 'M', '4'), - (0x1D7F1, 'M', '5'), - (0x1D7F2, 'M', '6'), - (0x1D7F3, 'M', '7'), - (0x1D7F4, 'M', '8'), - (0x1D7F5, 'M', '9'), - (0x1D7F6, 'M', '0'), - (0x1D7F7, 'M', '1'), - (0x1D7F8, 'M', '2'), - (0x1D7F9, 'M', '3'), - (0x1D7FA, 'M', '4'), - (0x1D7FB, 'M', '5'), - (0x1D7FC, 'M', '6'), - (0x1D7FD, 'M', '7'), - (0x1D7FE, 'M', '8'), - (0x1D7FF, 'M', '9'), - (0x1D800, 'V'), - (0x1DA8C, 'X'), - (0x1DA9B, 'V'), - (0x1DAA0, 'X'), - (0x1DAA1, 'V'), - (0x1DAB0, 'X'), - (0x1DF00, 'V'), - (0x1DF1F, 'X'), - (0x1DF25, 'V'), - (0x1DF2B, 'X'), - (0x1E000, 'V'), - (0x1E007, 'X'), - (0x1E008, 'V'), - (0x1E019, 'X'), - (0x1E01B, 'V'), - (0x1E022, 'X'), - (0x1E023, 'V'), - (0x1E025, 'X'), - (0x1E026, 'V'), - (0x1E02B, 'X'), - (0x1E030, 'M', 'а'), - (0x1E031, 'M', 'б'), - (0x1E032, 'M', 'в'), + (0x1D7B4, "M", "λ"), + (0x1D7B5, "M", "μ"), + (0x1D7B6, "M", "ν"), + (0x1D7B7, "M", "ξ"), + (0x1D7B8, "M", "ο"), + (0x1D7B9, "M", "π"), + (0x1D7BA, "M", "ρ"), + (0x1D7BB, "M", "σ"), + (0x1D7BD, "M", "τ"), + (0x1D7BE, "M", "υ"), + (0x1D7BF, "M", "φ"), + (0x1D7C0, "M", "χ"), + (0x1D7C1, "M", "ψ"), + (0x1D7C2, "M", "ω"), + (0x1D7C3, "M", "∂"), + (0x1D7C4, "M", "ε"), + (0x1D7C5, "M", "θ"), + (0x1D7C6, "M", "κ"), + (0x1D7C7, "M", "φ"), + (0x1D7C8, "M", "ρ"), + (0x1D7C9, "M", "π"), + (0x1D7CA, "M", "ϝ"), + (0x1D7CC, "X"), + (0x1D7CE, "M", "0"), + (0x1D7CF, "M", "1"), + (0x1D7D0, "M", "2"), + (0x1D7D1, "M", "3"), + (0x1D7D2, "M", "4"), + (0x1D7D3, "M", "5"), + (0x1D7D4, "M", "6"), + (0x1D7D5, "M", "7"), + (0x1D7D6, "M", "8"), + (0x1D7D7, "M", "9"), + (0x1D7D8, "M", "0"), + (0x1D7D9, "M", "1"), + (0x1D7DA, "M", "2"), + (0x1D7DB, "M", "3"), + (0x1D7DC, "M", "4"), + (0x1D7DD, "M", "5"), + (0x1D7DE, "M", "6"), + (0x1D7DF, "M", "7"), + (0x1D7E0, "M", "8"), + (0x1D7E1, "M", "9"), + (0x1D7E2, "M", "0"), + (0x1D7E3, "M", "1"), + (0x1D7E4, "M", "2"), + (0x1D7E5, "M", "3"), + (0x1D7E6, "M", "4"), + (0x1D7E7, "M", "5"), + (0x1D7E8, "M", "6"), + (0x1D7E9, "M", "7"), + (0x1D7EA, "M", "8"), + (0x1D7EB, "M", "9"), + (0x1D7EC, "M", "0"), + (0x1D7ED, "M", "1"), + (0x1D7EE, "M", "2"), + (0x1D7EF, "M", "3"), + (0x1D7F0, "M", "4"), + (0x1D7F1, "M", "5"), + (0x1D7F2, "M", "6"), + (0x1D7F3, "M", "7"), + (0x1D7F4, "M", "8"), + (0x1D7F5, "M", "9"), + (0x1D7F6, "M", "0"), + (0x1D7F7, "M", "1"), + (0x1D7F8, "M", "2"), + (0x1D7F9, "M", "3"), + (0x1D7FA, "M", "4"), + (0x1D7FB, "M", "5"), + (0x1D7FC, "M", "6"), + (0x1D7FD, "M", "7"), + (0x1D7FE, "M", "8"), + (0x1D7FF, "M", "9"), + (0x1D800, "V"), + (0x1DA8C, "X"), + (0x1DA9B, "V"), + (0x1DAA0, "X"), + (0x1DAA1, "V"), + (0x1DAB0, "X"), + (0x1DF00, "V"), + (0x1DF1F, "X"), + (0x1DF25, "V"), + (0x1DF2B, "X"), + (0x1E000, "V"), + (0x1E007, "X"), + (0x1E008, "V"), + (0x1E019, "X"), + (0x1E01B, "V"), + (0x1E022, "X"), + (0x1E023, "V"), + (0x1E025, "X"), + (0x1E026, "V"), + (0x1E02B, "X"), + (0x1E030, "M", "а"), + (0x1E031, "M", "б"), + (0x1E032, "M", "в"), + (0x1E033, "M", "г"), + (0x1E034, "M", "д"), + (0x1E035, "M", "е"), + (0x1E036, "M", "ж"), ] + def _seg_71() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: return [ - (0x1E033, 'M', 'г'), - (0x1E034, 'M', 'д'), - (0x1E035, 'M', 'е'), - (0x1E036, 'M', 'ж'), - (0x1E037, 'M', 'з'), - (0x1E038, 'M', 'и'), - (0x1E039, 'M', 'к'), - (0x1E03A, 'M', 'л'), - (0x1E03B, 'M', 'м'), - (0x1E03C, 'M', 'о'), - (0x1E03D, 'M', 'п'), - (0x1E03E, 'M', 'р'), - (0x1E03F, 'M', 'с'), - (0x1E040, 'M', 'т'), - (0x1E041, 'M', 'у'), - (0x1E042, 'M', 'ф'), - (0x1E043, 'M', 'х'), - (0x1E044, 'M', 'ц'), - (0x1E045, 'M', 'ч'), - (0x1E046, 'M', 'ш'), - (0x1E047, 'M', 'ы'), - (0x1E048, 'M', 'э'), - (0x1E049, 'M', 'ю'), - (0x1E04A, 'M', 'ꚉ'), - (0x1E04B, 'M', 'ә'), - (0x1E04C, 'M', 'і'), - (0x1E04D, 'M', 'ј'), - (0x1E04E, 'M', 'ө'), - (0x1E04F, 'M', 'ү'), - (0x1E050, 'M', 'ӏ'), - (0x1E051, 'M', 'а'), - (0x1E052, 'M', 'б'), - (0x1E053, 'M', 'в'), - (0x1E054, 'M', 'г'), - (0x1E055, 'M', 'д'), - (0x1E056, 'M', 'е'), - (0x1E057, 'M', 'ж'), - (0x1E058, 'M', 'з'), - (0x1E059, 'M', 'и'), - (0x1E05A, 'M', 'к'), - (0x1E05B, 'M', 'л'), - (0x1E05C, 'M', 'о'), - (0x1E05D, 'M', 'п'), - (0x1E05E, 'M', 'с'), - (0x1E05F, 'M', 'у'), - (0x1E060, 'M', 'ф'), - (0x1E061, 'M', 'х'), - (0x1E062, 'M', 'ц'), - (0x1E063, 'M', 'ч'), - (0x1E064, 'M', 'ш'), - (0x1E065, 'M', 'ъ'), - (0x1E066, 'M', 'ы'), - (0x1E067, 'M', 'ґ'), - (0x1E068, 'M', 'і'), - (0x1E069, 'M', 'ѕ'), - (0x1E06A, 'M', 'џ'), - (0x1E06B, 'M', 'ҫ'), - (0x1E06C, 'M', 'ꙑ'), - (0x1E06D, 'M', 'ұ'), - (0x1E06E, 'X'), - (0x1E08F, 'V'), - (0x1E090, 'X'), - (0x1E100, 'V'), - (0x1E12D, 'X'), - (0x1E130, 'V'), - (0x1E13E, 'X'), - (0x1E140, 'V'), - (0x1E14A, 'X'), - (0x1E14E, 'V'), - (0x1E150, 'X'), - (0x1E290, 'V'), - (0x1E2AF, 'X'), - (0x1E2C0, 'V'), - (0x1E2FA, 'X'), - (0x1E2FF, 'V'), - (0x1E300, 'X'), - (0x1E4D0, 'V'), - (0x1E4FA, 'X'), - (0x1E7E0, 'V'), - (0x1E7E7, 'X'), - (0x1E7E8, 'V'), - (0x1E7EC, 'X'), - (0x1E7ED, 'V'), - (0x1E7EF, 'X'), - (0x1E7F0, 'V'), - (0x1E7FF, 'X'), - (0x1E800, 'V'), - (0x1E8C5, 'X'), - (0x1E8C7, 'V'), - (0x1E8D7, 'X'), - (0x1E900, 'M', '𞤢'), - (0x1E901, 'M', '𞤣'), - (0x1E902, 'M', '𞤤'), - (0x1E903, 'M', '𞤥'), - (0x1E904, 'M', '𞤦'), - (0x1E905, 'M', '𞤧'), - (0x1E906, 'M', '𞤨'), - (0x1E907, 'M', '𞤩'), - (0x1E908, 'M', '𞤪'), - (0x1E909, 'M', '𞤫'), + (0x1E037, "M", "з"), + (0x1E038, "M", "и"), + (0x1E039, "M", "к"), + (0x1E03A, "M", "л"), + (0x1E03B, "M", "м"), + (0x1E03C, "M", "о"), + (0x1E03D, "M", "п"), + (0x1E03E, "M", "р"), + (0x1E03F, "M", "с"), + (0x1E040, "M", "т"), + (0x1E041, "M", "у"), + (0x1E042, "M", "ф"), + (0x1E043, "M", "х"), + (0x1E044, "M", "ц"), + (0x1E045, "M", "ч"), + (0x1E046, "M", "ш"), + (0x1E047, "M", "ы"), + (0x1E048, "M", "э"), + (0x1E049, "M", "ю"), + (0x1E04A, "M", "ꚉ"), + (0x1E04B, "M", "ә"), + (0x1E04C, "M", "і"), + (0x1E04D, "M", "ј"), + (0x1E04E, "M", "ө"), + (0x1E04F, "M", "ү"), + (0x1E050, "M", "ӏ"), + (0x1E051, "M", "а"), + (0x1E052, "M", "б"), + (0x1E053, "M", "в"), + (0x1E054, "M", "г"), + (0x1E055, "M", "д"), + (0x1E056, "M", "е"), + (0x1E057, "M", "ж"), + (0x1E058, "M", "з"), + (0x1E059, "M", "и"), + (0x1E05A, "M", "к"), + (0x1E05B, "M", "л"), + (0x1E05C, "M", "о"), + (0x1E05D, "M", "п"), + (0x1E05E, "M", "с"), + (0x1E05F, "M", "у"), + (0x1E060, "M", "ф"), + (0x1E061, "M", "х"), + (0x1E062, "M", "ц"), + (0x1E063, "M", "ч"), + (0x1E064, "M", "ш"), + (0x1E065, "M", "ъ"), + (0x1E066, "M", "ы"), + (0x1E067, "M", "ґ"), + (0x1E068, "M", "і"), + (0x1E069, "M", "ѕ"), + (0x1E06A, "M", "џ"), + (0x1E06B, "M", "ҫ"), + (0x1E06C, "M", "ꙑ"), + (0x1E06D, "M", "ұ"), + (0x1E06E, "X"), + (0x1E08F, "V"), + (0x1E090, "X"), + (0x1E100, "V"), + (0x1E12D, "X"), + (0x1E130, "V"), + (0x1E13E, "X"), + (0x1E140, "V"), + (0x1E14A, "X"), + (0x1E14E, "V"), + (0x1E150, "X"), + (0x1E290, "V"), + (0x1E2AF, "X"), + (0x1E2C0, "V"), + (0x1E2FA, "X"), + (0x1E2FF, "V"), + (0x1E300, "X"), + (0x1E4D0, "V"), + (0x1E4FA, "X"), + (0x1E7E0, "V"), + (0x1E7E7, "X"), + (0x1E7E8, "V"), + (0x1E7EC, "X"), + (0x1E7ED, "V"), + (0x1E7EF, "X"), + (0x1E7F0, "V"), + (0x1E7FF, "X"), + (0x1E800, "V"), + (0x1E8C5, "X"), + (0x1E8C7, "V"), + (0x1E8D7, "X"), + (0x1E900, "M", "𞤢"), + (0x1E901, "M", "𞤣"), + (0x1E902, "M", "𞤤"), + (0x1E903, "M", "𞤥"), + (0x1E904, "M", "𞤦"), + (0x1E905, "M", "𞤧"), + (0x1E906, "M", "𞤨"), + (0x1E907, "M", "𞤩"), + (0x1E908, "M", "𞤪"), + (0x1E909, "M", "𞤫"), + (0x1E90A, "M", "𞤬"), + (0x1E90B, "M", "𞤭"), + (0x1E90C, "M", "𞤮"), + (0x1E90D, "M", "𞤯"), ] + def _seg_72() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: return [ - (0x1E90A, 'M', '𞤬'), - (0x1E90B, 'M', '𞤭'), - (0x1E90C, 'M', '𞤮'), - (0x1E90D, 'M', '𞤯'), - (0x1E90E, 'M', '𞤰'), - (0x1E90F, 'M', '𞤱'), - (0x1E910, 'M', '𞤲'), - (0x1E911, 'M', '𞤳'), - (0x1E912, 'M', '𞤴'), - (0x1E913, 'M', '𞤵'), - (0x1E914, 'M', '𞤶'), - (0x1E915, 'M', '𞤷'), - (0x1E916, 'M', '𞤸'), - (0x1E917, 'M', '𞤹'), - (0x1E918, 'M', '𞤺'), - (0x1E919, 'M', '𞤻'), - (0x1E91A, 'M', '𞤼'), - (0x1E91B, 'M', '𞤽'), - (0x1E91C, 'M', '𞤾'), - (0x1E91D, 'M', '𞤿'), - (0x1E91E, 'M', '𞥀'), - (0x1E91F, 'M', '𞥁'), - (0x1E920, 'M', '𞥂'), - (0x1E921, 'M', '𞥃'), - (0x1E922, 'V'), - (0x1E94C, 'X'), - (0x1E950, 'V'), - (0x1E95A, 'X'), - (0x1E95E, 'V'), - (0x1E960, 'X'), - (0x1EC71, 'V'), - (0x1ECB5, 'X'), - (0x1ED01, 'V'), - (0x1ED3E, 'X'), - (0x1EE00, 'M', 'ا'), - (0x1EE01, 'M', 'ب'), - (0x1EE02, 'M', 'ج'), - (0x1EE03, 'M', 'د'), - (0x1EE04, 'X'), - (0x1EE05, 'M', 'و'), - (0x1EE06, 'M', 'ز'), - (0x1EE07, 'M', 'ح'), - (0x1EE08, 'M', 'ط'), - (0x1EE09, 'M', 'ي'), - (0x1EE0A, 'M', 'ك'), - (0x1EE0B, 'M', 'ل'), - (0x1EE0C, 'M', 'م'), - (0x1EE0D, 'M', 'ن'), - (0x1EE0E, 'M', 'س'), - (0x1EE0F, 'M', 'ع'), - (0x1EE10, 'M', 'ف'), - (0x1EE11, 'M', 'ص'), - (0x1EE12, 'M', 'ق'), - (0x1EE13, 'M', 'ر'), - (0x1EE14, 'M', 'ش'), - (0x1EE15, 'M', 'ت'), - (0x1EE16, 'M', 'ث'), - (0x1EE17, 'M', 'خ'), - (0x1EE18, 'M', 'ذ'), - (0x1EE19, 'M', 'ض'), - (0x1EE1A, 'M', 'ظ'), - (0x1EE1B, 'M', 'غ'), - (0x1EE1C, 'M', 'ٮ'), - (0x1EE1D, 'M', 'ں'), - (0x1EE1E, 'M', 'ڡ'), - (0x1EE1F, 'M', 'ٯ'), - (0x1EE20, 'X'), - (0x1EE21, 'M', 'ب'), - (0x1EE22, 'M', 'ج'), - (0x1EE23, 'X'), - (0x1EE24, 'M', 'ه'), - (0x1EE25, 'X'), - (0x1EE27, 'M', 'ح'), - (0x1EE28, 'X'), - (0x1EE29, 'M', 'ي'), - (0x1EE2A, 'M', 'ك'), - (0x1EE2B, 'M', 'ل'), - (0x1EE2C, 'M', 'م'), - (0x1EE2D, 'M', 'ن'), - (0x1EE2E, 'M', 'س'), - (0x1EE2F, 'M', 'ع'), - (0x1EE30, 'M', 'ف'), - (0x1EE31, 'M', 'ص'), - (0x1EE32, 'M', 'ق'), - (0x1EE33, 'X'), - (0x1EE34, 'M', 'ش'), - (0x1EE35, 'M', 'ت'), - (0x1EE36, 'M', 'ث'), - (0x1EE37, 'M', 'خ'), - (0x1EE38, 'X'), - (0x1EE39, 'M', 'ض'), - (0x1EE3A, 'X'), - (0x1EE3B, 'M', 'غ'), - (0x1EE3C, 'X'), - (0x1EE42, 'M', 'ج'), - (0x1EE43, 'X'), - (0x1EE47, 'M', 'ح'), - (0x1EE48, 'X'), - (0x1EE49, 'M', 'ي'), - (0x1EE4A, 'X'), + (0x1E90E, "M", "𞤰"), + (0x1E90F, "M", "𞤱"), + (0x1E910, "M", "𞤲"), + (0x1E911, "M", "𞤳"), + (0x1E912, "M", "𞤴"), + (0x1E913, "M", "𞤵"), + (0x1E914, "M", "𞤶"), + (0x1E915, "M", "𞤷"), + (0x1E916, "M", "𞤸"), + (0x1E917, "M", "𞤹"), + (0x1E918, "M", "𞤺"), + (0x1E919, "M", "𞤻"), + (0x1E91A, "M", "𞤼"), + (0x1E91B, "M", "𞤽"), + (0x1E91C, "M", "𞤾"), + (0x1E91D, "M", "𞤿"), + (0x1E91E, "M", "𞥀"), + (0x1E91F, "M", "𞥁"), + (0x1E920, "M", "𞥂"), + (0x1E921, "M", "𞥃"), + (0x1E922, "V"), + (0x1E94C, "X"), + (0x1E950, "V"), + (0x1E95A, "X"), + (0x1E95E, "V"), + (0x1E960, "X"), + (0x1EC71, "V"), + (0x1ECB5, "X"), + (0x1ED01, "V"), + (0x1ED3E, "X"), + (0x1EE00, "M", "ا"), + (0x1EE01, "M", "ب"), + (0x1EE02, "M", "ج"), + (0x1EE03, "M", "د"), + (0x1EE04, "X"), + (0x1EE05, "M", "و"), + (0x1EE06, "M", "ز"), + (0x1EE07, "M", "ح"), + (0x1EE08, "M", "ط"), + (0x1EE09, "M", "ي"), + (0x1EE0A, "M", "ك"), + (0x1EE0B, "M", "ل"), + (0x1EE0C, "M", "م"), + (0x1EE0D, "M", "ن"), + (0x1EE0E, "M", "س"), + (0x1EE0F, "M", "ع"), + (0x1EE10, "M", "ف"), + (0x1EE11, "M", "ص"), + (0x1EE12, "M", "ق"), + (0x1EE13, "M", "ر"), + (0x1EE14, "M", "ش"), + (0x1EE15, "M", "ت"), + (0x1EE16, "M", "ث"), + (0x1EE17, "M", "خ"), + (0x1EE18, "M", "ذ"), + (0x1EE19, "M", "ض"), + (0x1EE1A, "M", "ظ"), + (0x1EE1B, "M", "غ"), + (0x1EE1C, "M", "ٮ"), + (0x1EE1D, "M", "ں"), + (0x1EE1E, "M", "ڡ"), + (0x1EE1F, "M", "ٯ"), + (0x1EE20, "X"), + (0x1EE21, "M", "ب"), + (0x1EE22, "M", "ج"), + (0x1EE23, "X"), + (0x1EE24, "M", "ه"), + (0x1EE25, "X"), + (0x1EE27, "M", "ح"), + (0x1EE28, "X"), + (0x1EE29, "M", "ي"), + (0x1EE2A, "M", "ك"), + (0x1EE2B, "M", "ل"), + (0x1EE2C, "M", "م"), + (0x1EE2D, "M", "ن"), + (0x1EE2E, "M", "س"), + (0x1EE2F, "M", "ع"), + (0x1EE30, "M", "ف"), + (0x1EE31, "M", "ص"), + (0x1EE32, "M", "ق"), + (0x1EE33, "X"), + (0x1EE34, "M", "ش"), + (0x1EE35, "M", "ت"), + (0x1EE36, "M", "ث"), + (0x1EE37, "M", "خ"), + (0x1EE38, "X"), + (0x1EE39, "M", "ض"), + (0x1EE3A, "X"), + (0x1EE3B, "M", "غ"), + (0x1EE3C, "X"), + (0x1EE42, "M", "ج"), + (0x1EE43, "X"), + (0x1EE47, "M", "ح"), + (0x1EE48, "X"), + (0x1EE49, "M", "ي"), + (0x1EE4A, "X"), + (0x1EE4B, "M", "ل"), + (0x1EE4C, "X"), + (0x1EE4D, "M", "ن"), + (0x1EE4E, "M", "س"), ] + def _seg_73() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: return [ - (0x1EE4B, 'M', 'ل'), - (0x1EE4C, 'X'), - (0x1EE4D, 'M', 'ن'), - (0x1EE4E, 'M', 'س'), - (0x1EE4F, 'M', 'ع'), - (0x1EE50, 'X'), - (0x1EE51, 'M', 'ص'), - (0x1EE52, 'M', 'ق'), - (0x1EE53, 'X'), - (0x1EE54, 'M', 'ش'), - (0x1EE55, 'X'), - (0x1EE57, 'M', 'خ'), - (0x1EE58, 'X'), - (0x1EE59, 'M', 'ض'), - (0x1EE5A, 'X'), - (0x1EE5B, 'M', 'غ'), - (0x1EE5C, 'X'), - (0x1EE5D, 'M', 'ں'), - (0x1EE5E, 'X'), - (0x1EE5F, 'M', 'ٯ'), - (0x1EE60, 'X'), - (0x1EE61, 'M', 'ب'), - (0x1EE62, 'M', 'ج'), - (0x1EE63, 'X'), - (0x1EE64, 'M', 'ه'), - (0x1EE65, 'X'), - (0x1EE67, 'M', 'ح'), - (0x1EE68, 'M', 'ط'), - (0x1EE69, 'M', 'ي'), - (0x1EE6A, 'M', 'ك'), - (0x1EE6B, 'X'), - (0x1EE6C, 'M', 'م'), - (0x1EE6D, 'M', 'ن'), - (0x1EE6E, 'M', 'س'), - (0x1EE6F, 'M', 'ع'), - (0x1EE70, 'M', 'ف'), - (0x1EE71, 'M', 'ص'), - (0x1EE72, 'M', 'ق'), - (0x1EE73, 'X'), - (0x1EE74, 'M', 'ش'), - (0x1EE75, 'M', 'ت'), - (0x1EE76, 'M', 'ث'), - (0x1EE77, 'M', 'خ'), - (0x1EE78, 'X'), - (0x1EE79, 'M', 'ض'), - (0x1EE7A, 'M', 'ظ'), - (0x1EE7B, 'M', 'غ'), - (0x1EE7C, 'M', 'ٮ'), - (0x1EE7D, 'X'), - (0x1EE7E, 'M', 'ڡ'), - (0x1EE7F, 'X'), - (0x1EE80, 'M', 'ا'), - (0x1EE81, 'M', 'ب'), - (0x1EE82, 'M', 'ج'), - (0x1EE83, 'M', 'د'), - (0x1EE84, 'M', 'ه'), - (0x1EE85, 'M', 'و'), - (0x1EE86, 'M', 'ز'), - (0x1EE87, 'M', 'ح'), - (0x1EE88, 'M', 'ط'), - (0x1EE89, 'M', 'ي'), - (0x1EE8A, 'X'), - (0x1EE8B, 'M', 'ل'), - (0x1EE8C, 'M', 'م'), - (0x1EE8D, 'M', 'ن'), - (0x1EE8E, 'M', 'س'), - (0x1EE8F, 'M', 'ع'), - (0x1EE90, 'M', 'ف'), - (0x1EE91, 'M', 'ص'), - (0x1EE92, 'M', 'ق'), - (0x1EE93, 'M', 'ر'), - (0x1EE94, 'M', 'ش'), - (0x1EE95, 'M', 'ت'), - (0x1EE96, 'M', 'ث'), - (0x1EE97, 'M', 'خ'), - (0x1EE98, 'M', 'ذ'), - (0x1EE99, 'M', 'ض'), - (0x1EE9A, 'M', 'ظ'), - (0x1EE9B, 'M', 'غ'), - (0x1EE9C, 'X'), - (0x1EEA1, 'M', 'ب'), - (0x1EEA2, 'M', 'ج'), - (0x1EEA3, 'M', 'د'), - (0x1EEA4, 'X'), - (0x1EEA5, 'M', 'و'), - (0x1EEA6, 'M', 'ز'), - (0x1EEA7, 'M', 'ح'), - (0x1EEA8, 'M', 'ط'), - (0x1EEA9, 'M', 'ي'), - (0x1EEAA, 'X'), - (0x1EEAB, 'M', 'ل'), - (0x1EEAC, 'M', 'م'), - (0x1EEAD, 'M', 'ن'), - (0x1EEAE, 'M', 'س'), - (0x1EEAF, 'M', 'ع'), - (0x1EEB0, 'M', 'ف'), - (0x1EEB1, 'M', 'ص'), - (0x1EEB2, 'M', 'ق'), - (0x1EEB3, 'M', 'ر'), - (0x1EEB4, 'M', 'ش'), + (0x1EE4F, "M", "ع"), + (0x1EE50, "X"), + (0x1EE51, "M", "ص"), + (0x1EE52, "M", "ق"), + (0x1EE53, "X"), + (0x1EE54, "M", "ش"), + (0x1EE55, "X"), + (0x1EE57, "M", "خ"), + (0x1EE58, "X"), + (0x1EE59, "M", "ض"), + (0x1EE5A, "X"), + (0x1EE5B, "M", "غ"), + (0x1EE5C, "X"), + (0x1EE5D, "M", "ں"), + (0x1EE5E, "X"), + (0x1EE5F, "M", "ٯ"), + (0x1EE60, "X"), + (0x1EE61, "M", "ب"), + (0x1EE62, "M", "ج"), + (0x1EE63, "X"), + (0x1EE64, "M", "ه"), + (0x1EE65, "X"), + (0x1EE67, "M", "ح"), + (0x1EE68, "M", "ط"), + (0x1EE69, "M", "ي"), + (0x1EE6A, "M", "ك"), + (0x1EE6B, "X"), + (0x1EE6C, "M", "م"), + (0x1EE6D, "M", "ن"), + (0x1EE6E, "M", "س"), + (0x1EE6F, "M", "ع"), + (0x1EE70, "M", "ف"), + (0x1EE71, "M", "ص"), + (0x1EE72, "M", "ق"), + (0x1EE73, "X"), + (0x1EE74, "M", "ش"), + (0x1EE75, "M", "ت"), + (0x1EE76, "M", "ث"), + (0x1EE77, "M", "خ"), + (0x1EE78, "X"), + (0x1EE79, "M", "ض"), + (0x1EE7A, "M", "ظ"), + (0x1EE7B, "M", "غ"), + (0x1EE7C, "M", "ٮ"), + (0x1EE7D, "X"), + (0x1EE7E, "M", "ڡ"), + (0x1EE7F, "X"), + (0x1EE80, "M", "ا"), + (0x1EE81, "M", "ب"), + (0x1EE82, "M", "ج"), + (0x1EE83, "M", "د"), + (0x1EE84, "M", "ه"), + (0x1EE85, "M", "و"), + (0x1EE86, "M", "ز"), + (0x1EE87, "M", "ح"), + (0x1EE88, "M", "ط"), + (0x1EE89, "M", "ي"), + (0x1EE8A, "X"), + (0x1EE8B, "M", "ل"), + (0x1EE8C, "M", "م"), + (0x1EE8D, "M", "ن"), + (0x1EE8E, "M", "س"), + (0x1EE8F, "M", "ع"), + (0x1EE90, "M", "ف"), + (0x1EE91, "M", "ص"), + (0x1EE92, "M", "ق"), + (0x1EE93, "M", "ر"), + (0x1EE94, "M", "ش"), + (0x1EE95, "M", "ت"), + (0x1EE96, "M", "ث"), + (0x1EE97, "M", "خ"), + (0x1EE98, "M", "ذ"), + (0x1EE99, "M", "ض"), + (0x1EE9A, "M", "ظ"), + (0x1EE9B, "M", "غ"), + (0x1EE9C, "X"), + (0x1EEA1, "M", "ب"), + (0x1EEA2, "M", "ج"), + (0x1EEA3, "M", "د"), + (0x1EEA4, "X"), + (0x1EEA5, "M", "و"), + (0x1EEA6, "M", "ز"), + (0x1EEA7, "M", "ح"), + (0x1EEA8, "M", "ط"), + (0x1EEA9, "M", "ي"), + (0x1EEAA, "X"), + (0x1EEAB, "M", "ل"), + (0x1EEAC, "M", "م"), + (0x1EEAD, "M", "ن"), + (0x1EEAE, "M", "س"), + (0x1EEAF, "M", "ع"), + (0x1EEB0, "M", "ف"), + (0x1EEB1, "M", "ص"), + (0x1EEB2, "M", "ق"), + (0x1EEB3, "M", "ر"), + (0x1EEB4, "M", "ش"), + (0x1EEB5, "M", "ت"), + (0x1EEB6, "M", "ث"), + (0x1EEB7, "M", "خ"), + (0x1EEB8, "M", "ذ"), ] + def _seg_74() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: return [ - (0x1EEB5, 'M', 'ت'), - (0x1EEB6, 'M', 'ث'), - (0x1EEB7, 'M', 'خ'), - (0x1EEB8, 'M', 'ذ'), - (0x1EEB9, 'M', 'ض'), - (0x1EEBA, 'M', 'ظ'), - (0x1EEBB, 'M', 'غ'), - (0x1EEBC, 'X'), - (0x1EEF0, 'V'), - (0x1EEF2, 'X'), - (0x1F000, 'V'), - (0x1F02C, 'X'), - (0x1F030, 'V'), - (0x1F094, 'X'), - (0x1F0A0, 'V'), - (0x1F0AF, 'X'), - (0x1F0B1, 'V'), - (0x1F0C0, 'X'), - (0x1F0C1, 'V'), - (0x1F0D0, 'X'), - (0x1F0D1, 'V'), - (0x1F0F6, 'X'), - (0x1F101, '3', '0,'), - (0x1F102, '3', '1,'), - (0x1F103, '3', '2,'), - (0x1F104, '3', '3,'), - (0x1F105, '3', '4,'), - (0x1F106, '3', '5,'), - (0x1F107, '3', '6,'), - (0x1F108, '3', '7,'), - (0x1F109, '3', '8,'), - (0x1F10A, '3', '9,'), - (0x1F10B, 'V'), - (0x1F110, '3', '(a)'), - (0x1F111, '3', '(b)'), - (0x1F112, '3', '(c)'), - (0x1F113, '3', '(d)'), - (0x1F114, '3', '(e)'), - (0x1F115, '3', '(f)'), - (0x1F116, '3', '(g)'), - (0x1F117, '3', '(h)'), - (0x1F118, '3', '(i)'), - (0x1F119, '3', '(j)'), - (0x1F11A, '3', '(k)'), - (0x1F11B, '3', '(l)'), - (0x1F11C, '3', '(m)'), - (0x1F11D, '3', '(n)'), - (0x1F11E, '3', '(o)'), - (0x1F11F, '3', '(p)'), - (0x1F120, '3', '(q)'), - (0x1F121, '3', '(r)'), - (0x1F122, '3', '(s)'), - (0x1F123, '3', '(t)'), - (0x1F124, '3', '(u)'), - (0x1F125, '3', '(v)'), - (0x1F126, '3', '(w)'), - (0x1F127, '3', '(x)'), - (0x1F128, '3', '(y)'), - (0x1F129, '3', '(z)'), - (0x1F12A, 'M', '〔s〕'), - (0x1F12B, 'M', 'c'), - (0x1F12C, 'M', 'r'), - (0x1F12D, 'M', 'cd'), - (0x1F12E, 'M', 'wz'), - (0x1F12F, 'V'), - (0x1F130, 'M', 'a'), - (0x1F131, 'M', 'b'), - (0x1F132, 'M', 'c'), - (0x1F133, 'M', 'd'), - (0x1F134, 'M', 'e'), - (0x1F135, 'M', 'f'), - (0x1F136, 'M', 'g'), - (0x1F137, 'M', 'h'), - (0x1F138, 'M', 'i'), - (0x1F139, 'M', 'j'), - (0x1F13A, 'M', 'k'), - (0x1F13B, 'M', 'l'), - (0x1F13C, 'M', 'm'), - (0x1F13D, 'M', 'n'), - (0x1F13E, 'M', 'o'), - (0x1F13F, 'M', 'p'), - (0x1F140, 'M', 'q'), - (0x1F141, 'M', 'r'), - (0x1F142, 'M', 's'), - (0x1F143, 'M', 't'), - (0x1F144, 'M', 'u'), - (0x1F145, 'M', 'v'), - (0x1F146, 'M', 'w'), - (0x1F147, 'M', 'x'), - (0x1F148, 'M', 'y'), - (0x1F149, 'M', 'z'), - (0x1F14A, 'M', 'hv'), - (0x1F14B, 'M', 'mv'), - (0x1F14C, 'M', 'sd'), - (0x1F14D, 'M', 'ss'), - (0x1F14E, 'M', 'ppv'), - (0x1F14F, 'M', 'wc'), - (0x1F150, 'V'), - (0x1F16A, 'M', 'mc'), - (0x1F16B, 'M', 'md'), + (0x1EEB9, "M", "ض"), + (0x1EEBA, "M", "ظ"), + (0x1EEBB, "M", "غ"), + (0x1EEBC, "X"), + (0x1EEF0, "V"), + (0x1EEF2, "X"), + (0x1F000, "V"), + (0x1F02C, "X"), + (0x1F030, "V"), + (0x1F094, "X"), + (0x1F0A0, "V"), + (0x1F0AF, "X"), + (0x1F0B1, "V"), + (0x1F0C0, "X"), + (0x1F0C1, "V"), + (0x1F0D0, "X"), + (0x1F0D1, "V"), + (0x1F0F6, "X"), + (0x1F101, "3", "0,"), + (0x1F102, "3", "1,"), + (0x1F103, "3", "2,"), + (0x1F104, "3", "3,"), + (0x1F105, "3", "4,"), + (0x1F106, "3", "5,"), + (0x1F107, "3", "6,"), + (0x1F108, "3", "7,"), + (0x1F109, "3", "8,"), + (0x1F10A, "3", "9,"), + (0x1F10B, "V"), + (0x1F110, "3", "(a)"), + (0x1F111, "3", "(b)"), + (0x1F112, "3", "(c)"), + (0x1F113, "3", "(d)"), + (0x1F114, "3", "(e)"), + (0x1F115, "3", "(f)"), + (0x1F116, "3", "(g)"), + (0x1F117, "3", "(h)"), + (0x1F118, "3", "(i)"), + (0x1F119, "3", "(j)"), + (0x1F11A, "3", "(k)"), + (0x1F11B, "3", "(l)"), + (0x1F11C, "3", "(m)"), + (0x1F11D, "3", "(n)"), + (0x1F11E, "3", "(o)"), + (0x1F11F, "3", "(p)"), + (0x1F120, "3", "(q)"), + (0x1F121, "3", "(r)"), + (0x1F122, "3", "(s)"), + (0x1F123, "3", "(t)"), + (0x1F124, "3", "(u)"), + (0x1F125, "3", "(v)"), + (0x1F126, "3", "(w)"), + (0x1F127, "3", "(x)"), + (0x1F128, "3", "(y)"), + (0x1F129, "3", "(z)"), + (0x1F12A, "M", "〔s〕"), + (0x1F12B, "M", "c"), + (0x1F12C, "M", "r"), + (0x1F12D, "M", "cd"), + (0x1F12E, "M", "wz"), + (0x1F12F, "V"), + (0x1F130, "M", "a"), + (0x1F131, "M", "b"), + (0x1F132, "M", "c"), + (0x1F133, "M", "d"), + (0x1F134, "M", "e"), + (0x1F135, "M", "f"), + (0x1F136, "M", "g"), + (0x1F137, "M", "h"), + (0x1F138, "M", "i"), + (0x1F139, "M", "j"), + (0x1F13A, "M", "k"), + (0x1F13B, "M", "l"), + (0x1F13C, "M", "m"), + (0x1F13D, "M", "n"), + (0x1F13E, "M", "o"), + (0x1F13F, "M", "p"), + (0x1F140, "M", "q"), + (0x1F141, "M", "r"), + (0x1F142, "M", "s"), + (0x1F143, "M", "t"), + (0x1F144, "M", "u"), + (0x1F145, "M", "v"), + (0x1F146, "M", "w"), + (0x1F147, "M", "x"), + (0x1F148, "M", "y"), + (0x1F149, "M", "z"), + (0x1F14A, "M", "hv"), + (0x1F14B, "M", "mv"), + (0x1F14C, "M", "sd"), + (0x1F14D, "M", "ss"), + (0x1F14E, "M", "ppv"), + (0x1F14F, "M", "wc"), + (0x1F150, "V"), + (0x1F16A, "M", "mc"), + (0x1F16B, "M", "md"), + (0x1F16C, "M", "mr"), + (0x1F16D, "V"), + (0x1F190, "M", "dj"), + (0x1F191, "V"), ] + def _seg_75() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: return [ - (0x1F16C, 'M', 'mr'), - (0x1F16D, 'V'), - (0x1F190, 'M', 'dj'), - (0x1F191, 'V'), - (0x1F1AE, 'X'), - (0x1F1E6, 'V'), - (0x1F200, 'M', 'ほか'), - (0x1F201, 'M', 'ココ'), - (0x1F202, 'M', 'サ'), - (0x1F203, 'X'), - (0x1F210, 'M', '手'), - (0x1F211, 'M', '字'), - (0x1F212, 'M', '双'), - (0x1F213, 'M', 'デ'), - (0x1F214, 'M', '二'), - (0x1F215, 'M', '多'), - (0x1F216, 'M', '解'), - (0x1F217, 'M', '天'), - (0x1F218, 'M', '交'), - (0x1F219, 'M', '映'), - (0x1F21A, 'M', '無'), - (0x1F21B, 'M', '料'), - (0x1F21C, 'M', '前'), - (0x1F21D, 'M', '後'), - (0x1F21E, 'M', '再'), - (0x1F21F, 'M', '新'), - (0x1F220, 'M', '初'), - (0x1F221, 'M', '終'), - (0x1F222, 'M', '生'), - (0x1F223, 'M', '販'), - (0x1F224, 'M', '声'), - (0x1F225, 'M', '吹'), - (0x1F226, 'M', '演'), - (0x1F227, 'M', '投'), - (0x1F228, 'M', '捕'), - (0x1F229, 'M', '一'), - (0x1F22A, 'M', '三'), - (0x1F22B, 'M', '遊'), - (0x1F22C, 'M', '左'), - (0x1F22D, 'M', '中'), - (0x1F22E, 'M', '右'), - (0x1F22F, 'M', '指'), - (0x1F230, 'M', '走'), - (0x1F231, 'M', '打'), - (0x1F232, 'M', '禁'), - (0x1F233, 'M', '空'), - (0x1F234, 'M', '合'), - (0x1F235, 'M', '満'), - (0x1F236, 'M', '有'), - (0x1F237, 'M', '月'), - (0x1F238, 'M', '申'), - (0x1F239, 'M', '割'), - (0x1F23A, 'M', '営'), - (0x1F23B, 'M', '配'), - (0x1F23C, 'X'), - (0x1F240, 'M', '〔本〕'), - (0x1F241, 'M', '〔三〕'), - (0x1F242, 'M', '〔二〕'), - (0x1F243, 'M', '〔安〕'), - (0x1F244, 'M', '〔点〕'), - (0x1F245, 'M', '〔打〕'), - (0x1F246, 'M', '〔盗〕'), - (0x1F247, 'M', '〔勝〕'), - (0x1F248, 'M', '〔敗〕'), - (0x1F249, 'X'), - (0x1F250, 'M', '得'), - (0x1F251, 'M', '可'), - (0x1F252, 'X'), - (0x1F260, 'V'), - (0x1F266, 'X'), - (0x1F300, 'V'), - (0x1F6D8, 'X'), - (0x1F6DC, 'V'), - (0x1F6ED, 'X'), - (0x1F6F0, 'V'), - (0x1F6FD, 'X'), - (0x1F700, 'V'), - (0x1F777, 'X'), - (0x1F77B, 'V'), - (0x1F7DA, 'X'), - (0x1F7E0, 'V'), - (0x1F7EC, 'X'), - (0x1F7F0, 'V'), - (0x1F7F1, 'X'), - (0x1F800, 'V'), - (0x1F80C, 'X'), - (0x1F810, 'V'), - (0x1F848, 'X'), - (0x1F850, 'V'), - (0x1F85A, 'X'), - (0x1F860, 'V'), - (0x1F888, 'X'), - (0x1F890, 'V'), - (0x1F8AE, 'X'), - (0x1F8B0, 'V'), - (0x1F8B2, 'X'), - (0x1F900, 'V'), - (0x1FA54, 'X'), - (0x1FA60, 'V'), - (0x1FA6E, 'X'), + (0x1F1AE, "X"), + (0x1F1E6, "V"), + (0x1F200, "M", "ほか"), + (0x1F201, "M", "ココ"), + (0x1F202, "M", "サ"), + (0x1F203, "X"), + (0x1F210, "M", "手"), + (0x1F211, "M", "字"), + (0x1F212, "M", "双"), + (0x1F213, "M", "デ"), + (0x1F214, "M", "二"), + (0x1F215, "M", "多"), + (0x1F216, "M", "解"), + (0x1F217, "M", "天"), + (0x1F218, "M", "交"), + (0x1F219, "M", "映"), + (0x1F21A, "M", "無"), + (0x1F21B, "M", "料"), + (0x1F21C, "M", "前"), + (0x1F21D, "M", "後"), + (0x1F21E, "M", "再"), + (0x1F21F, "M", "新"), + (0x1F220, "M", "初"), + (0x1F221, "M", "終"), + (0x1F222, "M", "生"), + (0x1F223, "M", "販"), + (0x1F224, "M", "声"), + (0x1F225, "M", "吹"), + (0x1F226, "M", "演"), + (0x1F227, "M", "投"), + (0x1F228, "M", "捕"), + (0x1F229, "M", "一"), + (0x1F22A, "M", "三"), + (0x1F22B, "M", "遊"), + (0x1F22C, "M", "左"), + (0x1F22D, "M", "中"), + (0x1F22E, "M", "右"), + (0x1F22F, "M", "指"), + (0x1F230, "M", "走"), + (0x1F231, "M", "打"), + (0x1F232, "M", "禁"), + (0x1F233, "M", "空"), + (0x1F234, "M", "合"), + (0x1F235, "M", "満"), + (0x1F236, "M", "有"), + (0x1F237, "M", "月"), + (0x1F238, "M", "申"), + (0x1F239, "M", "割"), + (0x1F23A, "M", "営"), + (0x1F23B, "M", "配"), + (0x1F23C, "X"), + (0x1F240, "M", "〔本〕"), + (0x1F241, "M", "〔三〕"), + (0x1F242, "M", "〔二〕"), + (0x1F243, "M", "〔安〕"), + (0x1F244, "M", "〔点〕"), + (0x1F245, "M", "〔打〕"), + (0x1F246, "M", "〔盗〕"), + (0x1F247, "M", "〔勝〕"), + (0x1F248, "M", "〔敗〕"), + (0x1F249, "X"), + (0x1F250, "M", "得"), + (0x1F251, "M", "可"), + (0x1F252, "X"), + (0x1F260, "V"), + (0x1F266, "X"), + (0x1F300, "V"), + (0x1F6D8, "X"), + (0x1F6DC, "V"), + (0x1F6ED, "X"), + (0x1F6F0, "V"), + (0x1F6FD, "X"), + (0x1F700, "V"), + (0x1F777, "X"), + (0x1F77B, "V"), + (0x1F7DA, "X"), + (0x1F7E0, "V"), + (0x1F7EC, "X"), + (0x1F7F0, "V"), + (0x1F7F1, "X"), + (0x1F800, "V"), + (0x1F80C, "X"), + (0x1F810, "V"), + (0x1F848, "X"), + (0x1F850, "V"), + (0x1F85A, "X"), + (0x1F860, "V"), + (0x1F888, "X"), + (0x1F890, "V"), + (0x1F8AE, "X"), + (0x1F8B0, "V"), + (0x1F8B2, "X"), + (0x1F900, "V"), + (0x1FA54, "X"), + (0x1FA60, "V"), + (0x1FA6E, "X"), + (0x1FA70, "V"), + (0x1FA7D, "X"), + (0x1FA80, "V"), + (0x1FA89, "X"), ] + def _seg_76() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: return [ - (0x1FA70, 'V'), - (0x1FA7D, 'X'), - (0x1FA80, 'V'), - (0x1FA89, 'X'), - (0x1FA90, 'V'), - (0x1FABE, 'X'), - (0x1FABF, 'V'), - (0x1FAC6, 'X'), - (0x1FACE, 'V'), - (0x1FADC, 'X'), - (0x1FAE0, 'V'), - (0x1FAE9, 'X'), - (0x1FAF0, 'V'), - (0x1FAF9, 'X'), - (0x1FB00, 'V'), - (0x1FB93, 'X'), - (0x1FB94, 'V'), - (0x1FBCB, 'X'), - (0x1FBF0, 'M', '0'), - (0x1FBF1, 'M', '1'), - (0x1FBF2, 'M', '2'), - (0x1FBF3, 'M', '3'), - (0x1FBF4, 'M', '4'), - (0x1FBF5, 'M', '5'), - (0x1FBF6, 'M', '6'), - (0x1FBF7, 'M', '7'), - (0x1FBF8, 'M', '8'), - (0x1FBF9, 'M', '9'), - (0x1FBFA, 'X'), - (0x20000, 'V'), - (0x2A6E0, 'X'), - (0x2A700, 'V'), - (0x2B73A, 'X'), - (0x2B740, 'V'), - (0x2B81E, 'X'), - (0x2B820, 'V'), - (0x2CEA2, 'X'), - (0x2CEB0, 'V'), - (0x2EBE1, 'X'), - (0x2F800, 'M', '丽'), - (0x2F801, 'M', '丸'), - (0x2F802, 'M', '乁'), - (0x2F803, 'M', '𠄢'), - (0x2F804, 'M', '你'), - (0x2F805, 'M', '侮'), - (0x2F806, 'M', '侻'), - (0x2F807, 'M', '倂'), - (0x2F808, 'M', '偺'), - (0x2F809, 'M', '備'), - (0x2F80A, 'M', '僧'), - (0x2F80B, 'M', '像'), - (0x2F80C, 'M', '㒞'), - (0x2F80D, 'M', '𠘺'), - (0x2F80E, 'M', '免'), - (0x2F80F, 'M', '兔'), - (0x2F810, 'M', '兤'), - (0x2F811, 'M', '具'), - (0x2F812, 'M', '𠔜'), - (0x2F813, 'M', '㒹'), - (0x2F814, 'M', '內'), - (0x2F815, 'M', '再'), - (0x2F816, 'M', '𠕋'), - (0x2F817, 'M', '冗'), - (0x2F818, 'M', '冤'), - (0x2F819, 'M', '仌'), - (0x2F81A, 'M', '冬'), - (0x2F81B, 'M', '况'), - (0x2F81C, 'M', '𩇟'), - (0x2F81D, 'M', '凵'), - (0x2F81E, 'M', '刃'), - (0x2F81F, 'M', '㓟'), - (0x2F820, 'M', '刻'), - (0x2F821, 'M', '剆'), - (0x2F822, 'M', '割'), - (0x2F823, 'M', '剷'), - (0x2F824, 'M', '㔕'), - (0x2F825, 'M', '勇'), - (0x2F826, 'M', '勉'), - (0x2F827, 'M', '勤'), - (0x2F828, 'M', '勺'), - (0x2F829, 'M', '包'), - (0x2F82A, 'M', '匆'), - (0x2F82B, 'M', '北'), - (0x2F82C, 'M', '卉'), - (0x2F82D, 'M', '卑'), - (0x2F82E, 'M', '博'), - (0x2F82F, 'M', '即'), - (0x2F830, 'M', '卽'), - (0x2F831, 'M', '卿'), - (0x2F834, 'M', '𠨬'), - (0x2F835, 'M', '灰'), - (0x2F836, 'M', '及'), - (0x2F837, 'M', '叟'), - (0x2F838, 'M', '𠭣'), - (0x2F839, 'M', '叫'), - (0x2F83A, 'M', '叱'), - (0x2F83B, 'M', '吆'), - (0x2F83C, 'M', '咞'), - (0x2F83D, 'M', '吸'), - (0x2F83E, 'M', '呈'), + (0x1FA90, "V"), + (0x1FABE, "X"), + (0x1FABF, "V"), + (0x1FAC6, "X"), + (0x1FACE, "V"), + (0x1FADC, "X"), + (0x1FAE0, "V"), + (0x1FAE9, "X"), + (0x1FAF0, "V"), + (0x1FAF9, "X"), + (0x1FB00, "V"), + (0x1FB93, "X"), + (0x1FB94, "V"), + (0x1FBCB, "X"), + (0x1FBF0, "M", "0"), + (0x1FBF1, "M", "1"), + (0x1FBF2, "M", "2"), + (0x1FBF3, "M", "3"), + (0x1FBF4, "M", "4"), + (0x1FBF5, "M", "5"), + (0x1FBF6, "M", "6"), + (0x1FBF7, "M", "7"), + (0x1FBF8, "M", "8"), + (0x1FBF9, "M", "9"), + (0x1FBFA, "X"), + (0x20000, "V"), + (0x2A6E0, "X"), + (0x2A700, "V"), + (0x2B73A, "X"), + (0x2B740, "V"), + (0x2B81E, "X"), + (0x2B820, "V"), + (0x2CEA2, "X"), + (0x2CEB0, "V"), + (0x2EBE1, "X"), + (0x2EBF0, "V"), + (0x2EE5E, "X"), + (0x2F800, "M", "丽"), + (0x2F801, "M", "丸"), + (0x2F802, "M", "乁"), + (0x2F803, "M", "𠄢"), + (0x2F804, "M", "你"), + (0x2F805, "M", "侮"), + (0x2F806, "M", "侻"), + (0x2F807, "M", "倂"), + (0x2F808, "M", "偺"), + (0x2F809, "M", "備"), + (0x2F80A, "M", "僧"), + (0x2F80B, "M", "像"), + (0x2F80C, "M", "㒞"), + (0x2F80D, "M", "𠘺"), + (0x2F80E, "M", "免"), + (0x2F80F, "M", "兔"), + (0x2F810, "M", "兤"), + (0x2F811, "M", "具"), + (0x2F812, "M", "𠔜"), + (0x2F813, "M", "㒹"), + (0x2F814, "M", "內"), + (0x2F815, "M", "再"), + (0x2F816, "M", "𠕋"), + (0x2F817, "M", "冗"), + (0x2F818, "M", "冤"), + (0x2F819, "M", "仌"), + (0x2F81A, "M", "冬"), + (0x2F81B, "M", "况"), + (0x2F81C, "M", "𩇟"), + (0x2F81D, "M", "凵"), + (0x2F81E, "M", "刃"), + (0x2F81F, "M", "㓟"), + (0x2F820, "M", "刻"), + (0x2F821, "M", "剆"), + (0x2F822, "M", "割"), + (0x2F823, "M", "剷"), + (0x2F824, "M", "㔕"), + (0x2F825, "M", "勇"), + (0x2F826, "M", "勉"), + (0x2F827, "M", "勤"), + (0x2F828, "M", "勺"), + (0x2F829, "M", "包"), + (0x2F82A, "M", "匆"), + (0x2F82B, "M", "北"), + (0x2F82C, "M", "卉"), + (0x2F82D, "M", "卑"), + (0x2F82E, "M", "博"), + (0x2F82F, "M", "即"), + (0x2F830, "M", "卽"), + (0x2F831, "M", "卿"), + (0x2F834, "M", "𠨬"), + (0x2F835, "M", "灰"), + (0x2F836, "M", "及"), + (0x2F837, "M", "叟"), + (0x2F838, "M", "𠭣"), + (0x2F839, "M", "叫"), + (0x2F83A, "M", "叱"), + (0x2F83B, "M", "吆"), + (0x2F83C, "M", "咞"), + (0x2F83D, "M", "吸"), + (0x2F83E, "M", "呈"), + (0x2F83F, "M", "周"), + (0x2F840, "M", "咢"), ] + def _seg_77() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: return [ - (0x2F83F, 'M', '周'), - (0x2F840, 'M', '咢'), - (0x2F841, 'M', '哶'), - (0x2F842, 'M', '唐'), - (0x2F843, 'M', '啓'), - (0x2F844, 'M', '啣'), - (0x2F845, 'M', '善'), - (0x2F847, 'M', '喙'), - (0x2F848, 'M', '喫'), - (0x2F849, 'M', '喳'), - (0x2F84A, 'M', '嗂'), - (0x2F84B, 'M', '圖'), - (0x2F84C, 'M', '嘆'), - (0x2F84D, 'M', '圗'), - (0x2F84E, 'M', '噑'), - (0x2F84F, 'M', '噴'), - (0x2F850, 'M', '切'), - (0x2F851, 'M', '壮'), - (0x2F852, 'M', '城'), - (0x2F853, 'M', '埴'), - (0x2F854, 'M', '堍'), - (0x2F855, 'M', '型'), - (0x2F856, 'M', '堲'), - (0x2F857, 'M', '報'), - (0x2F858, 'M', '墬'), - (0x2F859, 'M', '𡓤'), - (0x2F85A, 'M', '売'), - (0x2F85B, 'M', '壷'), - (0x2F85C, 'M', '夆'), - (0x2F85D, 'M', '多'), - (0x2F85E, 'M', '夢'), - (0x2F85F, 'M', '奢'), - (0x2F860, 'M', '𡚨'), - (0x2F861, 'M', '𡛪'), - (0x2F862, 'M', '姬'), - (0x2F863, 'M', '娛'), - (0x2F864, 'M', '娧'), - (0x2F865, 'M', '姘'), - (0x2F866, 'M', '婦'), - (0x2F867, 'M', '㛮'), - (0x2F868, 'X'), - (0x2F869, 'M', '嬈'), - (0x2F86A, 'M', '嬾'), - (0x2F86C, 'M', '𡧈'), - (0x2F86D, 'M', '寃'), - (0x2F86E, 'M', '寘'), - (0x2F86F, 'M', '寧'), - (0x2F870, 'M', '寳'), - (0x2F871, 'M', '𡬘'), - (0x2F872, 'M', '寿'), - (0x2F873, 'M', '将'), - (0x2F874, 'X'), - (0x2F875, 'M', '尢'), - (0x2F876, 'M', '㞁'), - (0x2F877, 'M', '屠'), - (0x2F878, 'M', '屮'), - (0x2F879, 'M', '峀'), - (0x2F87A, 'M', '岍'), - (0x2F87B, 'M', '𡷤'), - (0x2F87C, 'M', '嵃'), - (0x2F87D, 'M', '𡷦'), - (0x2F87E, 'M', '嵮'), - (0x2F87F, 'M', '嵫'), - (0x2F880, 'M', '嵼'), - (0x2F881, 'M', '巡'), - (0x2F882, 'M', '巢'), - (0x2F883, 'M', '㠯'), - (0x2F884, 'M', '巽'), - (0x2F885, 'M', '帨'), - (0x2F886, 'M', '帽'), - (0x2F887, 'M', '幩'), - (0x2F888, 'M', '㡢'), - (0x2F889, 'M', '𢆃'), - (0x2F88A, 'M', '㡼'), - (0x2F88B, 'M', '庰'), - (0x2F88C, 'M', '庳'), - (0x2F88D, 'M', '庶'), - (0x2F88E, 'M', '廊'), - (0x2F88F, 'M', '𪎒'), - (0x2F890, 'M', '廾'), - (0x2F891, 'M', '𢌱'), - (0x2F893, 'M', '舁'), - (0x2F894, 'M', '弢'), - (0x2F896, 'M', '㣇'), - (0x2F897, 'M', '𣊸'), - (0x2F898, 'M', '𦇚'), - (0x2F899, 'M', '形'), - (0x2F89A, 'M', '彫'), - (0x2F89B, 'M', '㣣'), - (0x2F89C, 'M', '徚'), - (0x2F89D, 'M', '忍'), - (0x2F89E, 'M', '志'), - (0x2F89F, 'M', '忹'), - (0x2F8A0, 'M', '悁'), - (0x2F8A1, 'M', '㤺'), - (0x2F8A2, 'M', '㤜'), - (0x2F8A3, 'M', '悔'), - (0x2F8A4, 'M', '𢛔'), - (0x2F8A5, 'M', '惇'), - (0x2F8A6, 'M', '慈'), + (0x2F841, "M", "哶"), + (0x2F842, "M", "唐"), + (0x2F843, "M", "啓"), + (0x2F844, "M", "啣"), + (0x2F845, "M", "善"), + (0x2F847, "M", "喙"), + (0x2F848, "M", "喫"), + (0x2F849, "M", "喳"), + (0x2F84A, "M", "嗂"), + (0x2F84B, "M", "圖"), + (0x2F84C, "M", "嘆"), + (0x2F84D, "M", "圗"), + (0x2F84E, "M", "噑"), + (0x2F84F, "M", "噴"), + (0x2F850, "M", "切"), + (0x2F851, "M", "壮"), + (0x2F852, "M", "城"), + (0x2F853, "M", "埴"), + (0x2F854, "M", "堍"), + (0x2F855, "M", "型"), + (0x2F856, "M", "堲"), + (0x2F857, "M", "報"), + (0x2F858, "M", "墬"), + (0x2F859, "M", "𡓤"), + (0x2F85A, "M", "売"), + (0x2F85B, "M", "壷"), + (0x2F85C, "M", "夆"), + (0x2F85D, "M", "多"), + (0x2F85E, "M", "夢"), + (0x2F85F, "M", "奢"), + (0x2F860, "M", "𡚨"), + (0x2F861, "M", "𡛪"), + (0x2F862, "M", "姬"), + (0x2F863, "M", "娛"), + (0x2F864, "M", "娧"), + (0x2F865, "M", "姘"), + (0x2F866, "M", "婦"), + (0x2F867, "M", "㛮"), + (0x2F868, "X"), + (0x2F869, "M", "嬈"), + (0x2F86A, "M", "嬾"), + (0x2F86C, "M", "𡧈"), + (0x2F86D, "M", "寃"), + (0x2F86E, "M", "寘"), + (0x2F86F, "M", "寧"), + (0x2F870, "M", "寳"), + (0x2F871, "M", "𡬘"), + (0x2F872, "M", "寿"), + (0x2F873, "M", "将"), + (0x2F874, "X"), + (0x2F875, "M", "尢"), + (0x2F876, "M", "㞁"), + (0x2F877, "M", "屠"), + (0x2F878, "M", "屮"), + (0x2F879, "M", "峀"), + (0x2F87A, "M", "岍"), + (0x2F87B, "M", "𡷤"), + (0x2F87C, "M", "嵃"), + (0x2F87D, "M", "𡷦"), + (0x2F87E, "M", "嵮"), + (0x2F87F, "M", "嵫"), + (0x2F880, "M", "嵼"), + (0x2F881, "M", "巡"), + (0x2F882, "M", "巢"), + (0x2F883, "M", "㠯"), + (0x2F884, "M", "巽"), + (0x2F885, "M", "帨"), + (0x2F886, "M", "帽"), + (0x2F887, "M", "幩"), + (0x2F888, "M", "㡢"), + (0x2F889, "M", "𢆃"), + (0x2F88A, "M", "㡼"), + (0x2F88B, "M", "庰"), + (0x2F88C, "M", "庳"), + (0x2F88D, "M", "庶"), + (0x2F88E, "M", "廊"), + (0x2F88F, "M", "𪎒"), + (0x2F890, "M", "廾"), + (0x2F891, "M", "𢌱"), + (0x2F893, "M", "舁"), + (0x2F894, "M", "弢"), + (0x2F896, "M", "㣇"), + (0x2F897, "M", "𣊸"), + (0x2F898, "M", "𦇚"), + (0x2F899, "M", "形"), + (0x2F89A, "M", "彫"), + (0x2F89B, "M", "㣣"), + (0x2F89C, "M", "徚"), + (0x2F89D, "M", "忍"), + (0x2F89E, "M", "志"), + (0x2F89F, "M", "忹"), + (0x2F8A0, "M", "悁"), + (0x2F8A1, "M", "㤺"), + (0x2F8A2, "M", "㤜"), + (0x2F8A3, "M", "悔"), + (0x2F8A4, "M", "𢛔"), + (0x2F8A5, "M", "惇"), + (0x2F8A6, "M", "慈"), + (0x2F8A7, "M", "慌"), + (0x2F8A8, "M", "慎"), ] + def _seg_78() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: return [ - (0x2F8A7, 'M', '慌'), - (0x2F8A8, 'M', '慎'), - (0x2F8A9, 'M', '慌'), - (0x2F8AA, 'M', '慺'), - (0x2F8AB, 'M', '憎'), - (0x2F8AC, 'M', '憲'), - (0x2F8AD, 'M', '憤'), - (0x2F8AE, 'M', '憯'), - (0x2F8AF, 'M', '懞'), - (0x2F8B0, 'M', '懲'), - (0x2F8B1, 'M', '懶'), - (0x2F8B2, 'M', '成'), - (0x2F8B3, 'M', '戛'), - (0x2F8B4, 'M', '扝'), - (0x2F8B5, 'M', '抱'), - (0x2F8B6, 'M', '拔'), - (0x2F8B7, 'M', '捐'), - (0x2F8B8, 'M', '𢬌'), - (0x2F8B9, 'M', '挽'), - (0x2F8BA, 'M', '拼'), - (0x2F8BB, 'M', '捨'), - (0x2F8BC, 'M', '掃'), - (0x2F8BD, 'M', '揤'), - (0x2F8BE, 'M', '𢯱'), - (0x2F8BF, 'M', '搢'), - (0x2F8C0, 'M', '揅'), - (0x2F8C1, 'M', '掩'), - (0x2F8C2, 'M', '㨮'), - (0x2F8C3, 'M', '摩'), - (0x2F8C4, 'M', '摾'), - (0x2F8C5, 'M', '撝'), - (0x2F8C6, 'M', '摷'), - (0x2F8C7, 'M', '㩬'), - (0x2F8C8, 'M', '敏'), - (0x2F8C9, 'M', '敬'), - (0x2F8CA, 'M', '𣀊'), - (0x2F8CB, 'M', '旣'), - (0x2F8CC, 'M', '書'), - (0x2F8CD, 'M', '晉'), - (0x2F8CE, 'M', '㬙'), - (0x2F8CF, 'M', '暑'), - (0x2F8D0, 'M', '㬈'), - (0x2F8D1, 'M', '㫤'), - (0x2F8D2, 'M', '冒'), - (0x2F8D3, 'M', '冕'), - (0x2F8D4, 'M', '最'), - (0x2F8D5, 'M', '暜'), - (0x2F8D6, 'M', '肭'), - (0x2F8D7, 'M', '䏙'), - (0x2F8D8, 'M', '朗'), - (0x2F8D9, 'M', '望'), - (0x2F8DA, 'M', '朡'), - (0x2F8DB, 'M', '杞'), - (0x2F8DC, 'M', '杓'), - (0x2F8DD, 'M', '𣏃'), - (0x2F8DE, 'M', '㭉'), - (0x2F8DF, 'M', '柺'), - (0x2F8E0, 'M', '枅'), - (0x2F8E1, 'M', '桒'), - (0x2F8E2, 'M', '梅'), - (0x2F8E3, 'M', '𣑭'), - (0x2F8E4, 'M', '梎'), - (0x2F8E5, 'M', '栟'), - (0x2F8E6, 'M', '椔'), - (0x2F8E7, 'M', '㮝'), - (0x2F8E8, 'M', '楂'), - (0x2F8E9, 'M', '榣'), - (0x2F8EA, 'M', '槪'), - (0x2F8EB, 'M', '檨'), - (0x2F8EC, 'M', '𣚣'), - (0x2F8ED, 'M', '櫛'), - (0x2F8EE, 'M', '㰘'), - (0x2F8EF, 'M', '次'), - (0x2F8F0, 'M', '𣢧'), - (0x2F8F1, 'M', '歔'), - (0x2F8F2, 'M', '㱎'), - (0x2F8F3, 'M', '歲'), - (0x2F8F4, 'M', '殟'), - (0x2F8F5, 'M', '殺'), - (0x2F8F6, 'M', '殻'), - (0x2F8F7, 'M', '𣪍'), - (0x2F8F8, 'M', '𡴋'), - (0x2F8F9, 'M', '𣫺'), - (0x2F8FA, 'M', '汎'), - (0x2F8FB, 'M', '𣲼'), - (0x2F8FC, 'M', '沿'), - (0x2F8FD, 'M', '泍'), - (0x2F8FE, 'M', '汧'), - (0x2F8FF, 'M', '洖'), - (0x2F900, 'M', '派'), - (0x2F901, 'M', '海'), - (0x2F902, 'M', '流'), - (0x2F903, 'M', '浩'), - (0x2F904, 'M', '浸'), - (0x2F905, 'M', '涅'), - (0x2F906, 'M', '𣴞'), - (0x2F907, 'M', '洴'), - (0x2F908, 'M', '港'), - (0x2F909, 'M', '湮'), - (0x2F90A, 'M', '㴳'), + (0x2F8A9, "M", "慌"), + (0x2F8AA, "M", "慺"), + (0x2F8AB, "M", "憎"), + (0x2F8AC, "M", "憲"), + (0x2F8AD, "M", "憤"), + (0x2F8AE, "M", "憯"), + (0x2F8AF, "M", "懞"), + (0x2F8B0, "M", "懲"), + (0x2F8B1, "M", "懶"), + (0x2F8B2, "M", "成"), + (0x2F8B3, "M", "戛"), + (0x2F8B4, "M", "扝"), + (0x2F8B5, "M", "抱"), + (0x2F8B6, "M", "拔"), + (0x2F8B7, "M", "捐"), + (0x2F8B8, "M", "𢬌"), + (0x2F8B9, "M", "挽"), + (0x2F8BA, "M", "拼"), + (0x2F8BB, "M", "捨"), + (0x2F8BC, "M", "掃"), + (0x2F8BD, "M", "揤"), + (0x2F8BE, "M", "𢯱"), + (0x2F8BF, "M", "搢"), + (0x2F8C0, "M", "揅"), + (0x2F8C1, "M", "掩"), + (0x2F8C2, "M", "㨮"), + (0x2F8C3, "M", "摩"), + (0x2F8C4, "M", "摾"), + (0x2F8C5, "M", "撝"), + (0x2F8C6, "M", "摷"), + (0x2F8C7, "M", "㩬"), + (0x2F8C8, "M", "敏"), + (0x2F8C9, "M", "敬"), + (0x2F8CA, "M", "𣀊"), + (0x2F8CB, "M", "旣"), + (0x2F8CC, "M", "書"), + (0x2F8CD, "M", "晉"), + (0x2F8CE, "M", "㬙"), + (0x2F8CF, "M", "暑"), + (0x2F8D0, "M", "㬈"), + (0x2F8D1, "M", "㫤"), + (0x2F8D2, "M", "冒"), + (0x2F8D3, "M", "冕"), + (0x2F8D4, "M", "最"), + (0x2F8D5, "M", "暜"), + (0x2F8D6, "M", "肭"), + (0x2F8D7, "M", "䏙"), + (0x2F8D8, "M", "朗"), + (0x2F8D9, "M", "望"), + (0x2F8DA, "M", "朡"), + (0x2F8DB, "M", "杞"), + (0x2F8DC, "M", "杓"), + (0x2F8DD, "M", "𣏃"), + (0x2F8DE, "M", "㭉"), + (0x2F8DF, "M", "柺"), + (0x2F8E0, "M", "枅"), + (0x2F8E1, "M", "桒"), + (0x2F8E2, "M", "梅"), + (0x2F8E3, "M", "𣑭"), + (0x2F8E4, "M", "梎"), + (0x2F8E5, "M", "栟"), + (0x2F8E6, "M", "椔"), + (0x2F8E7, "M", "㮝"), + (0x2F8E8, "M", "楂"), + (0x2F8E9, "M", "榣"), + (0x2F8EA, "M", "槪"), + (0x2F8EB, "M", "檨"), + (0x2F8EC, "M", "𣚣"), + (0x2F8ED, "M", "櫛"), + (0x2F8EE, "M", "㰘"), + (0x2F8EF, "M", "次"), + (0x2F8F0, "M", "𣢧"), + (0x2F8F1, "M", "歔"), + (0x2F8F2, "M", "㱎"), + (0x2F8F3, "M", "歲"), + (0x2F8F4, "M", "殟"), + (0x2F8F5, "M", "殺"), + (0x2F8F6, "M", "殻"), + (0x2F8F7, "M", "𣪍"), + (0x2F8F8, "M", "𡴋"), + (0x2F8F9, "M", "𣫺"), + (0x2F8FA, "M", "汎"), + (0x2F8FB, "M", "𣲼"), + (0x2F8FC, "M", "沿"), + (0x2F8FD, "M", "泍"), + (0x2F8FE, "M", "汧"), + (0x2F8FF, "M", "洖"), + (0x2F900, "M", "派"), + (0x2F901, "M", "海"), + (0x2F902, "M", "流"), + (0x2F903, "M", "浩"), + (0x2F904, "M", "浸"), + (0x2F905, "M", "涅"), + (0x2F906, "M", "𣴞"), + (0x2F907, "M", "洴"), + (0x2F908, "M", "港"), + (0x2F909, "M", "湮"), + (0x2F90A, "M", "㴳"), + (0x2F90B, "M", "滋"), + (0x2F90C, "M", "滇"), ] + def _seg_79() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: return [ - (0x2F90B, 'M', '滋'), - (0x2F90C, 'M', '滇'), - (0x2F90D, 'M', '𣻑'), - (0x2F90E, 'M', '淹'), - (0x2F90F, 'M', '潮'), - (0x2F910, 'M', '𣽞'), - (0x2F911, 'M', '𣾎'), - (0x2F912, 'M', '濆'), - (0x2F913, 'M', '瀹'), - (0x2F914, 'M', '瀞'), - (0x2F915, 'M', '瀛'), - (0x2F916, 'M', '㶖'), - (0x2F917, 'M', '灊'), - (0x2F918, 'M', '災'), - (0x2F919, 'M', '灷'), - (0x2F91A, 'M', '炭'), - (0x2F91B, 'M', '𠔥'), - (0x2F91C, 'M', '煅'), - (0x2F91D, 'M', '𤉣'), - (0x2F91E, 'M', '熜'), - (0x2F91F, 'X'), - (0x2F920, 'M', '爨'), - (0x2F921, 'M', '爵'), - (0x2F922, 'M', '牐'), - (0x2F923, 'M', '𤘈'), - (0x2F924, 'M', '犀'), - (0x2F925, 'M', '犕'), - (0x2F926, 'M', '𤜵'), - (0x2F927, 'M', '𤠔'), - (0x2F928, 'M', '獺'), - (0x2F929, 'M', '王'), - (0x2F92A, 'M', '㺬'), - (0x2F92B, 'M', '玥'), - (0x2F92C, 'M', '㺸'), - (0x2F92E, 'M', '瑇'), - (0x2F92F, 'M', '瑜'), - (0x2F930, 'M', '瑱'), - (0x2F931, 'M', '璅'), - (0x2F932, 'M', '瓊'), - (0x2F933, 'M', '㼛'), - (0x2F934, 'M', '甤'), - (0x2F935, 'M', '𤰶'), - (0x2F936, 'M', '甾'), - (0x2F937, 'M', '𤲒'), - (0x2F938, 'M', '異'), - (0x2F939, 'M', '𢆟'), - (0x2F93A, 'M', '瘐'), - (0x2F93B, 'M', '𤾡'), - (0x2F93C, 'M', '𤾸'), - (0x2F93D, 'M', '𥁄'), - (0x2F93E, 'M', '㿼'), - (0x2F93F, 'M', '䀈'), - (0x2F940, 'M', '直'), - (0x2F941, 'M', '𥃳'), - (0x2F942, 'M', '𥃲'), - (0x2F943, 'M', '𥄙'), - (0x2F944, 'M', '𥄳'), - (0x2F945, 'M', '眞'), - (0x2F946, 'M', '真'), - (0x2F948, 'M', '睊'), - (0x2F949, 'M', '䀹'), - (0x2F94A, 'M', '瞋'), - (0x2F94B, 'M', '䁆'), - (0x2F94C, 'M', '䂖'), - (0x2F94D, 'M', '𥐝'), - (0x2F94E, 'M', '硎'), - (0x2F94F, 'M', '碌'), - (0x2F950, 'M', '磌'), - (0x2F951, 'M', '䃣'), - (0x2F952, 'M', '𥘦'), - (0x2F953, 'M', '祖'), - (0x2F954, 'M', '𥚚'), - (0x2F955, 'M', '𥛅'), - (0x2F956, 'M', '福'), - (0x2F957, 'M', '秫'), - (0x2F958, 'M', '䄯'), - (0x2F959, 'M', '穀'), - (0x2F95A, 'M', '穊'), - (0x2F95B, 'M', '穏'), - (0x2F95C, 'M', '𥥼'), - (0x2F95D, 'M', '𥪧'), - (0x2F95F, 'X'), - (0x2F960, 'M', '䈂'), - (0x2F961, 'M', '𥮫'), - (0x2F962, 'M', '篆'), - (0x2F963, 'M', '築'), - (0x2F964, 'M', '䈧'), - (0x2F965, 'M', '𥲀'), - (0x2F966, 'M', '糒'), - (0x2F967, 'M', '䊠'), - (0x2F968, 'M', '糨'), - (0x2F969, 'M', '糣'), - (0x2F96A, 'M', '紀'), - (0x2F96B, 'M', '𥾆'), - (0x2F96C, 'M', '絣'), - (0x2F96D, 'M', '䌁'), - (0x2F96E, 'M', '緇'), - (0x2F96F, 'M', '縂'), - (0x2F970, 'M', '繅'), - (0x2F971, 'M', '䌴'), + (0x2F90D, "M", "𣻑"), + (0x2F90E, "M", "淹"), + (0x2F90F, "M", "潮"), + (0x2F910, "M", "𣽞"), + (0x2F911, "M", "𣾎"), + (0x2F912, "M", "濆"), + (0x2F913, "M", "瀹"), + (0x2F914, "M", "瀞"), + (0x2F915, "M", "瀛"), + (0x2F916, "M", "㶖"), + (0x2F917, "M", "灊"), + (0x2F918, "M", "災"), + (0x2F919, "M", "灷"), + (0x2F91A, "M", "炭"), + (0x2F91B, "M", "𠔥"), + (0x2F91C, "M", "煅"), + (0x2F91D, "M", "𤉣"), + (0x2F91E, "M", "熜"), + (0x2F91F, "X"), + (0x2F920, "M", "爨"), + (0x2F921, "M", "爵"), + (0x2F922, "M", "牐"), + (0x2F923, "M", "𤘈"), + (0x2F924, "M", "犀"), + (0x2F925, "M", "犕"), + (0x2F926, "M", "𤜵"), + (0x2F927, "M", "𤠔"), + (0x2F928, "M", "獺"), + (0x2F929, "M", "王"), + (0x2F92A, "M", "㺬"), + (0x2F92B, "M", "玥"), + (0x2F92C, "M", "㺸"), + (0x2F92E, "M", "瑇"), + (0x2F92F, "M", "瑜"), + (0x2F930, "M", "瑱"), + (0x2F931, "M", "璅"), + (0x2F932, "M", "瓊"), + (0x2F933, "M", "㼛"), + (0x2F934, "M", "甤"), + (0x2F935, "M", "𤰶"), + (0x2F936, "M", "甾"), + (0x2F937, "M", "𤲒"), + (0x2F938, "M", "異"), + (0x2F939, "M", "𢆟"), + (0x2F93A, "M", "瘐"), + (0x2F93B, "M", "𤾡"), + (0x2F93C, "M", "𤾸"), + (0x2F93D, "M", "𥁄"), + (0x2F93E, "M", "㿼"), + (0x2F93F, "M", "䀈"), + (0x2F940, "M", "直"), + (0x2F941, "M", "𥃳"), + (0x2F942, "M", "𥃲"), + (0x2F943, "M", "𥄙"), + (0x2F944, "M", "𥄳"), + (0x2F945, "M", "眞"), + (0x2F946, "M", "真"), + (0x2F948, "M", "睊"), + (0x2F949, "M", "䀹"), + (0x2F94A, "M", "瞋"), + (0x2F94B, "M", "䁆"), + (0x2F94C, "M", "䂖"), + (0x2F94D, "M", "𥐝"), + (0x2F94E, "M", "硎"), + (0x2F94F, "M", "碌"), + (0x2F950, "M", "磌"), + (0x2F951, "M", "䃣"), + (0x2F952, "M", "𥘦"), + (0x2F953, "M", "祖"), + (0x2F954, "M", "𥚚"), + (0x2F955, "M", "𥛅"), + (0x2F956, "M", "福"), + (0x2F957, "M", "秫"), + (0x2F958, "M", "䄯"), + (0x2F959, "M", "穀"), + (0x2F95A, "M", "穊"), + (0x2F95B, "M", "穏"), + (0x2F95C, "M", "𥥼"), + (0x2F95D, "M", "𥪧"), + (0x2F95F, "X"), + (0x2F960, "M", "䈂"), + (0x2F961, "M", "𥮫"), + (0x2F962, "M", "篆"), + (0x2F963, "M", "築"), + (0x2F964, "M", "䈧"), + (0x2F965, "M", "𥲀"), + (0x2F966, "M", "糒"), + (0x2F967, "M", "䊠"), + (0x2F968, "M", "糨"), + (0x2F969, "M", "糣"), + (0x2F96A, "M", "紀"), + (0x2F96B, "M", "𥾆"), + (0x2F96C, "M", "絣"), + (0x2F96D, "M", "䌁"), + (0x2F96E, "M", "緇"), + (0x2F96F, "M", "縂"), + (0x2F970, "M", "繅"), + (0x2F971, "M", "䌴"), + (0x2F972, "M", "𦈨"), + (0x2F973, "M", "𦉇"), ] + def _seg_80() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: return [ - (0x2F972, 'M', '𦈨'), - (0x2F973, 'M', '𦉇'), - (0x2F974, 'M', '䍙'), - (0x2F975, 'M', '𦋙'), - (0x2F976, 'M', '罺'), - (0x2F977, 'M', '𦌾'), - (0x2F978, 'M', '羕'), - (0x2F979, 'M', '翺'), - (0x2F97A, 'M', '者'), - (0x2F97B, 'M', '𦓚'), - (0x2F97C, 'M', '𦔣'), - (0x2F97D, 'M', '聠'), - (0x2F97E, 'M', '𦖨'), - (0x2F97F, 'M', '聰'), - (0x2F980, 'M', '𣍟'), - (0x2F981, 'M', '䏕'), - (0x2F982, 'M', '育'), - (0x2F983, 'M', '脃'), - (0x2F984, 'M', '䐋'), - (0x2F985, 'M', '脾'), - (0x2F986, 'M', '媵'), - (0x2F987, 'M', '𦞧'), - (0x2F988, 'M', '𦞵'), - (0x2F989, 'M', '𣎓'), - (0x2F98A, 'M', '𣎜'), - (0x2F98B, 'M', '舁'), - (0x2F98C, 'M', '舄'), - (0x2F98D, 'M', '辞'), - (0x2F98E, 'M', '䑫'), - (0x2F98F, 'M', '芑'), - (0x2F990, 'M', '芋'), - (0x2F991, 'M', '芝'), - (0x2F992, 'M', '劳'), - (0x2F993, 'M', '花'), - (0x2F994, 'M', '芳'), - (0x2F995, 'M', '芽'), - (0x2F996, 'M', '苦'), - (0x2F997, 'M', '𦬼'), - (0x2F998, 'M', '若'), - (0x2F999, 'M', '茝'), - (0x2F99A, 'M', '荣'), - (0x2F99B, 'M', '莭'), - (0x2F99C, 'M', '茣'), - (0x2F99D, 'M', '莽'), - (0x2F99E, 'M', '菧'), - (0x2F99F, 'M', '著'), - (0x2F9A0, 'M', '荓'), - (0x2F9A1, 'M', '菊'), - (0x2F9A2, 'M', '菌'), - (0x2F9A3, 'M', '菜'), - (0x2F9A4, 'M', '𦰶'), - (0x2F9A5, 'M', '𦵫'), - (0x2F9A6, 'M', '𦳕'), - (0x2F9A7, 'M', '䔫'), - (0x2F9A8, 'M', '蓱'), - (0x2F9A9, 'M', '蓳'), - (0x2F9AA, 'M', '蔖'), - (0x2F9AB, 'M', '𧏊'), - (0x2F9AC, 'M', '蕤'), - (0x2F9AD, 'M', '𦼬'), - (0x2F9AE, 'M', '䕝'), - (0x2F9AF, 'M', '䕡'), - (0x2F9B0, 'M', '𦾱'), - (0x2F9B1, 'M', '𧃒'), - (0x2F9B2, 'M', '䕫'), - (0x2F9B3, 'M', '虐'), - (0x2F9B4, 'M', '虜'), - (0x2F9B5, 'M', '虧'), - (0x2F9B6, 'M', '虩'), - (0x2F9B7, 'M', '蚩'), - (0x2F9B8, 'M', '蚈'), - (0x2F9B9, 'M', '蜎'), - (0x2F9BA, 'M', '蛢'), - (0x2F9BB, 'M', '蝹'), - (0x2F9BC, 'M', '蜨'), - (0x2F9BD, 'M', '蝫'), - (0x2F9BE, 'M', '螆'), - (0x2F9BF, 'X'), - (0x2F9C0, 'M', '蟡'), - (0x2F9C1, 'M', '蠁'), - (0x2F9C2, 'M', '䗹'), - (0x2F9C3, 'M', '衠'), - (0x2F9C4, 'M', '衣'), - (0x2F9C5, 'M', '𧙧'), - (0x2F9C6, 'M', '裗'), - (0x2F9C7, 'M', '裞'), - (0x2F9C8, 'M', '䘵'), - (0x2F9C9, 'M', '裺'), - (0x2F9CA, 'M', '㒻'), - (0x2F9CB, 'M', '𧢮'), - (0x2F9CC, 'M', '𧥦'), - (0x2F9CD, 'M', '䚾'), - (0x2F9CE, 'M', '䛇'), - (0x2F9CF, 'M', '誠'), - (0x2F9D0, 'M', '諭'), - (0x2F9D1, 'M', '變'), - (0x2F9D2, 'M', '豕'), - (0x2F9D3, 'M', '𧲨'), - (0x2F9D4, 'M', '貫'), - (0x2F9D5, 'M', '賁'), + (0x2F974, "M", "䍙"), + (0x2F975, "M", "𦋙"), + (0x2F976, "M", "罺"), + (0x2F977, "M", "𦌾"), + (0x2F978, "M", "羕"), + (0x2F979, "M", "翺"), + (0x2F97A, "M", "者"), + (0x2F97B, "M", "𦓚"), + (0x2F97C, "M", "𦔣"), + (0x2F97D, "M", "聠"), + (0x2F97E, "M", "𦖨"), + (0x2F97F, "M", "聰"), + (0x2F980, "M", "𣍟"), + (0x2F981, "M", "䏕"), + (0x2F982, "M", "育"), + (0x2F983, "M", "脃"), + (0x2F984, "M", "䐋"), + (0x2F985, "M", "脾"), + (0x2F986, "M", "媵"), + (0x2F987, "M", "𦞧"), + (0x2F988, "M", "𦞵"), + (0x2F989, "M", "𣎓"), + (0x2F98A, "M", "𣎜"), + (0x2F98B, "M", "舁"), + (0x2F98C, "M", "舄"), + (0x2F98D, "M", "辞"), + (0x2F98E, "M", "䑫"), + (0x2F98F, "M", "芑"), + (0x2F990, "M", "芋"), + (0x2F991, "M", "芝"), + (0x2F992, "M", "劳"), + (0x2F993, "M", "花"), + (0x2F994, "M", "芳"), + (0x2F995, "M", "芽"), + (0x2F996, "M", "苦"), + (0x2F997, "M", "𦬼"), + (0x2F998, "M", "若"), + (0x2F999, "M", "茝"), + (0x2F99A, "M", "荣"), + (0x2F99B, "M", "莭"), + (0x2F99C, "M", "茣"), + (0x2F99D, "M", "莽"), + (0x2F99E, "M", "菧"), + (0x2F99F, "M", "著"), + (0x2F9A0, "M", "荓"), + (0x2F9A1, "M", "菊"), + (0x2F9A2, "M", "菌"), + (0x2F9A3, "M", "菜"), + (0x2F9A4, "M", "𦰶"), + (0x2F9A5, "M", "𦵫"), + (0x2F9A6, "M", "𦳕"), + (0x2F9A7, "M", "䔫"), + (0x2F9A8, "M", "蓱"), + (0x2F9A9, "M", "蓳"), + (0x2F9AA, "M", "蔖"), + (0x2F9AB, "M", "𧏊"), + (0x2F9AC, "M", "蕤"), + (0x2F9AD, "M", "𦼬"), + (0x2F9AE, "M", "䕝"), + (0x2F9AF, "M", "䕡"), + (0x2F9B0, "M", "𦾱"), + (0x2F9B1, "M", "𧃒"), + (0x2F9B2, "M", "䕫"), + (0x2F9B3, "M", "虐"), + (0x2F9B4, "M", "虜"), + (0x2F9B5, "M", "虧"), + (0x2F9B6, "M", "虩"), + (0x2F9B7, "M", "蚩"), + (0x2F9B8, "M", "蚈"), + (0x2F9B9, "M", "蜎"), + (0x2F9BA, "M", "蛢"), + (0x2F9BB, "M", "蝹"), + (0x2F9BC, "M", "蜨"), + (0x2F9BD, "M", "蝫"), + (0x2F9BE, "M", "螆"), + (0x2F9BF, "X"), + (0x2F9C0, "M", "蟡"), + (0x2F9C1, "M", "蠁"), + (0x2F9C2, "M", "䗹"), + (0x2F9C3, "M", "衠"), + (0x2F9C4, "M", "衣"), + (0x2F9C5, "M", "𧙧"), + (0x2F9C6, "M", "裗"), + (0x2F9C7, "M", "裞"), + (0x2F9C8, "M", "䘵"), + (0x2F9C9, "M", "裺"), + (0x2F9CA, "M", "㒻"), + (0x2F9CB, "M", "𧢮"), + (0x2F9CC, "M", "𧥦"), + (0x2F9CD, "M", "䚾"), + (0x2F9CE, "M", "䛇"), + (0x2F9CF, "M", "誠"), + (0x2F9D0, "M", "諭"), + (0x2F9D1, "M", "變"), + (0x2F9D2, "M", "豕"), + (0x2F9D3, "M", "𧲨"), + (0x2F9D4, "M", "貫"), + (0x2F9D5, "M", "賁"), + (0x2F9D6, "M", "贛"), + (0x2F9D7, "M", "起"), ] + def _seg_81() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: return [ - (0x2F9D6, 'M', '贛'), - (0x2F9D7, 'M', '起'), - (0x2F9D8, 'M', '𧼯'), - (0x2F9D9, 'M', '𠠄'), - (0x2F9DA, 'M', '跋'), - (0x2F9DB, 'M', '趼'), - (0x2F9DC, 'M', '跰'), - (0x2F9DD, 'M', '𠣞'), - (0x2F9DE, 'M', '軔'), - (0x2F9DF, 'M', '輸'), - (0x2F9E0, 'M', '𨗒'), - (0x2F9E1, 'M', '𨗭'), - (0x2F9E2, 'M', '邔'), - (0x2F9E3, 'M', '郱'), - (0x2F9E4, 'M', '鄑'), - (0x2F9E5, 'M', '𨜮'), - (0x2F9E6, 'M', '鄛'), - (0x2F9E7, 'M', '鈸'), - (0x2F9E8, 'M', '鋗'), - (0x2F9E9, 'M', '鋘'), - (0x2F9EA, 'M', '鉼'), - (0x2F9EB, 'M', '鏹'), - (0x2F9EC, 'M', '鐕'), - (0x2F9ED, 'M', '𨯺'), - (0x2F9EE, 'M', '開'), - (0x2F9EF, 'M', '䦕'), - (0x2F9F0, 'M', '閷'), - (0x2F9F1, 'M', '𨵷'), - (0x2F9F2, 'M', '䧦'), - (0x2F9F3, 'M', '雃'), - (0x2F9F4, 'M', '嶲'), - (0x2F9F5, 'M', '霣'), - (0x2F9F6, 'M', '𩅅'), - (0x2F9F7, 'M', '𩈚'), - (0x2F9F8, 'M', '䩮'), - (0x2F9F9, 'M', '䩶'), - (0x2F9FA, 'M', '韠'), - (0x2F9FB, 'M', '𩐊'), - (0x2F9FC, 'M', '䪲'), - (0x2F9FD, 'M', '𩒖'), - (0x2F9FE, 'M', '頋'), - (0x2FA00, 'M', '頩'), - (0x2FA01, 'M', '𩖶'), - (0x2FA02, 'M', '飢'), - (0x2FA03, 'M', '䬳'), - (0x2FA04, 'M', '餩'), - (0x2FA05, 'M', '馧'), - (0x2FA06, 'M', '駂'), - (0x2FA07, 'M', '駾'), - (0x2FA08, 'M', '䯎'), - (0x2FA09, 'M', '𩬰'), - (0x2FA0A, 'M', '鬒'), - (0x2FA0B, 'M', '鱀'), - (0x2FA0C, 'M', '鳽'), - (0x2FA0D, 'M', '䳎'), - (0x2FA0E, 'M', '䳭'), - (0x2FA0F, 'M', '鵧'), - (0x2FA10, 'M', '𪃎'), - (0x2FA11, 'M', '䳸'), - (0x2FA12, 'M', '𪄅'), - (0x2FA13, 'M', '𪈎'), - (0x2FA14, 'M', '𪊑'), - (0x2FA15, 'M', '麻'), - (0x2FA16, 'M', '䵖'), - (0x2FA17, 'M', '黹'), - (0x2FA18, 'M', '黾'), - (0x2FA19, 'M', '鼅'), - (0x2FA1A, 'M', '鼏'), - (0x2FA1B, 'M', '鼖'), - (0x2FA1C, 'M', '鼻'), - (0x2FA1D, 'M', '𪘀'), - (0x2FA1E, 'X'), - (0x30000, 'V'), - (0x3134B, 'X'), - (0x31350, 'V'), - (0x323B0, 'X'), - (0xE0100, 'I'), - (0xE01F0, 'X'), + (0x2F9D8, "M", "𧼯"), + (0x2F9D9, "M", "𠠄"), + (0x2F9DA, "M", "跋"), + (0x2F9DB, "M", "趼"), + (0x2F9DC, "M", "跰"), + (0x2F9DD, "M", "𠣞"), + (0x2F9DE, "M", "軔"), + (0x2F9DF, "M", "輸"), + (0x2F9E0, "M", "𨗒"), + (0x2F9E1, "M", "𨗭"), + (0x2F9E2, "M", "邔"), + (0x2F9E3, "M", "郱"), + (0x2F9E4, "M", "鄑"), + (0x2F9E5, "M", "𨜮"), + (0x2F9E6, "M", "鄛"), + (0x2F9E7, "M", "鈸"), + (0x2F9E8, "M", "鋗"), + (0x2F9E9, "M", "鋘"), + (0x2F9EA, "M", "鉼"), + (0x2F9EB, "M", "鏹"), + (0x2F9EC, "M", "鐕"), + (0x2F9ED, "M", "𨯺"), + (0x2F9EE, "M", "開"), + (0x2F9EF, "M", "䦕"), + (0x2F9F0, "M", "閷"), + (0x2F9F1, "M", "𨵷"), + (0x2F9F2, "M", "䧦"), + (0x2F9F3, "M", "雃"), + (0x2F9F4, "M", "嶲"), + (0x2F9F5, "M", "霣"), + (0x2F9F6, "M", "𩅅"), + (0x2F9F7, "M", "𩈚"), + (0x2F9F8, "M", "䩮"), + (0x2F9F9, "M", "䩶"), + (0x2F9FA, "M", "韠"), + (0x2F9FB, "M", "𩐊"), + (0x2F9FC, "M", "䪲"), + (0x2F9FD, "M", "𩒖"), + (0x2F9FE, "M", "頋"), + (0x2FA00, "M", "頩"), + (0x2FA01, "M", "𩖶"), + (0x2FA02, "M", "飢"), + (0x2FA03, "M", "䬳"), + (0x2FA04, "M", "餩"), + (0x2FA05, "M", "馧"), + (0x2FA06, "M", "駂"), + (0x2FA07, "M", "駾"), + (0x2FA08, "M", "䯎"), + (0x2FA09, "M", "𩬰"), + (0x2FA0A, "M", "鬒"), + (0x2FA0B, "M", "鱀"), + (0x2FA0C, "M", "鳽"), + (0x2FA0D, "M", "䳎"), + (0x2FA0E, "M", "䳭"), + (0x2FA0F, "M", "鵧"), + (0x2FA10, "M", "𪃎"), + (0x2FA11, "M", "䳸"), + (0x2FA12, "M", "𪄅"), + (0x2FA13, "M", "𪈎"), + (0x2FA14, "M", "𪊑"), + (0x2FA15, "M", "麻"), + (0x2FA16, "M", "䵖"), + (0x2FA17, "M", "黹"), + (0x2FA18, "M", "黾"), + (0x2FA19, "M", "鼅"), + (0x2FA1A, "M", "鼏"), + (0x2FA1B, "M", "鼖"), + (0x2FA1C, "M", "鼻"), + (0x2FA1D, "M", "𪘀"), + (0x2FA1E, "X"), + (0x30000, "V"), + (0x3134B, "X"), + (0x31350, "V"), + (0x323B0, "X"), + (0xE0100, "I"), + (0xE01F0, "X"), ] + uts46data = tuple( _seg_0() + _seg_1() diff --git a/gestao_raul/Lib/site-packages/pip/_vendor/msgpack/__init__.py b/gestao_raul/Lib/site-packages/pip/_vendor/msgpack/__init__.py index 5071021..b615105 100644 --- a/gestao_raul/Lib/site-packages/pip/_vendor/msgpack/__init__.py +++ b/gestao_raul/Lib/site-packages/pip/_vendor/msgpack/__init__.py @@ -1,22 +1,20 @@ -# coding: utf-8 -from .exceptions import * +# ruff: noqa: F401 +import os + +from .exceptions import * # noqa: F403 from .ext import ExtType, Timestamp -import os -import sys +version = (1, 1, 0) +__version__ = "1.1.0" -version = (1, 0, 4) -__version__ = "1.0.4" - - -if os.environ.get("MSGPACK_PUREPYTHON") or sys.version_info[0] == 2: - from .fallback import Packer, unpackb, Unpacker +if os.environ.get("MSGPACK_PUREPYTHON"): + from .fallback import Packer, Unpacker, unpackb else: try: - from ._cmsgpack import Packer, unpackb, Unpacker + from ._cmsgpack import Packer, Unpacker, unpackb except ImportError: - from .fallback import Packer, unpackb, Unpacker + from .fallback import Packer, Unpacker, unpackb def pack(o, stream, **kwargs): diff --git a/gestao_raul/Lib/site-packages/pip/_vendor/msgpack/__pycache__/__init__.cpython-310.pyc b/gestao_raul/Lib/site-packages/pip/_vendor/msgpack/__pycache__/__init__.cpython-310.pyc index fe9753e2b5ba60ab5a34c7c734b67f6660a02971..8aa9c0511a0a6bc3771912de2f2b4ac3dca525e5 100644 GIT binary patch delta 642 zcmZ8dyKWOf6rGuUdLQ;WUXTzXN)ymF7A_-2iNIJ80mgD-p^T7%?U_WtzBKEIkcNhe zF6<9LBr1A7fRd7O|A2}fQE=~C3XfUMx#!-!cjlb==>Bm0%=aAv>wNg>XmaLXd;J*_ zK?IEnCxQtrrh6Fmm?aw55}oUm2!k8KJBCN{WaUa7~Ur-eMv+^IBy7V30HU!1L2D%#I|hn73uMgZ1GSA z{F0!%Bx-#}E5oy2Ydevq81N-fV5df}+w0!sD-U0Pj+inbDC`05A#WmF9H#>0-K={y%Ll z<=((?6k%HdRVXRCT(PXE9CGuXo$1so I-x^nc1J>h)aR2}S delta 747 zcmZuu&2G~`5caOu@y0(%8i$Y~kSd`{_!6}eM?{4X0twMXG!g1vET_Az+WIG2C-jFy zFT6nU3s59pgD2p`aSz-hA#ts^z^n@h5Vrh%GqXE0-;BRH?_EFleaC?3)#Z3EIrnd! zeFTRa93{p`Gfq&78BR@RB7>WpB!rQQEoO0x)p(8Bf*jDdb#7mvVpUiN4mXz#P7kqM zg9`P;O+DtNKJ(KCYakw)}!q)khmC-^Exfz-g0ZR*DK>$vz_5ND_E^9yAdOUpa z@M$z0KYujb9z7XsE-;*jrm79&okJm&Jl zY3f?~mcluNijzXwFNG}NhH|6mrx``c7Fqd$xVODuq5W((S9CW{k_jy9YA`KOI^}0_ z^GMGq0}Z;hB1s-|Woaxx_B@>`OJnhe`f3Z+0_eRo=kr9|*Z;7%13*y=QA`mr3A$l+ W5ym~_p&r8DDWMLn6OSMQ=RW|YC#LuS diff --git a/gestao_raul/Lib/site-packages/pip/_vendor/msgpack/__pycache__/exceptions.cpython-310.pyc b/gestao_raul/Lib/site-packages/pip/_vendor/msgpack/__pycache__/exceptions.cpython-310.pyc index e90cabb6fbb9a69c52b4434b1cef5ca1a7877ed7..fc5183c04cc5260751f098a5d1915d42f6ca1c0f 100644 GIT binary patch delta 57 zcmbQh*Tu)3&&$ij00fKtR&V5f!6+Z+Y!wq)oLW>IQ=Xbrk{{!epIn-onpaXB6BOj+ L>bzNk=?4n{>%0=B delta 63 zcmeC;o507N&&$ij00h-PLN{{1U{pzy`k*SltB z-I9nZLgvy#4`evCs+1x)R7B#CGbbeA5D*tGdjSa{kqdtSm+;;?v4aUK&2MIB-@MP? zn_VCM_T-A6PA4^ZKA-;T`un|__B+1peN1?nfFaKVIGRITZN52^c>?d$rB!`iC)%r; zqdUeYnqzR7omhi5^mzkzO(zb!@dllbIpi&^U~PdWZMs0hq?agFxf9fDE?1xGJ*(ul z3S$FmmAqgyv^7)xNM=b~+4Pipj}8xBnkp{5Be{?Zx49em3+MfEy~@2nF3iqOUYJtr zw0JlLsuM6|79dG1f+GuqZd;^V8T#aD6baLemEDq*W$wC+iG#4$gaf$3!$JqZ=p}-s z86-!At{VC#nNu^yX9Gzao=c0|v+J_rUAJp>!B5OA1&h9?wvCGhepf#mIrVPrH}c&^ z(Of5kBevva-*cq>yj}C?mCK-1tqtvjaC$j2Y#`p(}y^Ja_O&Qux45GeC-aK*))f`1=7d1)>obfng zXVvSexuKRFVecaf`CBZ>MaHH!zE4%@c$EKs5G)uWx!QIzG@VjVIyKg5DtS%#Rd#hL z;PT=|EpvyE6Y8%6{WH&@tzm?dk+QZXF$x=@Q7e^i7W8J`#!xPU&=H6g_)XmAy z57cJ&>P(A8TLg~`02FAGLXqQoXw|*ShYX6f$7+Y>MC3Qh-BMp4+&n6fKl^4V4nCmV z$Lh=MA7^%~p&>{~wC0MLuN0}s>8WHHPO?zQWU{b zjTh}JP*ENL*GG02S6ZnRnA)vB;bMT)B7?%NYNaf88=w#mt=&VRg*ujfkB53aD2Hi` z8MmSq3KO_=;1(H2|$`}Qf^Jc1Cl>v3ESp-dN;4=Uv< zhilXkctwbp5Q+$|Ae=>*KzI$|4TLt0qg7U0flZ7H-H@ml?{6!Sq*kwGSf*uA9exaX z+5-rifbh^{hD4_droc}yAXjj4(#u%yZj8YMdIJp M(k#+Ndi8AjAA+i!ivR!s delta 2147 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 D%Q7HC delta 10193 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 VLCxziG?6)TS0Eh0Ji@mo`TuTVO_Trt diff --git a/gestao_raul/Lib/site-packages/pip/_vendor/msgpack/ext.py b/gestao_raul/Lib/site-packages/pip/_vendor/msgpack/ext.py index 25544c5..9694819 100644 --- a/gestao_raul/Lib/site-packages/pip/_vendor/msgpack/ext.py +++ b/gestao_raul/Lib/site-packages/pip/_vendor/msgpack/ext.py @@ -1,21 +1,6 @@ -# coding: utf-8 -from collections import namedtuple import datetime -import sys import struct - - -PY2 = sys.version_info[0] == 2 - -if PY2: - int_types = (int, long) - _utc = None -else: - int_types = int - try: - _utc = datetime.timezone.utc - except AttributeError: - _utc = datetime.timezone(datetime.timedelta(0)) +from collections import namedtuple class ExtType(namedtuple("ExtType", "code data")): @@ -28,14 +13,15 @@ class ExtType(namedtuple("ExtType", "code data")): raise TypeError("data must be bytes") if not 0 <= code <= 127: raise ValueError("code must be 0~127") - return super(ExtType, cls).__new__(cls, code, data) + return super().__new__(cls, code, data) -class Timestamp(object): +class Timestamp: """Timestamp represents the Timestamp extension type in msgpack. - When built with Cython, msgpack uses C methods to pack and unpack `Timestamp`. When using pure-Python - msgpack, :func:`to_bytes` and :func:`from_bytes` are used to pack and unpack `Timestamp`. + When built with Cython, msgpack uses C methods to pack and unpack `Timestamp`. + When using pure-Python msgpack, :func:`to_bytes` and :func:`from_bytes` are used to pack and + unpack `Timestamp`. This class is immutable: Do not override seconds and nanoseconds. """ @@ -53,31 +39,25 @@ class Timestamp(object): Number of nanoseconds to add to `seconds` to get fractional time. Maximum is 999_999_999. Default is 0. - Note: Negative times (before the UNIX epoch) are represented as negative seconds + positive ns. + Note: Negative times (before the UNIX epoch) are represented as neg. seconds + pos. ns. """ - if not isinstance(seconds, int_types): - raise TypeError("seconds must be an interger") - if not isinstance(nanoseconds, int_types): + if not isinstance(seconds, int): + raise TypeError("seconds must be an integer") + if not isinstance(nanoseconds, int): raise TypeError("nanoseconds must be an integer") if not (0 <= nanoseconds < 10**9): - raise ValueError( - "nanoseconds must be a non-negative integer less than 999999999." - ) + raise ValueError("nanoseconds must be a non-negative integer less than 999999999.") self.seconds = seconds self.nanoseconds = nanoseconds def __repr__(self): """String representation of Timestamp.""" - return "Timestamp(seconds={0}, nanoseconds={1})".format( - self.seconds, self.nanoseconds - ) + return f"Timestamp(seconds={self.seconds}, nanoseconds={self.nanoseconds})" def __eq__(self, other): """Check for equality with another Timestamp object""" if type(other) is self.__class__: - return ( - self.seconds == other.seconds and self.nanoseconds == other.nanoseconds - ) + return self.seconds == other.seconds and self.nanoseconds == other.nanoseconds return False def __ne__(self, other): @@ -140,7 +120,7 @@ class Timestamp(object): """Create a Timestamp from posix timestamp in seconds. :param unix_float: Posix timestamp in seconds. - :type unix_float: int or float. + :type unix_float: int or float """ seconds = int(unix_sec // 1) nanoseconds = int((unix_sec % 1) * 10**9) @@ -174,20 +154,17 @@ class Timestamp(object): def to_datetime(self): """Get the timestamp as a UTC datetime. - Python 2 is not supported. - - :rtype: datetime. + :rtype: `datetime.datetime` """ - return datetime.datetime.fromtimestamp(0, _utc) + datetime.timedelta( - seconds=self.to_unix() + utc = datetime.timezone.utc + return datetime.datetime.fromtimestamp(0, utc) + datetime.timedelta( + seconds=self.seconds, microseconds=self.nanoseconds // 1000 ) @staticmethod def from_datetime(dt): """Create a Timestamp from datetime with tzinfo. - Python 2 is not supported. - :rtype: Timestamp """ - return Timestamp.from_unix(dt.timestamp()) + return Timestamp(seconds=int(dt.timestamp()), nanoseconds=dt.microsecond * 1000) diff --git a/gestao_raul/Lib/site-packages/pip/_vendor/msgpack/fallback.py b/gestao_raul/Lib/site-packages/pip/_vendor/msgpack/fallback.py index f560c7b..b02e47c 100644 --- a/gestao_raul/Lib/site-packages/pip/_vendor/msgpack/fallback.py +++ b/gestao_raul/Lib/site-packages/pip/_vendor/msgpack/fallback.py @@ -1,60 +1,22 @@ """Fallback pure Python implementation of msgpack""" -from datetime import datetime as _DateTime -import sys + import struct - - -PY2 = sys.version_info[0] == 2 -if PY2: - int_types = (int, long) - - def dict_iteritems(d): - return d.iteritems() - -else: - int_types = int - unicode = str - xrange = range - - def dict_iteritems(d): - return d.items() - - -if sys.version_info < (3, 5): - # Ugly hack... - RecursionError = RuntimeError - - def _is_recursionerror(e): - return ( - len(e.args) == 1 - and isinstance(e.args[0], str) - and e.args[0].startswith("maximum recursion depth exceeded") - ) - -else: - - def _is_recursionerror(e): - return True - +import sys +from datetime import datetime as _DateTime if hasattr(sys, "pypy_version_info"): - # StringIO is slow on PyPy, StringIO is faster. However: PyPy's own - # StringBuilder is fastest. from __pypy__ import newlist_hint + from __pypy__.builders import BytesBuilder - try: - from __pypy__.builders import BytesBuilder as StringBuilder - except ImportError: - from __pypy__.builders import StringBuilder - USING_STRINGBUILDER = True + _USING_STRINGBUILDER = True - class StringIO(object): + class BytesIO: def __init__(self, s=b""): if s: - self.builder = StringBuilder(len(s)) + self.builder = BytesBuilder(len(s)) self.builder.append(s) else: - self.builder = StringBuilder() + self.builder = BytesBuilder() def write(self, s): if isinstance(s, memoryview): @@ -67,17 +29,17 @@ if hasattr(sys, "pypy_version_info"): return self.builder.build() else: - USING_STRINGBUILDER = False - from io import BytesIO as StringIO + from io import BytesIO - newlist_hint = lambda size: [] + _USING_STRINGBUILDER = False + + def newlist_hint(size): + return [] -from .exceptions import BufferFull, OutOfData, ExtraData, FormatError, StackError - +from .exceptions import BufferFull, ExtraData, FormatError, OutOfData, StackError from .ext import ExtType, Timestamp - EX_SKIP = 0 EX_CONSTRUCT = 1 EX_READ_ARRAY_HEADER = 2 @@ -125,24 +87,13 @@ def unpackb(packed, **kwargs): ret = unpacker._unpack() except OutOfData: raise ValueError("Unpack failed: incomplete input") - except RecursionError as e: - if _is_recursionerror(e): - raise StackError - raise + except RecursionError: + raise StackError if unpacker._got_extradata(): raise ExtraData(ret, unpacker._get_extradata()) return ret -if sys.version_info < (2, 7, 6): - - def _unpack_from(f, b, o=0): - """Explicit type cast for legacy struct.unpack_from""" - return struct.unpack_from(f, bytes(b), o) - -else: - _unpack_from = struct.unpack_from - _NO_FORMAT_USED = "" _MSGPACK_HEADERS = { 0xC4: (1, _NO_FORMAT_USED, TYPE_BIN), @@ -176,14 +127,14 @@ _MSGPACK_HEADERS = { } -class Unpacker(object): +class Unpacker: """Streaming unpacker. Arguments: :param file_like: File-like object having `.read(n)` method. - If specified, unpacker reads serialized data from it and :meth:`feed()` is not usable. + If specified, unpacker reads serialized data from it and `.feed()` is not usable. :param int read_size: Used as `file_like.read(read_size)`. (default: `min(16*1024, max_buffer_size)`) @@ -202,17 +153,17 @@ class Unpacker(object): 0 - Timestamp 1 - float (Seconds from the EPOCH) 2 - int (Nanoseconds from the EPOCH) - 3 - datetime.datetime (UTC). Python 2 is not supported. + 3 - datetime.datetime (UTC). :param bool strict_map_key: If true (default), only str or bytes are accepted for map (dict) keys. - :param callable object_hook: + :param object_hook: When specified, it should be callable. Unpacker calls it with a dict argument after unpacking msgpack map. (See also simplejson) - :param callable object_pairs_hook: + :param object_pairs_hook: When specified, it should be callable. Unpacker calls it with a list of key-value pairs after unpacking msgpack map. (See also simplejson) @@ -275,6 +226,7 @@ class Unpacker(object): def __init__( self, file_like=None, + *, read_size=0, use_list=True, raw=False, @@ -359,9 +311,7 @@ class Unpacker(object): if object_pairs_hook is not None and not callable(object_pairs_hook): raise TypeError("`object_pairs_hook` is not callable") if object_hook is not None and object_pairs_hook is not None: - raise TypeError( - "object_pairs_hook and object_hook are mutually " "exclusive" - ) + raise TypeError("object_pairs_hook and object_hook are mutually exclusive") if not callable(ext_hook): raise TypeError("`ext_hook` is not callable") @@ -379,6 +329,7 @@ class Unpacker(object): # Use extend here: INPLACE_ADD += doesn't reliably typecast memoryview in jython self._buffer.extend(view) + view.release() def _consume(self): """Gets rid of the used parts of the buffer.""" @@ -453,20 +404,18 @@ class Unpacker(object): n = b & 0b00011111 typ = TYPE_RAW if n > self._max_str_len: - raise ValueError("%s exceeds max_str_len(%s)" % (n, self._max_str_len)) + raise ValueError(f"{n} exceeds max_str_len({self._max_str_len})") obj = self._read(n) elif b & 0b11110000 == 0b10010000: n = b & 0b00001111 typ = TYPE_ARRAY if n > self._max_array_len: - raise ValueError( - "%s exceeds max_array_len(%s)" % (n, self._max_array_len) - ) + raise ValueError(f"{n} exceeds max_array_len({self._max_array_len})") elif b & 0b11110000 == 0b10000000: n = b & 0b00001111 typ = TYPE_MAP if n > self._max_map_len: - raise ValueError("%s exceeds max_map_len(%s)" % (n, self._max_map_len)) + raise ValueError(f"{n} exceeds max_map_len({self._max_map_len})") elif b == 0xC0: obj = None elif b == 0xC2: @@ -477,65 +426,61 @@ class Unpacker(object): size, fmt, typ = _MSGPACK_HEADERS[b] self._reserve(size) if len(fmt) > 0: - n = _unpack_from(fmt, self._buffer, self._buff_i)[0] + n = struct.unpack_from(fmt, self._buffer, self._buff_i)[0] else: n = self._buffer[self._buff_i] self._buff_i += size if n > self._max_bin_len: - raise ValueError("%s exceeds max_bin_len(%s)" % (n, self._max_bin_len)) + raise ValueError(f"{n} exceeds max_bin_len({self._max_bin_len})") obj = self._read(n) elif 0xC7 <= b <= 0xC9: size, fmt, typ = _MSGPACK_HEADERS[b] self._reserve(size) - L, n = _unpack_from(fmt, self._buffer, self._buff_i) + L, n = struct.unpack_from(fmt, self._buffer, self._buff_i) self._buff_i += size if L > self._max_ext_len: - raise ValueError("%s exceeds max_ext_len(%s)" % (L, self._max_ext_len)) + raise ValueError(f"{L} exceeds max_ext_len({self._max_ext_len})") obj = self._read(L) elif 0xCA <= b <= 0xD3: size, fmt = _MSGPACK_HEADERS[b] self._reserve(size) if len(fmt) > 0: - obj = _unpack_from(fmt, self._buffer, self._buff_i)[0] + obj = struct.unpack_from(fmt, self._buffer, self._buff_i)[0] else: obj = self._buffer[self._buff_i] self._buff_i += size elif 0xD4 <= b <= 0xD8: size, fmt, typ = _MSGPACK_HEADERS[b] if self._max_ext_len < size: - raise ValueError( - "%s exceeds max_ext_len(%s)" % (size, self._max_ext_len) - ) + raise ValueError(f"{size} exceeds max_ext_len({self._max_ext_len})") self._reserve(size + 1) - n, obj = _unpack_from(fmt, self._buffer, self._buff_i) + n, obj = struct.unpack_from(fmt, self._buffer, self._buff_i) self._buff_i += size + 1 elif 0xD9 <= b <= 0xDB: size, fmt, typ = _MSGPACK_HEADERS[b] self._reserve(size) if len(fmt) > 0: - (n,) = _unpack_from(fmt, self._buffer, self._buff_i) + (n,) = struct.unpack_from(fmt, self._buffer, self._buff_i) else: n = self._buffer[self._buff_i] self._buff_i += size if n > self._max_str_len: - raise ValueError("%s exceeds max_str_len(%s)" % (n, self._max_str_len)) + raise ValueError(f"{n} exceeds max_str_len({self._max_str_len})") obj = self._read(n) elif 0xDC <= b <= 0xDD: size, fmt, typ = _MSGPACK_HEADERS[b] self._reserve(size) - (n,) = _unpack_from(fmt, self._buffer, self._buff_i) + (n,) = struct.unpack_from(fmt, self._buffer, self._buff_i) self._buff_i += size if n > self._max_array_len: - raise ValueError( - "%s exceeds max_array_len(%s)" % (n, self._max_array_len) - ) + raise ValueError(f"{n} exceeds max_array_len({self._max_array_len})") elif 0xDE <= b <= 0xDF: size, fmt, typ = _MSGPACK_HEADERS[b] self._reserve(size) - (n,) = _unpack_from(fmt, self._buffer, self._buff_i) + (n,) = struct.unpack_from(fmt, self._buffer, self._buff_i) self._buff_i += size if n > self._max_map_len: - raise ValueError("%s exceeds max_map_len(%s)" % (n, self._max_map_len)) + raise ValueError(f"{n} exceeds max_map_len({self._max_map_len})") else: raise FormatError("Unknown header: 0x%x" % b) return typ, n, obj @@ -554,12 +499,12 @@ class Unpacker(object): # TODO should we eliminate the recursion? if typ == TYPE_ARRAY: if execute == EX_SKIP: - for i in xrange(n): + for i in range(n): # TODO check whether we need to call `list_hook` self._unpack(EX_SKIP) return ret = newlist_hint(n) - for i in xrange(n): + for i in range(n): ret.append(self._unpack(EX_CONSTRUCT)) if self._list_hook is not None: ret = self._list_hook(ret) @@ -567,25 +512,22 @@ class Unpacker(object): return ret if self._use_list else tuple(ret) if typ == TYPE_MAP: if execute == EX_SKIP: - for i in xrange(n): + for i in range(n): # TODO check whether we need to call hooks self._unpack(EX_SKIP) self._unpack(EX_SKIP) return if self._object_pairs_hook is not None: ret = self._object_pairs_hook( - (self._unpack(EX_CONSTRUCT), self._unpack(EX_CONSTRUCT)) - for _ in xrange(n) + (self._unpack(EX_CONSTRUCT), self._unpack(EX_CONSTRUCT)) for _ in range(n) ) else: ret = {} - for _ in xrange(n): + for _ in range(n): key = self._unpack(EX_CONSTRUCT) - if self._strict_map_key and type(key) not in (unicode, bytes): - raise ValueError( - "%s is not allowed for map key" % str(type(key)) - ) - if not PY2 and type(key) is str: + if self._strict_map_key and type(key) not in (str, bytes): + raise ValueError("%s is not allowed for map key" % str(type(key))) + if isinstance(key, str): key = sys.intern(key) ret[key] = self._unpack(EX_CONSTRUCT) if self._object_hook is not None: @@ -659,7 +601,7 @@ class Unpacker(object): return self._stream_offset -class Packer(object): +class Packer: """ MessagePack Packer @@ -671,7 +613,8 @@ class Packer(object): Packer's constructor has some keyword arguments: - :param callable default: + :param default: + When specified, it should be callable. Convert user type to builtin type that Packer supports. See also simplejson's document. @@ -698,38 +641,18 @@ class Packer(object): If set to true, datetime with tzinfo is packed into Timestamp type. Note that the tzinfo is stripped in the timestamp. You can get UTC datetime with `timestamp=3` option of the Unpacker. - (Python 2 is not supported). :param str unicode_errors: The error handler for encoding unicode. (default: 'strict') DO NOT USE THIS!! This option is kept for very specific usage. - Example of streaming deserialize from file-like object:: - - unpacker = Unpacker(file_like) - for o in unpacker: - process(o) - - Example of streaming deserialize from socket:: - - unpacker = Unpacker() - while True: - buf = sock.recv(1024**2) - if not buf: - break - unpacker.feed(buf) - for o in unpacker: - process(o) - - Raises ``ExtraData`` when *packed* contains extra bytes. - Raises ``OutOfData`` when *packed* is incomplete. - Raises ``FormatError`` when *packed* is not valid msgpack. - Raises ``StackError`` when *packed* contains too nested. - Other exceptions can be raised during unpacking. + :param int buf_size: + Internal buffer size. This option is used only for C implementation. """ def __init__( self, + *, default=None, use_single_float=False, autoreset=True, @@ -737,19 +660,17 @@ class Packer(object): strict_types=False, datetime=False, unicode_errors=None, + buf_size=None, ): self._strict_types = strict_types self._use_float = use_single_float self._autoreset = autoreset self._use_bin_type = use_bin_type - self._buffer = StringIO() - if PY2 and datetime: - raise ValueError("datetime is not supported in Python 2") + self._buffer = BytesIO() self._datetime = bool(datetime) self._unicode_errors = unicode_errors or "strict" - if default is not None: - if not callable(default): - raise TypeError("default must be callable") + if default is not None and not callable(default): + raise TypeError("default must be callable") self._default = default def _pack( @@ -774,7 +695,7 @@ class Packer(object): if obj: return self._buffer.write(b"\xc3") return self._buffer.write(b"\xc2") - if check(obj, int_types): + if check(obj, int): if 0 <= obj < 0x80: return self._buffer.write(struct.pack("B", obj)) if -0x20 <= obj < 0: @@ -806,7 +727,7 @@ class Packer(object): raise ValueError("%s is too large" % type(obj).__name__) self._pack_bin_header(n) return self._buffer.write(obj) - if check(obj, unicode): + if check(obj, str): obj = obj.encode("utf-8", self._unicode_errors) n = len(obj) if n >= 2**32: @@ -814,7 +735,7 @@ class Packer(object): self._pack_raw_header(n) return self._buffer.write(obj) if check(obj, memoryview): - n = len(obj) * obj.itemsize + n = obj.nbytes if n >= 2**32: raise ValueError("Memoryview is too large") self._pack_bin_header(n) @@ -855,13 +776,11 @@ class Packer(object): if check(obj, list_types): n = len(obj) self._pack_array_header(n) - for i in xrange(n): + for i in range(n): self._pack(obj[i], nest_limit - 1) return if check(obj, dict): - return self._pack_map_pairs( - len(obj), dict_iteritems(obj), nest_limit - 1 - ) + return self._pack_map_pairs(len(obj), obj.items(), nest_limit - 1) if self._datetime and check(obj, _DateTime) and obj.tzinfo is not None: obj = Timestamp.from_datetime(obj) @@ -874,26 +793,26 @@ class Packer(object): continue if self._datetime and check(obj, _DateTime): - raise ValueError("Cannot serialize %r where tzinfo=None" % (obj,)) + raise ValueError(f"Cannot serialize {obj!r} where tzinfo=None") - raise TypeError("Cannot serialize %r" % (obj,)) + raise TypeError(f"Cannot serialize {obj!r}") def pack(self, obj): try: self._pack(obj) except: - self._buffer = StringIO() # force reset + self._buffer = BytesIO() # force reset raise if self._autoreset: ret = self._buffer.getvalue() - self._buffer = StringIO() + self._buffer = BytesIO() return ret def pack_map_pairs(self, pairs): self._pack_map_pairs(len(pairs), pairs) if self._autoreset: ret = self._buffer.getvalue() - self._buffer = StringIO() + self._buffer = BytesIO() return ret def pack_array_header(self, n): @@ -902,7 +821,7 @@ class Packer(object): self._pack_array_header(n) if self._autoreset: ret = self._buffer.getvalue() - self._buffer = StringIO() + self._buffer = BytesIO() return ret def pack_map_header(self, n): @@ -911,7 +830,7 @@ class Packer(object): self._pack_map_header(n) if self._autoreset: ret = self._buffer.getvalue() - self._buffer = StringIO() + self._buffer = BytesIO() return ret def pack_ext_type(self, typecode, data): @@ -963,7 +882,7 @@ class Packer(object): def _pack_map_pairs(self, n, pairs, nest_limit=DEFAULT_RECURSE_LIMIT): self._pack_map_header(n) - for (k, v) in pairs: + for k, v in pairs: self._pack(k, nest_limit - 1) self._pack(v, nest_limit - 1) @@ -1000,11 +919,11 @@ class Packer(object): This method is useful only when autoreset=False. """ - self._buffer = StringIO() + self._buffer = BytesIO() def getbuffer(self): """Return view of internal buffer.""" - if USING_STRINGBUILDER or PY2: + if _USING_STRINGBUILDER: return memoryview(self.bytes()) else: return self._buffer.getbuffer() diff --git a/gestao_raul/Lib/site-packages/pip/_vendor/packaging/__about__.py b/gestao_raul/Lib/site-packages/pip/_vendor/packaging/__about__.py deleted file mode 100644 index 3551bc2..0000000 --- a/gestao_raul/Lib/site-packages/pip/_vendor/packaging/__about__.py +++ /dev/null @@ -1,26 +0,0 @@ -# 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. - -__all__ = [ - "__title__", - "__summary__", - "__uri__", - "__version__", - "__author__", - "__email__", - "__license__", - "__copyright__", -] - -__title__ = "packaging" -__summary__ = "Core utilities for Python packages" -__uri__ = "https://github.com/pypa/packaging" - -__version__ = "21.3" - -__author__ = "Donald Stufft and individual contributors" -__email__ = "donald@stufft.io" - -__license__ = "BSD-2-Clause or Apache-2.0" -__copyright__ = "2014-2019 %s" % __author__ diff --git a/gestao_raul/Lib/site-packages/pip/_vendor/packaging/__init__.py b/gestao_raul/Lib/site-packages/pip/_vendor/packaging/__init__.py index 3c50c5d..d79f73c 100644 --- a/gestao_raul/Lib/site-packages/pip/_vendor/packaging/__init__.py +++ b/gestao_raul/Lib/site-packages/pip/_vendor/packaging/__init__.py @@ -2,24 +2,14 @@ # 2.0, and the BSD License. See the LICENSE file in the root of this repository # for complete details. -from .__about__ import ( - __author__, - __copyright__, - __email__, - __license__, - __summary__, - __title__, - __uri__, - __version__, -) +__title__ = "packaging" +__summary__ = "Core utilities for Python packages" +__uri__ = "https://github.com/pypa/packaging" -__all__ = [ - "__title__", - "__summary__", - "__uri__", - "__version__", - "__author__", - "__email__", - "__license__", - "__copyright__", -] +__version__ = "24.2" + +__author__ = "Donald Stufft and individual contributors" +__email__ = "donald@stufft.io" + +__license__ = "BSD-2-Clause or Apache-2.0" +__copyright__ = f"2014 {__author__}" diff --git a/gestao_raul/Lib/site-packages/pip/_vendor/packaging/__pycache__/__about__.cpython-310.pyc b/gestao_raul/Lib/site-packages/pip/_vendor/packaging/__pycache__/__about__.cpython-310.pyc deleted file mode 100644 index 033fa86965b613a9c9f20a913d0ba3a28a873273..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 590 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 MtYXZY^A=v`{~DtW%Q9E~&(+ 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 diff --git a/gestao_raul/Lib/site-packages/pip/_vendor/packaging/__pycache__/_musllinux.cpython-310.pyc b/gestao_raul/Lib/site-packages/pip/_vendor/packaging/__pycache__/_musllinux.cpython-310.pyc index 6450e4379afbe1d00b821c9a0b9c649b030a6033..9d571f173f656f6f438c0e628f8c9f56209556e1 100644 GIT binary patch delta 1982 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 diff --git a/gestao_raul/Lib/site-packages/pip/_vendor/packaging/__pycache__/_parser.cpython-310.pyc b/gestao_raul/Lib/site-packages/pip/_vendor/packaging/__pycache__/_parser.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..5fe93fed69eb1ba841fcab33930e433e8e214370 GIT binary patch literal 9257 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 literal 0 HcmV?d00001 diff --git a/gestao_raul/Lib/site-packages/pip/_vendor/packaging/__pycache__/_structures.cpython-310.pyc b/gestao_raul/Lib/site-packages/pip/_vendor/packaging/__pycache__/_structures.cpython-310.pyc index d95140c665506efc54ad0b63a5d42331efc59602..c981c13028f511eff97f9721c24b3503e4494869 100644 GIT binary patch delta 37 rcmbOz+AYeR&&$ij00fKtR&V5vXJkyAoXsf78WiN@>b$w1k%|t*3^D)! diff --git a/gestao_raul/Lib/site-packages/pip/_vendor/packaging/__pycache__/_tokenizer.cpython-310.pyc b/gestao_raul/Lib/site-packages/pip/_vendor/packaging/__pycache__/_tokenizer.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..2e823c77de56b9457f93f3e1effa02942b4b77f8 GIT binary patch literal 5911 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 literal 0 HcmV?d00001 diff --git a/gestao_raul/Lib/site-packages/pip/_vendor/packaging/__pycache__/markers.cpython-310.pyc b/gestao_raul/Lib/site-packages/pip/_vendor/packaging/__pycache__/markers.cpython-310.pyc index 6075523cdc75ba03585301ace98f87ba797efccd..f689074fe6840e4d82eb66c4a79a98e8326e2fd1 100644 GIT binary patch literal 7878 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 literal 0 HcmV?d00001 diff --git a/gestao_raul/Lib/site-packages/pip/_vendor/packaging/__pycache__/requirements.cpython-310.pyc b/gestao_raul/Lib/site-packages/pip/_vendor/packaging/__pycache__/requirements.cpython-310.pyc index 30f250980296e276f03fe5d8ac574709b4eb0d7f..4c82f5cf533a119016fd8fc2221320411301d863 100644 GIT binary patch literal 2911 zcmZ`*-EJGl6`q-0F3BZDNwjOn`CSBP6QYWoAEXWHAaLrsg$kE&B_stH1%owbC9SmF zrDujwL?}U88FUfMZcxm=(kVA;EGz> zV!h5!obk*oJf zsJD)C8-IOQ>q29E@TXWGB)YsV^Foi}ES)AY`P%AOeidhv#9&-|Yn%+zofJb8H_tH6 zi##1x#(6wShUDAgLvGwA=2id_HsFd4gyI8F39Q8{yBj&CPu1qRgVR5T5uQ);D6MqS zg7?v3Y@(fFlB>07f;E`P>=lzt!Dc7Xku9S8ckf3ZzWdR-o21|K%Z8NXnv`WI<)~1T zjBs1Zhm$y)Y3fp{VkqTPrdQ#pYfc~B`OWrc^o{MqB(uf#?~37s7&P0Po4>t#XL~m> zHZG)&C)xJB^ue}CZSu}I9v;NdY>(6NP5D)lt3uzbglWEeb73iFeSD|RG{kLBl*@gnEzq2qF{*-f#kMSWzf#@Y}r(4SfpA?K`Fi_B!W7a?54 zF?#ddS#z^}ws~(YigOjY95d_DW}KSDL@(w;ROImIL9DW)cXp7P2?hHso!w-W169b& z?t)fUn$p9&40K{AIxqcxktag|Cg%^4PZi(}QT%s+X<*qgKjGhqzp(s@&n!Q>!Pz$+ zXVbbB);so2pgs2fCKROKdWZaw9gBVcm`NY++W1YyfNM5DuRiYWGFUTNw+-~04mX`e zh<>QpgzF94dfc|HCuA4eC6bffekePNZK2X^v8TM>TQ0j2{9fGCx(=UR=IEaRl|E5k zdJ~;t<%unWieyb|ESqPMD1(vP^SVKD?14Nvlu|dT*N~OYU z7l_-J7eYllfxqNIOyJI`kLa8xfO&@_!ERriDU5t%JL&`X5;BMEW)&p z0L~;eeN&O7_5*t)X0iaX+8Ms30_cOeejbiqy?@HrPWcz7{L87h9i8%MDsDx+x_%9Q zmHvK_=4D_CZ4;%55EmT%3ZXa9^gK;mxh0n?l-jX{X;pR2Wqw-{3txIw;`#aSDWDgIGEu&aD9dwz>NdUQ7yY!hN($&oP+r=(O1ZuPQS1lqjBag8%X@~ z#nY~+_QClU5LFWWnpBrEDUdRGDCM7_GS|?A+~-%lkc;P`5YIwS{3rCqzo*@W%s?5T zAvpD2wW{_Tjn&uDKuU?bApHeNg?1KHIOq6-%G!BFJXRJTku1U zGO$NuoV70Sn(83Rwkye6Q`YJmXa=FQ#X*we2B+Q0P}XO)+!gw&zK3V0fT@m!+Qg=r tap5Y%&*{qNZidyVLXrJn%P1QkS2wCpsE!y~S=(C?Z4@J__GrCs@Lz;bwSE8q literal 3975 zcmZ`+-E$My72mtNTCHVSmSq`ZLc#_TK#4IlA%OxR7Dgd%WZ9MNd~BTVEZS=$qm`7q zs{pF$WMcZ*nf5u88S|JwqyNTz?Nk1Pjvq>Y=dNT6XxDR(&euKn<9yuX&csAU!}sTZ zZ|>YJXxhJs82wTp7BQl2UDECkp zaNNy;Z-o=?M3{4P;iNkm=G}ZaH!3n?xeI(A^WWw3qz(Eqf16wUGU5E}tQHiZdxhut-0ttV zw)+9bhj+An-MtFl$yazE@vHo!vgUq_J$$UJewDWB$_VkZUQi+u5*9K1z)fKSf^4t(n1 zw08owu9e>YjUupCGNf5;MzOS4yK%GA_FK|e=W!_`(@UN3ezVPGy4sAn@LR&b1esg& zMZ_zQ8(itjRGshe$I|?&BLbOmx#+Blm5$(YvLl*1O&HwZkK@leLXJhTXtsAM?Ldwv z=z8pn_%{Z#C0&lMlR#pRwYs!ceDRPA>~6Bkcl^ea^)7ETx0@Vhj?wH9iY+(j zJfk1kUBrm;09>O?a`k{AlXRTlkcH*;4}Pl|)cNoajNP*9xGs&4m+poVCiD^U;;-3(82XWJ=rf+J4AAPi8zX>;%0Q z;aSi7zUQ|FlCOEmc*5_s zUc#%*`&$tlb*bw&9{SMQ>NdNVy&rfx=!nY+6SseP zZx7jbhwS1ZD;=`=Lw56!E%uE|-hwn~-~H6Le{#NiUm88pk`^2+{OB_{F|*rgw%3)P zrR@j1egm79W7zH^FM>$S zCA5|@tESO>Ta#9(Li9EBbdO4pZZ_8T=u`|t|EoTSWXDnrStlqc<)k-E5)WP#v79(& zz;WXL?c*LMtK$~6zVZ0m?;4DUM$+cS1e8i78mkf&?7&+eJeDT>k$4RH_aq{vdcNLpe8a6-ZHXp8V@3mVEQ*3?Op zW@4pu8*K#r#yM~%MM&@<|6FUc9mFOilkpUIcvyiKfK7`Z34)pqkS1!j!b<5{Kc6_9 z3(*mdA3JA%qm=3!XKy&t+-|mbe`???2hMabU&hpPfU}+1p=1=N-1eZytOSpBpm~RA{i_xBY_8luazLrYqpy)iZ~`jR{?aE z!=KI^X1=h0)L+;s3v`ARn9cMTS=|JrkvB5T(oeB0JI(sVkrZ1Pnru*Y9DW86iboZT ze+ROs?P@#hDLl2y#L0ji=&?cgzKYI0c7O=n(|<;b_=`bJ0Awj~j`%U6ZWj?W;HJej zrEP+nridBv?Eyb^L@y~lnr#pDg7kq-`G7)U*Tfm@OVD#7P6PDyMdy$?ef_2*E`lzN zCGJ!AZ_-mCt*9en9!SgYcB$f#BcuVhC?6*-F$A4i`8keco-*8zG095`!>b;_gNpf{ z_Y{*ND&01&IgjfnXzBQcGw3&?_orXJb~W#%TPF|D&8u6_0zrmrxKsTX11C0W{oJh) z6BjS^jSHpQYDajzXws{@LrWld7u)*>gsO&TU-N#VP_o4g88|^;mcU5@RRZ(?h*bh> z1dbYq1XJ(T2M~OPpimM~i0Ryj1(LNhU3*C>J-OAg%aG7a~E` zFlqe8HijLdpw~stpuboc^cQF(Xf92l5ET|FuxgUPR1?G)0V<_poB-XVm;jLJ3_V2)yc@dU@%K%7(P-L(HnKmFtz7wCc%kYH4+4rHmf4va-CiT3xM4y^Nx? zwpm-+*eq`>gOOXli$b;h*)sL2wYxHNOiQy?Ua81bt{CfHb$NY5 zS_y%UP*CSgu`1JFR_b?F*DEk~ueMsRER})hz+A_Q9@@&QSFaq?)ylo{(l>H^C||8r zWOhiblxyFhjTn;aYn3ILL(yBKx>{~fkAJMJr1?SPyI-!=(_ozqLG6PwHG=Tc&1^4&O$G%XN-dJUu~E5 ANdN!< diff --git a/gestao_raul/Lib/site-packages/pip/_vendor/packaging/__pycache__/specifiers.cpython-310.pyc b/gestao_raul/Lib/site-packages/pip/_vendor/packaging/__pycache__/specifiers.cpython-310.pyc index 303ab871bb9a6742480adc5071882b2e920e20b5..b8bf3cd78968373165c27b576d3bc8ac827ed202 100644 GIT binary patch literal 31409 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 delta 5988 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 Q*CEXu=#!(wPUo)t7n(4ZQUCw| literal 3575 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 OP)J((BR!t_pZ^14`fhCi diff --git a/gestao_raul/Lib/site-packages/pip/_vendor/packaging/_elffile.py b/gestao_raul/Lib/site-packages/pip/_vendor/packaging/_elffile.py new file mode 100644 index 0000000..25f4282 --- /dev/null +++ b/gestao_raul/Lib/site-packages/pip/_vendor/packaging/_elffile.py @@ -0,0 +1,110 @@ +""" +ELF file parser. + +This provides a class ``ELFFile`` that parses an ELF executable in a similar +interface to ``ZipFile``. Only the read interface is implemented. + +Based on: https://gist.github.com/lyssdod/f51579ae8d93c8657a5564aefc2ffbca +ELF header: https://refspecs.linuxfoundation.org/elf/gabi4+/ch4.eheader.html +""" + +from __future__ import annotations + +import enum +import os +import struct +from typing import IO + + +class ELFInvalid(ValueError): + pass + + +class EIClass(enum.IntEnum): + C32 = 1 + C64 = 2 + + +class EIData(enum.IntEnum): + Lsb = 1 + Msb = 2 + + +class EMachine(enum.IntEnum): + I386 = 3 + S390 = 22 + Arm = 40 + X8664 = 62 + AArc64 = 183 + + +class ELFFile: + """ + Representation of an ELF executable. + """ + + def __init__(self, f: IO[bytes]) -> None: + self._f = f + + try: + ident = self._read("16B") + except struct.error as e: + raise ELFInvalid("unable to parse identification") from e + magic = bytes(ident[:4]) + if magic != b"\x7fELF": + raise ELFInvalid(f"invalid magic: {magic!r}") + + self.capacity = ident[4] # Format for program header (bitness). + self.encoding = ident[5] # Data structure encoding (endianness). + + try: + # e_fmt: Format for program header. + # p_fmt: Format for section header. + # p_idx: Indexes to find p_type, p_offset, and p_filesz. + e_fmt, self._p_fmt, self._p_idx = { + (1, 1): ("HHIIIIIHHH", ">IIIIIIII", (0, 1, 4)), # 32-bit MSB. + (2, 1): ("HHIQQQIHHH", ">IIQQQQQQ", (0, 2, 5)), # 64-bit MSB. + }[(self.capacity, self.encoding)] + except KeyError as e: + raise ELFInvalid( + f"unrecognized capacity ({self.capacity}) or " + f"encoding ({self.encoding})" + ) from e + + try: + ( + _, + self.machine, # Architecture type. + _, + _, + self._e_phoff, # Offset of program header. + _, + self.flags, # Processor-specific flags. + _, + self._e_phentsize, # Size of section. + self._e_phnum, # Number of sections. + ) = self._read(e_fmt) + except struct.error as e: + raise ELFInvalid("unable to parse machine and section information") from e + + def _read(self, fmt: str) -> tuple[int, ...]: + return struct.unpack(fmt, self._f.read(struct.calcsize(fmt))) + + @property + def interpreter(self) -> str | None: + """ + The path recorded in the ``PT_INTERP`` section header. + """ + for index in range(self._e_phnum): + self._f.seek(self._e_phoff + self._e_phentsize * index) + try: + data = self._read(self._p_fmt) + except struct.error: + continue + if data[self._p_idx[0]] != 3: # Not PT_INTERP. + continue + self._f.seek(data[self._p_idx[1]]) + return os.fsdecode(self._f.read(data[self._p_idx[2]])).strip("\0") + return None diff --git a/gestao_raul/Lib/site-packages/pip/_vendor/packaging/_manylinux.py b/gestao_raul/Lib/site-packages/pip/_vendor/packaging/_manylinux.py index 4c379aa..61339a6 100644 --- a/gestao_raul/Lib/site-packages/pip/_vendor/packaging/_manylinux.py +++ b/gestao_raul/Lib/site-packages/pip/_vendor/packaging/_manylinux.py @@ -1,122 +1,72 @@ +from __future__ import annotations + import collections +import contextlib import functools import os import re -import struct import sys import warnings -from typing import IO, Dict, Iterator, NamedTuple, Optional, Tuple +from typing import Generator, Iterator, NamedTuple, Sequence + +from ._elffile import EIClass, EIData, ELFFile, EMachine + +EF_ARM_ABIMASK = 0xFF000000 +EF_ARM_ABI_VER5 = 0x05000000 +EF_ARM_ABI_FLOAT_HARD = 0x00000400 -# Python does not provide platform information at sufficient granularity to -# identify the architecture of the running executable in some cases, so we -# determine it dynamically by reading the information from the running -# process. This only applies on Linux, which uses the ELF format. -class _ELFFileHeader: - # https://en.wikipedia.org/wiki/Executable_and_Linkable_Format#File_header - class _InvalidELFFileHeader(ValueError): - """ - An invalid ELF file header was found. - """ - - ELF_MAGIC_NUMBER = 0x7F454C46 - ELFCLASS32 = 1 - ELFCLASS64 = 2 - ELFDATA2LSB = 1 - ELFDATA2MSB = 2 - EM_386 = 3 - EM_S390 = 22 - EM_ARM = 40 - EM_X86_64 = 62 - EF_ARM_ABIMASK = 0xFF000000 - EF_ARM_ABI_VER5 = 0x05000000 - EF_ARM_ABI_FLOAT_HARD = 0x00000400 - - def __init__(self, file: IO[bytes]) -> None: - def unpack(fmt: str) -> int: - try: - data = file.read(struct.calcsize(fmt)) - result: Tuple[int, ...] = struct.unpack(fmt, data) - except struct.error: - raise _ELFFileHeader._InvalidELFFileHeader() - return result[0] - - self.e_ident_magic = unpack(">I") - if self.e_ident_magic != self.ELF_MAGIC_NUMBER: - raise _ELFFileHeader._InvalidELFFileHeader() - self.e_ident_class = unpack("B") - if self.e_ident_class not in {self.ELFCLASS32, self.ELFCLASS64}: - raise _ELFFileHeader._InvalidELFFileHeader() - self.e_ident_data = unpack("B") - if self.e_ident_data not in {self.ELFDATA2LSB, self.ELFDATA2MSB}: - raise _ELFFileHeader._InvalidELFFileHeader() - self.e_ident_version = unpack("B") - self.e_ident_osabi = unpack("B") - self.e_ident_abiversion = unpack("B") - self.e_ident_pad = file.read(7) - format_h = "H" - format_i = "I" - format_q = "Q" - format_p = format_i if self.e_ident_class == self.ELFCLASS32 else format_q - self.e_type = unpack(format_h) - self.e_machine = unpack(format_h) - self.e_version = unpack(format_i) - self.e_entry = unpack(format_p) - self.e_phoff = unpack(format_p) - self.e_shoff = unpack(format_p) - self.e_flags = unpack(format_i) - self.e_ehsize = unpack(format_h) - self.e_phentsize = unpack(format_h) - self.e_phnum = unpack(format_h) - self.e_shentsize = unpack(format_h) - self.e_shnum = unpack(format_h) - self.e_shstrndx = unpack(format_h) - - -def _get_elf_header() -> Optional[_ELFFileHeader]: +# `os.PathLike` not a generic type until Python 3.9, so sticking with `str` +# as the type for `path` until then. +@contextlib.contextmanager +def _parse_elf(path: str) -> Generator[ELFFile | None, None, None]: try: - with open(sys.executable, "rb") as f: - elf_header = _ELFFileHeader(f) - except (OSError, TypeError, _ELFFileHeader._InvalidELFFileHeader): - return None - return elf_header + with open(path, "rb") as f: + yield ELFFile(f) + except (OSError, TypeError, ValueError): + yield None -def _is_linux_armhf() -> bool: +def _is_linux_armhf(executable: str) -> bool: # hard-float ABI can be detected from the ELF header of the running # process # https://static.docs.arm.com/ihi0044/g/aaelf32.pdf - elf_header = _get_elf_header() - if elf_header is None: - return False - result = elf_header.e_ident_class == elf_header.ELFCLASS32 - result &= elf_header.e_ident_data == elf_header.ELFDATA2LSB - result &= elf_header.e_machine == elf_header.EM_ARM - result &= ( - elf_header.e_flags & elf_header.EF_ARM_ABIMASK - ) == elf_header.EF_ARM_ABI_VER5 - result &= ( - elf_header.e_flags & elf_header.EF_ARM_ABI_FLOAT_HARD - ) == elf_header.EF_ARM_ABI_FLOAT_HARD - return result + with _parse_elf(executable) as f: + return ( + f is not None + and f.capacity == EIClass.C32 + and f.encoding == EIData.Lsb + and f.machine == EMachine.Arm + and f.flags & EF_ARM_ABIMASK == EF_ARM_ABI_VER5 + and f.flags & EF_ARM_ABI_FLOAT_HARD == EF_ARM_ABI_FLOAT_HARD + ) -def _is_linux_i686() -> bool: - elf_header = _get_elf_header() - if elf_header is None: - return False - result = elf_header.e_ident_class == elf_header.ELFCLASS32 - result &= elf_header.e_ident_data == elf_header.ELFDATA2LSB - result &= elf_header.e_machine == elf_header.EM_386 - return result +def _is_linux_i686(executable: str) -> bool: + with _parse_elf(executable) as f: + return ( + f is not None + and f.capacity == EIClass.C32 + and f.encoding == EIData.Lsb + and f.machine == EMachine.I386 + ) -def _have_compatible_abi(arch: str) -> bool: - if arch == "armv7l": - return _is_linux_armhf() - if arch == "i686": - return _is_linux_i686() - return arch in {"x86_64", "aarch64", "ppc64", "ppc64le", "s390x"} +def _have_compatible_abi(executable: str, archs: Sequence[str]) -> bool: + if "armv7l" in archs: + return _is_linux_armhf(executable) + if "i686" in archs: + return _is_linux_i686(executable) + allowed_archs = { + "x86_64", + "aarch64", + "ppc64", + "ppc64le", + "s390x", + "loongarch64", + "riscv64", + } + return any(arch in allowed_archs for arch in archs) # If glibc ever changes its major version, we need to know what the last @@ -124,7 +74,7 @@ def _have_compatible_abi(arch: str) -> bool: # For now, guess what the highest minor version might be, assume it will # be 50 for testing. Once this actually happens, update the dictionary # with the actual value. -_LAST_GLIBC_MINOR: Dict[int, int] = collections.defaultdict(lambda: 50) +_LAST_GLIBC_MINOR: dict[int, int] = collections.defaultdict(lambda: 50) class _GLibCVersion(NamedTuple): @@ -132,7 +82,7 @@ class _GLibCVersion(NamedTuple): minor: int -def _glibc_version_string_confstr() -> Optional[str]: +def _glibc_version_string_confstr() -> str | None: """ Primary implementation of glibc_version_string using os.confstr. """ @@ -141,17 +91,17 @@ def _glibc_version_string_confstr() -> Optional[str]: # platform module. # https://github.com/python/cpython/blob/fcf1d003bf4f0100c/Lib/platform.py#L175-L183 try: - # os.confstr("CS_GNU_LIBC_VERSION") returns a string like "glibc 2.17". - version_string = os.confstr("CS_GNU_LIBC_VERSION") + # Should be a string like "glibc 2.17". + version_string: str | None = os.confstr("CS_GNU_LIBC_VERSION") assert version_string is not None - _, version = version_string.split() + _, version = version_string.rsplit() except (AssertionError, 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]: +def _glibc_version_string_ctypes() -> str | None: """ Fallback implementation of glibc_version_string using ctypes. """ @@ -195,12 +145,12 @@ def _glibc_version_string_ctypes() -> Optional[str]: return version_str -def _glibc_version_string() -> Optional[str]: +def _glibc_version_string() -> str | None: """Returns glibc version string, or None if not using glibc.""" return _glibc_version_string_confstr() or _glibc_version_string_ctypes() -def _parse_glibc_version(version_str: str) -> Tuple[int, int]: +def _parse_glibc_version(version_str: str) -> tuple[int, int]: """Parse glibc version. We use a regexp instead of str.split because we want to discard any @@ -211,16 +161,17 @@ def _parse_glibc_version(version_str: str) -> Tuple[int, int]: m = re.match(r"(?P[0-9]+)\.(?P[0-9]+)", version_str) if not m: warnings.warn( - "Expected glibc version with 2 components major.minor," - " got: %s" % version_str, + f"Expected glibc version with 2 components major.minor," + f" got: {version_str}", RuntimeWarning, + stacklevel=2, ) return -1, -1 return int(m.group("major")), int(m.group("minor")) -@functools.lru_cache() -def _get_glibc_version() -> Tuple[int, int]: +@functools.lru_cache +def _get_glibc_version() -> tuple[int, int]: version_str = _glibc_version_string() if version_str is None: return (-1, -1) @@ -228,13 +179,13 @@ def _get_glibc_version() -> Tuple[int, int]: # From PEP 513, PEP 600 -def _is_compatible(name: str, arch: str, version: _GLibCVersion) -> bool: +def _is_compatible(arch: str, version: _GLibCVersion) -> bool: sys_glibc = _get_glibc_version() if sys_glibc < version: return False # Check for presence of _manylinux module. try: - import _manylinux # noqa + import _manylinux except ImportError: return True if hasattr(_manylinux, "manylinux_compatible"): @@ -264,12 +215,22 @@ _LEGACY_MANYLINUX_MAP = { } -def platform_tags(linux: str, arch: str) -> Iterator[str]: - if not _have_compatible_abi(arch): +def platform_tags(archs: Sequence[str]) -> Iterator[str]: + """Generate manylinux tags compatible to the current platform. + + :param archs: Sequence of compatible architectures. + The first one shall be the closest to the actual architecture and be the part of + platform tag after the ``linux_`` prefix, e.g. ``x86_64``. + The ``linux_`` prefix is assumed as a prerequisite for the current platform to + be manylinux-compatible. + + :returns: An iterator of compatible manylinux tags. + """ + if not _have_compatible_abi(sys.executable, archs): return # Oldest glibc to be supported regardless of architecture is (2, 17). too_old_glibc2 = _GLibCVersion(2, 16) - if arch in {"x86_64", "i686"}: + if set(archs) & {"x86_64", "i686"}: # On x86/i686 also oldest glibc to be supported is (2, 5). too_old_glibc2 = _GLibCVersion(2, 4) current_glibc = _GLibCVersion(*_get_glibc_version()) @@ -283,19 +244,20 @@ def platform_tags(linux: str, arch: str) -> Iterator[str]: for glibc_major in range(current_glibc.major - 1, 1, -1): glibc_minor = _LAST_GLIBC_MINOR[glibc_major] glibc_max_list.append(_GLibCVersion(glibc_major, glibc_minor)) - for glibc_max in glibc_max_list: - if glibc_max.major == too_old_glibc2.major: - min_minor = too_old_glibc2.minor - else: - # For other glibc major versions oldest supported is (x, 0). - min_minor = -1 - for glibc_minor in range(glibc_max.minor, min_minor, -1): - glibc_version = _GLibCVersion(glibc_max.major, glibc_minor) - tag = "manylinux_{}_{}".format(*glibc_version) - if _is_compatible(tag, arch, glibc_version): - yield linux.replace("linux", tag) - # Handle the legacy manylinux1, manylinux2010, manylinux2014 tags. - if glibc_version in _LEGACY_MANYLINUX_MAP: - legacy_tag = _LEGACY_MANYLINUX_MAP[glibc_version] - if _is_compatible(legacy_tag, arch, glibc_version): - yield linux.replace("linux", legacy_tag) + for arch in archs: + for glibc_max in glibc_max_list: + if glibc_max.major == too_old_glibc2.major: + min_minor = too_old_glibc2.minor + else: + # For other glibc major versions oldest supported is (x, 0). + min_minor = -1 + for glibc_minor in range(glibc_max.minor, min_minor, -1): + glibc_version = _GLibCVersion(glibc_max.major, glibc_minor) + tag = "manylinux_{}_{}".format(*glibc_version) + if _is_compatible(arch, glibc_version): + yield f"{tag}_{arch}" + # Handle the legacy manylinux1, manylinux2010, manylinux2014 tags. + if glibc_version in _LEGACY_MANYLINUX_MAP: + legacy_tag = _LEGACY_MANYLINUX_MAP[glibc_version] + if _is_compatible(arch, glibc_version): + yield f"{legacy_tag}_{arch}" diff --git a/gestao_raul/Lib/site-packages/pip/_vendor/packaging/_musllinux.py b/gestao_raul/Lib/site-packages/pip/_vendor/packaging/_musllinux.py index 8ac3059..d2bf30b 100644 --- a/gestao_raul/Lib/site-packages/pip/_vendor/packaging/_musllinux.py +++ b/gestao_raul/Lib/site-packages/pip/_vendor/packaging/_musllinux.py @@ -4,68 +4,15 @@ This module implements logic to detect if the currently running Python is linked against musl, and what musl version is used. """ -import contextlib +from __future__ import annotations + import functools -import operator -import os import re -import struct import subprocess import sys -from typing import IO, Iterator, NamedTuple, Optional, Tuple +from typing import Iterator, NamedTuple, Sequence - -def _read_unpacked(f: IO[bytes], fmt: str) -> Tuple[int, ...]: - return struct.unpack(fmt, f.read(struct.calcsize(fmt))) - - -def _parse_ld_musl_from_elf(f: IO[bytes]) -> Optional[str]: - """Detect musl libc location by parsing the Python executable. - - Based on: https://gist.github.com/lyssdod/f51579ae8d93c8657a5564aefc2ffbca - ELF header: https://refspecs.linuxfoundation.org/elf/gabi4+/ch4.eheader.html - """ - f.seek(0) - try: - ident = _read_unpacked(f, "16B") - except struct.error: - return None - if ident[:4] != tuple(b"\x7fELF"): # Invalid magic, not ELF. - return None - f.seek(struct.calcsize("HHI"), 1) # Skip file type, machine, and version. - - try: - # e_fmt: Format for program header. - # p_fmt: Format for section header. - # p_idx: Indexes to find p_type, p_offset, and p_filesz. - e_fmt, p_fmt, p_idx = { - 1: ("IIIIHHH", "IIIIIIII", (0, 1, 4)), # 32-bit. - 2: ("QQQIHHH", "IIQQQQQQ", (0, 2, 5)), # 64-bit. - }[ident[4]] - except KeyError: - return None - else: - p_get = operator.itemgetter(*p_idx) - - # Find the interpreter section and return its content. - try: - _, e_phoff, _, _, _, e_phentsize, e_phnum = _read_unpacked(f, e_fmt) - except struct.error: - return None - for i in range(e_phnum + 1): - f.seek(e_phoff + e_phentsize * i) - try: - p_type, p_offset, p_filesz = p_get(_read_unpacked(f, p_fmt)) - except struct.error: - return None - if p_type != 3: # Not PT_INTERP. - continue - f.seek(p_offset) - interpreter = os.fsdecode(f.read(p_filesz)).strip("\0") - if "musl" not in interpreter: - return None - return interpreter - return None +from ._elffile import ELFFile class _MuslVersion(NamedTuple): @@ -73,7 +20,7 @@ class _MuslVersion(NamedTuple): minor: int -def _parse_musl_version(output: str) -> Optional[_MuslVersion]: +def _parse_musl_version(output: str) -> _MuslVersion | None: lines = [n for n in (n.strip() for n in output.splitlines()) if n] if len(lines) < 2 or lines[0][:4] != "musl": return None @@ -83,8 +30,8 @@ def _parse_musl_version(output: str) -> Optional[_MuslVersion]: return _MuslVersion(major=int(m.group(1)), minor=int(m.group(2))) -@functools.lru_cache() -def _get_musl_version(executable: str) -> Optional[_MuslVersion]: +@functools.lru_cache +def _get_musl_version(executable: str) -> _MuslVersion | None: """Detect currently-running musl runtime version. This is done by checking the specified executable's dynamic linking @@ -95,32 +42,34 @@ def _get_musl_version(executable: str) -> Optional[_MuslVersion]: Version 1.2.2 Dynamic Program Loader """ - with contextlib.ExitStack() as stack: - try: - f = stack.enter_context(open(executable, "rb")) - except OSError: - return None - ld = _parse_ld_musl_from_elf(f) - if not ld: + try: + with open(executable, "rb") as f: + ld = ELFFile(f).interpreter + except (OSError, TypeError, ValueError): return None - proc = subprocess.run([ld], stderr=subprocess.PIPE, universal_newlines=True) + if ld is None or "musl" not in ld: + return None + proc = subprocess.run([ld], stderr=subprocess.PIPE, text=True) return _parse_musl_version(proc.stderr) -def platform_tags(arch: str) -> Iterator[str]: +def platform_tags(archs: Sequence[str]) -> Iterator[str]: """Generate musllinux tags compatible to the current platform. - :param arch: Should be the part of platform tag after the ``linux_`` - prefix, e.g. ``x86_64``. The ``linux_`` prefix is assumed as a - prerequisite for the current platform to be musllinux-compatible. + :param archs: Sequence of compatible architectures. + The first one shall be the closest to the actual architecture and be the part of + platform tag after the ``linux_`` prefix, e.g. ``x86_64``. + The ``linux_`` prefix is assumed as a prerequisite for the current platform to + be musllinux-compatible. :returns: An iterator of compatible musllinux tags. """ sys_musl = _get_musl_version(sys.executable) if sys_musl is None: # Python not dynamically linked against musl. return - for minor in range(sys_musl.minor, -1, -1): - yield f"musllinux_{sys_musl.major}_{minor}_{arch}" + for arch in archs: + for minor in range(sys_musl.minor, -1, -1): + yield f"musllinux_{sys_musl.major}_{minor}_{arch}" if __name__ == "__main__": # pragma: no cover diff --git a/gestao_raul/Lib/site-packages/pip/_vendor/packaging/_parser.py b/gestao_raul/Lib/site-packages/pip/_vendor/packaging/_parser.py new file mode 100644 index 0000000..c1238c0 --- /dev/null +++ b/gestao_raul/Lib/site-packages/pip/_vendor/packaging/_parser.py @@ -0,0 +1,354 @@ +"""Handwritten parser of dependency specifiers. + +The docstring for each __parse_* function contains EBNF-inspired grammar representing +the implementation. +""" + +from __future__ import annotations + +import ast +from typing import NamedTuple, Sequence, Tuple, Union + +from ._tokenizer import DEFAULT_RULES, Tokenizer + + +class Node: + def __init__(self, value: str) -> None: + self.value = value + + def __str__(self) -> str: + return self.value + + def __repr__(self) -> str: + return f"<{self.__class__.__name__}('{self}')>" + + def serialize(self) -> str: + raise NotImplementedError + + +class Variable(Node): + def serialize(self) -> str: + return str(self) + + +class Value(Node): + def serialize(self) -> str: + return f'"{self}"' + + +class Op(Node): + def serialize(self) -> str: + return str(self) + + +MarkerVar = Union[Variable, Value] +MarkerItem = Tuple[MarkerVar, Op, MarkerVar] +MarkerAtom = Union[MarkerItem, Sequence["MarkerAtom"]] +MarkerList = Sequence[Union["MarkerList", MarkerAtom, str]] + + +class ParsedRequirement(NamedTuple): + name: str + url: str + extras: list[str] + specifier: str + marker: MarkerList | None + + +# -------------------------------------------------------------------------------------- +# Recursive descent parser for dependency specifier +# -------------------------------------------------------------------------------------- +def parse_requirement(source: str) -> ParsedRequirement: + return _parse_requirement(Tokenizer(source, rules=DEFAULT_RULES)) + + +def _parse_requirement(tokenizer: Tokenizer) -> ParsedRequirement: + """ + requirement = WS? IDENTIFIER WS? extras WS? requirement_details + """ + tokenizer.consume("WS") + + name_token = tokenizer.expect( + "IDENTIFIER", expected="package name at the start of dependency specifier" + ) + name = name_token.text + tokenizer.consume("WS") + + extras = _parse_extras(tokenizer) + tokenizer.consume("WS") + + url, specifier, marker = _parse_requirement_details(tokenizer) + tokenizer.expect("END", expected="end of dependency specifier") + + return ParsedRequirement(name, url, extras, specifier, marker) + + +def _parse_requirement_details( + tokenizer: Tokenizer, +) -> tuple[str, str, MarkerList | None]: + """ + requirement_details = AT URL (WS requirement_marker?)? + | specifier WS? (requirement_marker)? + """ + + specifier = "" + url = "" + marker = None + + if tokenizer.check("AT"): + tokenizer.read() + tokenizer.consume("WS") + + url_start = tokenizer.position + url = tokenizer.expect("URL", expected="URL after @").text + if tokenizer.check("END", peek=True): + return (url, specifier, marker) + + tokenizer.expect("WS", expected="whitespace after URL") + + # The input might end after whitespace. + if tokenizer.check("END", peek=True): + return (url, specifier, marker) + + marker = _parse_requirement_marker( + tokenizer, span_start=url_start, after="URL and whitespace" + ) + else: + specifier_start = tokenizer.position + specifier = _parse_specifier(tokenizer) + tokenizer.consume("WS") + + if tokenizer.check("END", peek=True): + return (url, specifier, marker) + + marker = _parse_requirement_marker( + tokenizer, + span_start=specifier_start, + after=( + "version specifier" + if specifier + else "name and no valid version specifier" + ), + ) + + return (url, specifier, marker) + + +def _parse_requirement_marker( + tokenizer: Tokenizer, *, span_start: int, after: str +) -> MarkerList: + """ + requirement_marker = SEMICOLON marker WS? + """ + + if not tokenizer.check("SEMICOLON"): + tokenizer.raise_syntax_error( + f"Expected end or semicolon (after {after})", + span_start=span_start, + ) + tokenizer.read() + + marker = _parse_marker(tokenizer) + tokenizer.consume("WS") + + return marker + + +def _parse_extras(tokenizer: Tokenizer) -> list[str]: + """ + extras = (LEFT_BRACKET wsp* extras_list? wsp* RIGHT_BRACKET)? + """ + if not tokenizer.check("LEFT_BRACKET", peek=True): + return [] + + with tokenizer.enclosing_tokens( + "LEFT_BRACKET", + "RIGHT_BRACKET", + around="extras", + ): + tokenizer.consume("WS") + extras = _parse_extras_list(tokenizer) + tokenizer.consume("WS") + + return extras + + +def _parse_extras_list(tokenizer: Tokenizer) -> list[str]: + """ + extras_list = identifier (wsp* ',' wsp* identifier)* + """ + extras: list[str] = [] + + if not tokenizer.check("IDENTIFIER"): + return extras + + extras.append(tokenizer.read().text) + + while True: + tokenizer.consume("WS") + if tokenizer.check("IDENTIFIER", peek=True): + tokenizer.raise_syntax_error("Expected comma between extra names") + elif not tokenizer.check("COMMA"): + break + + tokenizer.read() + tokenizer.consume("WS") + + extra_token = tokenizer.expect("IDENTIFIER", expected="extra name after comma") + extras.append(extra_token.text) + + return extras + + +def _parse_specifier(tokenizer: Tokenizer) -> str: + """ + specifier = LEFT_PARENTHESIS WS? version_many WS? RIGHT_PARENTHESIS + | WS? version_many WS? + """ + with tokenizer.enclosing_tokens( + "LEFT_PARENTHESIS", + "RIGHT_PARENTHESIS", + around="version specifier", + ): + tokenizer.consume("WS") + parsed_specifiers = _parse_version_many(tokenizer) + tokenizer.consume("WS") + + return parsed_specifiers + + +def _parse_version_many(tokenizer: Tokenizer) -> str: + """ + version_many = (SPECIFIER (WS? COMMA WS? SPECIFIER)*)? + """ + parsed_specifiers = "" + while tokenizer.check("SPECIFIER"): + span_start = tokenizer.position + parsed_specifiers += tokenizer.read().text + if tokenizer.check("VERSION_PREFIX_TRAIL", peek=True): + tokenizer.raise_syntax_error( + ".* suffix can only be used with `==` or `!=` operators", + span_start=span_start, + span_end=tokenizer.position + 1, + ) + if tokenizer.check("VERSION_LOCAL_LABEL_TRAIL", peek=True): + tokenizer.raise_syntax_error( + "Local version label can only be used with `==` or `!=` operators", + span_start=span_start, + span_end=tokenizer.position, + ) + tokenizer.consume("WS") + if not tokenizer.check("COMMA"): + break + parsed_specifiers += tokenizer.read().text + tokenizer.consume("WS") + + return parsed_specifiers + + +# -------------------------------------------------------------------------------------- +# Recursive descent parser for marker expression +# -------------------------------------------------------------------------------------- +def parse_marker(source: str) -> MarkerList: + return _parse_full_marker(Tokenizer(source, rules=DEFAULT_RULES)) + + +def _parse_full_marker(tokenizer: Tokenizer) -> MarkerList: + retval = _parse_marker(tokenizer) + tokenizer.expect("END", expected="end of marker expression") + return retval + + +def _parse_marker(tokenizer: Tokenizer) -> MarkerList: + """ + marker = marker_atom (BOOLOP marker_atom)+ + """ + expression = [_parse_marker_atom(tokenizer)] + while tokenizer.check("BOOLOP"): + token = tokenizer.read() + expr_right = _parse_marker_atom(tokenizer) + expression.extend((token.text, expr_right)) + return expression + + +def _parse_marker_atom(tokenizer: Tokenizer) -> MarkerAtom: + """ + marker_atom = WS? LEFT_PARENTHESIS WS? marker WS? RIGHT_PARENTHESIS WS? + | WS? marker_item WS? + """ + + tokenizer.consume("WS") + if tokenizer.check("LEFT_PARENTHESIS", peek=True): + with tokenizer.enclosing_tokens( + "LEFT_PARENTHESIS", + "RIGHT_PARENTHESIS", + around="marker expression", + ): + tokenizer.consume("WS") + marker: MarkerAtom = _parse_marker(tokenizer) + tokenizer.consume("WS") + else: + marker = _parse_marker_item(tokenizer) + tokenizer.consume("WS") + return marker + + +def _parse_marker_item(tokenizer: Tokenizer) -> MarkerItem: + """ + marker_item = WS? marker_var WS? marker_op WS? marker_var WS? + """ + tokenizer.consume("WS") + marker_var_left = _parse_marker_var(tokenizer) + tokenizer.consume("WS") + marker_op = _parse_marker_op(tokenizer) + tokenizer.consume("WS") + marker_var_right = _parse_marker_var(tokenizer) + tokenizer.consume("WS") + return (marker_var_left, marker_op, marker_var_right) + + +def _parse_marker_var(tokenizer: Tokenizer) -> MarkerVar: + """ + marker_var = VARIABLE | QUOTED_STRING + """ + if tokenizer.check("VARIABLE"): + return process_env_var(tokenizer.read().text.replace(".", "_")) + elif tokenizer.check("QUOTED_STRING"): + return process_python_str(tokenizer.read().text) + else: + tokenizer.raise_syntax_error( + message="Expected a marker variable or quoted string" + ) + + +def process_env_var(env_var: str) -> Variable: + if env_var in ("platform_python_implementation", "python_implementation"): + return Variable("platform_python_implementation") + else: + return Variable(env_var) + + +def process_python_str(python_str: str) -> Value: + value = ast.literal_eval(python_str) + return Value(str(value)) + + +def _parse_marker_op(tokenizer: Tokenizer) -> Op: + """ + marker_op = IN | NOT IN | OP + """ + if tokenizer.check("IN"): + tokenizer.read() + return Op("in") + elif tokenizer.check("NOT"): + tokenizer.read() + tokenizer.expect("WS", expected="whitespace after 'not'") + tokenizer.expect("IN", expected="'in' after 'not'") + return Op("not in") + elif tokenizer.check("OP"): + return Op(tokenizer.read().text) + else: + return tokenizer.raise_syntax_error( + "Expected marker operator, one of " + "<=, <, !=, ==, >=, >, ~=, ===, in, not in" + ) diff --git a/gestao_raul/Lib/site-packages/pip/_vendor/packaging/_tokenizer.py b/gestao_raul/Lib/site-packages/pip/_vendor/packaging/_tokenizer.py new file mode 100644 index 0000000..89d0416 --- /dev/null +++ b/gestao_raul/Lib/site-packages/pip/_vendor/packaging/_tokenizer.py @@ -0,0 +1,194 @@ +from __future__ import annotations + +import contextlib +import re +from dataclasses import dataclass +from typing import Iterator, NoReturn + +from .specifiers import Specifier + + +@dataclass +class Token: + name: str + text: str + position: int + + +class ParserSyntaxError(Exception): + """The provided source text could not be parsed correctly.""" + + def __init__( + self, + message: str, + *, + source: str, + span: tuple[int, int], + ) -> None: + self.span = span + self.message = message + self.source = source + + super().__init__() + + def __str__(self) -> str: + marker = " " * self.span[0] + "~" * (self.span[1] - self.span[0]) + "^" + return "\n ".join([self.message, self.source, marker]) + + +DEFAULT_RULES: dict[str, str | re.Pattern[str]] = { + "LEFT_PARENTHESIS": r"\(", + "RIGHT_PARENTHESIS": r"\)", + "LEFT_BRACKET": r"\[", + "RIGHT_BRACKET": r"\]", + "SEMICOLON": r";", + "COMMA": r",", + "QUOTED_STRING": re.compile( + r""" + ( + ('[^']*') + | + ("[^"]*") + ) + """, + re.VERBOSE, + ), + "OP": r"(===|==|~=|!=|<=|>=|<|>)", + "BOOLOP": r"\b(or|and)\b", + "IN": r"\bin\b", + "NOT": r"\bnot\b", + "VARIABLE": re.compile( + r""" + \b( + python_version + |python_full_version + |os[._]name + |sys[._]platform + |platform_(release|system) + |platform[._](version|machine|python_implementation) + |python_implementation + |implementation_(name|version) + |extra + )\b + """, + re.VERBOSE, + ), + "SPECIFIER": re.compile( + Specifier._operator_regex_str + Specifier._version_regex_str, + re.VERBOSE | re.IGNORECASE, + ), + "AT": r"\@", + "URL": r"[^ \t]+", + "IDENTIFIER": r"\b[a-zA-Z0-9][a-zA-Z0-9._-]*\b", + "VERSION_PREFIX_TRAIL": r"\.\*", + "VERSION_LOCAL_LABEL_TRAIL": r"\+[a-z0-9]+(?:[-_\.][a-z0-9]+)*", + "WS": r"[ \t]+", + "END": r"$", +} + + +class Tokenizer: + """Context-sensitive token parsing. + + Provides methods to examine the input stream to check whether the next token + matches. + """ + + def __init__( + self, + source: str, + *, + rules: dict[str, str | re.Pattern[str]], + ) -> None: + self.source = source + self.rules: dict[str, re.Pattern[str]] = { + name: re.compile(pattern) for name, pattern in rules.items() + } + self.next_token: Token | None = None + self.position = 0 + + def consume(self, name: str) -> None: + """Move beyond provided token name, if at current position.""" + if self.check(name): + self.read() + + def check(self, name: str, *, peek: bool = False) -> bool: + """Check whether the next token has the provided name. + + By default, if the check succeeds, the token *must* be read before + another check. If `peek` is set to `True`, the token is not loaded and + would need to be checked again. + """ + assert ( + self.next_token is None + ), f"Cannot check for {name!r}, already have {self.next_token!r}" + assert name in self.rules, f"Unknown token name: {name!r}" + + expression = self.rules[name] + + match = expression.match(self.source, self.position) + if match is None: + return False + if not peek: + self.next_token = Token(name, match[0], self.position) + return True + + def expect(self, name: str, *, expected: str) -> Token: + """Expect a certain token name next, failing with a syntax error otherwise. + + The token is *not* read. + """ + if not self.check(name): + raise self.raise_syntax_error(f"Expected {expected}") + return self.read() + + def read(self) -> Token: + """Consume the next token and return it.""" + token = self.next_token + assert token is not None + + self.position += len(token.text) + self.next_token = None + + return token + + def raise_syntax_error( + self, + message: str, + *, + span_start: int | None = None, + span_end: int | None = None, + ) -> NoReturn: + """Raise ParserSyntaxError at the given position.""" + span = ( + self.position if span_start is None else span_start, + self.position if span_end is None else span_end, + ) + raise ParserSyntaxError( + message, + source=self.source, + span=span, + ) + + @contextlib.contextmanager + def enclosing_tokens( + self, open_token: str, close_token: str, *, around: str + ) -> Iterator[None]: + if self.check(open_token): + open_position = self.position + self.read() + else: + open_position = None + + yield + + if open_position is None: + return + + if not self.check(close_token): + self.raise_syntax_error( + f"Expected matching {close_token} for {open_token}, after {around}", + span_start=open_position, + ) + + self.read() diff --git a/gestao_raul/Lib/site-packages/pip/_vendor/packaging/licenses/__init__.py b/gestao_raul/Lib/site-packages/pip/_vendor/packaging/licenses/__init__.py new file mode 100644 index 0000000..71a1a77 --- /dev/null +++ b/gestao_raul/Lib/site-packages/pip/_vendor/packaging/licenses/__init__.py @@ -0,0 +1,145 @@ +####################################################################################### +# +# Adapted from: +# https://github.com/pypa/hatch/blob/5352e44/backend/src/hatchling/licenses/parse.py +# +# MIT License +# +# Copyright (c) 2017-present Ofek Lev +# +# 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. +# +# +# With additional allowance of arbitrary `LicenseRef-` identifiers, not just +# `LicenseRef-Public-Domain` and `LicenseRef-Proprietary`. +# +####################################################################################### +from __future__ import annotations + +import re +from typing import NewType, cast + +from pip._vendor.packaging.licenses._spdx import EXCEPTIONS, LICENSES + +__all__ = [ + "NormalizedLicenseExpression", + "InvalidLicenseExpression", + "canonicalize_license_expression", +] + +license_ref_allowed = re.compile("^[A-Za-z0-9.-]*$") + +NormalizedLicenseExpression = NewType("NormalizedLicenseExpression", str) + + +class InvalidLicenseExpression(ValueError): + """Raised when a license-expression string is invalid + + >>> canonicalize_license_expression("invalid") + Traceback (most recent call last): + ... + packaging.licenses.InvalidLicenseExpression: Invalid license expression: 'invalid' + """ + + +def canonicalize_license_expression( + raw_license_expression: str, +) -> NormalizedLicenseExpression: + if not raw_license_expression: + message = f"Invalid license expression: {raw_license_expression!r}" + raise InvalidLicenseExpression(message) + + # Pad any parentheses so tokenization can be achieved by merely splitting on + # whitespace. + license_expression = raw_license_expression.replace("(", " ( ").replace(")", " ) ") + licenseref_prefix = "LicenseRef-" + license_refs = { + ref.lower(): "LicenseRef-" + ref[len(licenseref_prefix) :] + for ref in license_expression.split() + if ref.lower().startswith(licenseref_prefix.lower()) + } + + # Normalize to lower case so we can look up licenses/exceptions + # and so boolean operators are Python-compatible. + license_expression = license_expression.lower() + + tokens = license_expression.split() + + # Rather than implementing boolean logic, we create an expression that Python can + # parse. Everything that is not involved with the grammar itself is treated as + # `False` and the expression should evaluate as such. + python_tokens = [] + for token in tokens: + if token not in {"or", "and", "with", "(", ")"}: + python_tokens.append("False") + elif token == "with": + python_tokens.append("or") + elif token == "(" and python_tokens and python_tokens[-1] not in {"or", "and"}: + message = f"Invalid license expression: {raw_license_expression!r}" + raise InvalidLicenseExpression(message) + else: + python_tokens.append(token) + + python_expression = " ".join(python_tokens) + try: + invalid = eval(python_expression, globals(), locals()) + except Exception: + invalid = True + + if invalid is not False: + message = f"Invalid license expression: {raw_license_expression!r}" + raise InvalidLicenseExpression(message) from None + + # Take a final pass to check for unknown licenses/exceptions. + normalized_tokens = [] + for token in tokens: + if token in {"or", "and", "with", "(", ")"}: + normalized_tokens.append(token.upper()) + continue + + if normalized_tokens and normalized_tokens[-1] == "WITH": + if token not in EXCEPTIONS: + message = f"Unknown license exception: {token!r}" + raise InvalidLicenseExpression(message) + + normalized_tokens.append(EXCEPTIONS[token]["id"]) + else: + if token.endswith("+"): + final_token = token[:-1] + suffix = "+" + else: + final_token = token + suffix = "" + + if final_token.startswith("licenseref-"): + if not license_ref_allowed.match(final_token): + message = f"Invalid licenseref: {final_token!r}" + raise InvalidLicenseExpression(message) + normalized_tokens.append(license_refs[final_token] + suffix) + else: + if final_token not in LICENSES: + message = f"Unknown license: {final_token!r}" + raise InvalidLicenseExpression(message) + normalized_tokens.append(LICENSES[final_token]["id"] + suffix) + + normalized_expression = " ".join(normalized_tokens) + + return cast( + NormalizedLicenseExpression, + normalized_expression.replace("( ", "(").replace(" )", ")"), + ) diff --git a/gestao_raul/Lib/site-packages/pip/_vendor/packaging/licenses/__pycache__/__init__.cpython-310.pyc b/gestao_raul/Lib/site-packages/pip/_vendor/packaging/licenses/__pycache__/__init__.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..7448cb5e0631c4551a28dd38e3987335b670d1fa GIT binary patch literal 2616 zcmah~&2Jk;6rY*>@Oo`0&R3hzLRVEqV^Ew3E)Z2wp-oGr%Aho*bV*rlJrifide@yD zH;uKvG({AN8#fS=-CMSVhdFTJLjQnXBGK|@?ZlxJI+l0eynXM@?|saBaj9e@ zSdVJIG`wR7{h>BTmkyir2;n3Gf+C7T)Wj~viY6g(3B0vXYwE7vG+ZO&>!I1qxw)q0 zS{OADH6CF%&q&XvW*@r+rqdiN?h&_i8BvSoA0V1%V|$uAPRD79jy=%bG9}kgrTkPO zsbE>~qbL@>2;wNIRfx>h*v|THi%GriCjuDu>K7MQKU=@@Y3-V{u3ovYTD!J-t)j^j zwU{^kFz7IPHK?;FVXOCAoFxfZlCxK$yYTH5UryEiD2{@9rs;(PO^+R_cFJFU`O$*w zFLag`KCCX>dglz!0n)mHdvsygoL9js1Hq7sDT07uSIgYfxCQLavo$|R7J1i9O#>KeaZh|Ap z#@gD)s~0vJED?U}alajITn%n-B!OTH14mf0(F$6N-dz^am@giBw|L;)qUQxsAUvHq`#Y~F3#mb-q{*3R^Qf+pf3QkGsAOxZ7~Uobr6?&-oT8t| z&!me5O7R}P5Bnabglc^PZ=D)_(k0aV4t7$Ei4|g@7wLa>S0k5k! zP}fNHi|E!;*Gx^Czl-^DYV>q!_c2Cys=zC36Miw{6%Tm?csEl+{b^|q(J|1w`3h`c zDTVv1EYb0vks5v6&2?;Hra6(@L&Dlads^4Jfue$rM1FS{BlV-@u5}Ydcn75xooHkJ z@MYT+-6w!OpJ5k6?1=xE=GBQkyN|L{zfbf0Nt(|vP6Fm9sVNG8^;bHTnlHr>G({mb z!JFy118uWcq%(cYe}gz6TKa~}p{`A5x`hZ%0qR({klMWxJq|K|im~2!3UNz*r?aX3 zZ|kX++H)u^96zvbi!xw&M(187Ey_w-VHs&;G0Z~@i(*1drbWp38h2*@Z}6QAI23A9kcUud6suSrM?a7|3KQWopk9OSYJ~9)AN83@n6CG)4b=Fd|XxWh@p!@h;i8_Umn+u)kmvRPfFFT!ymka@m z%){TQRHg=fCC6DSgbpo@q!k8&!$3yT^jj@xR#N{u4kD>Dm{~H{2;4v;Qpc zfhIN~csk>e7Z&K)Sl5))7$&$(tW0Veq>9+YIst1$$$({S0cByZLtx=atUu2XRP-!> zd_qB*R1bCgDidndZMI=Rz^LP@=p^9`Vz=9Z5zApd43glUfhkoTPO0kQlp4)oFKN+x zS(3BNNtlz6P#B*%b(?~a@g-#|J6@eE?a%$N%~m;&c~)#0%F#?caw)BIgITVY#_YcVc7W56 literal 0 HcmV?d00001 diff --git a/gestao_raul/Lib/site-packages/pip/_vendor/packaging/licenses/__pycache__/_spdx.cpython-310.pyc b/gestao_raul/Lib/site-packages/pip/_vendor/packaging/licenses/__pycache__/_spdx.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..766572630d51879d526c8756f1dbdc2d1c3c6364 GIT binary patch literal 40976 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 literal 0 HcmV?d00001 diff --git a/gestao_raul/Lib/site-packages/pip/_vendor/packaging/licenses/_spdx.py b/gestao_raul/Lib/site-packages/pip/_vendor/packaging/licenses/_spdx.py new file mode 100644 index 0000000..eac2227 --- /dev/null +++ b/gestao_raul/Lib/site-packages/pip/_vendor/packaging/licenses/_spdx.py @@ -0,0 +1,759 @@ + +from __future__ import annotations + +from typing import TypedDict + +class SPDXLicense(TypedDict): + id: str + deprecated: bool + +class SPDXException(TypedDict): + id: str + deprecated: bool + + +VERSION = '3.25.0' + +LICENSES: dict[str, SPDXLicense] = { + '0bsd': {'id': '0BSD', 'deprecated': False}, + '3d-slicer-1.0': {'id': '3D-Slicer-1.0', 'deprecated': False}, + 'aal': {'id': 'AAL', 'deprecated': False}, + 'abstyles': {'id': 'Abstyles', 'deprecated': False}, + 'adacore-doc': {'id': 'AdaCore-doc', 'deprecated': False}, + 'adobe-2006': {'id': 'Adobe-2006', 'deprecated': False}, + 'adobe-display-postscript': {'id': 'Adobe-Display-PostScript', 'deprecated': False}, + 'adobe-glyph': {'id': 'Adobe-Glyph', 'deprecated': False}, + 'adobe-utopia': {'id': 'Adobe-Utopia', 'deprecated': False}, + 'adsl': {'id': 'ADSL', 'deprecated': False}, + 'afl-1.1': {'id': 'AFL-1.1', 'deprecated': False}, + 'afl-1.2': {'id': 'AFL-1.2', 'deprecated': False}, + 'afl-2.0': {'id': 'AFL-2.0', 'deprecated': False}, + 'afl-2.1': {'id': 'AFL-2.1', 'deprecated': False}, + 'afl-3.0': {'id': 'AFL-3.0', 'deprecated': False}, + 'afmparse': {'id': 'Afmparse', 'deprecated': False}, + 'agpl-1.0': {'id': 'AGPL-1.0', 'deprecated': True}, + 'agpl-1.0-only': {'id': 'AGPL-1.0-only', 'deprecated': False}, + 'agpl-1.0-or-later': {'id': 'AGPL-1.0-or-later', 'deprecated': False}, + 'agpl-3.0': {'id': 'AGPL-3.0', 'deprecated': True}, + 'agpl-3.0-only': {'id': 'AGPL-3.0-only', 'deprecated': False}, + 'agpl-3.0-or-later': {'id': 'AGPL-3.0-or-later', 'deprecated': False}, + 'aladdin': {'id': 'Aladdin', 'deprecated': False}, + 'amd-newlib': {'id': 'AMD-newlib', 'deprecated': False}, + 'amdplpa': {'id': 'AMDPLPA', 'deprecated': False}, + 'aml': {'id': 'AML', 'deprecated': False}, + 'aml-glslang': {'id': 'AML-glslang', 'deprecated': False}, + 'ampas': {'id': 'AMPAS', 'deprecated': False}, + 'antlr-pd': {'id': 'ANTLR-PD', 'deprecated': False}, + 'antlr-pd-fallback': {'id': 'ANTLR-PD-fallback', 'deprecated': False}, + 'any-osi': {'id': 'any-OSI', 'deprecated': False}, + 'apache-1.0': {'id': 'Apache-1.0', 'deprecated': False}, + 'apache-1.1': {'id': 'Apache-1.1', 'deprecated': False}, + 'apache-2.0': {'id': 'Apache-2.0', 'deprecated': False}, + 'apafml': {'id': 'APAFML', 'deprecated': False}, + 'apl-1.0': {'id': 'APL-1.0', 'deprecated': False}, + 'app-s2p': {'id': 'App-s2p', 'deprecated': False}, + 'apsl-1.0': {'id': 'APSL-1.0', 'deprecated': False}, + 'apsl-1.1': {'id': 'APSL-1.1', 'deprecated': False}, + 'apsl-1.2': {'id': 'APSL-1.2', 'deprecated': False}, + 'apsl-2.0': {'id': 'APSL-2.0', 'deprecated': False}, + 'arphic-1999': {'id': 'Arphic-1999', 'deprecated': False}, + 'artistic-1.0': {'id': 'Artistic-1.0', 'deprecated': False}, + 'artistic-1.0-cl8': {'id': 'Artistic-1.0-cl8', 'deprecated': False}, + 'artistic-1.0-perl': {'id': 'Artistic-1.0-Perl', 'deprecated': False}, + 'artistic-2.0': {'id': 'Artistic-2.0', 'deprecated': False}, + 'aswf-digital-assets-1.0': {'id': 'ASWF-Digital-Assets-1.0', 'deprecated': False}, + 'aswf-digital-assets-1.1': {'id': 'ASWF-Digital-Assets-1.1', 'deprecated': False}, + 'baekmuk': {'id': 'Baekmuk', 'deprecated': False}, + 'bahyph': {'id': 'Bahyph', 'deprecated': False}, + 'barr': {'id': 'Barr', 'deprecated': False}, + 'bcrypt-solar-designer': {'id': 'bcrypt-Solar-Designer', 'deprecated': False}, + 'beerware': {'id': 'Beerware', 'deprecated': False}, + 'bitstream-charter': {'id': 'Bitstream-Charter', 'deprecated': False}, + 'bitstream-vera': {'id': 'Bitstream-Vera', 'deprecated': False}, + 'bittorrent-1.0': {'id': 'BitTorrent-1.0', 'deprecated': False}, + 'bittorrent-1.1': {'id': 'BitTorrent-1.1', 'deprecated': False}, + 'blessing': {'id': 'blessing', 'deprecated': False}, + 'blueoak-1.0.0': {'id': 'BlueOak-1.0.0', 'deprecated': False}, + 'boehm-gc': {'id': 'Boehm-GC', 'deprecated': False}, + 'borceux': {'id': 'Borceux', 'deprecated': False}, + 'brian-gladman-2-clause': {'id': 'Brian-Gladman-2-Clause', 'deprecated': False}, + 'brian-gladman-3-clause': {'id': 'Brian-Gladman-3-Clause', 'deprecated': False}, + 'bsd-1-clause': {'id': 'BSD-1-Clause', 'deprecated': False}, + 'bsd-2-clause': {'id': 'BSD-2-Clause', 'deprecated': False}, + 'bsd-2-clause-darwin': {'id': 'BSD-2-Clause-Darwin', 'deprecated': False}, + 'bsd-2-clause-first-lines': {'id': 'BSD-2-Clause-first-lines', 'deprecated': False}, + 'bsd-2-clause-freebsd': {'id': 'BSD-2-Clause-FreeBSD', 'deprecated': True}, + 'bsd-2-clause-netbsd': {'id': 'BSD-2-Clause-NetBSD', 'deprecated': True}, + 'bsd-2-clause-patent': {'id': 'BSD-2-Clause-Patent', 'deprecated': False}, + 'bsd-2-clause-views': {'id': 'BSD-2-Clause-Views', 'deprecated': False}, + 'bsd-3-clause': {'id': 'BSD-3-Clause', 'deprecated': False}, + 'bsd-3-clause-acpica': {'id': 'BSD-3-Clause-acpica', 'deprecated': False}, + 'bsd-3-clause-attribution': {'id': 'BSD-3-Clause-Attribution', 'deprecated': False}, + 'bsd-3-clause-clear': {'id': 'BSD-3-Clause-Clear', 'deprecated': False}, + 'bsd-3-clause-flex': {'id': 'BSD-3-Clause-flex', 'deprecated': False}, + 'bsd-3-clause-hp': {'id': 'BSD-3-Clause-HP', 'deprecated': False}, + 'bsd-3-clause-lbnl': {'id': 'BSD-3-Clause-LBNL', 'deprecated': False}, + 'bsd-3-clause-modification': {'id': 'BSD-3-Clause-Modification', 'deprecated': False}, + 'bsd-3-clause-no-military-license': {'id': 'BSD-3-Clause-No-Military-License', 'deprecated': False}, + 'bsd-3-clause-no-nuclear-license': {'id': 'BSD-3-Clause-No-Nuclear-License', 'deprecated': False}, + 'bsd-3-clause-no-nuclear-license-2014': {'id': 'BSD-3-Clause-No-Nuclear-License-2014', 'deprecated': False}, + 'bsd-3-clause-no-nuclear-warranty': {'id': 'BSD-3-Clause-No-Nuclear-Warranty', 'deprecated': False}, + 'bsd-3-clause-open-mpi': {'id': 'BSD-3-Clause-Open-MPI', 'deprecated': False}, + 'bsd-3-clause-sun': {'id': 'BSD-3-Clause-Sun', 'deprecated': False}, + 'bsd-4-clause': {'id': 'BSD-4-Clause', 'deprecated': False}, + 'bsd-4-clause-shortened': {'id': 'BSD-4-Clause-Shortened', 'deprecated': False}, + 'bsd-4-clause-uc': {'id': 'BSD-4-Clause-UC', 'deprecated': False}, + 'bsd-4.3reno': {'id': 'BSD-4.3RENO', 'deprecated': False}, + 'bsd-4.3tahoe': {'id': 'BSD-4.3TAHOE', 'deprecated': False}, + 'bsd-advertising-acknowledgement': {'id': 'BSD-Advertising-Acknowledgement', 'deprecated': False}, + 'bsd-attribution-hpnd-disclaimer': {'id': 'BSD-Attribution-HPND-disclaimer', 'deprecated': False}, + 'bsd-inferno-nettverk': {'id': 'BSD-Inferno-Nettverk', 'deprecated': False}, + 'bsd-protection': {'id': 'BSD-Protection', 'deprecated': False}, + 'bsd-source-beginning-file': {'id': 'BSD-Source-beginning-file', 'deprecated': False}, + 'bsd-source-code': {'id': 'BSD-Source-Code', 'deprecated': False}, + 'bsd-systemics': {'id': 'BSD-Systemics', 'deprecated': False}, + 'bsd-systemics-w3works': {'id': 'BSD-Systemics-W3Works', 'deprecated': False}, + 'bsl-1.0': {'id': 'BSL-1.0', 'deprecated': False}, + 'busl-1.1': {'id': 'BUSL-1.1', 'deprecated': False}, + 'bzip2-1.0.5': {'id': 'bzip2-1.0.5', 'deprecated': True}, + 'bzip2-1.0.6': {'id': 'bzip2-1.0.6', 'deprecated': False}, + 'c-uda-1.0': {'id': 'C-UDA-1.0', 'deprecated': False}, + 'cal-1.0': {'id': 'CAL-1.0', 'deprecated': False}, + 'cal-1.0-combined-work-exception': {'id': 'CAL-1.0-Combined-Work-Exception', 'deprecated': False}, + 'caldera': {'id': 'Caldera', 'deprecated': False}, + 'caldera-no-preamble': {'id': 'Caldera-no-preamble', 'deprecated': False}, + 'catharon': {'id': 'Catharon', 'deprecated': False}, + 'catosl-1.1': {'id': 'CATOSL-1.1', 'deprecated': False}, + 'cc-by-1.0': {'id': 'CC-BY-1.0', 'deprecated': False}, + 'cc-by-2.0': {'id': 'CC-BY-2.0', 'deprecated': False}, + 'cc-by-2.5': {'id': 'CC-BY-2.5', 'deprecated': False}, + 'cc-by-2.5-au': {'id': 'CC-BY-2.5-AU', 'deprecated': False}, + 'cc-by-3.0': {'id': 'CC-BY-3.0', 'deprecated': False}, + 'cc-by-3.0-at': {'id': 'CC-BY-3.0-AT', 'deprecated': False}, + 'cc-by-3.0-au': {'id': 'CC-BY-3.0-AU', 'deprecated': False}, + 'cc-by-3.0-de': {'id': 'CC-BY-3.0-DE', 'deprecated': False}, + 'cc-by-3.0-igo': {'id': 'CC-BY-3.0-IGO', 'deprecated': False}, + 'cc-by-3.0-nl': {'id': 'CC-BY-3.0-NL', 'deprecated': False}, + 'cc-by-3.0-us': {'id': 'CC-BY-3.0-US', 'deprecated': False}, + 'cc-by-4.0': {'id': 'CC-BY-4.0', 'deprecated': False}, + 'cc-by-nc-1.0': {'id': 'CC-BY-NC-1.0', 'deprecated': False}, + 'cc-by-nc-2.0': {'id': 'CC-BY-NC-2.0', 'deprecated': False}, + 'cc-by-nc-2.5': {'id': 'CC-BY-NC-2.5', 'deprecated': False}, + 'cc-by-nc-3.0': {'id': 'CC-BY-NC-3.0', 'deprecated': False}, + 'cc-by-nc-3.0-de': {'id': 'CC-BY-NC-3.0-DE', 'deprecated': False}, + 'cc-by-nc-4.0': {'id': 'CC-BY-NC-4.0', 'deprecated': False}, + 'cc-by-nc-nd-1.0': {'id': 'CC-BY-NC-ND-1.0', 'deprecated': False}, + 'cc-by-nc-nd-2.0': {'id': 'CC-BY-NC-ND-2.0', 'deprecated': False}, + 'cc-by-nc-nd-2.5': {'id': 'CC-BY-NC-ND-2.5', 'deprecated': False}, + 'cc-by-nc-nd-3.0': {'id': 'CC-BY-NC-ND-3.0', 'deprecated': False}, + 'cc-by-nc-nd-3.0-de': {'id': 'CC-BY-NC-ND-3.0-DE', 'deprecated': False}, + 'cc-by-nc-nd-3.0-igo': {'id': 'CC-BY-NC-ND-3.0-IGO', 'deprecated': False}, + 'cc-by-nc-nd-4.0': {'id': 'CC-BY-NC-ND-4.0', 'deprecated': False}, + 'cc-by-nc-sa-1.0': {'id': 'CC-BY-NC-SA-1.0', 'deprecated': False}, + 'cc-by-nc-sa-2.0': {'id': 'CC-BY-NC-SA-2.0', 'deprecated': False}, + 'cc-by-nc-sa-2.0-de': {'id': 'CC-BY-NC-SA-2.0-DE', 'deprecated': False}, + 'cc-by-nc-sa-2.0-fr': {'id': 'CC-BY-NC-SA-2.0-FR', 'deprecated': False}, + 'cc-by-nc-sa-2.0-uk': {'id': 'CC-BY-NC-SA-2.0-UK', 'deprecated': False}, + 'cc-by-nc-sa-2.5': {'id': 'CC-BY-NC-SA-2.5', 'deprecated': False}, + 'cc-by-nc-sa-3.0': {'id': 'CC-BY-NC-SA-3.0', 'deprecated': False}, + 'cc-by-nc-sa-3.0-de': {'id': 'CC-BY-NC-SA-3.0-DE', 'deprecated': False}, + 'cc-by-nc-sa-3.0-igo': {'id': 'CC-BY-NC-SA-3.0-IGO', 'deprecated': False}, + 'cc-by-nc-sa-4.0': {'id': 'CC-BY-NC-SA-4.0', 'deprecated': False}, + 'cc-by-nd-1.0': {'id': 'CC-BY-ND-1.0', 'deprecated': False}, + 'cc-by-nd-2.0': {'id': 'CC-BY-ND-2.0', 'deprecated': False}, + 'cc-by-nd-2.5': {'id': 'CC-BY-ND-2.5', 'deprecated': False}, + 'cc-by-nd-3.0': {'id': 'CC-BY-ND-3.0', 'deprecated': False}, + 'cc-by-nd-3.0-de': {'id': 'CC-BY-ND-3.0-DE', 'deprecated': False}, + 'cc-by-nd-4.0': {'id': 'CC-BY-ND-4.0', 'deprecated': False}, + 'cc-by-sa-1.0': {'id': 'CC-BY-SA-1.0', 'deprecated': False}, + 'cc-by-sa-2.0': {'id': 'CC-BY-SA-2.0', 'deprecated': False}, + 'cc-by-sa-2.0-uk': {'id': 'CC-BY-SA-2.0-UK', 'deprecated': False}, + 'cc-by-sa-2.1-jp': {'id': 'CC-BY-SA-2.1-JP', 'deprecated': False}, + 'cc-by-sa-2.5': {'id': 'CC-BY-SA-2.5', 'deprecated': False}, + 'cc-by-sa-3.0': {'id': 'CC-BY-SA-3.0', 'deprecated': False}, + 'cc-by-sa-3.0-at': {'id': 'CC-BY-SA-3.0-AT', 'deprecated': False}, + 'cc-by-sa-3.0-de': {'id': 'CC-BY-SA-3.0-DE', 'deprecated': False}, + 'cc-by-sa-3.0-igo': {'id': 'CC-BY-SA-3.0-IGO', 'deprecated': False}, + 'cc-by-sa-4.0': {'id': 'CC-BY-SA-4.0', 'deprecated': False}, + 'cc-pddc': {'id': 'CC-PDDC', 'deprecated': False}, + 'cc0-1.0': {'id': 'CC0-1.0', 'deprecated': False}, + 'cddl-1.0': {'id': 'CDDL-1.0', 'deprecated': False}, + 'cddl-1.1': {'id': 'CDDL-1.1', 'deprecated': False}, + 'cdl-1.0': {'id': 'CDL-1.0', 'deprecated': False}, + 'cdla-permissive-1.0': {'id': 'CDLA-Permissive-1.0', 'deprecated': False}, + 'cdla-permissive-2.0': {'id': 'CDLA-Permissive-2.0', 'deprecated': False}, + 'cdla-sharing-1.0': {'id': 'CDLA-Sharing-1.0', 'deprecated': False}, + 'cecill-1.0': {'id': 'CECILL-1.0', 'deprecated': False}, + 'cecill-1.1': {'id': 'CECILL-1.1', 'deprecated': False}, + 'cecill-2.0': {'id': 'CECILL-2.0', 'deprecated': False}, + 'cecill-2.1': {'id': 'CECILL-2.1', 'deprecated': False}, + 'cecill-b': {'id': 'CECILL-B', 'deprecated': False}, + 'cecill-c': {'id': 'CECILL-C', 'deprecated': False}, + 'cern-ohl-1.1': {'id': 'CERN-OHL-1.1', 'deprecated': False}, + 'cern-ohl-1.2': {'id': 'CERN-OHL-1.2', 'deprecated': False}, + 'cern-ohl-p-2.0': {'id': 'CERN-OHL-P-2.0', 'deprecated': False}, + 'cern-ohl-s-2.0': {'id': 'CERN-OHL-S-2.0', 'deprecated': False}, + 'cern-ohl-w-2.0': {'id': 'CERN-OHL-W-2.0', 'deprecated': False}, + 'cfitsio': {'id': 'CFITSIO', 'deprecated': False}, + 'check-cvs': {'id': 'check-cvs', 'deprecated': False}, + 'checkmk': {'id': 'checkmk', 'deprecated': False}, + 'clartistic': {'id': 'ClArtistic', 'deprecated': False}, + 'clips': {'id': 'Clips', 'deprecated': False}, + 'cmu-mach': {'id': 'CMU-Mach', 'deprecated': False}, + 'cmu-mach-nodoc': {'id': 'CMU-Mach-nodoc', 'deprecated': False}, + 'cnri-jython': {'id': 'CNRI-Jython', 'deprecated': False}, + 'cnri-python': {'id': 'CNRI-Python', 'deprecated': False}, + 'cnri-python-gpl-compatible': {'id': 'CNRI-Python-GPL-Compatible', 'deprecated': False}, + 'coil-1.0': {'id': 'COIL-1.0', 'deprecated': False}, + 'community-spec-1.0': {'id': 'Community-Spec-1.0', 'deprecated': False}, + 'condor-1.1': {'id': 'Condor-1.1', 'deprecated': False}, + 'copyleft-next-0.3.0': {'id': 'copyleft-next-0.3.0', 'deprecated': False}, + 'copyleft-next-0.3.1': {'id': 'copyleft-next-0.3.1', 'deprecated': False}, + 'cornell-lossless-jpeg': {'id': 'Cornell-Lossless-JPEG', 'deprecated': False}, + 'cpal-1.0': {'id': 'CPAL-1.0', 'deprecated': False}, + 'cpl-1.0': {'id': 'CPL-1.0', 'deprecated': False}, + 'cpol-1.02': {'id': 'CPOL-1.02', 'deprecated': False}, + 'cronyx': {'id': 'Cronyx', 'deprecated': False}, + 'crossword': {'id': 'Crossword', 'deprecated': False}, + 'crystalstacker': {'id': 'CrystalStacker', 'deprecated': False}, + 'cua-opl-1.0': {'id': 'CUA-OPL-1.0', 'deprecated': False}, + 'cube': {'id': 'Cube', 'deprecated': False}, + 'curl': {'id': 'curl', 'deprecated': False}, + 'cve-tou': {'id': 'cve-tou', 'deprecated': False}, + 'd-fsl-1.0': {'id': 'D-FSL-1.0', 'deprecated': False}, + 'dec-3-clause': {'id': 'DEC-3-Clause', 'deprecated': False}, + 'diffmark': {'id': 'diffmark', 'deprecated': False}, + 'dl-de-by-2.0': {'id': 'DL-DE-BY-2.0', 'deprecated': False}, + 'dl-de-zero-2.0': {'id': 'DL-DE-ZERO-2.0', 'deprecated': False}, + 'doc': {'id': 'DOC', 'deprecated': False}, + 'docbook-schema': {'id': 'DocBook-Schema', 'deprecated': False}, + 'docbook-xml': {'id': 'DocBook-XML', 'deprecated': False}, + 'dotseqn': {'id': 'Dotseqn', 'deprecated': False}, + 'drl-1.0': {'id': 'DRL-1.0', 'deprecated': False}, + 'drl-1.1': {'id': 'DRL-1.1', 'deprecated': False}, + 'dsdp': {'id': 'DSDP', 'deprecated': False}, + 'dtoa': {'id': 'dtoa', 'deprecated': False}, + 'dvipdfm': {'id': 'dvipdfm', 'deprecated': False}, + 'ecl-1.0': {'id': 'ECL-1.0', 'deprecated': False}, + 'ecl-2.0': {'id': 'ECL-2.0', 'deprecated': False}, + 'ecos-2.0': {'id': 'eCos-2.0', 'deprecated': True}, + 'efl-1.0': {'id': 'EFL-1.0', 'deprecated': False}, + 'efl-2.0': {'id': 'EFL-2.0', 'deprecated': False}, + 'egenix': {'id': 'eGenix', 'deprecated': False}, + 'elastic-2.0': {'id': 'Elastic-2.0', 'deprecated': False}, + 'entessa': {'id': 'Entessa', 'deprecated': False}, + 'epics': {'id': 'EPICS', 'deprecated': False}, + 'epl-1.0': {'id': 'EPL-1.0', 'deprecated': False}, + 'epl-2.0': {'id': 'EPL-2.0', 'deprecated': False}, + 'erlpl-1.1': {'id': 'ErlPL-1.1', 'deprecated': False}, + 'etalab-2.0': {'id': 'etalab-2.0', 'deprecated': False}, + 'eudatagrid': {'id': 'EUDatagrid', 'deprecated': False}, + 'eupl-1.0': {'id': 'EUPL-1.0', 'deprecated': False}, + 'eupl-1.1': {'id': 'EUPL-1.1', 'deprecated': False}, + 'eupl-1.2': {'id': 'EUPL-1.2', 'deprecated': False}, + 'eurosym': {'id': 'Eurosym', 'deprecated': False}, + 'fair': {'id': 'Fair', 'deprecated': False}, + 'fbm': {'id': 'FBM', 'deprecated': False}, + 'fdk-aac': {'id': 'FDK-AAC', 'deprecated': False}, + 'ferguson-twofish': {'id': 'Ferguson-Twofish', 'deprecated': False}, + 'frameworx-1.0': {'id': 'Frameworx-1.0', 'deprecated': False}, + 'freebsd-doc': {'id': 'FreeBSD-DOC', 'deprecated': False}, + 'freeimage': {'id': 'FreeImage', 'deprecated': False}, + 'fsfap': {'id': 'FSFAP', 'deprecated': False}, + 'fsfap-no-warranty-disclaimer': {'id': 'FSFAP-no-warranty-disclaimer', 'deprecated': False}, + 'fsful': {'id': 'FSFUL', 'deprecated': False}, + 'fsfullr': {'id': 'FSFULLR', 'deprecated': False}, + 'fsfullrwd': {'id': 'FSFULLRWD', 'deprecated': False}, + 'ftl': {'id': 'FTL', 'deprecated': False}, + 'furuseth': {'id': 'Furuseth', 'deprecated': False}, + 'fwlw': {'id': 'fwlw', 'deprecated': False}, + 'gcr-docs': {'id': 'GCR-docs', 'deprecated': False}, + 'gd': {'id': 'GD', 'deprecated': False}, + 'gfdl-1.1': {'id': 'GFDL-1.1', 'deprecated': True}, + 'gfdl-1.1-invariants-only': {'id': 'GFDL-1.1-invariants-only', 'deprecated': False}, + 'gfdl-1.1-invariants-or-later': {'id': 'GFDL-1.1-invariants-or-later', 'deprecated': False}, + 'gfdl-1.1-no-invariants-only': {'id': 'GFDL-1.1-no-invariants-only', 'deprecated': False}, + 'gfdl-1.1-no-invariants-or-later': {'id': 'GFDL-1.1-no-invariants-or-later', 'deprecated': False}, + 'gfdl-1.1-only': {'id': 'GFDL-1.1-only', 'deprecated': False}, + 'gfdl-1.1-or-later': {'id': 'GFDL-1.1-or-later', 'deprecated': False}, + 'gfdl-1.2': {'id': 'GFDL-1.2', 'deprecated': True}, + 'gfdl-1.2-invariants-only': {'id': 'GFDL-1.2-invariants-only', 'deprecated': False}, + 'gfdl-1.2-invariants-or-later': {'id': 'GFDL-1.2-invariants-or-later', 'deprecated': False}, + 'gfdl-1.2-no-invariants-only': {'id': 'GFDL-1.2-no-invariants-only', 'deprecated': False}, + 'gfdl-1.2-no-invariants-or-later': {'id': 'GFDL-1.2-no-invariants-or-later', 'deprecated': False}, + 'gfdl-1.2-only': {'id': 'GFDL-1.2-only', 'deprecated': False}, + 'gfdl-1.2-or-later': {'id': 'GFDL-1.2-or-later', 'deprecated': False}, + 'gfdl-1.3': {'id': 'GFDL-1.3', 'deprecated': True}, + 'gfdl-1.3-invariants-only': {'id': 'GFDL-1.3-invariants-only', 'deprecated': False}, + 'gfdl-1.3-invariants-or-later': {'id': 'GFDL-1.3-invariants-or-later', 'deprecated': False}, + 'gfdl-1.3-no-invariants-only': {'id': 'GFDL-1.3-no-invariants-only', 'deprecated': False}, + 'gfdl-1.3-no-invariants-or-later': {'id': 'GFDL-1.3-no-invariants-or-later', 'deprecated': False}, + 'gfdl-1.3-only': {'id': 'GFDL-1.3-only', 'deprecated': False}, + 'gfdl-1.3-or-later': {'id': 'GFDL-1.3-or-later', 'deprecated': False}, + 'giftware': {'id': 'Giftware', 'deprecated': False}, + 'gl2ps': {'id': 'GL2PS', 'deprecated': False}, + 'glide': {'id': 'Glide', 'deprecated': False}, + 'glulxe': {'id': 'Glulxe', 'deprecated': False}, + 'glwtpl': {'id': 'GLWTPL', 'deprecated': False}, + 'gnuplot': {'id': 'gnuplot', 'deprecated': False}, + 'gpl-1.0': {'id': 'GPL-1.0', 'deprecated': True}, + 'gpl-1.0+': {'id': 'GPL-1.0+', 'deprecated': True}, + 'gpl-1.0-only': {'id': 'GPL-1.0-only', 'deprecated': False}, + 'gpl-1.0-or-later': {'id': 'GPL-1.0-or-later', 'deprecated': False}, + 'gpl-2.0': {'id': 'GPL-2.0', 'deprecated': True}, + 'gpl-2.0+': {'id': 'GPL-2.0+', 'deprecated': True}, + 'gpl-2.0-only': {'id': 'GPL-2.0-only', 'deprecated': False}, + 'gpl-2.0-or-later': {'id': 'GPL-2.0-or-later', 'deprecated': False}, + 'gpl-2.0-with-autoconf-exception': {'id': 'GPL-2.0-with-autoconf-exception', 'deprecated': True}, + 'gpl-2.0-with-bison-exception': {'id': 'GPL-2.0-with-bison-exception', 'deprecated': True}, + 'gpl-2.0-with-classpath-exception': {'id': 'GPL-2.0-with-classpath-exception', 'deprecated': True}, + 'gpl-2.0-with-font-exception': {'id': 'GPL-2.0-with-font-exception', 'deprecated': True}, + 'gpl-2.0-with-gcc-exception': {'id': 'GPL-2.0-with-GCC-exception', 'deprecated': True}, + 'gpl-3.0': {'id': 'GPL-3.0', 'deprecated': True}, + 'gpl-3.0+': {'id': 'GPL-3.0+', 'deprecated': True}, + 'gpl-3.0-only': {'id': 'GPL-3.0-only', 'deprecated': False}, + 'gpl-3.0-or-later': {'id': 'GPL-3.0-or-later', 'deprecated': False}, + 'gpl-3.0-with-autoconf-exception': {'id': 'GPL-3.0-with-autoconf-exception', 'deprecated': True}, + 'gpl-3.0-with-gcc-exception': {'id': 'GPL-3.0-with-GCC-exception', 'deprecated': True}, + 'graphics-gems': {'id': 'Graphics-Gems', 'deprecated': False}, + 'gsoap-1.3b': {'id': 'gSOAP-1.3b', 'deprecated': False}, + 'gtkbook': {'id': 'gtkbook', 'deprecated': False}, + 'gutmann': {'id': 'Gutmann', 'deprecated': False}, + 'haskellreport': {'id': 'HaskellReport', 'deprecated': False}, + 'hdparm': {'id': 'hdparm', 'deprecated': False}, + 'hidapi': {'id': 'HIDAPI', 'deprecated': False}, + 'hippocratic-2.1': {'id': 'Hippocratic-2.1', 'deprecated': False}, + 'hp-1986': {'id': 'HP-1986', 'deprecated': False}, + 'hp-1989': {'id': 'HP-1989', 'deprecated': False}, + 'hpnd': {'id': 'HPND', 'deprecated': False}, + 'hpnd-dec': {'id': 'HPND-DEC', 'deprecated': False}, + 'hpnd-doc': {'id': 'HPND-doc', 'deprecated': False}, + 'hpnd-doc-sell': {'id': 'HPND-doc-sell', 'deprecated': False}, + 'hpnd-export-us': {'id': 'HPND-export-US', 'deprecated': False}, + 'hpnd-export-us-acknowledgement': {'id': 'HPND-export-US-acknowledgement', 'deprecated': False}, + 'hpnd-export-us-modify': {'id': 'HPND-export-US-modify', 'deprecated': False}, + 'hpnd-export2-us': {'id': 'HPND-export2-US', 'deprecated': False}, + 'hpnd-fenneberg-livingston': {'id': 'HPND-Fenneberg-Livingston', 'deprecated': False}, + 'hpnd-inria-imag': {'id': 'HPND-INRIA-IMAG', 'deprecated': False}, + 'hpnd-intel': {'id': 'HPND-Intel', 'deprecated': False}, + 'hpnd-kevlin-henney': {'id': 'HPND-Kevlin-Henney', 'deprecated': False}, + 'hpnd-markus-kuhn': {'id': 'HPND-Markus-Kuhn', 'deprecated': False}, + 'hpnd-merchantability-variant': {'id': 'HPND-merchantability-variant', 'deprecated': False}, + 'hpnd-mit-disclaimer': {'id': 'HPND-MIT-disclaimer', 'deprecated': False}, + 'hpnd-netrek': {'id': 'HPND-Netrek', 'deprecated': False}, + 'hpnd-pbmplus': {'id': 'HPND-Pbmplus', 'deprecated': False}, + 'hpnd-sell-mit-disclaimer-xserver': {'id': 'HPND-sell-MIT-disclaimer-xserver', 'deprecated': False}, + 'hpnd-sell-regexpr': {'id': 'HPND-sell-regexpr', 'deprecated': False}, + 'hpnd-sell-variant': {'id': 'HPND-sell-variant', 'deprecated': False}, + 'hpnd-sell-variant-mit-disclaimer': {'id': 'HPND-sell-variant-MIT-disclaimer', 'deprecated': False}, + 'hpnd-sell-variant-mit-disclaimer-rev': {'id': 'HPND-sell-variant-MIT-disclaimer-rev', 'deprecated': False}, + 'hpnd-uc': {'id': 'HPND-UC', 'deprecated': False}, + 'hpnd-uc-export-us': {'id': 'HPND-UC-export-US', 'deprecated': False}, + 'htmltidy': {'id': 'HTMLTIDY', 'deprecated': False}, + 'ibm-pibs': {'id': 'IBM-pibs', 'deprecated': False}, + 'icu': {'id': 'ICU', 'deprecated': False}, + 'iec-code-components-eula': {'id': 'IEC-Code-Components-EULA', 'deprecated': False}, + 'ijg': {'id': 'IJG', 'deprecated': False}, + 'ijg-short': {'id': 'IJG-short', 'deprecated': False}, + 'imagemagick': {'id': 'ImageMagick', 'deprecated': False}, + 'imatix': {'id': 'iMatix', 'deprecated': False}, + 'imlib2': {'id': 'Imlib2', 'deprecated': False}, + 'info-zip': {'id': 'Info-ZIP', 'deprecated': False}, + 'inner-net-2.0': {'id': 'Inner-Net-2.0', 'deprecated': False}, + 'intel': {'id': 'Intel', 'deprecated': False}, + 'intel-acpi': {'id': 'Intel-ACPI', 'deprecated': False}, + 'interbase-1.0': {'id': 'Interbase-1.0', 'deprecated': False}, + 'ipa': {'id': 'IPA', 'deprecated': False}, + 'ipl-1.0': {'id': 'IPL-1.0', 'deprecated': False}, + 'isc': {'id': 'ISC', 'deprecated': False}, + 'isc-veillard': {'id': 'ISC-Veillard', 'deprecated': False}, + 'jam': {'id': 'Jam', 'deprecated': False}, + 'jasper-2.0': {'id': 'JasPer-2.0', 'deprecated': False}, + 'jpl-image': {'id': 'JPL-image', 'deprecated': False}, + 'jpnic': {'id': 'JPNIC', 'deprecated': False}, + 'json': {'id': 'JSON', 'deprecated': False}, + 'kastrup': {'id': 'Kastrup', 'deprecated': False}, + 'kazlib': {'id': 'Kazlib', 'deprecated': False}, + 'knuth-ctan': {'id': 'Knuth-CTAN', 'deprecated': False}, + 'lal-1.2': {'id': 'LAL-1.2', 'deprecated': False}, + 'lal-1.3': {'id': 'LAL-1.3', 'deprecated': False}, + 'latex2e': {'id': 'Latex2e', 'deprecated': False}, + 'latex2e-translated-notice': {'id': 'Latex2e-translated-notice', 'deprecated': False}, + 'leptonica': {'id': 'Leptonica', 'deprecated': False}, + 'lgpl-2.0': {'id': 'LGPL-2.0', 'deprecated': True}, + 'lgpl-2.0+': {'id': 'LGPL-2.0+', 'deprecated': True}, + 'lgpl-2.0-only': {'id': 'LGPL-2.0-only', 'deprecated': False}, + 'lgpl-2.0-or-later': {'id': 'LGPL-2.0-or-later', 'deprecated': False}, + 'lgpl-2.1': {'id': 'LGPL-2.1', 'deprecated': True}, + 'lgpl-2.1+': {'id': 'LGPL-2.1+', 'deprecated': True}, + 'lgpl-2.1-only': {'id': 'LGPL-2.1-only', 'deprecated': False}, + 'lgpl-2.1-or-later': {'id': 'LGPL-2.1-or-later', 'deprecated': False}, + 'lgpl-3.0': {'id': 'LGPL-3.0', 'deprecated': True}, + 'lgpl-3.0+': {'id': 'LGPL-3.0+', 'deprecated': True}, + 'lgpl-3.0-only': {'id': 'LGPL-3.0-only', 'deprecated': False}, + 'lgpl-3.0-or-later': {'id': 'LGPL-3.0-or-later', 'deprecated': False}, + 'lgpllr': {'id': 'LGPLLR', 'deprecated': False}, + 'libpng': {'id': 'Libpng', 'deprecated': False}, + 'libpng-2.0': {'id': 'libpng-2.0', 'deprecated': False}, + 'libselinux-1.0': {'id': 'libselinux-1.0', 'deprecated': False}, + 'libtiff': {'id': 'libtiff', 'deprecated': False}, + 'libutil-david-nugent': {'id': 'libutil-David-Nugent', 'deprecated': False}, + 'liliq-p-1.1': {'id': 'LiLiQ-P-1.1', 'deprecated': False}, + 'liliq-r-1.1': {'id': 'LiLiQ-R-1.1', 'deprecated': False}, + 'liliq-rplus-1.1': {'id': 'LiLiQ-Rplus-1.1', 'deprecated': False}, + 'linux-man-pages-1-para': {'id': 'Linux-man-pages-1-para', 'deprecated': False}, + 'linux-man-pages-copyleft': {'id': 'Linux-man-pages-copyleft', 'deprecated': False}, + 'linux-man-pages-copyleft-2-para': {'id': 'Linux-man-pages-copyleft-2-para', 'deprecated': False}, + 'linux-man-pages-copyleft-var': {'id': 'Linux-man-pages-copyleft-var', 'deprecated': False}, + 'linux-openib': {'id': 'Linux-OpenIB', 'deprecated': False}, + 'loop': {'id': 'LOOP', 'deprecated': False}, + 'lpd-document': {'id': 'LPD-document', 'deprecated': False}, + 'lpl-1.0': {'id': 'LPL-1.0', 'deprecated': False}, + 'lpl-1.02': {'id': 'LPL-1.02', 'deprecated': False}, + 'lppl-1.0': {'id': 'LPPL-1.0', 'deprecated': False}, + 'lppl-1.1': {'id': 'LPPL-1.1', 'deprecated': False}, + 'lppl-1.2': {'id': 'LPPL-1.2', 'deprecated': False}, + 'lppl-1.3a': {'id': 'LPPL-1.3a', 'deprecated': False}, + 'lppl-1.3c': {'id': 'LPPL-1.3c', 'deprecated': False}, + 'lsof': {'id': 'lsof', 'deprecated': False}, + 'lucida-bitmap-fonts': {'id': 'Lucida-Bitmap-Fonts', 'deprecated': False}, + 'lzma-sdk-9.11-to-9.20': {'id': 'LZMA-SDK-9.11-to-9.20', 'deprecated': False}, + 'lzma-sdk-9.22': {'id': 'LZMA-SDK-9.22', 'deprecated': False}, + 'mackerras-3-clause': {'id': 'Mackerras-3-Clause', 'deprecated': False}, + 'mackerras-3-clause-acknowledgment': {'id': 'Mackerras-3-Clause-acknowledgment', 'deprecated': False}, + 'magaz': {'id': 'magaz', 'deprecated': False}, + 'mailprio': {'id': 'mailprio', 'deprecated': False}, + 'makeindex': {'id': 'MakeIndex', 'deprecated': False}, + 'martin-birgmeier': {'id': 'Martin-Birgmeier', 'deprecated': False}, + 'mcphee-slideshow': {'id': 'McPhee-slideshow', 'deprecated': False}, + 'metamail': {'id': 'metamail', 'deprecated': False}, + 'minpack': {'id': 'Minpack', 'deprecated': False}, + 'miros': {'id': 'MirOS', 'deprecated': False}, + 'mit': {'id': 'MIT', 'deprecated': False}, + 'mit-0': {'id': 'MIT-0', 'deprecated': False}, + 'mit-advertising': {'id': 'MIT-advertising', 'deprecated': False}, + 'mit-cmu': {'id': 'MIT-CMU', 'deprecated': False}, + 'mit-enna': {'id': 'MIT-enna', 'deprecated': False}, + 'mit-feh': {'id': 'MIT-feh', 'deprecated': False}, + 'mit-festival': {'id': 'MIT-Festival', 'deprecated': False}, + 'mit-khronos-old': {'id': 'MIT-Khronos-old', 'deprecated': False}, + 'mit-modern-variant': {'id': 'MIT-Modern-Variant', 'deprecated': False}, + 'mit-open-group': {'id': 'MIT-open-group', 'deprecated': False}, + 'mit-testregex': {'id': 'MIT-testregex', 'deprecated': False}, + 'mit-wu': {'id': 'MIT-Wu', 'deprecated': False}, + 'mitnfa': {'id': 'MITNFA', 'deprecated': False}, + 'mmixware': {'id': 'MMIXware', 'deprecated': False}, + 'motosoto': {'id': 'Motosoto', 'deprecated': False}, + 'mpeg-ssg': {'id': 'MPEG-SSG', 'deprecated': False}, + 'mpi-permissive': {'id': 'mpi-permissive', 'deprecated': False}, + 'mpich2': {'id': 'mpich2', 'deprecated': False}, + 'mpl-1.0': {'id': 'MPL-1.0', 'deprecated': False}, + 'mpl-1.1': {'id': 'MPL-1.1', 'deprecated': False}, + 'mpl-2.0': {'id': 'MPL-2.0', 'deprecated': False}, + 'mpl-2.0-no-copyleft-exception': {'id': 'MPL-2.0-no-copyleft-exception', 'deprecated': False}, + 'mplus': {'id': 'mplus', 'deprecated': False}, + 'ms-lpl': {'id': 'MS-LPL', 'deprecated': False}, + 'ms-pl': {'id': 'MS-PL', 'deprecated': False}, + 'ms-rl': {'id': 'MS-RL', 'deprecated': False}, + 'mtll': {'id': 'MTLL', 'deprecated': False}, + 'mulanpsl-1.0': {'id': 'MulanPSL-1.0', 'deprecated': False}, + 'mulanpsl-2.0': {'id': 'MulanPSL-2.0', 'deprecated': False}, + 'multics': {'id': 'Multics', 'deprecated': False}, + 'mup': {'id': 'Mup', 'deprecated': False}, + 'naist-2003': {'id': 'NAIST-2003', 'deprecated': False}, + 'nasa-1.3': {'id': 'NASA-1.3', 'deprecated': False}, + 'naumen': {'id': 'Naumen', 'deprecated': False}, + 'nbpl-1.0': {'id': 'NBPL-1.0', 'deprecated': False}, + 'ncbi-pd': {'id': 'NCBI-PD', 'deprecated': False}, + 'ncgl-uk-2.0': {'id': 'NCGL-UK-2.0', 'deprecated': False}, + 'ncl': {'id': 'NCL', 'deprecated': False}, + 'ncsa': {'id': 'NCSA', 'deprecated': False}, + 'net-snmp': {'id': 'Net-SNMP', 'deprecated': True}, + 'netcdf': {'id': 'NetCDF', 'deprecated': False}, + 'newsletr': {'id': 'Newsletr', 'deprecated': False}, + 'ngpl': {'id': 'NGPL', 'deprecated': False}, + 'nicta-1.0': {'id': 'NICTA-1.0', 'deprecated': False}, + 'nist-pd': {'id': 'NIST-PD', 'deprecated': False}, + 'nist-pd-fallback': {'id': 'NIST-PD-fallback', 'deprecated': False}, + 'nist-software': {'id': 'NIST-Software', 'deprecated': False}, + 'nlod-1.0': {'id': 'NLOD-1.0', 'deprecated': False}, + 'nlod-2.0': {'id': 'NLOD-2.0', 'deprecated': False}, + 'nlpl': {'id': 'NLPL', 'deprecated': False}, + 'nokia': {'id': 'Nokia', 'deprecated': False}, + 'nosl': {'id': 'NOSL', 'deprecated': False}, + 'noweb': {'id': 'Noweb', 'deprecated': False}, + 'npl-1.0': {'id': 'NPL-1.0', 'deprecated': False}, + 'npl-1.1': {'id': 'NPL-1.1', 'deprecated': False}, + 'nposl-3.0': {'id': 'NPOSL-3.0', 'deprecated': False}, + 'nrl': {'id': 'NRL', 'deprecated': False}, + 'ntp': {'id': 'NTP', 'deprecated': False}, + 'ntp-0': {'id': 'NTP-0', 'deprecated': False}, + 'nunit': {'id': 'Nunit', 'deprecated': True}, + 'o-uda-1.0': {'id': 'O-UDA-1.0', 'deprecated': False}, + 'oar': {'id': 'OAR', 'deprecated': False}, + 'occt-pl': {'id': 'OCCT-PL', 'deprecated': False}, + 'oclc-2.0': {'id': 'OCLC-2.0', 'deprecated': False}, + 'odbl-1.0': {'id': 'ODbL-1.0', 'deprecated': False}, + 'odc-by-1.0': {'id': 'ODC-By-1.0', 'deprecated': False}, + 'offis': {'id': 'OFFIS', 'deprecated': False}, + 'ofl-1.0': {'id': 'OFL-1.0', 'deprecated': False}, + 'ofl-1.0-no-rfn': {'id': 'OFL-1.0-no-RFN', 'deprecated': False}, + 'ofl-1.0-rfn': {'id': 'OFL-1.0-RFN', 'deprecated': False}, + 'ofl-1.1': {'id': 'OFL-1.1', 'deprecated': False}, + 'ofl-1.1-no-rfn': {'id': 'OFL-1.1-no-RFN', 'deprecated': False}, + 'ofl-1.1-rfn': {'id': 'OFL-1.1-RFN', 'deprecated': False}, + 'ogc-1.0': {'id': 'OGC-1.0', 'deprecated': False}, + 'ogdl-taiwan-1.0': {'id': 'OGDL-Taiwan-1.0', 'deprecated': False}, + 'ogl-canada-2.0': {'id': 'OGL-Canada-2.0', 'deprecated': False}, + 'ogl-uk-1.0': {'id': 'OGL-UK-1.0', 'deprecated': False}, + 'ogl-uk-2.0': {'id': 'OGL-UK-2.0', 'deprecated': False}, + 'ogl-uk-3.0': {'id': 'OGL-UK-3.0', 'deprecated': False}, + 'ogtsl': {'id': 'OGTSL', 'deprecated': False}, + 'oldap-1.1': {'id': 'OLDAP-1.1', 'deprecated': False}, + 'oldap-1.2': {'id': 'OLDAP-1.2', 'deprecated': False}, + 'oldap-1.3': {'id': 'OLDAP-1.3', 'deprecated': False}, + 'oldap-1.4': {'id': 'OLDAP-1.4', 'deprecated': False}, + 'oldap-2.0': {'id': 'OLDAP-2.0', 'deprecated': False}, + 'oldap-2.0.1': {'id': 'OLDAP-2.0.1', 'deprecated': False}, + 'oldap-2.1': {'id': 'OLDAP-2.1', 'deprecated': False}, + 'oldap-2.2': {'id': 'OLDAP-2.2', 'deprecated': False}, + 'oldap-2.2.1': {'id': 'OLDAP-2.2.1', 'deprecated': False}, + 'oldap-2.2.2': {'id': 'OLDAP-2.2.2', 'deprecated': False}, + 'oldap-2.3': {'id': 'OLDAP-2.3', 'deprecated': False}, + 'oldap-2.4': {'id': 'OLDAP-2.4', 'deprecated': False}, + 'oldap-2.5': {'id': 'OLDAP-2.5', 'deprecated': False}, + 'oldap-2.6': {'id': 'OLDAP-2.6', 'deprecated': False}, + 'oldap-2.7': {'id': 'OLDAP-2.7', 'deprecated': False}, + 'oldap-2.8': {'id': 'OLDAP-2.8', 'deprecated': False}, + 'olfl-1.3': {'id': 'OLFL-1.3', 'deprecated': False}, + 'oml': {'id': 'OML', 'deprecated': False}, + 'openpbs-2.3': {'id': 'OpenPBS-2.3', 'deprecated': False}, + 'openssl': {'id': 'OpenSSL', 'deprecated': False}, + 'openssl-standalone': {'id': 'OpenSSL-standalone', 'deprecated': False}, + 'openvision': {'id': 'OpenVision', 'deprecated': False}, + 'opl-1.0': {'id': 'OPL-1.0', 'deprecated': False}, + 'opl-uk-3.0': {'id': 'OPL-UK-3.0', 'deprecated': False}, + 'opubl-1.0': {'id': 'OPUBL-1.0', 'deprecated': False}, + 'oset-pl-2.1': {'id': 'OSET-PL-2.1', 'deprecated': False}, + 'osl-1.0': {'id': 'OSL-1.0', 'deprecated': False}, + 'osl-1.1': {'id': 'OSL-1.1', 'deprecated': False}, + 'osl-2.0': {'id': 'OSL-2.0', 'deprecated': False}, + 'osl-2.1': {'id': 'OSL-2.1', 'deprecated': False}, + 'osl-3.0': {'id': 'OSL-3.0', 'deprecated': False}, + 'padl': {'id': 'PADL', 'deprecated': False}, + 'parity-6.0.0': {'id': 'Parity-6.0.0', 'deprecated': False}, + 'parity-7.0.0': {'id': 'Parity-7.0.0', 'deprecated': False}, + 'pddl-1.0': {'id': 'PDDL-1.0', 'deprecated': False}, + 'php-3.0': {'id': 'PHP-3.0', 'deprecated': False}, + 'php-3.01': {'id': 'PHP-3.01', 'deprecated': False}, + 'pixar': {'id': 'Pixar', 'deprecated': False}, + 'pkgconf': {'id': 'pkgconf', 'deprecated': False}, + 'plexus': {'id': 'Plexus', 'deprecated': False}, + 'pnmstitch': {'id': 'pnmstitch', 'deprecated': False}, + 'polyform-noncommercial-1.0.0': {'id': 'PolyForm-Noncommercial-1.0.0', 'deprecated': False}, + 'polyform-small-business-1.0.0': {'id': 'PolyForm-Small-Business-1.0.0', 'deprecated': False}, + 'postgresql': {'id': 'PostgreSQL', 'deprecated': False}, + 'ppl': {'id': 'PPL', 'deprecated': False}, + 'psf-2.0': {'id': 'PSF-2.0', 'deprecated': False}, + 'psfrag': {'id': 'psfrag', 'deprecated': False}, + 'psutils': {'id': 'psutils', 'deprecated': False}, + 'python-2.0': {'id': 'Python-2.0', 'deprecated': False}, + 'python-2.0.1': {'id': 'Python-2.0.1', 'deprecated': False}, + 'python-ldap': {'id': 'python-ldap', 'deprecated': False}, + 'qhull': {'id': 'Qhull', 'deprecated': False}, + 'qpl-1.0': {'id': 'QPL-1.0', 'deprecated': False}, + 'qpl-1.0-inria-2004': {'id': 'QPL-1.0-INRIA-2004', 'deprecated': False}, + 'radvd': {'id': 'radvd', 'deprecated': False}, + 'rdisc': {'id': 'Rdisc', 'deprecated': False}, + 'rhecos-1.1': {'id': 'RHeCos-1.1', 'deprecated': False}, + 'rpl-1.1': {'id': 'RPL-1.1', 'deprecated': False}, + 'rpl-1.5': {'id': 'RPL-1.5', 'deprecated': False}, + 'rpsl-1.0': {'id': 'RPSL-1.0', 'deprecated': False}, + 'rsa-md': {'id': 'RSA-MD', 'deprecated': False}, + 'rscpl': {'id': 'RSCPL', 'deprecated': False}, + 'ruby': {'id': 'Ruby', 'deprecated': False}, + 'ruby-pty': {'id': 'Ruby-pty', 'deprecated': False}, + 'sax-pd': {'id': 'SAX-PD', 'deprecated': False}, + 'sax-pd-2.0': {'id': 'SAX-PD-2.0', 'deprecated': False}, + 'saxpath': {'id': 'Saxpath', 'deprecated': False}, + 'scea': {'id': 'SCEA', 'deprecated': False}, + 'schemereport': {'id': 'SchemeReport', 'deprecated': False}, + 'sendmail': {'id': 'Sendmail', 'deprecated': False}, + 'sendmail-8.23': {'id': 'Sendmail-8.23', 'deprecated': False}, + 'sgi-b-1.0': {'id': 'SGI-B-1.0', 'deprecated': False}, + 'sgi-b-1.1': {'id': 'SGI-B-1.1', 'deprecated': False}, + 'sgi-b-2.0': {'id': 'SGI-B-2.0', 'deprecated': False}, + 'sgi-opengl': {'id': 'SGI-OpenGL', 'deprecated': False}, + 'sgp4': {'id': 'SGP4', 'deprecated': False}, + 'shl-0.5': {'id': 'SHL-0.5', 'deprecated': False}, + 'shl-0.51': {'id': 'SHL-0.51', 'deprecated': False}, + 'simpl-2.0': {'id': 'SimPL-2.0', 'deprecated': False}, + 'sissl': {'id': 'SISSL', 'deprecated': False}, + 'sissl-1.2': {'id': 'SISSL-1.2', 'deprecated': False}, + 'sl': {'id': 'SL', 'deprecated': False}, + 'sleepycat': {'id': 'Sleepycat', 'deprecated': False}, + 'smlnj': {'id': 'SMLNJ', 'deprecated': False}, + 'smppl': {'id': 'SMPPL', 'deprecated': False}, + 'snia': {'id': 'SNIA', 'deprecated': False}, + 'snprintf': {'id': 'snprintf', 'deprecated': False}, + 'softsurfer': {'id': 'softSurfer', 'deprecated': False}, + 'soundex': {'id': 'Soundex', 'deprecated': False}, + 'spencer-86': {'id': 'Spencer-86', 'deprecated': False}, + 'spencer-94': {'id': 'Spencer-94', 'deprecated': False}, + 'spencer-99': {'id': 'Spencer-99', 'deprecated': False}, + 'spl-1.0': {'id': 'SPL-1.0', 'deprecated': False}, + 'ssh-keyscan': {'id': 'ssh-keyscan', 'deprecated': False}, + 'ssh-openssh': {'id': 'SSH-OpenSSH', 'deprecated': False}, + 'ssh-short': {'id': 'SSH-short', 'deprecated': False}, + 'ssleay-standalone': {'id': 'SSLeay-standalone', 'deprecated': False}, + 'sspl-1.0': {'id': 'SSPL-1.0', 'deprecated': False}, + 'standardml-nj': {'id': 'StandardML-NJ', 'deprecated': True}, + 'sugarcrm-1.1.3': {'id': 'SugarCRM-1.1.3', 'deprecated': False}, + 'sun-ppp': {'id': 'Sun-PPP', 'deprecated': False}, + 'sun-ppp-2000': {'id': 'Sun-PPP-2000', 'deprecated': False}, + 'sunpro': {'id': 'SunPro', 'deprecated': False}, + 'swl': {'id': 'SWL', 'deprecated': False}, + 'swrule': {'id': 'swrule', 'deprecated': False}, + 'symlinks': {'id': 'Symlinks', 'deprecated': False}, + 'tapr-ohl-1.0': {'id': 'TAPR-OHL-1.0', 'deprecated': False}, + 'tcl': {'id': 'TCL', 'deprecated': False}, + 'tcp-wrappers': {'id': 'TCP-wrappers', 'deprecated': False}, + 'termreadkey': {'id': 'TermReadKey', 'deprecated': False}, + 'tgppl-1.0': {'id': 'TGPPL-1.0', 'deprecated': False}, + 'threeparttable': {'id': 'threeparttable', 'deprecated': False}, + 'tmate': {'id': 'TMate', 'deprecated': False}, + 'torque-1.1': {'id': 'TORQUE-1.1', 'deprecated': False}, + 'tosl': {'id': 'TOSL', 'deprecated': False}, + 'tpdl': {'id': 'TPDL', 'deprecated': False}, + 'tpl-1.0': {'id': 'TPL-1.0', 'deprecated': False}, + 'ttwl': {'id': 'TTWL', 'deprecated': False}, + 'ttyp0': {'id': 'TTYP0', 'deprecated': False}, + 'tu-berlin-1.0': {'id': 'TU-Berlin-1.0', 'deprecated': False}, + 'tu-berlin-2.0': {'id': 'TU-Berlin-2.0', 'deprecated': False}, + 'ubuntu-font-1.0': {'id': 'Ubuntu-font-1.0', 'deprecated': False}, + 'ucar': {'id': 'UCAR', 'deprecated': False}, + 'ucl-1.0': {'id': 'UCL-1.0', 'deprecated': False}, + 'ulem': {'id': 'ulem', 'deprecated': False}, + 'umich-merit': {'id': 'UMich-Merit', 'deprecated': False}, + 'unicode-3.0': {'id': 'Unicode-3.0', 'deprecated': False}, + 'unicode-dfs-2015': {'id': 'Unicode-DFS-2015', 'deprecated': False}, + 'unicode-dfs-2016': {'id': 'Unicode-DFS-2016', 'deprecated': False}, + 'unicode-tou': {'id': 'Unicode-TOU', 'deprecated': False}, + 'unixcrypt': {'id': 'UnixCrypt', 'deprecated': False}, + 'unlicense': {'id': 'Unlicense', 'deprecated': False}, + 'upl-1.0': {'id': 'UPL-1.0', 'deprecated': False}, + 'urt-rle': {'id': 'URT-RLE', 'deprecated': False}, + 'vim': {'id': 'Vim', 'deprecated': False}, + 'vostrom': {'id': 'VOSTROM', 'deprecated': False}, + 'vsl-1.0': {'id': 'VSL-1.0', 'deprecated': False}, + 'w3c': {'id': 'W3C', 'deprecated': False}, + 'w3c-19980720': {'id': 'W3C-19980720', 'deprecated': False}, + 'w3c-20150513': {'id': 'W3C-20150513', 'deprecated': False}, + 'w3m': {'id': 'w3m', 'deprecated': False}, + 'watcom-1.0': {'id': 'Watcom-1.0', 'deprecated': False}, + 'widget-workshop': {'id': 'Widget-Workshop', 'deprecated': False}, + 'wsuipa': {'id': 'Wsuipa', 'deprecated': False}, + 'wtfpl': {'id': 'WTFPL', 'deprecated': False}, + 'wxwindows': {'id': 'wxWindows', 'deprecated': True}, + 'x11': {'id': 'X11', 'deprecated': False}, + 'x11-distribute-modifications-variant': {'id': 'X11-distribute-modifications-variant', 'deprecated': False}, + 'x11-swapped': {'id': 'X11-swapped', 'deprecated': False}, + 'xdebug-1.03': {'id': 'Xdebug-1.03', 'deprecated': False}, + 'xerox': {'id': 'Xerox', 'deprecated': False}, + 'xfig': {'id': 'Xfig', 'deprecated': False}, + 'xfree86-1.1': {'id': 'XFree86-1.1', 'deprecated': False}, + 'xinetd': {'id': 'xinetd', 'deprecated': False}, + 'xkeyboard-config-zinoviev': {'id': 'xkeyboard-config-Zinoviev', 'deprecated': False}, + 'xlock': {'id': 'xlock', 'deprecated': False}, + 'xnet': {'id': 'Xnet', 'deprecated': False}, + 'xpp': {'id': 'xpp', 'deprecated': False}, + 'xskat': {'id': 'XSkat', 'deprecated': False}, + 'xzoom': {'id': 'xzoom', 'deprecated': False}, + 'ypl-1.0': {'id': 'YPL-1.0', 'deprecated': False}, + 'ypl-1.1': {'id': 'YPL-1.1', 'deprecated': False}, + 'zed': {'id': 'Zed', 'deprecated': False}, + 'zeeff': {'id': 'Zeeff', 'deprecated': False}, + 'zend-2.0': {'id': 'Zend-2.0', 'deprecated': False}, + 'zimbra-1.3': {'id': 'Zimbra-1.3', 'deprecated': False}, + 'zimbra-1.4': {'id': 'Zimbra-1.4', 'deprecated': False}, + 'zlib': {'id': 'Zlib', 'deprecated': False}, + 'zlib-acknowledgement': {'id': 'zlib-acknowledgement', 'deprecated': False}, + 'zpl-1.1': {'id': 'ZPL-1.1', 'deprecated': False}, + 'zpl-2.0': {'id': 'ZPL-2.0', 'deprecated': False}, + 'zpl-2.1': {'id': 'ZPL-2.1', 'deprecated': False}, +} + +EXCEPTIONS: dict[str, SPDXException] = { + '389-exception': {'id': '389-exception', 'deprecated': False}, + 'asterisk-exception': {'id': 'Asterisk-exception', 'deprecated': False}, + 'asterisk-linking-protocols-exception': {'id': 'Asterisk-linking-protocols-exception', 'deprecated': False}, + 'autoconf-exception-2.0': {'id': 'Autoconf-exception-2.0', 'deprecated': False}, + 'autoconf-exception-3.0': {'id': 'Autoconf-exception-3.0', 'deprecated': False}, + 'autoconf-exception-generic': {'id': 'Autoconf-exception-generic', 'deprecated': False}, + 'autoconf-exception-generic-3.0': {'id': 'Autoconf-exception-generic-3.0', 'deprecated': False}, + 'autoconf-exception-macro': {'id': 'Autoconf-exception-macro', 'deprecated': False}, + 'bison-exception-1.24': {'id': 'Bison-exception-1.24', 'deprecated': False}, + 'bison-exception-2.2': {'id': 'Bison-exception-2.2', 'deprecated': False}, + 'bootloader-exception': {'id': 'Bootloader-exception', 'deprecated': False}, + 'classpath-exception-2.0': {'id': 'Classpath-exception-2.0', 'deprecated': False}, + 'clisp-exception-2.0': {'id': 'CLISP-exception-2.0', 'deprecated': False}, + 'cryptsetup-openssl-exception': {'id': 'cryptsetup-OpenSSL-exception', 'deprecated': False}, + 'digirule-foss-exception': {'id': 'DigiRule-FOSS-exception', 'deprecated': False}, + 'ecos-exception-2.0': {'id': 'eCos-exception-2.0', 'deprecated': False}, + 'erlang-otp-linking-exception': {'id': 'erlang-otp-linking-exception', 'deprecated': False}, + 'fawkes-runtime-exception': {'id': 'Fawkes-Runtime-exception', 'deprecated': False}, + 'fltk-exception': {'id': 'FLTK-exception', 'deprecated': False}, + 'fmt-exception': {'id': 'fmt-exception', 'deprecated': False}, + 'font-exception-2.0': {'id': 'Font-exception-2.0', 'deprecated': False}, + 'freertos-exception-2.0': {'id': 'freertos-exception-2.0', 'deprecated': False}, + 'gcc-exception-2.0': {'id': 'GCC-exception-2.0', 'deprecated': False}, + 'gcc-exception-2.0-note': {'id': 'GCC-exception-2.0-note', 'deprecated': False}, + 'gcc-exception-3.1': {'id': 'GCC-exception-3.1', 'deprecated': False}, + 'gmsh-exception': {'id': 'Gmsh-exception', 'deprecated': False}, + 'gnat-exception': {'id': 'GNAT-exception', 'deprecated': False}, + 'gnome-examples-exception': {'id': 'GNOME-examples-exception', 'deprecated': False}, + 'gnu-compiler-exception': {'id': 'GNU-compiler-exception', 'deprecated': False}, + 'gnu-javamail-exception': {'id': 'gnu-javamail-exception', 'deprecated': False}, + 'gpl-3.0-interface-exception': {'id': 'GPL-3.0-interface-exception', 'deprecated': False}, + 'gpl-3.0-linking-exception': {'id': 'GPL-3.0-linking-exception', 'deprecated': False}, + 'gpl-3.0-linking-source-exception': {'id': 'GPL-3.0-linking-source-exception', 'deprecated': False}, + 'gpl-cc-1.0': {'id': 'GPL-CC-1.0', 'deprecated': False}, + 'gstreamer-exception-2005': {'id': 'GStreamer-exception-2005', 'deprecated': False}, + 'gstreamer-exception-2008': {'id': 'GStreamer-exception-2008', 'deprecated': False}, + 'i2p-gpl-java-exception': {'id': 'i2p-gpl-java-exception', 'deprecated': False}, + 'kicad-libraries-exception': {'id': 'KiCad-libraries-exception', 'deprecated': False}, + 'lgpl-3.0-linking-exception': {'id': 'LGPL-3.0-linking-exception', 'deprecated': False}, + 'libpri-openh323-exception': {'id': 'libpri-OpenH323-exception', 'deprecated': False}, + 'libtool-exception': {'id': 'Libtool-exception', 'deprecated': False}, + 'linux-syscall-note': {'id': 'Linux-syscall-note', 'deprecated': False}, + 'llgpl': {'id': 'LLGPL', 'deprecated': False}, + 'llvm-exception': {'id': 'LLVM-exception', 'deprecated': False}, + 'lzma-exception': {'id': 'LZMA-exception', 'deprecated': False}, + 'mif-exception': {'id': 'mif-exception', 'deprecated': False}, + 'nokia-qt-exception-1.1': {'id': 'Nokia-Qt-exception-1.1', 'deprecated': True}, + 'ocaml-lgpl-linking-exception': {'id': 'OCaml-LGPL-linking-exception', 'deprecated': False}, + 'occt-exception-1.0': {'id': 'OCCT-exception-1.0', 'deprecated': False}, + 'openjdk-assembly-exception-1.0': {'id': 'OpenJDK-assembly-exception-1.0', 'deprecated': False}, + 'openvpn-openssl-exception': {'id': 'openvpn-openssl-exception', 'deprecated': False}, + 'pcre2-exception': {'id': 'PCRE2-exception', 'deprecated': False}, + 'ps-or-pdf-font-exception-20170817': {'id': 'PS-or-PDF-font-exception-20170817', 'deprecated': False}, + 'qpl-1.0-inria-2004-exception': {'id': 'QPL-1.0-INRIA-2004-exception', 'deprecated': False}, + 'qt-gpl-exception-1.0': {'id': 'Qt-GPL-exception-1.0', 'deprecated': False}, + 'qt-lgpl-exception-1.1': {'id': 'Qt-LGPL-exception-1.1', 'deprecated': False}, + 'qwt-exception-1.0': {'id': 'Qwt-exception-1.0', 'deprecated': False}, + 'romic-exception': {'id': 'romic-exception', 'deprecated': False}, + 'rrdtool-floss-exception-2.0': {'id': 'RRDtool-FLOSS-exception-2.0', 'deprecated': False}, + 'sane-exception': {'id': 'SANE-exception', 'deprecated': False}, + 'shl-2.0': {'id': 'SHL-2.0', 'deprecated': False}, + 'shl-2.1': {'id': 'SHL-2.1', 'deprecated': False}, + 'stunnel-exception': {'id': 'stunnel-exception', 'deprecated': False}, + 'swi-exception': {'id': 'SWI-exception', 'deprecated': False}, + 'swift-exception': {'id': 'Swift-exception', 'deprecated': False}, + 'texinfo-exception': {'id': 'Texinfo-exception', 'deprecated': False}, + 'u-boot-exception-2.0': {'id': 'u-boot-exception-2.0', 'deprecated': False}, + 'ubdl-exception': {'id': 'UBDL-exception', 'deprecated': False}, + 'universal-foss-exception-1.0': {'id': 'Universal-FOSS-exception-1.0', 'deprecated': False}, + 'vsftpd-openssl-exception': {'id': 'vsftpd-openssl-exception', 'deprecated': False}, + 'wxwindows-exception-3.1': {'id': 'WxWindows-exception-3.1', 'deprecated': False}, + 'x11vnc-openssl-exception': {'id': 'x11vnc-openssl-exception', 'deprecated': False}, +} diff --git a/gestao_raul/Lib/site-packages/pip/_vendor/packaging/markers.py b/gestao_raul/Lib/site-packages/pip/_vendor/packaging/markers.py index 540e7a4..fb7f49c 100644 --- a/gestao_raul/Lib/site-packages/pip/_vendor/packaging/markers.py +++ b/gestao_raul/Lib/site-packages/pip/_vendor/packaging/markers.py @@ -2,31 +2,25 @@ # 2.0, and the BSD License. See the LICENSE file in the root of this repository # for complete details. +from __future__ import annotations + import operator import os import platform import sys -from typing import Any, Callable, Dict, List, Optional, Tuple, Union - -from pip._vendor.pyparsing import ( # noqa: N817 - Forward, - Group, - Literal as L, - ParseException, - ParseResults, - QuotedString, - ZeroOrMore, - stringEnd, - stringStart, -) +from typing import Any, Callable, TypedDict, cast +from ._parser import MarkerAtom, MarkerList, Op, Value, Variable +from ._parser import parse_marker as _parse_marker +from ._tokenizer import ParserSyntaxError from .specifiers import InvalidSpecifier, Specifier +from .utils import canonicalize_name __all__ = [ "InvalidMarker", + "Marker", "UndefinedComparison", "UndefinedEnvironmentName", - "Marker", "default_environment", ] @@ -52,103 +46,97 @@ class UndefinedEnvironmentName(ValueError): """ -class Node: - def __init__(self, value: Any) -> None: - self.value = value +class Environment(TypedDict): + implementation_name: str + """The implementation's identifier, e.g. ``'cpython'``.""" - def __str__(self) -> str: - return str(self.value) + implementation_version: str + """ + The implementation's version, e.g. ``'3.13.0a2'`` for CPython 3.13.0a2, or + ``'7.3.13'`` for PyPy3.10 v7.3.13. + """ - def __repr__(self) -> str: - return f"<{self.__class__.__name__}('{self}')>" + os_name: str + """ + The value of :py:data:`os.name`. The name of the operating system dependent module + imported, e.g. ``'posix'``. + """ - def serialize(self) -> str: - raise NotImplementedError + platform_machine: str + """ + Returns the machine type, e.g. ``'i386'``. + + An empty string if the value cannot be determined. + """ + + platform_release: str + """ + The system's release, e.g. ``'2.2.0'`` or ``'NT'``. + + An empty string if the value cannot be determined. + """ + + platform_system: str + """ + The system/OS name, e.g. ``'Linux'``, ``'Windows'`` or ``'Java'``. + + An empty string if the value cannot be determined. + """ + + platform_version: str + """ + The system's release version, e.g. ``'#3 on degas'``. + + An empty string if the value cannot be determined. + """ + + python_full_version: str + """ + The Python version as string ``'major.minor.patchlevel'``. + + Note that unlike the Python :py:data:`sys.version`, this value will always include + the patchlevel (it defaults to 0). + """ + + platform_python_implementation: str + """ + A string identifying the Python implementation, e.g. ``'CPython'``. + """ + + python_version: str + """The Python version as string ``'major.minor'``.""" + + sys_platform: str + """ + This string contains a platform identifier that can be used to append + platform-specific components to :py:data:`sys.path`, for instance. + + For Unix systems, except on Linux and AIX, this is the lowercased OS name as + returned by ``uname -s`` with the first part of the version as returned by + ``uname -r`` appended, e.g. ``'sunos5'`` or ``'freebsd8'``, at the time when Python + was built. + """ -class Variable(Node): - def serialize(self) -> str: - return str(self) - - -class Value(Node): - def serialize(self) -> str: - return f'"{self}"' - - -class Op(Node): - def serialize(self) -> str: - return str(self) - - -VARIABLE = ( - L("implementation_version") - | L("platform_python_implementation") - | L("implementation_name") - | L("python_full_version") - | L("platform_release") - | L("platform_version") - | L("platform_machine") - | L("platform_system") - | L("python_version") - | L("sys_platform") - | L("os_name") - | L("os.name") # PEP-345 - | L("sys.platform") # PEP-345 - | L("platform.version") # PEP-345 - | L("platform.machine") # PEP-345 - | L("platform.python_implementation") # PEP-345 - | L("python_implementation") # undocumented setuptools legacy - | L("extra") # PEP-508 -) -ALIASES = { - "os.name": "os_name", - "sys.platform": "sys_platform", - "platform.version": "platform_version", - "platform.machine": "platform_machine", - "platform.python_implementation": "platform_python_implementation", - "python_implementation": "platform_python_implementation", -} -VARIABLE.setParseAction(lambda s, l, t: Variable(ALIASES.get(t[0], t[0]))) - -VERSION_CMP = ( - L("===") | L("==") | L(">=") | L("<=") | L("!=") | L("~=") | L(">") | L("<") -) - -MARKER_OP = VERSION_CMP | L("not in") | L("in") -MARKER_OP.setParseAction(lambda s, l, t: Op(t[0])) - -MARKER_VALUE = QuotedString("'") | QuotedString('"') -MARKER_VALUE.setParseAction(lambda s, l, t: Value(t[0])) - -BOOLOP = L("and") | L("or") - -MARKER_VAR = VARIABLE | MARKER_VALUE - -MARKER_ITEM = Group(MARKER_VAR + MARKER_OP + MARKER_VAR) -MARKER_ITEM.setParseAction(lambda s, l, t: tuple(t[0])) - -LPAREN = L("(").suppress() -RPAREN = L(")").suppress() - -MARKER_EXPR = Forward() -MARKER_ATOM = MARKER_ITEM | Group(LPAREN + MARKER_EXPR + RPAREN) -MARKER_EXPR << MARKER_ATOM + ZeroOrMore(BOOLOP + MARKER_EXPR) - -MARKER = stringStart + MARKER_EXPR + stringEnd - - -def _coerce_parse_result(results: Union[ParseResults, List[Any]]) -> List[Any]: - if isinstance(results, ParseResults): - return [_coerce_parse_result(i) for i in results] - else: - return results +def _normalize_extra_values(results: Any) -> Any: + """ + Normalize extra values. + """ + if isinstance(results[0], tuple): + lhs, op, rhs = results[0] + if isinstance(lhs, Variable) and lhs.value == "extra": + normalized_extra = canonicalize_name(rhs.value) + rhs = Value(normalized_extra) + elif isinstance(rhs, Variable) and rhs.value == "extra": + normalized_extra = canonicalize_name(lhs.value) + lhs = Value(normalized_extra) + results[0] = lhs, op, rhs + return results def _format_marker( - marker: Union[List[str], Tuple[Node, ...], str], first: Optional[bool] = True + marker: list[str] | MarkerAtom | str, first: bool | None = True ) -> str: - assert isinstance(marker, (list, tuple, str)) # Sometimes we have a structure like [[...]] which is a single item list @@ -174,7 +162,7 @@ def _format_marker( return marker -_operators: Dict[str, Operator] = { +_operators: dict[str, Operator] = { "in": lambda lhs, rhs: lhs in rhs, "not in": lambda lhs, rhs: lhs not in rhs, "<": operator.lt, @@ -192,35 +180,29 @@ def _eval_op(lhs: str, op: Op, rhs: str) -> bool: except InvalidSpecifier: pass else: - return spec.contains(lhs) + return spec.contains(lhs, prereleases=True) - oper: Optional[Operator] = _operators.get(op.serialize()) + oper: Operator | None = _operators.get(op.serialize()) if oper is None: raise UndefinedComparison(f"Undefined {op!r} on {lhs!r} and {rhs!r}.") return oper(lhs, rhs) -class Undefined: - pass +def _normalize(*values: str, key: str) -> tuple[str, ...]: + # PEP 685 – Comparison of extra names for optional distribution dependencies + # https://peps.python.org/pep-0685/ + # > When comparing extra names, tools MUST normalize the names being + # > compared using the semantics outlined in PEP 503 for names + if key == "extra": + return tuple(canonicalize_name(v) for v in values) + + # other environment markers don't have such standards + return values -_undefined = Undefined() - - -def _get_env(environment: Dict[str, str], name: str) -> str: - value: Union[str, Undefined] = environment.get(name, _undefined) - - if isinstance(value, Undefined): - raise UndefinedEnvironmentName( - f"{name!r} does not exist in evaluation environment." - ) - - return value - - -def _evaluate_markers(markers: List[Any], environment: Dict[str, str]) -> bool: - groups: List[List[bool]] = [[]] +def _evaluate_markers(markers: MarkerList, environment: dict[str, str]) -> bool: + groups: list[list[bool]] = [[]] for marker in markers: assert isinstance(marker, (list, tuple, str)) @@ -231,12 +213,15 @@ def _evaluate_markers(markers: List[Any], environment: Dict[str, str]) -> bool: lhs, op, rhs = marker if isinstance(lhs, Variable): - lhs_value = _get_env(environment, lhs.value) + environment_key = lhs.value + lhs_value = environment[environment_key] rhs_value = rhs.value else: lhs_value = lhs.value - rhs_value = _get_env(environment, rhs.value) + environment_key = rhs.value + rhs_value = environment[environment_key] + lhs_value, rhs_value = _normalize(lhs_value, rhs_value, key=environment_key) groups[-1].append(_eval_op(lhs_value, op, rhs_value)) else: assert marker in ["and", "or"] @@ -246,15 +231,15 @@ def _evaluate_markers(markers: List[Any], environment: Dict[str, str]) -> bool: return any(all(item) for item in groups) -def format_full_version(info: "sys._version_info") -> str: - version = "{0.major}.{0.minor}.{0.micro}".format(info) +def format_full_version(info: sys._version_info) -> str: + version = f"{info.major}.{info.minor}.{info.micro}" kind = info.releaselevel if kind != "final": version += kind[0] + str(info.serial) return version -def default_environment() -> Dict[str, str]: +def default_environment() -> Environment: iver = format_full_version(sys.implementation.version) implementation_name = sys.implementation.name return { @@ -274,13 +259,29 @@ def default_environment() -> Dict[str, str]: class Marker: def __init__(self, marker: str) -> None: + # Note: We create a Marker object without calling this constructor in + # packaging.requirements.Requirement. If any additional logic is + # added here, make sure to mirror/adapt Requirement. try: - self._markers = _coerce_parse_result(MARKER.parseString(marker)) - except ParseException as e: - raise InvalidMarker( - f"Invalid marker: {marker!r}, parse error at " - f"{marker[e.loc : e.loc + 8]!r}" - ) + self._markers = _normalize_extra_values(_parse_marker(marker)) + # The attribute `_markers` can be described in terms of a recursive type: + # MarkerList = List[Union[Tuple[Node, ...], str, MarkerList]] + # + # For example, the following expression: + # python_version > "3.6" or (python_version == "3.6" and os_name == "unix") + # + # is parsed into: + # [ + # (, ')>, ), + # 'and', + # [ + # (, , ), + # 'or', + # (, , ) + # ] + # ] + except ParserSyntaxError as e: + raise InvalidMarker(str(e)) from e def __str__(self) -> str: return _format_marker(self._markers) @@ -288,7 +289,16 @@ class Marker: def __repr__(self) -> str: return f"" - def evaluate(self, environment: Optional[Dict[str, str]] = None) -> bool: + def __hash__(self) -> int: + return hash((self.__class__.__name__, str(self))) + + def __eq__(self, other: Any) -> bool: + if not isinstance(other, Marker): + return NotImplemented + + return str(self) == str(other) + + def evaluate(self, environment: dict[str, str] | None = None) -> bool: """Evaluate a marker. Return the boolean from evaluating the given marker against the @@ -297,8 +307,25 @@ class Marker: The environment is determined from the current Python process. """ - current_environment = default_environment() + current_environment = cast("dict[str, str]", default_environment()) + current_environment["extra"] = "" if environment is not None: current_environment.update(environment) + # The API used to allow setting extra to None. We need to handle this + # case for backwards compatibility. + if current_environment["extra"] is None: + current_environment["extra"] = "" - return _evaluate_markers(self._markers, current_environment) + return _evaluate_markers( + self._markers, _repair_python_full_version(current_environment) + ) + + +def _repair_python_full_version(env: dict[str, str]) -> dict[str, str]: + """ + Work around platform.python_version() returning something that is not PEP 440 + compliant for non-tagged Python builds. + """ + if env["python_full_version"].endswith("+"): + env["python_full_version"] += "local" + return env diff --git a/gestao_raul/Lib/site-packages/pip/_vendor/packaging/metadata.py b/gestao_raul/Lib/site-packages/pip/_vendor/packaging/metadata.py new file mode 100644 index 0000000..721f411 --- /dev/null +++ b/gestao_raul/Lib/site-packages/pip/_vendor/packaging/metadata.py @@ -0,0 +1,863 @@ +from __future__ import annotations + +import email.feedparser +import email.header +import email.message +import email.parser +import email.policy +import pathlib +import sys +import typing +from typing import ( + Any, + Callable, + Generic, + Literal, + TypedDict, + cast, +) + +from . import licenses, requirements, specifiers, utils +from . import version as version_module +from .licenses import NormalizedLicenseExpression + +T = typing.TypeVar("T") + + +if sys.version_info >= (3, 11): # pragma: no cover + ExceptionGroup = ExceptionGroup +else: # pragma: no cover + + class ExceptionGroup(Exception): + """A minimal implementation of :external:exc:`ExceptionGroup` from Python 3.11. + + If :external:exc:`ExceptionGroup` is already defined by Python itself, + that version is used instead. + """ + + message: str + exceptions: list[Exception] + + def __init__(self, message: str, exceptions: list[Exception]) -> None: + self.message = message + self.exceptions = exceptions + + def __repr__(self) -> str: + return f"{self.__class__.__name__}({self.message!r}, {self.exceptions!r})" + + +class InvalidMetadata(ValueError): + """A metadata field contains invalid data.""" + + field: str + """The name of the field that contains invalid data.""" + + def __init__(self, field: str, message: str) -> None: + self.field = field + super().__init__(message) + + +# The RawMetadata class attempts to make as few assumptions about the underlying +# serialization formats as possible. The idea is that as long as a serialization +# formats offer some very basic primitives in *some* way then we can support +# serializing to and from that format. +class RawMetadata(TypedDict, total=False): + """A dictionary of raw core metadata. + + Each field in core metadata maps to a key of this dictionary (when data is + provided). The key is lower-case and underscores are used instead of dashes + compared to the equivalent core metadata field. Any core metadata field that + can be specified multiple times or can hold multiple values in a single + field have a key with a plural name. See :class:`Metadata` whose attributes + match the keys of this dictionary. + + Core metadata fields that can be specified multiple times are stored as a + list or dict depending on which is appropriate for the field. Any fields + which hold multiple values in a single field are stored as a list. + + """ + + # Metadata 1.0 - PEP 241 + metadata_version: str + name: str + version: str + platforms: list[str] + summary: str + description: str + keywords: list[str] + home_page: str + author: str + author_email: str + license: str + + # Metadata 1.1 - PEP 314 + supported_platforms: list[str] + download_url: str + classifiers: list[str] + requires: list[str] + provides: list[str] + obsoletes: list[str] + + # Metadata 1.2 - PEP 345 + maintainer: str + maintainer_email: str + requires_dist: list[str] + provides_dist: list[str] + obsoletes_dist: list[str] + requires_python: str + requires_external: list[str] + project_urls: dict[str, str] + + # Metadata 2.0 + # PEP 426 attempted to completely revamp the metadata format + # but got stuck without ever being able to build consensus on + # it and ultimately ended up withdrawn. + # + # However, a number of tools had started emitting METADATA with + # `2.0` Metadata-Version, so for historical reasons, this version + # was skipped. + + # Metadata 2.1 - PEP 566 + description_content_type: str + provides_extra: list[str] + + # Metadata 2.2 - PEP 643 + dynamic: list[str] + + # Metadata 2.3 - PEP 685 + # No new fields were added in PEP 685, just some edge case were + # tightened up to provide better interoptability. + + # Metadata 2.4 - PEP 639 + license_expression: str + license_files: list[str] + + +_STRING_FIELDS = { + "author", + "author_email", + "description", + "description_content_type", + "download_url", + "home_page", + "license", + "license_expression", + "maintainer", + "maintainer_email", + "metadata_version", + "name", + "requires_python", + "summary", + "version", +} + +_LIST_FIELDS = { + "classifiers", + "dynamic", + "license_files", + "obsoletes", + "obsoletes_dist", + "platforms", + "provides", + "provides_dist", + "provides_extra", + "requires", + "requires_dist", + "requires_external", + "supported_platforms", +} + +_DICT_FIELDS = { + "project_urls", +} + + +def _parse_keywords(data: str) -> list[str]: + """Split a string of comma-separated keywords into a list of keywords.""" + return [k.strip() for k in data.split(",")] + + +def _parse_project_urls(data: list[str]) -> dict[str, str]: + """Parse a list of label/URL string pairings separated by a comma.""" + urls = {} + for pair in data: + # Our logic is slightly tricky here as we want to try and do + # *something* reasonable with malformed data. + # + # The main thing that we have to worry about, is data that does + # not have a ',' at all to split the label from the Value. There + # isn't a singular right answer here, and we will fail validation + # later on (if the caller is validating) so it doesn't *really* + # matter, but since the missing value has to be an empty str + # and our return value is dict[str, str], if we let the key + # be the missing value, then they'd have multiple '' values that + # overwrite each other in a accumulating dict. + # + # The other potentional issue is that it's possible to have the + # same label multiple times in the metadata, with no solid "right" + # answer with what to do in that case. As such, we'll do the only + # thing we can, which is treat the field as unparseable and add it + # to our list of unparsed fields. + parts = [p.strip() for p in pair.split(",", 1)] + parts.extend([""] * (max(0, 2 - len(parts)))) # Ensure 2 items + + # TODO: The spec doesn't say anything about if the keys should be + # considered case sensitive or not... logically they should + # be case-preserving and case-insensitive, but doing that + # would open up more cases where we might have duplicate + # entries. + label, url = parts + if label in urls: + # The label already exists in our set of urls, so this field + # is unparseable, and we can just add the whole thing to our + # unparseable data and stop processing it. + raise KeyError("duplicate labels in project urls") + urls[label] = url + + return urls + + +def _get_payload(msg: email.message.Message, source: bytes | str) -> str: + """Get the body of the message.""" + # If our source is a str, then our caller has managed encodings for us, + # and we don't need to deal with it. + if isinstance(source, str): + payload = msg.get_payload() + assert isinstance(payload, str) + return payload + # If our source is a bytes, then we're managing the encoding and we need + # to deal with it. + else: + bpayload = msg.get_payload(decode=True) + assert isinstance(bpayload, bytes) + try: + return bpayload.decode("utf8", "strict") + except UnicodeDecodeError as exc: + raise ValueError("payload in an invalid encoding") from exc + + +# The various parse_FORMAT functions here are intended to be as lenient as +# possible in their parsing, while still returning a correctly typed +# RawMetadata. +# +# To aid in this, we also generally want to do as little touching of the +# data as possible, except where there are possibly some historic holdovers +# that make valid data awkward to work with. +# +# While this is a lower level, intermediate format than our ``Metadata`` +# class, some light touch ups can make a massive difference in usability. + +# Map METADATA fields to RawMetadata. +_EMAIL_TO_RAW_MAPPING = { + "author": "author", + "author-email": "author_email", + "classifier": "classifiers", + "description": "description", + "description-content-type": "description_content_type", + "download-url": "download_url", + "dynamic": "dynamic", + "home-page": "home_page", + "keywords": "keywords", + "license": "license", + "license-expression": "license_expression", + "license-file": "license_files", + "maintainer": "maintainer", + "maintainer-email": "maintainer_email", + "metadata-version": "metadata_version", + "name": "name", + "obsoletes": "obsoletes", + "obsoletes-dist": "obsoletes_dist", + "platform": "platforms", + "project-url": "project_urls", + "provides": "provides", + "provides-dist": "provides_dist", + "provides-extra": "provides_extra", + "requires": "requires", + "requires-dist": "requires_dist", + "requires-external": "requires_external", + "requires-python": "requires_python", + "summary": "summary", + "supported-platform": "supported_platforms", + "version": "version", +} +_RAW_TO_EMAIL_MAPPING = {raw: email for email, raw in _EMAIL_TO_RAW_MAPPING.items()} + + +def parse_email(data: bytes | str) -> tuple[RawMetadata, dict[str, list[str]]]: + """Parse a distribution's metadata stored as email headers (e.g. from ``METADATA``). + + This function returns a two-item tuple of dicts. The first dict is of + recognized fields from the core metadata specification. Fields that can be + parsed and translated into Python's built-in types are converted + appropriately. All other fields are left as-is. Fields that are allowed to + appear multiple times are stored as lists. + + The second dict contains all other fields from the metadata. This includes + any unrecognized fields. It also includes any fields which are expected to + be parsed into a built-in type but were not formatted appropriately. Finally, + any fields that are expected to appear only once but are repeated are + included in this dict. + + """ + raw: dict[str, str | list[str] | dict[str, str]] = {} + unparsed: dict[str, list[str]] = {} + + if isinstance(data, str): + parsed = email.parser.Parser(policy=email.policy.compat32).parsestr(data) + else: + parsed = email.parser.BytesParser(policy=email.policy.compat32).parsebytes(data) + + # We have to wrap parsed.keys() in a set, because in the case of multiple + # values for a key (a list), the key will appear multiple times in the + # list of keys, but we're avoiding that by using get_all(). + for name in frozenset(parsed.keys()): + # Header names in RFC are case insensitive, so we'll normalize to all + # lower case to make comparisons easier. + name = name.lower() + + # We use get_all() here, even for fields that aren't multiple use, + # because otherwise someone could have e.g. two Name fields, and we + # would just silently ignore it rather than doing something about it. + headers = parsed.get_all(name) or [] + + # The way the email module works when parsing bytes is that it + # unconditionally decodes the bytes as ascii using the surrogateescape + # handler. When you pull that data back out (such as with get_all() ), + # it looks to see if the str has any surrogate escapes, and if it does + # it wraps it in a Header object instead of returning the string. + # + # As such, we'll look for those Header objects, and fix up the encoding. + value = [] + # Flag if we have run into any issues processing the headers, thus + # signalling that the data belongs in 'unparsed'. + valid_encoding = True + for h in headers: + # It's unclear if this can return more types than just a Header or + # a str, so we'll just assert here to make sure. + assert isinstance(h, (email.header.Header, str)) + + # If it's a header object, we need to do our little dance to get + # the real data out of it. In cases where there is invalid data + # we're going to end up with mojibake, but there's no obvious, good + # way around that without reimplementing parts of the Header object + # ourselves. + # + # That should be fine since, if mojibacked happens, this key is + # going into the unparsed dict anyways. + if isinstance(h, email.header.Header): + # The Header object stores it's data as chunks, and each chunk + # can be independently encoded, so we'll need to check each + # of them. + chunks: list[tuple[bytes, str | None]] = [] + for bin, encoding in email.header.decode_header(h): + try: + bin.decode("utf8", "strict") + except UnicodeDecodeError: + # Enable mojibake. + encoding = "latin1" + valid_encoding = False + else: + encoding = "utf8" + chunks.append((bin, encoding)) + + # Turn our chunks back into a Header object, then let that + # Header object do the right thing to turn them into a + # string for us. + value.append(str(email.header.make_header(chunks))) + # This is already a string, so just add it. + else: + value.append(h) + + # We've processed all of our values to get them into a list of str, + # but we may have mojibake data, in which case this is an unparsed + # field. + if not valid_encoding: + unparsed[name] = value + continue + + raw_name = _EMAIL_TO_RAW_MAPPING.get(name) + if raw_name is None: + # This is a bit of a weird situation, we've encountered a key that + # we don't know what it means, so we don't know whether it's meant + # to be a list or not. + # + # Since we can't really tell one way or another, we'll just leave it + # as a list, even though it may be a single item list, because that's + # what makes the most sense for email headers. + unparsed[name] = value + continue + + # If this is one of our string fields, then we'll check to see if our + # value is a list of a single item. If it is then we'll assume that + # it was emitted as a single string, and unwrap the str from inside + # the list. + # + # If it's any other kind of data, then we haven't the faintest clue + # what we should parse it as, and we have to just add it to our list + # of unparsed stuff. + if raw_name in _STRING_FIELDS and len(value) == 1: + raw[raw_name] = value[0] + # If this is one of our list of string fields, then we can just assign + # the value, since email *only* has strings, and our get_all() call + # above ensures that this is a list. + elif raw_name in _LIST_FIELDS: + raw[raw_name] = value + # Special Case: Keywords + # The keywords field is implemented in the metadata spec as a str, + # but it conceptually is a list of strings, and is serialized using + # ", ".join(keywords), so we'll do some light data massaging to turn + # this into what it logically is. + elif raw_name == "keywords" and len(value) == 1: + raw[raw_name] = _parse_keywords(value[0]) + # Special Case: Project-URL + # The project urls is implemented in the metadata spec as a list of + # specially-formatted strings that represent a key and a value, which + # is fundamentally a mapping, however the email format doesn't support + # mappings in a sane way, so it was crammed into a list of strings + # instead. + # + # We will do a little light data massaging to turn this into a map as + # it logically should be. + elif raw_name == "project_urls": + try: + raw[raw_name] = _parse_project_urls(value) + except KeyError: + unparsed[name] = value + # Nothing that we've done has managed to parse this, so it'll just + # throw it in our unparseable data and move on. + else: + unparsed[name] = value + + # We need to support getting the Description from the message payload in + # addition to getting it from the the headers. This does mean, though, there + # is the possibility of it being set both ways, in which case we put both + # in 'unparsed' since we don't know which is right. + try: + payload = _get_payload(parsed, data) + except ValueError: + unparsed.setdefault("description", []).append( + parsed.get_payload(decode=isinstance(data, bytes)) # type: ignore[call-overload] + ) + else: + if payload: + # Check to see if we've already got a description, if so then both + # it, and this body move to unparseable. + if "description" in raw: + description_header = cast(str, raw.pop("description")) + unparsed.setdefault("description", []).extend( + [description_header, payload] + ) + elif "description" in unparsed: + unparsed["description"].append(payload) + else: + raw["description"] = payload + + # We need to cast our `raw` to a metadata, because a TypedDict only support + # literal key names, but we're computing our key names on purpose, but the + # way this function is implemented, our `TypedDict` can only have valid key + # names. + return cast(RawMetadata, raw), unparsed + + +_NOT_FOUND = object() + + +# Keep the two values in sync. +_VALID_METADATA_VERSIONS = ["1.0", "1.1", "1.2", "2.1", "2.2", "2.3", "2.4"] +_MetadataVersion = Literal["1.0", "1.1", "1.2", "2.1", "2.2", "2.3", "2.4"] + +_REQUIRED_ATTRS = frozenset(["metadata_version", "name", "version"]) + + +class _Validator(Generic[T]): + """Validate a metadata field. + + All _process_*() methods correspond to a core metadata field. The method is + called with the field's raw value. If the raw value is valid it is returned + in its "enriched" form (e.g. ``version.Version`` for the ``Version`` field). + If the raw value is invalid, :exc:`InvalidMetadata` is raised (with a cause + as appropriate). + """ + + name: str + raw_name: str + added: _MetadataVersion + + def __init__( + self, + *, + added: _MetadataVersion = "1.0", + ) -> None: + self.added = added + + def __set_name__(self, _owner: Metadata, name: str) -> None: + self.name = name + self.raw_name = _RAW_TO_EMAIL_MAPPING[name] + + def __get__(self, instance: Metadata, _owner: type[Metadata]) -> T: + # With Python 3.8, the caching can be replaced with functools.cached_property(). + # No need to check the cache as attribute lookup will resolve into the + # instance's __dict__ before __get__ is called. + cache = instance.__dict__ + value = instance._raw.get(self.name) + + # To make the _process_* methods easier, we'll check if the value is None + # and if this field is NOT a required attribute, and if both of those + # things are true, we'll skip the the converter. This will mean that the + # converters never have to deal with the None union. + if self.name in _REQUIRED_ATTRS or value is not None: + try: + converter: Callable[[Any], T] = getattr(self, f"_process_{self.name}") + except AttributeError: + pass + else: + value = converter(value) + + cache[self.name] = value + try: + del instance._raw[self.name] # type: ignore[misc] + except KeyError: + pass + + return cast(T, value) + + def _invalid_metadata( + self, msg: str, cause: Exception | None = None + ) -> InvalidMetadata: + exc = InvalidMetadata( + self.raw_name, msg.format_map({"field": repr(self.raw_name)}) + ) + exc.__cause__ = cause + return exc + + def _process_metadata_version(self, value: str) -> _MetadataVersion: + # Implicitly makes Metadata-Version required. + if value not in _VALID_METADATA_VERSIONS: + raise self._invalid_metadata(f"{value!r} is not a valid metadata version") + return cast(_MetadataVersion, value) + + def _process_name(self, value: str) -> str: + if not value: + raise self._invalid_metadata("{field} is a required field") + # Validate the name as a side-effect. + try: + utils.canonicalize_name(value, validate=True) + except utils.InvalidName as exc: + raise self._invalid_metadata( + f"{value!r} is invalid for {{field}}", cause=exc + ) from exc + else: + return value + + def _process_version(self, value: str) -> version_module.Version: + if not value: + raise self._invalid_metadata("{field} is a required field") + try: + return version_module.parse(value) + except version_module.InvalidVersion as exc: + raise self._invalid_metadata( + f"{value!r} is invalid for {{field}}", cause=exc + ) from exc + + def _process_summary(self, value: str) -> str: + """Check the field contains no newlines.""" + if "\n" in value: + raise self._invalid_metadata("{field} must be a single line") + return value + + def _process_description_content_type(self, value: str) -> str: + content_types = {"text/plain", "text/x-rst", "text/markdown"} + message = email.message.EmailMessage() + message["content-type"] = value + + content_type, parameters = ( + # Defaults to `text/plain` if parsing failed. + message.get_content_type().lower(), + message["content-type"].params, + ) + # Check if content-type is valid or defaulted to `text/plain` and thus was + # not parseable. + if content_type not in content_types or content_type not in value.lower(): + raise self._invalid_metadata( + f"{{field}} must be one of {list(content_types)}, not {value!r}" + ) + + charset = parameters.get("charset", "UTF-8") + if charset != "UTF-8": + raise self._invalid_metadata( + f"{{field}} can only specify the UTF-8 charset, not {list(charset)}" + ) + + markdown_variants = {"GFM", "CommonMark"} + variant = parameters.get("variant", "GFM") # Use an acceptable default. + if content_type == "text/markdown" and variant not in markdown_variants: + raise self._invalid_metadata( + f"valid Markdown variants for {{field}} are {list(markdown_variants)}, " + f"not {variant!r}", + ) + return value + + def _process_dynamic(self, value: list[str]) -> list[str]: + for dynamic_field in map(str.lower, value): + if dynamic_field in {"name", "version", "metadata-version"}: + raise self._invalid_metadata( + f"{dynamic_field!r} is not allowed as a dynamic field" + ) + elif dynamic_field not in _EMAIL_TO_RAW_MAPPING: + raise self._invalid_metadata( + f"{dynamic_field!r} is not a valid dynamic field" + ) + return list(map(str.lower, value)) + + def _process_provides_extra( + self, + value: list[str], + ) -> list[utils.NormalizedName]: + normalized_names = [] + try: + for name in value: + normalized_names.append(utils.canonicalize_name(name, validate=True)) + except utils.InvalidName as exc: + raise self._invalid_metadata( + f"{name!r} is invalid for {{field}}", cause=exc + ) from exc + else: + return normalized_names + + def _process_requires_python(self, value: str) -> specifiers.SpecifierSet: + try: + return specifiers.SpecifierSet(value) + except specifiers.InvalidSpecifier as exc: + raise self._invalid_metadata( + f"{value!r} is invalid for {{field}}", cause=exc + ) from exc + + def _process_requires_dist( + self, + value: list[str], + ) -> list[requirements.Requirement]: + reqs = [] + try: + for req in value: + reqs.append(requirements.Requirement(req)) + except requirements.InvalidRequirement as exc: + raise self._invalid_metadata( + f"{req!r} is invalid for {{field}}", cause=exc + ) from exc + else: + return reqs + + def _process_license_expression( + self, value: str + ) -> NormalizedLicenseExpression | None: + try: + return licenses.canonicalize_license_expression(value) + except ValueError as exc: + raise self._invalid_metadata( + f"{value!r} is invalid for {{field}}", cause=exc + ) from exc + + def _process_license_files(self, value: list[str]) -> list[str]: + paths = [] + for path in value: + if ".." in path: + raise self._invalid_metadata( + f"{path!r} is invalid for {{field}}, " + "parent directory indicators are not allowed" + ) + if "*" in path: + raise self._invalid_metadata( + f"{path!r} is invalid for {{field}}, paths must be resolved" + ) + if ( + pathlib.PurePosixPath(path).is_absolute() + or pathlib.PureWindowsPath(path).is_absolute() + ): + raise self._invalid_metadata( + f"{path!r} is invalid for {{field}}, paths must be relative" + ) + if pathlib.PureWindowsPath(path).as_posix() != path: + raise self._invalid_metadata( + f"{path!r} is invalid for {{field}}, " + "paths must use '/' delimiter" + ) + paths.append(path) + return paths + + +class Metadata: + """Representation of distribution metadata. + + Compared to :class:`RawMetadata`, this class provides objects representing + metadata fields instead of only using built-in types. Any invalid metadata + will cause :exc:`InvalidMetadata` to be raised (with a + :py:attr:`~BaseException.__cause__` attribute as appropriate). + """ + + _raw: RawMetadata + + @classmethod + def from_raw(cls, data: RawMetadata, *, validate: bool = True) -> Metadata: + """Create an instance from :class:`RawMetadata`. + + If *validate* is true, all metadata will be validated. All exceptions + related to validation will be gathered and raised as an :class:`ExceptionGroup`. + """ + ins = cls() + ins._raw = data.copy() # Mutations occur due to caching enriched values. + + if validate: + exceptions: list[Exception] = [] + try: + metadata_version = ins.metadata_version + metadata_age = _VALID_METADATA_VERSIONS.index(metadata_version) + except InvalidMetadata as metadata_version_exc: + exceptions.append(metadata_version_exc) + metadata_version = None + + # Make sure to check for the fields that are present, the required + # fields (so their absence can be reported). + fields_to_check = frozenset(ins._raw) | _REQUIRED_ATTRS + # Remove fields that have already been checked. + fields_to_check -= {"metadata_version"} + + for key in fields_to_check: + try: + if metadata_version: + # Can't use getattr() as that triggers descriptor protocol which + # will fail due to no value for the instance argument. + try: + field_metadata_version = cls.__dict__[key].added + except KeyError: + exc = InvalidMetadata(key, f"unrecognized field: {key!r}") + exceptions.append(exc) + continue + field_age = _VALID_METADATA_VERSIONS.index( + field_metadata_version + ) + if field_age > metadata_age: + field = _RAW_TO_EMAIL_MAPPING[key] + exc = InvalidMetadata( + field, + f"{field} introduced in metadata version " + f"{field_metadata_version}, not {metadata_version}", + ) + exceptions.append(exc) + continue + getattr(ins, key) + except InvalidMetadata as exc: + exceptions.append(exc) + + if exceptions: + raise ExceptionGroup("invalid metadata", exceptions) + + return ins + + @classmethod + def from_email(cls, data: bytes | str, *, validate: bool = True) -> Metadata: + """Parse metadata from email headers. + + If *validate* is true, the metadata will be validated. All exceptions + related to validation will be gathered and raised as an :class:`ExceptionGroup`. + """ + raw, unparsed = parse_email(data) + + if validate: + exceptions: list[Exception] = [] + for unparsed_key in unparsed: + if unparsed_key in _EMAIL_TO_RAW_MAPPING: + message = f"{unparsed_key!r} has invalid data" + else: + message = f"unrecognized field: {unparsed_key!r}" + exceptions.append(InvalidMetadata(unparsed_key, message)) + + if exceptions: + raise ExceptionGroup("unparsed", exceptions) + + try: + return cls.from_raw(raw, validate=validate) + except ExceptionGroup as exc_group: + raise ExceptionGroup( + "invalid or unparsed metadata", exc_group.exceptions + ) from None + + metadata_version: _Validator[_MetadataVersion] = _Validator() + """:external:ref:`core-metadata-metadata-version` + (required; validated to be a valid metadata version)""" + # `name` is not normalized/typed to NormalizedName so as to provide access to + # the original/raw name. + name: _Validator[str] = _Validator() + """:external:ref:`core-metadata-name` + (required; validated using :func:`~packaging.utils.canonicalize_name` and its + *validate* parameter)""" + version: _Validator[version_module.Version] = _Validator() + """:external:ref:`core-metadata-version` (required)""" + dynamic: _Validator[list[str] | None] = _Validator( + added="2.2", + ) + """:external:ref:`core-metadata-dynamic` + (validated against core metadata field names and lowercased)""" + platforms: _Validator[list[str] | None] = _Validator() + """:external:ref:`core-metadata-platform`""" + supported_platforms: _Validator[list[str] | None] = _Validator(added="1.1") + """:external:ref:`core-metadata-supported-platform`""" + summary: _Validator[str | None] = _Validator() + """:external:ref:`core-metadata-summary` (validated to contain no newlines)""" + description: _Validator[str | None] = _Validator() # TODO 2.1: can be in body + """:external:ref:`core-metadata-description`""" + description_content_type: _Validator[str | None] = _Validator(added="2.1") + """:external:ref:`core-metadata-description-content-type` (validated)""" + keywords: _Validator[list[str] | None] = _Validator() + """:external:ref:`core-metadata-keywords`""" + home_page: _Validator[str | None] = _Validator() + """:external:ref:`core-metadata-home-page`""" + download_url: _Validator[str | None] = _Validator(added="1.1") + """:external:ref:`core-metadata-download-url`""" + author: _Validator[str | None] = _Validator() + """:external:ref:`core-metadata-author`""" + author_email: _Validator[str | None] = _Validator() + """:external:ref:`core-metadata-author-email`""" + maintainer: _Validator[str | None] = _Validator(added="1.2") + """:external:ref:`core-metadata-maintainer`""" + maintainer_email: _Validator[str | None] = _Validator(added="1.2") + """:external:ref:`core-metadata-maintainer-email`""" + license: _Validator[str | None] = _Validator() + """:external:ref:`core-metadata-license`""" + license_expression: _Validator[NormalizedLicenseExpression | None] = _Validator( + added="2.4" + ) + """:external:ref:`core-metadata-license-expression`""" + license_files: _Validator[list[str] | None] = _Validator(added="2.4") + """:external:ref:`core-metadata-license-file`""" + classifiers: _Validator[list[str] | None] = _Validator(added="1.1") + """:external:ref:`core-metadata-classifier`""" + requires_dist: _Validator[list[requirements.Requirement] | None] = _Validator( + added="1.2" + ) + """:external:ref:`core-metadata-requires-dist`""" + requires_python: _Validator[specifiers.SpecifierSet | None] = _Validator( + added="1.2" + ) + """:external:ref:`core-metadata-requires-python`""" + # Because `Requires-External` allows for non-PEP 440 version specifiers, we + # don't do any processing on the values. + requires_external: _Validator[list[str] | None] = _Validator(added="1.2") + """:external:ref:`core-metadata-requires-external`""" + project_urls: _Validator[dict[str, str] | None] = _Validator(added="1.2") + """:external:ref:`core-metadata-project-url`""" + # PEP 685 lets us raise an error if an extra doesn't pass `Name` validation + # regardless of metadata version. + provides_extra: _Validator[list[utils.NormalizedName] | None] = _Validator( + added="2.1", + ) + """:external:ref:`core-metadata-provides-extra`""" + provides_dist: _Validator[list[str] | None] = _Validator(added="1.2") + """:external:ref:`core-metadata-provides-dist`""" + obsoletes_dist: _Validator[list[str] | None] = _Validator(added="1.2") + """:external:ref:`core-metadata-obsoletes-dist`""" + requires: _Validator[list[str] | None] = _Validator(added="1.1") + """``Requires`` (deprecated)""" + provides: _Validator[list[str] | None] = _Validator(added="1.1") + """``Provides`` (deprecated)""" + obsoletes: _Validator[list[str] | None] = _Validator(added="1.1") + """``Obsoletes`` (deprecated)""" diff --git a/gestao_raul/Lib/site-packages/pip/_vendor/packaging/py.typed b/gestao_raul/Lib/site-packages/pip/_vendor/packaging/py.typed new file mode 100644 index 0000000..e69de29 diff --git a/gestao_raul/Lib/site-packages/pip/_vendor/packaging/requirements.py b/gestao_raul/Lib/site-packages/pip/_vendor/packaging/requirements.py index 1eab7dd..4e068c9 100644 --- a/gestao_raul/Lib/site-packages/pip/_vendor/packaging/requirements.py +++ b/gestao_raul/Lib/site-packages/pip/_vendor/packaging/requirements.py @@ -1,27 +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 __future__ import annotations -import re -import string -import urllib.parse -from typing import List, Optional as TOptional, Set +from typing import Any, Iterator -from pip._vendor.pyparsing import ( # noqa - Combine, - Literal as L, - Optional, - ParseException, - Regex, - Word, - ZeroOrMore, - originalTextFor, - stringEnd, - stringStart, -) - -from .markers import MARKER_EXPR, Marker -from .specifiers import LegacySpecifier, Specifier, SpecifierSet +from ._parser import parse_requirement as _parse_requirement +from ._tokenizer import ParserSyntaxError +from .markers import Marker, _normalize_extra_values +from .specifiers import SpecifierSet +from .utils import canonicalize_name class InvalidRequirement(ValueError): @@ -30,60 +18,6 @@ class InvalidRequirement(ValueError): """ -ALPHANUM = Word(string.ascii_letters + string.digits) - -LBRACKET = L("[").suppress() -RBRACKET = L("]").suppress() -LPAREN = L("(").suppress() -RPAREN = L(")").suppress() -COMMA = L(",").suppress() -SEMICOLON = L(";").suppress() -AT = L("@").suppress() - -PUNCTUATION = Word("-_.") -IDENTIFIER_END = ALPHANUM | (ZeroOrMore(PUNCTUATION) + ALPHANUM) -IDENTIFIER = Combine(ALPHANUM + ZeroOrMore(IDENTIFIER_END)) - -NAME = IDENTIFIER("name") -EXTRA = IDENTIFIER - -URI = Regex(r"[^ ]+")("url") -URL = AT + URI - -EXTRAS_LIST = EXTRA + ZeroOrMore(COMMA + EXTRA) -EXTRAS = (LBRACKET + Optional(EXTRAS_LIST) + RBRACKET)("extras") - -VERSION_PEP440 = Regex(Specifier._regex_str, re.VERBOSE | re.IGNORECASE) -VERSION_LEGACY = Regex(LegacySpecifier._regex_str, re.VERBOSE | re.IGNORECASE) - -VERSION_ONE = VERSION_PEP440 ^ VERSION_LEGACY -VERSION_MANY = Combine( - VERSION_ONE + ZeroOrMore(COMMA + VERSION_ONE), joinString=",", adjacent=False -)("_raw_spec") -_VERSION_SPEC = Optional((LPAREN + VERSION_MANY + RPAREN) | VERSION_MANY) -_VERSION_SPEC.setParseAction(lambda s, l, t: t._raw_spec or "") - -VERSION_SPEC = originalTextFor(_VERSION_SPEC)("specifier") -VERSION_SPEC.setParseAction(lambda s, l, t: t[1]) - -MARKER_EXPR = originalTextFor(MARKER_EXPR())("marker") -MARKER_EXPR.setParseAction( - lambda s, l, t: Marker(s[t._original_start : t._original_end]) -) -MARKER_SEPARATOR = SEMICOLON -MARKER = MARKER_SEPARATOR + MARKER_EXPR - -VERSION_AND_MARKER = VERSION_SPEC + Optional(MARKER) -URL_AND_MARKER = URL + Optional(MARKER) - -NAMED_REQUIREMENT = NAME + Optional(EXTRAS) + (URL_AND_MARKER | VERSION_AND_MARKER) - -REQUIREMENT = stringStart + NAMED_REQUIREMENT + stringEnd -# pyparsing isn't thread safe during initialization, so we do it eagerly, see -# issue #104 -REQUIREMENT.parseString("x[]") - - class Requirement: """Parse a requirement. @@ -99,48 +33,59 @@ class Requirement: def __init__(self, requirement_string: str) -> None: try: - req = REQUIREMENT.parseString(requirement_string) - except ParseException as e: - raise InvalidRequirement( - f'Parse error at "{ requirement_string[e.loc : e.loc + 8]!r}": {e.msg}' - ) + parsed = _parse_requirement(requirement_string) + except ParserSyntaxError as e: + raise InvalidRequirement(str(e)) from e - self.name: str = req.name - if req.url: - parsed_url = urllib.parse.urlparse(req.url) - if parsed_url.scheme == "file": - if urllib.parse.urlunparse(parsed_url) != req.url: - raise InvalidRequirement("Invalid URL given") - elif not (parsed_url.scheme and parsed_url.netloc) or ( - not parsed_url.scheme and not parsed_url.netloc - ): - raise InvalidRequirement(f"Invalid URL: {req.url}") - self.url: TOptional[str] = req.url - else: - self.url = None - self.extras: Set[str] = set(req.extras.asList() if req.extras else []) - self.specifier: SpecifierSet = SpecifierSet(req.specifier) - self.marker: TOptional[Marker] = req.marker if req.marker else None + self.name: str = parsed.name + self.url: str | None = parsed.url or None + self.extras: set[str] = set(parsed.extras or []) + self.specifier: SpecifierSet = SpecifierSet(parsed.specifier) + self.marker: Marker | None = None + if parsed.marker is not None: + self.marker = Marker.__new__(Marker) + self.marker._markers = _normalize_extra_values(parsed.marker) - def __str__(self) -> str: - parts: List[str] = [self.name] + def _iter_parts(self, name: str) -> Iterator[str]: + yield name if self.extras: formatted_extras = ",".join(sorted(self.extras)) - parts.append(f"[{formatted_extras}]") + yield f"[{formatted_extras}]" if self.specifier: - parts.append(str(self.specifier)) + yield str(self.specifier) if self.url: - parts.append(f"@ {self.url}") + yield f"@ {self.url}" if self.marker: - parts.append(" ") + yield " " if self.marker: - parts.append(f"; {self.marker}") + yield f"; {self.marker}" - return "".join(parts) + def __str__(self) -> str: + return "".join(self._iter_parts(self.name)) def __repr__(self) -> str: return f"" + + def __hash__(self) -> int: + return hash( + ( + self.__class__.__name__, + *self._iter_parts(canonicalize_name(self.name)), + ) + ) + + def __eq__(self, other: Any) -> bool: + if not isinstance(other, Requirement): + return NotImplemented + + return ( + canonicalize_name(self.name) == canonicalize_name(other.name) + and self.extras == other.extras + and self.specifier == other.specifier + and self.url == other.url + and self.marker == other.marker + ) diff --git a/gestao_raul/Lib/site-packages/pip/_vendor/packaging/specifiers.py b/gestao_raul/Lib/site-packages/pip/_vendor/packaging/specifiers.py index 0e218a6..f18016e 100644 --- a/gestao_raul/Lib/site-packages/pip/_vendor/packaging/specifiers.py +++ b/gestao_raul/Lib/site-packages/pip/_vendor/packaging/specifiers.py @@ -1,38 +1,43 @@ # 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. +""" +.. testsetup:: + + from pip._vendor.packaging.specifiers import Specifier, SpecifierSet, InvalidSpecifier + from pip._vendor.packaging.version import Version +""" + +from __future__ import annotations import abc -import functools import itertools import re -import warnings -from typing import ( - Callable, - Dict, - Iterable, - Iterator, - List, - Optional, - Pattern, - Set, - Tuple, - TypeVar, - Union, -) +from typing import Callable, Iterable, Iterator, TypeVar, Union from .utils import canonicalize_version -from .version import LegacyVersion, Version, parse +from .version import Version -ParsedVersion = Union[Version, LegacyVersion] -UnparsedVersion = Union[Version, LegacyVersion, str] -VersionTypeVar = TypeVar("VersionTypeVar", bound=UnparsedVersion) -CallableOperator = Callable[[ParsedVersion, str], bool] +UnparsedVersion = Union[Version, str] +UnparsedVersionVar = TypeVar("UnparsedVersionVar", bound=UnparsedVersion) +CallableOperator = Callable[[Version, str], bool] + + +def _coerce_version(version: UnparsedVersion) -> Version: + if not isinstance(version, Version): + version = Version(version) + return version class InvalidSpecifier(ValueError): """ - An invalid specifier was found, users should refer to PEP 440. + Raised when attempting to create a :class:`Specifier` with a specifier + string that is invalid. + + >>> Specifier("lolwat") + Traceback (most recent call last): + ... + packaging.specifiers.InvalidSpecifier: Invalid specifier: 'lolwat' """ @@ -40,266 +45,71 @@ class BaseSpecifier(metaclass=abc.ABCMeta): @abc.abstractmethod def __str__(self) -> str: """ - Returns the str representation of this Specifier like object. This + Returns the str representation of this Specifier-like object. This should be representative of the Specifier itself. """ @abc.abstractmethod def __hash__(self) -> int: """ - Returns a hash value for this Specifier like object. + Returns a hash value for this Specifier-like object. """ @abc.abstractmethod def __eq__(self, other: object) -> bool: """ - Returns a boolean representing whether or not the two Specifier like + Returns a boolean representing whether or not the two Specifier-like objects are equal. + + :param other: The other object to check against. """ - @abc.abstractproperty - def prereleases(self) -> Optional[bool]: - """ - Returns whether or not pre-releases as a whole are allowed by this - specifier. + @property + @abc.abstractmethod + def prereleases(self) -> bool | None: + """Whether or not pre-releases as a whole are allowed. + + This can be set to either ``True`` or ``False`` to explicitly enable or disable + prereleases or it can be set to ``None`` (the default) to use default semantics. """ @prereleases.setter def prereleases(self, value: bool) -> None: - """ - Sets whether or not pre-releases as a whole are allowed by this - specifier. + """Setter for :attr:`prereleases`. + + :param value: The value to set. """ @abc.abstractmethod - def contains(self, item: str, prereleases: Optional[bool] = None) -> bool: + def contains(self, item: str, prereleases: bool | None = None) -> bool: """ Determines if the given item is contained within this specifier. """ @abc.abstractmethod def filter( - self, iterable: Iterable[VersionTypeVar], prereleases: Optional[bool] = None - ) -> Iterable[VersionTypeVar]: + self, iterable: Iterable[UnparsedVersionVar], prereleases: bool | None = None + ) -> Iterator[UnparsedVersionVar]: """ Takes an iterable of items and filters them so that only items which are contained within this specifier are allowed in it. """ -class _IndividualSpecifier(BaseSpecifier): +class Specifier(BaseSpecifier): + """This class abstracts handling of version specifiers. - _operators: Dict[str, str] = {} - _regex: Pattern[str] + .. tip:: - def __init__(self, spec: str = "", prereleases: Optional[bool] = None) -> None: - match = self._regex.search(spec) - if not match: - raise InvalidSpecifier(f"Invalid specifier: '{spec}'") + It is generally not required to instantiate this manually. You should instead + prefer to work with :class:`SpecifierSet` instead, which can parse + comma-separated version specifiers (which is what package metadata contains). + """ - self._spec: Tuple[str, str] = ( - match.group("operator").strip(), - match.group("version").strip(), - ) - - # Store whether or not this Specifier should accept prereleases - self._prereleases = prereleases - - def __repr__(self) -> str: - pre = ( - f", prereleases={self.prereleases!r}" - if self._prereleases is not None - else "" - ) - - return f"<{self.__class__.__name__}({str(self)!r}{pre})>" - - def __str__(self) -> str: - return "{}{}".format(*self._spec) - - @property - def _canonical_spec(self) -> Tuple[str, str]: - return self._spec[0], canonicalize_version(self._spec[1]) - - def __hash__(self) -> int: - return hash(self._canonical_spec) - - def __eq__(self, other: object) -> bool: - if isinstance(other, str): - try: - other = self.__class__(str(other)) - except InvalidSpecifier: - return NotImplemented - elif not isinstance(other, self.__class__): - return NotImplemented - - return self._canonical_spec == other._canonical_spec - - def _get_operator(self, op: str) -> CallableOperator: - operator_callable: CallableOperator = getattr( - self, f"_compare_{self._operators[op]}" - ) - return operator_callable - - def _coerce_version(self, version: UnparsedVersion) -> ParsedVersion: - if not isinstance(version, (LegacyVersion, Version)): - version = parse(version) - return version - - @property - def operator(self) -> str: - return self._spec[0] - - @property - def version(self) -> str: - return self._spec[1] - - @property - def prereleases(self) -> Optional[bool]: - return self._prereleases - - @prereleases.setter - def prereleases(self, value: bool) -> None: - self._prereleases = value - - def __contains__(self, item: str) -> bool: - return self.contains(item) - - def contains( - self, item: UnparsedVersion, prereleases: Optional[bool] = None - ) -> bool: - - # Determine if prereleases are to be allowed or not. - if prereleases is None: - prereleases = self.prereleases - - # Normalize item to a Version or LegacyVersion, this allows us to have - # a shortcut for ``"2.0" in Specifier(">=2") - normalized_item = self._coerce_version(item) - - # Determine if we should be supporting prereleases in this specifier - # or not, if we do not support prereleases than we can short circuit - # logic if this version is a prereleases. - if normalized_item.is_prerelease and not prereleases: - return False - - # Actually do the comparison to determine if this item is contained - # within this Specifier or not. - operator_callable: CallableOperator = self._get_operator(self.operator) - return operator_callable(normalized_item, self.version) - - def filter( - self, iterable: Iterable[VersionTypeVar], prereleases: Optional[bool] = None - ) -> Iterable[VersionTypeVar]: - - yielded = False - found_prereleases = [] - - kw = {"prereleases": prereleases if prereleases is not None else True} - - # Attempt to iterate over all the values in the iterable and if any of - # them match, yield them. - for version in iterable: - parsed_version = self._coerce_version(version) - - if self.contains(parsed_version, **kw): - # If our version is a prerelease, and we were not set to allow - # prereleases, then we'll store it for later in case nothing - # else matches this specifier. - if parsed_version.is_prerelease and not ( - prereleases or self.prereleases - ): - found_prereleases.append(version) - # Either this is not a prerelease, or we should have been - # accepting prereleases from the beginning. - else: - yielded = True - yield version - - # Now that we've iterated over everything, determine if we've yielded - # any values, and if we have not and we have any prereleases stored up - # then we will go ahead and yield the prereleases. - if not yielded and found_prereleases: - for version in found_prereleases: - yield version - - -class LegacySpecifier(_IndividualSpecifier): - - _regex_str = r""" - (?P(==|!=|<=|>=|<|>)) - \s* - (?P - [^,;\s)]* # Since this is a "legacy" specifier, and the version - # string can be just about anything, we match everything - # except for whitespace, a semi-colon for marker support, - # a closing paren since versions can be enclosed in - # them, and a comma since it's a version separator. - ) - """ - - _regex = re.compile(r"^\s*" + _regex_str + r"\s*$", re.VERBOSE | re.IGNORECASE) - - _operators = { - "==": "equal", - "!=": "not_equal", - "<=": "less_than_equal", - ">=": "greater_than_equal", - "<": "less_than", - ">": "greater_than", - } - - def __init__(self, spec: str = "", prereleases: Optional[bool] = None) -> None: - super().__init__(spec, prereleases) - - warnings.warn( - "Creating a LegacyVersion has been deprecated and will be " - "removed in the next major release", - DeprecationWarning, - ) - - def _coerce_version(self, version: UnparsedVersion) -> LegacyVersion: - if not isinstance(version, LegacyVersion): - version = LegacyVersion(str(version)) - return version - - def _compare_equal(self, prospective: LegacyVersion, spec: str) -> bool: - return prospective == self._coerce_version(spec) - - def _compare_not_equal(self, prospective: LegacyVersion, spec: str) -> bool: - return prospective != self._coerce_version(spec) - - def _compare_less_than_equal(self, prospective: LegacyVersion, spec: str) -> bool: - return prospective <= self._coerce_version(spec) - - def _compare_greater_than_equal( - self, prospective: LegacyVersion, spec: str - ) -> bool: - return prospective >= self._coerce_version(spec) - - def _compare_less_than(self, prospective: LegacyVersion, spec: str) -> bool: - return prospective < self._coerce_version(spec) - - def _compare_greater_than(self, prospective: LegacyVersion, spec: str) -> bool: - return prospective > self._coerce_version(spec) - - -def _require_version_compare( - fn: Callable[["Specifier", ParsedVersion, str], bool] -) -> Callable[["Specifier", ParsedVersion, str], bool]: - @functools.wraps(fn) - def wrapped(self: "Specifier", prospective: ParsedVersion, spec: str) -> bool: - if not isinstance(prospective, Version): - return False - return fn(self, prospective, spec) - - return wrapped - - -class Specifier(_IndividualSpecifier): - - _regex_str = r""" + _operator_regex_str = r""" (?P(~=|==|!=|<=|>=|<|>|===)) + """ + _version_regex_str = r""" (?P (?: # The identity operators allow for an escape hatch that will @@ -309,8 +119,10 @@ class Specifier(_IndividualSpecifier): # but included entirely as an escape hatch. (?<====) # Only match for the identity operator \s* - [^\s]* # We just match everything, except for whitespace - # since we are only testing for strict identity. + [^\s;)]* # The arbitrary version can be just about anything, + # we match everything except for whitespace, a + # semi-colon for marker support, and a closing paren + # since versions can be enclosed in them. ) | (?: @@ -323,23 +135,23 @@ class Specifier(_IndividualSpecifier): v? (?:[0-9]+!)? # epoch [0-9]+(?:\.[0-9]+)* # release - (?: # pre release - [-_\.]? - (a|b|c|rc|alpha|beta|pre|preview) - [-_\.]? - [0-9]* - )? - (?: # post release - (?:-[0-9]+)|(?:[-_\.]?(post|rev|r)[-_\.]?[0-9]*) - )? - # You cannot use a wild card and a dev or local version - # together so group them with a | and make them optional. + # You cannot use a wild card and a pre-release, post-release, a dev or + # local version together so group them with a | and make them optional. (?: + \.\* # Wild card syntax of .* + | + (?: # pre release + [-_\.]? + (alpha|beta|preview|pre|a|b|c|rc) + [-_\.]? + [0-9]* + )? + (?: # post release + (?:-[0-9]+)|(?:[-_\.]?(post|rev|r)[-_\.]?[0-9]*) + )? (?:[-_\.]?dev[-_\.]?[0-9]*)? # dev release (?:\+[a-z0-9]+(?:[-_\.][a-z0-9]+)*)? # local - | - \.\* # Wild card syntax of .* )? ) | @@ -354,7 +166,7 @@ class Specifier(_IndividualSpecifier): [0-9]+(?:\.[0-9]+)+ # release (We have a + instead of a *) (?: # pre release [-_\.]? - (a|b|c|rc|alpha|beta|pre|preview) + (alpha|beta|preview|pre|a|b|c|rc) [-_\.]? [0-9]* )? @@ -379,7 +191,7 @@ class Specifier(_IndividualSpecifier): [0-9]+(?:\.[0-9]+)* # release (?: # pre release [-_\.]? - (a|b|c|rc|alpha|beta|pre|preview) + (alpha|beta|preview|pre|a|b|c|rc) [-_\.]? [0-9]* )? @@ -391,7 +203,10 @@ class Specifier(_IndividualSpecifier): ) """ - _regex = re.compile(r"^\s*" + _regex_str + r"\s*$", re.VERBOSE | re.IGNORECASE) + _regex = re.compile( + r"^\s*" + _operator_regex_str + _version_regex_str + r"\s*$", + re.VERBOSE | re.IGNORECASE, + ) _operators = { "~=": "compatible", @@ -404,9 +219,153 @@ class Specifier(_IndividualSpecifier): "===": "arbitrary", } - @_require_version_compare - def _compare_compatible(self, prospective: ParsedVersion, spec: str) -> bool: + def __init__(self, spec: str = "", prereleases: bool | None = None) -> None: + """Initialize a Specifier instance. + :param spec: + The string representation of a specifier which will be parsed and + normalized before use. + :param prereleases: + This tells the specifier if it should accept prerelease versions if + applicable or not. The default of ``None`` will autodetect it from the + given specifiers. + :raises InvalidSpecifier: + If the given specifier is invalid (i.e. bad syntax). + """ + match = self._regex.search(spec) + if not match: + raise InvalidSpecifier(f"Invalid specifier: {spec!r}") + + self._spec: tuple[str, str] = ( + match.group("operator").strip(), + match.group("version").strip(), + ) + + # Store whether or not this Specifier should accept prereleases + self._prereleases = prereleases + + # https://github.com/python/mypy/pull/13475#pullrequestreview-1079784515 + @property # type: ignore[override] + def prereleases(self) -> bool: + # If there is an explicit prereleases set for this, then we'll just + # blindly use that. + if self._prereleases is not None: + return self._prereleases + + # Look at all of our specifiers and determine if they are inclusive + # operators, and if they are if they are including an explicit + # prerelease. + operator, version = self._spec + if operator in ["==", ">=", "<=", "~=", "===", ">", "<"]: + # The == specifier can include a trailing .*, if it does we + # want to remove before parsing. + if operator == "==" and version.endswith(".*"): + version = version[:-2] + + # Parse the version, and if it is a pre-release than this + # specifier allows pre-releases. + if Version(version).is_prerelease: + return True + + return False + + @prereleases.setter + def prereleases(self, value: bool) -> None: + self._prereleases = value + + @property + def operator(self) -> str: + """The operator of this specifier. + + >>> Specifier("==1.2.3").operator + '==' + """ + return self._spec[0] + + @property + def version(self) -> str: + """The version of this specifier. + + >>> Specifier("==1.2.3").version + '1.2.3' + """ + return self._spec[1] + + def __repr__(self) -> str: + """A representation of the Specifier that shows all internal state. + + >>> Specifier('>=1.0.0') + =1.0.0')> + >>> Specifier('>=1.0.0', prereleases=False) + =1.0.0', prereleases=False)> + >>> Specifier('>=1.0.0', prereleases=True) + =1.0.0', prereleases=True)> + """ + pre = ( + f", prereleases={self.prereleases!r}" + if self._prereleases is not None + else "" + ) + + return f"<{self.__class__.__name__}({str(self)!r}{pre})>" + + def __str__(self) -> str: + """A string representation of the Specifier that can be round-tripped. + + >>> str(Specifier('>=1.0.0')) + '>=1.0.0' + >>> str(Specifier('>=1.0.0', prereleases=False)) + '>=1.0.0' + """ + return "{}{}".format(*self._spec) + + @property + def _canonical_spec(self) -> tuple[str, str]: + canonical_version = canonicalize_version( + self._spec[1], + strip_trailing_zero=(self._spec[0] != "~="), + ) + return self._spec[0], canonical_version + + def __hash__(self) -> int: + return hash(self._canonical_spec) + + def __eq__(self, other: object) -> bool: + """Whether or not the two Specifier-like objects are equal. + + :param other: The other object to check against. + + The value of :attr:`prereleases` is ignored. + + >>> Specifier("==1.2.3") == Specifier("== 1.2.3.0") + True + >>> (Specifier("==1.2.3", prereleases=False) == + ... Specifier("==1.2.3", prereleases=True)) + True + >>> Specifier("==1.2.3") == "==1.2.3" + True + >>> Specifier("==1.2.3") == Specifier("==1.2.4") + False + >>> Specifier("==1.2.3") == Specifier("~=1.2.3") + False + """ + if isinstance(other, str): + try: + other = self.__class__(str(other)) + except InvalidSpecifier: + return NotImplemented + elif not isinstance(other, self.__class__): + return NotImplemented + + return self._canonical_spec == other._canonical_spec + + def _get_operator(self, op: str) -> CallableOperator: + operator_callable: CallableOperator = getattr( + self, f"_compare_{self._operators[op]}" + ) + return operator_callable + + def _compare_compatible(self, prospective: Version, spec: str) -> bool: # Compatible releases have an equivalent combination of >= and ==. That # is that ~=2.2 is equivalent to >=2.2,==2.*. This allows us to # implement this in terms of the other specifiers instead of @@ -415,7 +374,7 @@ class Specifier(_IndividualSpecifier): # We want everything but the last item in the version, but we want to # ignore suffix segments. - prefix = ".".join( + prefix = _version_join( list(itertools.takewhile(_is_not_suffix, _version_split(spec)))[:-1] ) @@ -426,34 +385,34 @@ class Specifier(_IndividualSpecifier): prospective, prefix ) - @_require_version_compare - def _compare_equal(self, prospective: ParsedVersion, spec: str) -> bool: - + def _compare_equal(self, prospective: Version, spec: str) -> bool: # We need special logic to handle prefix matching if spec.endswith(".*"): # In the case of prefix matching we want to ignore local segment. - prospective = Version(prospective.public) - # Split the spec out by dots, and pretend that there is an implicit - # dot in between a release segment and a pre-release segment. - split_spec = _version_split(spec[:-2]) # Remove the trailing .* + normalized_prospective = canonicalize_version( + prospective.public, strip_trailing_zero=False + ) + # Get the normalized version string ignoring the trailing .* + normalized_spec = canonicalize_version(spec[:-2], strip_trailing_zero=False) + # Split the spec out by bangs and dots, and pretend that there is + # an implicit dot in between a release segment and a pre-release segment. + split_spec = _version_split(normalized_spec) - # Split the prospective version out by dots, and pretend that there - # is an implicit dot in between a release segment and a pre-release - # segment. - split_prospective = _version_split(str(prospective)) + # Split the prospective version out by bangs and dots, and pretend + # that there is an implicit dot in between a release segment and + # a pre-release segment. + split_prospective = _version_split(normalized_prospective) + + # 0-pad the prospective version before shortening it to get the correct + # shortened version. + padded_prospective, _ = _pad_version(split_prospective, split_spec) # Shorten the prospective version to be the same length as the spec # so that we can determine if the specifier is a prefix of the # prospective version or not. - shortened_prospective = split_prospective[: len(split_spec)] + shortened_prospective = padded_prospective[: len(split_spec)] - # Pad out our two sides with zeros so that they both equal the same - # length. - padded_spec, padded_prospective = _pad_version( - split_spec, shortened_prospective - ) - - return padded_prospective == padded_spec + return shortened_prospective == split_spec else: # Convert our spec string into a Version spec_version = Version(spec) @@ -466,31 +425,22 @@ class Specifier(_IndividualSpecifier): return prospective == spec_version - @_require_version_compare - def _compare_not_equal(self, prospective: ParsedVersion, spec: str) -> bool: + def _compare_not_equal(self, prospective: Version, spec: str) -> bool: return not self._compare_equal(prospective, spec) - @_require_version_compare - def _compare_less_than_equal(self, prospective: ParsedVersion, spec: str) -> bool: - + def _compare_less_than_equal(self, prospective: Version, spec: str) -> bool: # NB: Local version identifiers are NOT permitted in the version # specifier, so local version labels can be universally removed from # the prospective version. return Version(prospective.public) <= Version(spec) - @_require_version_compare - def _compare_greater_than_equal( - self, prospective: ParsedVersion, spec: str - ) -> bool: - + def _compare_greater_than_equal(self, prospective: Version, spec: str) -> bool: # NB: Local version identifiers are NOT permitted in the version # specifier, so local version labels can be universally removed from # the prospective version. return Version(prospective.public) >= Version(spec) - @_require_version_compare - def _compare_less_than(self, prospective: ParsedVersion, spec_str: str) -> bool: - + def _compare_less_than(self, prospective: Version, spec_str: str) -> bool: # Convert our spec to a Version instance, since we'll want to work with # it as a version. spec = Version(spec_str) @@ -514,9 +464,7 @@ class Specifier(_IndividualSpecifier): # version in the spec. return True - @_require_version_compare - def _compare_greater_than(self, prospective: ParsedVersion, spec_str: str) -> bool: - + def _compare_greater_than(self, prospective: Version, spec_str: str) -> bool: # Convert our spec to a Version instance, since we'll want to work with # it as a version. spec = Version(spec_str) @@ -549,42 +497,150 @@ class Specifier(_IndividualSpecifier): def _compare_arbitrary(self, prospective: Version, spec: str) -> bool: return str(prospective).lower() == str(spec).lower() - @property - def prereleases(self) -> bool: + def __contains__(self, item: str | Version) -> bool: + """Return whether or not the item is contained in this specifier. - # If there is an explicit prereleases set for this, then we'll just - # blindly use that. - if self._prereleases is not None: - return self._prereleases + :param item: The item to check for. - # Look at all of our specifiers and determine if they are inclusive - # operators, and if they are if they are including an explicit - # prerelease. - operator, version = self._spec - if operator in ["==", ">=", "<=", "~=", "==="]: - # The == specifier can include a trailing .*, if it does we - # want to remove before parsing. - if operator == "==" and version.endswith(".*"): - version = version[:-2] + This is used for the ``in`` operator and behaves the same as + :meth:`contains` with no ``prereleases`` argument passed. - # Parse the version, and if it is a pre-release than this - # specifier allows pre-releases. - if parse(version).is_prerelease: - return True + >>> "1.2.3" in Specifier(">=1.2.3") + True + >>> Version("1.2.3") in Specifier(">=1.2.3") + True + >>> "1.0.0" in Specifier(">=1.2.3") + False + >>> "1.3.0a1" in Specifier(">=1.2.3") + False + >>> "1.3.0a1" in Specifier(">=1.2.3", prereleases=True) + True + """ + return self.contains(item) - return False + def contains(self, item: UnparsedVersion, prereleases: bool | None = None) -> bool: + """Return whether or not the item is contained in this specifier. - @prereleases.setter - def prereleases(self, value: bool) -> None: - self._prereleases = value + :param item: + The item to check for, which can be a version string or a + :class:`Version` instance. + :param prereleases: + Whether or not to match prereleases with this Specifier. If set to + ``None`` (the default), it uses :attr:`prereleases` to determine + whether or not prereleases are allowed. + + >>> Specifier(">=1.2.3").contains("1.2.3") + True + >>> Specifier(">=1.2.3").contains(Version("1.2.3")) + True + >>> Specifier(">=1.2.3").contains("1.0.0") + False + >>> Specifier(">=1.2.3").contains("1.3.0a1") + False + >>> Specifier(">=1.2.3", prereleases=True).contains("1.3.0a1") + True + >>> Specifier(">=1.2.3").contains("1.3.0a1", prereleases=True) + True + """ + + # Determine if prereleases are to be allowed or not. + if prereleases is None: + prereleases = self.prereleases + + # Normalize item to a Version, this allows us to have a shortcut for + # "2.0" in Specifier(">=2") + normalized_item = _coerce_version(item) + + # Determine if we should be supporting prereleases in this specifier + # or not, if we do not support prereleases than we can short circuit + # logic if this version is a prereleases. + if normalized_item.is_prerelease and not prereleases: + return False + + # Actually do the comparison to determine if this item is contained + # within this Specifier or not. + operator_callable: CallableOperator = self._get_operator(self.operator) + return operator_callable(normalized_item, self.version) + + def filter( + self, iterable: Iterable[UnparsedVersionVar], prereleases: bool | None = None + ) -> Iterator[UnparsedVersionVar]: + """Filter items in the given iterable, that match the specifier. + + :param iterable: + An iterable that can contain version strings and :class:`Version` instances. + The items in the iterable will be filtered according to the specifier. + :param prereleases: + Whether or not to allow prereleases in the returned iterator. If set to + ``None`` (the default), it will be intelligently decide whether to allow + prereleases or not (based on the :attr:`prereleases` attribute, and + whether the only versions matching are prereleases). + + This method is smarter than just ``filter(Specifier().contains, [...])`` + because it implements the rule from :pep:`440` that a prerelease item + SHOULD be accepted if no other versions match the given specifier. + + >>> list(Specifier(">=1.2.3").filter(["1.2", "1.3", "1.5a1"])) + ['1.3'] + >>> list(Specifier(">=1.2.3").filter(["1.2", "1.2.3", "1.3", Version("1.4")])) + ['1.2.3', '1.3', ] + >>> list(Specifier(">=1.2.3").filter(["1.2", "1.5a1"])) + ['1.5a1'] + >>> list(Specifier(">=1.2.3").filter(["1.3", "1.5a1"], prereleases=True)) + ['1.3', '1.5a1'] + >>> list(Specifier(">=1.2.3", prereleases=True).filter(["1.3", "1.5a1"])) + ['1.3', '1.5a1'] + """ + + yielded = False + found_prereleases = [] + + kw = {"prereleases": prereleases if prereleases is not None else True} + + # Attempt to iterate over all the values in the iterable and if any of + # them match, yield them. + for version in iterable: + parsed_version = _coerce_version(version) + + if self.contains(parsed_version, **kw): + # If our version is a prerelease, and we were not set to allow + # prereleases, then we'll store it for later in case nothing + # else matches this specifier. + if parsed_version.is_prerelease and not ( + prereleases or self.prereleases + ): + found_prereleases.append(version) + # Either this is not a prerelease, or we should have been + # accepting prereleases from the beginning. + else: + yielded = True + yield version + + # Now that we've iterated over everything, determine if we've yielded + # any values, and if we have not and we have any prereleases stored up + # then we will go ahead and yield the prereleases. + if not yielded and found_prereleases: + for version in found_prereleases: + yield version _prefix_regex = re.compile(r"^([0-9]+)((?:a|b|c|rc)[0-9]+)$") -def _version_split(version: str) -> List[str]: - result: List[str] = [] - for item in version.split("."): +def _version_split(version: str) -> list[str]: + """Split version into components. + + The split components are intended for version comparison. The logic does + not attempt to retain the original version string, so joining the + components back with :func:`_version_join` may not produce the original + version string. + """ + result: list[str] = [] + + epoch, _, rest = version.rpartition("!") + result.append(epoch or "0") + + for item in rest.split("."): match = _prefix_regex.search(item) if match: result.extend(match.groups()) @@ -593,13 +649,24 @@ def _version_split(version: str) -> List[str]: return result +def _version_join(components: list[str]) -> str: + """Join split version components into a version string. + + This function assumes the input came from :func:`_version_split`, where the + first component must be the epoch (either empty or numeric), and all other + components numeric. + """ + epoch, *rest = components + return f"{epoch}!{'.'.join(rest)}" + + def _is_not_suffix(segment: str) -> bool: return not any( segment.startswith(prefix) for prefix in ("dev", "a", "b", "rc", "post") ) -def _pad_version(left: List[str], right: List[str]) -> Tuple[List[str], List[str]]: +def _pad_version(left: list[str], right: list[str]) -> tuple[list[str], list[str]]: left_split, right_split = [], [] # Get the release segment of our versions @@ -614,35 +681,91 @@ def _pad_version(left: List[str], right: List[str]) -> Tuple[List[str], List[str left_split.insert(1, ["0"] * max(0, len(right_split[0]) - len(left_split[0]))) right_split.insert(1, ["0"] * max(0, len(left_split[0]) - len(right_split[0]))) - return (list(itertools.chain(*left_split)), list(itertools.chain(*right_split))) + return ( + list(itertools.chain.from_iterable(left_split)), + list(itertools.chain.from_iterable(right_split)), + ) class SpecifierSet(BaseSpecifier): + """This class abstracts handling of a set of version specifiers. + + It can be passed a single specifier (``>=3.0``), a comma-separated list of + specifiers (``>=3.0,!=3.1``), or no specifier at all. + """ + def __init__( - self, specifiers: str = "", prereleases: Optional[bool] = None + self, + specifiers: str | Iterable[Specifier] = "", + prereleases: bool | None = None, ) -> None: + """Initialize a SpecifierSet instance. - # Split on , to break each individual specifier into it's own item, and - # strip each item to remove leading/trailing whitespace. - split_specifiers = [s.strip() for s in specifiers.split(",") if s.strip()] + :param specifiers: + The string representation of a specifier or a comma-separated list of + specifiers which will be parsed and normalized before use. + May also be an iterable of ``Specifier`` instances, which will be used + as is. + :param prereleases: + This tells the SpecifierSet if it should accept prerelease versions if + applicable or not. The default of ``None`` will autodetect it from the + given specifiers. - # Parsed each individual specifier, attempting first to make it a - # Specifier and falling back to a LegacySpecifier. - parsed: Set[_IndividualSpecifier] = set() - for specifier in split_specifiers: - try: - parsed.add(Specifier(specifier)) - except InvalidSpecifier: - parsed.add(LegacySpecifier(specifier)) + :raises InvalidSpecifier: + If the given ``specifiers`` are not parseable than this exception will be + raised. + """ - # Turn our parsed specifiers into a frozen set and save them for later. - self._specs = frozenset(parsed) + if isinstance(specifiers, str): + # Split on `,` to break each individual specifier into its own item, and + # strip each item to remove leading/trailing whitespace. + split_specifiers = [s.strip() for s in specifiers.split(",") if s.strip()] + + # Make each individual specifier a Specifier and save in a frozen set + # for later. + self._specs = frozenset(map(Specifier, split_specifiers)) + else: + # Save the supplied specifiers in a frozen set. + self._specs = frozenset(specifiers) # Store our prereleases value so we can use it later to determine if # we accept prereleases or not. self._prereleases = prereleases + @property + def prereleases(self) -> bool | None: + # If we have been given an explicit prerelease modifier, then we'll + # pass that through here. + if self._prereleases is not None: + return self._prereleases + + # If we don't have any specifiers, and we don't have a forced value, + # then we'll just return None since we don't know if this should have + # pre-releases or not. + if not self._specs: + return None + + # Otherwise we'll see if any of the given specifiers accept + # prereleases, if any of them do we'll return True, otherwise False. + return any(s.prereleases for s in self._specs) + + @prereleases.setter + def prereleases(self, value: bool) -> None: + self._prereleases = value + def __repr__(self) -> str: + """A representation of the specifier set that shows all internal state. + + Note that the ordering of the individual specifiers within the set may not + match the input string. + + >>> SpecifierSet('>=1.0.0,!=2.0.0') + =1.0.0')> + >>> SpecifierSet('>=1.0.0,!=2.0.0', prereleases=False) + =1.0.0', prereleases=False)> + >>> SpecifierSet('>=1.0.0,!=2.0.0', prereleases=True) + =1.0.0', prereleases=True)> + """ pre = ( f", prereleases={self.prereleases!r}" if self._prereleases is not None @@ -652,12 +775,31 @@ class SpecifierSet(BaseSpecifier): return f"" def __str__(self) -> str: + """A string representation of the specifier set that can be round-tripped. + + Note that the ordering of the individual specifiers within the set may not + match the input string. + + >>> str(SpecifierSet(">=1.0.0,!=1.0.1")) + '!=1.0.1,>=1.0.0' + >>> str(SpecifierSet(">=1.0.0,!=1.0.1", prereleases=False)) + '!=1.0.1,>=1.0.0' + """ return ",".join(sorted(str(s) for s in self._specs)) def __hash__(self) -> int: return hash(self._specs) - def __and__(self, other: Union["SpecifierSet", str]) -> "SpecifierSet": + def __and__(self, other: SpecifierSet | str) -> SpecifierSet: + """Return a SpecifierSet which is a combination of the two sets. + + :param other: The other object to combine with. + + >>> SpecifierSet(">=1.0.0,!=1.0.1") & '<=2.0.0,!=2.0.1' + =1.0.0')> + >>> SpecifierSet(">=1.0.0,!=1.0.1") & SpecifierSet('<=2.0.0,!=2.0.1') + =1.0.0')> + """ if isinstance(other, str): other = SpecifierSet(other) elif not isinstance(other, SpecifierSet): @@ -681,7 +823,25 @@ class SpecifierSet(BaseSpecifier): return specifier def __eq__(self, other: object) -> bool: - if isinstance(other, (str, _IndividualSpecifier)): + """Whether or not the two SpecifierSet-like objects are equal. + + :param other: The other object to check against. + + The value of :attr:`prereleases` is ignored. + + >>> SpecifierSet(">=1.0.0,!=1.0.1") == SpecifierSet(">=1.0.0,!=1.0.1") + True + >>> (SpecifierSet(">=1.0.0,!=1.0.1", prereleases=False) == + ... SpecifierSet(">=1.0.0,!=1.0.1", prereleases=True)) + True + >>> SpecifierSet(">=1.0.0,!=1.0.1") == ">=1.0.0,!=1.0.1" + True + >>> SpecifierSet(">=1.0.0,!=1.0.1") == SpecifierSet(">=1.0.0") + False + >>> SpecifierSet(">=1.0.0,!=1.0.1") == SpecifierSet(">=1.0.0,!=1.0.2") + False + """ + if isinstance(other, (str, Specifier)): other = SpecifierSet(str(other)) elif not isinstance(other, SpecifierSet): return NotImplemented @@ -689,43 +849,72 @@ class SpecifierSet(BaseSpecifier): return self._specs == other._specs def __len__(self) -> int: + """Returns the number of specifiers in this specifier set.""" return len(self._specs) - def __iter__(self) -> Iterator[_IndividualSpecifier]: + def __iter__(self) -> Iterator[Specifier]: + """ + Returns an iterator over all the underlying :class:`Specifier` instances + in this specifier set. + + >>> sorted(SpecifierSet(">=1.0.0,!=1.0.1"), key=str) + [, =1.0.0')>] + """ return iter(self._specs) - @property - def prereleases(self) -> Optional[bool]: - - # If we have been given an explicit prerelease modifier, then we'll - # pass that through here. - if self._prereleases is not None: - return self._prereleases - - # If we don't have any specifiers, and we don't have a forced value, - # then we'll just return None since we don't know if this should have - # pre-releases or not. - if not self._specs: - return None - - # Otherwise we'll see if any of the given specifiers accept - # prereleases, if any of them do we'll return True, otherwise False. - return any(s.prereleases for s in self._specs) - - @prereleases.setter - def prereleases(self, value: bool) -> None: - self._prereleases = value - def __contains__(self, item: UnparsedVersion) -> bool: + """Return whether or not the item is contained in this specifier. + + :param item: The item to check for. + + This is used for the ``in`` operator and behaves the same as + :meth:`contains` with no ``prereleases`` argument passed. + + >>> "1.2.3" in SpecifierSet(">=1.0.0,!=1.0.1") + True + >>> Version("1.2.3") in SpecifierSet(">=1.0.0,!=1.0.1") + True + >>> "1.0.1" in SpecifierSet(">=1.0.0,!=1.0.1") + False + >>> "1.3.0a1" in SpecifierSet(">=1.0.0,!=1.0.1") + False + >>> "1.3.0a1" in SpecifierSet(">=1.0.0,!=1.0.1", prereleases=True) + True + """ return self.contains(item) def contains( - self, item: UnparsedVersion, prereleases: Optional[bool] = None + self, + item: UnparsedVersion, + prereleases: bool | None = None, + installed: bool | None = None, ) -> bool: + """Return whether or not the item is contained in this SpecifierSet. - # Ensure that our item is a Version or LegacyVersion instance. - if not isinstance(item, (LegacyVersion, Version)): - item = parse(item) + :param item: + The item to check for, which can be a version string or a + :class:`Version` instance. + :param prereleases: + Whether or not to match prereleases with this SpecifierSet. If set to + ``None`` (the default), it uses :attr:`prereleases` to determine + whether or not prereleases are allowed. + + >>> SpecifierSet(">=1.0.0,!=1.0.1").contains("1.2.3") + True + >>> SpecifierSet(">=1.0.0,!=1.0.1").contains(Version("1.2.3")) + True + >>> SpecifierSet(">=1.0.0,!=1.0.1").contains("1.0.1") + False + >>> SpecifierSet(">=1.0.0,!=1.0.1").contains("1.3.0a1") + False + >>> SpecifierSet(">=1.0.0,!=1.0.1", prereleases=True).contains("1.3.0a1") + True + >>> SpecifierSet(">=1.0.0,!=1.0.1").contains("1.3.0a1", prereleases=True) + True + """ + # Ensure that our item is a Version instance. + if not isinstance(item, Version): + item = Version(item) # Determine if we're forcing a prerelease or not, if we're not forcing # one for this particular filter call, then we'll use whatever the @@ -742,6 +931,9 @@ class SpecifierSet(BaseSpecifier): if not prereleases and item.is_prerelease: return False + if installed and item.is_prerelease: + item = Version(item.base_version) + # We simply dispatch to the underlying specs here to make sure that the # given version is contained within all of them. # Note: This use of all() here means that an empty set of specifiers @@ -749,9 +941,46 @@ class SpecifierSet(BaseSpecifier): return all(s.contains(item, prereleases=prereleases) for s in self._specs) def filter( - self, iterable: Iterable[VersionTypeVar], prereleases: Optional[bool] = None - ) -> Iterable[VersionTypeVar]: + self, iterable: Iterable[UnparsedVersionVar], prereleases: bool | None = None + ) -> Iterator[UnparsedVersionVar]: + """Filter items in the given iterable, that match the specifiers in this set. + :param iterable: + An iterable that can contain version strings and :class:`Version` instances. + The items in the iterable will be filtered according to the specifier. + :param prereleases: + Whether or not to allow prereleases in the returned iterator. If set to + ``None`` (the default), it will be intelligently decide whether to allow + prereleases or not (based on the :attr:`prereleases` attribute, and + whether the only versions matching are prereleases). + + This method is smarter than just ``filter(SpecifierSet(...).contains, [...])`` + because it implements the rule from :pep:`440` that a prerelease item + SHOULD be accepted if no other versions match the given specifier. + + >>> list(SpecifierSet(">=1.2.3").filter(["1.2", "1.3", "1.5a1"])) + ['1.3'] + >>> list(SpecifierSet(">=1.2.3").filter(["1.2", "1.3", Version("1.4")])) + ['1.3', ] + >>> list(SpecifierSet(">=1.2.3").filter(["1.2", "1.5a1"])) + [] + >>> list(SpecifierSet(">=1.2.3").filter(["1.3", "1.5a1"], prereleases=True)) + ['1.3', '1.5a1'] + >>> list(SpecifierSet(">=1.2.3", prereleases=True).filter(["1.3", "1.5a1"])) + ['1.3', '1.5a1'] + + An "empty" SpecifierSet will filter items based on the presence of prerelease + versions in the set. + + >>> list(SpecifierSet("").filter(["1.3", "1.5a1"])) + ['1.3'] + >>> list(SpecifierSet("").filter(["1.5a1"])) + ['1.5a1'] + >>> list(SpecifierSet("", prereleases=True).filter(["1.3", "1.5a1"])) + ['1.3', '1.5a1'] + >>> list(SpecifierSet("").filter(["1.3", "1.5a1"], prereleases=True)) + ['1.3', '1.5a1'] + """ # Determine if we're forcing a prerelease or not, if we're not forcing # one for this particular filter call, then we'll use whatever the # SpecifierSet thinks for whether or not we should support prereleases. @@ -764,27 +993,16 @@ class SpecifierSet(BaseSpecifier): if self._specs: for spec in self._specs: iterable = spec.filter(iterable, prereleases=bool(prereleases)) - return iterable + return iter(iterable) # If we do not have any specifiers, then we need to have a rough filter # which will filter out any pre-releases, unless there are no final - # releases, and which will filter out LegacyVersion in general. + # releases. else: - filtered: List[VersionTypeVar] = [] - found_prereleases: List[VersionTypeVar] = [] - - item: UnparsedVersion - parsed_version: Union[Version, LegacyVersion] + filtered: list[UnparsedVersionVar] = [] + found_prereleases: list[UnparsedVersionVar] = [] for item in iterable: - # Ensure that we some kind of Version class for this item. - if not isinstance(item, (LegacyVersion, Version)): - parsed_version = parse(item) - else: - parsed_version = item - - # Filter out any item which is parsed as a LegacyVersion - if isinstance(parsed_version, LegacyVersion): - continue + parsed_version = _coerce_version(item) # Store any item which is a pre-release for later unless we've # already found a final version or we are accepting prereleases @@ -797,6 +1015,6 @@ class SpecifierSet(BaseSpecifier): # If we've found no items except for pre-releases, then we'll go # ahead and use the pre-releases if not filtered and found_prereleases and prereleases is None: - return found_prereleases + return iter(found_prereleases) - return filtered + return iter(filtered) diff --git a/gestao_raul/Lib/site-packages/pip/_vendor/packaging/tags.py b/gestao_raul/Lib/site-packages/pip/_vendor/packaging/tags.py index 9a3d25a..f590340 100644 --- a/gestao_raul/Lib/site-packages/pip/_vendor/packaging/tags.py +++ b/gestao_raul/Lib/site-packages/pip/_vendor/packaging/tags.py @@ -2,21 +2,21 @@ # 2.0, and the BSD License. See the LICENSE file in the root of this repository # for complete details. +from __future__ import annotations + import logging import platform +import re +import struct +import subprocess import sys import sysconfig from importlib.machinery import EXTENSION_SUFFIXES from typing import ( - Dict, - FrozenSet, Iterable, Iterator, - List, - Optional, Sequence, Tuple, - Union, cast, ) @@ -25,9 +25,9 @@ from . import _manylinux, _musllinux logger = logging.getLogger(__name__) PythonVersion = Sequence[int] -MacVersion = Tuple[int, int] +AppleVersion = Tuple[int, int] -INTERPRETER_SHORT_NAMES: Dict[str, str] = { +INTERPRETER_SHORT_NAMES: dict[str, str] = { "python": "py", # Generic. "cpython": "cp", "pypy": "pp", @@ -36,7 +36,7 @@ INTERPRETER_SHORT_NAMES: Dict[str, str] = { } -_32_BIT_INTERPRETER = sys.maxsize <= 2 ** 32 +_32_BIT_INTERPRETER = struct.calcsize("P") == 4 class Tag: @@ -47,7 +47,7 @@ class Tag: is also supported. """ - __slots__ = ["_interpreter", "_abi", "_platform", "_hash"] + __slots__ = ["_abi", "_hash", "_interpreter", "_platform"] def __init__(self, interpreter: str, abi: str, platform: str) -> None: self._interpreter = interpreter.lower() @@ -93,7 +93,7 @@ class Tag: return f"<{self} @ {id(self)}>" -def parse_tag(tag: str) -> FrozenSet[Tag]: +def parse_tag(tag: str) -> frozenset[Tag]: """ Parses the provided tag (e.g. `py3-none-any`) into a frozenset of Tag instances. @@ -109,8 +109,8 @@ def parse_tag(tag: str) -> FrozenSet[Tag]: return frozenset(tags) -def _get_config_var(name: str, warn: bool = False) -> Union[int, str, None]: - value = sysconfig.get_config_var(name) +def _get_config_var(name: str, warn: bool = False) -> int | str | None: + value: int | str | None = sysconfig.get_config_var(name) if value is None and warn: logger.debug( "Config variable '%s' is unset, Python ABI tag may be incorrect", name @@ -119,23 +119,40 @@ def _get_config_var(name: str, warn: bool = False) -> Union[int, str, None]: def _normalize_string(string: str) -> str: - return string.replace(".", "_").replace("-", "_") + return string.replace(".", "_").replace("-", "_").replace(" ", "_") -def _abi3_applies(python_version: PythonVersion) -> bool: +def _is_threaded_cpython(abis: list[str]) -> bool: + """ + Determine if the ABI corresponds to a threaded (`--disable-gil`) build. + + The threaded builds are indicated by a "t" in the abiflags. + """ + if len(abis) == 0: + return False + # expect e.g., cp313 + m = re.match(r"cp\d+(.*)", abis[0]) + if not m: + return False + abiflags = m.group(1) + return "t" in abiflags + + +def _abi3_applies(python_version: PythonVersion, threading: bool) -> bool: """ Determine if the Python version supports abi3. - PEP 384 was first implemented in Python 3.2. + PEP 384 was first implemented in Python 3.2. The threaded (`--disable-gil`) + builds do not support abi3. """ - return len(python_version) > 1 and tuple(python_version) >= (3, 2) + return len(python_version) > 1 and tuple(python_version) >= (3, 2) and not threading -def _cpython_abis(py_version: PythonVersion, warn: bool = False) -> List[str]: +def _cpython_abis(py_version: PythonVersion, warn: bool = False) -> list[str]: py_version = tuple(py_version) # To allow for version comparison. abis = [] version = _version_nodot(py_version[:2]) - debug = pymalloc = ucs4 = "" + threading = debug = pymalloc = ucs4 = "" with_debug = _get_config_var("Py_DEBUG", warn) has_refcount = hasattr(sys, "gettotalrefcount") # Windows doesn't set Py_DEBUG, so checking for support of debug-compiled @@ -144,6 +161,8 @@ def _cpython_abis(py_version: PythonVersion, warn: bool = False) -> List[str]: has_ext = "_d.pyd" in EXTENSION_SUFFIXES if with_debug or (with_debug is None and (has_refcount or has_ext)): debug = "d" + if py_version >= (3, 13) and _get_config_var("Py_GIL_DISABLED", warn): + threading = "t" if py_version < (3, 8): with_pymalloc = _get_config_var("WITH_PYMALLOC", warn) if with_pymalloc or with_pymalloc is None: @@ -157,20 +176,15 @@ def _cpython_abis(py_version: PythonVersion, warn: bool = False) -> List[str]: elif debug: # Debug builds can also load "normal" extension modules. # We can also assume no UCS-4 or pymalloc requirement. - abis.append(f"cp{version}") - abis.insert( - 0, - "cp{version}{debug}{pymalloc}{ucs4}".format( - version=version, debug=debug, pymalloc=pymalloc, ucs4=ucs4 - ), - ) + abis.append(f"cp{version}{threading}") + abis.insert(0, f"cp{version}{threading}{debug}{pymalloc}{ucs4}") return abis def cpython_tags( - python_version: Optional[PythonVersion] = None, - abis: Optional[Iterable[str]] = None, - platforms: Optional[Iterable[str]] = None, + python_version: PythonVersion | None = None, + abis: Iterable[str] | None = None, + platforms: Iterable[str] | None = None, *, warn: bool = False, ) -> Iterator[Tag]: @@ -211,29 +225,66 @@ def cpython_tags( for abi in abis: for platform_ in platforms: yield Tag(interpreter, abi, platform_) - if _abi3_applies(python_version): + + threading = _is_threaded_cpython(abis) + use_abi3 = _abi3_applies(python_version, threading) + if use_abi3: yield from (Tag(interpreter, "abi3", platform_) for platform_ in platforms) yield from (Tag(interpreter, "none", platform_) for platform_ in platforms) - if _abi3_applies(python_version): + if use_abi3: for minor_version in range(python_version[1] - 1, 1, -1): for platform_ in platforms: - interpreter = "cp{version}".format( - version=_version_nodot((python_version[0], minor_version)) - ) + version = _version_nodot((python_version[0], minor_version)) + interpreter = f"cp{version}" yield Tag(interpreter, "abi3", platform_) -def _generic_abi() -> Iterator[str]: - abi = sysconfig.get_config_var("SOABI") - if abi: - yield _normalize_string(abi) +def _generic_abi() -> list[str]: + """ + Return the ABI tag based on EXT_SUFFIX. + """ + # The following are examples of `EXT_SUFFIX`. + # We want to keep the parts which are related to the ABI and remove the + # parts which are related to the platform: + # - linux: '.cpython-310-x86_64-linux-gnu.so' => cp310 + # - mac: '.cpython-310-darwin.so' => cp310 + # - win: '.cp310-win_amd64.pyd' => cp310 + # - win: '.pyd' => cp37 (uses _cpython_abis()) + # - pypy: '.pypy38-pp73-x86_64-linux-gnu.so' => pypy38_pp73 + # - graalpy: '.graalpy-38-native-x86_64-darwin.dylib' + # => graalpy_38_native + + ext_suffix = _get_config_var("EXT_SUFFIX", warn=True) + if not isinstance(ext_suffix, str) or ext_suffix[0] != ".": + raise SystemError("invalid sysconfig.get_config_var('EXT_SUFFIX')") + parts = ext_suffix.split(".") + if len(parts) < 3: + # CPython3.7 and earlier uses ".pyd" on Windows. + return _cpython_abis(sys.version_info[:2]) + soabi = parts[1] + if soabi.startswith("cpython"): + # non-windows + abi = "cp" + soabi.split("-")[1] + elif soabi.startswith("cp"): + # windows + abi = soabi.split("-")[0] + elif soabi.startswith("pypy"): + abi = "-".join(soabi.split("-")[:2]) + elif soabi.startswith("graalpy"): + abi = "-".join(soabi.split("-")[:3]) + elif soabi: + # pyston, ironpython, others? + abi = soabi + else: + return [] + return [_normalize_string(abi)] def generic_tags( - interpreter: Optional[str] = None, - abis: Optional[Iterable[str]] = None, - platforms: Optional[Iterable[str]] = None, + interpreter: str | None = None, + abis: Iterable[str] | None = None, + platforms: Iterable[str] | None = None, *, warn: bool = False, ) -> Iterator[Tag]: @@ -251,8 +302,9 @@ def generic_tags( interpreter = "".join([interp_name, interp_version]) if abis is None: abis = _generic_abi() + else: + abis = list(abis) platforms = list(platforms or platform_tags()) - abis = list(abis) if "none" not in abis: abis.append("none") for abi in abis: @@ -276,9 +328,9 @@ def _py_interpreter_range(py_version: PythonVersion) -> Iterator[str]: def compatible_tags( - python_version: Optional[PythonVersion] = None, - interpreter: Optional[str] = None, - platforms: Optional[Iterable[str]] = None, + python_version: PythonVersion | None = None, + interpreter: str | None = None, + platforms: Iterable[str] | None = None, ) -> Iterator[Tag]: """ Yields the sequence of tags that are compatible with a specific version of Python. @@ -310,7 +362,7 @@ def _mac_arch(arch: str, is_32bit: bool = _32_BIT_INTERPRETER) -> str: return "i386" -def _mac_binary_formats(version: MacVersion, cpu_arch: str) -> List[str]: +def _mac_binary_formats(version: AppleVersion, cpu_arch: str) -> list[str]: formats = [cpu_arch] if cpu_arch == "x86_64": if version < (10, 4): @@ -343,7 +395,7 @@ def _mac_binary_formats(version: MacVersion, cpu_arch: str) -> List[str]: def mac_platforms( - version: Optional[MacVersion] = None, arch: Optional[str] = None + version: AppleVersion | None = None, arch: str | None = None ) -> Iterator[str]: """ Yields the platform tags for a macOS system. @@ -355,7 +407,23 @@ def mac_platforms( """ version_str, _, cpu_arch = platform.mac_ver() if version is None: - version = cast("MacVersion", tuple(map(int, version_str.split(".")[:2]))) + version = cast("AppleVersion", tuple(map(int, version_str.split(".")[:2]))) + if version == (10, 16): + # When built against an older macOS SDK, Python will report macOS 10.16 + # instead of the real version. + version_str = subprocess.run( + [ + sys.executable, + "-sS", + "-c", + "import platform; print(platform.mac_ver()[0])", + ], + check=True, + env={"SYSTEM_VERSION_COMPAT": "0"}, + stdout=subprocess.PIPE, + text=True, + ).stdout + version = cast("AppleVersion", tuple(map(int, version_str.split(".")[:2]))) else: version = version if arch is None: @@ -366,24 +434,22 @@ def mac_platforms( if (10, 0) <= version and version < (11, 0): # Prior to Mac OS 11, each yearly release of Mac OS bumped the # "minor" version number. The major version was always 10. + major_version = 10 for minor_version in range(version[1], -1, -1): - compat_version = 10, minor_version + compat_version = major_version, minor_version binary_formats = _mac_binary_formats(compat_version, arch) for binary_format in binary_formats: - yield "macosx_{major}_{minor}_{binary_format}".format( - major=10, minor=minor_version, binary_format=binary_format - ) + yield f"macosx_{major_version}_{minor_version}_{binary_format}" if version >= (11, 0): # Starting with Mac OS 11, each yearly release bumps the major version # number. The minor versions are now the midyear updates. + minor_version = 0 for major_version in range(version[0], 10, -1): - compat_version = major_version, 0 + compat_version = major_version, minor_version binary_formats = _mac_binary_formats(compat_version, arch) for binary_format in binary_formats: - yield "macosx_{major}_{minor}_{binary_format}".format( - major=major_version, minor=0, binary_format=binary_format - ) + yield f"macosx_{major_version}_{minor_version}_{binary_format}" if version >= (11, 0): # Mac OS 11 on x86_64 is compatible with binaries from previous releases. @@ -393,38 +459,94 @@ def mac_platforms( # However, the "universal2" binary format can have a # macOS version earlier than 11.0 when the x86_64 part of the binary supports # that version of macOS. + major_version = 10 if arch == "x86_64": for minor_version in range(16, 3, -1): - compat_version = 10, minor_version + compat_version = major_version, minor_version binary_formats = _mac_binary_formats(compat_version, arch) for binary_format in binary_formats: - yield "macosx_{major}_{minor}_{binary_format}".format( - major=compat_version[0], - minor=compat_version[1], - binary_format=binary_format, - ) + yield f"macosx_{major_version}_{minor_version}_{binary_format}" else: for minor_version in range(16, 3, -1): - compat_version = 10, minor_version + compat_version = major_version, minor_version binary_format = "universal2" - yield "macosx_{major}_{minor}_{binary_format}".format( - major=compat_version[0], - minor=compat_version[1], - binary_format=binary_format, - ) + yield f"macosx_{major_version}_{minor_version}_{binary_format}" + + +def ios_platforms( + version: AppleVersion | None = None, multiarch: str | None = None +) -> Iterator[str]: + """ + Yields the platform tags for an iOS system. + + :param version: A two-item tuple specifying the iOS version to generate + platform tags for. Defaults to the current iOS version. + :param multiarch: The CPU architecture+ABI to generate platform tags for - + (the value used by `sys.implementation._multiarch` e.g., + `arm64_iphoneos` or `x84_64_iphonesimulator`). Defaults to the current + multiarch value. + """ + if version is None: + # if iOS is the current platform, ios_ver *must* be defined. However, + # it won't exist for CPython versions before 3.13, which causes a mypy + # error. + _, release, _, _ = platform.ios_ver() # type: ignore[attr-defined, unused-ignore] + version = cast("AppleVersion", tuple(map(int, release.split(".")[:2]))) + + if multiarch is None: + multiarch = sys.implementation._multiarch + multiarch = multiarch.replace("-", "_") + + ios_platform_template = "ios_{major}_{minor}_{multiarch}" + + # Consider any iOS major.minor version from the version requested, down to + # 12.0. 12.0 is the first iOS version that is known to have enough features + # to support CPython. Consider every possible minor release up to X.9. There + # highest the minor has ever gone is 8 (14.8 and 15.8) but having some extra + # candidates that won't ever match doesn't really hurt, and it saves us from + # having to keep an explicit list of known iOS versions in the code. Return + # the results descending order of version number. + + # If the requested major version is less than 12, there won't be any matches. + if version[0] < 12: + return + + # Consider the actual X.Y version that was requested. + yield ios_platform_template.format( + major=version[0], minor=version[1], multiarch=multiarch + ) + + # Consider every minor version from X.0 to the minor version prior to the + # version requested by the platform. + for minor in range(version[1] - 1, -1, -1): + yield ios_platform_template.format( + major=version[0], minor=minor, multiarch=multiarch + ) + + for major in range(version[0] - 1, 11, -1): + for minor in range(9, -1, -1): + yield ios_platform_template.format( + major=major, minor=minor, multiarch=multiarch + ) def _linux_platforms(is_32bit: bool = _32_BIT_INTERPRETER) -> Iterator[str]: linux = _normalize_string(sysconfig.get_platform()) + if not linux.startswith("linux_"): + # we should never be here, just yield the sysconfig one and return + yield linux + return if is_32bit: if linux == "linux_x86_64": linux = "linux_i686" elif linux == "linux_aarch64": - linux = "linux_armv7l" + linux = "linux_armv8l" _, arch = linux.split("_", 1) - yield from _manylinux.platform_tags(linux, arch) - yield from _musllinux.platform_tags(arch) - yield linux + archs = {"armv8l": ["armv8l", "armv7l"]}.get(arch, [arch]) + yield from _manylinux.platform_tags(archs) + yield from _musllinux.platform_tags(archs) + for arch in archs: + yield f"linux_{arch}" def _generic_platforms() -> Iterator[str]: @@ -437,6 +559,8 @@ def platform_tags() -> Iterator[str]: """ if platform.system() == "Darwin": return mac_platforms() + elif platform.system() == "iOS": + return ios_platforms() elif platform.system() == "Linux": return _linux_platforms() else: @@ -446,6 +570,9 @@ def platform_tags() -> Iterator[str]: def interpreter_name() -> str: """ Returns the name of the running interpreter. + + Some implementations have a reserved, two-letter abbreviation which will + be returned when appropriate. """ name = sys.implementation.name return INTERPRETER_SHORT_NAMES.get(name) or name @@ -482,6 +609,9 @@ def sys_tags(*, warn: bool = False) -> Iterator[Tag]: yield from generic_tags() if interp_name == "pp": - yield from compatible_tags(interpreter="pp3") + interp = "pp3" + elif interp_name == "cp": + interp = "cp" + interpreter_version(warn=warn) else: - yield from compatible_tags() + interp = None + yield from compatible_tags(interpreter=interp) diff --git a/gestao_raul/Lib/site-packages/pip/_vendor/packaging/utils.py b/gestao_raul/Lib/site-packages/pip/_vendor/packaging/utils.py index bab11b8..2345095 100644 --- a/gestao_raul/Lib/site-packages/pip/_vendor/packaging/utils.py +++ b/gestao_raul/Lib/site-packages/pip/_vendor/packaging/utils.py @@ -2,16 +2,25 @@ # 2.0, and the BSD License. See the LICENSE file in the root of this repository # for complete details. +from __future__ import annotations + +import functools import re -from typing import FrozenSet, NewType, Tuple, Union, cast +from typing import NewType, Tuple, Union, cast from .tags import Tag, parse_tag -from .version import InvalidVersion, Version +from .version import InvalidVersion, Version, _TrimmedRelease BuildTag = Union[Tuple[()], Tuple[int, str]] NormalizedName = NewType("NormalizedName", str) +class InvalidName(ValueError): + """ + An invalid distribution name; users should refer to the packaging user guide. + """ + + class InvalidWheelFilename(ValueError): """ An invalid wheel filename was found, users should refer to PEP 427. @@ -24,88 +33,99 @@ class InvalidSdistFilename(ValueError): """ +# Core metadata spec for `Name` +_validate_regex = re.compile( + r"^([A-Z0-9]|[A-Z0-9][A-Z0-9._-]*[A-Z0-9])$", re.IGNORECASE +) _canonicalize_regex = re.compile(r"[-_.]+") +_normalized_regex = re.compile(r"^([a-z0-9]|[a-z0-9]([a-z0-9-](?!--))*[a-z0-9])$") # PEP 427: The build number must start with a digit. _build_tag_regex = re.compile(r"(\d+)(.*)") -def canonicalize_name(name: str) -> NormalizedName: +def canonicalize_name(name: str, *, validate: bool = False) -> NormalizedName: + if validate and not _validate_regex.match(name): + raise InvalidName(f"name is invalid: {name!r}") # This is taken from PEP 503. value = _canonicalize_regex.sub("-", name).lower() return cast(NormalizedName, value) -def canonicalize_version(version: Union[Version, str]) -> str: +def is_normalized_name(name: str) -> bool: + return _normalized_regex.match(name) is not None + + +@functools.singledispatch +def canonicalize_version( + version: Version | str, *, strip_trailing_zero: bool = True +) -> str: """ - This is very similar to Version.__str__, but has one subtle difference - with the way it handles the release segment. + Return a canonical form of a version as a string. + + >>> canonicalize_version('1.0.1') + '1.0.1' + + Per PEP 625, versions may have multiple canonical forms, differing + only by trailing zeros. + + >>> canonicalize_version('1.0.0') + '1' + >>> canonicalize_version('1.0.0', strip_trailing_zero=False) + '1.0.0' + + Invalid versions are returned unaltered. + + >>> canonicalize_version('foo bar baz') + 'foo bar baz' """ - if isinstance(version, str): - try: - parsed = Version(version) - except InvalidVersion: - # Legacy versions cannot be normalized - return version - else: - parsed = version + return str(_TrimmedRelease(str(version)) if strip_trailing_zero else version) - parts = [] - # Epoch - if parsed.epoch != 0: - parts.append(f"{parsed.epoch}!") - - # Release segment - # NB: This strips trailing '.0's to normalize - parts.append(re.sub(r"(\.0)+$", "", ".".join(str(x) for x in parsed.release))) - - # Pre-release - if parsed.pre is not None: - parts.append("".join(str(x) for x in parsed.pre)) - - # Post-release - if parsed.post is not None: - parts.append(f".post{parsed.post}") - - # Development release - if parsed.dev is not None: - parts.append(f".dev{parsed.dev}") - - # Local version segment - if parsed.local is not None: - parts.append(f"+{parsed.local}") - - return "".join(parts) +@canonicalize_version.register +def _(version: str, *, strip_trailing_zero: bool = True) -> str: + try: + parsed = Version(version) + except InvalidVersion: + # Legacy versions cannot be normalized + return version + return canonicalize_version(parsed, strip_trailing_zero=strip_trailing_zero) def parse_wheel_filename( filename: str, -) -> Tuple[NormalizedName, Version, BuildTag, FrozenSet[Tag]]: +) -> tuple[NormalizedName, Version, BuildTag, frozenset[Tag]]: if not filename.endswith(".whl"): raise InvalidWheelFilename( - f"Invalid wheel filename (extension must be '.whl'): {filename}" + f"Invalid wheel filename (extension must be '.whl'): {filename!r}" ) filename = filename[:-4] dashes = filename.count("-") if dashes not in (4, 5): raise InvalidWheelFilename( - f"Invalid wheel filename (wrong number of parts): {filename}" + f"Invalid wheel filename (wrong number of parts): {filename!r}" ) parts = filename.split("-", dashes - 2) name_part = parts[0] - # See PEP 427 for the rules on escaping the project name + # See PEP 427 for the rules on escaping the project name. if "__" in name_part or re.match(r"^[\w\d._]*$", name_part, re.UNICODE) is None: - raise InvalidWheelFilename(f"Invalid project name: {filename}") + raise InvalidWheelFilename(f"Invalid project name: {filename!r}") name = canonicalize_name(name_part) - version = Version(parts[1]) + + try: + version = Version(parts[1]) + except InvalidVersion as e: + raise InvalidWheelFilename( + f"Invalid wheel filename (invalid version): {filename!r}" + ) from e + if dashes == 5: build_part = parts[2] build_match = _build_tag_regex.match(build_part) if build_match is None: raise InvalidWheelFilename( - f"Invalid build number: {build_part} in '{filename}'" + f"Invalid build number: {build_part} in {filename!r}" ) build = cast(BuildTag, (int(build_match.group(1)), build_match.group(2))) else: @@ -114,7 +134,7 @@ def parse_wheel_filename( return (name, version, build, tags) -def parse_sdist_filename(filename: str) -> Tuple[NormalizedName, Version]: +def parse_sdist_filename(filename: str) -> tuple[NormalizedName, Version]: if filename.endswith(".tar.gz"): file_stem = filename[: -len(".tar.gz")] elif filename.endswith(".zip"): @@ -122,15 +142,22 @@ def parse_sdist_filename(filename: str) -> Tuple[NormalizedName, Version]: else: raise InvalidSdistFilename( f"Invalid sdist filename (extension must be '.tar.gz' or '.zip'):" - f" {filename}" + f" {filename!r}" ) # We are requiring a PEP 440 version, which cannot contain dashes, # so we split on the last dash. name_part, sep, version_part = file_stem.rpartition("-") if not sep: - raise InvalidSdistFilename(f"Invalid sdist filename: {filename}") + raise InvalidSdistFilename(f"Invalid sdist filename: {filename!r}") name = canonicalize_name(name_part) - version = Version(version_part) + + try: + version = Version(version_part) + except InvalidVersion as e: + raise InvalidSdistFilename( + f"Invalid sdist filename (invalid version): {filename!r}" + ) from e + return (name, version) diff --git a/gestao_raul/Lib/site-packages/pip/_vendor/packaging/version.py b/gestao_raul/Lib/site-packages/pip/_vendor/packaging/version.py index de9a09a..21f44ca 100644 --- a/gestao_raul/Lib/site-packages/pip/_vendor/packaging/version.py +++ b/gestao_raul/Lib/site-packages/pip/_vendor/packaging/version.py @@ -1,64 +1,73 @@ # 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. +""" +.. testsetup:: + + from pip._vendor.packaging.version import parse, Version +""" + +from __future__ import annotations -import collections import itertools import re -import warnings -from typing import Callable, Iterator, List, Optional, SupportsInt, Tuple, Union +from typing import Any, Callable, NamedTuple, SupportsInt, Tuple, Union from ._structures import Infinity, InfinityType, NegativeInfinity, NegativeInfinityType -__all__ = ["parse", "Version", "LegacyVersion", "InvalidVersion", "VERSION_PATTERN"] +__all__ = ["VERSION_PATTERN", "InvalidVersion", "Version", "parse"] -InfiniteTypes = Union[InfinityType, NegativeInfinityType] -PrePostDevType = Union[InfiniteTypes, Tuple[str, int]] -SubLocalType = Union[InfiniteTypes, int, str] -LocalType = Union[ +LocalType = Tuple[Union[int, str], ...] + +CmpPrePostDevType = Union[InfinityType, NegativeInfinityType, Tuple[str, int]] +CmpLocalType = Union[ NegativeInfinityType, - Tuple[ - Union[ - SubLocalType, - Tuple[SubLocalType, str], - Tuple[NegativeInfinityType, SubLocalType], - ], - ..., - ], + Tuple[Union[Tuple[int, str], Tuple[NegativeInfinityType, Union[int, str]]], ...], ] CmpKey = Tuple[ - int, Tuple[int, ...], PrePostDevType, PrePostDevType, PrePostDevType, LocalType + int, + Tuple[int, ...], + CmpPrePostDevType, + CmpPrePostDevType, + CmpPrePostDevType, + CmpLocalType, ] -LegacyCmpKey = Tuple[int, Tuple[str, ...]] -VersionComparisonMethod = Callable[ - [Union[CmpKey, LegacyCmpKey], Union[CmpKey, LegacyCmpKey]], bool -] - -_Version = collections.namedtuple( - "_Version", ["epoch", "release", "dev", "pre", "post", "local"] -) +VersionComparisonMethod = Callable[[CmpKey, CmpKey], bool] -def parse(version: str) -> Union["LegacyVersion", "Version"]: +class _Version(NamedTuple): + epoch: int + release: tuple[int, ...] + dev: tuple[str, int] | None + pre: tuple[str, int] | None + post: tuple[str, int] | None + local: LocalType | None + + +def parse(version: str) -> Version: + """Parse the given version string. + + >>> parse('1.0.dev1') + + + :param version: The version string to parse. + :raises InvalidVersion: When the version string is not a valid version. """ - Parse the given version string and return either a :class:`Version` object - or a :class:`LegacyVersion` object depending on if the given version is - a valid PEP 440 version or a legacy version. - """ - try: - return Version(version) - except InvalidVersion: - return LegacyVersion(version) + return Version(version) class InvalidVersion(ValueError): - """ - An invalid version was found, users should refer to PEP 440. + """Raised when a version string is not a valid version. + + >>> Version("invalid") + Traceback (most recent call last): + ... + packaging.version.InvalidVersion: Invalid version: 'invalid' """ class _BaseVersion: - _key: Union[CmpKey, LegacyCmpKey] + _key: tuple[Any, ...] def __hash__(self) -> int: return hash(self._key) @@ -66,13 +75,13 @@ class _BaseVersion: # Please keep the duplicated `isinstance` check # in the six comparisons hereunder # unless you find a way to avoid adding overhead function calls. - def __lt__(self, other: "_BaseVersion") -> bool: + def __lt__(self, other: _BaseVersion) -> bool: if not isinstance(other, _BaseVersion): return NotImplemented return self._key < other._key - def __le__(self, other: "_BaseVersion") -> bool: + def __le__(self, other: _BaseVersion) -> bool: if not isinstance(other, _BaseVersion): return NotImplemented @@ -84,13 +93,13 @@ class _BaseVersion: return self._key == other._key - def __ge__(self, other: "_BaseVersion") -> bool: + def __ge__(self, other: _BaseVersion) -> bool: if not isinstance(other, _BaseVersion): return NotImplemented return self._key >= other._key - def __gt__(self, other: "_BaseVersion") -> bool: + def __gt__(self, other: _BaseVersion) -> bool: if not isinstance(other, _BaseVersion): return NotImplemented @@ -103,133 +112,16 @@ class _BaseVersion: return self._key != other._key -class LegacyVersion(_BaseVersion): - def __init__(self, version: str) -> None: - self._version = str(version) - self._key = _legacy_cmpkey(self._version) - - warnings.warn( - "Creating a LegacyVersion has been deprecated and will be " - "removed in the next major release", - DeprecationWarning, - ) - - def __str__(self) -> str: - return self._version - - def __repr__(self) -> str: - return f"" - - @property - def public(self) -> str: - return self._version - - @property - def base_version(self) -> str: - return self._version - - @property - def epoch(self) -> int: - return -1 - - @property - def release(self) -> None: - return None - - @property - def pre(self) -> None: - return None - - @property - def post(self) -> None: - return None - - @property - def dev(self) -> None: - return None - - @property - def local(self) -> None: - return None - - @property - def is_prerelease(self) -> bool: - return False - - @property - def is_postrelease(self) -> bool: - return False - - @property - def is_devrelease(self) -> bool: - return False - - -_legacy_version_component_re = re.compile(r"(\d+ | [a-z]+ | \.| -)", re.VERBOSE) - -_legacy_version_replacement_map = { - "pre": "c", - "preview": "c", - "-": "final-", - "rc": "c", - "dev": "@", -} - - -def _parse_version_parts(s: str) -> Iterator[str]: - for part in _legacy_version_component_re.split(s): - part = _legacy_version_replacement_map.get(part, part) - - if not part or part == ".": - continue - - if part[:1] in "0123456789": - # pad for numeric comparison - yield part.zfill(8) - else: - yield "*" + part - - # ensure that alpha/beta/candidate are before final - yield "*final" - - -def _legacy_cmpkey(version: str) -> LegacyCmpKey: - - # We hardcode an epoch of -1 here. A PEP 440 version can only have a epoch - # greater than or equal to 0. This will effectively put the LegacyVersion, - # which uses the defacto standard originally implemented by setuptools, - # as before all PEP 440 versions. - epoch = -1 - - # This scheme is taken from pkg_resources.parse_version setuptools prior to - # it's adoption of the packaging library. - parts: List[str] = [] - for part in _parse_version_parts(version.lower()): - if part.startswith("*"): - # remove "-" before a prerelease tag - if part < "*final": - while parts and parts[-1] == "*final-": - parts.pop() - - # remove trailing zeros from each series of numeric parts - while parts and parts[-1] == "00000000": - parts.pop() - - parts.append(part) - - return epoch, tuple(parts) - - # Deliberately not anchored to the start and end of the string, to make it # easier for 3rd party code to reuse -VERSION_PATTERN = r""" +_VERSION_PATTERN = r""" v? (?: (?:(?P[0-9]+)!)? # epoch (?P[0-9]+(?:\.[0-9]+)*) # release segment (?P

                                          # pre-release
             [-_\.]?
-            (?P(a|b|c|rc|alpha|beta|pre|preview))
+            (?Palpha|a|beta|b|preview|pre|c|rc)
             [-_\.]?
             (?P[0-9]+)?
         )?
@@ -253,17 +145,61 @@ VERSION_PATTERN = r"""
     (?:\+(?P[a-z0-9]+(?:[-_\.][a-z0-9]+)*))?       # local version
 """
 
+VERSION_PATTERN = _VERSION_PATTERN
+"""
+A string containing the regular expression used to match a valid version.
+
+The pattern is not anchored at either end, and is intended for embedding in larger
+expressions (for example, matching a version number as part of a file name). The
+regular expression should be compiled with the ``re.VERBOSE`` and ``re.IGNORECASE``
+flags set.
+
+:meta hide-value:
+"""
+
 
 class Version(_BaseVersion):
+    """This class abstracts handling of a project's versions.
+
+    A :class:`Version` instance is comparison aware and can be compared and
+    sorted using the standard Python interfaces.
+
+    >>> v1 = Version("1.0a5")
+    >>> v2 = Version("1.0")
+    >>> v1
+    
+    >>> v2
+    
+    >>> v1 < v2
+    True
+    >>> v1 == v2
+    False
+    >>> v1 > v2
+    False
+    >>> v1 >= v2
+    False
+    >>> v1 <= v2
+    True
+    """
 
     _regex = re.compile(r"^\s*" + VERSION_PATTERN + r"\s*$", re.VERBOSE | re.IGNORECASE)
+    _key: CmpKey
 
     def __init__(self, version: str) -> None:
+        """Initialize a Version object.
+
+        :param version:
+            The string representation of a version which will be parsed and normalized
+            before use.
+        :raises InvalidVersion:
+            If the ``version`` does not conform to PEP 440 in any way then this
+            exception will be raised.
+        """
 
         # Validate the version and parse it into pieces
         match = self._regex.search(version)
         if not match:
-            raise InvalidVersion(f"Invalid version: '{version}'")
+            raise InvalidVersion(f"Invalid version: {version!r}")
 
         # Store the parsed out pieces of the version
         self._version = _Version(
@@ -288,9 +224,19 @@ class Version(_BaseVersion):
         )
 
     def __repr__(self) -> str:
+        """A representation of the Version that shows all internal state.
+
+        >>> Version('1.0.0')
+        
+        """
         return f""
 
     def __str__(self) -> str:
+        """A string representation of the version that can be round-tripped.
+
+        >>> str(Version("1.0a5"))
+        '1.0a5'
+        """
         parts = []
 
         # Epoch
@@ -320,29 +266,77 @@ class Version(_BaseVersion):
 
     @property
     def epoch(self) -> int:
-        _epoch: int = self._version.epoch
-        return _epoch
+        """The epoch of the version.
+
+        >>> Version("2.0.0").epoch
+        0
+        >>> Version("1!2.0.0").epoch
+        1
+        """
+        return self._version.epoch
 
     @property
-    def release(self) -> Tuple[int, ...]:
-        _release: Tuple[int, ...] = self._version.release
-        return _release
+    def release(self) -> tuple[int, ...]:
+        """The components of the "release" segment of the version.
+
+        >>> Version("1.2.3").release
+        (1, 2, 3)
+        >>> Version("2.0.0").release
+        (2, 0, 0)
+        >>> Version("1!2.0.0.post0").release
+        (2, 0, 0)
+
+        Includes trailing zeroes but not the epoch or any pre-release / development /
+        post-release suffixes.
+        """
+        return self._version.release
 
     @property
-    def pre(self) -> Optional[Tuple[str, int]]:
-        _pre: Optional[Tuple[str, int]] = self._version.pre
-        return _pre
+    def pre(self) -> tuple[str, int] | None:
+        """The pre-release segment of the version.
+
+        >>> print(Version("1.2.3").pre)
+        None
+        >>> Version("1.2.3a1").pre
+        ('a', 1)
+        >>> Version("1.2.3b1").pre
+        ('b', 1)
+        >>> Version("1.2.3rc1").pre
+        ('rc', 1)
+        """
+        return self._version.pre
 
     @property
-    def post(self) -> Optional[int]:
+    def post(self) -> int | None:
+        """The post-release number of the version.
+
+        >>> print(Version("1.2.3").post)
+        None
+        >>> Version("1.2.3.post1").post
+        1
+        """
         return self._version.post[1] if self._version.post else None
 
     @property
-    def dev(self) -> Optional[int]:
+    def dev(self) -> int | None:
+        """The development number of the version.
+
+        >>> print(Version("1.2.3").dev)
+        None
+        >>> Version("1.2.3.dev1").dev
+        1
+        """
         return self._version.dev[1] if self._version.dev else None
 
     @property
-    def local(self) -> Optional[str]:
+    def local(self) -> str | None:
+        """The local version segment of the version.
+
+        >>> print(Version("1.2.3").local)
+        None
+        >>> Version("1.2.3+abc").local
+        'abc'
+        """
         if self._version.local:
             return ".".join(str(x) for x in self._version.local)
         else:
@@ -350,10 +344,31 @@ class Version(_BaseVersion):
 
     @property
     def public(self) -> str:
+        """The public portion of the version.
+
+        >>> Version("1.2.3").public
+        '1.2.3'
+        >>> Version("1.2.3+abc").public
+        '1.2.3'
+        >>> Version("1!1.2.3dev1+abc").public
+        '1!1.2.3.dev1'
+        """
         return str(self).split("+", 1)[0]
 
     @property
     def base_version(self) -> str:
+        """The "base version" of the version.
+
+        >>> Version("1.2.3").base_version
+        '1.2.3'
+        >>> Version("1.2.3+abc").base_version
+        '1.2.3'
+        >>> Version("1!1.2.3dev1+abc").base_version
+        '1!1.2.3'
+
+        The "base version" is the public version of the project without any pre or post
+        release markers.
+        """
         parts = []
 
         # Epoch
@@ -367,33 +382,95 @@ class Version(_BaseVersion):
 
     @property
     def is_prerelease(self) -> bool:
+        """Whether this version is a pre-release.
+
+        >>> Version("1.2.3").is_prerelease
+        False
+        >>> Version("1.2.3a1").is_prerelease
+        True
+        >>> Version("1.2.3b1").is_prerelease
+        True
+        >>> Version("1.2.3rc1").is_prerelease
+        True
+        >>> Version("1.2.3dev1").is_prerelease
+        True
+        """
         return self.dev is not None or self.pre is not None
 
     @property
     def is_postrelease(self) -> bool:
+        """Whether this version is a post-release.
+
+        >>> Version("1.2.3").is_postrelease
+        False
+        >>> Version("1.2.3.post1").is_postrelease
+        True
+        """
         return self.post is not None
 
     @property
     def is_devrelease(self) -> bool:
+        """Whether this version is a development release.
+
+        >>> Version("1.2.3").is_devrelease
+        False
+        >>> Version("1.2.3.dev1").is_devrelease
+        True
+        """
         return self.dev is not None
 
     @property
     def major(self) -> int:
+        """The first item of :attr:`release` or ``0`` if unavailable.
+
+        >>> Version("1.2.3").major
+        1
+        """
         return self.release[0] if len(self.release) >= 1 else 0
 
     @property
     def minor(self) -> int:
+        """The second item of :attr:`release` or ``0`` if unavailable.
+
+        >>> Version("1.2.3").minor
+        2
+        >>> Version("1").minor
+        0
+        """
         return self.release[1] if len(self.release) >= 2 else 0
 
     @property
     def micro(self) -> int:
+        """The third item of :attr:`release` or ``0`` if unavailable.
+
+        >>> Version("1.2.3").micro
+        3
+        >>> Version("1").micro
+        0
+        """
         return self.release[2] if len(self.release) >= 3 else 0
 
 
-def _parse_letter_version(
-    letter: str, number: Union[str, bytes, SupportsInt]
-) -> Optional[Tuple[str, int]]:
+class _TrimmedRelease(Version):
+    @property
+    def release(self) -> tuple[int, ...]:
+        """
+        Release segment without any trailing zeros.
 
+        >>> _TrimmedRelease('1.0.0').release
+        (1,)
+        >>> _TrimmedRelease('0.0').release
+        (0,)
+        """
+        rel = super().release
+        nonzeros = (index for index, val in enumerate(rel) if val)
+        last_nonzero = max(nonzeros, default=0)
+        return rel[: last_nonzero + 1]
+
+
+def _parse_letter_version(
+    letter: str | None, number: str | bytes | SupportsInt | None
+) -> tuple[str, int] | None:
     if letter:
         # We consider there to be an implicit 0 in a pre-release if there is
         # not a numeral associated with it.
@@ -416,7 +493,9 @@ def _parse_letter_version(
             letter = "post"
 
         return letter, int(number)
-    if not letter and number:
+
+    assert not letter
+    if number:
         # We assume if we are given a number, but we are not given a letter
         # then this is using the implicit post release syntax (e.g. 1.0-1)
         letter = "post"
@@ -429,7 +508,7 @@ def _parse_letter_version(
 _local_version_separators = re.compile(r"[\._-]")
 
 
-def _parse_local_version(local: str) -> Optional[LocalType]:
+def _parse_local_version(local: str | None) -> LocalType | None:
     """
     Takes a string like abc.1.twelve and turns it into ("abc", 1, "twelve").
     """
@@ -443,13 +522,12 @@ def _parse_local_version(local: str) -> Optional[LocalType]:
 
 def _cmpkey(
     epoch: int,
-    release: Tuple[int, ...],
-    pre: Optional[Tuple[str, int]],
-    post: Optional[Tuple[str, int]],
-    dev: Optional[Tuple[str, int]],
-    local: Optional[Tuple[SubLocalType]],
+    release: tuple[int, ...],
+    pre: tuple[str, int] | None,
+    post: tuple[str, int] | None,
+    dev: tuple[str, int] | None,
+    local: LocalType | None,
 ) -> CmpKey:
-
     # When we compare a release version, we want to compare it with all of the
     # trailing zeros removed. So we'll use a reverse the list, drop all the now
     # leading zeros until we come to something non zero, then take the rest
@@ -464,7 +542,7 @@ def _cmpkey(
     # if there is not a pre or a post segment. If we have one of those then
     # the normal sorting rules will handle this case correctly.
     if pre is None and post is None and dev is not None:
-        _pre: PrePostDevType = NegativeInfinity
+        _pre: CmpPrePostDevType = NegativeInfinity
     # Versions without a pre-release (except as noted above) should sort after
     # those with one.
     elif pre is None:
@@ -474,21 +552,21 @@ def _cmpkey(
 
     # Versions without a post segment should sort before those with one.
     if post is None:
-        _post: PrePostDevType = NegativeInfinity
+        _post: CmpPrePostDevType = NegativeInfinity
 
     else:
         _post = post
 
     # Versions without a development segment should sort after those with one.
     if dev is None:
-        _dev: PrePostDevType = Infinity
+        _dev: CmpPrePostDevType = Infinity
 
     else:
         _dev = dev
 
     if local is None:
         # Versions without a local segment should sort before those with one.
-        _local: LocalType = NegativeInfinity
+        _local: CmpLocalType = NegativeInfinity
     else:
         # Versions with a local segment need that segment parsed to implement
         # the sorting rules in PEP440.
diff --git a/gestao_raul/Lib/site-packages/pip/_vendor/pkg_resources/__init__.py b/gestao_raul/Lib/site-packages/pip/_vendor/pkg_resources/__init__.py
index 4cd562c..57ce7f1 100644
--- a/gestao_raul/Lib/site-packages/pip/_vendor/pkg_resources/__init__.py
+++ b/gestao_raul/Lib/site-packages/pip/_vendor/pkg_resources/__init__.py
@@ -1,4 +1,6 @@
-# coding: utf-8
+# TODO: Add Generic type annotations to initialized collections.
+# For now we'd simply use implicit Any/Unknown which would add redundant annotations
+# mypy: disable-error-code="var-annotated"
 """
 Package resource API
 --------------------
@@ -13,16 +15,41 @@ The package resource API is designed to work with normal filesystem packages,
 .egg files, and unpacked .egg files.  It can also work in a limited way with
 .zip files and with custom PEP 302 loaders that support the ``get_data()``
 method.
+
+This module is deprecated. Users are directed to :mod:`importlib.resources`,
+:mod:`importlib.metadata` and :pypi:`packaging` instead.
 """
 
-from __future__ import absolute_import
+from __future__ import annotations
 
 import sys
+
+if sys.version_info < (3, 8):  # noqa: UP036 # Check for unsupported versions
+    raise RuntimeError("Python 3.8 or later is required")
+
 import os
 import io
 import time
 import re
 import types
+from typing import (
+    Any,
+    Literal,
+    Dict,
+    Iterator,
+    Mapping,
+    MutableSequence,
+    NamedTuple,
+    NoReturn,
+    Tuple,
+    Union,
+    TYPE_CHECKING,
+    Protocol,
+    Callable,
+    Iterable,
+    TypeVar,
+    overload,
+)
 import zipfile
 import zipimport
 import warnings
@@ -37,84 +64,83 @@ import email.parser
 import errno
 import tempfile
 import textwrap
-import itertools
 import inspect
 import ntpath
 import posixpath
+import importlib
+import importlib.abc
+import importlib.machinery
 from pkgutil import get_importer
 
-try:
-    import _imp
-except ImportError:
-    # Python 3.2 compatibility
-    import imp as _imp
-
-try:
-    FileExistsError
-except NameError:
-    FileExistsError = OSError
-
-from pip._vendor import six
-from pip._vendor.six.moves import urllib, map, filter
+import _imp
 
 # capture these to bypass sandboxing
 from os import utime
+from os import open as os_open
+from os.path import isdir, split
+
 try:
     from os import mkdir, rename, unlink
+
     WRITE_SUPPORT = True
 except ImportError:
     # no write support, probably under GAE
     WRITE_SUPPORT = False
 
-from os import open as os_open
-from os.path import isdir, split
+from pip._internal.utils._jaraco_text import (
+    yield_lines,
+    drop_comment,
+    join_continuation,
+)
+from pip._vendor.packaging import markers as _packaging_markers
+from pip._vendor.packaging import requirements as _packaging_requirements
+from pip._vendor.packaging import utils as _packaging_utils
+from pip._vendor.packaging import version as _packaging_version
+from pip._vendor.platformdirs import user_cache_dir as _user_cache_dir
 
-try:
-    import importlib.machinery as importlib_machinery
-    # access attribute to force import under delayed import mechanisms.
-    importlib_machinery.__name__
-except ImportError:
-    importlib_machinery = None
-
-from . import py31compat
-from pip._vendor import platformdirs
-from pip._vendor import packaging
-__import__('pip._vendor.packaging.version')
-__import__('pip._vendor.packaging.specifiers')
-__import__('pip._vendor.packaging.requirements')
-__import__('pip._vendor.packaging.markers')
+if TYPE_CHECKING:
+    from _typeshed import BytesPath, StrPath, StrOrBytesPath
+    from pip._vendor.typing_extensions import Self
 
 
-__metaclass__ = type
+# Patch: Remove deprecation warning from vendored pkg_resources.
+# Setting PYTHONWARNINGS=error to verify builds produce no warnings
+# causes immediate exceptions.
+# See https://github.com/pypa/pip/issues/12243
 
 
-if (3, 0) < sys.version_info < (3, 5):
-    raise RuntimeError("Python 3.5 or later is required")
+_T = TypeVar("_T")
+_DistributionT = TypeVar("_DistributionT", bound="Distribution")
+# Type aliases
+_NestedStr = Union[str, Iterable[Union[str, Iterable["_NestedStr"]]]]
+_InstallerTypeT = Callable[["Requirement"], "_DistributionT"]
+_InstallerType = Callable[["Requirement"], Union["Distribution", None]]
+_PkgReqType = Union[str, "Requirement"]
+_EPDistType = Union["Distribution", _PkgReqType]
+_MetadataType = Union["IResourceProvider", None]
+_ResolvedEntryPoint = Any  # Can be any attribute in the module
+_ResourceStream = Any  # TODO / Incomplete: A readable file-like object
+# Any object works, but let's indicate we expect something like a module (optionally has __loader__ or __file__)
+_ModuleLike = Union[object, types.ModuleType]
+# Any: Should be _ModuleLike but we end up with issues where _ModuleLike doesn't have _ZipLoaderModule's __loader__
+_ProviderFactoryType = Callable[[Any], "IResourceProvider"]
+_DistFinderType = Callable[[_T, str, bool], Iterable["Distribution"]]
+_NSHandlerType = Callable[[_T, str, str, types.ModuleType], Union[str, None]]
+_AdapterT = TypeVar(
+    "_AdapterT", _DistFinderType[Any], _ProviderFactoryType, _NSHandlerType[Any]
+)
 
-if six.PY2:
-    # Those builtin exceptions are only defined in Python 3
-    PermissionError = None
-    NotADirectoryError = None
 
-# declare some globals that will be defined later to
-# satisfy the linters.
-require = None
-working_set = None
-add_activation_listener = None
-resources_stream = None
-cleanup_resources = None
-resource_dir = None
-resource_stream = None
-set_extraction_path = None
-resource_isdir = None
-resource_string = None
-iter_entry_points = None
-resource_listdir = None
-resource_filename = None
-resource_exists = None
-_distribution_finders = None
-_namespace_handlers = None
-_namespace_packages = None
+# Use _typeshed.importlib.LoaderProtocol once available https://github.com/python/typeshed/pull/11890
+class _LoaderProtocol(Protocol):
+    def load_module(self, fullname: str, /) -> types.ModuleType: ...
+
+
+class _ZipLoaderModule(Protocol):
+    __loader__: zipimport.zipimporter
+
+
+_PEP440_FALLBACK = re.compile(r"^v?(?P(?:[0-9]+!)?[0-9]+(?:\.[0-9]+)*)", re.I)
 
 
 class PEP440Warning(RuntimeWarning):
@@ -124,22 +150,18 @@ class PEP440Warning(RuntimeWarning):
     """
 
 
-def parse_version(v):
-    try:
-        return packaging.version.Version(v)
-    except packaging.version.InvalidVersion:
-        return packaging.version.LegacyVersion(v)
+parse_version = _packaging_version.Version
 
 
-_state_vars = {}
+_state_vars: dict[str, str] = {}
 
 
-def _declare_state(vartype, **kw):
-    globals().update(kw)
-    _state_vars.update(dict.fromkeys(kw, vartype))
+def _declare_state(vartype: str, varname: str, initial_value: _T) -> _T:
+    _state_vars[varname] = vartype
+    return initial_value
 
 
-def __getstate__():
+def __getstate__() -> dict[str, Any]:
     state = {}
     g = globals()
     for k, v in _state_vars.items():
@@ -147,7 +169,7 @@ def __getstate__():
     return state
 
 
-def __setstate__(state):
+def __setstate__(state: dict[str, Any]) -> dict[str, Any]:
     g = globals()
     for k, v in state.items():
         g['_sset_' + _state_vars[k]](k, g[k], v)
@@ -178,10 +200,10 @@ def get_supported_platform():
     """Return this platform's maximum compatible version.
 
     distutils.util.get_platform() normally reports the minimum version
-    of Mac OS X that would be required to *use* extensions produced by
+    of macOS that would be required to *use* extensions produced by
     distutils.  But what we want when checking compatibility is to know the
-    version of Mac OS X that we are *running*.  To allow usage of packages that
-    explicitly require a newer version of Mac OS X, we must also know the
+    version of macOS that we are *running*.  To allow usage of packages that
+    explicitly require a newer version of macOS, we must also know the
     current version of the OS.
 
     If this condition occurs for any other platform with a version in its
@@ -191,60 +213,96 @@ def get_supported_platform():
     m = macosVersionString.match(plat)
     if m is not None and sys.platform == "darwin":
         try:
-            plat = 'macosx-%s-%s' % ('.'.join(_macosx_vers()[:2]), m.group(3))
+            plat = 'macosx-%s-%s' % ('.'.join(_macos_vers()[:2]), m.group(3))
         except ValueError:
-            # not Mac OS X
+            # not macOS
             pass
     return plat
 
 
 __all__ = [
     # Basic resource access and distribution/entry point discovery
-    'require', 'run_script', 'get_provider', 'get_distribution',
-    'load_entry_point', 'get_entry_map', 'get_entry_info',
+    'require',
+    'run_script',
+    'get_provider',
+    'get_distribution',
+    'load_entry_point',
+    'get_entry_map',
+    'get_entry_info',
     'iter_entry_points',
-    'resource_string', 'resource_stream', 'resource_filename',
-    'resource_listdir', 'resource_exists', 'resource_isdir',
-
+    'resource_string',
+    'resource_stream',
+    'resource_filename',
+    'resource_listdir',
+    'resource_exists',
+    'resource_isdir',
     # Environmental control
-    'declare_namespace', 'working_set', 'add_activation_listener',
-    'find_distributions', 'set_extraction_path', 'cleanup_resources',
+    'declare_namespace',
+    'working_set',
+    'add_activation_listener',
+    'find_distributions',
+    'set_extraction_path',
+    'cleanup_resources',
     'get_default_cache',
-
     # Primary implementation classes
-    'Environment', 'WorkingSet', 'ResourceManager',
-    'Distribution', 'Requirement', 'EntryPoint',
-
+    'Environment',
+    'WorkingSet',
+    'ResourceManager',
+    'Distribution',
+    'Requirement',
+    'EntryPoint',
     # Exceptions
-    'ResolutionError', 'VersionConflict', 'DistributionNotFound',
-    'UnknownExtra', 'ExtractionError',
-
+    'ResolutionError',
+    'VersionConflict',
+    'DistributionNotFound',
+    'UnknownExtra',
+    'ExtractionError',
     # Warnings
     'PEP440Warning',
-
     # Parsing functions and string utilities
-    'parse_requirements', 'parse_version', 'safe_name', 'safe_version',
-    'get_platform', 'compatible_platforms', 'yield_lines', 'split_sections',
-    'safe_extra', 'to_filename', 'invalid_marker', 'evaluate_marker',
-
+    'parse_requirements',
+    'parse_version',
+    'safe_name',
+    'safe_version',
+    'get_platform',
+    'compatible_platforms',
+    'yield_lines',
+    'split_sections',
+    'safe_extra',
+    'to_filename',
+    'invalid_marker',
+    'evaluate_marker',
     # filesystem utilities
-    'ensure_directory', 'normalize_path',
-
+    'ensure_directory',
+    'normalize_path',
     # Distribution "precedence" constants
-    'EGG_DIST', 'BINARY_DIST', 'SOURCE_DIST', 'CHECKOUT_DIST', 'DEVELOP_DIST',
-
+    'EGG_DIST',
+    'BINARY_DIST',
+    'SOURCE_DIST',
+    'CHECKOUT_DIST',
+    'DEVELOP_DIST',
     # "Provider" interfaces, implementations, and registration/lookup APIs
-    'IMetadataProvider', 'IResourceProvider', 'FileMetadata',
-    'PathMetadata', 'EggMetadata', 'EmptyProvider', 'empty_provider',
-    'NullProvider', 'EggProvider', 'DefaultProvider', 'ZipProvider',
-    'register_finder', 'register_namespace_handler', 'register_loader_type',
-    'fixup_namespace_packages', 'get_importer',
-
+    'IMetadataProvider',
+    'IResourceProvider',
+    'FileMetadata',
+    'PathMetadata',
+    'EggMetadata',
+    'EmptyProvider',
+    'empty_provider',
+    'NullProvider',
+    'EggProvider',
+    'DefaultProvider',
+    'ZipProvider',
+    'register_finder',
+    'register_namespace_handler',
+    'register_loader_type',
+    'fixup_namespace_packages',
+    'get_importer',
     # Warnings
     'PkgResourcesDeprecationWarning',
-
     # Deprecated/backward compatibility only
-    'run_main', 'AvailableDistributions',
+    'run_main',
+    'AvailableDistributions',
 ]
 
 
@@ -266,17 +324,17 @@ class VersionConflict(ResolutionError):
     _template = "{self.dist} is installed but {self.req} is required"
 
     @property
-    def dist(self):
+    def dist(self) -> Distribution:
         return self.args[0]
 
     @property
-    def req(self):
+    def req(self) -> Requirement:
         return self.args[1]
 
     def report(self):
         return self._template.format(**locals())
 
-    def with_context(self, required_by):
+    def with_context(self, required_by: set[Distribution | str]):
         """
         If required_by is non-empty, return a version of self that is a
         ContextualVersionConflict.
@@ -296,22 +354,24 @@ class ContextualVersionConflict(VersionConflict):
     _template = VersionConflict._template + ' by {self.required_by}'
 
     @property
-    def required_by(self):
+    def required_by(self) -> set[str]:
         return self.args[2]
 
 
 class DistributionNotFound(ResolutionError):
     """A requested distribution was not found"""
 
-    _template = ("The '{self.req}' distribution was not found "
-                 "and is required by {self.requirers_str}")
+    _template = (
+        "The '{self.req}' distribution was not found "
+        "and is required by {self.requirers_str}"
+    )
 
     @property
-    def req(self):
+    def req(self) -> Requirement:
         return self.args[0]
 
     @property
-    def requirers(self):
+    def requirers(self) -> set[str] | None:
         return self.args[1]
 
     @property
@@ -331,7 +391,7 @@ class UnknownExtra(ResolutionError):
     """Distribution doesn't have an "extra feature" of the given name"""
 
 
-_provider_factories = {}
+_provider_factories: dict[type[_ModuleLike], _ProviderFactoryType] = {}
 
 PY_MAJOR = '{}.{}'.format(*sys.version_info)
 EGG_DIST = 3
@@ -341,7 +401,9 @@ CHECKOUT_DIST = 0
 DEVELOP_DIST = -1
 
 
-def register_loader_type(loader_type, provider_factory):
+def register_loader_type(
+    loader_type: type[_ModuleLike], provider_factory: _ProviderFactoryType
+):
     """Register `provider_factory` to make providers for `loader_type`
 
     `loader_type` is the type or class of a PEP 302 ``module.__loader__``,
@@ -351,7 +413,11 @@ def register_loader_type(loader_type, provider_factory):
     _provider_factories[loader_type] = provider_factory
 
 
-def get_provider(moduleOrReq):
+@overload
+def get_provider(moduleOrReq: str) -> IResourceProvider: ...
+@overload
+def get_provider(moduleOrReq: Requirement) -> Distribution: ...
+def get_provider(moduleOrReq: str | Requirement) -> IResourceProvider | Distribution:
     """Return an IResourceProvider for the named module or requirement"""
     if isinstance(moduleOrReq, Requirement):
         return working_set.find(moduleOrReq) or require(str(moduleOrReq))[0]
@@ -364,23 +430,21 @@ def get_provider(moduleOrReq):
     return _find_adapter(_provider_factories, loader)(module)
 
 
-def _macosx_vers(_cache=[]):
-    if not _cache:
-        version = platform.mac_ver()[0]
-        # fallback for MacPorts
-        if version == '':
-            plist = '/System/Library/CoreServices/SystemVersion.plist'
-            if os.path.exists(plist):
-                if hasattr(plistlib, 'readPlist'):
-                    plist_content = plistlib.readPlist(plist)
-                    if 'ProductVersion' in plist_content:
-                        version = plist_content['ProductVersion']
-
-        _cache.append(version.split('.'))
-    return _cache[0]
+@functools.lru_cache(maxsize=None)
+def _macos_vers():
+    version = platform.mac_ver()[0]
+    # fallback for MacPorts
+    if version == '':
+        plist = '/System/Library/CoreServices/SystemVersion.plist'
+        if os.path.exists(plist):
+            with open(plist, 'rb') as fh:
+                plist_content = plistlib.load(fh)
+            if 'ProductVersion' in plist_content:
+                version = plist_content['ProductVersion']
+    return version.split('.')
 
 
-def _macosx_arch(machine):
+def _macos_arch(machine):
     return {'PowerPC': 'ppc', 'Power_Macintosh': 'ppc'}.get(machine, machine)
 
 
@@ -388,18 +452,19 @@ def get_build_platform():
     """Return this platform's string for platform-specific distributions
 
     XXX Currently this is the same as ``distutils.util.get_platform()``, but it
-    needs some hacks for Linux and Mac OS X.
+    needs some hacks for Linux and macOS.
     """
     from sysconfig import get_platform
 
     plat = get_platform()
     if sys.platform == "darwin" and not plat.startswith('macosx-'):
         try:
-            version = _macosx_vers()
+            version = _macos_vers()
             machine = os.uname()[4].replace(" ", "_")
             return "macosx-%d.%d-%s" % (
-                int(version[0]), int(version[1]),
-                _macosx_arch(machine),
+                int(version[0]),
+                int(version[1]),
+                _macos_arch(machine),
             )
         except ValueError:
             # if someone is running a non-Mac darwin system, this will fall
@@ -414,7 +479,7 @@ darwinVersionString = re.compile(r"darwin-(\d+)\.(\d+)\.(\d+)-(.*)")
 get_platform = get_build_platform
 
 
-def compatible_platforms(provided, required):
+def compatible_platforms(provided: str | None, required: str | None):
     """Can code for the `provided` platform run on the `required` platform?
 
     Returns true if either platform is ``None``, or the platforms are equal.
@@ -425,7 +490,7 @@ def compatible_platforms(provided, required):
         # easy case
         return True
 
-    # Mac OS X special cases
+    # macOS special cases
     reqMac = macosVersionString.match(required)
     if reqMac:
         provMac = macosVersionString.match(provided)
@@ -434,20 +499,23 @@ def compatible_platforms(provided, required):
         if not provMac:
             # this is backwards compatibility for packages built before
             # setuptools 0.6. All packages built after this point will
-            # use the new macosx designation.
+            # use the new macOS designation.
             provDarwin = darwinVersionString.match(provided)
             if provDarwin:
                 dversion = int(provDarwin.group(1))
                 macosversion = "%s.%s" % (reqMac.group(1), reqMac.group(2))
-                if dversion == 7 and macosversion >= "10.3" or \
-                        dversion == 8 and macosversion >= "10.4":
+                if (
+                    dversion == 7
+                    and macosversion >= "10.3"
+                    or dversion == 8
+                    and macosversion >= "10.4"
+                ):
                     return True
-            # egg isn't macosx or legacy darwin
+            # egg isn't macOS or legacy darwin
             return False
 
         # are they the same major version and machine type?
-        if provMac.group(1) != reqMac.group(1) or \
-                provMac.group(3) != reqMac.group(3):
+        if provMac.group(1) != reqMac.group(1) or provMac.group(3) != reqMac.group(3):
             return False
 
         # is the required OS major update >= the provided one?
@@ -460,104 +528,109 @@ def compatible_platforms(provided, required):
     return False
 
 
-def run_script(dist_spec, script_name):
-    """Locate distribution `dist_spec` and run its `script_name` script"""
-    ns = sys._getframe(1).f_globals
-    name = ns['__name__']
-    ns.clear()
-    ns['__name__'] = name
-    require(dist_spec)[0].run_script(script_name, ns)
-
-
-# backward compatibility
-run_main = run_script
-
-
-def get_distribution(dist):
+@overload
+def get_distribution(dist: _DistributionT) -> _DistributionT: ...
+@overload
+def get_distribution(dist: _PkgReqType) -> Distribution: ...
+def get_distribution(dist: Distribution | _PkgReqType) -> Distribution:
     """Return a current distribution object for a Requirement or string"""
-    if isinstance(dist, six.string_types):
+    if isinstance(dist, str):
         dist = Requirement.parse(dist)
     if isinstance(dist, Requirement):
-        dist = get_provider(dist)
+        # Bad type narrowing, dist has to be a Requirement here, so get_provider has to return Distribution
+        dist = get_provider(dist)  # type: ignore[assignment]
     if not isinstance(dist, Distribution):
-        raise TypeError("Expected string, Requirement, or Distribution", dist)
+        raise TypeError("Expected str, Requirement, or Distribution", dist)
     return dist
 
 
-def load_entry_point(dist, group, name):
+def load_entry_point(dist: _EPDistType, group: str, name: str) -> _ResolvedEntryPoint:
     """Return `name` entry point of `group` for `dist` or raise ImportError"""
     return get_distribution(dist).load_entry_point(group, name)
 
 
-def get_entry_map(dist, group=None):
+@overload
+def get_entry_map(
+    dist: _EPDistType, group: None = None
+) -> dict[str, dict[str, EntryPoint]]: ...
+@overload
+def get_entry_map(dist: _EPDistType, group: str) -> dict[str, EntryPoint]: ...
+def get_entry_map(dist: _EPDistType, group: str | None = None):
     """Return the entry point map for `group`, or the full entry map"""
     return get_distribution(dist).get_entry_map(group)
 
 
-def get_entry_info(dist, group, name):
+def get_entry_info(dist: _EPDistType, group: str, name: str):
     """Return the EntryPoint object for `group`+`name`, or ``None``"""
     return get_distribution(dist).get_entry_info(group, name)
 
 
-class IMetadataProvider:
-    def has_metadata(name):
+class IMetadataProvider(Protocol):
+    def has_metadata(self, name: str) -> bool:
         """Does the package's distribution contain the named metadata?"""
 
-    def get_metadata(name):
+    def get_metadata(self, name: str) -> str:
         """The named metadata resource as a string"""
 
-    def get_metadata_lines(name):
+    def get_metadata_lines(self, name: str) -> Iterator[str]:
         """Yield named metadata resource as list of non-blank non-comment lines
 
-       Leading and trailing whitespace is stripped from each line, and lines
-       with ``#`` as the first non-blank character are omitted."""
+        Leading and trailing whitespace is stripped from each line, and lines
+        with ``#`` as the first non-blank character are omitted."""
 
-    def metadata_isdir(name):
+    def metadata_isdir(self, name: str) -> bool:
         """Is the named metadata a directory?  (like ``os.path.isdir()``)"""
 
-    def metadata_listdir(name):
+    def metadata_listdir(self, name: str) -> list[str]:
         """List of metadata names in the directory (like ``os.listdir()``)"""
 
-    def run_script(script_name, namespace):
+    def run_script(self, script_name: str, namespace: dict[str, Any]) -> None:
         """Execute the named script in the supplied namespace dictionary"""
 
 
-class IResourceProvider(IMetadataProvider):
+class IResourceProvider(IMetadataProvider, Protocol):
     """An object that provides access to package resources"""
 
-    def get_resource_filename(manager, resource_name):
+    def get_resource_filename(
+        self, manager: ResourceManager, resource_name: str
+    ) -> str:
         """Return a true filesystem path for `resource_name`
 
-        `manager` must be an ``IResourceManager``"""
+        `manager` must be a ``ResourceManager``"""
 
-    def get_resource_stream(manager, resource_name):
+    def get_resource_stream(
+        self, manager: ResourceManager, resource_name: str
+    ) -> _ResourceStream:
         """Return a readable file-like object for `resource_name`
 
-        `manager` must be an ``IResourceManager``"""
+        `manager` must be a ``ResourceManager``"""
 
-    def get_resource_string(manager, resource_name):
-        """Return a string containing the contents of `resource_name`
+    def get_resource_string(
+        self, manager: ResourceManager, resource_name: str
+    ) -> bytes:
+        """Return the contents of `resource_name` as :obj:`bytes`
 
-        `manager` must be an ``IResourceManager``"""
+        `manager` must be a ``ResourceManager``"""
 
-    def has_resource(resource_name):
+    def has_resource(self, resource_name: str) -> bool:
         """Does the package contain the named resource?"""
 
-    def resource_isdir(resource_name):
+    def resource_isdir(self, resource_name: str) -> bool:
         """Is the named resource a directory?  (like ``os.path.isdir()``)"""
 
-    def resource_listdir(resource_name):
+    def resource_listdir(self, resource_name: str) -> list[str]:
         """List of resource names in the directory (like ``os.listdir()``)"""
 
 
 class WorkingSet:
     """A collection of active distributions on sys.path (or a similar list)"""
 
-    def __init__(self, entries=None):
+    def __init__(self, entries: Iterable[str] | None = None):
         """Create working set from list of path entries (default=sys.path)"""
-        self.entries = []
+        self.entries: list[str] = []
         self.entry_keys = {}
         self.by_key = {}
+        self.normalized_to_canonical_keys = {}
         self.callbacks = []
 
         if entries is None:
@@ -608,7 +681,7 @@ class WorkingSet:
         sys.path[:] = ws.entries
         return ws
 
-    def add_entry(self, entry):
+    def add_entry(self, entry: str):
         """Add a path item to ``.entries``, finding any distributions on it
 
         ``find_distributions(entry, True)`` is used to find distributions
@@ -623,11 +696,11 @@ class WorkingSet:
         for dist in find_distributions(entry, True):
             self.add(dist, entry, False)
 
-    def __contains__(self, dist):
+    def __contains__(self, dist: Distribution) -> bool:
         """True if `dist` is the active distribution for its project"""
         return self.by_key.get(dist.key) == dist
 
-    def find(self, req):
+    def find(self, req: Requirement) -> Distribution | None:
         """Find a distribution matching requirement `req`
 
         If there is an active distribution for the requested project, this
@@ -638,12 +711,20 @@ class WorkingSet:
         is returned.
         """
         dist = self.by_key.get(req.key)
+
+        if dist is None:
+            canonical_key = self.normalized_to_canonical_keys.get(req.key)
+
+            if canonical_key is not None:
+                req.key = canonical_key
+                dist = self.by_key.get(canonical_key)
+
         if dist is not None and dist not in req:
             # XXX add more info
             raise VersionConflict(dist, req)
         return dist
 
-    def iter_entry_points(self, group, name=None):
+    def iter_entry_points(self, group: str, name: str | None = None):
         """Yield entry point objects from `group` matching `name`
 
         If `name` is None, yields all entry points in `group` from all
@@ -657,7 +738,7 @@ class WorkingSet:
             if name is None or name == entry.name
         )
 
-    def run_script(self, requires, script_name):
+    def run_script(self, requires: str, script_name: str):
         """Locate distribution for `requires` and run `script_name` script"""
         ns = sys._getframe(1).f_globals
         name = ns['__name__']
@@ -665,13 +746,13 @@ class WorkingSet:
         ns['__name__'] = name
         self.require(requires)[0].run_script(script_name, ns)
 
-    def __iter__(self):
+    def __iter__(self) -> Iterator[Distribution]:
         """Yield distributions for non-duplicate projects in the working set
 
         The yield order is the order in which the items' path entries were
         added to the working set.
         """
-        seen = {}
+        seen = set()
         for item in self.entries:
             if item not in self.entry_keys:
                 # workaround a cache issue
@@ -679,10 +760,16 @@ class WorkingSet:
 
             for key in self.entry_keys[item]:
                 if key not in seen:
-                    seen[key] = 1
+                    seen.add(key)
                     yield self.by_key[key]
 
-    def add(self, dist, entry=None, insert=True, replace=False):
+    def add(
+        self,
+        dist: Distribution,
+        entry: str | None = None,
+        insert: bool = True,
+        replace: bool = False,
+    ):
         """Add `dist` to working set, associated with `entry`
 
         If `entry` is unspecified, it defaults to the ``.location`` of `dist`.
@@ -706,14 +793,50 @@ class WorkingSet:
             return
 
         self.by_key[dist.key] = dist
+        normalized_name = _packaging_utils.canonicalize_name(dist.key)
+        self.normalized_to_canonical_keys[normalized_name] = dist.key
         if dist.key not in keys:
             keys.append(dist.key)
         if dist.key not in keys2:
             keys2.append(dist.key)
         self._added_new(dist)
 
-    def resolve(self, requirements, env=None, installer=None,
-                replace_conflicting=False, extras=None):
+    @overload
+    def resolve(
+        self,
+        requirements: Iterable[Requirement],
+        env: Environment | None,
+        installer: _InstallerTypeT[_DistributionT],
+        replace_conflicting: bool = False,
+        extras: tuple[str, ...] | None = None,
+    ) -> list[_DistributionT]: ...
+    @overload
+    def resolve(
+        self,
+        requirements: Iterable[Requirement],
+        env: Environment | None = None,
+        *,
+        installer: _InstallerTypeT[_DistributionT],
+        replace_conflicting: bool = False,
+        extras: tuple[str, ...] | None = None,
+    ) -> list[_DistributionT]: ...
+    @overload
+    def resolve(
+        self,
+        requirements: Iterable[Requirement],
+        env: Environment | None = None,
+        installer: _InstallerType | None = None,
+        replace_conflicting: bool = False,
+        extras: tuple[str, ...] | None = None,
+    ) -> list[Distribution]: ...
+    def resolve(
+        self,
+        requirements: Iterable[Requirement],
+        env: Environment | None = None,
+        installer: _InstallerType | None | _InstallerTypeT[_DistributionT] = None,
+        replace_conflicting: bool = False,
+        extras: tuple[str, ...] | None = None,
+    ) -> list[Distribution] | list[_DistributionT]:
         """List all distributions needed to (recursively) meet `requirements`
 
         `requirements` must be a sequence of ``Requirement`` objects.  `env`,
@@ -741,7 +864,7 @@ class WorkingSet:
         # set up the stack
         requirements = list(requirements)[::-1]
         # set of processed requirements
-        processed = {}
+        processed = set()
         # key -> dist
         best = {}
         to_activate = []
@@ -762,33 +885,9 @@ class WorkingSet:
             if not req_extras.markers_pass(req, extras):
                 continue
 
-            dist = best.get(req.key)
-            if dist is None:
-                # Find the best distribution and add it to the map
-                dist = self.by_key.get(req.key)
-                if dist is None or (dist not in req and replace_conflicting):
-                    ws = self
-                    if env is None:
-                        if dist is None:
-                            env = Environment(self.entries)
-                        else:
-                            # Use an empty environment and workingset to avoid
-                            # any further conflicts with the conflicting
-                            # distribution
-                            env = Environment([])
-                            ws = WorkingSet([])
-                    dist = best[req.key] = env.best_match(
-                        req, ws, installer,
-                        replace_conflicting=replace_conflicting
-                    )
-                    if dist is None:
-                        requirers = required_by.get(req, None)
-                        raise DistributionNotFound(req, requirers)
-                to_activate.append(dist)
-            if dist not in req:
-                # Oops, the "best" so far conflicts with a dependency
-                dependent_req = required_by[req]
-                raise VersionConflict(dist, req).with_context(dependent_req)
+            dist = self._resolve_dist(
+                req, best, replace_conflicting, env, installer, required_by, to_activate
+            )
 
             # push the new requirements onto the stack
             new_requirements = dist.requires(req.extras)[::-1]
@@ -799,13 +898,77 @@ class WorkingSet:
                 required_by[new_requirement].add(req.project_name)
                 req_extras[new_requirement] = req.extras
 
-            processed[req] = True
+            processed.add(req)
 
         # return list of distros to activate
         return to_activate
 
+    def _resolve_dist(
+        self, req, best, replace_conflicting, env, installer, required_by, to_activate
+    ) -> Distribution:
+        dist = best.get(req.key)
+        if dist is None:
+            # Find the best distribution and add it to the map
+            dist = self.by_key.get(req.key)
+            if dist is None or (dist not in req and replace_conflicting):
+                ws = self
+                if env is None:
+                    if dist is None:
+                        env = Environment(self.entries)
+                    else:
+                        # Use an empty environment and workingset to avoid
+                        # any further conflicts with the conflicting
+                        # distribution
+                        env = Environment([])
+                        ws = WorkingSet([])
+                dist = best[req.key] = env.best_match(
+                    req, ws, installer, replace_conflicting=replace_conflicting
+                )
+                if dist is None:
+                    requirers = required_by.get(req, None)
+                    raise DistributionNotFound(req, requirers)
+            to_activate.append(dist)
+        if dist not in req:
+            # Oops, the "best" so far conflicts with a dependency
+            dependent_req = required_by[req]
+            raise VersionConflict(dist, req).with_context(dependent_req)
+        return dist
+
+    @overload
     def find_plugins(
-            self, plugin_env, full_env=None, installer=None, fallback=True):
+        self,
+        plugin_env: Environment,
+        full_env: Environment | None,
+        installer: _InstallerTypeT[_DistributionT],
+        fallback: bool = True,
+    ) -> tuple[list[_DistributionT], dict[Distribution, Exception]]: ...
+    @overload
+    def find_plugins(
+        self,
+        plugin_env: Environment,
+        full_env: Environment | None = None,
+        *,
+        installer: _InstallerTypeT[_DistributionT],
+        fallback: bool = True,
+    ) -> tuple[list[_DistributionT], dict[Distribution, Exception]]: ...
+    @overload
+    def find_plugins(
+        self,
+        plugin_env: Environment,
+        full_env: Environment | None = None,
+        installer: _InstallerType | None = None,
+        fallback: bool = True,
+    ) -> tuple[list[Distribution], dict[Distribution, Exception]]: ...
+    def find_plugins(
+        self,
+        plugin_env: Environment,
+        full_env: Environment | None = None,
+        installer: _InstallerType | None | _InstallerTypeT[_DistributionT] = None,
+        fallback: bool = True,
+    ) -> tuple[
+        list[Distribution] | list[_DistributionT],
+        dict[Distribution, Exception],
+    ]:
         """Find all activatable distributions in `plugin_env`
 
         Example usage::
@@ -844,8 +1007,8 @@ class WorkingSet:
         # scan project names in alphabetic order
         plugin_projects.sort()
 
-        error_info = {}
-        distributions = {}
+        error_info: dict[Distribution, Exception] = {}
+        distributions: dict[Distribution, Exception | None] = {}
 
         if full_env is None:
             env = Environment(self.entries)
@@ -858,9 +1021,7 @@ class WorkingSet:
         list(map(shadow_set.add, self))
 
         for project_name in plugin_projects:
-
             for dist in plugin_env[project_name]:
-
                 req = [dist.as_requirement()]
 
                 try:
@@ -883,12 +1044,12 @@ class WorkingSet:
                     # success, no need to try any more versions of this project
                     break
 
-        distributions = list(distributions)
-        distributions.sort()
+        sorted_distributions = list(distributions)
+        sorted_distributions.sort()
 
-        return distributions, error_info
+        return sorted_distributions, error_info
 
-    def require(self, *requirements):
+    def require(self, *requirements: _NestedStr):
         """Ensure that distributions matching `requirements` are activated
 
         `requirements` must be a string or a (possibly-nested) sequence
@@ -904,7 +1065,9 @@ class WorkingSet:
 
         return needed
 
-    def subscribe(self, callback, existing=True):
+    def subscribe(
+        self, callback: Callable[[Distribution], object], existing: bool = True
+    ):
         """Invoke `callback` for all distributions
 
         If `existing=True` (default),
@@ -924,24 +1087,28 @@ class WorkingSet:
 
     def __getstate__(self):
         return (
-            self.entries[:], self.entry_keys.copy(), self.by_key.copy(),
-            self.callbacks[:]
+            self.entries[:],
+            self.entry_keys.copy(),
+            self.by_key.copy(),
+            self.normalized_to_canonical_keys.copy(),
+            self.callbacks[:],
         )
 
-    def __setstate__(self, e_k_b_c):
-        entries, keys, by_key, callbacks = e_k_b_c
+    def __setstate__(self, e_k_b_n_c):
+        entries, keys, by_key, normalized_to_canonical_keys, callbacks = e_k_b_n_c
         self.entries = entries[:]
         self.entry_keys = keys.copy()
         self.by_key = by_key.copy()
+        self.normalized_to_canonical_keys = normalized_to_canonical_keys.copy()
         self.callbacks = callbacks[:]
 
 
-class _ReqExtras(dict):
+class _ReqExtras(Dict["Requirement", Tuple[str, ...]]):
     """
     Map each requirement to the extras that demanded it.
     """
 
-    def markers_pass(self, req, extras=None):
+    def markers_pass(self, req: Requirement, extras: tuple[str, ...] | None = None):
         """
         Evaluate markers for req against each extra that
         demanded it.
@@ -960,8 +1127,11 @@ class Environment:
     """Searchable snapshot of distributions on a search path"""
 
     def __init__(
-            self, search_path=None, platform=get_supported_platform(),
-            python=PY_MAJOR):
+        self,
+        search_path: Iterable[str] | None = None,
+        platform: str | None = get_supported_platform(),
+        python: str | None = PY_MAJOR,
+    ):
         """Snapshot distributions available on a search path
 
         Any distributions found on `search_path` are added to the environment.
@@ -983,7 +1153,7 @@ class Environment:
         self.python = python
         self.scan(search_path)
 
-    def can_add(self, dist):
+    def can_add(self, dist: Distribution):
         """Is distribution `dist` acceptable for this environment?
 
         The distribution must match the platform and python version
@@ -997,11 +1167,11 @@ class Environment:
         )
         return py_compat and compatible_platforms(dist.platform, self.platform)
 
-    def remove(self, dist):
+    def remove(self, dist: Distribution):
         """Remove `dist` from the environment"""
         self._distmap[dist.key].remove(dist)
 
-    def scan(self, search_path=None):
+    def scan(self, search_path: Iterable[str] | None = None):
         """Scan `search_path` for distributions usable in this environment
 
         Any distributions found are added to the environment.
@@ -1016,7 +1186,7 @@ class Environment:
             for dist in find_distributions(item):
                 self.add(dist)
 
-    def __getitem__(self, project_name):
+    def __getitem__(self, project_name: str) -> list[Distribution]:
         """Return a newest-to-oldest list of distributions for `project_name`
 
         Uses case-insensitive `project_name` comparison, assuming all the
@@ -1027,17 +1197,37 @@ class Environment:
         distribution_key = project_name.lower()
         return self._distmap.get(distribution_key, [])
 
-    def add(self, dist):
-        """Add `dist` if we ``can_add()`` it and it has not already been added
-        """
+    def add(self, dist: Distribution):
+        """Add `dist` if we ``can_add()`` it and it has not already been added"""
         if self.can_add(dist) and dist.has_version():
             dists = self._distmap.setdefault(dist.key, [])
             if dist not in dists:
                 dists.append(dist)
                 dists.sort(key=operator.attrgetter('hashcmp'), reverse=True)
 
+    @overload
     def best_match(
-            self, req, working_set, installer=None, replace_conflicting=False):
+        self,
+        req: Requirement,
+        working_set: WorkingSet,
+        installer: _InstallerTypeT[_DistributionT],
+        replace_conflicting: bool = False,
+    ) -> _DistributionT: ...
+    @overload
+    def best_match(
+        self,
+        req: Requirement,
+        working_set: WorkingSet,
+        installer: _InstallerType | None = None,
+        replace_conflicting: bool = False,
+    ) -> Distribution | None: ...
+    def best_match(
+        self,
+        req: Requirement,
+        working_set: WorkingSet,
+        installer: _InstallerType | None | _InstallerTypeT[_DistributionT] = None,
+        replace_conflicting: bool = False,
+    ) -> Distribution | None:
         """Find distribution best matching `req` and usable on `working_set`
 
         This calls the ``find(req)`` method of the `working_set` to see if a
@@ -1064,7 +1254,32 @@ class Environment:
         # try to download/install
         return self.obtain(req, installer)
 
-    def obtain(self, requirement, installer=None):
+    @overload
+    def obtain(
+        self,
+        requirement: Requirement,
+        installer: _InstallerTypeT[_DistributionT],
+    ) -> _DistributionT: ...
+    @overload
+    def obtain(
+        self,
+        requirement: Requirement,
+        installer: Callable[[Requirement], None] | None = None,
+    ) -> None: ...
+    @overload
+    def obtain(
+        self,
+        requirement: Requirement,
+        installer: _InstallerType | None = None,
+    ) -> Distribution | None: ...
+    def obtain(
+        self,
+        requirement: Requirement,
+        installer: Callable[[Requirement], None]
+        | _InstallerType
+        | None
+        | _InstallerTypeT[_DistributionT] = None,
+    ) -> Distribution | None:
         """Obtain a distribution matching `requirement` (e.g. via download)
 
         Obtain a distro that matches requirement (e.g. via download).  In the
@@ -1073,16 +1288,15 @@ class Environment:
         None is returned instead.  This method is a hook that allows subclasses
         to attempt other ways of obtaining a distribution before falling back
         to the `installer` argument."""
-        if installer is not None:
-            return installer(requirement)
+        return installer(requirement) if installer else None
 
-    def __iter__(self):
+    def __iter__(self) -> Iterator[str]:
         """Yield the unique project names of the available distributions"""
         for key in self._distmap.keys():
             if self[key]:
                 yield key
 
-    def __iadd__(self, other):
+    def __iadd__(self, other: Distribution | Environment):
         """In-place addition of a distribution or environment"""
         if isinstance(other, Distribution):
             self.add(other)
@@ -1094,7 +1308,7 @@ class Environment:
             raise TypeError("Can't add %r to environment" % (other,))
         return self
 
-    def __add__(self, other):
+    def __add__(self, other: Distribution | Environment):
         """Add an environment or distribution to an environment"""
         new = self.__class__([], platform=None, python=None)
         for env in self, other:
@@ -1121,55 +1335,61 @@ class ExtractionError(RuntimeError):
         The exception instance that caused extraction to fail
     """
 
+    manager: ResourceManager
+    cache_path: str
+    original_error: BaseException | None
+
 
 class ResourceManager:
     """Manage resource extraction and packages"""
-    extraction_path = None
+
+    extraction_path: str | None = None
 
     def __init__(self):
         self.cached_files = {}
 
-    def resource_exists(self, package_or_requirement, resource_name):
+    def resource_exists(self, package_or_requirement: _PkgReqType, resource_name: str):
         """Does the named resource exist?"""
         return get_provider(package_or_requirement).has_resource(resource_name)
 
-    def resource_isdir(self, package_or_requirement, resource_name):
+    def resource_isdir(self, package_or_requirement: _PkgReqType, resource_name: str):
         """Is the named resource an existing directory?"""
-        return get_provider(package_or_requirement).resource_isdir(
-            resource_name
-        )
+        return get_provider(package_or_requirement).resource_isdir(resource_name)
 
-    def resource_filename(self, package_or_requirement, resource_name):
+    def resource_filename(
+        self, package_or_requirement: _PkgReqType, resource_name: str
+    ):
         """Return a true filesystem path for specified resource"""
         return get_provider(package_or_requirement).get_resource_filename(
             self, resource_name
         )
 
-    def resource_stream(self, package_or_requirement, resource_name):
+    def resource_stream(self, package_or_requirement: _PkgReqType, resource_name: str):
         """Return a readable file-like object for specified resource"""
         return get_provider(package_or_requirement).get_resource_stream(
             self, resource_name
         )
 
-    def resource_string(self, package_or_requirement, resource_name):
-        """Return specified resource as a string"""
+    def resource_string(
+        self, package_or_requirement: _PkgReqType, resource_name: str
+    ) -> bytes:
+        """Return specified resource as :obj:`bytes`"""
         return get_provider(package_or_requirement).get_resource_string(
             self, resource_name
         )
 
-    def resource_listdir(self, package_or_requirement, resource_name):
+    def resource_listdir(self, package_or_requirement: _PkgReqType, resource_name: str):
         """List the contents of the named resource directory"""
-        return get_provider(package_or_requirement).resource_listdir(
-            resource_name
-        )
+        return get_provider(package_or_requirement).resource_listdir(resource_name)
 
-    def extraction_error(self):
+    def extraction_error(self) -> NoReturn:
         """Give an error message for problems extracting file(s)"""
 
         old_exc = sys.exc_info()[1]
         cache_path = self.extraction_path or get_default_cache()
 
-        tmpl = textwrap.dedent("""
+        tmpl = textwrap.dedent(
+            """
             Can't extract file(s) to egg cache
 
             The following error occurred while trying to extract file(s)
@@ -1184,14 +1404,15 @@ class ResourceManager:
             Perhaps your account does not have write access to this directory?
             You can change the cache directory by setting the PYTHON_EGG_CACHE
             environment variable to point to an accessible directory.
-            """).lstrip()
+            """
+        ).lstrip()
         err = ExtractionError(tmpl.format(**locals()))
         err.manager = self
         err.cache_path = cache_path
         err.original_error = old_exc
         raise err
 
-    def get_cache_path(self, archive_name, names=()):
+    def get_cache_path(self, archive_name: str, names: Iterable[StrPath] = ()):
         """Return absolute location in cache for `archive_name` and `names`
 
         The parent directory of the resulting path will be created if it does
@@ -1213,7 +1434,7 @@ class ResourceManager:
 
         self._warn_unsafe_extraction_path(extract_path)
 
-        self.cached_files[target_path] = 1
+        self.cached_files[target_path] = True
         return target_path
 
     @staticmethod
@@ -1234,15 +1455,16 @@ class ResourceManager:
         mode = os.stat(path).st_mode
         if mode & stat.S_IWOTH or mode & stat.S_IWGRP:
             msg = (
-                "%s is writable by group/others and vulnerable to attack "
-                "when "
-                "used with get_resource_filename. Consider a more secure "
+                "Extraction path is writable by group/others "
+                "and vulnerable to attack when "
+                "used with get_resource_filename ({path}). "
+                "Consider a more secure "
                 "location (set with .set_extraction_path or the "
-                "PYTHON_EGG_CACHE environment variable)." % path
-            )
+                "PYTHON_EGG_CACHE environment variable)."
+            ).format(**locals())
             warnings.warn(msg, UserWarning)
 
-    def postprocess(self, tempname, filename):
+    def postprocess(self, tempname: StrOrBytesPath, filename: StrOrBytesPath):
         """Perform any platform-specific postprocessing of `tempname`
 
         This is where Mac header rewrites should be done; other platforms don't
@@ -1262,7 +1484,7 @@ class ResourceManager:
             mode = ((os.stat(tempname).st_mode) | 0o555) & 0o7777
             os.chmod(tempname, mode)
 
-    def set_extraction_path(self, path):
+    def set_extraction_path(self, path: str):
         """Set the base path where resources will be extracted to, if needed.
 
         If you do not call this routine before any extractions take place, the
@@ -1282,13 +1504,11 @@ class ResourceManager:
         ``cleanup_resources()``.)
         """
         if self.cached_files:
-            raise ValueError(
-                "Can't change extraction path, files already extracted"
-            )
+            raise ValueError("Can't change extraction path, files already extracted")
 
         self.extraction_path = path
 
-    def cleanup_resources(self, force=False):
+    def cleanup_resources(self, force: bool = False) -> list[str]:
         """
         Delete all extracted resource files and directories, returning a list
         of the file and directory names that could not be successfully removed.
@@ -1300,21 +1520,19 @@ class ResourceManager:
         directory used for extractions.
         """
         # XXX
+        return []
 
 
-def get_default_cache():
+def get_default_cache() -> str:
     """
     Return the ``PYTHON_EGG_CACHE`` environment variable
     or a platform-relevant user cache dir for an app
     named "Python-Eggs".
     """
-    return (
-        os.environ.get('PYTHON_EGG_CACHE')
-        or platformdirs.user_cache_dir(appname='Python-Eggs')
-    )
+    return os.environ.get('PYTHON_EGG_CACHE') or _user_cache_dir(appname='Python-Eggs')
 
 
-def safe_name(name):
+def safe_name(name: str):
     """Convert an arbitrary string to a standard distribution name
 
     Any runs of non-alphanumeric/. characters are replaced with a single '-'.
@@ -1322,19 +1540,51 @@ def safe_name(name):
     return re.sub('[^A-Za-z0-9.]+', '-', name)
 
 
-def safe_version(version):
+def safe_version(version: str):
     """
     Convert an arbitrary string to a standard version string
     """
     try:
         # normalize the version
-        return str(packaging.version.Version(version))
-    except packaging.version.InvalidVersion:
+        return str(_packaging_version.Version(version))
+    except _packaging_version.InvalidVersion:
         version = version.replace(' ', '.')
         return re.sub('[^A-Za-z0-9.]+', '-', version)
 
 
-def safe_extra(extra):
+def _forgiving_version(version):
+    """Fallback when ``safe_version`` is not safe enough
+    >>> parse_version(_forgiving_version('0.23ubuntu1'))
+    
+    >>> parse_version(_forgiving_version('0.23-'))
+    
+    >>> parse_version(_forgiving_version('0.-_'))
+    
+    >>> parse_version(_forgiving_version('42.+?1'))
+    
+    >>> parse_version(_forgiving_version('hello world'))
+    
+    """
+    version = version.replace(' ', '.')
+    match = _PEP440_FALLBACK.search(version)
+    if match:
+        safe = match["safe"]
+        rest = version[len(safe) :]
+    else:
+        safe = "0"
+        rest = version
+    local = f"sanitized.{_safe_segment(rest)}".strip(".")
+    return f"{safe}.dev0+{local}"
+
+
+def _safe_segment(segment):
+    """Convert an arbitrary string into a safe segment"""
+    segment = re.sub('[^A-Za-z0-9.]+', '-', segment)
+    segment = re.sub('-[^A-Za-z0-9]+', '-', segment)
+    return re.sub(r'\.[^A-Za-z0-9]+', '.', segment).strip(".-")
+
+
+def safe_extra(extra: str):
     """Convert an arbitrary string to a standard 'extra' name
 
     Any runs of non-alphanumeric characters are replaced with a single '_',
@@ -1343,7 +1593,7 @@ def safe_extra(extra):
     return re.sub('[^A-Za-z0-9.-]+', '_', extra).lower()
 
 
-def to_filename(name):
+def to_filename(name: str):
     """Convert a project or version name to its filename-escaped form
 
     Any '-' characters are currently replaced with '_'.
@@ -1351,7 +1601,7 @@ def to_filename(name):
     return name.replace('-', '_')
 
 
-def invalid_marker(text):
+def invalid_marker(text: str):
     """
     Validate text as a PEP 508 environment marker; return an exception
     if invalid or False otherwise.
@@ -1365,7 +1615,7 @@ def invalid_marker(text):
     return False
 
 
-def evaluate_marker(text, extra=None):
+def evaluate_marker(text: str, extra: str | None = None) -> bool:
     """
     Evaluate a PEP 508 environment marker.
     Return a boolean indicating the marker result in this environment.
@@ -1374,52 +1624,52 @@ def evaluate_marker(text, extra=None):
     This implementation uses the 'pyparsing' module.
     """
     try:
-        marker = packaging.markers.Marker(text)
+        marker = _packaging_markers.Marker(text)
         return marker.evaluate()
-    except packaging.markers.InvalidMarker as e:
-        raise SyntaxError(e)
+    except _packaging_markers.InvalidMarker as e:
+        raise SyntaxError(e) from e
 
 
 class NullProvider:
     """Try to implement resources and metadata for arbitrary PEP 302 loaders"""
 
-    egg_name = None
-    egg_info = None
-    loader = None
+    egg_name: str | None = None
+    egg_info: str | None = None
+    loader: _LoaderProtocol | None = None
 
-    def __init__(self, module):
+    def __init__(self, module: _ModuleLike):
         self.loader = getattr(module, '__loader__', None)
         self.module_path = os.path.dirname(getattr(module, '__file__', ''))
 
-    def get_resource_filename(self, manager, resource_name):
+    def get_resource_filename(self, manager: ResourceManager, resource_name: str):
         return self._fn(self.module_path, resource_name)
 
-    def get_resource_stream(self, manager, resource_name):
+    def get_resource_stream(self, manager: ResourceManager, resource_name: str):
         return io.BytesIO(self.get_resource_string(manager, resource_name))
 
-    def get_resource_string(self, manager, resource_name):
+    def get_resource_string(
+        self, manager: ResourceManager, resource_name: str
+    ) -> bytes:
         return self._get(self._fn(self.module_path, resource_name))
 
-    def has_resource(self, resource_name):
+    def has_resource(self, resource_name: str):
         return self._has(self._fn(self.module_path, resource_name))
 
     def _get_metadata_path(self, name):
         return self._fn(self.egg_info, name)
 
-    def has_metadata(self, name):
+    def has_metadata(self, name: str) -> bool:
         if not self.egg_info:
-            return self.egg_info
+            return False
 
         path = self._get_metadata_path(name)
         return self._has(path)
 
-    def get_metadata(self, name):
+    def get_metadata(self, name: str):
         if not self.egg_info:
             return ""
         path = self._get_metadata_path(name)
         value = self._get(path)
-        if six.PY2:
-            return value
         try:
             return value.decode('utf-8')
         except UnicodeDecodeError as exc:
@@ -1428,62 +1678,72 @@ class NullProvider:
             exc.reason += ' in {} file at path: {}'.format(name, path)
             raise
 
-    def get_metadata_lines(self, name):
+    def get_metadata_lines(self, name: str) -> Iterator[str]:
         return yield_lines(self.get_metadata(name))
 
-    def resource_isdir(self, resource_name):
+    def resource_isdir(self, resource_name: str):
         return self._isdir(self._fn(self.module_path, resource_name))
 
-    def metadata_isdir(self, name):
-        return self.egg_info and self._isdir(self._fn(self.egg_info, name))
+    def metadata_isdir(self, name: str) -> bool:
+        return bool(self.egg_info and self._isdir(self._fn(self.egg_info, name)))
 
-    def resource_listdir(self, resource_name):
+    def resource_listdir(self, resource_name: str):
         return self._listdir(self._fn(self.module_path, resource_name))
 
-    def metadata_listdir(self, name):
+    def metadata_listdir(self, name: str) -> list[str]:
         if self.egg_info:
             return self._listdir(self._fn(self.egg_info, name))
         return []
 
-    def run_script(self, script_name, namespace):
+    def run_script(self, script_name: str, namespace: dict[str, Any]):
         script = 'scripts/' + script_name
         if not self.has_metadata(script):
             raise ResolutionError(
-                "Script {script!r} not found in metadata at {self.egg_info!r}"
-                .format(**locals()),
+                "Script {script!r} not found in metadata at {self.egg_info!r}".format(
+                    **locals()
+                ),
             )
+
         script_text = self.get_metadata(script).replace('\r\n', '\n')
         script_text = script_text.replace('\r', '\n')
         script_filename = self._fn(self.egg_info, script)
         namespace['__file__'] = script_filename
         if os.path.exists(script_filename):
-            source = open(script_filename).read()
+            source = _read_utf8_with_fallback(script_filename)
             code = compile(source, script_filename, 'exec')
             exec(code, namespace, namespace)
         else:
             from linecache import cache
+
             cache[script_filename] = (
-                len(script_text), 0, script_text.split('\n'), script_filename
+                len(script_text),
+                0,
+                script_text.split('\n'),
+                script_filename,
             )
             script_code = compile(script_text, script_filename, 'exec')
             exec(script_code, namespace, namespace)
 
-    def _has(self, path):
+    def _has(self, path) -> bool:
         raise NotImplementedError(
             "Can't perform this operation for unregistered loader type"
         )
 
-    def _isdir(self, path):
+    def _isdir(self, path) -> bool:
         raise NotImplementedError(
             "Can't perform this operation for unregistered loader type"
         )
 
-    def _listdir(self, path):
+    def _listdir(self, path) -> list[str]:
         raise NotImplementedError(
             "Can't perform this operation for unregistered loader type"
         )
 
-    def _fn(self, base, resource_name):
+    def _fn(self, base: str | None, resource_name: str):
+        if base is None:
+            raise TypeError(
+                "`base` parameter in `_fn` is `None`. Either override this method or check the parameter first."
+            )
         self._validate_resource_path(resource_name)
         if resource_name:
             return os.path.join(base, *resource_name.split('/'))
@@ -1493,7 +1753,7 @@ class NullProvider:
     def _validate_resource_path(path):
         """
         Validate the resource paths according to the docs.
-        https://setuptools.readthedocs.io/en/latest/pkg_resources.html#basic-resource-access
+        https://setuptools.pypa.io/en/latest/pkg_resources.html#basic-resource-access
 
         >>> warned = getfixture('recwarn')
         >>> warnings.simplefilter('always')
@@ -1543,9 +1803,10 @@ is not allowed.
         AttributeError: ...
         """
         invalid = (
-            os.path.pardir in path.split(posixpath.sep) or
-            posixpath.isabs(path) or
-            ntpath.isabs(path)
+            os.path.pardir in path.split(posixpath.sep)
+            or posixpath.isabs(path)
+            or ntpath.isabs(path)
+            or path.startswith("\\")
         )
         if not invalid:
             return
@@ -1553,20 +1814,20 @@ is not allowed.
         msg = "Use of .. or absolute path in a resource path is not allowed."
 
         # Aggressively disallow Windows absolute paths
-        if ntpath.isabs(path) and not posixpath.isabs(path):
+        if (path.startswith("\\") or ntpath.isabs(path)) and not posixpath.isabs(path):
             raise ValueError(msg)
 
         # for compatibility, warn; in future
         # raise ValueError(msg)
-        warnings.warn(
+        issue_warning(
             msg[:-1] + " and will raise exceptions in a future release.",
             DeprecationWarning,
-            stacklevel=4,
         )
 
-    def _get(self, path):
-        if hasattr(self.loader, 'get_data'):
-            return self.loader.get_data(path)
+    def _get(self, path) -> bytes:
+        if hasattr(self.loader, 'get_data') and self.loader:
+            # Already checked get_data exists
+            return self.loader.get_data(path)  # type: ignore[attr-defined]
         raise NotImplementedError(
             "Can't perform this operation for loaders without 'get_data()'"
         )
@@ -1575,52 +1836,64 @@ is not allowed.
 register_loader_type(object, NullProvider)
 
 
+def _parents(path):
+    """
+    yield all parents of path including path
+    """
+    last = None
+    while path != last:
+        yield path
+        last = path
+        path, _ = os.path.split(path)
+
+
 class EggProvider(NullProvider):
     """Provider based on a virtual filesystem"""
 
-    def __init__(self, module):
-        NullProvider.__init__(self, module)
+    def __init__(self, module: _ModuleLike):
+        super().__init__(module)
         self._setup_prefix()
 
     def _setup_prefix(self):
-        # we assume here that our metadata may be nested inside a "basket"
-        # of multiple eggs; that's why we use module_path instead of .archive
-        path = self.module_path
-        old = None
-        while path != old:
-            if _is_egg_path(path):
-                self.egg_name = os.path.basename(path)
-                self.egg_info = os.path.join(path, 'EGG-INFO')
-                self.egg_root = path
-                break
-            old = path
-            path, base = os.path.split(path)
+        # Assume that metadata may be nested inside a "basket"
+        # of multiple eggs and use module_path instead of .archive.
+        eggs = filter(_is_egg_path, _parents(self.module_path))
+        egg = next(eggs, None)
+        egg and self._set_egg(egg)
+
+    def _set_egg(self, path: str):
+        self.egg_name = os.path.basename(path)
+        self.egg_info = os.path.join(path, 'EGG-INFO')
+        self.egg_root = path
 
 
 class DefaultProvider(EggProvider):
     """Provides access to package resources in the filesystem"""
 
-    def _has(self, path):
+    def _has(self, path) -> bool:
         return os.path.exists(path)
 
-    def _isdir(self, path):
+    def _isdir(self, path) -> bool:
         return os.path.isdir(path)
 
     def _listdir(self, path):
         return os.listdir(path)
 
-    def get_resource_stream(self, manager, resource_name):
+    def get_resource_stream(self, manager: object, resource_name: str):
         return open(self._fn(self.module_path, resource_name), 'rb')
 
-    def _get(self, path):
+    def _get(self, path) -> bytes:
         with open(path, 'rb') as stream:
             return stream.read()
 
     @classmethod
     def _register(cls):
-        loader_names = 'SourceFileLoader', 'SourcelessFileLoader',
+        loader_names = (
+            'SourceFileLoader',
+            'SourcelessFileLoader',
+        )
         for name in loader_names:
-            loader_cls = getattr(importlib_machinery, name, type(None))
+            loader_cls = getattr(importlib.machinery, name, type(None))
             register_loader_type(loader_cls, cls)
 
 
@@ -1630,12 +1903,13 @@ DefaultProvider._register()
 class EmptyProvider(NullProvider):
     """Provider that returns nothing for all requests"""
 
-    module_path = None
+    # A special case, we don't want all Providers inheriting from NullProvider to have a potentially None module_path
+    module_path: str | None = None  # type: ignore[assignment]
 
     _isdir = _has = lambda self, path: False
 
-    def _get(self, path):
-        return ''
+    def _get(self, path) -> bytes:
+        return b''
 
     def _listdir(self, path):
         return []
@@ -1647,13 +1921,14 @@ class EmptyProvider(NullProvider):
 empty_provider = EmptyProvider()
 
 
-class ZipManifests(dict):
+class ZipManifests(Dict[str, "MemoizedZipManifests.manifest_mod"]):
     """
     zip manifest builder
     """
 
+    # `path` could be `StrPath | IO[bytes]` but that violates the LSP for `MemoizedZipManifests.load`
     @classmethod
-    def build(cls, path):
+    def build(cls, path: str):
         """
         Build a dictionary similar to the zipimport directory
         caches, except instead of tuples, store ZipInfo objects.
@@ -1678,9 +1953,12 @@ class MemoizedZipManifests(ZipManifests):
     """
     Memoized zipfile manifests.
     """
-    manifest_mod = collections.namedtuple('manifest_mod', 'manifest mtime')
 
-    def load(self, path):
+    class manifest_mod(NamedTuple):
+        manifest: dict[str, zipfile.ZipInfo]
+        mtime: float
+
+    def load(self, path: str) -> dict[str, zipfile.ZipInfo]:  # type: ignore[override] # ZipManifests.load is a classmethod
         """
         Load a manifest at path or return a suitable manifest already loaded.
         """
@@ -1697,11 +1975,13 @@ class MemoizedZipManifests(ZipManifests):
 class ZipProvider(EggProvider):
     """Resource support for zips and eggs"""
 
-    eagers = None
+    eagers: list[str] | None = None
     _zip_manifests = MemoizedZipManifests()
+    # ZipProvider's loader should always be a zipimporter or equivalent
+    loader: zipimport.zipimporter
 
-    def __init__(self, module):
-        EggProvider.__init__(self, module)
+    def __init__(self, module: _ZipLoaderModule):
+        super().__init__(module)
         self.zip_pre = self.loader.archive + os.sep
 
     def _zipinfo_name(self, fspath):
@@ -1711,26 +1991,22 @@ class ZipProvider(EggProvider):
         if fspath == self.loader.archive:
             return ''
         if fspath.startswith(self.zip_pre):
-            return fspath[len(self.zip_pre):]
-        raise AssertionError(
-            "%s is not a subpath of %s" % (fspath, self.zip_pre)
-        )
+            return fspath[len(self.zip_pre) :]
+        raise AssertionError("%s is not a subpath of %s" % (fspath, self.zip_pre))
 
     def _parts(self, zip_path):
         # Convert a zipfile subpath into an egg-relative path part list.
         # pseudo-fs path
         fspath = self.zip_pre + zip_path
         if fspath.startswith(self.egg_root + os.sep):
-            return fspath[len(self.egg_root) + 1:].split(os.sep)
-        raise AssertionError(
-            "%s is not a subpath of %s" % (fspath, self.egg_root)
-        )
+            return fspath[len(self.egg_root) + 1 :].split(os.sep)
+        raise AssertionError("%s is not a subpath of %s" % (fspath, self.egg_root))
 
     @property
     def zipinfo(self):
         return self._zip_manifests.load(self.loader.archive)
 
-    def get_resource_filename(self, manager, resource_name):
+    def get_resource_filename(self, manager: ResourceManager, resource_name: str):
         if not self.egg_name:
             raise NotImplementedError(
                 "resource_filename() only supported for .egg, not .zip"
@@ -1752,26 +2028,26 @@ class ZipProvider(EggProvider):
         timestamp = time.mktime(date_time)
         return timestamp, size
 
-    def _extract_resource(self, manager, zip_path):
-
+    # FIXME: 'ZipProvider._extract_resource' is too complex (12)
+    def _extract_resource(self, manager: ResourceManager, zip_path) -> str:  # noqa: C901
         if zip_path in self._index():
             for name in self._index()[zip_path]:
-                last = self._extract_resource(
-                    manager, os.path.join(zip_path, name)
-                )
+                last = self._extract_resource(manager, os.path.join(zip_path, name))
             # return the extracted directory name
             return os.path.dirname(last)
 
         timestamp, size = self._get_date_and_size(self.zipinfo[zip_path])
 
         if not WRITE_SUPPORT:
-            raise IOError('"os.rename" and "os.unlink" are not supported '
-                          'on this platform')
-        try:
-
-            real_path = manager.get_cache_path(
-                self.egg_name, self._parts(zip_path)
+            raise OSError(
+                '"os.rename" and "os.unlink" are not supported on this platform'
             )
+        try:
+            if not self.egg_name:
+                raise OSError(
+                    '"egg_name" is empty. This likely means no egg could be found from the "module_path".'
+                )
+            real_path = manager.get_cache_path(self.egg_name, self._parts(zip_path))
 
             if self._is_current(real_path, zip_path):
                 return real_path
@@ -1788,7 +2064,7 @@ class ZipProvider(EggProvider):
             try:
                 rename(tmpnam, real_path)
 
-            except os.error:
+            except OSError:
                 if os.path.isfile(real_path):
                     if self._is_current(real_path, zip_path):
                         # the file became current since it was checked above,
@@ -1801,7 +2077,7 @@ class ZipProvider(EggProvider):
                         return real_path
                 raise
 
-        except os.error:
+        except OSError:
             # report a user-friendly error
             manager.extraction_error()
 
@@ -1849,20 +2125,20 @@ class ZipProvider(EggProvider):
             self._dirindex = ind
             return ind
 
-    def _has(self, fspath):
+    def _has(self, fspath) -> bool:
         zip_path = self._zipinfo_name(fspath)
         return zip_path in self.zipinfo or zip_path in self._index()
 
-    def _isdir(self, fspath):
+    def _isdir(self, fspath) -> bool:
         return self._zipinfo_name(fspath) in self._index()
 
     def _listdir(self, fspath):
         return list(self._index().get(self._zipinfo_name(fspath), ()))
 
-    def _eager_to_zip(self, resource_name):
+    def _eager_to_zip(self, resource_name: str):
         return self._zipinfo_name(self._fn(self.egg_root, resource_name))
 
-    def _resource_to_zip(self, resource_name):
+    def _resource_to_zip(self, resource_name: str):
         return self._zipinfo_name(self._fn(self.module_path, resource_name))
 
 
@@ -1881,33 +2157,32 @@ class FileMetadata(EmptyProvider):
     the provided location.
     """
 
-    def __init__(self, path):
+    def __init__(self, path: StrPath):
         self.path = path
 
     def _get_metadata_path(self, name):
         return self.path
 
-    def has_metadata(self, name):
+    def has_metadata(self, name: str) -> bool:
         return name == 'PKG-INFO' and os.path.isfile(self.path)
 
-    def get_metadata(self, name):
+    def get_metadata(self, name: str):
         if name != 'PKG-INFO':
             raise KeyError("No metadata except PKG-INFO is available")
 
-        with io.open(self.path, encoding='utf-8', errors="replace") as f:
+        with open(self.path, encoding='utf-8', errors="replace") as f:
             metadata = f.read()
         self._warn_on_replacement(metadata)
         return metadata
 
     def _warn_on_replacement(self, metadata):
-        # Python 2.7 compat for: replacement_char = '�'
-        replacement_char = b'\xef\xbf\xbd'.decode('utf-8')
+        replacement_char = '�'
         if replacement_char in metadata:
             tmpl = "{self.path} could not be properly decoded in UTF-8"
             msg = tmpl.format(**locals())
             warnings.warn(msg)
 
-    def get_metadata_lines(self, name):
+    def get_metadata_lines(self, name: str) -> Iterator[str]:
         return yield_lines(self.get_metadata(name))
 
 
@@ -1931,7 +2206,7 @@ class PathMetadata(DefaultProvider):
         dist = Distribution.from_filename(egg_path, metadata=metadata)
     """
 
-    def __init__(self, path, egg_info):
+    def __init__(self, path: str, egg_info: str):
         self.module_path = path
         self.egg_info = egg_info
 
@@ -1939,7 +2214,7 @@ class PathMetadata(DefaultProvider):
 class EggMetadata(ZipProvider):
     """Metadata provider for .egg files"""
 
-    def __init__(self, importer):
+    def __init__(self, importer: zipimport.zipimporter):
         """Create a metadata provider from a zipimporter"""
 
         self.zip_pre = importer.archive + os.sep
@@ -1951,10 +2226,12 @@ class EggMetadata(ZipProvider):
         self._setup_prefix()
 
 
-_declare_state('dict', _distribution_finders={})
+_distribution_finders: dict[type, _DistFinderType[Any]] = _declare_state(
+    'dict', '_distribution_finders', {}
+)
 
 
-def register_finder(importer_type, distribution_finder):
+def register_finder(importer_type: type[_T], distribution_finder: _DistFinderType[_T]):
     """Register `distribution_finder` to find distributions in sys.path items
 
     `importer_type` is the type or class of a PEP 302 "Importer" (sys.path item
@@ -1964,14 +2241,16 @@ def register_finder(importer_type, distribution_finder):
     _distribution_finders[importer_type] = distribution_finder
 
 
-def find_distributions(path_item, only=False):
+def find_distributions(path_item: str, only: bool = False):
     """Yield distributions accessible via `path_item`"""
     importer = get_importer(path_item)
     finder = _find_adapter(_distribution_finders, importer)
     return finder(importer, path_item, only)
 
 
-def find_eggs_in_zip(importer, path_item, only=False):
+def find_eggs_in_zip(
+    importer: zipimport.zipimporter, path_item: str, only: bool = False
+) -> Iterator[Distribution]:
     """
     Find eggs in zip files; possibly multiple nested eggs.
     """
@@ -1989,9 +2268,8 @@ def find_eggs_in_zip(importer, path_item, only=False):
         if _is_egg_path(subitem):
             subpath = os.path.join(path_item, subitem)
             dists = find_eggs_in_zip(zipimport.zipimporter(subpath), subpath)
-            for dist in dists:
-                yield dist
-        elif subitem.lower().endswith('.dist-info'):
+            yield from dists
+        elif subitem.lower().endswith(('.dist-info', '.egg-info')):
             subpath = os.path.join(path_item, subitem)
             submeta = EggMetadata(zipimport.zipimporter(subpath))
             submeta.egg_info = subpath
@@ -2001,85 +2279,51 @@ def find_eggs_in_zip(importer, path_item, only=False):
 register_finder(zipimport.zipimporter, find_eggs_in_zip)
 
 
-def find_nothing(importer, path_item, only=False):
+def find_nothing(
+    importer: object | None, path_item: str | None, only: bool | None = False
+):
     return ()
 
 
 register_finder(object, find_nothing)
 
 
-def _by_version_descending(names):
-    """
-    Given a list of filenames, return them in descending order
-    by version number.
-
-    >>> names = 'bar', 'foo', 'Python-2.7.10.egg', 'Python-2.7.2.egg'
-    >>> _by_version_descending(names)
-    ['Python-2.7.10.egg', 'Python-2.7.2.egg', 'foo', 'bar']
-    >>> names = 'Setuptools-1.2.3b1.egg', 'Setuptools-1.2.3.egg'
-    >>> _by_version_descending(names)
-    ['Setuptools-1.2.3.egg', 'Setuptools-1.2.3b1.egg']
-    >>> names = 'Setuptools-1.2.3b1.egg', 'Setuptools-1.2.3.post1.egg'
-    >>> _by_version_descending(names)
-    ['Setuptools-1.2.3.post1.egg', 'Setuptools-1.2.3b1.egg']
-    """
-    def _by_version(name):
-        """
-        Parse each component of the filename
-        """
-        name, ext = os.path.splitext(name)
-        parts = itertools.chain(name.split('-'), [ext])
-        return [packaging.version.parse(part) for part in parts]
-
-    return sorted(names, key=_by_version, reverse=True)
-
-
-def find_on_path(importer, path_item, only=False):
+def find_on_path(importer: object | None, path_item, only=False):
     """Yield distributions accessible on a sys.path directory"""
     path_item = _normalize_cached(path_item)
 
     if _is_unpacked_egg(path_item):
         yield Distribution.from_filename(
-            path_item, metadata=PathMetadata(
-                path_item, os.path.join(path_item, 'EGG-INFO')
-            )
+            path_item,
+            metadata=PathMetadata(path_item, os.path.join(path_item, 'EGG-INFO')),
         )
         return
 
-    entries = safe_listdir(path_item)
-
-    # for performance, before sorting by version,
-    # screen entries for only those that will yield
-    # distributions
-    filtered = (
-        entry
-        for entry in entries
-        if dist_factory(path_item, entry, only)
-    )
+    entries = (os.path.join(path_item, child) for child in safe_listdir(path_item))
 
     # scan for .egg and .egg-info in directory
-    path_item_entries = _by_version_descending(filtered)
-    for entry in path_item_entries:
+    for entry in sorted(entries):
         fullpath = os.path.join(path_item, entry)
         factory = dist_factory(path_item, entry, only)
-        for dist in factory(fullpath):
-            yield dist
+        yield from factory(fullpath)
 
 
 def dist_factory(path_item, entry, only):
-    """
-    Return a dist_factory for a path_item and entry
-    """
+    """Return a dist_factory for the given entry."""
     lower = entry.lower()
-    is_meta = any(map(lower.endswith, ('.egg-info', '.dist-info')))
+    is_egg_info = lower.endswith('.egg-info')
+    is_dist_info = lower.endswith('.dist-info') and os.path.isdir(
+        os.path.join(path_item, entry)
+    )
+    is_meta = is_egg_info or is_dist_info
     return (
         distributions_from_metadata
-        if is_meta else
-        find_distributions
-        if not only and _is_egg_path(entry) else
-        resolve_egg_link
-        if not only and lower.endswith('.egg-link') else
-        NoDists()
+        if is_meta
+        else find_distributions
+        if not only and _is_egg_path(entry)
+        else resolve_egg_link
+        if not only and lower.endswith('.egg-link')
+        else NoDists()
     )
 
 
@@ -2091,16 +2335,15 @@ class NoDists:
     >>> list(NoDists()('anything'))
     []
     """
+
     def __bool__(self):
         return False
-    if six.PY2:
-        __nonzero__ = __bool__
 
     def __call__(self, fullpath):
         return iter(())
 
 
-def safe_listdir(path):
+def safe_listdir(path: StrOrBytesPath):
     """
     Attempt to list contents of path, but suppress some exceptions.
     """
@@ -2111,28 +2354,26 @@ def safe_listdir(path):
     except OSError as e:
         # Ignore the directory if does not exist, not a directory or
         # permission denied
-        ignorable = (
-            e.errno in (errno.ENOTDIR, errno.EACCES, errno.ENOENT)
-            # Python 2 on Windows needs to be handled this way :(
-            or getattr(e, "winerror", None) == 267
-        )
-        if not ignorable:
+        if e.errno not in (errno.ENOTDIR, errno.EACCES, errno.ENOENT):
             raise
     return ()
 
 
-def distributions_from_metadata(path):
+def distributions_from_metadata(path: str):
     root = os.path.dirname(path)
     if os.path.isdir(path):
         if len(os.listdir(path)) == 0:
             # empty metadata dir; skip
             return
-        metadata = PathMetadata(root, path)
+        metadata: _MetadataType = PathMetadata(root, path)
     else:
         metadata = FileMetadata(path)
     entry = os.path.basename(path)
     yield Distribution.from_location(
-        root, entry, metadata, precedence=DEVELOP_DIST,
+        root,
+        entry,
+        metadata,
+        precedence=DEVELOP_DIST,
     )
 
 
@@ -2140,11 +2381,10 @@ def non_empty_lines(path):
     """
     Yield non-empty lines from file at path
     """
-    with open(path) as f:
-        for line in f:
-            line = line.strip()
-            if line:
-                yield line
+    for line in _read_utf8_with_fallback(path).splitlines():
+        line = line.strip()
+        if line:
+            yield line
 
 
 def resolve_egg_link(path):
@@ -2154,23 +2394,28 @@ def resolve_egg_link(path):
     """
     referenced_paths = non_empty_lines(path)
     resolved_paths = (
-        os.path.join(os.path.dirname(path), ref)
-        for ref in referenced_paths
+        os.path.join(os.path.dirname(path), ref) for ref in referenced_paths
     )
     dist_groups = map(find_distributions, resolved_paths)
     return next(dist_groups, ())
 
 
-register_finder(pkgutil.ImpImporter, find_on_path)
+if hasattr(pkgutil, 'ImpImporter'):
+    register_finder(pkgutil.ImpImporter, find_on_path)
 
-if hasattr(importlib_machinery, 'FileFinder'):
-    register_finder(importlib_machinery.FileFinder, find_on_path)
+register_finder(importlib.machinery.FileFinder, find_on_path)
 
-_declare_state('dict', _namespace_handlers={})
-_declare_state('dict', _namespace_packages={})
+_namespace_handlers: dict[type, _NSHandlerType[Any]] = _declare_state(
+    'dict', '_namespace_handlers', {}
+)
+_namespace_packages: dict[str | None, list[str]] = _declare_state(
+    'dict', '_namespace_packages', {}
+)
 
 
-def register_namespace_handler(importer_type, namespace_handler):
+def register_namespace_handler(
+    importer_type: type[_T], namespace_handler: _NSHandlerType[_T]
+):
     """Register `namespace_handler` to declare namespace packages
 
     `importer_type` is the type or class of a PEP 302 "Importer" (sys.path item
@@ -2195,10 +2440,16 @@ def _handle_ns(packageName, path_item):
     if importer is None:
         return None
 
-    # capture warnings due to #1111
-    with warnings.catch_warnings():
-        warnings.simplefilter("ignore")
-        loader = importer.find_module(packageName)
+    # use find_spec (PEP 451) and fall-back to find_module (PEP 302)
+    try:
+        spec = importer.find_spec(packageName)
+    except AttributeError:
+        # capture warnings due to #1111
+        with warnings.catch_warnings():
+            warnings.simplefilter("ignore")
+            loader = importer.find_module(packageName)
+    else:
+        loader = spec.loader if spec else None
 
     if loader is None:
         return None
@@ -2214,12 +2465,12 @@ def _handle_ns(packageName, path_item):
     if subpath is not None:
         path = module.__path__
         path.append(subpath)
-        loader.load_module(packageName)
+        importlib.import_module(packageName)
         _rebuild_mod_path(path, packageName, module)
     return subpath
 
 
-def _rebuild_mod_path(orig_path, package_name, module):
+def _rebuild_mod_path(orig_path, package_name, module: types.ModuleType):
     """
     Rebuild module.__path__ ensuring that all entries are ordered
     corresponding to their sys.path order
@@ -2253,15 +2504,24 @@ def _rebuild_mod_path(orig_path, package_name, module):
         module.__path__ = new_path
 
 
-def declare_namespace(packageName):
+def declare_namespace(packageName: str):
     """Declare that package 'packageName' is a namespace package"""
 
+    msg = (
+        f"Deprecated call to `pkg_resources.declare_namespace({packageName!r})`.\n"
+        "Implementing implicit namespace packages (as specified in PEP 420) "
+        "is preferred to `pkg_resources.declare_namespace`. "
+        "See https://setuptools.pypa.io/en/latest/references/"
+        "keywords.html#keyword-namespace-packages"
+    )
+    warnings.warn(msg, DeprecationWarning, stacklevel=2)
+
     _imp.acquire_lock()
     try:
         if packageName in _namespace_packages:
             return
 
-        path = sys.path
+        path: MutableSequence[str] = sys.path
         parent, _, _ = packageName.rpartition('.')
 
         if parent:
@@ -2270,8 +2530,8 @@ def declare_namespace(packageName):
                 __import__(parent)
             try:
                 path = sys.modules[parent].__path__
-            except AttributeError:
-                raise TypeError("Not a package:", parent)
+            except AttributeError as e:
+                raise TypeError("Not a package:", parent) from e
 
         # Track what packages are namespaces, so when new path items are added,
         # they can be updated
@@ -2287,7 +2547,7 @@ def declare_namespace(packageName):
         _imp.release_lock()
 
 
-def fixup_namespace_packages(path_item, parent=None):
+def fixup_namespace_packages(path_item: str, parent: str | None = None):
     """Ensure that previously-declared namespace packages include path_item"""
     _imp.acquire_lock()
     try:
@@ -2299,7 +2559,12 @@ def fixup_namespace_packages(path_item, parent=None):
         _imp.release_lock()
 
 
-def file_ns_handler(importer, path_item, packageName, module):
+def file_ns_handler(
+    importer: object,
+    path_item: StrPath,
+    packageName: str,
+    module: types.ModuleType,
+):
     """Compute an ns-package subpath for a filesystem or zipfile importer"""
 
     subpath = os.path.join(path_item, packageName.split('.')[-1])
@@ -2312,26 +2577,35 @@ def file_ns_handler(importer, path_item, packageName, module):
         return subpath
 
 
-register_namespace_handler(pkgutil.ImpImporter, file_ns_handler)
+if hasattr(pkgutil, 'ImpImporter'):
+    register_namespace_handler(pkgutil.ImpImporter, file_ns_handler)
+
 register_namespace_handler(zipimport.zipimporter, file_ns_handler)
-
-if hasattr(importlib_machinery, 'FileFinder'):
-    register_namespace_handler(importlib_machinery.FileFinder, file_ns_handler)
+register_namespace_handler(importlib.machinery.FileFinder, file_ns_handler)
 
 
-def null_ns_handler(importer, path_item, packageName, module):
+def null_ns_handler(
+    importer: object,
+    path_item: str | None,
+    packageName: str | None,
+    module: _ModuleLike | None,
+):
     return None
 
 
 register_namespace_handler(object, null_ns_handler)
 
 
-def normalize_path(filename):
+@overload
+def normalize_path(filename: StrPath) -> str: ...
+@overload
+def normalize_path(filename: BytesPath) -> bytes: ...
+def normalize_path(filename: StrOrBytesPath):
     """Normalize a file/dir name for comparison purposes"""
     return os.path.normcase(os.path.realpath(os.path.normpath(_cygwin_patch(filename))))
 
 
-def _cygwin_patch(filename):  # pragma: nocover
+def _cygwin_patch(filename: StrOrBytesPath):  # pragma: nocover
     """
     Contrary to POSIX 2008, on Cygwin, getcwd (3) contains
     symlink components. Using
@@ -2342,28 +2616,42 @@ def _cygwin_patch(filename):  # pragma: nocover
     return os.path.abspath(filename) if sys.platform == 'cygwin' else filename
 
 
-def _normalize_cached(filename, _cache={}):
-    try:
-        return _cache[filename]
-    except KeyError:
-        _cache[filename] = result = normalize_path(filename)
-        return result
+if TYPE_CHECKING:
+    # https://github.com/python/mypy/issues/16261
+    # https://github.com/python/typeshed/issues/6347
+    @overload
+    def _normalize_cached(filename: StrPath) -> str: ...
+    @overload
+    def _normalize_cached(filename: BytesPath) -> bytes: ...
+    def _normalize_cached(filename: StrOrBytesPath) -> str | bytes: ...
+else:
+
+    @functools.lru_cache(maxsize=None)
+    def _normalize_cached(filename):
+        return normalize_path(filename)
 
 
 def _is_egg_path(path):
     """
     Determine if given path appears to be an egg.
     """
-    return path.lower().endswith('.egg')
+    return _is_zip_egg(path) or _is_unpacked_egg(path)
+
+
+def _is_zip_egg(path):
+    return (
+        path.lower().endswith('.egg')
+        and os.path.isfile(path)
+        and zipfile.is_zipfile(path)
+    )
 
 
 def _is_unpacked_egg(path):
     """
     Determine if given path appears to be an unpacked egg.
     """
-    return (
-        _is_egg_path(path) and
-        os.path.isfile(os.path.join(path, 'EGG-INFO', 'PKG-INFO'))
+    return path.lower().endswith('.egg') and os.path.isfile(
+        os.path.join(path, 'EGG-INFO', 'PKG-INFO')
     )
 
 
@@ -2375,20 +2663,6 @@ def _set_parent_ns(packageName):
         setattr(sys.modules[parent], name, sys.modules[packageName])
 
 
-def yield_lines(strs):
-    """Yield non-empty/non-comment lines of a string or sequence"""
-    if isinstance(strs, six.string_types):
-        for s in strs.splitlines():
-            s = s.strip()
-            # skip blank lines/comments
-            if s and not s.startswith('#'):
-                yield s
-    else:
-        for ss in strs:
-            for s in yield_lines(ss):
-                yield s
-
-
 MODULE = re.compile(r"\w+(\.\w+)*$").match
 EGG_NAME = re.compile(
     r"""
@@ -2407,7 +2681,14 @@ EGG_NAME = re.compile(
 class EntryPoint:
     """Object representing an advertised importable object"""
 
-    def __init__(self, name, module_name, attrs=(), extras=(), dist=None):
+    def __init__(
+        self,
+        name: str,
+        module_name: str,
+        attrs: Iterable[str] = (),
+        extras: Iterable[str] = (),
+        dist: Distribution | None = None,
+    ):
         if not MODULE(module_name):
             raise ValueError("Invalid module name", module_name)
         self.name = name
@@ -2427,7 +2708,26 @@ class EntryPoint:
     def __repr__(self):
         return "EntryPoint.parse(%r)" % str(self)
 
-    def load(self, require=True, *args, **kwargs):
+    @overload
+    def load(
+        self,
+        require: Literal[True] = True,
+        env: Environment | None = None,
+        installer: _InstallerType | None = None,
+    ) -> _ResolvedEntryPoint: ...
+    @overload
+    def load(
+        self,
+        require: Literal[False],
+        *args: Any,
+        **kwargs: Any,
+    ) -> _ResolvedEntryPoint: ...
+    def load(
+        self,
+        require: bool = True,
+        *args: Environment | _InstallerType | None,
+        **kwargs: Environment | _InstallerType | None,
+    ) -> _ResolvedEntryPoint:
         """
         Require packages for this EntryPoint, then resolve it.
         """
@@ -2439,10 +2739,12 @@ class EntryPoint:
                 stacklevel=2,
             )
         if require:
-            self.require(*args, **kwargs)
+            # We could pass `env` and `installer` directly,
+            # but keeping `*args` and `**kwargs` for backwards compatibility
+            self.require(*args, **kwargs)  # type: ignore
         return self.resolve()
 
-    def resolve(self):
+    def resolve(self) -> _ResolvedEntryPoint:
         """
         Resolve the entry point from its module and attrs.
         """
@@ -2450,11 +2752,16 @@ class EntryPoint:
         try:
             return functools.reduce(getattr, self.attrs, module)
         except AttributeError as exc:
-            raise ImportError(str(exc))
+            raise ImportError(str(exc)) from exc
 
-    def require(self, env=None, installer=None):
-        if self.extras and not self.dist:
-            raise UnknownExtra("Can't require() without a distribution", self)
+    def require(
+        self,
+        env: Environment | None = None,
+        installer: _InstallerType | None = None,
+    ):
+        if not self.dist:
+            error_cls = UnknownExtra if self.extras else AttributeError
+            raise error_cls("Can't require() without a distribution", self)
 
         # Get the requirements for this entry point with all its extras and
         # then resolve them. We have to pass `extras` along when resolving so
@@ -2475,7 +2782,7 @@ class EntryPoint:
     )
 
     @classmethod
-    def parse(cls, src, dist=None):
+    def parse(cls, src: str, dist: Distribution | None = None):
         """Parse a single entry point from string `src`
 
         Entry point syntax follows the form::
@@ -2500,15 +2807,20 @@ class EntryPoint:
             return ()
         req = Requirement.parse('x' + extras_spec)
         if req.specs:
-            raise ValueError()
+            raise ValueError
         return req.extras
 
     @classmethod
-    def parse_group(cls, group, lines, dist=None):
+    def parse_group(
+        cls,
+        group: str,
+        lines: _NestedStr,
+        dist: Distribution | None = None,
+    ):
         """Parse an entry point group"""
         if not MODULE(group):
             raise ValueError("Invalid group name", group)
-        this = {}
+        this: dict[str, Self] = {}
         for line in yield_lines(lines):
             ep = cls.parse(line, dist)
             if ep.name in this:
@@ -2517,14 +2829,19 @@ class EntryPoint:
         return this
 
     @classmethod
-    def parse_map(cls, data, dist=None):
+    def parse_map(
+        cls,
+        data: str | Iterable[str] | dict[str, str | Iterable[str]],
+        dist: Distribution | None = None,
+    ):
         """Parse a map of entry point groups"""
+        _data: Iterable[tuple[str | None, str | Iterable[str]]]
         if isinstance(data, dict):
-            data = data.items()
+            _data = data.items()
         else:
-            data = split_sections(data)
-        maps = {}
-        for group, lines in data:
+            _data = split_sections(data)
+        maps: dict[str, dict[str, Self]] = {}
+        for group, lines in _data:
             if group is None:
                 if not lines:
                     continue
@@ -2536,22 +2853,15 @@ class EntryPoint:
         return maps
 
 
-def _remove_md5_fragment(location):
-    if not location:
-        return ''
-    parsed = urllib.parse.urlparse(location)
-    if parsed[-1].startswith('md5='):
-        return urllib.parse.urlunparse(parsed[:-1] + ('',))
-    return location
-
-
 def _version_from_file(lines):
     """
     Given an iterable of lines from a Metadata file, return
     the value of the Version field, if present, or None otherwise.
     """
+
     def is_version_line(line):
         return line.lower().startswith('version:')
+
     version_lines = filter(is_version_line, lines)
     line = next(iter(version_lines), '')
     _, _, value = line.partition(':')
@@ -2560,12 +2870,19 @@ def _version_from_file(lines):
 
 class Distribution:
     """Wrap an actual or potential sys.path entry w/metadata"""
+
     PKG_INFO = 'PKG-INFO'
 
     def __init__(
-            self, location=None, metadata=None, project_name=None,
-            version=None, py_version=PY_MAJOR, platform=None,
-            precedence=EGG_DIST):
+        self,
+        location: str | None = None,
+        metadata: _MetadataType = None,
+        project_name: str | None = None,
+        version: str | None = None,
+        py_version: str | None = PY_MAJOR,
+        platform: str | None = None,
+        precedence: int = EGG_DIST,
+    ):
         self.project_name = safe_name(project_name or 'Unknown')
         if version is not None:
             self._version = safe_version(version)
@@ -2576,7 +2893,13 @@ class Distribution:
         self._provider = metadata or empty_provider
 
     @classmethod
-    def from_location(cls, location, basename, metadata=None, **kw):
+    def from_location(
+        cls,
+        location: str,
+        basename: StrPath,
+        metadata: _MetadataType = None,
+        **kw: int,  # We could set `precedence` explicitly, but keeping this as `**kw` for full backwards and subclassing compatibility
+    ) -> Distribution:
         project_name, version, py_version, platform = [None] * 4
         basename, ext = os.path.splitext(basename)
         if ext.lower() in _distributionImpl:
@@ -2588,8 +2911,13 @@ class Distribution:
                     'name', 'ver', 'pyver', 'plat'
                 )
         return cls(
-            location, metadata, project_name=project_name, version=version,
-            py_version=py_version, platform=platform, **kw
+            location,
+            metadata,
+            project_name=project_name,
+            version=version,
+            py_version=py_version,
+            platform=platform,
+            **kw,
         )._reload_version()
 
     def _reload_version(self):
@@ -2598,10 +2926,10 @@ class Distribution:
     @property
     def hashcmp(self):
         return (
-            self.parsed_version,
+            self._forgiving_parsed_version,
             self.precedence,
             self.key,
-            _remove_md5_fragment(self.location),
+            self.location,
             self.py_version or '',
             self.platform or '',
         )
@@ -2609,25 +2937,25 @@ class Distribution:
     def __hash__(self):
         return hash(self.hashcmp)
 
-    def __lt__(self, other):
+    def __lt__(self, other: Distribution):
         return self.hashcmp < other.hashcmp
 
-    def __le__(self, other):
+    def __le__(self, other: Distribution):
         return self.hashcmp <= other.hashcmp
 
-    def __gt__(self, other):
+    def __gt__(self, other: Distribution):
         return self.hashcmp > other.hashcmp
 
-    def __ge__(self, other):
+    def __ge__(self, other: Distribution):
         return self.hashcmp >= other.hashcmp
 
-    def __eq__(self, other):
+    def __eq__(self, other: object):
         if not isinstance(other, self.__class__):
             # It's not a Distribution, so they are not equal
             return False
         return self.hashcmp == other.hashcmp
 
-    def __ne__(self, other):
+    def __ne__(self, other: object):
         return not self == other
 
     # These properties have to be lazy so that we don't have to load any
@@ -2645,48 +2973,55 @@ class Distribution:
     @property
     def parsed_version(self):
         if not hasattr(self, "_parsed_version"):
-            self._parsed_version = parse_version(self.version)
+            try:
+                self._parsed_version = parse_version(self.version)
+            except _packaging_version.InvalidVersion as ex:
+                info = f"(package: {self.project_name})"
+                if hasattr(ex, "add_note"):
+                    ex.add_note(info)  # PEP 678
+                    raise
+                raise _packaging_version.InvalidVersion(f"{str(ex)} {info}") from None
 
         return self._parsed_version
 
-    def _warn_legacy_version(self):
-        LV = packaging.version.LegacyVersion
-        is_legacy = isinstance(self._parsed_version, LV)
-        if not is_legacy:
-            return
+    @property
+    def _forgiving_parsed_version(self):
+        try:
+            return self.parsed_version
+        except _packaging_version.InvalidVersion as ex:
+            self._parsed_version = parse_version(_forgiving_version(self.version))
 
-        # While an empty version is technically a legacy version and
-        # is not a valid PEP 440 version, it's also unlikely to
-        # actually come from someone and instead it is more likely that
-        # it comes from setuptools attempting to parse a filename and
-        # including it in the list. So for that we'll gate this warning
-        # on if the version is anything at all or not.
-        if not self.version:
-            return
+            notes = "\n".join(getattr(ex, "__notes__", []))  # PEP 678
+            msg = f"""!!\n\n
+            *************************************************************************
+            {str(ex)}\n{notes}
 
-        tmpl = textwrap.dedent("""
-            '{project_name} ({version})' is being parsed as a legacy,
-            non PEP 440,
-            version. You may find odd behavior and sort order.
-            In particular it will be sorted as less than 0.0. It
-            is recommended to migrate to PEP 440 compatible
-            versions.
-            """).strip().replace('\n', ' ')
+            This is a long overdue deprecation.
+            For the time being, `pkg_resources` will use `{self._parsed_version}`
+            as a replacement to avoid breaking existing environments,
+            but no future compatibility is guaranteed.
 
-        warnings.warn(tmpl.format(**vars(self)), PEP440Warning)
+            If you maintain package {self.project_name} you should implement
+            the relevant changes to adequate the project to PEP 440 immediately.
+            *************************************************************************
+            \n\n!!
+            """
+            warnings.warn(msg, DeprecationWarning)
+
+            return self._parsed_version
 
     @property
     def version(self):
         try:
             return self._version
-        except AttributeError:
+        except AttributeError as e:
             version = self._get_version()
             if version is None:
                 path = self._get_metadata_path_for_display(self.PKG_INFO)
-                msg = (
-                    "Missing 'Version:' header and/or {} file at path: {}"
-                ).format(self.PKG_INFO, path)
-                raise ValueError(msg, self)
+                msg = ("Missing 'Version:' header and/or {} file at path: {}").format(
+                    self.PKG_INFO, path
+                )
+                raise ValueError(msg, self) from e
 
             return version
 
@@ -2703,19 +3038,18 @@ class Distribution:
         return self.__dep_map
 
     @staticmethod
-    def _filter_extras(dm):
+    def _filter_extras(dm: dict[str | None, list[Requirement]]):
         """
         Given a mapping of extras to dependencies, strip off
         environment markers and filter out any dependencies
         not matching the markers.
         """
         for extra in list(filter(None, dm)):
-            new_extra = extra
+            new_extra: str | None = extra
             reqs = dm.pop(extra)
             new_extra, _, marker = extra.partition(':')
             fails_marker = marker and (
-                invalid_marker(marker)
-                or not evaluate_marker(marker)
+                invalid_marker(marker) or not evaluate_marker(marker)
             )
             if fails_marker:
                 reqs = []
@@ -2731,18 +3065,18 @@ class Distribution:
                 dm.setdefault(extra, []).extend(parse_requirements(reqs))
         return dm
 
-    def requires(self, extras=()):
+    def requires(self, extras: Iterable[str] = ()):
         """List of Requirements needed for this distro if `extras` are used"""
         dm = self._dep_map
-        deps = []
+        deps: list[Requirement] = []
         deps.extend(dm.get(None, ()))
         for ext in extras:
             try:
                 deps.extend(dm[safe_extra(ext)])
-            except KeyError:
+            except KeyError as e:
                 raise UnknownExtra(
                     "%s has no such extra feature %r" % (self, ext)
-                )
+                ) from e
         return deps
 
     def _get_metadata_path_for_display(self, name):
@@ -2764,21 +3098,18 @@ class Distribution:
 
     def _get_metadata(self, name):
         if self.has_metadata(name):
-            for line in self.get_metadata_lines(name):
-                yield line
+            yield from self.get_metadata_lines(name)
 
     def _get_version(self):
         lines = self._get_metadata(self.PKG_INFO)
-        version = _version_from_file(lines)
+        return _version_from_file(lines)
 
-        return version
-
-    def activate(self, path=None, replace=False):
+    def activate(self, path: list[str] | None = None, replace: bool = False):
         """Ensure distribution is importable on `path` (default=sys.path)"""
         if path is None:
             path = sys.path
         self.insert_on(path, replace=replace)
-        if path is sys.path:
+        if path is sys.path and self.location is not None:
             fixup_namespace_packages(self.location)
             for pkg in self._get_metadata('namespace_packages.txt'):
                 if pkg in sys.modules:
@@ -2787,8 +3118,9 @@ class Distribution:
     def egg_name(self):
         """Return what this distribution's standard .egg filename should be"""
         filename = "%s-%s-py%s" % (
-            to_filename(self.project_name), to_filename(self.version),
-            self.py_version or PY_MAJOR
+            to_filename(self.project_name),
+            to_filename(self.version),
+            self.py_version or PY_MAJOR,
         )
 
         if self.platform:
@@ -2817,57 +3149,62 @@ class Distribution:
 
     def __dir__(self):
         return list(
-            set(super(Distribution, self).__dir__())
-            | set(
-                attr for attr in self._provider.__dir__()
-                if not attr.startswith('_')
-            )
+            set(super().__dir__())
+            | set(attr for attr in self._provider.__dir__() if not attr.startswith('_'))
         )
 
-    if not hasattr(object, '__dir__'):
-        # python 2.7 not supported
-        del __dir__
-
     @classmethod
-    def from_filename(cls, filename, metadata=None, **kw):
+    def from_filename(
+        cls,
+        filename: StrPath,
+        metadata: _MetadataType = None,
+        **kw: int,  # We could set `precedence` explicitly, but keeping this as `**kw` for full backwards and subclassing compatibility
+    ):
         return cls.from_location(
-            _normalize_cached(filename), os.path.basename(filename), metadata,
-            **kw
+            _normalize_cached(filename), os.path.basename(filename), metadata, **kw
         )
 
     def as_requirement(self):
         """Return a ``Requirement`` that matches this distribution exactly"""
-        if isinstance(self.parsed_version, packaging.version.Version):
+        if isinstance(self.parsed_version, _packaging_version.Version):
             spec = "%s==%s" % (self.project_name, self.parsed_version)
         else:
             spec = "%s===%s" % (self.project_name, self.parsed_version)
 
         return Requirement.parse(spec)
 
-    def load_entry_point(self, group, name):
+    def load_entry_point(self, group: str, name: str) -> _ResolvedEntryPoint:
         """Return the `name` entry point of `group` or raise ImportError"""
         ep = self.get_entry_info(group, name)
         if ep is None:
             raise ImportError("Entry point %r not found" % ((group, name),))
         return ep.load()
 
-    def get_entry_map(self, group=None):
+    @overload
+    def get_entry_map(self, group: None = None) -> dict[str, dict[str, EntryPoint]]: ...
+    @overload
+    def get_entry_map(self, group: str) -> dict[str, EntryPoint]: ...
+    def get_entry_map(self, group: str | None = None):
         """Return the entry point map for `group`, or the full entry map"""
-        try:
-            ep_map = self._ep_map
-        except AttributeError:
-            ep_map = self._ep_map = EntryPoint.parse_map(
+        if not hasattr(self, "_ep_map"):
+            self._ep_map = EntryPoint.parse_map(
                 self._get_metadata('entry_points.txt'), self
             )
         if group is not None:
-            return ep_map.get(group, {})
-        return ep_map
+            return self._ep_map.get(group, {})
+        return self._ep_map
 
-    def get_entry_info(self, group, name):
+    def get_entry_info(self, group: str, name: str):
         """Return the EntryPoint object for `group`+`name`, or ``None``"""
         return self.get_entry_map(group).get(name)
 
-    def insert_on(self, path, loc=None, replace=False):
+    # FIXME: 'Distribution.insert_on' is too complex (13)
+    def insert_on(  # noqa: C901
+        self,
+        path: list[str],
+        loc=None,
+        replace: bool = False,
+    ):
         """Ensure self.location is on path
 
         If replace=False (default):
@@ -2943,14 +3280,18 @@ class Distribution:
         nsp = dict.fromkeys(self._get_metadata('namespace_packages.txt'))
         loc = normalize_path(self.location)
         for modname in self._get_metadata('top_level.txt'):
-            if (modname not in sys.modules or modname in nsp
-                    or modname in _namespace_packages):
+            if (
+                modname not in sys.modules
+                or modname in nsp
+                or modname in _namespace_packages
+            ):
                 continue
             if modname in ('pkg_resources', 'setuptools', 'site'):
                 continue
             fn = getattr(sys.modules[modname], '__file__', None)
-            if fn and (normalize_path(fn).startswith(loc) or
-                       fn.startswith(self.location)):
+            if fn and (
+                normalize_path(fn).startswith(loc) or fn.startswith(self.location)
+            ):
                 continue
             issue_warning(
                 "Module %s was already imported from %s, but %s is being added"
@@ -2963,15 +3304,19 @@ class Distribution:
         except ValueError:
             issue_warning("Unbuilt egg for " + repr(self))
             return False
+        except SystemError:
+            # TODO: remove this except clause when python/cpython#103632 is fixed.
+            return False
         return True
 
-    def clone(self, **kw):
+    def clone(self, **kw: str | int | IResourceProvider | None):
         """Copy this distribution, substituting in any changed keyword args"""
         names = 'project_name version py_version platform location precedence'
         for attr in names.split():
             kw.setdefault(attr, getattr(self, attr, None))
         kw.setdefault('metadata', self._provider)
-        return self.__class__(**kw)
+        # Unsafely unpacking. But keeping **kw for backwards and subclassing compatibility
+        return self.__class__(**kw)  # type:ignore[arg-type]
 
     @property
     def extras(self):
@@ -3002,6 +3347,7 @@ class DistInfoDistribution(Distribution):
     Wrap an actual or potential sys.path entry
     w/metadata, .dist-info style.
     """
+
     PKG_INFO = 'METADATA'
     EQEQ = re.compile(r"([\(,])\s*(\d.*?)\s*([,\)])")
 
@@ -3023,11 +3369,11 @@ class DistInfoDistribution(Distribution):
             self.__dep_map = self._compute_dependencies()
             return self.__dep_map
 
-    def _compute_dependencies(self):
+    def _compute_dependencies(self) -> dict[str | None, list[Requirement]]:
         """Recompute this distribution's dependencies."""
-        dm = self.__dep_map = {None: []}
+        self.__dep_map: dict[str | None, list[Requirement]] = {None: []}
 
-        reqs = []
+        reqs: list[Requirement] = []
         # Including any condition expressions
         for req in self._parsed_pkg_info.get_all('Requires-Dist') or []:
             reqs.extend(parse_requirements(req))
@@ -3037,14 +3383,16 @@ class DistInfoDistribution(Distribution):
                 if not req.marker or req.marker.evaluate({'extra': extra}):
                     yield req
 
-        common = frozenset(reqs_for_extra(None))
-        dm[None].extend(common)
+        common = types.MappingProxyType(dict.fromkeys(reqs_for_extra(None)))
+        self.__dep_map[None].extend(common)
 
         for extra in self._parsed_pkg_info.get_all('Provides-Extra') or []:
             s_extra = safe_extra(extra.strip())
-            dm[s_extra] = list(frozenset(reqs_for_extra(extra)) - common)
+            self.__dep_map[s_extra] = [
+                r for r in reqs_for_extra(extra) if r not in common
+            ]
 
-        return dm
+        return self.__dep_map
 
 
 _distributionImpl = {
@@ -3067,46 +3415,29 @@ def issue_warning(*args, **kw):
     warnings.warn(stacklevel=level + 1, *args, **kw)
 
 
-class RequirementParseError(ValueError):
-    def __str__(self):
-        return ' '.join(self.args)
-
-
-def parse_requirements(strs):
-    """Yield ``Requirement`` objects for each specification in `strs`
+def parse_requirements(strs: _NestedStr):
+    """
+    Yield ``Requirement`` objects for each specification in `strs`.
 
     `strs` must be a string, or a (possibly-nested) iterable thereof.
     """
-    # create a steppable iterator, so we can handle \-continuations
-    lines = iter(yield_lines(strs))
-
-    for line in lines:
-        # Drop comments -- a hash without a space may be in a URL.
-        if ' #' in line:
-            line = line[:line.find(' #')]
-        # If there is a line continuation, drop it, and append the next line.
-        if line.endswith('\\'):
-            line = line[:-2].strip()
-            try:
-                line += next(lines)
-            except StopIteration:
-                return
-        yield Requirement(line)
+    return map(Requirement, join_continuation(map(drop_comment, yield_lines(strs))))
 
 
-class Requirement(packaging.requirements.Requirement):
-    def __init__(self, requirement_string):
+class RequirementParseError(_packaging_requirements.InvalidRequirement):
+    "Compatibility wrapper for InvalidRequirement"
+
+
+class Requirement(_packaging_requirements.Requirement):
+    def __init__(self, requirement_string: str):
         """DO NOT CALL THIS UNDOCUMENTED METHOD; use Requirement.parse()!"""
-        try:
-            super(Requirement, self).__init__(requirement_string)
-        except packaging.requirements.InvalidRequirement as e:
-            raise RequirementParseError(str(e))
+        super().__init__(requirement_string)
         self.unsafe_name = self.name
         project_name = safe_name(self.name)
         self.project_name, self.key = project_name, project_name.lower()
-        self.specs = [
-            (spec.operator, spec.version) for spec in self.specifier]
-        self.extras = tuple(map(safe_extra, self.extras))
+        self.specs = [(spec.operator, spec.version) for spec in self.specifier]
+        # packaging.requirements.Requirement uses a set for its extras. We use a variable-length tuple
+        self.extras: tuple[str] = tuple(map(safe_extra, self.extras))
         self.hashCmp = (
             self.key,
             self.url,
@@ -3116,16 +3447,13 @@ class Requirement(packaging.requirements.Requirement):
         )
         self.__hash = hash(self.hashCmp)
 
-    def __eq__(self, other):
-        return (
-            isinstance(other, Requirement) and
-            self.hashCmp == other.hashCmp
-        )
+    def __eq__(self, other: object):
+        return isinstance(other, Requirement) and self.hashCmp == other.hashCmp
 
     def __ne__(self, other):
         return not self == other
 
-    def __contains__(self, item):
+    def __contains__(self, item: Distribution | str | tuple[str, ...]) -> bool:
         if isinstance(item, Distribution):
             if item.key != self.key:
                 return False
@@ -3144,8 +3472,8 @@ class Requirement(packaging.requirements.Requirement):
         return "Requirement.parse(%r)" % str(self)
 
     @staticmethod
-    def parse(s):
-        req, = parse_requirements(s)
+    def parse(s: str | Iterable[str]):
+        (req,) = parse_requirements(s)
         return req
 
 
@@ -3159,24 +3487,27 @@ def _always_object(classes):
     return classes
 
 
-def _find_adapter(registry, ob):
+def _find_adapter(registry: Mapping[type, _AdapterT], ob: object) -> _AdapterT:
     """Return an adapter factory for `ob` from `registry`"""
     types = _always_object(inspect.getmro(getattr(ob, '__class__', type(ob))))
     for t in types:
         if t in registry:
             return registry[t]
+    # _find_adapter would previously return None, and immediately be called.
+    # So we're raising a TypeError to keep backward compatibility if anyone depended on that behaviour.
+    raise TypeError(f"Could not find adapter for {registry} and {ob}")
 
 
-def ensure_directory(path):
+def ensure_directory(path: StrOrBytesPath):
     """Ensure that the parent directory of `path` exists"""
     dirname = os.path.dirname(path)
-    py31compat.makedirs(dirname, exist_ok=True)
+    os.makedirs(dirname, exist_ok=True)
 
 
 def _bypass_ensure_directory(path):
     """Sandbox-bypassing version of ensure_directory()"""
     if not WRITE_SUPPORT:
-        raise IOError('"os.mkdir" not supported on this platform.')
+        raise OSError('"os.mkdir" not supported on this platform.')
     dirname, filename = split(path)
     if dirname and filename and not isdir(dirname):
         _bypass_ensure_directory(dirname)
@@ -3186,7 +3517,7 @@ def _bypass_ensure_directory(path):
             pass
 
 
-def split_sections(s):
+def split_sections(s: _NestedStr) -> Iterator[tuple[str | None, list[str]]]:
     """Split a string or iterable thereof into (section, content) pairs
 
     Each ``section`` is a stripped version of the section header ("[section]")
@@ -3230,6 +3561,47 @@ def _mkstemp(*args, **kw):
 warnings.filterwarnings("ignore", category=PEP440Warning, append=True)
 
 
+class PkgResourcesDeprecationWarning(Warning):
+    """
+    Base class for warning about deprecations in ``pkg_resources``
+
+    This class is not derived from ``DeprecationWarning``, and as such is
+    visible by default.
+    """
+
+
+# Ported from ``setuptools`` to avoid introducing an import inter-dependency:
+_LOCALE_ENCODING = "locale" if sys.version_info >= (3, 10) else None
+
+
+def _read_utf8_with_fallback(file: str, fallback_encoding=_LOCALE_ENCODING) -> str:
+    """See setuptools.unicode_utils._read_utf8_with_fallback"""
+    try:
+        with open(file, "r", encoding="utf-8") as f:
+            return f.read()
+    except UnicodeDecodeError:  # pragma: no cover
+        msg = f"""\
+        ********************************************************************************
+        `encoding="utf-8"` fails with {file!r}, trying `encoding={fallback_encoding!r}`.
+
+        This fallback behaviour is considered **deprecated** and future versions of
+        `setuptools/pkg_resources` may not implement it.
+
+        Please encode {file!r} with "utf-8" to ensure future builds will succeed.
+
+        If this file was produced by `setuptools` itself, cleaning up the cached files
+        and re-building/re-installing the package with a newer version of `setuptools`
+        (e.g. by updating `build-system.requires` in its `pyproject.toml`)
+        might solve the problem.
+        ********************************************************************************
+        """
+        # TODO: Add a deadline?
+        #       See comment in setuptools.unicode_utils._Utf8EncodingNeeded
+        warnings.warn(msg, PkgResourcesDeprecationWarning, stacklevel=2)
+        with open(file, "r", encoding=fallback_encoding) as f:
+            return f.read()
+
+
 # from jaraco.functools 1.3
 def _call_aside(f, *args, **kwargs):
     f(*args, **kwargs)
@@ -3261,8 +3633,7 @@ def _initialize_master_working_set():
     Invocation by other packages is unsupported and done
     at their own risk.
     """
-    working_set = WorkingSet._build_master()
-    _declare_state('object', working_set=working_set)
+    working_set = _declare_state('object', 'working_set', WorkingSet._build_master())
 
     require = working_set.require
     iter_entry_points = working_set.iter_entry_points
@@ -3274,10 +3645,7 @@ def _initialize_master_working_set():
     # ensure that all distributions added to the working set in the future
     # (e.g. by calling ``require()``) will get activated as well,
     # with higher priority (replace=True).
-    tuple(
-        dist.activate(replace=False)
-        for dist in working_set
-    )
+    tuple(dist.activate(replace=False) for dist in working_set)
     add_activation_listener(
         lambda dist: dist.activate(replace=True),
         existing=False,
@@ -3287,10 +3655,22 @@ def _initialize_master_working_set():
     list(map(working_set.add_entry, sys.path))
     globals().update(locals())
 
-class PkgResourcesDeprecationWarning(Warning):
-    """
-    Base class for warning about deprecations in ``pkg_resources``
 
-    This class is not derived from ``DeprecationWarning``, and as such is
-    visible by default.
-    """
+if TYPE_CHECKING:
+    # All of these are set by the @_call_aside methods above
+    __resource_manager = ResourceManager()  # Won't exist at runtime
+    resource_exists = __resource_manager.resource_exists
+    resource_isdir = __resource_manager.resource_isdir
+    resource_filename = __resource_manager.resource_filename
+    resource_stream = __resource_manager.resource_stream
+    resource_string = __resource_manager.resource_string
+    resource_listdir = __resource_manager.resource_listdir
+    set_extraction_path = __resource_manager.set_extraction_path
+    cleanup_resources = __resource_manager.cleanup_resources
+
+    working_set = WorkingSet()
+    require = working_set.require
+    iter_entry_points = working_set.iter_entry_points
+    add_activation_listener = working_set.subscribe
+    run_script = working_set.run_script
+    run_main = run_script
diff --git a/gestao_raul/Lib/site-packages/pip/_vendor/pkg_resources/__pycache__/__init__.cpython-310.pyc b/gestao_raul/Lib/site-packages/pip/_vendor/pkg_resources/__pycache__/__init__.cpython-310.pyc
index 9c6c08b04ffc532c630116d74341e18cbaf02fc2..b71aeee1af9dc3080595791cf3e493515b9a00d1 100644
GIT binary patch
literal 113934
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 diff --git a/gestao_raul/Lib/site-packages/pip/_vendor/pygments/__pycache__/style.cpython-310.pyc b/gestao_raul/Lib/site-packages/pip/_vendor/pygments/__pycache__/style.cpython-310.pyc index bcbb20b6f376c506b8453c62da6bd64eb9521416..3e91d17d8cce6808a46624f9347ff69351ea4bc8 100644 GIT binary patch delta 205 zcmaE?+@Qjj&&$ij00fKtR;P80i!M}t zKQCP&IX@@ANFgo1C^xZ0Ve%$+6Zt4-tC-N@)S}{;^3xpoF`7({Y@5md)UYeJen46m7=BLR! s`8@whz9Mg+qi(S$=42)orxs7H5U`XG1B!4kurQ-Q78a(>M+M{<0njZt5C8xG delta 175 zcmZord92Kr&&$ij00h-PLemQ+Hu6nmWHj2mfKiu~an|H>Y}1*<7$#@3n~I5+7v<-r zD*x1Sei4Ll_Q6dXLAw912#sT$-(^EY$+VU44Ryid-xq$-261TC*R^R diff --git a/gestao_raul/Lib/site-packages/pip/_vendor/pygments/__pycache__/token.cpython-310.pyc b/gestao_raul/Lib/site-packages/pip/_vendor/pygments/__pycache__/token.cpython-310.pyc index bad1161ea4d3abc6a4e2a0c1ece0d943ea18b7d7..818c4884b6841140dbb178c41c00e616d475fdb8 100644 GIT binary patch delta 165 zcmdn5a!ExepO=@50SFfPtxgY;U|@I*;vfS_AjbiSiy4?V>U?4nN)^oVN(s&6S;`pY zoe~zzpcy_{i@Ao;Wb<<707m&JXRDad;?$zznDW$|lKdE#{N&Qy)Vz}7n4lmhSLe+# ztm>RRQOxP7#kZK!OZ+r_Hhb~KGI2$5x#kvR1eX-$PhKkEz!U?72$>d(j80D1`8qA;> zHrar=hS6yATIK*o#)QfLSR}dAQ;SOy^W%#WOLI2Mu&Q&i-(pHH@zeC)?9Ug=GzQ)<0oLum96(Q3v!rh z5jKMPmcnwos!U+@=&zUAhkf=q8+MbDQreY-4;#h478Ul&KV}Sri`PV?QylVH8t93h z?k3ZxMYpF(IDhzp1^|W+Un`v}@R;wH{2fzM*Kgf8{8;)7u*ct3*8002(oJPktt)j^ zH1c*`nGp}NnyV|~9<{Ev$gaZgR4*yNAjXT;l`}r7{;j zLQ=vwzrXe@l9A%5fVM~YVqw`@w}O((N=_?bnc>1*WvOh9@b7Ey;Vgf<-XAzeHRz%~ TxCkC0Y2bry+C>L`s7HSQCK199 delta 633 zcmYjOJ8u&~5Z+lE5-u@9AtbVem9re%_!-B}<>ADH3ZzI>5r~|S;KYtCNMa{@e&bXY z5)~-g4pE#DH6U4t0zttapr8u{2t-Rk8W$Ao9tG@bzWwH#+1cIM;W7L;24B_Z(}*1R zhu6xV4t+tmahQDNPp~*k>_p9InUo1jKBZ<1FJQa}hr^&@Hvx#6ThcJa5}0z*EY*hx z)KAO|rd&VW2bOS^In1(**nm)QZkzJwEQ|SRV&*FvE@Hk1Y`#JG3ziiRVaE7?F_!Za zXBqQ-c?!#`TxX?E_(vI8_!rrKq%Opa9(}wazQQ?c(lpqjvxc)6L&Hyc&bT&D7uG4war-Mxa*d+Q~bBH}g;Plx}1J4E4h1uMv{8Zy1atGjx=a+g^(OOM!^CSEq51ymjGmdz-Z zRxq!iD7IU>$wfsA5{^b?VJug9n@5$lq%_UO8pD!&WsNTjPx}pM;%z$|7^fPH(+QY_ RQOPto4HI;n&i?X#{{xX+sJH+C diff --git a/gestao_raul/Lib/site-packages/pip/_vendor/pygments/__pycache__/util.cpython-310.pyc b/gestao_raul/Lib/site-packages/pip/_vendor/pygments/__pycache__/util.cpython-310.pyc index 2b3e30d1991a0b2e437cd2c81379258fc226bf5c..7b8d8d3e0b696f1a965946b6ca30055f73019548 100644 GIT binary patch delta 3744 zcmZuzU2Gf25#}C`lt__sELpM?NzU4aTwTnlc48+^YB%+N>>5&FyY6qSJKZhGi^w~6 z_Gnp(T&8h>xCqd{P2HqvP`htNiU5Vspy(fvhZZf`0&Rh|z@dHUO94N-FV#cbnLSdL zX;b2GcV>5X_SMdwN&n9o+qe3A_G!lMsG;-%yQRLG z-rGk*fW+G8)vwZ{nX_k)96zf5ojy2dqH-I4?@*&R)yu$Cd(80`q_Jpz7!sxU*Zlb!o=8s&=pepL4}u_flIC=_siN( zR24j0Y6u2p5HCmlA-u6L0|@qFLf0ZWb01 zH4Y+bLcsm@7MCY4Xgtb@OdH5ouJC$OMg(*iXrx}bvTT&N)f1;HB8oG#3TOo4EY7Pt zkvf$*b#DFSfe?!OaqOI14SiS4q30>oNdl{oF)eI@`68EnbIRj+CM6I~3=l--@c- z>FlMX-Rb-zdfBu0Qr6ZX_&SrEdD>=)+ilov@|-XaefoingyT);wKGBrx9EFqKoSHc zCq~-#d1y6-jnRR?-d-E=x9ue%lSTxIG4Ql2+YSRV&>oSx9Umv0n!M*@Pck(Kliza3 zh}*~c<+5#SUsFhHw~Emoa2+Y0z?elK+ibCt@~~Ds6(o`C+Ok&AF(>@t%aiJB*%!C0 z^>@Z3$7uCHznbV7YYig7bq>KMY~3O!(;{Q4;%0}8r|;X%ApdIE1i-T)o*)vYl5ZdFG@cw$IMh@E={kGFdxjP z#gvs>-cCsYI<0o+4z;=~k7X|ZRCDB^DYu@e56v>n1E-Vu+J|h^C}$$>M0~O8M?y9n z7ZV%l*e=yAtksm=?bNCP<__L`SO8>FDKJqS9yJ>^tW(LL^;9FA^}vL&8*m=~1YZi9 zNu{q~4Q!7~vX59wnC>FM2Gy@~BQtd4S=}^^(|DfU&}*7fbcFpyoR-x6EK#%{zevp| z)#LfgE#hLFp*q-z^BM>$YBJ6`jfMz3*i80pO%K2aLOPs(IZk5kzX-yGB4d^Fyj@@ zrMw)zABwC0D86Klb#Xs`kkH4AqVdW1)$G8L%o@A6yj5Kv*!~z58#s+3E^5H%8ctN5 z1I$4(>{ovuc#0iX`N2uv<#Us)ig_of%q4YEzM*CZ`KDpSl8}Wj;dIwff6k1oULV}S zUid66k*Pq~Y`}SP{TWiQQ*lPm2dZAkro&|VoHo_t9y~y*q#Fh;x#RD&)ST^|~KDEY5Yi!5N?T_x>y$iFbUSk%# zfWKB6p245kq-O+dR@KoLC%R%RB(E_H60_((>Tjbvv#;V5$g7V=|Hz(Ee|U6i>ML5Y zE;Km@JS-l*i*ZWCqaI!o-v89t*eH7)ALv`u%J!T(JNDn9`&ZKyViQwe93MSGM1~#` zSUFQbsgV?rdsB3aR)cFOa;#1N-V|O}8MwCk!T5)4zox^t&>k1?!YJd@HuUg~)QxMQ z(!`hkoF~vM2Gx(ZO|myv|GI64mA*j>e3!&GNxX>yvy$9WZbN;eCv}ED#->z_kFmGZ zHQqWv^JV}eBW7O5pTrZz1K%dC0pFvxR@~cJpL%}#@ZhtwBienz$YPnnlzzJnUfKFO zO=fYXTx-fIyg@!TOvi4VaciLzM^)dBQmYHhAKX9u9**Bf!(m#L7}SgF0%k zjT6aUm|o19Opb+;F*f`VC^d9e0$q=B_So$C!)MOKIrYJg!In;v3p8SZgiWGCLRU*o z*+bN&OF=*4^y$05*5lMd=hmM4HB=Cc%1~%LLV5sm72ij+tjBW bZNMtoyb?S2=Cb)>ej;D!eMJ3m=lK5t%uTdr delta 2785 zcmZ`)TWl0%6yASkcDkKTw=I`adSmFaz)Eenh>=T?n?45p>67wcqBbUqAw(aHn)u+0i6e<`CcJ7$fCuY2|90E5;%w&If6h7o z`Op3TA^y#tu+!YE1@Jk4|48cH$mijkjIE#gk-fl}%NNUMSd3qk*ENMu0tg-^_$_&9 zQ_6Nd(@B6?%<|vmtqWyj_2TO)2%$iTfy|#!x+|`Z-*(^xvjQh1iyaQcB){oE!OJ-L z=Kvgt$7G-_5F}6uW{;|_8i__0_Tf9DUSWbVl%!p?hc?sRUHH1&5z2wG*lgU~?j53L2+Q}sC1ZrGK2DKvSOkpAXDQp2#rxgj> z`Df}Pjr#DS%ox*3Jq~1_~ ze1bNDg#?QU>O!GYC{8&}mIARB1>6+~I@2%+8is=Y6-k;_r*&Cj6d*;aenSKWlT=qT z55KJjwb=w8;x{$pSSJh6&yydGmJ;xkiPf__X?|qRikuJD{C<3FPB$4wX;5Uw7pha1WF!`D&tSW)3w>~)7MP4G4_b4{Ik?(dR=uE<>R3lM~OEn_W zG*Bu1CnmG?vm5JY@aSC8#H4s>Q_YFTI=aP}aEjGhPi4k!!!)uPtb5^b4D(J#FC%E- z`^QQ>4!Jo}vIOE7+e`D|=%e)u{u z5@z1aPPlfKhg$a?XuvJLj#JFbBy+ZxcC45LgQRR5fv{pLtwc+=?rK{pYDp(o*!Cg6vv_B))Hxb;d8B>$GU_^@LE$&Mg>1%46ihFj02@{j zV}K{yH?Yn8z4oY4r?bUP+owznV9xZCY1=)|@3b4*0x3-G#$aShUGgle93aiX6gb5K z43ozFL|}XUpx6cj_=(BiOss=~mGc`gIaFBn>2H~#*G~KdCO{MXtv2F%0;b)Q| zR3H9Fr^@l-eE8DEuCxj97Pfcr&P~O zVVq`+_vJJ81e_r57J|An!db^T<0i5h%=fum_7?xNGs0~COXs&wkz@=jD_Os%*)8H_ zmNGrNU}oTF6cYw@sF3F0cm2KfNu=DRHiaVyCB+ytRzGC@4_ROQ?myGh)9^f!AF>$i zz<<0EX;AtK*ad)Qey{srPo0fA-c^_sG%|0yzw%Q(5%nByfe=>VBK}d&S8Odm-n+VW zTo7lWkzegy(sdWV#dV~pDt2P)?7V@>)OWpYtn%n#VhBvr9*VKTO4?A-D}p_M!z+&C zPq;OAdsACg=f<2Gu@d+A1>`=!SF}zDwdp}1+PpdlOdT@5U>il5y^btjFMvH}=aY_w zGoU{5da7u>Lb#x+a2;rH6 zf_K3Xhy$ges$)zX7K?&N8FjobWgMU^i`IvIL{fJj7}+sA>^JgVD;HKoPsK?hNpPGX zK_I5EOsl5}sMVpJAVNUb7OWxINU)t?gn)V-MhQ#;n;=af%DF= 3: # extract relevant file and position info - msg += '\n (f%s)' % info[-2].split('\n')[0].strip()[1:] + msg += '\n (f{})'.format(info[-2].split('\n')[0].strip()[1:]) print(file=sys.stderr) print('*** Error while highlighting:', file=sys.stderr) print(msg, file=sys.stderr) diff --git a/gestao_raul/Lib/site-packages/pip/_vendor/pygments/console.py b/gestao_raul/Lib/site-packages/pip/_vendor/pygments/console.py index 2ada68e..4c1a062 100644 --- a/gestao_raul/Lib/site-packages/pip/_vendor/pygments/console.py +++ b/gestao_raul/Lib/site-packages/pip/_vendor/pygments/console.py @@ -4,7 +4,7 @@ Format colored console output. - :copyright: Copyright 2006-2022 by the Pygments team, see AUTHORS. + :copyright: Copyright 2006-2024 by the Pygments team, see AUTHORS. :license: BSD, see LICENSE for details. """ @@ -27,12 +27,12 @@ light_colors = ["brightblack", "brightred", "brightgreen", "brightyellow", "brig "brightmagenta", "brightcyan", "white"] x = 30 -for d, l in zip(dark_colors, light_colors): - codes[d] = esc + "%im" % x - codes[l] = esc + "%im" % (60 + x) +for dark, light in zip(dark_colors, light_colors): + codes[dark] = esc + "%im" % x + codes[light] = esc + "%im" % (60 + x) x += 1 -del d, l, x +del dark, light, x codes["white"] = codes["bold"] diff --git a/gestao_raul/Lib/site-packages/pip/_vendor/pygments/filter.py b/gestao_raul/Lib/site-packages/pip/_vendor/pygments/filter.py index e5c9664..aa6f760 100644 --- a/gestao_raul/Lib/site-packages/pip/_vendor/pygments/filter.py +++ b/gestao_raul/Lib/site-packages/pip/_vendor/pygments/filter.py @@ -4,7 +4,7 @@ Module that implements the default filter. - :copyright: Copyright 2006-2022 by the Pygments team, see AUTHORS. + :copyright: Copyright 2006-2024 by the Pygments team, see AUTHORS. :license: BSD, see LICENSE for details. """ @@ -62,8 +62,7 @@ class FunctionFilter(Filter): def __init__(self, **options): if not hasattr(self, 'function'): - raise TypeError('%r used without bound function' % - self.__class__.__name__) + raise TypeError(f'{self.__class__.__name__!r} used without bound function') Filter.__init__(self, **options) def filter(self, lexer, stream): diff --git a/gestao_raul/Lib/site-packages/pip/_vendor/pygments/filters/__init__.py b/gestao_raul/Lib/site-packages/pip/_vendor/pygments/filters/__init__.py index c302a6c..9255ca2 100644 --- a/gestao_raul/Lib/site-packages/pip/_vendor/pygments/filters/__init__.py +++ b/gestao_raul/Lib/site-packages/pip/_vendor/pygments/filters/__init__.py @@ -5,7 +5,7 @@ Module containing filter lookup functions and default filters. - :copyright: Copyright 2006-2022 by the Pygments team, see AUTHORS. + :copyright: Copyright 2006-2024 by the Pygments team, see AUTHORS. :license: BSD, see LICENSE for details. """ @@ -39,7 +39,7 @@ def get_filter_by_name(filtername, **options): if cls: return cls(**options) else: - raise ClassNotFound('filter %r not found' % filtername) + raise ClassNotFound(f'filter {filtername!r} not found') def get_all_filters(): @@ -79,9 +79,9 @@ class CodeTagFilter(Filter): Filter.__init__(self, **options) tags = get_list_opt(options, 'codetags', ['XXX', 'TODO', 'FIXME', 'BUG', 'NOTE']) - self.tag_re = re.compile(r'\b(%s)\b' % '|'.join([ + self.tag_re = re.compile(r'\b({})\b'.format('|'.join([ re.escape(tag) for tag in tags if tag - ])) + ]))) def filter(self, lexer, stream): regex = self.tag_re diff --git a/gestao_raul/Lib/site-packages/pip/_vendor/pygments/filters/__pycache__/__init__.cpython-310.pyc b/gestao_raul/Lib/site-packages/pip/_vendor/pygments/filters/__pycache__/__init__.cpython-310.pyc index e598b01af1265b19efb0680cb1b06e140df67c97..c6b42be2e9e4adacda3f25c236e2246bc685b075 100644 GIT binary patch delta 1300 zcmY*ZU1%It6rMYOyE`*m)AVPJrc_C_Y$Gv+T4bdL&1S78w6rw|=-PDMnIx0$&Ln4U z*fyPL+9YPZ%%ArxwK_;}%Pbl-ZNeCw-`vxac(ttW$uw%3c;5tmoK(c*(lT3ZmbCym8+; zxmS0Q3uXii?lK2R>>@ZWHcn*3FM}U4SDFF4Qxb|{2h&sH~VD9#lTo!8(k37T^!SxCq5lJqo1T?AB~%^ z)7|5H*lW};1M&X&7DTFZd%URhpTf9EnQ}PL)F33#$d)Y3du8tWURG(g9-k_VX^L-u zVNzl<{1Hp0xVOoYSwP?KGF|}HOiC(CW~>w}AnRsvx!7yAote7Yw1i;~C|+&F!&2Pg z)^~0({XMjye)s5$IC*R0Cw-X=k4U45T#NKHn*UozYFY-Ijtfm6JEnIYz<{hAB|WEB zaXlx1vWO;gN2z{fxPj{hyyTS~I6?J$$eIWoUg8|UB-0APc>;@^YAxVAtG5kjGno^% zGg+Fi@JR7zIb5W9HO@^v&r+As`;evJiuiT9wFdU4rXMljj_{ zR>VHH)bSaKO`W9k;(NEJdHt=G`orC3u97Q5P!Q_OTdl#IMZ*@Q{Wi8)8{sStrn_-t z=1E!qk}^JuZ}#s>?Xe4}W?4J|x_dEQy?-!nl2P0z1aXKClo)BjY{lhJk7X!%Q%;-; z`_Pb0wXZ!I;uN?lZg@L!FYkB*+uL@5{Pb>{n_nj>UjME&6m2>I{k_EdluoLa4r_RZ z2dvq7b@t}EdF-6aA;Y_Kue7Fc4O3UvO+m91xF+t-<-6+Wiwy1`cf6_tcmR5`*&X;8 k`{B>N5mW#OXs_Wzf+YglIH2hQH3-B2ow(2$aU>Z1A8y7*y8r+H delta 1258 zcmZ8hUuYa<5Z`ZiZ+qF>)6kHAHCQ3J>S{@=)>02mkh^PbgOs3YpkAAtciYQeF1xwe z4QG-IInrt*v87=UiY7LNJlKa)+bivp5BgB>O?=zTQy2Dkv-9US zGv7CJ-#!%IJQPtk8r3Cw<{yvbf4CL>Q;64Uiu|*PO(x>$5zhiIUABt8n@+mfnJLTh zy>#C4{ERyWnVBL!QZDb`N8!Fyk4kjB9kn}8G>YDsHUfWeMSu7#%N!y>w|t-czEno|Bj^4Osah+Q`i)4oLbU8 zW(J2Xl3?bHqkIpz* z-*z2SY4j4bI{zf=W`qM9?#+CA(}y{qm_;|;PWVZBFtVdrKE$>~ih9Jgs3dSLuo$%X z{F!?~TVTpXd~o)N);Qc|i+FJCinheoX0GkAc+gvwl#ie4En?_U4LGOA$F<$>k%KAM z!;V!h+K%PHN4R}1zME6kb=$KY8b~K=K^gn=on0%WhE)cG9n`Yt`=$m1cqZQ?E;Y-k zt>q7hmdoVvmuP`C{BdIV75;)N3~LM>1g5BKWiLCCf$K_x^fNZCV9L(4e!*hno26B} zYxlnX^vnQn2fW14#}H#+V)&AwlOcsh;dF57%UCV6i)HG(r*^yWoUCoI{nKX6_*=33 z>_t+U0($v}ZWX7e{x}(wE77wn!)j)=fledCUc#9Nf%l{@k2!XHh zw(}y*UfmhoyW{Se`2<5S;!OBt&ew6+?G)>LUwF~|N&Hvu%=FF1v^RDL50v7>TPVE~ z-1`<$tSUQaI%FuYg%3)}?x0@XcPA}p$^t5yH`45*O*;a=nEXEhyb>_WaDjoR5~>W# M4C@SAIOvuB1-L{_NB{r; diff --git a/gestao_raul/Lib/site-packages/pip/_vendor/pygments/formatter.py b/gestao_raul/Lib/site-packages/pip/_vendor/pygments/formatter.py index a2349ef..d266603 100644 --- a/gestao_raul/Lib/site-packages/pip/_vendor/pygments/formatter.py +++ b/gestao_raul/Lib/site-packages/pip/_vendor/pygments/formatter.py @@ -4,7 +4,7 @@ Base formatter class. - :copyright: Copyright 2006-2022 by the Pygments team, see AUTHORS. + :copyright: Copyright 2006-2024 by the Pygments team, see AUTHORS. :license: BSD, see LICENSE for details. """ @@ -26,7 +26,21 @@ class Formatter: """ Converts a token stream to text. - Options accepted: + Formatters should have attributes to help selecting them. These + are similar to the corresponding :class:`~pygments.lexer.Lexer` + attributes. + + .. autoattribute:: name + :no-value: + + .. autoattribute:: aliases + :no-value: + + .. autoattribute:: filenames + :no-value: + + You can pass options as keyword arguments to the constructor. + All formatters accept these basic options: ``style`` The style to use, can be a string or a Style subclass @@ -47,15 +61,19 @@ class Formatter: support (default: None). ``outencoding`` Overrides ``encoding`` if given. + """ - #: Name of the formatter + #: Full name for the formatter, in human-readable form. name = None - #: Shortcuts for the formatter + #: A list of short, unique identifiers that can be used to lookup + #: the formatter from a list, e.g. using :func:`.get_formatter_by_name()`. aliases = [] - #: fn match rules + #: A list of fnmatch patterns that match filenames for which this + #: formatter can produce output. The patterns in this list should be unique + #: among all formatters. filenames = [] #: If True, this formatter outputs Unicode strings when no encoding @@ -63,6 +81,11 @@ class Formatter: unicodeoutput = True def __init__(self, **options): + """ + As with lexers, this constructor takes arbitrary optional arguments, + and if you override it, you should first process your own options, then + call the base class implementation. + """ self.style = _lookup_style(options.get('style', 'default')) self.full = get_bool_opt(options, 'full', False) self.title = options.get('title', '') @@ -75,20 +98,32 @@ class Formatter: def get_style_defs(self, arg=''): """ - Return the style definitions for the current style as a string. + This method must return statements or declarations suitable to define + the current style for subsequent highlighted text (e.g. CSS classes + in the `HTMLFormatter`). - ``arg`` is an additional argument whose meaning depends on the - formatter used. Note that ``arg`` can also be a list or tuple - for some formatters like the html formatter. + The optional argument `arg` can be used to modify the generation and + is formatter dependent (it is standardized because it can be given on + the command line). + + This method is called by the ``-S`` :doc:`command-line option `, + the `arg` is then given by the ``-a`` option. """ return '' def format(self, tokensource, outfile): """ - Format ``tokensource``, an iterable of ``(tokentype, tokenstring)`` - tuples and write it into ``outfile``. + This method must format the tokens from the `tokensource` iterable and + write the formatted version to the file object `outfile`. + + Formatter options can control how exactly the tokens are converted. """ if self.encoding: # wrap the outfile in a StreamWriter outfile = codecs.lookup(self.encoding)[3](outfile) return self.format_unencoded(tokensource, outfile) + + # Allow writing Formatter[str] or Formatter[bytes]. That's equivalent to + # Formatter. This helps when using third-party type stubs from typeshed. + def __class_getitem__(cls, name): + return cls diff --git a/gestao_raul/Lib/site-packages/pip/_vendor/pygments/formatters/__init__.py b/gestao_raul/Lib/site-packages/pip/_vendor/pygments/formatters/__init__.py index 43c4c89..f19e993 100644 --- a/gestao_raul/Lib/site-packages/pip/_vendor/pygments/formatters/__init__.py +++ b/gestao_raul/Lib/site-packages/pip/_vendor/pygments/formatters/__init__.py @@ -4,14 +4,14 @@ Pygments formatters. - :copyright: Copyright 2006-2022 by the Pygments team, see AUTHORS. + :copyright: Copyright 2006-2024 by the Pygments team, see AUTHORS. :license: BSD, see LICENSE for details. """ import re import sys import types -from fnmatch import fnmatch +import fnmatch from os.path import basename from pip._vendor.pygments.formatters._mapping import FORMATTERS @@ -22,6 +22,16 @@ __all__ = ['get_formatter_by_name', 'get_formatter_for_filename', 'get_all_formatters', 'load_formatter_from_file'] + list(FORMATTERS) _formatter_cache = {} # classes by name +_pattern_cache = {} + + +def _fn_matches(fn, glob): + """Return whether the supplied file name fn matches pattern filename.""" + if glob not in _pattern_cache: + pattern = _pattern_cache[glob] = re.compile(fnmatch.translate(glob)) + return pattern.match(fn) + return _pattern_cache[glob].match(fn) + def _load_formatters(module_name): """Load a formatter (and all others in the module too).""" @@ -58,29 +68,31 @@ def find_formatter_class(alias): def get_formatter_by_name(_alias, **options): - """Lookup and instantiate a formatter by alias. + """ + Return an instance of a :class:`.Formatter` subclass that has `alias` in its + aliases list. The formatter is given the `options` at its instantiation. - Raises ClassNotFound if not found. + Will raise :exc:`pygments.util.ClassNotFound` if no formatter with that + alias is found. """ cls = find_formatter_class(_alias) if cls is None: - raise ClassNotFound("no formatter found for name %r" % _alias) + raise ClassNotFound(f"no formatter found for name {_alias!r}") return cls(**options) -def load_formatter_from_file(filename, formattername="CustomFormatter", - **options): - """Load a formatter from a file. +def load_formatter_from_file(filename, formattername="CustomFormatter", **options): + """ + Return a `Formatter` subclass instance loaded from the provided file, relative + to the current directory. - This method expects a file located relative to the current working - directory, which contains a class named CustomFormatter. By default, - it expects the Formatter to be named CustomFormatter; you can specify - your own class name as the second argument to this function. + The file is expected to contain a Formatter class named ``formattername`` + (by default, CustomFormatter). Users should be very careful with the input, because + this method is equivalent to running ``eval()`` on the input file. The formatter is + given the `options` at its instantiation. - Users should be very careful with the input, because this method - is equivalent to running eval on the input file. - - Raises ClassNotFound if there are any problems importing the Formatter. + :exc:`pygments.util.ClassNotFound` is raised if there are any errors loading + the formatter. .. versionadded:: 2.2 """ @@ -91,36 +103,38 @@ def load_formatter_from_file(filename, formattername="CustomFormatter", exec(f.read(), custom_namespace) # Retrieve the class `formattername` from that namespace if formattername not in custom_namespace: - raise ClassNotFound('no valid %s class found in %s' % - (formattername, filename)) + raise ClassNotFound(f'no valid {formattername} class found in {filename}') formatter_class = custom_namespace[formattername] # And finally instantiate it with the options return formatter_class(**options) except OSError as err: - raise ClassNotFound('cannot read %s: %s' % (filename, err)) + raise ClassNotFound(f'cannot read {filename}: {err}') except ClassNotFound: raise except Exception as err: - raise ClassNotFound('error when loading custom formatter: %s' % err) + raise ClassNotFound(f'error when loading custom formatter: {err}') def get_formatter_for_filename(fn, **options): - """Lookup and instantiate a formatter by filename pattern. + """ + Return a :class:`.Formatter` subclass instance that has a filename pattern + matching `fn`. The formatter is given the `options` at its instantiation. - Raises ClassNotFound if not found. + Will raise :exc:`pygments.util.ClassNotFound` if no formatter for that filename + is found. """ fn = basename(fn) for modname, name, _, filenames, _ in FORMATTERS.values(): for filename in filenames: - if fnmatch(fn, filename): + if _fn_matches(fn, filename): if name not in _formatter_cache: _load_formatters(modname) return _formatter_cache[name](**options) - for cls in find_plugin_formatters(): + for _name, cls in find_plugin_formatters(): for filename in cls.filenames: - if fnmatch(fn, filename): + if _fn_matches(fn, filename): return cls(**options) - raise ClassNotFound("no formatter found for file name %r" % fn) + raise ClassNotFound(f"no formatter found for file name {fn!r}") class _automodule(types.ModuleType): diff --git a/gestao_raul/Lib/site-packages/pip/_vendor/pygments/formatters/__pycache__/__init__.cpython-310.pyc b/gestao_raul/Lib/site-packages/pip/_vendor/pygments/formatters/__pycache__/__init__.cpython-310.pyc index 771f8115df33bcdff7f9277907421aad72031b8b..a12a6fa027733c595e506ca0f246b1e0b86d031a 100644 GIT binary patch literal 5013 zcmcgw+in}j8J<0mTv5mPAe*x6Owu+m0h@M>AWaE3h@;qT5l0Cur$Gr7%hm3XT4lLQ z%`7F8AcHi@Wzjr95Wp^a(V`F0SLpTL_9`#Xivq3t{j)2Ivelx!=@N6;Iqg6H@%x!9 zE>;J9m+>ztYR>W8>vr6!kY$0c)|q2+YW68M-xFrf#j4rCYmYqqU+^uiPpd zwAPL)J*Va9ekq#kRa;fvFGuseh1P<>x-6*t&Jc^jIWjJ>)>6n?%P1>>6U=?ZTCW7v zU>@zcU?EsUdp=kSmeF1aR)Sa1UJPo%`QXA=Mr$>=7_4IC(ob1%DY*O<3oZ+5@A8q= zstI#%Oc!(ifSzTz%=ZOpaTQA`voFt=EJZS?0V z$I~Bndm>I%qm#&FJ=}u zB2TH!Bz=$!;-GG47rP=oS>o;tT{r{V$SocVZ3$%qMZJw`Y^3bKkQYGE5Kc;S*!;AeiVv;6Rn&s!aFgCc>P_WcwdV-){`{XsF$-Pw-|MO z4~sHWimc)%y*>`eDxFyG&E`_+#VYbrk(KmF-O9{PoY~zd*~u!!5r1UzJnr=O-Hqn< zCkhI+eJG+d*?vFq2U^#*A3b{S{>FA!sMJeb=?$XohvCk)3R7{j@A;p3nAz@!{afyV zh=WAlI#$wKCo;U{x?voquG{Djvw61@yT$d^iKh-K$GmJ*jU{juFTR25_#ykBvj0uI zfT?8H@B&@q$etKuW6yY>{b~X1H^;`Muhq0DNF9`+^M4BY^#%5M=wbr=xQdY$+di_M=9�gWEJQX#3Qqn870a^ zVrvz*v-$kATt6+mw3eo9DF*#WX%Xbr1v+@eJ*}DQ`xsT^Cs)iW__Scy|CHD8>Z42_ zQdHs=4XTe({TjS_YCL1$&c%u5T8*V9RQEi%!veF$j^KO1HSn{>YU~%xVEd)iKB66! zZF6Ew%(1CQuLTykXpe3d3heQ&h=uf07&$Ja**Luz_sL#`YJ5k6lvHijOOoiz$_HLF z5K7i)hOQuqWT>Vc#+@WH+-z=o&I@djq$oE~)Cwx|iv?=|oLGU@IEMXP&z{npGFDO9 zpe;M7rrfA)m*{R2Yhq9AF&kS4OkN#Bf54kd;Ehr61spQLlP$Jy7hG8cSL_MQdtBNp zVOL{ZDptIv^~@aIdzd7j4f=dm)8I_KDD>b5wbRUbsQ6|Q3m$fOoTOkPTwCr_H|u51 zE6G9g3yjJt`XHg;21>dsuh6PBsz^)Z>r`E(itKtusV->$I%Te_h4dq=QKZbPB?oMD zz)6nBSU5#+NY1zzX37 ze{cMj%+U61Xu}K>xEI6j;96o|@T3E-H8ow$cH_ZujB9f>*wLe~PcP-Wp5kqN_cqyV znC3ySU<{8!l{WZe1h45`d8l|dgn!Zo-cI^yn8d2haTs0$04iFdEY}=Kc#!TJ!Qs>l1=rIoG`^@zyhr} zeVH7DdIW*?2A2ZC6+LpA za)Z(*X@v5!-D!INN89^v3{K_72|7E(cqusU2X8XuLdpcuoP-B*bK%T7gF+&W2JuC~ z;=KSeZ8rIx#vQ#Hcxq>JGzas((GT=z3E0KQ zpXR={w-dL}a)4~Pkf=hRK1cp#~`+~cuE=M zb+YP}{3{wvC;&2%8J*VhbYbr1GYjOs5D?@Xwm(ME=)zpKO$w&#&mHRmy#I>1WT5>5 z@j$x}=L_?>-f=1#&=KTYwAc6pIz=>KgpD=ucmts}540tO+7f`p`lL+oV_ZHm*=9Blg&;v6GlV!LKybs3CnR|b{e2rho+=z5>JPs z(QE%E5}hO@o4Ml7NlJ`nzzL!C7ZJ+bF;`R`xaK6mwOm;%K)}SX9It4oLXckGMwOMc z4xbs-C^{XWD2~c;R-vE-Q5<6paK(JSR3cQo3dn-KC26&fa_S+<-$hZEQ3;0s4;cM- zfd35uQINIUfenCCLVDs25G8dIFyi;94=?W{PZ;tX{+}4MYMhFpgo~(b&}ZI3MSzpC zLxR!r3V=2~Sb%N|eZWh^L0AB+0r8R|=@>8@wg3S7rBSywHFlP-;-~@>W)^ae95)k! z&MK-%L6+_z5eat&sn8w-NwTd()X5qB8kU~LS6tRDav0bB8jI8ts;XfF2GY+4hewxY z7}A(o4@jRmu9lhWQgT$JI&QY$y88n!B0*yY8B~z?$eHdE6(^un_bAF<&T zGS7Y=)|qD`SI%6X{|BKHldN{;3c`T7%eDz_>U1!-1Hw=`iOq#XC@cqYbT{olwR&dN z54DCp#zpj9Gcpb2ol5=$3$t<(1sKT6u{fj_j1EE{nP*lW^aJGdXE8E!?&gQQLn)Vf r3zf~B>M^iifP-H!%4Qkal5Ih@mP60Hvs_(rUO%^5T_m(vh1>rZ%l|na delta 2072 zcmZ`)TW=dh6rR~#@2;?DqJX@)}Dn6{~CODnYnAyV~1+Dg4dRjr_O;~CqVtasg+ zb%TS`l%{W$klGRA0Up{43H6OfegP7w60gX=0V?r^KoHKXlMqDN)ts3*d(N3N-?{8( z`ycPk1nG1F!SnHNbG09Gk1}KU<)Z_8*LBZm7-a(^imBnn8fMvy)-lg&*kwCfn_j$; zC?}$|r^!_CnAY z0ezwH%xVdoz$t9}#Rui7*f+xlFuUd*$7?acGqB-U17F9yMKt4SQ664!@Y`=RTEO#Wn!=N%V3 zATypL#N{A78?=1-*c#AQ_sBo&v8hQOp;*%RxbnpWQqsHTLga4O3YwuC_yTFp~RsrSCpiM1EEbWG5RbX$W0}a1)2@1e{cP&`=E5W7CNQf#-VN6{Nw!dO!*LsL3j!*b*RKPyq}n;mmVF z_YNarK*BmBl@{laUt}fV%dTIG%uttuYQWnE$;x`&t<*^+@Iwb;0oE!Cd*V9{FgDW? zVbD0cor2Tk{WhVj3Mm>Mj4Zj~jvwl<9Z7ZiB73!!Q=}cVNX7AqfE!$JtL?}XFgXcU z{9O(ZM?`lJ4EzIZcrB`x-qiq!YRj*vi1*Nu*OG6qgZvIeJr4z8w_7e0he83|;w|3? zAP55%3H;~)*KfAM-9TS`MII8js)RWMM_~AE(&WLS#~OmTjb^|@uxdu;&dR0K;bY@| zK;R6Ql1Z_3sjA9n$a&zb<^Tad2q9n)_DOM4@%GE_QD{J3qw4U zFVgkm@S4@JmaH@A!`vDqs7mP#jbG?k@=9iK{lx7fp-rJUdPxh#OJ7~Q|4Q7&c7&zM zA<~SR*H(zg|KX~Dh`^bSg0}iPU#J5i#l2K z+JoKIsy?3p$*$E1sQS`tX;C*jpe*cHBfz2JcmI5>@W9E;7{bk{#*E{{JDR4 zb{g1sVF(ow8yPsIam6cPPSmuApMa^Wan{vETXbV#y9u{amo8g@mJG zheIQ`BKUwI_%WH!pFe&CgbZXS6gnyOLQbZzshQZ=G;~|DZ98fAC6e|VxqKpRLslm6 G0R9`Ur3--o diff --git a/gestao_raul/Lib/site-packages/pip/_vendor/pygments/formatters/__pycache__/_mapping.cpython-310.pyc b/gestao_raul/Lib/site-packages/pip/_vendor/pygments/formatters/__pycache__/_mapping.cpython-310.pyc index bab3165725825182bbece1d2b2420f69d02836f5..fe503160102d95daa894d4d18838a6f06ecc834b 100644 GIT binary patch delta 149 zcmca5H%p#3pO=@50SFfPtxgZv$a|TY@xkPW%<2w$3Qm;@DXD3Rr8y-!3MCn-3d#9- zC8>EO3Yopc`NgRz3YmEdi3$k`HU&kgb_odzC5h=e3YjIvsX1wr6 z#B?2n@}k6og47fRm|RL`8B}g_BTF!sYM!%IOlWaxQE^OpYEDUhj7xrUX>Mv>NpVbi SYH>+oetc14Y0l)&e9Hk<>MXwi diff --git a/gestao_raul/Lib/site-packages/pip/_vendor/pygments/formatters/__pycache__/bbcode.cpython-310.pyc b/gestao_raul/Lib/site-packages/pip/_vendor/pygments/formatters/__pycache__/bbcode.cpython-310.pyc index a5b04a01f681e4ba65ed170c892de2298e312413..02970ed57d8075549847e788e4467fc10ee23b51 100644 GIT binary patch delta 260 zcmeB`m?*)U&&$ij00fKtR;T}%$a{s+WaFbHtnz8jRxzQ)sYS&x<*7L(`7ti}$)&le zc_qa$K|xNg&XZTOb^EdbwK)TE@f09Y!;r<`!Vv2c!&J*y%ap>%!cfax%TmLX!X(L1 zBvZqj!n}YH!du8_4wOq_sbLXk0IOgHs?eC+$Sy8v0#wHdmgR!Wasy=@CU0byWMrCr znq7gZx_0tgb~gd$Tdc(;l{u-m*wXTgauZ7?TXT3Y3T##QgZ8#L}F}OWC@;S%I3Jfw*`Qkf>qEVsK%Ib&g@GWvpdNVPs*bWv*qZ zVM<|=WGIrZVNPL&u*De6fifv9H7w!`V0l)cy!zx?c5z8#pejzVEEims8z^f(c`dsn zBje=b>%Mx=+Q;Q^k>>|m@ UrChfd6($F8TQaIl?&59-0J9E4ga7~l diff --git a/gestao_raul/Lib/site-packages/pip/_vendor/pygments/formatters/__pycache__/groff.cpython-310.pyc b/gestao_raul/Lib/site-packages/pip/_vendor/pygments/formatters/__pycache__/groff.cpython-310.pyc index 794e36eceb826aaf55484b331014bd8eb7e97e6d..752fb834af9a54b6c8804eb4dd1e124a40765bed 100644 GIT binary patch delta 570 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 U!a0P;5Wb6`!|N*9;NkZF0h`U2rT_o{ delta 4416 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 diff --git a/gestao_raul/Lib/site-packages/pip/_vendor/pygments/formatters/__pycache__/img.cpython-310.pyc b/gestao_raul/Lib/site-packages/pip/_vendor/pygments/formatters/__pycache__/img.cpython-310.pyc index a9ba0de5ab8e302c12cce7e74a81b68907161d9b..778cb2d979c0ce7c92cd78fdce9431018d975277 100644 GIT binary patch delta 4587 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 delta 3796 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 delta 999 zcmaKq+e;Kt9LLW&bLQgi%yhv_u}F)J)<{BvPzWtIL!u27yRo(`&ZxVrJ9=go!OpTm zmw#ZOw`hIrF?{V$=&hdYwU77(ry|rrmr=-;7sBPcVQ%H5y@1)q&YIbRA3FQ!6nCRxjv z$MS1lxL%Hy#T~d}O2v%Tk^miXS2=pPS}jN7zRHfne2CxKQ_b_m#Xzi-qGG+~*A@cL z_ljyrv08>7yg^+!43nZZOHo+d7B!UJ6)du4(BgT?Ya-RM;kdZW7&upiS2`v74<+o6hlm zB{rQjHejq$>8-S(wJ4d8c-Yev@d6S*B!qZDh&_!+lXw9BgbD4Xoa5eB8bXLz`TG00 z=bU?dZD0R+`s-XnzM;V@;P3X4JK5R04f_E`*z541PQ|eU_%GB0+atyn!G>Fc?pc>A zVp-5-eUmlLD(4-Xy`1Yf*K=;*+{n3!vyXE#=N8U>&aJb2AixKLoI{*b-iGkF%sEnrzC8wy2=hN;fgQrJu90xMfC8q{c=+0usBj`mpJx6XI zx|~Js1$0^0b)zesq_G}!3mI|=bb5~5Ai9$m$?c-NGvwkF)m-~-QDHwzPlCZVq_8qJ z_R^sPtXocZ_~1W|>TUU2(5r1dzG3!s`w(1W+4hS)Q?{o2%Bn5fs@@b9E<**L5gZMv zIV_kKMqA1%gGlR0MWn!d6Nda4x{RS#UWmM1sOfN8G(R{Kw6(IQ`fB97xHy>7jhR#; zF=}PHyPqnRQkHSS%H(r-bHdD~CrhQ0<2a=f#_;Ua)O6m|4YN4ARhHf?!@`1L<&62P zbrStdI)9;HEKp^tV40`pv(Z6!&^((n949s7cEF^?$GU9xqKdOtl()pDo^;mDFCP2f zU56GdY_rwnu_ljAzXKOl6cdT0#y;;F&}!;T-kh7Z*uAbd;Wd_s4kUu0feiKF1#v^& z&?FfeLEg|r5yvzfm47eB*xMa3b~75BrmgAj!Z9?qFe^A>R&XSAP!=n~L1EIL5*^u5 zY^f~aD=gw36>S++vK3T$-BSS&&Uh`Es&%D|nHA90H8Ch06_OsN#Ma{8)ad;5oPiIn zR8&T-{OQq0qEj-PuxAatNzt5O-^E_3n?N>CkW8}H_-@~efS-p(WL1%&1)^*$J_^?v zi+>6I)g#?M!Sk2w9c91XQ~@Vo2XsOAT@k}{(QQu94laY4w#BldH@g?yVz=T2`|TiV z>$-=%(bL|w_%HE*?h6Y%$LiM4D~~V>hHiC>hyml!U}tKFaqDQw+0{j(v-1} zL?KyWsohy+73~kzA9o*w$j4}tl1U$O(?qGMN8O#11oH;#8;ZaKc4+7wb%o-q?6aZ% z{u^X(QmS}rxF%Y|B{D0=$!kj;DsnAFBxqkGhAE~Ecq s>xI+=88ok^YJRQ0zS)f(Ne0X%c7Nn@Iwc^MLa16uj-YybcN delta 1756 zcma)7OKclO7~Wa0*N#&=ZsJFrr=2*D&8tpG0HLHrY7UVQQLBPbl1*CM<2W=`}obz9s+>n!f2CoNu28!Yalev1ca(Bh3WWbz>xxQRAfjuzT#@iy9S z@i2`bXA`!jZKvFopG)M6`j)}6iDQ-o_KYl==48C6SIGra6d?K;={7}t6~(wIGAfGG zrbrv2(-iq-^mLgbmqZaoF_xdB8B~L&Yk3nz&-0{p6dk6ZhPYw~_Ji#dSz#U_RGUua z)p+)T5-()ffRJcCLH^^a+!J;KF2`}#hS=-PF>;0Fnm4x>H7E6If+o_s5Vr%X^9rXs zL7fb7N*;Xmh7Z&ZF<1k#CEko%^FSn6l=mUh_rm|Yij$HRUb(g&(41uvnrJ)Vp*Cz5 z%|6a)PL0*DZM$t^w_l^lu)EvULwbu*V5S&Ofxs*dC;9bvz= z`RS9&p@6x1WYOXBi68CJbTg=n%Ffw_3(OPkfRMj6-rFzEBAsK8dS$Z6nxzm#j7d>)md!~ehmUxmtBve8 z=^ByQMqh`R#PE+;xo?yVR=(|f$deMgHP}MFVP6jZ?!AcKaRfYzl@j}EC~dzD^l>G8 zYKpYn1S;8#{ifuASH<(j#~=~q4tp=wLVjdl#Ad}3Cf{a%#rniMNIzu*!|nE4K)w8E$l?z+$6qy&oXmLHH2iDni%-qu5=L zf3nM?Z%H4c;}e8kggu1U5b)g;oR~4Pau*h+(S8H;*UUQ>tU)#-`IS8u8@un{z_>Vq Sgn<8H$_>Z}GWW|d((^ZMdDf}` diff --git a/gestao_raul/Lib/site-packages/pip/_vendor/pygments/formatters/__pycache__/other.cpython-310.pyc b/gestao_raul/Lib/site-packages/pip/_vendor/pygments/formatters/__pycache__/other.cpython-310.pyc index 140825caf64978cff8ebecf72993af1dca29dc73..523733c61a5aced173fbf0701a13a2c191174878 100644 GIT binary patch delta 425 zcmY*V&r1S96rMNxdv&#yrOg7_0->N|bW23-;Kjh8lMvZfB%)~cgJl-2ZV_}CB0_}S zj&-sn2!c)?`b#=Qe?g~a?UL^?kN4j9X5Kg7C_PGRO-)k~vxm~t!Q)U{1y~6RU}D&# z6)q{1%enP@(BljquIa6`1qJ#oCFk>iLhmTHOi)eiV_O+;mv8~6$VQuJNu>*NMvoO6 zCp+~++uCi`n{CTcX-htX6#bItZ~}se62q`fXCrq|rO%O1*r4~(572|ECSkauwfLH< zFlu>rj$Y|7ZgkBGc12eryoZS710W)>jO!yC6Ol!ZNQ?_V5JRjbcfb}rOn4vmVH&ye zxDtGDl@8~sj5%+kW7N(N><1Pdylgof?M=NHH{p*`EbtI|6jY{4QE$OHebe8?3`5#k+D&AIGA|h7FQENo Am;e9( delta 449 zcmX@2dPJ2spO=@50SKypgr;BI$ZN*PXtdddQJje}dvXl3BzJmhaY4K@3q!2%}kwm3=0_<845W{7*m)R zFx9XuWK3feW2ogwVV)!)nrl_Vw1BmSqlQzQp@vHwtTayoBDMhN@r8^a&0sz!8lMY= z&%O{CAfN!!Wc91!Q9uG!JgUVSs>M2>Kxh!yDl!4&aycLY@-Yk0=Uj|plRX6s8Ji~W X7Tm{X3zR9cpIk5Gz#7cLD#8W;thi!o diff --git a/gestao_raul/Lib/site-packages/pip/_vendor/pygments/formatters/__pycache__/pangomarkup.cpython-310.pyc b/gestao_raul/Lib/site-packages/pip/_vendor/pygments/formatters/__pycache__/pangomarkup.cpython-310.pyc index 2b402c4cc9f40207d8ffb49585fd7c2f0c1ca1e1..fcc3826e7148d28ee29ec9128b8e8577366914f2 100644 GIT binary patch delta 226 zcmdlXut$J5pO=@50SFfPtxjLHk(Zf~(PXk9<8Q|7$-GRGtU*CeuFjhcnKBr;*no<> zfw*|h^hsBAhx^{8_iyI^BaYCGxIV_;^S|z6_-@z pq!!;|1=EvnvIH>-Y}R45W@HrEoWUl_$S60tj@_J5Y4SGqHUKXWH5UK? diff --git a/gestao_raul/Lib/site-packages/pip/_vendor/pygments/formatters/__pycache__/rtf.cpython-310.pyc b/gestao_raul/Lib/site-packages/pip/_vendor/pygments/formatters/__pycache__/rtf.cpython-310.pyc index 2ec1059252de5167a19c2b893e07bddf0433f052..8cd703b2eacc29f997cde5a13e0f01c5d34bfb0e 100644 GIT binary patch literal 8854 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 delta 1572 zcmZWqO>7%Q6rP!#{qgSFahx=Xk z-5+Ny7aA(y7Om6^m*j#3M{?)|4jj00;7V$*6tkGUgX$*B!~OzS zLDKw4Ie4GkRZ`ua9~0^n#%p5BvnYMuUecHfy4t}9`7iOxT213ZCo>%I;Kz=WDd3H3 zfN@0-0|>-GBe&yadf1KqFo-@!JP-IoKmDdyhVY`e89Kb#>!d#wS0{2HT7nS?D%N#8r5~}L{!)6}RU6$VH)}ed6dFp%S*A6+ zT{mEv62+X0v@*I8`T;M&vZiujpHE2b^`4jER-Lqh|GKhAt{f4^m2`7rWhnAI`D|DS zJ1@bA{=f(&WDhZ%pbg9mj3j6e#s=QU)2KVflqs~2G4jzsVRS%2qP&dWU2c$pI?xh0 z=`sSUNvfBTC!|je^hD=xCwih>$1u}jq9pp|V@F0z6P@Ll`5`GIX5Ar@H<|q}-e&m| z-W!FGP)0AH0o{6Ht1LqVV4$z^przOTdj&>4bL+6qX z43W!eJh~|nLud}PHX4}6nek5(b1%n=kc7;%j7Cmm_WTPe9hXu#jZ@N68Sw)l9kK}- ztHve)`bus%GeV{S`Boy+BLt3-e=m_4X%zSqqfFT|6BEL-5{v&Vvo0srC>*#(xI8P# z?Zf54$yoe%sWH1h1MJqd5d&+6pgt;V{Z~_3Sw6GfXoa1S$LpO-4{??2@GcH<`s;LM zwLjJ1E?Z!YHh0|s=Jig`U0|0uyc%>Us_L*Ph))!d% z^&?L%_s1Kp_trV%FtxmHGX^o;UWlrE9QM`hOufNPTiXX(>Nd0q* z!x_-zvx3aYJ+d6?Rvcb)gDC9rmJ8+Ei#@;N*7GtaXA|nl589a)dS2wl8Fu)hFi-`O zsd0R(>t^cpCZxqH5`sGC|0~|2CwkQ|c6xyuv_j@G2b3cZh(O&V5J?IATNME1&-VWmP(n4b8Z`8M0o-eL=j1Nc=d+_36j~?gZb@90WfW9h65yVZ=zk0u4y^ng8_k7py zyS$F)IRt+XPCUF|t$P2#o+r=-n3Ww`HBX*Acz9Y$`VWLp&l~qsGG#vj=jjXkUn6T{ z&~f~_Hpsu+WF?y-J$LyC5Vcq~F}^2l_=)t=0+=g|Yla{*o@Smfm>&_X_&ti}IhNNf zr&)nf&GOniU`5RenuQxI(5%GDg0%b)b2*s4I8P8m`KR|7N^-_O;;uVq8VgsNhdJ+X z`Kv!y8^;?5;BPDk9LNI&7ncq6txsh=_sxC}ou*Z5qm*FA7D@2(El5&`w7Un<;E|w% z6a!`7BaE&YLjck?R#-~Q;CUo&+@I7H4}Jxh~Jf{!uCh|Ca@tjO{k ztRS)xVL?O|Z?aUVUe6cKHBb?)93Kj2kROskf#J&zDXPvOU=il=h0iJu zt6ry7f@P-VZ~3h&Bf2bUW%=t*8hZVOhBoPjf)5SpSd;y4OP3$1T*AfT)hdaI@FJq( zE-x!RX8y(n=pE>~x~zVCR{4&oufAEHDZGL)Sr5i&KP8U_&sOr27ix2zc5h;?acO>G z`9R$F;`c&#zTZS@#8VCj{P+8r$zF4*S6f2SjBCo3#d-jJ8KM*(DES~D8 zCwD4!ijS$lD6TDCTG-cJY|LWDMc(W-`HxL>vnJ*3;@71x{yazRZum3QlWVf%0iF(>QqBcS-TPbklUhFYf4l3ceL9pyL(U6 RU49Ie^)b1nQj&$r!*{;S0o4Ei delta 1147 zcmZ`%&1(}u6rVSnY&MhKO|tpeR;7e$)FP$SgQB)YQBV;C5kW<%#Yt*oP3rCnwVfrX zC?52nb5%(Mks^9fym|3vJ@)8d;Ms$C@#D=Tet^2eynVmld++z=Yi0b+xYKeRM(|ty za$@%BJ?9f_e+f;1IoYCvnb}$x&9tV2nJe@1E`1N1U!61_C9F#Slb=&BGnESaiC?W) zAB~KOYDaK}--vu*$88gc8axvlr%03%z-?jNFa(*lHFAW(U7u*ii73XiJg1SXQJzzc zvO3%21&wkV75gZ!QHhrYX*k86mN!SRM?pSzUO-VEa}UWUZhgaMT$u-Me=t}F6l^eY zxFEM>ckD}J!hW^*Ttmljknab}6!~Kf3GQsK}+ga7yDgI|W z|6Ts&hpJB4*vA_rcnr8cJaBfh+oUxQ6@+8d(PP`16- z?M)N2m3pfgjn-!_&COq(9Il4LJtCZ2s%bdI0=!kSw0$C~Ek>2aUQR!?8delLI@3IV zp%qLH*P48Isv1s=DRwFtQiUV`DqOrYzdKxz-NM0%e+vJlTB(M=g_lzO4)SZ^Hf)u* zid`P42Y3#RnNm+vjRaWVnZbY=CNMC+oBE#sld9*NLncQp@DMR5;!#JZv){(7fm?>RbR2ZxdUFeJwYO7ffk><0tI5Uv0K diff --git a/gestao_raul/Lib/site-packages/pip/_vendor/pygments/formatters/__pycache__/terminal.cpython-310.pyc b/gestao_raul/Lib/site-packages/pip/_vendor/pygments/formatters/__pycache__/terminal.cpython-310.pyc index e96bd6b328205382f3200683c4c3fae06b5f2a94..49127a96bb330f30edd34b7667604130d4767f13 100644 GIT binary patch delta 44 zcmbO)KU1DNpO=@50SFfPt=`D}o{`aH^KZr`HpYy}bsUncK|xNg&YKr;{AB|G5-bfi delta 50 zcmbO!KVP0ZpO=@50SKypgl^=1&&X)B`8Q(|8)M$&Iu1$h^wi>##QgZ8#L}G2b2$F8 F0RVVq5RU)= diff --git a/gestao_raul/Lib/site-packages/pip/_vendor/pygments/formatters/__pycache__/terminal256.cpython-310.pyc b/gestao_raul/Lib/site-packages/pip/_vendor/pygments/formatters/__pycache__/terminal256.cpython-310.pyc index 351e63b4efa8110c0e144b74debf314856ace0bd..9c9bf694539dae0d881109dcabb340995e1e8ca3 100644 GIT binary patch delta 64 zcmZ4JG24SXpO=@50SFfPt=`D}i;>Y}GaJ()M)_=KtC-N@)S}{;^3i#mH#1nT=@?qiUhERZM7cYEf}ad1_8cevC_ga%paA YUP*CGdTMb=Vt#y4VrkCi`` tags within a ``

`` tag, wrapped in a ``
`` tag. The ``
``'s CSS class can be set by the `cssclass` option."), + 'HtmlFormatter': ('pygments.formatters.html', 'HTML', ('html',), ('*.html', '*.htm'), "Format tokens as HTML 4 ```` tags. By default, the content is enclosed in a ``
`` tag, itself wrapped in a ``
`` tag (but see the `nowrap` option). The ``
``'s CSS class can be set by the `cssclass` option."), 'IRCFormatter': ('pygments.formatters.irc', 'IRC', ('irc', 'IRC'), (), 'Format tokens with IRC color sequences'), 'ImageFormatter': ('pygments.formatters.img', 'img', ('img', 'IMG', 'png'), ('*.png',), 'Create a PNG image from source code. This uses the Python Imaging Library to generate a pixmap from the source code.'), 'JpgImageFormatter': ('pygments.formatters.img', 'img_jpg', ('jpg', 'jpeg'), ('*.jpg',), 'Create a JPEG image from source code. This uses the Python Imaging Library to generate a pixmap from the source code.'), diff --git a/gestao_raul/Lib/site-packages/pip/_vendor/pygments/formatters/bbcode.py b/gestao_raul/Lib/site-packages/pip/_vendor/pygments/formatters/bbcode.py index 2be2b4e..5a05bd9 100644 --- a/gestao_raul/Lib/site-packages/pip/_vendor/pygments/formatters/bbcode.py +++ b/gestao_raul/Lib/site-packages/pip/_vendor/pygments/formatters/bbcode.py @@ -4,7 +4,7 @@ BBcode formatter. - :copyright: Copyright 2006-2022 by the Pygments team, see AUTHORS. + :copyright: Copyright 2006-2024 by the Pygments team, see AUTHORS. :license: BSD, see LICENSE for details. """ @@ -60,7 +60,7 @@ class BBCodeFormatter(Formatter): for ttype, ndef in self.style: start = end = '' if ndef['color']: - start += '[color=#%s]' % ndef['color'] + start += '[color=#{}]'.format(ndef['color']) end = '[/color]' + end if ndef['bold']: start += '[b]' diff --git a/gestao_raul/Lib/site-packages/pip/_vendor/pygments/formatters/groff.py b/gestao_raul/Lib/site-packages/pip/_vendor/pygments/formatters/groff.py index f3dcbce..5c8a958 100644 --- a/gestao_raul/Lib/site-packages/pip/_vendor/pygments/formatters/groff.py +++ b/gestao_raul/Lib/site-packages/pip/_vendor/pygments/formatters/groff.py @@ -4,7 +4,7 @@ Formatter for groff output. - :copyright: Copyright 2006-2022 by the Pygments team, see AUTHORS. + :copyright: Copyright 2006-2024 by the Pygments team, see AUTHORS. :license: BSD, see LICENSE for details. """ @@ -63,7 +63,7 @@ class GroffFormatter(Formatter): for ttype, ndef in self.style: start = end = '' if ndef['color']: - start += '\\m[%s]' % ndef['color'] + start += '\\m[{}]'.format(ndef['color']) end = '\\m[]' + end if ndef['bold']: start += bold @@ -72,7 +72,7 @@ class GroffFormatter(Formatter): start += italic end = regular + end if ndef['bgcolor']: - start += '\\M[%s]' % ndef['bgcolor'] + start += '\\M[{}]'.format(ndef['bgcolor']) end = '\\M[]' + end self.styles[ttype] = start, end @@ -84,7 +84,7 @@ class GroffFormatter(Formatter): if ndef['color'] is not None: colors.add(ndef['color']) - for color in colors: + for color in sorted(colors): outfile.write('.defcolor ' + color + ' rgb #' + color + '\n') diff --git a/gestao_raul/Lib/site-packages/pip/_vendor/pygments/formatters/html.py b/gestao_raul/Lib/site-packages/pip/_vendor/pygments/formatters/html.py index d5cda4c..7aa938f 100644 --- a/gestao_raul/Lib/site-packages/pip/_vendor/pygments/formatters/html.py +++ b/gestao_raul/Lib/site-packages/pip/_vendor/pygments/formatters/html.py @@ -4,7 +4,7 @@ Formatter for HTML output. - :copyright: Copyright 2006-2022 by the Pygments team, see AUTHORS. + :copyright: Copyright 2006-2024 by the Pygments team, see AUTHORS. :license: BSD, see LICENSE for details. """ @@ -62,7 +62,7 @@ def _get_ttype_class(ttype): CSSFILE_TEMPLATE = '''\ /* generated by Pygments -Copyright 2006-2022 by the Pygments team. +Copyright 2006-2024 by the Pygments team. Licensed under the BSD license, see LICENSE for details. */ %(styledefs)s @@ -73,7 +73,7 @@ DOC_HEADER = '''\ "http://www.w3.org/TR/html4/strict.dtd"> @@ -112,9 +112,9 @@ DOC_FOOTER = '''\ class HtmlFormatter(Formatter): r""" - Format tokens as HTML 4 ```` tags within a ``
`` tag, wrapped
-    in a ``
`` tag. The ``
``'s CSS class can be set by the `cssclass` - option. + Format tokens as HTML 4 ```` tags. By default, the content is enclosed + in a ``
`` tag, itself wrapped in a ``
`` tag (but see the `nowrap` option). + The ``
``'s CSS class can be set by the `cssclass` option. If the `linenos` option is set to ``"table"``, the ``
`` is
     additionally wrapped inside a ```` which has one row and two
@@ -140,8 +140,6 @@ class HtmlFormatter(Formatter):
 
     (whitespace added to improve clarity).
 
-    Wrapping can be disabled using the `nowrap` option.
-
     A list of lines can be specified using the `hl_lines` option to make these
     lines highlighted (as of Pygments 0.11).
 
@@ -187,8 +185,8 @@ class HtmlFormatter(Formatter):
     Additional options accepted:
 
     `nowrap`
-        If set to ``True``, don't wrap the tokens at all, not even inside a ``
``
-        tag. This disables most other options (default: ``False``).
+        If set to ``True``, don't add a ``
`` and a ``
`` tag + around the tokens. This disables most other options (default: ``False``). `full` Tells the formatter to output a "full" document, i.e. a complete @@ -325,6 +323,7 @@ class HtmlFormatter(Formatter): If set to the path of a ctags file, wrap names in anchor tags that link to their definitions. `lineanchors` should be used, and the tags file should specify line numbers (see the `-n` option to ctags). + The tags file is assumed to be encoded in UTF-8. .. versionadded:: 1.6 @@ -489,7 +488,7 @@ class HtmlFormatter(Formatter): name = self._get_css_class(ttype) style = '' if ndef['color']: - style += 'color: %s; ' % webify(ndef['color']) + style += 'color: {}; '.format(webify(ndef['color'])) if ndef['bold']: style += 'font-weight: bold; ' if ndef['italic']: @@ -497,9 +496,9 @@ class HtmlFormatter(Formatter): if ndef['underline']: style += 'text-decoration: underline; ' if ndef['bgcolor']: - style += 'background-color: %s; ' % webify(ndef['bgcolor']) + style += 'background-color: {}; '.format(webify(ndef['bgcolor'])) if ndef['border']: - style += 'border: 1px solid %s; ' % webify(ndef['border']) + style += 'border: 1px solid {}; '.format(webify(ndef['border'])) if style: t2c[ttype] = name # save len(ttype) to enable ordering the styles by @@ -531,7 +530,7 @@ class HtmlFormatter(Formatter): styles.sort() lines = [ - '%s { %s } /* %s */' % (prefix(cls), style, repr(ttype)[6:]) + f'{prefix(cls)} {{ {style} }} /* {repr(ttype)[6:]} */' for (level, ttype, cls, style) in styles ] @@ -549,24 +548,24 @@ class HtmlFormatter(Formatter): if Text in self.ttype2class: text_style = ' ' + self.class2style[self.ttype2class[Text]][0] lines.insert( - 0, '%s{ background: %s;%s }' % ( + 0, '{}{{ background: {};{} }}'.format( prefix(''), bg_color, text_style ) ) if hl_color is not None: lines.insert( - 0, '%s { background-color: %s }' % (prefix('hll'), hl_color) + 0, '{} {{ background-color: {} }}'.format(prefix('hll'), hl_color) ) return lines def get_linenos_style_defs(self): lines = [ - 'pre { %s }' % self._pre_style, - 'td.linenos .normal { %s }' % self._linenos_style, - 'span.linenos { %s }' % self._linenos_style, - 'td.linenos .special { %s }' % self._linenos_special_style, - 'span.linenos.special { %s }' % self._linenos_special_style, + f'pre {{ {self._pre_style} }}', + f'td.linenos .normal {{ {self._linenos_style} }}', + f'span.linenos {{ {self._linenos_style} }}', + f'td.linenos .special {{ {self._linenos_special_style} }}', + f'span.linenos.special {{ {self._linenos_special_style} }}', ] return lines @@ -595,17 +594,15 @@ class HtmlFormatter(Formatter): @property def _linenos_style(self): - return 'color: %s; background-color: %s; padding-left: 5px; padding-right: 5px;' % ( - self.style.line_number_color, - self.style.line_number_background_color - ) + color = self.style.line_number_color + background_color = self.style.line_number_background_color + return f'color: {color}; background-color: {background_color}; padding-left: 5px; padding-right: 5px;' @property def _linenos_special_style(self): - return 'color: %s; background-color: %s; padding-left: 5px; padding-right: 5px;' % ( - self.style.line_number_special_color, - self.style.line_number_special_background_color - ) + color = self.style.line_number_special_color + background_color = self.style.line_number_special_background_color + return f'color: {color}; background-color: {background_color}; padding-left: 5px; padding-right: 5px;' def _decodeifneeded(self, value): if isinstance(value, bytes): @@ -635,7 +632,7 @@ class HtmlFormatter(Formatter): # write CSS file only if noclobber_cssfile isn't given as an option. try: if not os.path.exists(cssfilename) or not self.noclobber_cssfile: - with open(cssfilename, "w") as cf: + with open(cssfilename, "w", encoding="utf-8") as cf: cf.write(CSSFILE_TEMPLATE % {'styledefs': self.get_style_defs('body')}) except OSError as err: @@ -686,9 +683,9 @@ class HtmlFormatter(Formatter): if nocls: if special_line: - style = ' style="%s"' % self._linenos_special_style + style = f' style="{self._linenos_special_style}"' else: - style = ' style="%s"' % self._linenos_style + style = f' style="{self._linenos_style}"' else: if special_line: style = ' class="special"' @@ -696,7 +693,7 @@ class HtmlFormatter(Formatter): style = ' class="normal"' if style: - line = '%s' % (style, line) + line = f'{line}' lines.append(line) @@ -721,7 +718,7 @@ class HtmlFormatter(Formatter): yield 0, dummyoutfile.getvalue() yield 0, '
' yield 0, '
' - + def _wrap_inlinelinenos(self, inner): # need a list of lines since we need the width of a single number :( @@ -745,9 +742,9 @@ class HtmlFormatter(Formatter): if nocls: if special_line: - style = ' style="%s"' % self._linenos_special_style + style = f' style="{self._linenos_special_style}"' else: - style = ' style="%s"' % self._linenos_style + style = f' style="{self._linenos_style}"' else: if special_line: style = ' class="linenos special"' @@ -755,7 +752,7 @@ class HtmlFormatter(Formatter): style = ' class="linenos"' if style: - linenos = '%s' % (style, line) + linenos = f'{line}' else: linenos = line @@ -792,13 +789,13 @@ class HtmlFormatter(Formatter): style = [] if (self.noclasses and not self.nobackground and self.style.background_color is not None): - style.append('background: %s' % (self.style.background_color,)) + style.append(f'background: {self.style.background_color}') if self.cssstyles: style.append(self.cssstyles) style = '; '.join(style) - yield 0, ('') + yield 0, ('') yield from inner yield 0, '
\n' @@ -815,7 +812,7 @@ class HtmlFormatter(Formatter): # the empty span here is to keep leading empty lines from being # ignored by HTML parsers - yield 0, ('') + yield 0, ('') yield from inner yield 0, '
' @@ -844,18 +841,18 @@ class HtmlFormatter(Formatter): try: cspan = self.span_element_openers[ttype] except KeyError: - title = ' title="%s"' % '.'.join(ttype) if self.debug_token_types else '' + title = ' title="{}"'.format('.'.join(ttype)) if self.debug_token_types else '' if nocls: css_style = self._get_css_inline_styles(ttype) if css_style: css_style = self.class2style[css_style][0] - cspan = '' % (css_style, title) + cspan = f'' else: cspan = '' else: css_class = self._get_css_classes(ttype) if css_class: - cspan = '' % (css_class, title) + cspan = f'' else: cspan = '' self.span_element_openers[ttype] = cspan @@ -878,10 +875,12 @@ class HtmlFormatter(Formatter): # for all but the last line for part in parts[:-1]: if line: - if lspan != cspan: + # Also check for part being non-empty, so we avoid creating + # empty tags + if lspan != cspan and part: line.extend(((lspan and ''), cspan, part, (cspan and ''), lsep)) - else: # both are the same + else: # both are the same, or the current part was empty line.extend((part, (lspan and ''), lsep)) yield 1, ''.join(line) line = [] @@ -908,7 +907,7 @@ class HtmlFormatter(Formatter): def _lookup_ctag(self, token): entry = ctags.TagEntry() if self._ctags.find(entry, token.encode(), 0): - return entry['file'], entry['lineNumber'] + return entry['file'].decode(), entry['lineNumber'] else: return None, None @@ -926,11 +925,10 @@ class HtmlFormatter(Formatter): if self.noclasses: style = '' if self.style.highlight_color is not None: - style = (' style="background-color: %s"' % - (self.style.highlight_color,)) - yield 1, '%s' % (style, value) + style = (f' style="background-color: {self.style.highlight_color}"') + yield 1, f'{value}' else: - yield 1, '%s' % value + yield 1, f'{value}' else: yield 1, value @@ -944,9 +942,9 @@ class HtmlFormatter(Formatter): output = source if self.wrapcode: output = self._wrap_code(output) - + output = self._wrap_pre(output) - + return output def format_unencoded(self, tokensource, outfile): diff --git a/gestao_raul/Lib/site-packages/pip/_vendor/pygments/formatters/img.py b/gestao_raul/Lib/site-packages/pip/_vendor/pygments/formatters/img.py index 0f36a32..7542cfa 100644 --- a/gestao_raul/Lib/site-packages/pip/_vendor/pygments/formatters/img.py +++ b/gestao_raul/Lib/site-packages/pip/_vendor/pygments/formatters/img.py @@ -4,10 +4,9 @@ Formatter for Pixmap output. - :copyright: Copyright 2006-2022 by the Pygments team, see AUTHORS. + :copyright: Copyright 2006-2024 by the Pygments team, see AUTHORS. :license: BSD, see LICENSE for details. """ - import os import sys @@ -68,6 +67,15 @@ class FontManager: self.font_size = font_size self.fonts = {} self.encoding = None + self.variable = False + if hasattr(font_name, 'read') or os.path.isfile(font_name): + font = ImageFont.truetype(font_name, self.font_size) + self.variable = True + for style in STYLES: + self.fonts[style] = font + + return + if sys.platform.startswith('win'): if not font_name: self.font_name = DEFAULT_FONT_NAME_WIN @@ -82,7 +90,7 @@ class FontManager: self._create_nix() def _get_nix_font_path(self, name, style): - proc = subprocess.Popen(['fc-list', "%s:style=%s" % (name, style), 'file'], + proc = subprocess.Popen(['fc-list', f"{name}:style={style}", 'file'], stdout=subprocess.PIPE, stderr=None) stdout, _ = proc.communicate() if proc.returncode == 0: @@ -102,8 +110,7 @@ class FontManager: self.fonts['NORMAL'] = ImageFont.truetype(path, self.font_size) break else: - raise FontNotFound('No usable fonts named: "%s"' % - self.font_name) + raise FontNotFound(f'No usable fonts named: "{self.font_name}"') for style in ('ITALIC', 'BOLD', 'BOLDITALIC'): for stylename in STYLES[style]: path = self._get_nix_font_path(self.font_name, stylename) @@ -134,8 +141,7 @@ class FontManager: self.fonts['NORMAL'] = ImageFont.truetype(path, self.font_size) break else: - raise FontNotFound('No usable fonts named: "%s"' % - self.font_name) + raise FontNotFound(f'No usable fonts named: "{self.font_name}"') for style in ('ITALIC', 'BOLD', 'BOLDITALIC'): for stylename in STYLES[style]: path = self._get_mac_font_path(font_map, self.font_name, stylename) @@ -152,15 +158,14 @@ class FontManager: for suffix in ('', ' (TrueType)'): for style in styles: try: - valname = '%s%s%s' % (basename, style and ' '+style, suffix) + valname = '{}{}{}'.format(basename, style and ' '+style, suffix) val, _ = _winreg.QueryValueEx(key, valname) return val except OSError: continue else: if fail: - raise FontNotFound('Font %s (%s) not found in registry' % - (basename, styles[0])) + raise FontNotFound(f'Font {basename} ({styles[0]}) not found in registry') return None def _create_win(self): @@ -223,14 +228,43 @@ class FontManager: Get the font based on bold and italic flags. """ if bold and oblique: + if self.variable: + return self.get_style('BOLDITALIC') + return self.fonts['BOLDITALIC'] elif bold: + if self.variable: + return self.get_style('BOLD') + return self.fonts['BOLD'] elif oblique: + if self.variable: + return self.get_style('ITALIC') + return self.fonts['ITALIC'] else: + if self.variable: + return self.get_style('NORMAL') + return self.fonts['NORMAL'] + def get_style(self, style): + """ + Get the specified style of the font if it is a variable font. + If not found, return the normal font. + """ + font = self.fonts[style] + for style_name in STYLES[style]: + try: + font.set_variation_by_name(style_name) + return font + except ValueError: + pass + except OSError: + return font + + return font + class ImageFormatter(Formatter): """ @@ -258,6 +292,8 @@ class ImageFormatter(Formatter): The font name to be used as the base font from which others, such as bold and italic fonts will be generated. This really should be a monospace font to look sane. + If a filename or a file-like object is specified, the user must + provide different styles of the font. Default: "Courier New" on Windows, "Menlo" on Mac OS, and "DejaVu Sans Mono" on \\*nix @@ -594,7 +630,11 @@ class ImageFormatter(Formatter): fill=self.hl_color) for pos, value, font, text_fg, text_bg in self.drawables: if text_bg: - text_size = draw.textsize(text=value, font=font) + # see deprecations https://pillow.readthedocs.io/en/stable/releasenotes/9.2.0.html#font-size-and-offset-methods + if hasattr(draw, 'textsize'): + text_size = draw.textsize(text=value, font=font) + else: + text_size = font.getbbox(value)[2:] draw.rectangle([pos[0], pos[1], pos[0] + text_size[0], pos[1] + text_size[1]], fill=text_bg) draw.text(pos, value, font=font, fill=text_fg) im.save(outfile, self.image_format.upper()) diff --git a/gestao_raul/Lib/site-packages/pip/_vendor/pygments/formatters/irc.py b/gestao_raul/Lib/site-packages/pip/_vendor/pygments/formatters/irc.py index 3f6d52d..468c287 100644 --- a/gestao_raul/Lib/site-packages/pip/_vendor/pygments/formatters/irc.py +++ b/gestao_raul/Lib/site-packages/pip/_vendor/pygments/formatters/irc.py @@ -4,7 +4,7 @@ Formatter for IRC output - :copyright: Copyright 2006-2022 by the Pygments team, see AUTHORS. + :copyright: Copyright 2006-2024 by the Pygments team, see AUTHORS. :license: BSD, see LICENSE for details. """ @@ -128,38 +128,12 @@ class IRCFormatter(Formatter): self._lineno = 0 def _write_lineno(self, outfile): - self._lineno += 1 - outfile.write("\n%04d: " % self._lineno) - - def _format_unencoded_with_lineno(self, tokensource, outfile): - self._write_lineno(outfile) - - for ttype, value in tokensource: - if value.endswith("\n"): - self._write_lineno(outfile) - value = value[:-1] - color = self.colorscheme.get(ttype) - while color is None: - ttype = ttype.parent - color = self.colorscheme.get(ttype) - if color: - color = color[self.darkbg] - spl = value.split('\n') - for line in spl[:-1]: - self._write_lineno(outfile) - if line: - outfile.write(ircformat(color, line[:-1])) - if spl[-1]: - outfile.write(ircformat(color, spl[-1])) - else: - outfile.write(value) - - outfile.write("\n") + if self.linenos: + self._lineno += 1 + outfile.write("%04d: " % self._lineno) def format_unencoded(self, tokensource, outfile): - if self.linenos: - self._format_unencoded_with_lineno(tokensource, outfile) - return + self._write_lineno(outfile) for ttype, value in tokensource: color = self.colorscheme.get(ttype) @@ -173,6 +147,7 @@ class IRCFormatter(Formatter): if line: outfile.write(ircformat(color, line)) outfile.write('\n') + self._write_lineno(outfile) if spl[-1]: outfile.write(ircformat(color, spl[-1])) else: diff --git a/gestao_raul/Lib/site-packages/pip/_vendor/pygments/formatters/latex.py b/gestao_raul/Lib/site-packages/pip/_vendor/pygments/formatters/latex.py index 4a7375a..0ec9089 100644 --- a/gestao_raul/Lib/site-packages/pip/_vendor/pygments/formatters/latex.py +++ b/gestao_raul/Lib/site-packages/pip/_vendor/pygments/formatters/latex.py @@ -4,7 +4,7 @@ Formatter for LaTeX fancyvrb output. - :copyright: Copyright 2006-2022 by the Pygments team, see AUTHORS. + :copyright: Copyright 2006-2024 by the Pygments team, see AUTHORS. :license: BSD, see LICENSE for details. """ @@ -23,21 +23,21 @@ def escape_tex(text, commandprefix): return text.replace('\\', '\x00'). \ replace('{', '\x01'). \ replace('}', '\x02'). \ - replace('\x00', r'\%sZbs{}' % commandprefix). \ - replace('\x01', r'\%sZob{}' % commandprefix). \ - replace('\x02', r'\%sZcb{}' % commandprefix). \ - replace('^', r'\%sZca{}' % commandprefix). \ - replace('_', r'\%sZus{}' % commandprefix). \ - replace('&', r'\%sZam{}' % commandprefix). \ - replace('<', r'\%sZlt{}' % commandprefix). \ - replace('>', r'\%sZgt{}' % commandprefix). \ - replace('#', r'\%sZsh{}' % commandprefix). \ - replace('%', r'\%sZpc{}' % commandprefix). \ - replace('$', r'\%sZdl{}' % commandprefix). \ - replace('-', r'\%sZhy{}' % commandprefix). \ - replace("'", r'\%sZsq{}' % commandprefix). \ - replace('"', r'\%sZdq{}' % commandprefix). \ - replace('~', r'\%sZti{}' % commandprefix) + replace('\x00', rf'\{commandprefix}Zbs{{}}'). \ + replace('\x01', rf'\{commandprefix}Zob{{}}'). \ + replace('\x02', rf'\{commandprefix}Zcb{{}}'). \ + replace('^', rf'\{commandprefix}Zca{{}}'). \ + replace('_', rf'\{commandprefix}Zus{{}}'). \ + replace('&', rf'\{commandprefix}Zam{{}}'). \ + replace('<', rf'\{commandprefix}Zlt{{}}'). \ + replace('>', rf'\{commandprefix}Zgt{{}}'). \ + replace('#', rf'\{commandprefix}Zsh{{}}'). \ + replace('%', rf'\{commandprefix}Zpc{{}}'). \ + replace('$', rf'\{commandprefix}Zdl{{}}'). \ + replace('-', rf'\{commandprefix}Zhy{{}}'). \ + replace("'", rf'\{commandprefix}Zsq{{}}'). \ + replace('"', rf'\{commandprefix}Zdq{{}}'). \ + replace('~', rf'\{commandprefix}Zti{{}}') DOC_TEMPLATE = r''' @@ -304,17 +304,14 @@ class LatexFormatter(Formatter): if ndef['mono']: cmndef += r'\let\$$@ff=\textsf' if ndef['color']: - cmndef += (r'\def\$$@tc##1{\textcolor[rgb]{%s}{##1}}' % - rgbcolor(ndef['color'])) + cmndef += (r'\def\$$@tc##1{{\textcolor[rgb]{{{}}}{{##1}}}}'.format(rgbcolor(ndef['color']))) if ndef['border']: - cmndef += (r'\def\$$@bc##1{{\setlength{\fboxsep}{\string -\fboxrule}' - r'\fcolorbox[rgb]{%s}{%s}{\strut ##1}}}' % - (rgbcolor(ndef['border']), + cmndef += (r'\def\$$@bc##1{{{{\setlength{{\fboxsep}}{{\string -\fboxrule}}' + r'\fcolorbox[rgb]{{{}}}{{{}}}{{\strut ##1}}}}}}'.format(rgbcolor(ndef['border']), rgbcolor(ndef['bgcolor']))) elif ndef['bgcolor']: - cmndef += (r'\def\$$@bc##1{{\setlength{\fboxsep}{0pt}' - r'\colorbox[rgb]{%s}{\strut ##1}}}' % - rgbcolor(ndef['bgcolor'])) + cmndef += (r'\def\$$@bc##1{{{{\setlength{{\fboxsep}}{{0pt}}' + r'\colorbox[rgb]{{{}}}{{\strut ##1}}}}}}'.format(rgbcolor(ndef['bgcolor']))) if cmndef == '': continue cmndef = cmndef.replace('$$', cp) @@ -329,7 +326,7 @@ class LatexFormatter(Formatter): cp = self.commandprefix styles = [] for name, definition in self.cmd2def.items(): - styles.append(r'\@namedef{%s@tok@%s}{%s}' % (cp, name, definition)) + styles.append(rf'\@namedef{{{cp}@tok@{name}}}{{{definition}}}') return STYLE_TEMPLATE % {'cp': self.commandprefix, 'styles': '\n'.join(styles)} @@ -410,10 +407,10 @@ class LatexFormatter(Formatter): spl = value.split('\n') for line in spl[:-1]: if line: - outfile.write("\\%s{%s}{%s}" % (cp, styleval, line)) + outfile.write(f"\\{cp}{{{styleval}}}{{{line}}}") outfile.write('\n') if spl[-1]: - outfile.write("\\%s{%s}{%s}" % (cp, styleval, spl[-1])) + outfile.write(f"\\{cp}{{{styleval}}}{{{spl[-1]}}}") else: outfile.write(value) diff --git a/gestao_raul/Lib/site-packages/pip/_vendor/pygments/formatters/other.py b/gestao_raul/Lib/site-packages/pip/_vendor/pygments/formatters/other.py index 1e39cd4..de8d9dc 100644 --- a/gestao_raul/Lib/site-packages/pip/_vendor/pygments/formatters/other.py +++ b/gestao_raul/Lib/site-packages/pip/_vendor/pygments/formatters/other.py @@ -4,7 +4,7 @@ Other formatters: NullFormatter, RawTokenFormatter. - :copyright: Copyright 2006-2022 by the Pygments team, see AUTHORS. + :copyright: Copyright 2006-2024 by the Pygments team, see AUTHORS. :license: BSD, see LICENSE for details. """ @@ -74,8 +74,7 @@ class RawTokenFormatter(Formatter): try: colorize(self.error_color, '') except KeyError: - raise ValueError("Invalid color %r specified" % - self.error_color) + raise ValueError(f"Invalid color {self.error_color!r} specified") def format(self, tokensource, outfile): try: @@ -147,7 +146,7 @@ class TestcaseFormatter(Formatter): outbuf = [] for ttype, value in tokensource: rawbuf.append(value) - outbuf.append('%s(%s, %r),\n' % (indentation, ttype, value)) + outbuf.append(f'{indentation}({ttype}, {value!r}),\n') before = TESTCASE_BEFORE % (''.join(rawbuf),) during = ''.join(outbuf) diff --git a/gestao_raul/Lib/site-packages/pip/_vendor/pygments/formatters/pangomarkup.py b/gestao_raul/Lib/site-packages/pip/_vendor/pygments/formatters/pangomarkup.py index bd00866..dfed53a 100644 --- a/gestao_raul/Lib/site-packages/pip/_vendor/pygments/formatters/pangomarkup.py +++ b/gestao_raul/Lib/site-packages/pip/_vendor/pygments/formatters/pangomarkup.py @@ -4,7 +4,7 @@ Formatter for Pango markup output. - :copyright: Copyright 2006-2022 by the Pygments team, see AUTHORS. + :copyright: Copyright 2006-2024 by the Pygments team, see AUTHORS. :license: BSD, see LICENSE for details. """ @@ -45,7 +45,7 @@ class PangoMarkupFormatter(Formatter): start = '' end = '' if style['color']: - start += '' % style['color'] + start += ''.format(style['color']) end = '' + end if style['bold']: start += '' diff --git a/gestao_raul/Lib/site-packages/pip/_vendor/pygments/formatters/rtf.py b/gestao_raul/Lib/site-packages/pip/_vendor/pygments/formatters/rtf.py index 4114d16..eca2a41 100644 --- a/gestao_raul/Lib/site-packages/pip/_vendor/pygments/formatters/rtf.py +++ b/gestao_raul/Lib/site-packages/pip/_vendor/pygments/formatters/rtf.py @@ -4,12 +4,14 @@ A formatter that generates RTF files. - :copyright: Copyright 2006-2022 by the Pygments team, see AUTHORS. + :copyright: Copyright 2006-2024 by the Pygments team, see AUTHORS. :license: BSD, see LICENSE for details. """ +from collections import OrderedDict from pip._vendor.pygments.formatter import Formatter -from pip._vendor.pygments.util import get_int_opt, surrogatepair +from pip._vendor.pygments.style import _ansimap +from pip._vendor.pygments.util import get_bool_opt, get_int_opt, get_list_opt, surrogatepair __all__ = ['RtfFormatter'] @@ -42,6 +44,59 @@ class RtfFormatter(Formatter): default is 24 half-points, giving a size 12 font. .. versionadded:: 2.0 + + `linenos` + Turn on line numbering (default: ``False``). + + .. versionadded:: 2.18 + + `lineno_fontsize` + Font size for line numbers. Size is specified in half points + (default: `fontsize`). + + .. versionadded:: 2.18 + + `lineno_padding` + Number of spaces between the (inline) line numbers and the + source code (default: ``2``). + + .. versionadded:: 2.18 + + `linenostart` + The line number for the first line (default: ``1``). + + .. versionadded:: 2.18 + + `linenostep` + If set to a number n > 1, only every nth line number is printed. + + .. versionadded:: 2.18 + + `lineno_color` + Color for line numbers specified as a hex triplet, e.g. ``'5e5e5e'``. + Defaults to the style's line number color if it is a hex triplet, + otherwise ansi bright black. + + .. versionadded:: 2.18 + + `hl_lines` + Specify a list of lines to be highlighted, as line numbers separated by + spaces, e.g. ``'3 7 8'``. The line numbers are relative to the input + (i.e. the first line is line 1) unless `hl_linenostart` is set. + + .. versionadded:: 2.18 + + `hl_color` + Color for highlighting the lines specified in `hl_lines`, specified as + a hex triplet (default: style's `highlight_color`). + + .. versionadded:: 2.18 + + `hl_linenostart` + If set to ``True`` line numbers in `hl_lines` are specified + relative to `linenostart` (default ``False``). + + .. versionadded:: 2.18 """ name = 'RTF' aliases = ['rtf'] @@ -62,6 +117,40 @@ class RtfFormatter(Formatter): Formatter.__init__(self, **options) self.fontface = options.get('fontface') or '' self.fontsize = get_int_opt(options, 'fontsize', 0) + self.linenos = get_bool_opt(options, 'linenos', False) + self.lineno_fontsize = get_int_opt(options, 'lineno_fontsize', + self.fontsize) + self.lineno_padding = get_int_opt(options, 'lineno_padding', 2) + self.linenostart = abs(get_int_opt(options, 'linenostart', 1)) + self.linenostep = abs(get_int_opt(options, 'linenostep', 1)) + self.hl_linenostart = get_bool_opt(options, 'hl_linenostart', False) + + self.hl_color = options.get('hl_color', '') + if not self.hl_color: + self.hl_color = self.style.highlight_color + + self.hl_lines = [] + for lineno in get_list_opt(options, 'hl_lines', []): + try: + lineno = int(lineno) + if self.hl_linenostart: + lineno = lineno - self.linenostart + 1 + self.hl_lines.append(lineno) + except ValueError: + pass + + self.lineno_color = options.get('lineno_color', '') + if not self.lineno_color: + if self.style.line_number_color == 'inherit': + # style color is the css value 'inherit' + # default to ansi bright-black + self.lineno_color = _ansimap['ansibrightblack'] + else: + # style color is assumed to be a hex triplet as other + # colors in pygments/style.py + self.lineno_color = self.style.line_number_color + + self.color_mapping = self._create_color_mapping() def _escape(self, text): return text.replace('\\', '\\\\') \ @@ -90,43 +179,145 @@ class RtfFormatter(Formatter): # Force surrogate pairs buf.append('{\\u%d}{\\u%d}' % surrogatepair(cn)) - return ''.join(buf).replace('\n', '\\par\n') + return ''.join(buf).replace('\n', '\\par') - def format_unencoded(self, tokensource, outfile): - # rtf 1.8 header - outfile.write('{\\rtf1\\ansi\\uc0\\deff0' - '{\\fonttbl{\\f0\\fmodern\\fprq1\\fcharset0%s;}}' - '{\\colortbl;' % (self.fontface and - ' ' + self._escape(self.fontface) or - '')) + @staticmethod + def hex_to_rtf_color(hex_color): + if hex_color[0] == "#": + hex_color = hex_color[1:] - # convert colors and save them in a mapping to access them later. - color_mapping = {} + return '\\red%d\\green%d\\blue%d;' % ( + int(hex_color[0:2], 16), + int(hex_color[2:4], 16), + int(hex_color[4:6], 16) + ) + + def _split_tokens_on_newlines(self, tokensource): + """ + Split tokens containing newline characters into multiple token + each representing a line of the input file. Needed for numbering + lines of e.g. multiline comments. + """ + for ttype, value in tokensource: + if value == '\n': + yield (ttype, value) + elif "\n" in value: + lines = value.split("\n") + for line in lines[:-1]: + yield (ttype, line+"\n") + if lines[-1]: + yield (ttype, lines[-1]) + else: + yield (ttype, value) + + def _create_color_mapping(self): + """ + Create a mapping of style hex colors to index/offset in + the RTF color table. + """ + color_mapping = OrderedDict() offset = 1 + + if self.linenos: + color_mapping[self.lineno_color] = offset + offset += 1 + + if self.hl_lines: + color_mapping[self.hl_color] = offset + offset += 1 + for _, style in self.style: for color in style['color'], style['bgcolor'], style['border']: if color and color not in color_mapping: color_mapping[color] = offset - outfile.write('\\red%d\\green%d\\blue%d;' % ( - int(color[0:2], 16), - int(color[2:4], 16), - int(color[4:6], 16) - )) offset += 1 - outfile.write('}\\f0 ') + + return color_mapping + + @property + def _lineno_template(self): + if self.lineno_fontsize != self.fontsize: + return '{{\\fs{} \\cf{} %s{}}}'.format(self.lineno_fontsize, + self.color_mapping[self.lineno_color], + " " * self.lineno_padding) + + return '{{\\cf{} %s{}}}'.format(self.color_mapping[self.lineno_color], + " " * self.lineno_padding) + + @property + def _hl_open_str(self): + return rf'{{\highlight{self.color_mapping[self.hl_color]} ' + + @property + def _rtf_header(self): + lines = [] + # rtf 1.8 header + lines.append('{\\rtf1\\ansi\\uc0\\deff0' + '{\\fonttbl{\\f0\\fmodern\\fprq1\\fcharset0%s;}}' + % (self.fontface and ' ' + + self._escape(self.fontface) or '')) + + # color table + lines.append('{\\colortbl;') + for color, _ in self.color_mapping.items(): + lines.append(self.hex_to_rtf_color(color)) + lines.append('}') + + # font and fontsize + lines.append('\\f0\\sa0') if self.fontsize: - outfile.write('\\fs%d' % self.fontsize) + lines.append('\\fs%d' % self.fontsize) + + # ensure Libre Office Writer imports and renders consecutive + # space characters the same width, needed for line numbering. + # https://bugs.documentfoundation.org/show_bug.cgi?id=144050 + lines.append('\\dntblnsbdb') + + return lines + + def format_unencoded(self, tokensource, outfile): + for line in self._rtf_header: + outfile.write(line + "\n") + + tokensource = self._split_tokens_on_newlines(tokensource) + + # first pass of tokens to count lines, needed for line numbering + if self.linenos: + line_count = 0 + tokens = [] # for copying the token source generator + for ttype, value in tokensource: + tokens.append((ttype, value)) + if value.endswith("\n"): + line_count += 1 + + # width of line number strings (for padding with spaces) + linenos_width = len(str(line_count+self.linenostart-1)) + + tokensource = tokens # highlight stream + lineno = 1 + start_new_line = True for ttype, value in tokensource: + if start_new_line and lineno in self.hl_lines: + outfile.write(self._hl_open_str) + + if start_new_line and self.linenos: + if (lineno-self.linenostart+1)%self.linenostep == 0: + current_lineno = lineno + self.linenostart - 1 + lineno_str = str(current_lineno).rjust(linenos_width) + else: + lineno_str = "".rjust(linenos_width) + outfile.write(self._lineno_template % lineno_str) + while not self.style.styles_token(ttype) and ttype.parent: ttype = ttype.parent style = self.style.style_for_token(ttype) buf = [] if style['bgcolor']: - buf.append('\\cb%d' % color_mapping[style['bgcolor']]) + buf.append('\\cb%d' % self.color_mapping[style['bgcolor']]) if style['color']: - buf.append('\\cf%d' % color_mapping[style['color']]) + buf.append('\\cf%d' % self.color_mapping[style['color']]) if style['bold']: buf.append('\\b') if style['italic']: @@ -135,12 +326,24 @@ class RtfFormatter(Formatter): buf.append('\\ul') if style['border']: buf.append('\\chbrdr\\chcfpat%d' % - color_mapping[style['border']]) + self.color_mapping[style['border']]) start = ''.join(buf) if start: - outfile.write('{%s ' % start) + outfile.write(f'{{{start} ') outfile.write(self._escape_text(value)) if start: outfile.write('}') + start_new_line = False - outfile.write('}') + # complete line of input + if value.endswith("\n"): + # close line highlighting + if lineno in self.hl_lines: + outfile.write('}') + # newline in RTF file after closing } + outfile.write("\n") + + start_new_line = True + lineno += 1 + + outfile.write('}\n') diff --git a/gestao_raul/Lib/site-packages/pip/_vendor/pygments/formatters/svg.py b/gestao_raul/Lib/site-packages/pip/_vendor/pygments/formatters/svg.py index 075150a..d3e018f 100644 --- a/gestao_raul/Lib/site-packages/pip/_vendor/pygments/formatters/svg.py +++ b/gestao_raul/Lib/site-packages/pip/_vendor/pygments/formatters/svg.py @@ -4,7 +4,7 @@ Formatter for SVG output. - :copyright: Copyright 2006-2022 by the Pygments team, see AUTHORS. + :copyright: Copyright 2006-2024 by the Pygments team, see AUTHORS. :license: BSD, see LICENSE for details. """ @@ -60,11 +60,11 @@ class SvgFormatter(Formatter): `linenostep` If set to a number n > 1, only every nth line number is printed. - + `linenowidth` Maximum width devoted to line numbers (default: ``3*ystep``, sufficient - for up to 4-digit line numbers. Increase width for longer code blocks). - + for up to 4-digit line numbers. Increase width for longer code blocks). + `xoffset` Starting offset in X direction, defaults to ``0``. @@ -97,10 +97,11 @@ class SvgFormatter(Formatter): self.fontsize = options.get('fontsize', '14px') self.xoffset = get_int_opt(options, 'xoffset', 0) fs = self.fontsize.strip() - if fs.endswith('px'): fs = fs[:-2].strip() + if fs.endswith('px'): + fs = fs[:-2].strip() try: int_fs = int(fs) - except: + except ValueError: int_fs = 20 self.yoffset = get_int_opt(options, 'yoffset', int_fs) self.ystep = get_int_opt(options, 'ystep', int_fs + 5) @@ -122,30 +123,27 @@ class SvgFormatter(Formatter): y = self.yoffset if not self.nowrap: if self.encoding: - outfile.write('\n' % - self.encoding) + outfile.write(f'\n') else: outfile.write('\n') outfile.write('\n') outfile.write('\n') - outfile.write('\n' % - (self.fontfamily, self.fontsize)) - - counter = self.linenostart + outfile.write(f'\n') + + counter = self.linenostart counter_step = self.linenostep counter_style = self._get_style(Comment) line_x = x - + if self.linenos: if counter % counter_step == 0: - outfile.write('%s' % - (x+self.linenowidth,y,counter_style,counter)) + outfile.write(f'{counter}') line_x += self.linenowidth + self.ystep counter += 1 - outfile.write('' % (line_x, y)) + outfile.write(f'') for ttype, value in tokensource: style = self._get_style(ttype) tspan = style and '' or '' @@ -159,11 +157,10 @@ class SvgFormatter(Formatter): y += self.ystep outfile.write('\n') if self.linenos and counter % counter_step == 0: - outfile.write('%s' % - (x+self.linenowidth,y,counter_style,counter)) - + outfile.write(f'{counter}') + counter += 1 - outfile.write('' % (line_x,y)) + outfile.write(f'') outfile.write(tspan + parts[-1] + tspanend) outfile.write('') diff --git a/gestao_raul/Lib/site-packages/pip/_vendor/pygments/formatters/terminal.py b/gestao_raul/Lib/site-packages/pip/_vendor/pygments/formatters/terminal.py index e0bda16..51b902d 100644 --- a/gestao_raul/Lib/site-packages/pip/_vendor/pygments/formatters/terminal.py +++ b/gestao_raul/Lib/site-packages/pip/_vendor/pygments/formatters/terminal.py @@ -4,7 +4,7 @@ Formatter for terminal output with ANSI sequences. - :copyright: Copyright 2006-2022 by the Pygments team, see AUTHORS. + :copyright: Copyright 2006-2024 by the Pygments team, see AUTHORS. :license: BSD, see LICENSE for details. """ diff --git a/gestao_raul/Lib/site-packages/pip/_vendor/pygments/formatters/terminal256.py b/gestao_raul/Lib/site-packages/pip/_vendor/pygments/formatters/terminal256.py index 201b3c3..5f25405 100644 --- a/gestao_raul/Lib/site-packages/pip/_vendor/pygments/formatters/terminal256.py +++ b/gestao_raul/Lib/site-packages/pip/_vendor/pygments/formatters/terminal256.py @@ -10,7 +10,7 @@ Formatter version 1. - :copyright: Copyright 2006-2022 by the Pygments team, see AUTHORS. + :copyright: Copyright 2006-2024 by the Pygments team, see AUTHORS. :license: BSD, see LICENSE for details. """ diff --git a/gestao_raul/Lib/site-packages/pip/_vendor/pygments/lexer.py b/gestao_raul/Lib/site-packages/pip/_vendor/pygments/lexer.py index ec7f4de..1348be5 100644 --- a/gestao_raul/Lib/site-packages/pip/_vendor/pygments/lexer.py +++ b/gestao_raul/Lib/site-packages/pip/_vendor/pygments/lexer.py @@ -4,7 +4,7 @@ Base lexer classes. - :copyright: Copyright 2006-2022 by the Pygments team, see AUTHORS. + :copyright: Copyright 2006-2024 by the Pygments team, see AUTHORS. :license: BSD, see LICENSE for details. """ @@ -14,15 +14,16 @@ import time from pip._vendor.pygments.filter import apply_filters, Filter from pip._vendor.pygments.filters import get_filter_by_name -from pip._vendor.pygments.token import Error, Text, Other, _TokenType +from pip._vendor.pygments.token import Error, Text, Other, Whitespace, _TokenType from pip._vendor.pygments.util import get_bool_opt, get_int_opt, get_list_opt, \ make_analysator, Future, guess_decode from pip._vendor.pygments.regexopt import regex_opt __all__ = ['Lexer', 'RegexLexer', 'ExtendedRegexLexer', 'DelegatingLexer', 'LexerContext', 'include', 'inherit', 'bygroups', 'using', 'this', - 'default', 'words'] + 'default', 'words', 'line_re'] +line_re = re.compile('.*?\n') _encoding_map = [(b'\xef\xbb\xbf', 'utf-8'), (b'\xff\xfe\0\0', 'utf-32'), @@ -49,7 +50,38 @@ class Lexer(metaclass=LexerMeta): """ Lexer for a specific language. - Basic options recognized: + See also :doc:`lexerdevelopment`, a high-level guide to writing + lexers. + + Lexer classes have attributes used for choosing the most appropriate + lexer based on various criteria. + + .. autoattribute:: name + :no-value: + .. autoattribute:: aliases + :no-value: + .. autoattribute:: filenames + :no-value: + .. autoattribute:: alias_filenames + .. autoattribute:: mimetypes + :no-value: + .. autoattribute:: priority + + Lexers included in Pygments should have two additional attributes: + + .. autoattribute:: url + :no-value: + .. autoattribute:: version_added + :no-value: + + Lexers included in Pygments may have additional attributes: + + .. autoattribute:: _example + :no-value: + + You can pass options to the constructor. The basic options recognized + by all lexers and processed by the base `Lexer` class are: + ``stripnl`` Strip leading and trailing newlines from the input (default: True). ``stripall`` @@ -73,28 +105,62 @@ class Lexer(metaclass=LexerMeta): Overrides the ``encoding`` if given. """ - #: Name of the lexer + #: Full name of the lexer, in human-readable form name = None - #: URL of the language specification/definition - url = None - - #: Shortcuts for the lexer + #: A list of short, unique identifiers that can be used to look + #: up the lexer from a list, e.g., using `get_lexer_by_name()`. aliases = [] - #: File name globs + #: A list of `fnmatch` patterns that match filenames which contain + #: content for this lexer. The patterns in this list should be unique among + #: all lexers. filenames = [] - #: Secondary file name globs + #: A list of `fnmatch` patterns that match filenames which may or may not + #: contain content for this lexer. This list is used by the + #: :func:`.guess_lexer_for_filename()` function, to determine which lexers + #: are then included in guessing the correct one. That means that + #: e.g. every lexer for HTML and a template language should include + #: ``\*.html`` in this list. alias_filenames = [] - #: MIME types + #: A list of MIME types for content that can be lexed with this lexer. mimetypes = [] #: Priority, should multiple lexers match and no content is provided priority = 0 + #: URL of the language specification/definition. Used in the Pygments + #: documentation. Set to an empty string to disable. + url = None + + #: Version of Pygments in which the lexer was added. + version_added = None + + #: Example file name. Relative to the ``tests/examplefiles`` directory. + #: This is used by the documentation generator to show an example. + _example = None + def __init__(self, **options): + """ + This constructor takes arbitrary options as keyword arguments. + Every subclass must first process its own options and then call + the `Lexer` constructor, since it processes the basic + options like `stripnl`. + + An example looks like this: + + .. sourcecode:: python + + def __init__(self, **options): + self.compress = options.get('compress', '') + Lexer.__init__(self, **options) + + As these options must all be specifiable as strings (due to the + command line usage), there are various utility functions + available to help with that, see `Utilities`_. + """ self.options = options self.stripnl = get_bool_opt(options, 'stripnl', True) self.stripall = get_bool_opt(options, 'stripall', False) @@ -108,10 +174,9 @@ class Lexer(metaclass=LexerMeta): def __repr__(self): if self.options: - return '' % (self.__class__.__name__, - self.options) + return f'' else: - return '' % self.__class__.__name__ + return f'' def add_filter(self, filter_, **options): """ @@ -123,10 +188,13 @@ class Lexer(metaclass=LexerMeta): def analyse_text(text): """ - Has to return a float between ``0`` and ``1`` that indicates - if a lexer wants to highlight this text. Used by ``guess_lexer``. - If this method returns ``0`` it won't highlight it in any case, if - it returns ``1`` highlighting with this lexer is guaranteed. + A static method which is called for lexer guessing. + + It should analyse the text and return a float in the range + from ``0.0`` to ``1.0``. If it returns ``0.0``, the lexer + will not be selected as the most probable one, if it returns + ``1.0``, it will be selected immediately. This is used by + `guess_lexer`. The `LexerMeta` metaclass automatically wraps this function so that it works like a static method (no ``self`` or ``cls`` @@ -135,21 +203,17 @@ class Lexer(metaclass=LexerMeta): it's the same as if the return values was ``0.0``. """ - def get_tokens(self, text, unfiltered=False): - """ - Return an iterable of (tokentype, value) pairs generated from - `text`. If `unfiltered` is set to `True`, the filtering mechanism - is bypassed even if filters are defined. + def _preprocess_lexer_input(self, text): + """Apply preprocessing such as decoding the input, removing BOM and normalizing newlines.""" - Also preprocess the text, i.e. expand tabs and strip it if - wanted and applies registered filters. - """ if not isinstance(text, str): if self.encoding == 'guess': text, _ = guess_decode(text) elif self.encoding == 'chardet': try: - from pip._vendor import chardet + # pip vendoring note: this code is not reachable by pip, + # removed import of chardet to make it clear. + raise ImportError('chardet is not vendored by pip') except ImportError as e: raise ImportError('To enable chardet encoding guessing, ' 'please install the chardet library ' @@ -186,6 +250,24 @@ class Lexer(metaclass=LexerMeta): if self.ensurenl and not text.endswith('\n'): text += '\n' + return text + + def get_tokens(self, text, unfiltered=False): + """ + This method is the basic interface of a lexer. It is called by + the `highlight()` function. It must process the text and return an + iterable of ``(tokentype, value)`` pairs from `text`. + + Normally, you don't need to override this method. The default + implementation processes the options recognized by all lexers + (`stripnl`, `stripall` and so on), and then yields all tokens + from `get_tokens_unprocessed()`, with the ``index`` dropped. + + If `unfiltered` is set to `True`, the filtering mechanism is + bypassed even if filters are defined. + """ + text = self._preprocess_lexer_input(text) + def streamer(): for _, t, v in self.get_tokens_unprocessed(text): yield t, v @@ -196,11 +278,12 @@ class Lexer(metaclass=LexerMeta): def get_tokens_unprocessed(self, text): """ - Return an iterable of (index, tokentype, value) pairs where "index" - is the starting position of the token within the input text. + This method should process the text and return an iterable of + ``(index, tokentype, value)`` tuples where ``index`` is the starting + position of the token within the input text. - In subclasses, implement this method as a generator to - maximize effectiveness. + It must be overridden by subclasses. It is recommended to + implement it as a generator to maximize effectiveness. """ raise NotImplementedError @@ -429,7 +512,7 @@ class RegexLexerMeta(LexerMeta): def _process_token(cls, token): """Preprocess the token component of a token definition.""" assert type(token) is _TokenType or callable(token), \ - 'token type must be simple type or callable, not %r' % (token,) + f'token type must be simple type or callable, not {token!r}' return token def _process_new_state(cls, new_state, unprocessed, processed): @@ -445,14 +528,14 @@ class RegexLexerMeta(LexerMeta): elif new_state[:5] == '#pop:': return -int(new_state[5:]) else: - assert False, 'unknown new state %r' % new_state + assert False, f'unknown new state {new_state!r}' elif isinstance(new_state, combined): # combine a new state from existing ones tmp_state = '_tmp_%d' % cls._tmpname cls._tmpname += 1 itokens = [] for istate in new_state: - assert istate != new_state, 'circular state ref %r' % istate + assert istate != new_state, f'circular state ref {istate!r}' itokens.extend(cls._process_state(unprocessed, processed, istate)) processed[tmp_state] = itokens @@ -465,12 +548,12 @@ class RegexLexerMeta(LexerMeta): 'unknown new state ' + istate return new_state else: - assert False, 'unknown new state def %r' % new_state + assert False, f'unknown new state def {new_state!r}' def _process_state(cls, unprocessed, processed, state): """Preprocess a single state definition.""" - assert type(state) is str, "wrong state name %r" % state - assert state[0] != '#', "invalid state name %r" % state + assert isinstance(state, str), f"wrong state name {state!r}" + assert state[0] != '#', f"invalid state name {state!r}" if state in processed: return processed[state] tokens = processed[state] = [] @@ -478,7 +561,7 @@ class RegexLexerMeta(LexerMeta): for tdef in unprocessed[state]: if isinstance(tdef, include): # it's a state reference - assert tdef != state, "circular state reference %r" % state + assert tdef != state, f"circular state reference {state!r}" tokens.extend(cls._process_state(unprocessed, processed, str(tdef))) continue @@ -492,13 +575,12 @@ class RegexLexerMeta(LexerMeta): tokens.append((re.compile('').match, None, new_state)) continue - assert type(tdef) is tuple, "wrong rule def %r" % tdef + assert type(tdef) is tuple, f"wrong rule def {tdef!r}" try: rex = cls._process_regex(tdef[0], rflags, state) except Exception as err: - raise ValueError("uncompilable regex %r in state %r of %r: %s" % - (tdef[0], state, cls, err)) from err + raise ValueError(f"uncompilable regex {tdef[0]!r} in state {state!r} of {cls!r}: {err}") from err token = cls._process_token(tdef[1]) @@ -659,7 +741,7 @@ class RegexLexer(Lexer, metaclass=RegexLexerMeta): elif new_state == '#push': statestack.append(statestack[-1]) else: - assert False, "wrong state def: %r" % new_state + assert False, f"wrong state def: {new_state!r}" statetokens = tokendefs[statestack[-1]] break else: @@ -670,7 +752,7 @@ class RegexLexer(Lexer, metaclass=RegexLexerMeta): # at EOL, reset state to "root" statestack = ['root'] statetokens = tokendefs['root'] - yield pos, Text, '\n' + yield pos, Whitespace, '\n' pos += 1 continue yield pos, Error, text[pos] @@ -691,8 +773,7 @@ class LexerContext: self.stack = stack or ['root'] def __repr__(self): - return 'LexerContext(%r, %r, %r)' % ( - self.text, self.pos, self.stack) + return f'LexerContext({self.text!r}, {self.pos!r}, {self.stack!r})' class ExtendedRegexLexer(RegexLexer): @@ -747,7 +828,7 @@ class ExtendedRegexLexer(RegexLexer): elif new_state == '#push': ctx.stack.append(ctx.stack[-1]) else: - assert False, "wrong state def: %r" % new_state + assert False, f"wrong state def: {new_state!r}" statetokens = tokendefs[ctx.stack[-1]] break else: diff --git a/gestao_raul/Lib/site-packages/pip/_vendor/pygments/lexers/__init__.py b/gestao_raul/Lib/site-packages/pip/_vendor/pygments/lexers/__init__.py index ed69f24..ac88645 100644 --- a/gestao_raul/Lib/site-packages/pip/_vendor/pygments/lexers/__init__.py +++ b/gestao_raul/Lib/site-packages/pip/_vendor/pygments/lexers/__init__.py @@ -4,14 +4,14 @@ Pygments lexers. - :copyright: Copyright 2006-2022 by the Pygments team, see AUTHORS. + :copyright: Copyright 2006-2024 by the Pygments team, see AUTHORS. :license: BSD, see LICENSE for details. """ import re import sys import types -from fnmatch import fnmatch +import fnmatch from os.path import basename from pip._vendor.pygments.lexers._mapping import LEXERS @@ -22,12 +22,23 @@ from pip._vendor.pygments.util import ClassNotFound, guess_decode COMPAT = { 'Python3Lexer': 'PythonLexer', 'Python3TracebackLexer': 'PythonTracebackLexer', + 'LeanLexer': 'Lean3Lexer', } __all__ = ['get_lexer_by_name', 'get_lexer_for_filename', 'find_lexer_class', 'guess_lexer', 'load_lexer_from_file'] + list(LEXERS) + list(COMPAT) _lexer_cache = {} +_pattern_cache = {} + + +def _fn_matches(fn, glob): + """Return whether the supplied file name fn matches pattern filename.""" + if glob not in _pattern_cache: + pattern = _pattern_cache[glob] = re.compile(fnmatch.translate(glob)) + return pattern.match(fn) + return _pattern_cache[glob].match(fn) + def _load_lexers(module_name): """Load a lexer (and all others in the module too).""" @@ -52,9 +63,9 @@ def get_all_lexers(plugins=True): def find_lexer_class(name): - """Lookup a lexer class by name. - - Return None if not found. + """ + Return the `Lexer` subclass that with the *name* attribute as given by + the *name* argument. """ if name in _lexer_cache: return _lexer_cache[name] @@ -70,14 +81,19 @@ def find_lexer_class(name): def find_lexer_class_by_name(_alias): - """Lookup a lexer class by alias. + """ + Return the `Lexer` subclass that has `alias` in its aliases list, without + instantiating it. Like `get_lexer_by_name`, but does not instantiate the class. + Will raise :exc:`pygments.util.ClassNotFound` if no lexer with that alias is + found. + .. versionadded:: 2.2 """ if not _alias: - raise ClassNotFound('no lexer for alias %r found' % _alias) + raise ClassNotFound(f'no lexer for alias {_alias!r} found') # lookup builtin lexers for module_name, name, aliases, _, _ in LEXERS.values(): if _alias.lower() in aliases: @@ -88,16 +104,20 @@ def find_lexer_class_by_name(_alias): for cls in find_plugin_lexers(): if _alias.lower() in cls.aliases: return cls - raise ClassNotFound('no lexer for alias %r found' % _alias) + raise ClassNotFound(f'no lexer for alias {_alias!r} found') def get_lexer_by_name(_alias, **options): - """Get a lexer by an alias. + """ + Return an instance of a `Lexer` subclass that has `alias` in its + aliases list. The lexer is given the `options` at its + instantiation. - Raises ClassNotFound if not found. + Will raise :exc:`pygments.util.ClassNotFound` if no lexer with that alias is + found. """ if not _alias: - raise ClassNotFound('no lexer for alias %r found' % _alias) + raise ClassNotFound(f'no lexer for alias {_alias!r} found') # lookup builtin lexers for module_name, name, aliases, _, _ in LEXERS.values(): @@ -109,7 +129,7 @@ def get_lexer_by_name(_alias, **options): for cls in find_plugin_lexers(): if _alias.lower() in cls.aliases: return cls(**options) - raise ClassNotFound('no lexer for alias %r found' % _alias) + raise ClassNotFound(f'no lexer for alias {_alias!r} found') def load_lexer_from_file(filename, lexername="CustomLexer", **options): @@ -134,17 +154,16 @@ def load_lexer_from_file(filename, lexername="CustomLexer", **options): exec(f.read(), custom_namespace) # Retrieve the class `lexername` from that namespace if lexername not in custom_namespace: - raise ClassNotFound('no valid %s class found in %s' % - (lexername, filename)) + raise ClassNotFound(f'no valid {lexername} class found in {filename}') lexer_class = custom_namespace[lexername] # And finally instantiate it with the options return lexer_class(**options) except OSError as err: - raise ClassNotFound('cannot read %s: %s' % (filename, err)) + raise ClassNotFound(f'cannot read {filename}: {err}') except ClassNotFound: raise except Exception as err: - raise ClassNotFound('error when loading custom lexer: %s' % err) + raise ClassNotFound(f'error when loading custom lexer: {err}') def find_lexer_class_for_filename(_fn, code=None): @@ -159,13 +178,13 @@ def find_lexer_class_for_filename(_fn, code=None): fn = basename(_fn) for modname, name, _, filenames, _ in LEXERS.values(): for filename in filenames: - if fnmatch(fn, filename): + if _fn_matches(fn, filename): if name not in _lexer_cache: _load_lexers(modname) matches.append((_lexer_cache[name], filename)) for cls in find_plugin_lexers(): for filename in cls.filenames: - if fnmatch(fn, filename): + if _fn_matches(fn, filename): matches.append((cls, filename)) if isinstance(code, bytes): @@ -193,21 +212,29 @@ def find_lexer_class_for_filename(_fn, code=None): def get_lexer_for_filename(_fn, code=None, **options): """Get a lexer for a filename. - If multiple lexers match the filename pattern, use ``analyse_text()`` to - figure out which one is more appropriate. + Return a `Lexer` subclass instance that has a filename pattern + matching `fn`. The lexer is given the `options` at its + instantiation. - Raises ClassNotFound if not found. + Raise :exc:`pygments.util.ClassNotFound` if no lexer for that filename + is found. + + If multiple lexers match the filename pattern, use their ``analyse_text()`` + methods to figure out which one is more appropriate. """ res = find_lexer_class_for_filename(_fn, code) if not res: - raise ClassNotFound('no lexer for filename %r found' % _fn) + raise ClassNotFound(f'no lexer for filename {_fn!r} found') return res(**options) def get_lexer_for_mimetype(_mime, **options): - """Get a lexer for a mimetype. + """ + Return a `Lexer` subclass instance that has `mime` in its mimetype + list. The lexer is given the `options` at its instantiation. - Raises ClassNotFound if not found. + Will raise :exc:`pygments.util.ClassNotFound` if not lexer for that mimetype + is found. """ for modname, name, _, _, mimetypes in LEXERS.values(): if _mime in mimetypes: @@ -217,7 +244,7 @@ def get_lexer_for_mimetype(_mime, **options): for cls in find_plugin_lexers(): if _mime in cls.mimetypes: return cls(**options) - raise ClassNotFound('no lexer for mimetype %r found' % _mime) + raise ClassNotFound(f'no lexer for mimetype {_mime!r} found') def _iter_lexerclasses(plugins=True): @@ -233,34 +260,26 @@ def _iter_lexerclasses(plugins=True): def guess_lexer_for_filename(_fn, _text, **options): """ - Lookup all lexers that handle those filenames primary (``filenames``) - or secondary (``alias_filenames``). Then run a text analysis for those - lexers and choose the best result. + As :func:`guess_lexer()`, but only lexers which have a pattern in `filenames` + or `alias_filenames` that matches `filename` are taken into consideration. - usage:: - - >>> from pygments.lexers import guess_lexer_for_filename - >>> guess_lexer_for_filename('hello.html', '<%= @foo %>') - - >>> guess_lexer_for_filename('hello.html', '

{{ title|e }}

') - - >>> guess_lexer_for_filename('style.css', 'a { color: }') - + :exc:`pygments.util.ClassNotFound` is raised if no lexer thinks it can + handle the content. """ fn = basename(_fn) primary = {} matching_lexers = set() for lexer in _iter_lexerclasses(): for filename in lexer.filenames: - if fnmatch(fn, filename): + if _fn_matches(fn, filename): matching_lexers.add(lexer) primary[lexer] = True for filename in lexer.alias_filenames: - if fnmatch(fn, filename): + if _fn_matches(fn, filename): matching_lexers.add(lexer) primary[lexer] = False if not matching_lexers: - raise ClassNotFound('no lexer for filename %r found' % fn) + raise ClassNotFound(f'no lexer for filename {fn!r} found') if len(matching_lexers) == 1: return matching_lexers.pop()(**options) result = [] @@ -283,7 +302,15 @@ def guess_lexer_for_filename(_fn, _text, **options): def guess_lexer(_text, **options): - """Guess a lexer by strong distinctions in the text (eg, shebang).""" + """ + Return a `Lexer` subclass instance that's guessed from the text in + `text`. For that, the :meth:`.analyse_text()` method of every known lexer + class is called with the text as argument, and the lexer which returned the + highest value will be instantiated and returned. + + :exc:`pygments.util.ClassNotFound` is raised if no lexer thinks it can + handle the content. + """ if not isinstance(_text, str): inencoding = options.get('inencoding', options.get('encoding')) diff --git a/gestao_raul/Lib/site-packages/pip/_vendor/pygments/lexers/__pycache__/__init__.cpython-310.pyc b/gestao_raul/Lib/site-packages/pip/_vendor/pygments/lexers/__pycache__/__init__.cpython-310.pyc index c3e64da7549d6072ea11a4dfaa3ac03966f565b6..a19299b178f21ca39d85c7b0311b350b85ac5f6b 100644 GIT binary patch delta 4932 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 delta 3822 zcma(TTWlN0@%HX`JRT{Ek|kMhtsbOAOJ*FWbzH-i;y8}o*irmY;D$ybow!Gl^6`$@ zJ2|FIg^BH=K!7wzx9CTa7&cH8O$)R@-4^Iafd*((pg-+TTi|{gpdSVL*S{u!amRYd@ZSH$6;FzB@Z{R$y{Lz{W+!S!(FpOlovfvbsSwxgj#|2yu5}hWVVz(GOTH(+``&1ab+Gge zso2BvEW^5PkYX?EX1jpW$9h;V{O@LcY&ZP(vpsBp4Fbmin`J|67_dRWM%XA|Lu`yu z;2MT|#@Pf=M%W~q0?H`MvK;)6osifxo4Fye8B1BG*OlV9C9fZuuqFqj;*>RRO{5XmXqQcU!}7QW3*IN*j=wZCgGVv|jZE> zoJuTYUI(lxdAbj=)s*@qaWj!^O*dsOgW@O2 zxztHOJv5IRPl=C{y=qG4d&MWok<9mi_>fihq_VBKrgGmZa@#7(fW(xl)FeM5-z7Wj z)4ip&?W2YEdAg}R!n^MwOR1a3Pgwr_NP!qJ9lC8J@nL4TwIeck9t2&C9J>e5e4Nk0 zUl4cee${onFIFBnb_PTT&|ZOGWR6&h^eHK#!?%yfca2z@bQAerN*3ekIqf6h+dLr7 zr;oK}eT6Aa2%NIqC!w>Ouo{pcFk(ytv&d+c3lKCagizx-B5gt8+SK8c+LW5w_9-TB zX|HRq5#Ul9X9BtwSp z>557;qTSQwjGP9F{zi((Bu!Fx_I1A?YhjKZ5Z~^ZA-@nm?h8B$oPz$)x-a87~Nx znGvyXVy(;&HWM) z_M1CISQEELcY_R`->|Jh$@5TalU}7I*LL|KdU)XoowBRWCAu(Ax4xPb$2{*$rT#?{ zteRhc{9s#xrDyqBOn^~I5{c0lJK$e}^0R=nd2wlUhIEPVj~;9tN5TmJ?F!Yw6<7p{ zXZidB?u8WD0R2akKmb;2u=aW8)1=y3V?AKRe(jjt23AlIo-c^T#B}moC<{R_Dtm zQ`l_7wj0F3o2CykYR6u9{>;%O-Xq?b8cv2~_$lNX6u+4oBMaj1Q%{n4kGHFM`nMU5JJK7Q1NJKBACb!zCIqFrIhWhHWi@tf5ZfNC5si zm0MVR4wkB<8`zdo_=U*`XCqmWiT0Tm(_lcNv9PeFyI0Y z(Lzw%fKOb}QCl2b5EW5z5YeZO)69(9Lm6e%_r1~2VSF?1ueyB;c!aL|pTD+KbxxgH zHl4I@{HJ}KQc#eag@5~NpKK}fkgTtmaOpocg!%aCHpSitguzzh_ zvO_>ac3@LEfYk7-XAPAA~RJx<{cZ^ zK?jwrCtuTDC1?5`$Cxf;%etB<4d@=CeNQ)zT}+PClVj(Tv$SB`*DyqdtofBV3{g}S z;81dz6gqa93_5d{cm*!VbZipo-WC2>xvWP5jn`I(5+Tjw)YemX=^Z4Px~H_SlLYA# z*Tx_Wp7f24oV#o4SaKmXZfZFp4OE%7ocx&{pVmaG=~dGg3^>d5%?qe%sp4-7cEnVV zU0adrnm)@$;xsjLIfpq!BG5SZ7wda3$;#qVIVky$<${ymQ zCo5GlEj4GsON4xy`sF$oA?H&6UYHMw<}Y3WF0yzbxq>qPcf){zXoPj8{Yu}cN{(YL zl(bzp%418r!g{N$sYzRSl*fL-QQ{5jY;lJ5i1|sR@2K9mv6QEhMB zMK;i)rnP8mcT*kuIM-B3&ePK78RSr^rFozYnyi-^^HJAb(x8R{-c~*JM`nz>M`5sP{p+E1y%71e~?Kw~RCVpfm=D+%A@-$Rt=&;M-jcSpcB4J| z`O309!brasK_sD5R<)7F)ZSG|f^afy&1|I2Yi=0jV4e_(bB73oTeNpSvm z4YM4Mw9xr-7e;Vco{z5oAulAgsWSf@LO!HDfnhy=fChZHQf`$T4;j|1GtDF?r!Y&- zHkJqLWtVt4WZkv}nLYC}!O5iiUB2`M(fZ&ZPfp(9RZfP64 zDB1sVJu*f6Udpn{(aQ@ms#FiHmGY~AFkIpVDi!p-?Bm43BHM-T19?&AH zQ3{g&qpgGVrb@dHvG>jP6w*ZW9Ly`negji~9qY-Ka+h@IhC<(8S9EPVLz0sdtnYR# z0VgLtcGfp!);DL84sSq@rq;xtCuntmx)VEAbx>BZzZUE$>WKm-2US;MNt@o)q486J z8Io<1n-yR=X%|CU06k=TO{mSX!#Q)9;AKVN=Djn{W7U#!s)LcRY|V-C`D)#R*Nw<4!6akRd+0)^AZ?HZi)92$vkmbL^`Ktam@m@ zE6~C&A2x}a#dQr#^u!`6wn`>4C7A?ohJhGjUzTI81fy#;4rd>A?ZSDfJu%z09?EDp zr=Chw*$`xZNiM^@EV=O@*_`_2#({*~Lwm3DkbQKjpxU!NRZJVDO<~#uV*tef$)Ccf(i|`FX>t zVZ2CR6j4K3AQU$)mimAy8%Lwm&W)d7(CwSf+Q@ENzhzMgJ7uLEwPg)8Z10F8bYk+FSPH81mn@ z;Al6EmfkKQTHJd3IIUya>9lKUz>qtc1}=po?O{6kKmLUxleRyY zD-|rofxRIh2kE{$ih9`TU56mKIbBg!$z0Q7;hGpN%Lf{Gxq+-QsHwGB7Gg7=WJF<& z5)66lX}hAeNZCkYkdtlzSQa__qN8X9I147taEq+e2irRdSwI)<*iV}1cSu*z?RO5& zYr=-E$?zu4PoKTh3$LqdjU<@YmEhc(kQ_{8Yk)~+)1gEcfaPF}r=Q&^qt&vzh9gL? zx$Ak@ZU8+~CKc2vxPY}NQELqMp*P8Gv1~fjObK(dkfSYZ!CEB!jt;@;#JRH-Eyj1Y z_elNg6y0diLi&P)8pZX@YWOUylN_4KY^bj;T+m!sUADNkFc^`eA?!uC<*1per6IE} zIP7s3g&~=!Yn59YwMwQj5Y}y8NCd#M^!(11(5>q3D>3qxyRShI*l~9UQrE7(VwL~6 zYp^HGU8YV`q6%!0c3~MY{gZEcj%`q(}H#M*uM-WH_!d)6S0?YVNWE$vjhv9~6Bsoh2^4l}^)Ku+)6*Nk6-hrd{=xs|}&A-~SC6k$U`rF$9tAg9poSQR(;4De@!z@}U_> zuiQHy>B_z3NcZl&3F%e)s*$$s8%h?@&HJjzm-O_$DF_;_{fBIJXX?oQL3T2deth67 zxcQ5Zgb+MOJbIqw)BMMlk^I!^$C6~|m+b9>G+@~~bv4?drwRVE8*)AUpT~Eht=pey zCo%f-6H~DSOP`!hI%)XH&A{iMoI?)Ll7kT<)13#$L)SMCuE7RW^i+{kn~PI5t$*q& zlvbXaM!M*uPd$nfOP_v(oS;8H?RUMxV&q1;>bD_W2;cne9Qe2GnO&qHb?-A%Z8(cH zC`!DAu0B{ikpaocWshCTk>f#4i3I&>+U8d!r_Qq3l$M#i*RRrdpNry7IW4siv)Gd= zANrgVeX(bhbY6oh!>OzpH&SO(d89vE<7qnI3jmv2r>qS7t=@>?FRbo ztIJ^BIY&p5qjdGrzz_p2l6LtzG=m=lTzL5d(z0Fj%+c4dbKn2kIi#CkUxM_5*URCc zzHU`F*kxfhZW_8FIXQv8om|eS-p!uDtRpYaNV}I;i-YocI`WNiyjgJ>yUiSW&DDCR% zDrNR5y;y;+JJy1zboSW2q?z`-c>{Tto_X_`fyd#onfJI(%)i#g8vTLpJ3gov%SyT$ z%f0Mkn@!(3KDs!W-x<+6WLS*FGAYlLxL|rfr(eq=sh^G)kQ}L?F{DMps!aFZQ5@(r zF#>6Z#oi#fEfyny`*gC&vo1VVRyvl zj?UH~+Sj`2%C{#V7;S$$JU|-U$W_NShOzh2oL}5?;e42a__x0Wzn^-8^vu z3oKMQF&q2!!4uQ54WB)+f{fwI%-+mjrR)hjN@Z&oV44dEO9{*yKANs;52spxzmWJ3 zh`!y;s(6Uy%f{Y3b}R;OPpE3ro&e^N4U(xqPO}~rQ)WJeH8)iI5Ud^O#=sl%Ue@-* z^ox_z`lNH4jZj=ff*`%}J#XK1UbDeo!>oBfM{D0J?vw6yy&Q{HMdEGd;g1^c-P${y z!$_;3^R82y=%iDHrJ5``t}k0w#%_Y$G9)`vQ%@6E)?t}+!>LI)mK{3v{uM6PUZ!IS z5Sd5cuf_o(|MU>&vSsB9D(HmM%WdkA)GenQ2lTl9mephax%+2rF#l}l1vfx&-wAG@ z;Jy{yAi@1raDxSRPH;m6_l?P+bN5g|ek}?P6Wm$BT`9Q#65LgS`$}-b1^1=kMhNZ; z!4+n0=rL*A=Ykw53VtTIs|EKL!Hp8!p9MGC;#_|cT#?1u&Iqnpa6M^3juGS^1$T|$ zJ{6otaDNb7iQqmF+*rYVEVyxk`^eW;64=Gc)@)jxCw$gEx3t-dtY$Z z3htEPCV}hWE@yjBkdsBhlY*OKajxGBZmPxE-WA+5!JQD?biutNxEX?bJLCJ9g_(kU zOB9?XxZ{GGEx0!YH%D;C1UFZ3ZwPLl;9j@59`}4fzGji`GQk}cT)E(06$^jWHUHgm@(BXgsqdy2&P+d|5w}UH8=>Bs)Fzx?a_*uJ`_TR4xBa zx#F^Nq&q0cUqQdckMpfXy+LuGF@OFA5HpRMklLqZWbZyx8&qZesSThukXjVALDU9Q z8$vCbS`4+J+qHY4SV6sEd5U2=l|mtFlaiD4IC4<5v^$LV$MS*OK#7{DZ0T&&5(stE z9{iqFKl4?hXsKJCA5}d^R zC!vFb4*Vu@1bC&83CRGn(J(O|ZsNg-g^-Edr0HP~*meOXk0;h$T3%M^^yrj)u{3Ye zL=GJI#*}<;NIy(*Dq#W6OHS zxqwu&!(+4K?XYOvpK8Ea(^mv8qgk0Nvyydh;n&k+pdQs}C$M+=73hz5)Bg!4u{~oJ z(Wn`9kc)55@IZppJF^wwn)FGQ2B1T_mK{hO-kmv*#-`+?L+?hmTMvT6=4su}D++{>RnQI_AXx;=o zKCcOuV$S@9#Gjt8C%KT4RCt61C5g}?HI#&Ng#P{o1!^DalGZpH!dn>3stm)-Y#qod zo9J}tRQykpzBC&kA9t8^uogcuy%g5L6yq{#NJ?X?aTs0Xm?s!omJ~{u*=kC8yC8Em z7Wi*-3I#4GD+hygsmu#-8q+M3h_0~A9o&;)X?NM#%Ve?gACRm!D9&7F7u~$c?XuXd zSbx48!MccSsIg8X9a^pFkS%ex$pGy*%^vyu4N~P<++-3uc2^giCTz1OQb=pdA9EB8 zobv~ON77HO7yt!Ec=SZ=o&kM1uV#2$x!`tr1NC-~#qKc2IozfS9fwCfBXHHi3{2uH z!5@$F28!80K_Yru_?A>@7FUv5ag}vauc{-!h8JzjlC{}pW48|3K0Mh7!_(n=v;Cg+ z0z`AQ7+)RBSUE7;EC?xr(51g9wbe`qXv46@qhPv}w)k7NM|^D_OPborM9VDxPAnQ^s6r+y12eCT*OWFL#W?ce}hzb{V(5eun8A6WDN4nFB-@18is`XN>1Rj;uPx>1O8VW{Q8tgmfNylj@fDE9hC91pR2RW{|>n1^*vN3 z1~gI~OTf7si^;|BZLEc5_|m4h5Z~5*T?G&LC=@m&KrtTNG*Q#Q;Jb~FHpSCGWK$Lt zp|vTVKC-zfkrJ-GX&3-LY0^h*AwgL)%Oo1B*yb9yug7o4(#`)R5#t*>rPeJ~0F!a_ zwmr1{wQYNbBPy5m0&PEpr~0mieq;7SSv}2e)pI!xwfKAqVSr^rxWQx#K9@ z!n~bdp|~rQGJowZ8}a|zRnbQd(z^xG%A336>=t(Hp5NcffYIn@733OORx3U3DjmlX zlRA73mcBWRB4+)Yl|*6BcgY*rzMa)t&$}INYnR7Md?t2|F%!wjG)wB{GIjG9F))&k zBi|~=r*BCZwKp7I#_@Z{QZ>|9c7Lb^FYWz}!2f8Um1z9_1wVmvfrad)2)oT`E`hoMbFu1vn9PwInA|0U@nq#=93jDD- z5<)TXUD@Fhkb8A}eGedHLO8d8sUpHo5v4wUYb6I4gd6x!uS{{cO)@K`SN zkPaU6!t-A;H$$FINf!Z+qf(H8{_L2}!YRj_=v&v1SAZFlP9%_ft51vv5nE2YO8s#s zCqoNXp0rcc-98ylD)ww$K*{Q9jrL<8h=Pb)TVEjg6RqQ*3V&?fPcm=(Z692~si#Uc zM_KUJ;Qmu)I!S}xpG*$UdcO(O(!KW+I9z<%3R!snbUMK^;!H9fIj%DiP$8{869A#N zn6H(2v)N&x6c##~fp5WmXNQrMZD(JDQ&{rB$Ive6&IN(yB*Uy2Cw-VgIkNP_Lh#}j z9~Q$69CJR79B=sJ7@ULJk6L3pgUjDwEEC3b#nx$dK4=U{sd)p((3WbEO;QD!gIO0A zMm}H>tTH?+4k9ZKO8#eN-7on0g}r1~?Zw$d+b(Y9{;kG}kI!>Y)i~x-3UIjSQep%r zYeh598!c|$DRZJl2P~3A3tqc4fjrjpat!I5aCsC=MeF5PL97 zePqw0WT&jIG`Y*zrDQy+J{ti?anxtmArUoK2cY+=mE!o`)h*TH^)=LJ-j&&hWaiW$|B!gLs?B%4L|-@Dh;fXR|^gnySyOq zJ0<7W>G0xaW{t1lXp00#H{6{UmZH3D0|kVNmWkx_Mkc!x!|#k!Q39E8{+&41>A>xG zV(_y&YZya^|J@Zh@!n{vJ12ZE7@dwxyQ|#T$!i(k z-E~XlEjWv?X>s3Bu?TuapHL|PU2n?JFc-|$9n&N?#wO#l5(8) zzDEgX?mf4+bI(2Z+_S~j)|e0f-ZuK4=?{I}=ld)@%l`%8IgCGh(C_mZKHX>d4K3%_ z{rCoQT0Wo$@)rV^`kH)?-jnaud-H4cwfS}Wy8L>5eSU+!LDGeD8}pm= z&3@ms&xpLuuitdH&xjgLPx*`{Gk7(iC(MMt1-O{e3|zC|w!+_Hw8Gyi{%!EbjW+n( z%mC8d41c@P0e^>tZ#TE=JAmsnx`68v+)ntrjWzJE5q}^2Jw`A5z2Z;8zt&g>|2i{) zJa-w|IbU*p^;59~{*@M|^JbxJ59G`R)3OIji{+VOL4qE??!TCXotD^%siKuQD=8A` zf|0PyT)J!;iCnrcT}e-y_JE2#oGF$Tt?cwnc{p**b0&rc2XE^i8XUSMF}av1&zQ(b z)g@6j)A>CK+cXnL9y))|nFr4eNTI{IY{o3u=5XTZx#KGQ^r>SfM$es)iWp`&oz0=l zFLRoVCYzkL<7UpBPM5QVX{oRid(fOV7nD1aEo5>P!*rsPi_=!IQnH;;#YR*oVwh9u zO0MjL=8KkLJJC!rKbb99?y!gVX$c?*dr)0s;O+oG^T%D2Y#t%}rqY+2rs<6e)V;%65nVTRql{NEOM4&%>$ zU)bj}eOQ@3T{HZ8z|i!d5zs@^J|l>g62>=#Zv@{kzELBhHyKegHrxD*Ts^Vb7JOrG z3hAvzv(fUDPmdd|MjYR^ELMuqZnjTpSRox|yV*J0g}?5r0bn|>!E~8xW_u9Qjc+f$ zYs|HPJ%r{uqxY&GaP3t;R!WDt-duZCGuBT9j16_)M))?-H@iVXH^YC^GJj$!fE>15 z^-srN>o>L-TM?#ewDGEDZZftRH(%9|W_umq>*99^erFx;#qSe*vX1xS?-Km(I$p)! zv$FakemNV9k1daa`Qi2 z$9wTr{zvL~FTTqEs5?WBVQw5ZH)GD6FmD1pX>OiP$lSSG=FU9=PYJwN;C+}2n=uzo z8~2+x8KdZnGnf%ujI(e(P_&t4|{_+YmFBf`de={#*EZcK6Cr*j^ndqp0=RZ_r`d-E;lg3%Jk>%Zk@-7-_lsNgyfVpdSH+m?;@9Z8a z-B=dZk2(gB<`mMHZXI{c4$STao+aH2{8Sx3SjQhTrpi$3nRDtjJ(;3_UxLy9U*y+pxJ8fa_g`jJa+bGyOh?ROJ zjDqSFtbfv&BGPP7x$$e1By_V1b@SnfZZ;lM>1H>eKRKdqO2Yy**(Rm3eCDNk6sbVn zwiz~N$(_i#tiICIdr;$TGQaM0`~Hwoal_ercN%lbhj@qF81rTuaG-GrUl8|3aW9(j zI=(7yh3_*i1HVz~TC3-_fZW(GyNoMLC83YkL+9PlTd$k8>W1Ea-L#8t=*`9xUb(0} z$^(5zJ>0R{VZ7KY7ojLmLP5)=R{K_@MR_aI?q87>d{2iJ^g8 zB^xkY=fOcF@PDB=FHDciYa}jSRNJm>r57&_Boe2}jAxg#xm+SW2i7J%nKKhcmqXiIvH`oCE3#*t+eO_ZE$Q(L}B(j zfzslBJv5oFnmIjcm(x}*ZCy&ntHE8!q8cKcSD!3#vy0X6t^sC2pPg}H=g4@JtxBfs zx-(X`RA!RNYR(BBedySIPUz@Er%oTQHp^!~3UitsIrHFs=guBEc7k!s=}av zdk28wFZ*WwSbm!O4b*(_1qFr(r$d-5;nC_n+xt>|srlWhWO8Jzf7@VU_xP^9vBCa3 z$9LDpc8w=T`cebS{fIS_J3T%!cB238M>GA?*`j5qD+}AltJA5=eatBdIKXeMFEuuH zAvHd}J2jq6?qXJ3#%wDsnGW|2jEo&PbTD-R-m(7OiSdzbBZG)y>`spCVX5MhVkY~i z3q>1cj3h@=SE{YZG?m)9b^GO1VSM*eWDM?9YP{OK9VK4Ayl>CYmE?1p)ro#^qNfUF z(<&8n&-tBDxx831pYvI_B4lau*l_A08w(*dZ|2Iy)bV1bB4>)!gAX1(aV&*%KsjBU zu)tEMPG=`mHn`V*aIcqmLP(XerM(k#X2B?0d%eTR-kcmS;OAikGtKG97QhNCK6k>Z z3k3bz^MFC^hv7)rAJ&53sBSvjU{(jNNqfzZhmem9`Bpeq4!IEktzJId zK{ebO`cF$;Ug|OzN>+ciU}p`pe@fM`-m#ajuw$)3<|8Xb=~sTtcdLdtzxmfq@@Z=J1+F4>|M#eG3&v~Lz73xFLU(zwr<_p zH!?g>OBIs4M&L=_Al}ZMI~(!fNiIcFN49Ml*nRU-aNEExK+Kc^3Q9TAOX>(?S6l7k zRJq^tE_L;Rm|@b645#cGqT9*cNhdmm6HNhUouxH>nOxeoS4U_PtiG*ID_OHojmb6f*Xq#!3;ySjPH!P>!twF3ughYr<-57x%| zAK$%q*Y<-44(+&58yH_|9vi=WWw#nnEv4}xqs@;7D zxsE&gESSl) zP8e&*v>=?2f~+x;kkF)MrY})YQ9wT+O~5d*$C|n9l$BzHu(^;iA*zT>Wee$CZqXVS z>~yX;na)`k;ISr%36_w%6SC4-lo%}(3%Oz@opZvLS*}yav>g zzqW!TYsfW#KS~tr1i+KNns2=MioXUC!aCnueb4$Vt>%B&=l4AZfdUA!W^v~pg*+sZ zwR6RJ(}I*n8yIx_msXS8rUTOutAI=#`V6zD7*TuiW?$76dk70PP>)j$q58>WwQB{b zbEirdC@yws%<;km+dRRj$DG*2gd#^16HXvKiT=bifcz$ao(Cu_Isu52oFD~AP7_yD z+OpD%PE1CzRLnwR6q1F85k(sEeNG@V1M!g1%Djnf(QqOVOO-GZ%7HDDf-4B%%9ax} zvS7OcM%Hq|Ms_Zb*i9xDAcatvN#-2KbP9`xQl+U}Fi0oVFtt)({HMW|W{WeneI}&KI5^W1F3M5j?OR@!|dUrC(fKyaobN6=CW3?zzQi$ zQzO^TlbjyNa&{j@5eVa=zD#Y>fv3U9t&ri}75QKqV#T`PN8AtPtb zDM#xW%nHo=dF5Sq7W^lgc%5E~KWL&)O-yDLwe3Mu9RR(Cv^-b=&Gm|nyFM?p^<24F zI)$1`L!IVxi)gdk$X4a?q9V*Ln|W1C%=NH8qvz9;3fpuZGfz1?9x6<7LZ9XuQmD>{ z3R#{?kDG)maVH85T#Fk|#aQF|Anh&K6yGa!+(p-GM-Jcf#2!xPDsIH+!}q(L8u5Z# z9?628pSM*`9lB{1k7wsV7QBhvb`(qh5<1+QDILeKr5IEPjRWZp6nRn(n-8I|&ksd25%w`VxWJbCTVwQev{Y zlh4bm_#mxDuYRWT_;%?IHMEl-b2D=k5WkPQ*bp;OmJ7iW&}?QJ(%y<4&Xx_usx|b?mh(% zDg=*NHtPYXN8XK|WrY|+wlKI+C$IKlI3EKF6>2m>wlW}5GMv~WvU4g2wYkBKWYa7Q zwc#C()Y#qT;As~uw+11z^js4h-pvD_rm4%eXR9(dw3z7xensYk}TQ-uk5mA^f&rHnJORl$zvEAC#n}?!h z?&D%is-~KXI;z$qNx?0kV7gHXChLq!xDyX?q%ufUD!P-X-Y)EDrL@H?kie>s0_YgK z6s2?c>-|f10BAJVV+r8HP;ndZCJNKkn?z5&Ei9ptm1+Pgh3h!vf-w{30#3%OSJ0|= zJO-)mW)w9Dtjmh7w^Y|7V~{80hAOz6O5M{~9pFxYWn39i%n^^(^5zJVH?l`W$vxT4 zkxUl~MYZ{|SJ8k;uoA9Q*fmvPCRenv(ZhpUa|eM7wRUBej1N3{O}J2iQOqb5SW7n% z&tkx#DlQKRPkdtH()_YK&^zc`5IB`f-YTkGcxrON;Y7oq9O3a}1%l$TdVKKq=85sK-TmW8 z-oTDjw=DBsFUsslwPSFscxGG@K?->Lcyf2OeUL|K7qyR=-odejM_o+1f9gp8NeT=R z(7ddGCI8{2xH@X2AwJ=m1EQyarB)^I*+bN>WVKC2QAZE3luKcr7;#(lYeI& zvr}OLkY+3eAa_`CY~&G;$2pPYQFvd*vC;5f)k-af2A9tWyi{A~oAcqo7#v;dQsTw= zk-q&RBuzpnx)f2}m-zCRZ~%SIZ?zyBoXLZfEw4UFwxn^EUbM{#2L1v{w<$V~`QwmB zR@W|<*)5Manmk}t5ZST`<_QV}k0PxTs8~5CB2s-5A`Gr0&U8vMz$EbCVLPon(SW1i zmX1S9pi;={O$%9L0y~6N)?4W0zDq%X9!2N`v#@SQ{??rYYY8awRFd7$5sDj}0OYn- z99SoM4>mU{G(bH;2GMF|WOl99&IrP1ivofZJ}#qbH8HS_fHGMp_y}mKHAH`u{wR1a zZeTdS&Eg#4L|oyG6TURh!=S~UvnckoA_N^w6gjHoI=INN%?bp>A0sw;k}48tzZ1Hj z(jF)JaN5f9jBIr=Jakgdvw<@_F&;%(fqQr~CJQ%>LtGQtW2K7`I!1Y<6Fwm_K_^@$ ze`#B<BwP?2%*Zg6>CR0GuI1zva zM*SBDz6GJ$^DP=-Skt}+(e)ZlYe6pBkF>z`zwsbKpN}J_l~488B_ zJ{(Z>Yt$5N_#^GB+BxK-p_V_=LWGQ`eOvogEzMRljrK$BE!uQY)3hLJul+}RP+QVo zuN5JZ4+ejzg|r{Ehqdo(&u9yp)(syqu`uHNNPC&@2`$hG0k`%az9;ebgofS>#)97s zHf!IBwZOeL_@&@F?Tgws5&k`d??bL@f?o~yXkXEu2ktL{yBD}n@CRY$N!$m4JE!@9 zm7bT;@oV2l$gd(K)uL+665j!TI_!s#UDe<%@K42%4q3Vm07Prxr@2Km*Kh(Uiy(jpv~9}p9368FE0J0|Y$ zio03d-w}66Zi<$g4)fF*-oT@a?orSzMW<_ zV3&k-3tZ!>1ofC}aP{6xB_Lxha$9S*W2P*p8Gt>Xv%8zZsJkreNyKkT*p&!rPthO>^E*PZiS)=)TERW z1aP+*w*z|z6g@W0QX%F}erKT+gRtRcVNj2etNAU!-{t1BX?Dx(RyVJ$z#pjNx7G1O z#zFJu+3m>rkoz6McL)53@!g5<5q$gbJ&JE~7RnsPF}jd%1ohqqMV(fvph%7PL1AYT z)li_avk5q=tE@v?F-pWhA?I$iz2ATukJNU9U8R$h$&GiK@t7KlJkl@X9=#@hKh%L*>&h)>%@}-LqL%T1xYvt23H6`W+4YjgITasu zf55HlZsR;tN$5lMP%7n6QR87RrAmPngq+X=0pk%b6+#eOLa;^<^5`2is6z}=H3%zj zpD_l8DP?WK>P?5RIj+`-7#dheEYphk3G^U@sZZc6otQMu0`y18sTgt@QdepafxIY0 zcxnzVhAI@E9t3!OFhz-S(N!eny>ViH0y5exm<}jYP^gn&?uinP_oh{_6S?dq6Qxj- z;o?P9Vy>=LA(hD&=TH^os2DlqhHB!5JExRUt1%ak)?3@qHJ<9k5LG9Js__-t2t(J` zMi_E@*Kn})yXeixv~d?L3J1%S52kq!9U5J_`~QL30ksa6T0CWd`jz#PfBOw@t%aR@ zKPH1smQmfo3mc&YzgOL?x<=`fUVHs+4I_zl7r_C7g9Hx{93mJYI7e`p;0VEafa-?j zH;1dP4XvY$c8uUS!3lzs1a}kMLvV`VUIJdSTMrXF0)PudXd^)EeyO^J*XQFk+?nE_ zrkwCAuet)YP9w#SiN_03>wd<&>4o!4TBAQc7VoI!YOJEU{ z2`U701Q!X?1oH$71d{}043eYP<8(hk@Fc-Y0B}tPwH{uBQ5GR8&DK>0KE=TBq}*;; zFD2$_f|n7zoZuAzxFE}yoN%USLOaX)DWZRx;FScgB6u~yYY3hp_!$5v$~N+p#n$q! zmTv2{4F6ezpC@=7!7mWJp5P4xzew;#f;SPo8NdlcE(XeCy@i;!5A$>8z|TKC1Y zVSRv+evRPQ34Vj%g9INU_)UTj6Z{szZxj3u!S53M9)J_ZQIVI75q=@-v3_5$3v!=k zeT4BoO7I5&)w@>QZBfv0!wW9CzOL~q+q>)9XZ;Z~`eTAWA^0Bze@gIY1bs2>utr|0ehc0H@8n_;H2g)~6Ztj|Bfr z@EJzJr43|=xN{Q0y7gHGe2(Dr1YaQdBEgpkzD)2Hg0B+%3&Fnqd1PzZws$eeAY&SO$2zL;C-Hs6BVXM5 zBHtuYyNH4iF00DgP23)W0fM~*e4bvz;0}U235E&o zA~-;B5P*eo0U_B4afbe1Ir*V0oW9GaiV}JV3Hly3`4U7vjmq2as+t-5iJ$zDiJ&eK&dxm zNoiN2s^m~*hE@m`2o?#d0M(sTB&1MuR}FtknXn-hRr-y|5y(5c5w9)^Rd`^V21S;* z8_t+WKgS05LDdk#QOG@)2@iKe!OYlwx*7tU9a#!pguL-$HF9_?H9vs(Er?n@(yvd9 zr{;HAFT%QkxD&c0R5lTjU=kUmZ3sR6dzRYjktOx6YE%jJQj^x>Xwp)<7d|kqA}qb= zx>C{qtkm;`#HZF1?8z4sJW22pf~y2i5xkV(zX3plezK)=q-Zp|a&>N(yoq)nr>-7Xp z^hOCf2;M^6TM1-)c$TiW5xkwCi&5S|*Ep~OkD8&{Cn5an57tF(@O?tN6@s&t;J1UV+PAbg;yfSJg7M%tgKgS3w6AM_raglA zox!h#yR?5r{O7bh{B;4E_F8RDiOdKoEQ0Xv71|T{KCe9q;gb@5QM^Tg9kgvJ01^S- z_u+4G#b*#yX>F>-BC4YJ>>I%KFn&uQs)YmEcY*r~a9fqIPQ-4XhB#~o@DMn~cH;Xf zg!eT>R@&dg-@nZN3B=p4gjcb!C&Y^WPY9t7$!Rr%@mleZqkR~EHd(EeLMS5ufm6^3 zPW$yx6W*hlVKXutHJfH*5WIwOkdL^SW{62NyiRMHZ84gFkJVkxNYRP|bO=Z3WvLOn zb$MDdZp3*w#~aT!BaR%}5!yc6VXB;)nV%fPJKh-3JB>~(^e(4&LY=87NB3UyQT=DB z$32EZ;?DrQniO>d=tV68wG>zMq2CQ&TC?I<+K(GMs0o#EP&jnxP$JnkunUU9PAg*b z`aqOcZ0N2c5SL5^Tn6=}E*wja)Sm_>QhoWNUB<~BFEh&tY60N&r(I4Zhf@WosqDQo ztgdyB;9JKoY#radbq`M81v3F+Uk$QMUS19GKd%m`kwQqhisHBQjT}Tx`VzI9p^?|y zca3V0#7zd&`O@K1{$Bv2$*$GZ>`@HAqG3Y5gkG%y4mSqx|?yP0fXVsB!wj;VKl;`;L~Ib4tG zO|%1c89H5uys5TtPa<1L98ed{hw8DfQBE30G`T5CfaMdNCAMFZ75Pw^e57jN5yQyx z9x9zn;1w_&UZ-4CYi|F=dMQwzYKW1b9AjGYVws&bkVqU?&yD%o=i)`4lOXMC^kL&Y zk=*y8llKiYI;IhN-PcC!?oqrn@^0HH&uWyxQ0tSJ0M_3T{5`>^0G2wv7elHgd@W?X z7Xd3c6RsL=+0FQ~&jWxn;p2PlYT$}i)2!CA|K+~2b|p{GbNXy-s~~G5UF4lCcACXTEbA7MTIKHZwo*lVUPyXG+dY#%c9rf%b5yhp-~Fz>^R zh!Mp%Vl?4CEQb5AW;2E7jAsr^!kuYw(;&|{$76VT}=`v$i zBS_J;0w22?0aLqB5l!q+_8aW5J`qObcF(6k?7TSH8B(QV7$3l zEKibO+h3mKBT9O!5q^p2UCFT3JEXdHMZo_4dWiK;m{rvPb_tQOSNriW>?dH_g4q8i ztM^IVA4@Hk2tZlqGY>{B~ww$BGjJKXZPVK#P$!VFVb|-wlG+iB-8)Q*j zLKaE%|C(em1&30WQ720w)IppSK_GFe1i{vxkCF5Jp4QwgnD%9mCrV9I7^u!rW#(I2 zmnhLd9YyZ?r9Z?bdA*D)%?OTG6@1Xzl-Ui$Da9T;$%8g%r|Tug%_aOIPQQzk|Fw16 zSd*(3YeNPmOH|ggtW)8x8tYU9Yu{$gWyRj`SW14ZIeIWgD3puo#U9->%;=%-`+w73<8ia`9 zAT0M@`D^Ebf5vaFHF~c45wllf#1-!Y|GK&#=7ZqhAb#i*Nq!saq0k>f=;pc~`a|$1 z>i#YCqZDWn$rpM=2!|#S^@res1`+j!;DY85^@ZSq#t`*{;G(9`I!`|cergEOFM2`n zQ!|Ku(FcN`8bS1n9*~p=O(6L~7w8$94e2r0*L8uYO?4Z{APkm>HqBOq-EQ0gO`bcU z6VywC9mX)fv(UFe*j>xQpf4o4DMQ8qXkXEg&Ov;kDFj`gHM3jr9idhhb%CJmBPN@s zsa>-TIzKI9-iEc=2hE?}*_#pPm`MX5)ahAE_w07#xU09b9(q4rqBV5VWR34e-y+=P zSRoFybzHw1b?EnW3I1M*eV^GbzS9udG4?Ue59D&cYy~ltw@J#|$xzV~+G30%$2jIo zT*&(wltvw;vx3E}BNhf;j)Q#DjL%Il0wnR>`aG!OyD_N0({G$Zo1xt#`NQN7d^D`{ zut}c(5rK~qN`5cG3Za|*lQeY91=f2^<$#%Vo`Oe&?KVnPJ^D?_q=XbbHzE@B%>TQ^~aS9dSlhAeYIjKeAOVJj7d$WA$76;iDW9Wu)715K0! zaHB6iD%C8INk(=!&Wrt#1^Fx(>XWTo2~jClTM2Qo;EVS)6i}+*!^CO=6v}a*w9HOI zJp^hMjS$i7cmPejv6f0t-vO|0YNLQM|G)@&xI@Y6#v5y|jEqB3M43Ji_VmC(aD9AP zjGP29oD}^Qyg!E^r{+C%RgpyBrP|t;DUBdd;q+hzZU}Dq!A1qHQW;;UL9YT9S=^K- zIabYH$tY0tWFU*pjJU4|q#Da~W_}HON_7)&-dr`A6-qMWNpz!9ka>YP=tHF(v*88u zQHn7y5M!rOiiwJO0~ULhjZt2dPz|d9_q%hM^2<$1`6bIy93z+o(6z}$QH9Z?8LHW% z->#<=Q;n!2$%ysq++B-IKF;JJd1$Byrn9+aiZXJeH6h`JB7+`dg7*?w1Z9E>!5qOw zf_Z`kf=L2yqp(SE{KU!Hsgt!6rv;ol!6(BHTu+O}`VCg>g9KNRR1e~*d0A9wtPc_S zQfB%z!OI9yG`hDi}5rU5re1NHcjo{Y_euLnH1Ro;!O@a>-{1(A)6Z{Ur z?-KkT!5=V}KLp@23p+avVT35nSbxNTk1)zdB_2Taz<)_&X7r)cr#aSx|KC(*oH*W@ zo@zW$U!_80{W072X*O%6+Klxl4EQVqK1c9*f-ew!k>E=NUnckp!B+`hSXt&JFuYfHzn#sDw}r4uV=*f699N89+5a@1N5ZJPbQZ*2fqky!`gQ5*{OEGd0-FFkt0k zv4$r+(A}z~OW9hsz{@H0dUZpeqL(!qPpColqF8_q6CRB)5W0OUjsvofj2s;68{T$s z99LA;p6f-}ldOhG>YG%h%8Y}r%1Xlp69cm}2Q)Hz3I0OG0 zz=M7wnQj)}&<~)X7dBBqoz+c0Z}pX0fY8|{#*Q*h|HnXq1+nsD+|uUaAwRUwN#@*|UqMw`rU&;Nt0RkDR0W z1r7+@O9&N-L7cQ;P!@5A>aP8D*DZC|t#6Fz+l=gU5zJ zvcXBweS>BLJw>G#M>RJ17N{_XH@M@wtFWJzP0EvFr9_t+P~Sdt8B#Rv)~|}GB4E$s z>*G~nKqfF3Ch*nSP>7%2feI9bF;@Be>vC;0_ zb+Nh@R-Z5m*i31^3%0xFaY-PX>e{g_H*epuYj>)DVDIpO{==!%h1%nH?ZGi=o#Im) zEUGZ3!ikazt%ms2eCIMAQy56{iPaEak?yp9i7gVY@O^Z>pMZQ_6?d%&7RIi@)79Cz zYFJGB>{M*sN0}f-n^mcusrm7wXgntmUYFaxiny@k1e*Q zao8*QYCQt;0m=jvm2?!FEgbgsnCthT(AApga&%e6Hoq`U2elyAVabU ztHH6p}vCU3qm z=eLUKYurUOxI9q>?P8YiVl_l{Q}{Ds*M!Lv=1};%1~*7f@48B%WD_lomGuz_6WL4L ze}aWeAl}!=!o3C#Vc|jzfp{3tu=$+Z`>!4MQv8ovo?)sUK#wvAb}kqRHUu!=|8(zQg#l zj{;o7rohU+ch5!p`g#<9O*62w|8~C~qiO*j_%*vvY+Hx9H@4WOJuWUlm< ztnHc&!ltc9(pCm9FlO}TDHx=3b@!b>AzjcTFhIK~*6XO9Wx&1xbk*jHxj9%XG_AkL65Q z>=Da3c#}-ql`xrSnG`3m09H_Mmfy7SB9UZQ3>sm~!!(U;>&=tdGFLbaujnysu=xpU zk0Ag;IFrva&;tJa1XM8R(A^XpD35j})K6P%6~&*@=SGiT|ow3AcJPuOW5^=Tdt z##8hrbaL9729M-mLn=dkvn(bg9;=x93_UV6Ri3iU$5c(Bj^^O14DDI~;u7q;qzxFD zqy<6~9i6pd)+bw-(xa%U7>m$hK2SIv1Ar2Jw0djYE@UkokH`+0|q_Y`r6mDG4pu=}NI;tNxS82Rf|>)38>khcD4eCf-Y- zM=DTb;LEP*Aw8^$Vq=BZgc(iw4U#!ikHEfB8m7kd@Qgbr@ovi2V`wMrh?y8@Jz9o3 zEfp`&M>EBuZR#;^7GV;FEWA>M4N3GmY$F=kJj`9<1FLCz%!J&aNX^(FElN63tZz)A@**-Y%b)`25iC`g z)Co71M}Qtfx!#0qbJr!hgZ4_;!w@Wr%oFF!EY2CEKp--fg?C|72sU8^29quaJsLea z3H8NG`7}&tQm@#Z}QmY1-)wVX=b* zb)y$1K(f^e^L{p`32W9%lQ+=`?P~pk4B>f}OpXB5X7z~MIBY-e&)GChT3BK*4O`aR znYHKwyIPPqO{+;8fkm>ZDRh`L!5dV&h?h$so?tV}hTdYsa%yJAwcZ(=g0VYncR~`_ z;ZroQtA{Z_G%gB*pdgz;8W+`rCD=?;RBQ@cLrbQZtK5k-%XhLji3|0sN-Tx9Q&YGey~5aW9Z zg1Z?!XQk~{R4toFXk;4o!(s%RKLvUZ;tEOvN^hBHCMFYJ0g7Ec{DKvz;)08yLSi zLvO}!A(Z7%K4frmr>Ch+jZ+d_joABOycO?|v7sWsF6k{|vCZ8+WspF^P{W+wS}6#D zgkCT9&PEPHhCDFVwd^2P2qrK{Tv=Wpqb1mGV2FNMUC{H9c@qWzkz#9E-qdY%=Y(2j;AB89IYY7w6Zlax&I)ojoU~R8*g)=CD(B41C7e7k8N|9THjWly zjy%IjQH)p_T)?6e#dapUJhTw8BkCmK8JuVFJWv`1(jn77l$X|qVVwa66)=fG|7FgQ zQac!zDGV=m*C92xFo|JNDkPP0ny_?cEBF~M5E@jluqbFrtu_pAgA+~$Tck^`n)nV} zZT9W?G_G>6#!S3iq={f1nL@=-XtgZ$TzVSYDkc}V{ID`9iQNY;05}sk5XHhiLj(X$ z7=#K2U)A~t7pA7RyX^)iv2ExfVbq)uIY=-f;C_Xm2Qwx{8=L}08$*Ym<^ZY0zLwM5 zF#}c-vSx{8W8gu=;_fn^@OC0p2)hrYh2Ujqm=_ZYBQ{k;x2Q3M=}jO+s1OMimTzGebH+*=lylJr^Bg&mG$^MuLT$DntHK2b=4Xo7|6m&(v}*Y6Pj5p70cF>I03-AGHd31e=Y?fP z&>YeU;bTB)U>{PL%}LlmgFVqQ$^%~wW2N9`z+MR9ldGEvy@N|ojvycu@*8mIMR3JV z2oGL(G5|#-uU`T|)>}9skrR3wjR<0*V|K_R0goS7)rSdeycs}qE9HFJzJw)$p+lWj zQ9LQ(y)kz4Dej3)7J6RobIq)bSB(}~8bfL-f|}djDi(q&SC`oOv88bH#754OfZT~< zMu5b!6HL8(3W5BYy(0zVd>spZXi6=-__B$KZg2wVc)1bQyI5OQ_=G1+^;$_DcMeBK zk78rz0)@fO1>QrB5JFk;Lk%=7t}K#bp~$gBjUebD30wwjFif1=HhwZ+v44&r7c0;Yck|)+%^dP{Xft%m(J@(#pZv zP%StW5YzCHn#N}(o{!H-tbfLFGZ_}WR;PzuuZ+IoSv9vgOl#cybf8cte&W&d4<4Dg z@5GDndo;(-sduS-{OLVY_-VLl_#E^F4WsEeCxnw}#a#AE;5OuBJ&D%64J}fZQeGU> zTAuHOJgJU)w6LqDw=UcnF5z^7f+>^37%^UwK; zJ^0-cd`mq>h+mxT!=u*AQElsKf|mhQTa-vDAm$h!?`{LFcON<(Kg>pmq467=)hA%-sN@w2qf$kR6-~m>p z2M+HB4x$-<5I+(F(ao`zs7N=GyVb+^Hz9LpJ$`~_!2JmtDBY{ypj5wysotuv$JOIx zxv3O|OSuyi5tN9fVu<3byKY7m>=NoR4EyH>rOEtRcJnD>E)isLGOD-KA|exM)*9m2 zL`&payhPQzuUELWj*(u=R>Cd;SR_2_p-Q*o{^Fzh!6@}MN1i9~&Px=k9rx!D_Je|C z8b1}OUhwduQ-o2{nak$;tqkC#ccR`)JCyCSIaPzcXl#$xuHE5pfvLpy5RJw8o(M+T Z1HLEPC)#gr9}M2s9%vtg@0RY&{{eEI_z(a9 literal 29842 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:=|[-~+/*%=<>&^|.]', Operator), @@ -192,13 +190,13 @@ class PythonLexer(RegexLexer): (r'(=\s*)?' # debug (https://bugs.python.org/issue36817) r'(\![sraf])?' # conversion r':', String.Interpol, '#pop'), - (r'\s+', Text), # allow new lines + (r'\s+', Whitespace), # allow new lines include('expr'), ], 'expr-inside-fstring-inner': [ (r'[{([]', Punctuation, 'expr-inside-fstring-inner'), (r'[])}]', Punctuation, '#pop'), - (r'\s+', Text), # allow new lines + (r'\s+', Whitespace), # allow new lines include('expr'), ], 'expr-keywords': [ @@ -224,26 +222,27 @@ class PythonLexer(RegexLexer): r'(match|case)\b' # a possible keyword r'(?![ \t]*(?:' # not followed by... r'[:,;=^&|@~)\]}]|(?:' + # characters and keywords that mean this isn't - r'|'.join(keyword.kwlist) + r')\b))', # pattern matching + # pattern matching (but None/True/False is ok) + r'|'.join(k for k in keyword.kwlist if k[0].islower()) + r')\b))', bygroups(Text, Keyword), 'soft-keywords-inner'), ], 'soft-keywords-inner': [ # optional `_` keyword - (r'(\s+)([^\n_]*)(_\b)', bygroups(Text, using(this), Keyword)), + (r'(\s+)([^\n_]*)(_\b)', bygroups(Whitespace, using(this), Keyword)), default('#pop') ], 'builtins': [ (words(( - '__import__', 'abs', 'all', 'any', 'bin', 'bool', 'bytearray', - 'breakpoint', 'bytes', 'chr', 'classmethod', 'compile', 'complex', - 'delattr', 'dict', 'dir', 'divmod', 'enumerate', 'eval', 'filter', - 'float', 'format', 'frozenset', 'getattr', 'globals', 'hasattr', - 'hash', 'hex', 'id', 'input', 'int', 'isinstance', 'issubclass', - 'iter', 'len', 'list', 'locals', 'map', 'max', 'memoryview', - 'min', 'next', 'object', 'oct', 'open', 'ord', 'pow', 'print', - 'property', 'range', 'repr', 'reversed', 'round', 'set', 'setattr', - 'slice', 'sorted', 'staticmethod', 'str', 'sum', 'super', 'tuple', - 'type', 'vars', 'zip'), prefix=r'(?>> )(.*\n)', bygroups(Generic.Prompt, Other.Code), 'continuations'), + # This happens, e.g., when tracebacks are embedded in documentation; + # trailing whitespaces are often stripped in such contexts. + (r'(>>>)(\n)', bygroups(Generic.Prompt, Whitespace)), + (r'(\^C)?Traceback \(most recent call last\):\n', Other.Traceback, 'traceback'), + # SyntaxError starts with this + (r' File "[^"]+", line \d+', Other.Traceback, 'traceback'), + (r'.*\n', Generic.Output), + ], + 'continuations': [ + (r'(\.\.\. )(.*\n)', bygroups(Generic.Prompt, Other.Code)), + # See above. + (r'(\.\.\.)(\n)', bygroups(Generic.Prompt, Whitespace)), + default('#pop'), + ], + 'traceback': [ + # As soon as we see a traceback, consume everything until the next + # >>> prompt. + (r'(?=>>>( |$))', Text, '#pop'), + (r'(KeyboardInterrupt)(\n)', bygroups(Name.Class, Whitespace)), + (r'.*\n', Other.Traceback), + ], + } + +class PythonConsoleLexer(DelegatingLexer): """ For Python console output or doctests, such as: .. sourcecode:: pycon >>> a = 'foo' - >>> print a + >>> print(a) foo >>> 1 / 0 Traceback (most recent call last): @@ -659,77 +694,35 @@ class PythonConsoleLexer(Lexer): .. versionchanged:: 2.5 Now defaults to ``True``. """ + name = 'Python console session' - aliases = ['pycon'] + aliases = ['pycon', 'python-console'] mimetypes = ['text/x-python-doctest'] + url = 'https://python.org' + version_added = '' def __init__(self, **options): - self.python3 = get_bool_opt(options, 'python3', True) - Lexer.__init__(self, **options) - - def get_tokens_unprocessed(self, text): - if self.python3: - pylexer = PythonLexer(**self.options) - tblexer = PythonTracebackLexer(**self.options) + python3 = get_bool_opt(options, 'python3', True) + if python3: + pylexer = PythonLexer + tblexer = PythonTracebackLexer else: - pylexer = Python2Lexer(**self.options) - tblexer = Python2TracebackLexer(**self.options) - - curcode = '' - insertions = [] - curtb = '' - tbindex = 0 - tb = 0 - for match in line_re.finditer(text): - line = match.group() - if line.startswith('>>> ') or line.startswith('... '): - tb = 0 - insertions.append((len(curcode), - [(0, Generic.Prompt, line[:4])])) - curcode += line[4:] - elif line.rstrip() == '...' and not tb: - # only a new >>> prompt can end an exception block - # otherwise an ellipsis in place of the traceback frames - # will be mishandled - insertions.append((len(curcode), - [(0, Generic.Prompt, '...')])) - curcode += line[3:] - else: - if curcode: - yield from do_insertions( - insertions, pylexer.get_tokens_unprocessed(curcode)) - curcode = '' - insertions = [] - if (line.startswith('Traceback (most recent call last):') or - re.match(' File "[^"]+", line \\d+\\n$', line)): - tb = 1 - curtb = line - tbindex = match.start() - elif line == 'KeyboardInterrupt\n': - yield match.start(), Name.Class, line - elif tb: - curtb += line - if not (line.startswith(' ') or line.strip() == '...'): - tb = 0 - for i, t, v in tblexer.get_tokens_unprocessed(curtb): - yield tbindex+i, t, v - curtb = '' - else: - yield match.start(), Generic.Output, line - if curcode: - yield from do_insertions(insertions, - pylexer.get_tokens_unprocessed(curcode)) - if curtb: - for i, t, v in tblexer.get_tokens_unprocessed(curtb): - yield tbindex+i, t, v - + pylexer = Python2Lexer + tblexer = Python2TracebackLexer + # We have two auxiliary lexers. Use DelegatingLexer twice with + # different tokens. TODO: DelegatingLexer should support this + # directly, by accepting a tuplet of auxiliary lexers and a tuple of + # distinguishing tokens. Then we wouldn't need this intermediary + # class. + class _ReplaceInnerCode(DelegatingLexer): + def __init__(self, **options): + super().__init__(pylexer, _PythonConsoleLexerBase, Other.Code, **options) + super().__init__(tblexer, _ReplaceInnerCode, Other.Traceback, **options) class PythonTracebackLexer(RegexLexer): """ For Python 3.x tracebacks, with support for chained exceptions. - .. versionadded:: 1.0 - .. versionchanged:: 2.5 This is now the default ``PythonTracebackLexer``. It is still available as the alias ``Python3TracebackLexer``. @@ -739,11 +732,13 @@ class PythonTracebackLexer(RegexLexer): aliases = ['pytb', 'py3tb'] filenames = ['*.pytb', '*.py3tb'] mimetypes = ['text/x-python-traceback', 'text/x-python3-traceback'] + url = 'https://python.org' + version_added = '1.0' tokens = { 'root': [ - (r'\n', Text), - (r'^Traceback \(most recent call last\):\n', Generic.Traceback, 'intb'), + (r'\n', Whitespace), + (r'^(\^C)?Traceback \(most recent call last\):\n', Generic.Traceback, 'intb'), (r'^During handling of the above exception, another ' r'exception occurred:\n\n', Generic.Traceback), (r'^The above exception was the direct cause of the ' @@ -753,24 +748,25 @@ class PythonTracebackLexer(RegexLexer): ], 'intb': [ (r'^( File )("[^"]+")(, line )(\d+)(, in )(.+)(\n)', - bygroups(Text, Name.Builtin, Text, Number, Text, Name, Text)), + bygroups(Text, Name.Builtin, Text, Number, Text, Name, Whitespace)), (r'^( File )("[^"]+")(, line )(\d+)(\n)', - bygroups(Text, Name.Builtin, Text, Number, Text)), + bygroups(Text, Name.Builtin, Text, Number, Whitespace)), (r'^( )(.+)(\n)', - bygroups(Text, using(PythonLexer), Text), 'markers'), + bygroups(Whitespace, using(PythonLexer), Whitespace), 'markers'), (r'^([ \t]*)(\.\.\.)(\n)', - bygroups(Text, Comment, Text)), # for doctests... + bygroups(Whitespace, Comment, Whitespace)), # for doctests... (r'^([^:]+)(: )(.+)(\n)', - bygroups(Generic.Error, Text, Name, Text), '#pop'), + bygroups(Generic.Error, Text, Name, Whitespace), '#pop'), (r'^([a-zA-Z_][\w.]*)(:?\n)', - bygroups(Generic.Error, Text), '#pop') + bygroups(Generic.Error, Whitespace), '#pop'), + default('#pop'), ], 'markers': [ # Either `PEP 657 ` # error locations in Python 3.11+, or single-caret markers # for syntax errors before that. (r'^( {4,})([~^]+)(\n)', - bygroups(Text, Punctuation.Marker, Text), + bygroups(Whitespace, Punctuation.Marker, Whitespace), '#pop'), default('#pop'), ], @@ -784,8 +780,6 @@ class Python2TracebackLexer(RegexLexer): """ For Python tracebacks. - .. versionadded:: 0.7 - .. versionchanged:: 2.5 This class has been renamed from ``PythonTracebackLexer``. ``PythonTracebackLexer`` now refers to the Python 3 variant. @@ -795,6 +789,8 @@ class Python2TracebackLexer(RegexLexer): aliases = ['py2tb'] filenames = ['*.py2tb'] mimetypes = ['text/x-python2-traceback'] + url = 'https://python.org' + version_added = '0.7' tokens = { 'root': [ @@ -808,17 +804,17 @@ class Python2TracebackLexer(RegexLexer): ], 'intb': [ (r'^( File )("[^"]+")(, line )(\d+)(, in )(.+)(\n)', - bygroups(Text, Name.Builtin, Text, Number, Text, Name, Text)), + bygroups(Text, Name.Builtin, Text, Number, Text, Name, Whitespace)), (r'^( File )("[^"]+")(, line )(\d+)(\n)', - bygroups(Text, Name.Builtin, Text, Number, Text)), + bygroups(Text, Name.Builtin, Text, Number, Whitespace)), (r'^( )(.+)(\n)', - bygroups(Text, using(Python2Lexer), Text), 'marker'), + bygroups(Text, using(Python2Lexer), Whitespace), 'marker'), (r'^([ \t]*)(\.\.\.)(\n)', - bygroups(Text, Comment, Text)), # for doctests... + bygroups(Text, Comment, Whitespace)), # for doctests... (r'^([^:]+)(: )(.+)(\n)', - bygroups(Generic.Error, Text, Name, Text), '#pop'), + bygroups(Generic.Error, Text, Name, Whitespace), '#pop'), (r'^([a-zA-Z_]\w*)(:?\n)', - bygroups(Generic.Error, Text), '#pop') + bygroups(Generic.Error, Whitespace), '#pop') ], 'marker': [ # For syntax errors. @@ -831,25 +827,24 @@ class Python2TracebackLexer(RegexLexer): class CythonLexer(RegexLexer): """ For Pyrex and Cython source code. - - .. versionadded:: 1.1 """ name = 'Cython' - url = 'http://cython.org' + url = 'https://cython.org' aliases = ['cython', 'pyx', 'pyrex'] filenames = ['*.pyx', '*.pxd', '*.pxi'] mimetypes = ['text/x-cython', 'application/x-cython'] + version_added = '1.1' tokens = { 'root': [ - (r'\n', Text), - (r'^(\s*)("""(?:.|\n)*?""")', bygroups(Text, String.Doc)), - (r"^(\s*)('''(?:.|\n)*?''')", bygroups(Text, String.Doc)), + (r'\n', Whitespace), + (r'^(\s*)("""(?:.|\n)*?""")', bygroups(Whitespace, String.Doc)), + (r"^(\s*)('''(?:.|\n)*?''')", bygroups(Whitespace, String.Doc)), (r'[^\S\n]+', Text), (r'#.*$', Comment), (r'[]{}:(),;[]', Punctuation), - (r'\\\n', Text), + (r'\\\n', Whitespace), (r'\\', Text), (r'(in|is|and|or|not)\b', Operator.Word), (r'(<)([a-zA-Z0-9.?]+)(>)', @@ -1013,13 +1008,13 @@ class DgLexer(RegexLexer): Lexer for dg, a functional and object-oriented programming language running on the CPython 3 VM. - - .. versionadded:: 1.6 """ name = 'dg' aliases = ['dg'] filenames = ['*.dg'] mimetypes = ['text/x-dg'] + url = 'http://pyos.github.io/dg' + version_added = '1.6' tokens = { 'root': [ @@ -1110,13 +1105,12 @@ class DgLexer(RegexLexer): class NumPyLexer(PythonLexer): """ A Python lexer recognizing Numerical Python builtins. - - .. versionadded:: 0.10 """ name = 'NumPy' url = 'https://numpy.org/' aliases = ['numpy'] + version_added = '0.10' # override the mimetypes to not inherit them from python mimetypes = [] diff --git a/gestao_raul/Lib/site-packages/pip/_vendor/pygments/modeline.py b/gestao_raul/Lib/site-packages/pip/_vendor/pygments/modeline.py index 4363083..e4d9fe1 100644 --- a/gestao_raul/Lib/site-packages/pip/_vendor/pygments/modeline.py +++ b/gestao_raul/Lib/site-packages/pip/_vendor/pygments/modeline.py @@ -4,7 +4,7 @@ A simple modeline parser (based on pymodeline). - :copyright: Copyright 2006-2022 by the Pygments team, see AUTHORS. + :copyright: Copyright 2006-2024 by the Pygments team, see AUTHORS. :license: BSD, see LICENSE for details. """ @@ -19,7 +19,7 @@ modeline_re = re.compile(r''' ''', re.VERBOSE) -def get_filetype_from_line(l): +def get_filetype_from_line(l): # noqa: E741 m = modeline_re.search(l) if m: return m.group(1) @@ -30,8 +30,8 @@ def get_filetype_from_buffer(buf, max_lines=5): Scan the buffer for modelines and return filetype if one is found. """ lines = buf.splitlines() - for l in lines[-1:-max_lines-1:-1]: - ret = get_filetype_from_line(l) + for line in lines[-1:-max_lines-1:-1]: + ret = get_filetype_from_line(line) if ret: return ret for i in range(max_lines, -1, -1): diff --git a/gestao_raul/Lib/site-packages/pip/_vendor/pygments/plugin.py b/gestao_raul/Lib/site-packages/pip/_vendor/pygments/plugin.py index 3590bee..2e462f2 100644 --- a/gestao_raul/Lib/site-packages/pip/_vendor/pygments/plugin.py +++ b/gestao_raul/Lib/site-packages/pip/_vendor/pygments/plugin.py @@ -2,12 +2,7 @@ pygments.plugin ~~~~~~~~~~~~~~~ - Pygments plugin interface. By default, this tries to use - ``importlib.metadata``, which is in the Python standard - library since Python 3.8, or its ``importlib_metadata`` - backport for earlier versions of Python. It falls back on - ``pkg_resources`` if not found. Finally, if ``pkg_resources`` - is not found either, no plugins are loaded at all. + Pygments plugin interface. lexer plugins:: @@ -34,9 +29,10 @@ yourfilter = yourfilter:YourFilter - :copyright: Copyright 2006-2022 by the Pygments team, see AUTHORS. + :copyright: Copyright 2006-2024 by the Pygments team, see AUTHORS. :license: BSD, see LICENSE for details. """ +from importlib.metadata import entry_points LEXER_ENTRY_POINT = 'pygments.lexers' FORMATTER_ENTRY_POINT = 'pygments.formatters' @@ -45,18 +41,6 @@ FILTER_ENTRY_POINT = 'pygments.filters' def iter_entry_points(group_name): - try: - from importlib.metadata import entry_points - except ImportError: - try: - from importlib_metadata import entry_points - except ImportError: - try: - from pip._vendor.pkg_resources import iter_entry_points - except (ImportError, OSError): - return [] - else: - return iter_entry_points(group_name) groups = entry_points() if hasattr(groups, 'select'): # New interface in Python 3.10 and newer versions of the diff --git a/gestao_raul/Lib/site-packages/pip/_vendor/pygments/regexopt.py b/gestao_raul/Lib/site-packages/pip/_vendor/pygments/regexopt.py index ae00791..c44eedb 100644 --- a/gestao_raul/Lib/site-packages/pip/_vendor/pygments/regexopt.py +++ b/gestao_raul/Lib/site-packages/pip/_vendor/pygments/regexopt.py @@ -5,7 +5,7 @@ An algorithm that generates optimized regexes for matching long lists of literal strings. - :copyright: Copyright 2006-2022 by the Pygments team, see AUTHORS. + :copyright: Copyright 2006-2024 by the Pygments team, see AUTHORS. :license: BSD, see LICENSE for details. """ diff --git a/gestao_raul/Lib/site-packages/pip/_vendor/pygments/scanner.py b/gestao_raul/Lib/site-packages/pip/_vendor/pygments/scanner.py index d47ed48..112da34 100644 --- a/gestao_raul/Lib/site-packages/pip/_vendor/pygments/scanner.py +++ b/gestao_raul/Lib/site-packages/pip/_vendor/pygments/scanner.py @@ -11,7 +11,7 @@ Have a look at the `DelphiLexer` to get an idea of how to use this scanner. - :copyright: Copyright 2006-2022 by the Pygments team, see AUTHORS. + :copyright: Copyright 2006-2024 by the Pygments team, see AUTHORS. :license: BSD, see LICENSE for details. """ import re diff --git a/gestao_raul/Lib/site-packages/pip/_vendor/pygments/sphinxext.py b/gestao_raul/Lib/site-packages/pip/_vendor/pygments/sphinxext.py index c41bd49..34077a2 100644 --- a/gestao_raul/Lib/site-packages/pip/_vendor/pygments/sphinxext.py +++ b/gestao_raul/Lib/site-packages/pip/_vendor/pygments/sphinxext.py @@ -5,7 +5,7 @@ Sphinx extension to generate automatic documentation of lexers, formatters and filters. - :copyright: Copyright 2006-2022 by the Pygments team, see AUTHORS. + :copyright: Copyright 2006-2024 by the Pygments team, see AUTHORS. :license: BSD, see LICENSE for details. """ @@ -33,6 +33,8 @@ LEXERDOC = ''' %s + %s + ''' FMTERDOC = ''' @@ -74,6 +76,8 @@ class PygmentsDoc(Directive): out = self.document_formatters() elif self.arguments[0] == 'filters': out = self.document_filters() + elif self.arguments[0] == 'lexers_overview': + out = self.document_lexers_overview() else: raise Exception('invalid argument for "pygmentsdoc" directive') node = nodes.compound() @@ -83,8 +87,72 @@ class PygmentsDoc(Directive): self.state.document.settings.record_dependencies.add(fn) return node.children + def document_lexers_overview(self): + """Generate a tabular overview of all lexers. + + The columns are the lexer name, the extensions handled by this lexer + (or "None"), the aliases and a link to the lexer class.""" + from pip._vendor.pygments.lexers._mapping import LEXERS + from pip._vendor.pygments.lexers import find_lexer_class + out = [] + + table = [] + + def format_link(name, url): + if url: + return f'`{name} <{url}>`_' + return name + + for classname, data in sorted(LEXERS.items(), key=lambda x: x[1][1].lower()): + lexer_cls = find_lexer_class(data[1]) + extensions = lexer_cls.filenames + lexer_cls.alias_filenames + + table.append({ + 'name': format_link(data[1], lexer_cls.url), + 'extensions': ', '.join(extensions).replace('*', '\\*').replace('_', '\\') or 'None', + 'aliases': ', '.join(data[2]), + 'class': f'{data[0]}.{classname}' + }) + + column_names = ['name', 'extensions', 'aliases', 'class'] + column_lengths = [max([len(row[column]) for row in table if row[column]]) + for column in column_names] + + def write_row(*columns): + """Format a table row""" + out = [] + for length, col in zip(column_lengths, columns): + if col: + out.append(col.ljust(length)) + else: + out.append(' '*length) + + return ' '.join(out) + + def write_seperator(): + """Write a table separator row""" + sep = ['='*c for c in column_lengths] + return write_row(*sep) + + out.append(write_seperator()) + out.append(write_row('Name', 'Extension(s)', 'Short name(s)', 'Lexer class')) + out.append(write_seperator()) + for row in table: + out.append(write_row( + row['name'], + row['extensions'], + row['aliases'], + f':class:`~{row["class"]}`')) + out.append(write_seperator()) + + return '\n'.join(out) + def document_lexers(self): from pip._vendor.pygments.lexers._mapping import LEXERS + from pip._vendor import pygments + import inspect + import pathlib + out = [] modules = {} moduledocstrings = {} @@ -94,16 +162,40 @@ class PygmentsDoc(Directive): self.filenames.add(mod.__file__) cls = getattr(mod, classname) if not cls.__doc__: - print("Warning: %s does not have a docstring." % classname) + print(f"Warning: {classname} does not have a docstring.") docstring = cls.__doc__ if isinstance(docstring, bytes): docstring = docstring.decode('utf8') + + example_file = getattr(cls, '_example', None) + if example_file: + p = pathlib.Path(inspect.getabsfile(pygments)).parent.parent /\ + 'tests' / 'examplefiles' / example_file + content = p.read_text(encoding='utf-8') + if not content: + raise Exception( + f"Empty example file '{example_file}' for lexer " + f"{classname}") + + if data[2]: + lexer_name = data[2][0] + docstring += '\n\n .. admonition:: Example\n' + docstring += f'\n .. code-block:: {lexer_name}\n\n' + for line in content.splitlines(): + docstring += f' {line}\n' + + if cls.version_added: + version_line = f'.. versionadded:: {cls.version_added}' + else: + version_line = '' + modules.setdefault(module, []).append(( classname, ', '.join(data[2]) or 'None', ', '.join(data[3]).replace('*', '\\*').replace('_', '\\') or 'None', ', '.join(data[4]) or 'None', - docstring)) + docstring, + version_line)) if module not in moduledocstrings: moddoc = mod.__doc__ if isinstance(moddoc, bytes): @@ -112,7 +204,7 @@ class PygmentsDoc(Directive): for module, lexers in sorted(modules.items(), key=lambda x: x[0]): if moduledocstrings[module] is None: - raise Exception("Missing docstring for %s" % (module,)) + raise Exception(f"Missing docstring for {module}") heading = moduledocstrings[module].splitlines()[4].strip().rstrip('.') out.append(MODULEDOC % (module, heading, '-'*len(heading))) for data in lexers: diff --git a/gestao_raul/Lib/site-packages/pip/_vendor/pygments/style.py b/gestao_raul/Lib/site-packages/pip/_vendor/pygments/style.py index 84abbc2..076e63f 100644 --- a/gestao_raul/Lib/site-packages/pip/_vendor/pygments/style.py +++ b/gestao_raul/Lib/site-packages/pip/_vendor/pygments/style.py @@ -4,7 +4,7 @@ Basic style object. - :copyright: Copyright 2006-2022 by the Pygments team, see AUTHORS. + :copyright: Copyright 2006-2024 by the Pygments team, see AUTHORS. :license: BSD, see LICENSE for details. """ @@ -76,7 +76,7 @@ class StyleMeta(type): return '' elif text.startswith('var') or text.startswith('calc'): return text - assert False, "wrong color format %r" % text + assert False, f"wrong color format {text!r}" _styles = obj._styles = {} @@ -190,6 +190,12 @@ class Style(metaclass=StyleMeta): #: Style definitions for individual token types. styles = {} + #: user-friendly style name (used when selecting the style, so this + # should be all-lowercase, no spaces, hyphens) + name = 'unnamed' + + aliases = [] + # Attribute for lexers defined within Pygments. If set # to True, the style is not shown in the style gallery # on the website. This is intended for language-specific diff --git a/gestao_raul/Lib/site-packages/pip/_vendor/pygments/styles/__init__.py b/gestao_raul/Lib/site-packages/pip/_vendor/pygments/styles/__init__.py index 44cc0ef..712f6e6 100644 --- a/gestao_raul/Lib/site-packages/pip/_vendor/pygments/styles/__init__.py +++ b/gestao_raul/Lib/site-packages/pip/_vendor/pygments/styles/__init__.py @@ -4,70 +4,33 @@ Contains built-in styles. - :copyright: Copyright 2006-2022 by the Pygments team, see AUTHORS. + :copyright: Copyright 2006-2024 by the Pygments team, see AUTHORS. :license: BSD, see LICENSE for details. """ from pip._vendor.pygments.plugin import find_plugin_styles from pip._vendor.pygments.util import ClassNotFound +from pip._vendor.pygments.styles._mapping import STYLES +#: A dictionary of built-in styles, mapping style names to +#: ``'submodule::classname'`` strings. +#: This list is deprecated. Use `pygments.styles.STYLES` instead +STYLE_MAP = {v[1]: v[0].split('.')[-1] + '::' + k for k, v in STYLES.items()} -#: Maps style names to 'submodule::classname'. -STYLE_MAP = { - 'default': 'default::DefaultStyle', - 'emacs': 'emacs::EmacsStyle', - 'friendly': 'friendly::FriendlyStyle', - 'friendly_grayscale': 'friendly_grayscale::FriendlyGrayscaleStyle', - 'colorful': 'colorful::ColorfulStyle', - 'autumn': 'autumn::AutumnStyle', - 'murphy': 'murphy::MurphyStyle', - 'manni': 'manni::ManniStyle', - 'material': 'material::MaterialStyle', - 'monokai': 'monokai::MonokaiStyle', - 'perldoc': 'perldoc::PerldocStyle', - 'pastie': 'pastie::PastieStyle', - 'borland': 'borland::BorlandStyle', - 'trac': 'trac::TracStyle', - 'native': 'native::NativeStyle', - 'fruity': 'fruity::FruityStyle', - 'bw': 'bw::BlackWhiteStyle', - 'vim': 'vim::VimStyle', - 'vs': 'vs::VisualStudioStyle', - 'tango': 'tango::TangoStyle', - 'rrt': 'rrt::RrtStyle', - 'xcode': 'xcode::XcodeStyle', - 'igor': 'igor::IgorStyle', - 'paraiso-light': 'paraiso_light::ParaisoLightStyle', - 'paraiso-dark': 'paraiso_dark::ParaisoDarkStyle', - 'lovelace': 'lovelace::LovelaceStyle', - 'algol': 'algol::AlgolStyle', - 'algol_nu': 'algol_nu::Algol_NuStyle', - 'arduino': 'arduino::ArduinoStyle', - 'rainbow_dash': 'rainbow_dash::RainbowDashStyle', - 'abap': 'abap::AbapStyle', - 'solarized-dark': 'solarized::SolarizedDarkStyle', - 'solarized-light': 'solarized::SolarizedLightStyle', - 'sas': 'sas::SasStyle', - 'staroffice' : 'staroffice::StarofficeStyle', - 'stata': 'stata_light::StataLightStyle', - 'stata-light': 'stata_light::StataLightStyle', - 'stata-dark': 'stata_dark::StataDarkStyle', - 'inkpot': 'inkpot::InkPotStyle', - 'zenburn': 'zenburn::ZenburnStyle', - 'gruvbox-dark': 'gruvbox::GruvboxDarkStyle', - 'gruvbox-light': 'gruvbox::GruvboxLightStyle', - 'dracula': 'dracula::DraculaStyle', - 'one-dark': 'onedark::OneDarkStyle', - 'lilypond' : 'lilypond::LilyPondStyle', - 'nord': 'nord::NordStyle', - 'nord-darker': 'nord::NordDarkerStyle', - 'github-dark': 'gh_dark::GhDarkStyle' -} +#: Internal reverse mapping to make `get_style_by_name` more efficient +_STYLE_NAME_TO_MODULE_MAP = {v[1]: (v[0], k) for k, v in STYLES.items()} def get_style_by_name(name): - if name in STYLE_MAP: - mod, cls = STYLE_MAP[name].split('::') + """ + Return a style class by its short name. The names of the builtin styles + are listed in :data:`pygments.styles.STYLE_MAP`. + + Will raise :exc:`pygments.util.ClassNotFound` if no style of that name is + found. + """ + if name in _STYLE_NAME_TO_MODULE_MAP: + mod, cls = _STYLE_NAME_TO_MODULE_MAP[name] builtin = "yes" else: for found_name, style in find_plugin_styles(): @@ -75,23 +38,24 @@ def get_style_by_name(name): return style # perhaps it got dropped into our styles package builtin = "" - mod = name + mod = 'pygments.styles.' + name cls = name.title() + "Style" try: - mod = __import__('pygments.styles.' + mod, None, None, [cls]) + mod = __import__(mod, None, None, [cls]) except ImportError: - raise ClassNotFound("Could not find style module %r" % mod + - (builtin and ", though it should be builtin") + ".") + raise ClassNotFound(f"Could not find style module {mod!r}" + + (builtin and ", though it should be builtin") + + ".") try: return getattr(mod, cls) except AttributeError: - raise ClassNotFound("Could not find style class %r in style module." % cls) + raise ClassNotFound(f"Could not find style class {cls!r} in style module.") def get_all_styles(): - """Return a generator for all styles by name, - both builtin and plugin.""" - yield from STYLE_MAP + """Return a generator for all styles by name, both builtin and plugin.""" + for v in STYLES.values(): + yield v[1] for name, _ in find_plugin_styles(): yield name diff --git a/gestao_raul/Lib/site-packages/pip/_vendor/pygments/styles/__pycache__/__init__.cpython-310.pyc b/gestao_raul/Lib/site-packages/pip/_vendor/pygments/styles/__pycache__/__init__.cpython-310.pyc index 06f9fe83fb9e23e8b39a80becf69c86befffbdd2..101aba99e87fd35a2e767c914d94cf8bf22c6752 100644 GIT binary patch literal 2056 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 diff --git a/gestao_raul/Lib/site-packages/pip/_vendor/pygments/styles/__pycache__/_mapping.cpython-310.pyc b/gestao_raul/Lib/site-packages/pip/_vendor/pygments/styles/__pycache__/_mapping.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..c079e8d4251aafbeeb36ebfe0a2ee987d3cba760 GIT binary patch literal 3306 zcmZ`*S92RT5GFyelcI_(7rDx5N@6L!IF4iWIFV#Ul%0gb84k!jkvBTtajsA%|At@l zlo>xH`7wFNLz>g8(-Xxhdxrzb2qrc9u(|ni!PAJ(z_W1;w`tx1yy8Y!@Rl*GlR6Dr*(pj-k!Ox`$ewdQ&r9XV&qbII|3$ocj1q zq?DOA>Xsq7hZU~x<#FaWHo?r6@`0eT;YrQWdul4C$5Vj}EuqZK+u-S@C51;6q44u0 z6NZpw=RMbJno>2Xr~)@nu%H#1!h*qSyRSENSChK&gSzS-C)K?$v<1sHmsoGbaOg#@0GRv6@xw!=Kb9U3GEKTn2+ zl-aE28Em*r_)#VdAK1d}Vau9;wTR&CaCYRu^6W%^+1cS2^R zE~$K6eI|y@%VA|GO1`9$r=%s6*%jN<-Hy~LyR#Fxc|x?IX0@@z>|Lo*>Y(1J0Q$Sx zy6!f->UqB-l%uP**REPO2ITvyTyVO%x-bUxW1)UcuQ%it+x|&(?` zoee*U&5*!T(h|ztx@B6stT&mm&rRXy$o4Q1=h zz|9k)6`I0^WrJUbnkJ^lJ=!x4(%zdK2Cj3xa_N@Hc;MOW!aXg z`3It#LSvw`M>m%VC0Un9xn; zxccyfwgNX#h&IsRM^ssAOS28IYCIVllBlc;S8i6VJzSU5;JLw`luR64gl)S#hA@=i zFo(wwLc+dsG9Alcw%*mCJJK`zxtxjF)BcO4(D(Hdgo{0XFd)ZeHh#+Vn#MDITZVTp zy352y`gE5KPTifl$LL5GJC+sv|AnI*WtW+Ci^qdT2B8$Viyt#ieUua>&uzWQV+fL< zToKw1CvBPKt`f(Mngtq<2aOy1KVl)#0g&O$$6jyA;Jbciu%HF&ZWRQbPWrG4eO1uC3ol;{eg~?@96~jjvgZ4(!=B%I!V5! zN61(7DEX2eBVW+t, !"``), built up using :class:`Word`, -:class:`Literal`, and :class:`And` elements -(the :meth:`'+'` operators create :class:`And` expressions, -and the strings are auto-converted to :class:`Literal` expressions):: - - from pip._vendor.pyparsing import Word, alphas - - # define grammar of a greeting - greet = Word(alphas) + "," + Word(alphas) + "!" - - hello = "Hello, World!" - print(hello, "->", greet.parse_string(hello)) - -The program outputs the following:: - - Hello, World! -> ['Hello', ',', 'World', '!'] - -The Python representation of the grammar is quite readable, owing to the -self-explanatory class names, and the use of :class:`'+'`, -:class:`'|'`, :class:`'^'` and :class:`'&'` operators. - -The :class:`ParseResults` object returned from -:class:`ParserElement.parseString` can be -accessed as a nested list, a dictionary, or an object with named -attributes. - -The pyparsing module handles some of the problems that are typically -vexing when writing text parsers: - - - extra or missing whitespace (the above program will also handle - "Hello,World!", "Hello , World !", etc.) - - quoted strings - - embedded comments - - -Getting Started - ------------------ -Visit the classes :class:`ParserElement` and :class:`ParseResults` to -see the base classes that most other pyparsing -classes inherit from. Use the docstrings for examples of how to: - - - construct literal match expressions from :class:`Literal` and - :class:`CaselessLiteral` classes - - construct character word-group expressions using the :class:`Word` - class - - see how to create repetitive expressions using :class:`ZeroOrMore` - and :class:`OneOrMore` classes - - use :class:`'+'`, :class:`'|'`, :class:`'^'`, - and :class:`'&'` operators to combine simple expressions into - more complex ones - - associate names with your parsed results using - :class:`ParserElement.setResultsName` - - access the parsed data, which is returned as a :class:`ParseResults` - object - - find some helpful expression short-cuts like :class:`delimitedList` - and :class:`oneOf` - - find more useful common expressions in the :class:`pyparsing_common` - namespace class -""" -from typing import NamedTuple - - -class version_info(NamedTuple): - major: int - minor: int - micro: int - releaselevel: str - serial: int - - @property - def __version__(self): - return ( - "{}.{}.{}".format(self.major, self.minor, self.micro) - + ( - "{}{}{}".format( - "r" if self.releaselevel[0] == "c" else "", - self.releaselevel[0], - self.serial, - ), - "", - )[self.releaselevel == "final"] - ) - - def __str__(self): - return "{} {} / {}".format(__name__, self.__version__, __version_time__) - - def __repr__(self): - return "{}.{}({})".format( - __name__, - type(self).__name__, - ", ".join("{}={!r}".format(*nv) for nv in zip(self._fields, self)), - ) - - -__version_info__ = version_info(3, 0, 9, "final", 0) -__version_time__ = "05 May 2022 07:02 UTC" -__version__ = __version_info__.__version__ -__versionTime__ = __version_time__ -__author__ = "Paul McGuire " - -from .util import * -from .exceptions import * -from .actions import * -from .core import __diag__, __compat__ -from .results import * -from .core import * -from .core import _builtin_exprs as core_builtin_exprs -from .helpers import * -from .helpers import _builtin_exprs as helper_builtin_exprs - -from .unicode import unicode_set, UnicodeRangeList, pyparsing_unicode as unicode -from .testing import pyparsing_test as testing -from .common import ( - pyparsing_common as common, - _builtin_exprs as common_builtin_exprs, -) - -# define backward compat synonyms -if "pyparsing_unicode" not in globals(): - pyparsing_unicode = unicode -if "pyparsing_common" not in globals(): - pyparsing_common = common -if "pyparsing_test" not in globals(): - pyparsing_test = testing - -core_builtin_exprs += common_builtin_exprs + helper_builtin_exprs - - -__all__ = [ - "__version__", - "__version_time__", - "__author__", - "__compat__", - "__diag__", - "And", - "AtLineStart", - "AtStringStart", - "CaselessKeyword", - "CaselessLiteral", - "CharsNotIn", - "Combine", - "Dict", - "Each", - "Empty", - "FollowedBy", - "Forward", - "GoToColumn", - "Group", - "IndentedBlock", - "Keyword", - "LineEnd", - "LineStart", - "Literal", - "Located", - "PrecededBy", - "MatchFirst", - "NoMatch", - "NotAny", - "OneOrMore", - "OnlyOnce", - "OpAssoc", - "Opt", - "Optional", - "Or", - "ParseBaseException", - "ParseElementEnhance", - "ParseException", - "ParseExpression", - "ParseFatalException", - "ParseResults", - "ParseSyntaxException", - "ParserElement", - "PositionToken", - "QuotedString", - "RecursiveGrammarException", - "Regex", - "SkipTo", - "StringEnd", - "StringStart", - "Suppress", - "Token", - "TokenConverter", - "White", - "Word", - "WordEnd", - "WordStart", - "ZeroOrMore", - "Char", - "alphanums", - "alphas", - "alphas8bit", - "any_close_tag", - "any_open_tag", - "c_style_comment", - "col", - "common_html_entity", - "counted_array", - "cpp_style_comment", - "dbl_quoted_string", - "dbl_slash_comment", - "delimited_list", - "dict_of", - "empty", - "hexnums", - "html_comment", - "identchars", - "identbodychars", - "java_style_comment", - "line", - "line_end", - "line_start", - "lineno", - "make_html_tags", - "make_xml_tags", - "match_only_at_col", - "match_previous_expr", - "match_previous_literal", - "nested_expr", - "null_debug_action", - "nums", - "one_of", - "printables", - "punc8bit", - "python_style_comment", - "quoted_string", - "remove_quotes", - "replace_with", - "replace_html_entity", - "rest_of_line", - "sgl_quoted_string", - "srange", - "string_end", - "string_start", - "trace_parse_action", - "unicode_string", - "with_attribute", - "indentedBlock", - "original_text_for", - "ungroup", - "infix_notation", - "locatedExpr", - "with_class", - "CloseMatch", - "token_map", - "pyparsing_common", - "pyparsing_unicode", - "unicode_set", - "condition_as_parse_action", - "pyparsing_test", - # pre-PEP8 compatibility names - "__versionTime__", - "anyCloseTag", - "anyOpenTag", - "cStyleComment", - "commonHTMLEntity", - "countedArray", - "cppStyleComment", - "dblQuotedString", - "dblSlashComment", - "delimitedList", - "dictOf", - "htmlComment", - "javaStyleComment", - "lineEnd", - "lineStart", - "makeHTMLTags", - "makeXMLTags", - "matchOnlyAtCol", - "matchPreviousExpr", - "matchPreviousLiteral", - "nestedExpr", - "nullDebugAction", - "oneOf", - "opAssoc", - "pythonStyleComment", - "quotedString", - "removeQuotes", - "replaceHTMLEntity", - "replaceWith", - "restOfLine", - "sglQuotedString", - "stringEnd", - "stringStart", - "traceParseAction", - "unicodeString", - "withAttribute", - "indentedBlock", - "originalTextFor", - "infixNotation", - "locatedExpr", - "withClass", - "tokenMap", - "conditionAsParseAction", - "autoname_elements", -] diff --git a/gestao_raul/Lib/site-packages/pip/_vendor/pyparsing/__pycache__/__init__.cpython-310.pyc b/gestao_raul/Lib/site-packages/pip/_vendor/pyparsing/__pycache__/__init__.cpython-310.pyc deleted file mode 100644 index b12652604b2fcdcd661544727bf35c677ab4f9fd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7129 zcmb_h&u<*bb)MfdY|ikPD6J&hNr?tR(Hc_10)Y*IODxURY8^|YB2wO9BB$BxF3z;n z-8Ea?LvpAUl0bXTHHTc*fiM1ha;s}j`yV6*4EuYpx`#8|1#$_sQ{7cv_3G7o-}~xS zt?G1~68_%(&#V4_{j^m2Z>miHHBk8!zqDO0m4Z^Q6qJKXRE{gXO1bp36jX!SH>IE^ zD<7)8s;mZed~XEJp!}iUs|BrIUDn<-dJS3cHG{ccD{zAOXzr-QPbYuQ^Rpeb<4&&= zFZ345_WNS~z0J=KzAyEb^KUD8+X~ulaN9z(8sF^QjBoXB#UJ%nxot7J9pCBQ=J%!O zZv3O(UG)Dk>dW#cA4+Fs9m&<+N5M*7OXc0(kAfR{?NZ+E-I2@k$MVKUrJt92%l%TY z`k&?AUj;W0OB=VmyYr=zGaL^+orXzY#3~p?Qf!L7$V*e13NHynEVF?MQjsYU$kQ;9 z+$t}mKgy&ihW51=#}MOu^8fkgI7b7_ab3ZXG!tHwNu79Ecm|b*L#;f2KwA1*q7lo1 z_Kww)YH1h`vA9Cft~g7#L!Ihd_F;*iHsAN48iIf2;6-iGgj)(fWNXJR$U5HaiW{Z+`g<3RS z>}CFd8mA_KQ%Kj`+)nN(Ecz@A$WbB+Pqe4Uq@$mEFB^Cnt3tYyVW4cLM}Ec&%4ZZo zsHLApV-Y6e#TdR$wjAdRsihz@3rs;hX*^9X#o8A#id0v8sdNdLZk6HW2#}FSJ zcb%g8EQGVY=(x-1D_VDx;8@5=#xluL=RQsQnDF}ec>Tfp_6yQiKe3;;To+Tj?#{7L zLx{?hPAyb0CZE%ayYg(;p#UJMup1l#d%!H-C{vrT<(br(b#5`fP;%OF8;>75j=$mCneb0oE4{2VQE&{Im$U!dbAbH?cH}WwVP?MlN5mY(8eGgEB81Zfg-L+Y zuSP%zx_N-FvD6q%ogI?eE90-N=JTHij<02ZNTBH?e=x1WHKrtyZrI>KB<7slsHnU10?1u9S8 zAP%vLY@`$5itsXl|16Z*6Ne1RW8s4ePox9VqOb~tM^T%|l&~3vX@)f-#(gF@J!U?` zh;-`XZ1`s$%9svK#0DCXdPIAR7vgY&;BoFN(&_ znYt1ve8<2|=wg^S3t8e-nsNWS=~&xk<(+G6>Mb>R z4F!3F9kB0k7Vv#xg`l3)>OenNTC%w5Ks`ug{-v-x%|m=p489_RtET^x47#ND^gQc7 zKnQkMj!!77%JY-yHGqf}iHV^%!4giq5DKwP8X`kee&~Vtn92l)G7=BKg!a7vOv21! z_tj~4&5}tfvz&wW!2>W4L^GE#lyX^tmw8=8a)=ZQggYTACY!=eGoYpkEy<8X?}u={NyolHSkZ?Ehg$S90~%-|Vl?0bHL9S%-eT^7zZg4akkMX*Yy zrbsEdnFiK`+g#h1rL!HGb}Zb!qhrKI**IjF;AjN%`_wf3S4HJh{L+^wWT{ui38V6= zB&)I(l(+4(l0U0>;xrM|@_HT52Aws&DSas8bkPdtzA4!g2A*?48##K%w2@~}p6Q0k zsWSE0d!sZSVPYS?R;H~HejI~mGBOP$J)sx*IPOgT=$#Hid-$b)haxC{Tl%{6ri@<& zzv}O*L4{jtLG=!fLvJg3HK->z3gIia;aNwo#wqo$1xre1%h{1J2W>pnI(Pr2F~MKkZu!jsqFW4Q@GzV*=SHBzpJdCK*0;`WCw z%o%2`i!98{yZCNx?7qRY>1`A%)mmk>+$z_~l|NPLl|QzcmH(~$x$@`B+eKgU2eQhd z>VD7Qv_LjEt%VGpvAHuC8)mEQUpnvJ3;g#G#YRnc(95)3mtg3+dWEV>SMsxvn-|c` z#<9gR^=i75mbvZ)Drp79Qu%VV&?{GyJA6+?Iy$q8UA$NoGx+yI`3(-q-&XD6IIEHG z(OUToUw&6+_3QhWbL{f_Q2w&g6*IC)2?~vres@v)E711a)_a7V(DWoFl&emkuMuTV2H!#xFkgG^jd!xd{R4>CJ40#&LC`k1WSsAXeV&Bo!WI131 z2)SFX{ps@N4=S*~;nzcOfel_wU>t<60$(uzSPLf2~1UE&WD%@pSNO^En z$;ONYeG@b4pHM+~nkonbnyl^Pm#(64N-Zd6|5YkZxz%Y`xyN_Z?YlV?x{c!U=A*wA z&%Lqu_|eB7i$_0y{ODux>S*us!3)Hdcth92G3{6$VhkS_Tt4Q7iA&B)H>zfSl!U$tq>KH>EWNUomtNAB z#P()+GL@TmBq>*oNDwp3w{+EFiCq7T*0xE-Ln^jNx!+p@l4VFQ9N@6yz?&P?<36=k zcay-(?`F@i6LYd>I=k5+XV|v7SmZdrmSaj^%%mYtdW^G&{3hL3*{>4Q+*7=%o7!i{ zyiJV`0;c{X9%f_Xe6HwZB!gd$P4jc5&pk+Uo~k3Yr=n4unEF%7j7;ZONq{pC`T@jm zO|zJ|Njg4(x^q{`qK%Koruhtj#~936&e@yEj ziN*(sFHQ4cxJ&7UsU8e7v=8m|h^ZWCv%=f_FR|S`x$q@_F*mp^KWRTnkeEZrf^D31 zTFmRk#YsNubEFp0m8drN$}QN6O6E5oFr=Y1g+7N4Q-=dTZ)-f(3r; zjK3Vf{H8|Ps%cWm?x7b89_K3kG&O>Wnd6gsGKy2vu!nZz*yk@!!pwAVq2l_HN~N25 zebc5Ys376mq7SwoN0L()AjDLC6`2)_e|M0@k&D(4Q0w?=L&!IhJyB*M_TEanNLVH{9j;$s&0JkZ zcHs|P1t7bi9x}`g+XN4ug=&;C0hwFZ8lyaZ=Iz1Rc3MtGQRD{lWYl+YZ~?$f&AJS^ zCoSLMyArx{NI}-4#AoNN4*3@C+TuF1R_g3kqMll*OAHMQz%d=#rAr z;R0A`IqhF}TqD&)pT)N0_kWBg71@?#2fQ8G7&dhZHa% zWya-_4V5pBo^m5_Z`lsaej!I%UrJyy;5r#R8j0fF^cU!Y%-b zjgBu4^?y*OIU2Y}H{_@z<1YO+UV+w?`;UZIp$P!T+1c_s`TcEx)9u=Hsl-ISFScrU~oO z{UGNxMDkkBrcwsv8zD zb%JD?mXGT_EbRx)LAt=zz2s#b1QC@)>&?6i%tU0$uU RQFj`(vV-sRYggLUzX07&Sx^7~ diff --git a/gestao_raul/Lib/site-packages/pip/_vendor/pyparsing/__pycache__/actions.cpython-310.pyc b/gestao_raul/Lib/site-packages/pip/_vendor/pyparsing/__pycache__/actions.cpython-310.pyc deleted file mode 100644 index 6a482c29415c4edb73f6f33e9a1f3e4f920b733e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7179 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 diff --git a/gestao_raul/Lib/site-packages/pip/_vendor/pyparsing/__pycache__/common.cpython-310.pyc b/gestao_raul/Lib/site-packages/pip/_vendor/pyparsing/__pycache__/common.cpython-310.pyc deleted file mode 100644 index 81910efedd2f5c7b9c980f894969f4c131594467..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10105 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

%?q%Efc?ZiH(ybWG{t+fruqy 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 I{&JoF4|;CudH?_b diff --git a/gestao_raul/Lib/site-packages/pip/_vendor/pyparsing/__pycache__/exceptions.cpython-310.pyc b/gestao_raul/Lib/site-packages/pip/_vendor/pyparsing/__pycache__/exceptions.cpython-310.pyc deleted file mode 100644 index f8115065917a07c2220ebfa03b016854ea056033..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9063 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 WD`v%-M@mTh!`TmK7iNnK<^KYPHJr!* diff --git a/gestao_raul/Lib/site-packages/pip/_vendor/pyparsing/__pycache__/helpers.cpython-310.pyc b/gestao_raul/Lib/site-packages/pip/_vendor/pyparsing/__pycache__/helpers.cpython-310.pyc deleted file mode 100644 index 8b863cc9f15f4c000b8d54f268f3a08712c5efe4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 35340 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 diff --git a/gestao_raul/Lib/site-packages/pip/_vendor/pyparsing/__pycache__/results.cpython-310.pyc b/gestao_raul/Lib/site-packages/pip/_vendor/pyparsing/__pycache__/results.cpython-310.pyc deleted file mode 100644 index 3bff480083090cb93973cbc3abff0ad411a83d2b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 24781 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 diff --git a/gestao_raul/Lib/site-packages/pip/_vendor/pyparsing/__pycache__/testing.cpython-310.pyc b/gestao_raul/Lib/site-packages/pip/_vendor/pyparsing/__pycache__/testing.cpython-310.pyc deleted file mode 100644 index 42419ea409d5dea9be5f5392475fbcb40f8c627f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 12097 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 I%yC%$e{lG}`~Uy| diff --git a/gestao_raul/Lib/site-packages/pip/_vendor/pyparsing/__pycache__/util.cpython-310.pyc b/gestao_raul/Lib/site-packages/pip/_vendor/pyparsing/__pycache__/util.cpython-310.pyc deleted file mode 100644 index bb82eadf12333da441380919c6f51cb646b7bef2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8605 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 MNy)5z@#4b&0AJAdRR910 diff --git a/gestao_raul/Lib/site-packages/pip/_vendor/pyparsing/actions.py b/gestao_raul/Lib/site-packages/pip/_vendor/pyparsing/actions.py deleted file mode 100644 index f72c66e..0000000 --- a/gestao_raul/Lib/site-packages/pip/_vendor/pyparsing/actions.py +++ /dev/null @@ -1,207 +0,0 @@ -# actions.py - -from .exceptions import ParseException -from .util import col - - -class OnlyOnce: - """ - Wrapper for parse actions, to ensure they are only called once. - """ - - def __init__(self, method_call): - from .core import _trim_arity - - self.callable = _trim_arity(method_call) - self.called = False - - def __call__(self, s, l, t): - if not self.called: - results = self.callable(s, l, t) - self.called = True - return results - raise ParseException(s, l, "OnlyOnce obj called multiple times w/out reset") - - def reset(self): - """ - Allow the associated parse action to be called once more. - """ - - self.called = False - - -def match_only_at_col(n): - """ - Helper method for defining parse actions that require matching at - a specific column in the input text. - """ - - def verify_col(strg, locn, toks): - if col(locn, strg) != n: - raise ParseException(strg, locn, "matched token not at column {}".format(n)) - - return verify_col - - -def replace_with(repl_str): - """ - Helper method for common parse actions that simply return - a literal value. Especially useful when used with - :class:`transform_string` (). - - Example:: - - num = Word(nums).set_parse_action(lambda toks: int(toks[0])) - na = one_of("N/A NA").set_parse_action(replace_with(math.nan)) - term = na | num - - term[1, ...].parse_string("324 234 N/A 234") # -> [324, 234, nan, 234] - """ - return lambda s, l, t: [repl_str] - - -def remove_quotes(s, l, t): - """ - Helper parse action for removing quotation marks from parsed - quoted strings. - - Example:: - - # by default, quotation marks are included in parsed results - quoted_string.parse_string("'Now is the Winter of our Discontent'") # -> ["'Now is the Winter of our Discontent'"] - - # use remove_quotes to strip quotation marks from parsed results - quoted_string.set_parse_action(remove_quotes) - quoted_string.parse_string("'Now is the Winter of our Discontent'") # -> ["Now is the Winter of our Discontent"] - """ - return t[0][1:-1] - - -def with_attribute(*args, **attr_dict): - """ - Helper to create a validating parse action to be used with start - tags created with :class:`make_xml_tags` or - :class:`make_html_tags`. Use ``with_attribute`` to qualify - a starting tag with a required attribute value, to avoid false - matches on common tags such as ```` or ``

``. - - Call ``with_attribute`` with a series of attribute names and - values. Specify the list of filter attributes names and values as: - - - keyword arguments, as in ``(align="right")``, or - - as an explicit dict with ``**`` operator, when an attribute - name is also a Python reserved word, as in ``**{"class":"Customer", "align":"right"}`` - - a list of name-value tuples, as in ``(("ns1:class", "Customer"), ("ns2:align", "right"))`` - - For attribute names with a namespace prefix, you must use the second - form. Attribute names are matched insensitive to upper/lower case. - - If just testing for ``class`` (with or without a namespace), use - :class:`with_class`. - - To verify that the attribute exists, but without specifying a value, - pass ``with_attribute.ANY_VALUE`` as the value. - - Example:: - - html = ''' -
- Some text -
1 4 0 1 0
-
1,3 2,3 1,1
-
this has no type
-
- - ''' - div,div_end = make_html_tags("div") - - # only match div tag having a type attribute with value "grid" - div_grid = div().set_parse_action(with_attribute(type="grid")) - grid_expr = div_grid + SkipTo(div | div_end)("body") - for grid_header in grid_expr.search_string(html): - print(grid_header.body) - - # construct a match with any div tag having a type attribute, regardless of the value - div_any_type = div().set_parse_action(with_attribute(type=with_attribute.ANY_VALUE)) - div_expr = div_any_type + SkipTo(div | div_end)("body") - for div_header in div_expr.search_string(html): - print(div_header.body) - - prints:: - - 1 4 0 1 0 - - 1 4 0 1 0 - 1,3 2,3 1,1 - """ - if args: - attrs = args[:] - else: - attrs = attr_dict.items() - attrs = [(k, v) for k, v in attrs] - - def pa(s, l, tokens): - for attrName, attrValue in attrs: - if attrName not in tokens: - raise ParseException(s, l, "no matching attribute " + attrName) - if attrValue != with_attribute.ANY_VALUE and tokens[attrName] != attrValue: - raise ParseException( - s, - l, - "attribute {!r} has value {!r}, must be {!r}".format( - attrName, tokens[attrName], attrValue - ), - ) - - return pa - - -with_attribute.ANY_VALUE = object() - - -def with_class(classname, namespace=""): - """ - Simplified version of :class:`with_attribute` when - matching on a div class - made difficult because ``class`` is - a reserved word in Python. - - Example:: - - html = ''' -
- Some text -
1 4 0 1 0
-
1,3 2,3 1,1
-
this <div> has no class
-
- - ''' - div,div_end = make_html_tags("div") - div_grid = div().set_parse_action(with_class("grid")) - - grid_expr = div_grid + SkipTo(div | div_end)("body") - for grid_header in grid_expr.search_string(html): - print(grid_header.body) - - div_any_type = div().set_parse_action(with_class(withAttribute.ANY_VALUE)) - div_expr = div_any_type + SkipTo(div | div_end)("body") - for div_header in div_expr.search_string(html): - print(div_header.body) - - prints:: - - 1 4 0 1 0 - - 1 4 0 1 0 - 1,3 2,3 1,1 - """ - classattr = "{}:class".format(namespace) if namespace else "class" - return with_attribute(**{classattr: classname}) - - -# pre-PEP8 compatibility symbols -replaceWith = replace_with -removeQuotes = remove_quotes -withAttribute = with_attribute -withClass = with_class -matchOnlyAtCol = match_only_at_col diff --git a/gestao_raul/Lib/site-packages/pip/_vendor/pyparsing/common.py b/gestao_raul/Lib/site-packages/pip/_vendor/pyparsing/common.py deleted file mode 100644 index 1859fb7..0000000 --- a/gestao_raul/Lib/site-packages/pip/_vendor/pyparsing/common.py +++ /dev/null @@ -1,424 +0,0 @@ -# common.py -from .core import * -from .helpers import delimited_list, any_open_tag, any_close_tag -from datetime import datetime - - -# some other useful expressions - using lower-case class name since we are really using this as a namespace -class pyparsing_common: - """Here are some common low-level expressions that may be useful in - jump-starting parser development: - - - numeric forms (:class:`integers`, :class:`reals`, - :class:`scientific notation`) - - common :class:`programming identifiers` - - network addresses (:class:`MAC`, - :class:`IPv4`, :class:`IPv6`) - - ISO8601 :class:`dates` and - :class:`datetime` - - :class:`UUID` - - :class:`comma-separated list` - - :class:`url` - - Parse actions: - - - :class:`convertToInteger` - - :class:`convertToFloat` - - :class:`convertToDate` - - :class:`convertToDatetime` - - :class:`stripHTMLTags` - - :class:`upcaseTokens` - - :class:`downcaseTokens` - - Example:: - - pyparsing_common.number.runTests(''' - # any int or real number, returned as the appropriate type - 100 - -100 - +100 - 3.14159 - 6.02e23 - 1e-12 - ''') - - pyparsing_common.fnumber.runTests(''' - # any int or real number, returned as float - 100 - -100 - +100 - 3.14159 - 6.02e23 - 1e-12 - ''') - - pyparsing_common.hex_integer.runTests(''' - # hex numbers - 100 - FF - ''') - - pyparsing_common.fraction.runTests(''' - # fractions - 1/2 - -3/4 - ''') - - pyparsing_common.mixed_integer.runTests(''' - # mixed fractions - 1 - 1/2 - -3/4 - 1-3/4 - ''') - - import uuid - pyparsing_common.uuid.setParseAction(tokenMap(uuid.UUID)) - pyparsing_common.uuid.runTests(''' - # uuid - 12345678-1234-5678-1234-567812345678 - ''') - - prints:: - - # any int or real number, returned as the appropriate type - 100 - [100] - - -100 - [-100] - - +100 - [100] - - 3.14159 - [3.14159] - - 6.02e23 - [6.02e+23] - - 1e-12 - [1e-12] - - # any int or real number, returned as float - 100 - [100.0] - - -100 - [-100.0] - - +100 - [100.0] - - 3.14159 - [3.14159] - - 6.02e23 - [6.02e+23] - - 1e-12 - [1e-12] - - # hex numbers - 100 - [256] - - FF - [255] - - # fractions - 1/2 - [0.5] - - -3/4 - [-0.75] - - # mixed fractions - 1 - [1] - - 1/2 - [0.5] - - -3/4 - [-0.75] - - 1-3/4 - [1.75] - - # uuid - 12345678-1234-5678-1234-567812345678 - [UUID('12345678-1234-5678-1234-567812345678')] - """ - - convert_to_integer = token_map(int) - """ - Parse action for converting parsed integers to Python int - """ - - convert_to_float = token_map(float) - """ - Parse action for converting parsed numbers to Python float - """ - - integer = Word(nums).set_name("integer").set_parse_action(convert_to_integer) - """expression that parses an unsigned integer, returns an int""" - - hex_integer = ( - Word(hexnums).set_name("hex integer").set_parse_action(token_map(int, 16)) - ) - """expression that parses a hexadecimal integer, returns an int""" - - signed_integer = ( - Regex(r"[+-]?\d+") - .set_name("signed integer") - .set_parse_action(convert_to_integer) - ) - """expression that parses an integer with optional leading sign, returns an int""" - - fraction = ( - signed_integer().set_parse_action(convert_to_float) - + "/" - + signed_integer().set_parse_action(convert_to_float) - ).set_name("fraction") - """fractional expression of an integer divided by an integer, returns a float""" - fraction.add_parse_action(lambda tt: tt[0] / tt[-1]) - - mixed_integer = ( - fraction | signed_integer + Opt(Opt("-").suppress() + fraction) - ).set_name("fraction or mixed integer-fraction") - """mixed integer of the form 'integer - fraction', with optional leading integer, returns float""" - mixed_integer.add_parse_action(sum) - - real = ( - Regex(r"[+-]?(?:\d+\.\d*|\.\d+)") - .set_name("real number") - .set_parse_action(convert_to_float) - ) - """expression that parses a floating point number and returns a float""" - - sci_real = ( - Regex(r"[+-]?(?:\d+(?:[eE][+-]?\d+)|(?:\d+\.\d*|\.\d+)(?:[eE][+-]?\d+)?)") - .set_name("real number with scientific notation") - .set_parse_action(convert_to_float) - ) - """expression that parses a floating point number with optional - scientific notation and returns a float""" - - # streamlining this expression makes the docs nicer-looking - number = (sci_real | real | signed_integer).setName("number").streamline() - """any numeric expression, returns the corresponding Python type""" - - fnumber = ( - Regex(r"[+-]?\d+\.?\d*([eE][+-]?\d+)?") - .set_name("fnumber") - .set_parse_action(convert_to_float) - ) - """any int or real number, returned as float""" - - identifier = Word(identchars, identbodychars).set_name("identifier") - """typical code identifier (leading alpha or '_', followed by 0 or more alphas, nums, or '_')""" - - ipv4_address = Regex( - r"(25[0-5]|2[0-4][0-9]|1?[0-9]{1,2})(\.(25[0-5]|2[0-4][0-9]|1?[0-9]{1,2})){3}" - ).set_name("IPv4 address") - "IPv4 address (``0.0.0.0 - 255.255.255.255``)" - - _ipv6_part = Regex(r"[0-9a-fA-F]{1,4}").set_name("hex_integer") - _full_ipv6_address = (_ipv6_part + (":" + _ipv6_part) * 7).set_name( - "full IPv6 address" - ) - _short_ipv6_address = ( - Opt(_ipv6_part + (":" + _ipv6_part) * (0, 6)) - + "::" - + Opt(_ipv6_part + (":" + _ipv6_part) * (0, 6)) - ).set_name("short IPv6 address") - _short_ipv6_address.add_condition( - lambda t: sum(1 for tt in t if pyparsing_common._ipv6_part.matches(tt)) < 8 - ) - _mixed_ipv6_address = ("::ffff:" + ipv4_address).set_name("mixed IPv6 address") - ipv6_address = Combine( - (_full_ipv6_address | _mixed_ipv6_address | _short_ipv6_address).set_name( - "IPv6 address" - ) - ).set_name("IPv6 address") - "IPv6 address (long, short, or mixed form)" - - mac_address = Regex( - r"[0-9a-fA-F]{2}([:.-])[0-9a-fA-F]{2}(?:\1[0-9a-fA-F]{2}){4}" - ).set_name("MAC address") - "MAC address xx:xx:xx:xx:xx (may also have '-' or '.' delimiters)" - - @staticmethod - def convert_to_date(fmt: str = "%Y-%m-%d"): - """ - Helper to create a parse action for converting parsed date string to Python datetime.date - - Params - - - fmt - format to be passed to datetime.strptime (default= ``"%Y-%m-%d"``) - - Example:: - - date_expr = pyparsing_common.iso8601_date.copy() - date_expr.setParseAction(pyparsing_common.convertToDate()) - print(date_expr.parseString("1999-12-31")) - - prints:: - - [datetime.date(1999, 12, 31)] - """ - - def cvt_fn(ss, ll, tt): - try: - return datetime.strptime(tt[0], fmt).date() - except ValueError as ve: - raise ParseException(ss, ll, str(ve)) - - return cvt_fn - - @staticmethod - def convert_to_datetime(fmt: str = "%Y-%m-%dT%H:%M:%S.%f"): - """Helper to create a parse action for converting parsed - datetime string to Python datetime.datetime - - Params - - - fmt - format to be passed to datetime.strptime (default= ``"%Y-%m-%dT%H:%M:%S.%f"``) - - Example:: - - dt_expr = pyparsing_common.iso8601_datetime.copy() - dt_expr.setParseAction(pyparsing_common.convertToDatetime()) - print(dt_expr.parseString("1999-12-31T23:59:59.999")) - - prints:: - - [datetime.datetime(1999, 12, 31, 23, 59, 59, 999000)] - """ - - def cvt_fn(s, l, t): - try: - return datetime.strptime(t[0], fmt) - except ValueError as ve: - raise ParseException(s, l, str(ve)) - - return cvt_fn - - iso8601_date = Regex( - r"(?P\d{4})(?:-(?P\d\d)(?:-(?P\d\d))?)?" - ).set_name("ISO8601 date") - "ISO8601 date (``yyyy-mm-dd``)" - - iso8601_datetime = Regex( - r"(?P\d{4})-(?P\d\d)-(?P\d\d)[T ](?P\d\d):(?P\d\d)(:(?P\d\d(\.\d*)?)?)?(?PZ|[+-]\d\d:?\d\d)?" - ).set_name("ISO8601 datetime") - "ISO8601 datetime (``yyyy-mm-ddThh:mm:ss.s(Z|+-00:00)``) - trailing seconds, milliseconds, and timezone optional; accepts separating ``'T'`` or ``' '``" - - uuid = Regex(r"[0-9a-fA-F]{8}(-[0-9a-fA-F]{4}){3}-[0-9a-fA-F]{12}").set_name("UUID") - "UUID (``xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx``)" - - _html_stripper = any_open_tag.suppress() | any_close_tag.suppress() - - @staticmethod - def strip_html_tags(s: str, l: int, tokens: ParseResults): - """Parse action to remove HTML tags from web page HTML source - - Example:: - - # strip HTML links from normal text - text = 'More info at the
pyparsing wiki page' - td, td_end = makeHTMLTags("TD") - table_text = td + SkipTo(td_end).setParseAction(pyparsing_common.stripHTMLTags)("body") + td_end - print(table_text.parseString(text).body) - - Prints:: - - More info at the pyparsing wiki page - """ - return pyparsing_common._html_stripper.transform_string(tokens[0]) - - _commasepitem = ( - Combine( - OneOrMore( - ~Literal(",") - + ~LineEnd() - + Word(printables, exclude_chars=",") - + Opt(White(" \t") + ~FollowedBy(LineEnd() | ",")) - ) - ) - .streamline() - .set_name("commaItem") - ) - comma_separated_list = delimited_list( - Opt(quoted_string.copy() | _commasepitem, default="") - ).set_name("comma separated list") - """Predefined expression of 1 or more printable words or quoted strings, separated by commas.""" - - upcase_tokens = staticmethod(token_map(lambda t: t.upper())) - """Parse action to convert tokens to upper case.""" - - downcase_tokens = staticmethod(token_map(lambda t: t.lower())) - """Parse action to convert tokens to lower case.""" - - # fmt: off - url = Regex( - # https://mathiasbynens.be/demo/url-regex - # https://gist.github.com/dperini/729294 - r"^" + - # protocol identifier (optional) - # short syntax // still required - r"(?:(?:(?Phttps?|ftp):)?\/\/)" + - # user:pass BasicAuth (optional) - r"(?:(?P\S+(?::\S*)?)@)?" + - r"(?P" + - # IP address exclusion - # private & local networks - r"(?!(?:10|127)(?:\.\d{1,3}){3})" + - r"(?!(?:169\.254|192\.168)(?:\.\d{1,3}){2})" + - r"(?!172\.(?:1[6-9]|2\d|3[0-1])(?:\.\d{1,3}){2})" + - # IP address dotted notation octets - # excludes loopback network 0.0.0.0 - # excludes reserved space >= 224.0.0.0 - # excludes network & broadcast addresses - # (first & last IP address of each class) - r"(?:[1-9]\d?|1\d\d|2[01]\d|22[0-3])" + - r"(?:\.(?:1?\d{1,2}|2[0-4]\d|25[0-5])){2}" + - r"(?:\.(?:[1-9]\d?|1\d\d|2[0-4]\d|25[0-4]))" + - r"|" + - # host & domain names, may end with dot - # can be replaced by a shortest alternative - # (?![-_])(?:[-\w\u00a1-\uffff]{0,63}[^-_]\.)+ - r"(?:" + - r"(?:" + - r"[a-z0-9\u00a1-\uffff]" + - r"[a-z0-9\u00a1-\uffff_-]{0,62}" + - r")?" + - r"[a-z0-9\u00a1-\uffff]\." + - r")+" + - # TLD identifier name, may end with dot - r"(?:[a-z\u00a1-\uffff]{2,}\.?)" + - r")" + - # port number (optional) - r"(:(?P\d{2,5}))?" + - # resource path (optional) - r"(?P\/[^?# ]*)?" + - # query string (optional) - r"(\?(?P[^#]*))?" + - # fragment (optional) - r"(#(?P\S*))?" + - r"$" - ).set_name("url") - # fmt: on - - # pre-PEP8 compatibility names - convertToInteger = convert_to_integer - convertToFloat = convert_to_float - convertToDate = convert_to_date - convertToDatetime = convert_to_datetime - stripHTMLTags = strip_html_tags - upcaseTokens = upcase_tokens - downcaseTokens = downcase_tokens - - -_builtin_exprs = [ - v for v in vars(pyparsing_common).values() if isinstance(v, ParserElement) -] diff --git a/gestao_raul/Lib/site-packages/pip/_vendor/pyparsing/core.py b/gestao_raul/Lib/site-packages/pip/_vendor/pyparsing/core.py deleted file mode 100644 index 6ff3c76..0000000 --- a/gestao_raul/Lib/site-packages/pip/_vendor/pyparsing/core.py +++ /dev/null @@ -1,5814 +0,0 @@ -# -# core.py -# -import os -import typing -from typing import ( - NamedTuple, - Union, - Callable, - Any, - Generator, - Tuple, - List, - TextIO, - Set, - Sequence, -) -from abc import ABC, abstractmethod -from enum import Enum -import string -import copy -import warnings -import re -import sys -from collections.abc import Iterable -import traceback -import types -from operator import itemgetter -from functools import wraps -from threading import RLock -from pathlib import Path - -from .util import ( - _FifoCache, - _UnboundedCache, - __config_flags, - _collapse_string_to_ranges, - _escape_regex_range_chars, - _bslash, - _flatten, - LRUMemo as _LRUMemo, - UnboundedMemo as _UnboundedMemo, -) -from .exceptions import * -from .actions import * -from .results import ParseResults, _ParseResultsWithOffset -from .unicode import pyparsing_unicode - -_MAX_INT = sys.maxsize -str_type: Tuple[type, ...] = (str, bytes) - -# -# Copyright (c) 2003-2022 Paul T. McGuire -# -# 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. -# - - -if sys.version_info >= (3, 8): - from functools import cached_property -else: - - class cached_property: - def __init__(self, func): - self._func = func - - def __get__(self, instance, owner=None): - ret = instance.__dict__[self._func.__name__] = self._func(instance) - return ret - - -class __compat__(__config_flags): - """ - A cross-version compatibility configuration for pyparsing features that will be - released in a future version. By setting values in this configuration to True, - those features can be enabled in prior versions for compatibility development - and testing. - - - ``collect_all_And_tokens`` - flag to enable fix for Issue #63 that fixes erroneous grouping - of results names when an :class:`And` expression is nested within an :class:`Or` or :class:`MatchFirst`; - maintained for compatibility, but setting to ``False`` no longer restores pre-2.3.1 - behavior - """ - - _type_desc = "compatibility" - - collect_all_And_tokens = True - - _all_names = [__ for __ in locals() if not __.startswith("_")] - _fixed_names = """ - collect_all_And_tokens - """.split() - - -class __diag__(__config_flags): - _type_desc = "diagnostic" - - warn_multiple_tokens_in_named_alternation = False - warn_ungrouped_named_tokens_in_collection = False - warn_name_set_on_empty_Forward = False - warn_on_parse_using_empty_Forward = False - warn_on_assignment_to_Forward = False - warn_on_multiple_string_args_to_oneof = False - warn_on_match_first_with_lshift_operator = False - enable_debug_on_named_expressions = False - - _all_names = [__ for __ in locals() if not __.startswith("_")] - _warning_names = [name for name in _all_names if name.startswith("warn")] - _debug_names = [name for name in _all_names if name.startswith("enable_debug")] - - @classmethod - def enable_all_warnings(cls) -> None: - for name in cls._warning_names: - cls.enable(name) - - -class Diagnostics(Enum): - """ - Diagnostic configuration (all default to disabled) - - ``warn_multiple_tokens_in_named_alternation`` - flag to enable warnings when a results - name is defined on a :class:`MatchFirst` or :class:`Or` expression with one or more :class:`And` subexpressions - - ``warn_ungrouped_named_tokens_in_collection`` - flag to enable warnings when a results - name is defined on a containing expression with ungrouped subexpressions that also - have results names - - ``warn_name_set_on_empty_Forward`` - flag to enable warnings when a :class:`Forward` is defined - with a results name, but has no contents defined - - ``warn_on_parse_using_empty_Forward`` - flag to enable warnings when a :class:`Forward` is - defined in a grammar but has never had an expression attached to it - - ``warn_on_assignment_to_Forward`` - flag to enable warnings when a :class:`Forward` is defined - but is overwritten by assigning using ``'='`` instead of ``'<<='`` or ``'<<'`` - - ``warn_on_multiple_string_args_to_oneof`` - flag to enable warnings when :class:`one_of` is - incorrectly called with multiple str arguments - - ``enable_debug_on_named_expressions`` - flag to auto-enable debug on all subsequent - calls to :class:`ParserElement.set_name` - - Diagnostics are enabled/disabled by calling :class:`enable_diag` and :class:`disable_diag`. - All warnings can be enabled by calling :class:`enable_all_warnings`. - """ - - warn_multiple_tokens_in_named_alternation = 0 - warn_ungrouped_named_tokens_in_collection = 1 - warn_name_set_on_empty_Forward = 2 - warn_on_parse_using_empty_Forward = 3 - warn_on_assignment_to_Forward = 4 - warn_on_multiple_string_args_to_oneof = 5 - warn_on_match_first_with_lshift_operator = 6 - enable_debug_on_named_expressions = 7 - - -def enable_diag(diag_enum: Diagnostics) -> None: - """ - Enable a global pyparsing diagnostic flag (see :class:`Diagnostics`). - """ - __diag__.enable(diag_enum.name) - - -def disable_diag(diag_enum: Diagnostics) -> None: - """ - Disable a global pyparsing diagnostic flag (see :class:`Diagnostics`). - """ - __diag__.disable(diag_enum.name) - - -def enable_all_warnings() -> None: - """ - Enable all global pyparsing diagnostic warnings (see :class:`Diagnostics`). - """ - __diag__.enable_all_warnings() - - -# hide abstract class -del __config_flags - - -def _should_enable_warnings( - cmd_line_warn_options: typing.Iterable[str], warn_env_var: typing.Optional[str] -) -> bool: - enable = bool(warn_env_var) - for warn_opt in cmd_line_warn_options: - w_action, w_message, w_category, w_module, w_line = (warn_opt + "::::").split( - ":" - )[:5] - if not w_action.lower().startswith("i") and ( - not (w_message or w_category or w_module) or w_module == "pyparsing" - ): - enable = True - elif w_action.lower().startswith("i") and w_module in ("pyparsing", ""): - enable = False - return enable - - -if _should_enable_warnings( - sys.warnoptions, os.environ.get("PYPARSINGENABLEALLWARNINGS") -): - enable_all_warnings() - - -# build list of single arg builtins, that can be used as parse actions -_single_arg_builtins = { - sum, - len, - sorted, - reversed, - list, - tuple, - set, - any, - all, - min, - max, -} - -_generatorType = types.GeneratorType -ParseAction = Union[ - Callable[[], Any], - Callable[[ParseResults], Any], - Callable[[int, ParseResults], Any], - Callable[[str, int, ParseResults], Any], -] -ParseCondition = Union[ - Callable[[], bool], - Callable[[ParseResults], bool], - Callable[[int, ParseResults], bool], - Callable[[str, int, ParseResults], bool], -] -ParseFailAction = Callable[[str, int, "ParserElement", Exception], None] -DebugStartAction = Callable[[str, int, "ParserElement", bool], None] -DebugSuccessAction = Callable[ - [str, int, int, "ParserElement", ParseResults, bool], None -] -DebugExceptionAction = Callable[[str, int, "ParserElement", Exception, bool], None] - - -alphas = string.ascii_uppercase + string.ascii_lowercase -identchars = pyparsing_unicode.Latin1.identchars -identbodychars = pyparsing_unicode.Latin1.identbodychars -nums = "0123456789" -hexnums = nums + "ABCDEFabcdef" -alphanums = alphas + nums -printables = "".join([c for c in string.printable if c not in string.whitespace]) - -_trim_arity_call_line: traceback.StackSummary = None - - -def _trim_arity(func, max_limit=3): - """decorator to trim function calls to match the arity of the target""" - global _trim_arity_call_line - - if func in _single_arg_builtins: - return lambda s, l, t: func(t) - - limit = 0 - found_arity = False - - def extract_tb(tb, limit=0): - frames = traceback.extract_tb(tb, limit=limit) - frame_summary = frames[-1] - return [frame_summary[:2]] - - # synthesize what would be returned by traceback.extract_stack at the call to - # user's parse action 'func', so that we don't incur call penalty at parse time - - # fmt: off - LINE_DIFF = 7 - # IF ANY CODE CHANGES, EVEN JUST COMMENTS OR BLANK LINES, BETWEEN THE NEXT LINE AND - # THE CALL TO FUNC INSIDE WRAPPER, LINE_DIFF MUST BE MODIFIED!!!! - _trim_arity_call_line = (_trim_arity_call_line or traceback.extract_stack(limit=2)[-1]) - pa_call_line_synth = (_trim_arity_call_line[0], _trim_arity_call_line[1] + LINE_DIFF) - - def wrapper(*args): - nonlocal found_arity, limit - while 1: - try: - ret = func(*args[limit:]) - found_arity = True - return ret - except TypeError as te: - # re-raise TypeErrors if they did not come from our arity testing - if found_arity: - raise - else: - tb = te.__traceback__ - trim_arity_type_error = ( - extract_tb(tb, limit=2)[-1][:2] == pa_call_line_synth - ) - del tb - - if trim_arity_type_error: - if limit < max_limit: - limit += 1 - continue - - raise - # fmt: on - - # copy func name to wrapper for sensible debug output - # (can't use functools.wraps, since that messes with function signature) - func_name = getattr(func, "__name__", getattr(func, "__class__").__name__) - wrapper.__name__ = func_name - wrapper.__doc__ = func.__doc__ - - return wrapper - - -def condition_as_parse_action( - fn: ParseCondition, message: str = None, fatal: bool = False -) -> ParseAction: - """ - Function to convert a simple predicate function that returns ``True`` or ``False`` - into a parse action. Can be used in places when a parse action is required - and :class:`ParserElement.add_condition` cannot be used (such as when adding a condition - to an operator level in :class:`infix_notation`). - - Optional keyword arguments: - - - ``message`` - define a custom message to be used in the raised exception - - ``fatal`` - if True, will raise :class:`ParseFatalException` to stop parsing immediately; - otherwise will raise :class:`ParseException` - - """ - msg = message if message is not None else "failed user-defined condition" - exc_type = ParseFatalException if fatal else ParseException - fn = _trim_arity(fn) - - @wraps(fn) - def pa(s, l, t): - if not bool(fn(s, l, t)): - raise exc_type(s, l, msg) - - return pa - - -def _default_start_debug_action( - instring: str, loc: int, expr: "ParserElement", cache_hit: bool = False -): - cache_hit_str = "*" if cache_hit else "" - print( - ( - "{}Match {} at loc {}({},{})\n {}\n {}^".format( - cache_hit_str, - expr, - loc, - lineno(loc, instring), - col(loc, instring), - line(loc, instring), - " " * (col(loc, instring) - 1), - ) - ) - ) - - -def _default_success_debug_action( - instring: str, - startloc: int, - endloc: int, - expr: "ParserElement", - toks: ParseResults, - cache_hit: bool = False, -): - cache_hit_str = "*" if cache_hit else "" - print("{}Matched {} -> {}".format(cache_hit_str, expr, toks.as_list())) - - -def _default_exception_debug_action( - instring: str, - loc: int, - expr: "ParserElement", - exc: Exception, - cache_hit: bool = False, -): - cache_hit_str = "*" if cache_hit else "" - print( - "{}Match {} failed, {} raised: {}".format( - cache_hit_str, expr, type(exc).__name__, exc - ) - ) - - -def null_debug_action(*args): - """'Do-nothing' debug action, to suppress debugging output during parsing.""" - - -class ParserElement(ABC): - """Abstract base level parser element class.""" - - DEFAULT_WHITE_CHARS: str = " \n\t\r" - verbose_stacktrace: bool = False - _literalStringClass: typing.Optional[type] = None - - @staticmethod - def set_default_whitespace_chars(chars: str) -> None: - r""" - Overrides the default whitespace chars - - Example:: - - # default whitespace chars are space, and newline - Word(alphas)[1, ...].parse_string("abc def\nghi jkl") # -> ['abc', 'def', 'ghi', 'jkl'] - - # change to just treat newline as significant - ParserElement.set_default_whitespace_chars(" \t") - Word(alphas)[1, ...].parse_string("abc def\nghi jkl") # -> ['abc', 'def'] - """ - ParserElement.DEFAULT_WHITE_CHARS = chars - - # update whitespace all parse expressions defined in this module - for expr in _builtin_exprs: - if expr.copyDefaultWhiteChars: - expr.whiteChars = set(chars) - - @staticmethod - def inline_literals_using(cls: type) -> None: - """ - Set class to be used for inclusion of string literals into a parser. - - Example:: - - # default literal class used is Literal - integer = Word(nums) - date_str = integer("year") + '/' + integer("month") + '/' + integer("day") - - date_str.parse_string("1999/12/31") # -> ['1999', '/', '12', '/', '31'] - - - # change to Suppress - ParserElement.inline_literals_using(Suppress) - date_str = integer("year") + '/' + integer("month") + '/' + integer("day") - - date_str.parse_string("1999/12/31") # -> ['1999', '12', '31'] - """ - ParserElement._literalStringClass = cls - - class DebugActions(NamedTuple): - debug_try: typing.Optional[DebugStartAction] - debug_match: typing.Optional[DebugSuccessAction] - debug_fail: typing.Optional[DebugExceptionAction] - - def __init__(self, savelist: bool = False): - self.parseAction: List[ParseAction] = list() - self.failAction: typing.Optional[ParseFailAction] = None - self.customName = None - self._defaultName = None - self.resultsName = None - self.saveAsList = savelist - self.skipWhitespace = True - self.whiteChars = set(ParserElement.DEFAULT_WHITE_CHARS) - self.copyDefaultWhiteChars = True - # used when checking for left-recursion - self.mayReturnEmpty = False - self.keepTabs = False - self.ignoreExprs: List["ParserElement"] = list() - self.debug = False - self.streamlined = False - # optimize exception handling for subclasses that don't advance parse index - self.mayIndexError = True - self.errmsg = "" - # mark results names as modal (report only last) or cumulative (list all) - self.modalResults = True - # custom debug actions - self.debugActions = self.DebugActions(None, None, None) - # avoid redundant calls to preParse - self.callPreparse = True - self.callDuringTry = False - self.suppress_warnings_: List[Diagnostics] = [] - - def suppress_warning(self, warning_type: Diagnostics) -> "ParserElement": - """ - Suppress warnings emitted for a particular diagnostic on this expression. - - Example:: - - base = pp.Forward() - base.suppress_warning(Diagnostics.warn_on_parse_using_empty_Forward) - - # statement would normally raise a warning, but is now suppressed - print(base.parseString("x")) - - """ - self.suppress_warnings_.append(warning_type) - return self - - def copy(self) -> "ParserElement": - """ - Make a copy of this :class:`ParserElement`. Useful for defining - different parse actions for the same parsing pattern, using copies of - the original parse element. - - Example:: - - integer = Word(nums).set_parse_action(lambda toks: int(toks[0])) - integerK = integer.copy().add_parse_action(lambda toks: toks[0] * 1024) + Suppress("K") - integerM = integer.copy().add_parse_action(lambda toks: toks[0] * 1024 * 1024) + Suppress("M") - - print((integerK | integerM | integer)[1, ...].parse_string("5K 100 640K 256M")) - - prints:: - - [5120, 100, 655360, 268435456] - - Equivalent form of ``expr.copy()`` is just ``expr()``:: - - integerM = integer().add_parse_action(lambda toks: toks[0] * 1024 * 1024) + Suppress("M") - """ - cpy = copy.copy(self) - cpy.parseAction = self.parseAction[:] - cpy.ignoreExprs = self.ignoreExprs[:] - if self.copyDefaultWhiteChars: - cpy.whiteChars = set(ParserElement.DEFAULT_WHITE_CHARS) - return cpy - - def set_results_name( - self, name: str, list_all_matches: bool = False, *, listAllMatches: bool = False - ) -> "ParserElement": - """ - Define name for referencing matching tokens as a nested attribute - of the returned parse results. - - Normally, results names are assigned as you would assign keys in a dict: - any existing value is overwritten by later values. If it is necessary to - keep all values captured for a particular results name, call ``set_results_name`` - with ``list_all_matches`` = True. - - NOTE: ``set_results_name`` returns a *copy* of the original :class:`ParserElement` object; - this is so that the client can define a basic element, such as an - integer, and reference it in multiple places with different names. - - You can also set results names using the abbreviated syntax, - ``expr("name")`` in place of ``expr.set_results_name("name")`` - - see :class:`__call__`. If ``list_all_matches`` is required, use - ``expr("name*")``. - - Example:: - - date_str = (integer.set_results_name("year") + '/' - + integer.set_results_name("month") + '/' - + integer.set_results_name("day")) - - # equivalent form: - date_str = integer("year") + '/' + integer("month") + '/' + integer("day") - """ - listAllMatches = listAllMatches or list_all_matches - return self._setResultsName(name, listAllMatches) - - def _setResultsName(self, name, listAllMatches=False): - if name is None: - return self - newself = self.copy() - if name.endswith("*"): - name = name[:-1] - listAllMatches = True - newself.resultsName = name - newself.modalResults = not listAllMatches - return newself - - def set_break(self, break_flag: bool = True) -> "ParserElement": - """ - Method to invoke the Python pdb debugger when this element is - about to be parsed. Set ``break_flag`` to ``True`` to enable, ``False`` to - disable. - """ - if break_flag: - _parseMethod = self._parse - - def breaker(instring, loc, doActions=True, callPreParse=True): - import pdb - - # this call to pdb.set_trace() is intentional, not a checkin error - pdb.set_trace() - return _parseMethod(instring, loc, doActions, callPreParse) - - breaker._originalParseMethod = _parseMethod - self._parse = breaker - else: - if hasattr(self._parse, "_originalParseMethod"): - self._parse = self._parse._originalParseMethod - return self - - def set_parse_action(self, *fns: ParseAction, **kwargs) -> "ParserElement": - """ - Define one or more actions to perform when successfully matching parse element definition. - - Parse actions can be called to perform data conversions, do extra validation, - update external data structures, or enhance or replace the parsed tokens. - Each parse action ``fn`` is a callable method with 0-3 arguments, called as - ``fn(s, loc, toks)`` , ``fn(loc, toks)`` , ``fn(toks)`` , or just ``fn()`` , where: - - - s = the original string being parsed (see note below) - - loc = the location of the matching substring - - toks = a list of the matched tokens, packaged as a :class:`ParseResults` object - - The parsed tokens are passed to the parse action as ParseResults. They can be - modified in place using list-style append, extend, and pop operations to update - the parsed list elements; and with dictionary-style item set and del operations - to add, update, or remove any named results. If the tokens are modified in place, - it is not necessary to return them with a return statement. - - Parse actions can also completely replace the given tokens, with another ``ParseResults`` - object, or with some entirely different object (common for parse actions that perform data - conversions). A convenient way to build a new parse result is to define the values - using a dict, and then create the return value using :class:`ParseResults.from_dict`. - - If None is passed as the ``fn`` parse action, all previously added parse actions for this - expression are cleared. - - Optional keyword arguments: - - - call_during_try = (default= ``False``) indicate if parse action should be run during - lookaheads and alternate testing. For parse actions that have side effects, it is - important to only call the parse action once it is determined that it is being - called as part of a successful parse. For parse actions that perform additional - validation, then call_during_try should be passed as True, so that the validation - code is included in the preliminary "try" parses. - - Note: the default parsing behavior is to expand tabs in the input string - before starting the parsing process. See :class:`parse_string` for more - information on parsing strings containing ```` s, and suggested - methods to maintain a consistent view of the parsed string, the parse - location, and line and column positions within the parsed string. - - Example:: - - # parse dates in the form YYYY/MM/DD - - # use parse action to convert toks from str to int at parse time - def convert_to_int(toks): - return int(toks[0]) - - # use a parse action to verify that the date is a valid date - def is_valid_date(instring, loc, toks): - from datetime import date - year, month, day = toks[::2] - try: - date(year, month, day) - except ValueError: - raise ParseException(instring, loc, "invalid date given") - - integer = Word(nums) - date_str = integer + '/' + integer + '/' + integer - - # add parse actions - integer.set_parse_action(convert_to_int) - date_str.set_parse_action(is_valid_date) - - # note that integer fields are now ints, not strings - date_str.run_tests(''' - # successful parse - note that integer fields were converted to ints - 1999/12/31 - - # fail - invalid date - 1999/13/31 - ''') - """ - if list(fns) == [None]: - self.parseAction = [] - else: - if not all(callable(fn) for fn in fns): - raise TypeError("parse actions must be callable") - self.parseAction = [_trim_arity(fn) for fn in fns] - self.callDuringTry = kwargs.get( - "call_during_try", kwargs.get("callDuringTry", False) - ) - return self - - def add_parse_action(self, *fns: ParseAction, **kwargs) -> "ParserElement": - """ - Add one or more parse actions to expression's list of parse actions. See :class:`set_parse_action`. - - See examples in :class:`copy`. - """ - self.parseAction += [_trim_arity(fn) for fn in fns] - self.callDuringTry = self.callDuringTry or kwargs.get( - "call_during_try", kwargs.get("callDuringTry", False) - ) - return self - - def add_condition(self, *fns: ParseCondition, **kwargs) -> "ParserElement": - """Add a boolean predicate function to expression's list of parse actions. See - :class:`set_parse_action` for function call signatures. Unlike ``set_parse_action``, - functions passed to ``add_condition`` need to return boolean success/fail of the condition. - - Optional keyword arguments: - - - message = define a custom message to be used in the raised exception - - fatal = if True, will raise ParseFatalException to stop parsing immediately; otherwise will raise - ParseException - - call_during_try = boolean to indicate if this method should be called during internal tryParse calls, - default=False - - Example:: - - integer = Word(nums).set_parse_action(lambda toks: int(toks[0])) - year_int = integer.copy() - year_int.add_condition(lambda toks: toks[0] >= 2000, message="Only support years 2000 and later") - date_str = year_int + '/' + integer + '/' + integer - - result = date_str.parse_string("1999/12/31") # -> Exception: Only support years 2000 and later (at char 0), - (line:1, col:1) - """ - for fn in fns: - self.parseAction.append( - condition_as_parse_action( - fn, message=kwargs.get("message"), fatal=kwargs.get("fatal", False) - ) - ) - - self.callDuringTry = self.callDuringTry or kwargs.get( - "call_during_try", kwargs.get("callDuringTry", False) - ) - return self - - def set_fail_action(self, fn: ParseFailAction) -> "ParserElement": - """ - Define action to perform if parsing fails at this expression. - Fail acton fn is a callable function that takes the arguments - ``fn(s, loc, expr, err)`` where: - - - s = string being parsed - - loc = location where expression match was attempted and failed - - expr = the parse expression that failed - - err = the exception thrown - - The function returns no value. It may throw :class:`ParseFatalException` - if it is desired to stop parsing immediately.""" - self.failAction = fn - return self - - def _skipIgnorables(self, instring, loc): - exprsFound = True - while exprsFound: - exprsFound = False - for e in self.ignoreExprs: - try: - while 1: - loc, dummy = e._parse(instring, loc) - exprsFound = True - except ParseException: - pass - return loc - - def preParse(self, instring, loc): - if self.ignoreExprs: - loc = self._skipIgnorables(instring, loc) - - if self.skipWhitespace: - instrlen = len(instring) - white_chars = self.whiteChars - while loc < instrlen and instring[loc] in white_chars: - loc += 1 - - return loc - - def parseImpl(self, instring, loc, doActions=True): - return loc, [] - - def postParse(self, instring, loc, tokenlist): - return tokenlist - - # @profile - def _parseNoCache( - self, instring, loc, doActions=True, callPreParse=True - ) -> Tuple[int, ParseResults]: - TRY, MATCH, FAIL = 0, 1, 2 - debugging = self.debug # and doActions) - len_instring = len(instring) - - if debugging or self.failAction: - # print("Match {} at loc {}({}, {})".format(self, loc, lineno(loc, instring), col(loc, instring))) - try: - if callPreParse and self.callPreparse: - pre_loc = self.preParse(instring, loc) - else: - pre_loc = loc - tokens_start = pre_loc - if self.debugActions.debug_try: - self.debugActions.debug_try(instring, tokens_start, self, False) - if self.mayIndexError or pre_loc >= len_instring: - try: - loc, tokens = self.parseImpl(instring, pre_loc, doActions) - except IndexError: - raise ParseException(instring, len_instring, self.errmsg, self) - else: - loc, tokens = self.parseImpl(instring, pre_loc, doActions) - except Exception as err: - # print("Exception raised:", err) - if self.debugActions.debug_fail: - self.debugActions.debug_fail( - instring, tokens_start, self, err, False - ) - if self.failAction: - self.failAction(instring, tokens_start, self, err) - raise - else: - if callPreParse and self.callPreparse: - pre_loc = self.preParse(instring, loc) - else: - pre_loc = loc - tokens_start = pre_loc - if self.mayIndexError or pre_loc >= len_instring: - try: - loc, tokens = self.parseImpl(instring, pre_loc, doActions) - except IndexError: - raise ParseException(instring, len_instring, self.errmsg, self) - else: - loc, tokens = self.parseImpl(instring, pre_loc, doActions) - - tokens = self.postParse(instring, loc, tokens) - - ret_tokens = ParseResults( - tokens, self.resultsName, asList=self.saveAsList, modal=self.modalResults - ) - if self.parseAction and (doActions or self.callDuringTry): - if debugging: - try: - for fn in self.parseAction: - try: - tokens = fn(instring, tokens_start, ret_tokens) - except IndexError as parse_action_exc: - exc = ParseException("exception raised in parse action") - raise exc from parse_action_exc - - if tokens is not None and tokens is not ret_tokens: - ret_tokens = ParseResults( - tokens, - self.resultsName, - asList=self.saveAsList - and isinstance(tokens, (ParseResults, list)), - modal=self.modalResults, - ) - except Exception as err: - # print "Exception raised in user parse action:", err - if self.debugActions.debug_fail: - self.debugActions.debug_fail( - instring, tokens_start, self, err, False - ) - raise - else: - for fn in self.parseAction: - try: - tokens = fn(instring, tokens_start, ret_tokens) - except IndexError as parse_action_exc: - exc = ParseException("exception raised in parse action") - raise exc from parse_action_exc - - if tokens is not None and tokens is not ret_tokens: - ret_tokens = ParseResults( - tokens, - self.resultsName, - asList=self.saveAsList - and isinstance(tokens, (ParseResults, list)), - modal=self.modalResults, - ) - if debugging: - # print("Matched", self, "->", ret_tokens.as_list()) - if self.debugActions.debug_match: - self.debugActions.debug_match( - instring, tokens_start, loc, self, ret_tokens, False - ) - - return loc, ret_tokens - - def try_parse(self, instring: str, loc: int, raise_fatal: bool = False) -> int: - try: - return self._parse(instring, loc, doActions=False)[0] - except ParseFatalException: - if raise_fatal: - raise - raise ParseException(instring, loc, self.errmsg, self) - - def can_parse_next(self, instring: str, loc: int) -> bool: - try: - self.try_parse(instring, loc) - except (ParseException, IndexError): - return False - else: - return True - - # cache for left-recursion in Forward references - recursion_lock = RLock() - recursion_memos: typing.Dict[ - Tuple[int, "Forward", bool], Tuple[int, Union[ParseResults, Exception]] - ] = {} - - # argument cache for optimizing repeated calls when backtracking through recursive expressions - packrat_cache = ( - {} - ) # this is set later by enabled_packrat(); this is here so that reset_cache() doesn't fail - packrat_cache_lock = RLock() - packrat_cache_stats = [0, 0] - - # this method gets repeatedly called during backtracking with the same arguments - - # we can cache these arguments and save ourselves the trouble of re-parsing the contained expression - def _parseCache( - self, instring, loc, doActions=True, callPreParse=True - ) -> Tuple[int, ParseResults]: - HIT, MISS = 0, 1 - TRY, MATCH, FAIL = 0, 1, 2 - lookup = (self, instring, loc, callPreParse, doActions) - with ParserElement.packrat_cache_lock: - cache = ParserElement.packrat_cache - value = cache.get(lookup) - if value is cache.not_in_cache: - ParserElement.packrat_cache_stats[MISS] += 1 - try: - value = self._parseNoCache(instring, loc, doActions, callPreParse) - except ParseBaseException as pe: - # cache a copy of the exception, without the traceback - cache.set(lookup, pe.__class__(*pe.args)) - raise - else: - cache.set(lookup, (value[0], value[1].copy(), loc)) - return value - else: - ParserElement.packrat_cache_stats[HIT] += 1 - if self.debug and self.debugActions.debug_try: - try: - self.debugActions.debug_try(instring, loc, self, cache_hit=True) - except TypeError: - pass - if isinstance(value, Exception): - if self.debug and self.debugActions.debug_fail: - try: - self.debugActions.debug_fail( - instring, loc, self, value, cache_hit=True - ) - except TypeError: - pass - raise value - - loc_, result, endloc = value[0], value[1].copy(), value[2] - if self.debug and self.debugActions.debug_match: - try: - self.debugActions.debug_match( - instring, loc_, endloc, self, result, cache_hit=True - ) - except TypeError: - pass - - return loc_, result - - _parse = _parseNoCache - - @staticmethod - def reset_cache() -> None: - ParserElement.packrat_cache.clear() - ParserElement.packrat_cache_stats[:] = [0] * len( - ParserElement.packrat_cache_stats - ) - ParserElement.recursion_memos.clear() - - _packratEnabled = False - _left_recursion_enabled = False - - @staticmethod - def disable_memoization() -> None: - """ - Disables active Packrat or Left Recursion parsing and their memoization - - This method also works if neither Packrat nor Left Recursion are enabled. - This makes it safe to call before activating Packrat nor Left Recursion - to clear any previous settings. - """ - ParserElement.reset_cache() - ParserElement._left_recursion_enabled = False - ParserElement._packratEnabled = False - ParserElement._parse = ParserElement._parseNoCache - - @staticmethod - def enable_left_recursion( - cache_size_limit: typing.Optional[int] = None, *, force=False - ) -> None: - """ - Enables "bounded recursion" parsing, which allows for both direct and indirect - left-recursion. During parsing, left-recursive :class:`Forward` elements are - repeatedly matched with a fixed recursion depth that is gradually increased - until finding the longest match. - - Example:: - - from pip._vendor import pyparsing as pp - pp.ParserElement.enable_left_recursion() - - E = pp.Forward("E") - num = pp.Word(pp.nums) - # match `num`, or `num '+' num`, or `num '+' num '+' num`, ... - E <<= E + '+' - num | num - - print(E.parse_string("1+2+3")) - - Recursion search naturally memoizes matches of ``Forward`` elements and may - thus skip reevaluation of parse actions during backtracking. This may break - programs with parse actions which rely on strict ordering of side-effects. - - Parameters: - - - cache_size_limit - (default=``None``) - memoize at most this many - ``Forward`` elements during matching; if ``None`` (the default), - memoize all ``Forward`` elements. - - Bounded Recursion parsing works similar but not identical to Packrat parsing, - thus the two cannot be used together. Use ``force=True`` to disable any - previous, conflicting settings. - """ - if force: - ParserElement.disable_memoization() - elif ParserElement._packratEnabled: - raise RuntimeError("Packrat and Bounded Recursion are not compatible") - if cache_size_limit is None: - ParserElement.recursion_memos = _UnboundedMemo() - elif cache_size_limit > 0: - ParserElement.recursion_memos = _LRUMemo(capacity=cache_size_limit) - else: - raise NotImplementedError("Memo size of %s" % cache_size_limit) - ParserElement._left_recursion_enabled = True - - @staticmethod - def enable_packrat(cache_size_limit: int = 128, *, force: bool = False) -> None: - """ - Enables "packrat" parsing, which adds memoizing to the parsing logic. - Repeated parse attempts at the same string location (which happens - often in many complex grammars) can immediately return a cached value, - instead of re-executing parsing/validating code. Memoizing is done of - both valid results and parsing exceptions. - - Parameters: - - - cache_size_limit - (default= ``128``) - if an integer value is provided - will limit the size of the packrat cache; if None is passed, then - the cache size will be unbounded; if 0 is passed, the cache will - be effectively disabled. - - This speedup may break existing programs that use parse actions that - have side-effects. For this reason, packrat parsing is disabled when - you first import pyparsing. To activate the packrat feature, your - program must call the class method :class:`ParserElement.enable_packrat`. - For best results, call ``enable_packrat()`` immediately after - importing pyparsing. - - Example:: - - from pip._vendor import pyparsing - pyparsing.ParserElement.enable_packrat() - - Packrat parsing works similar but not identical to Bounded Recursion parsing, - thus the two cannot be used together. Use ``force=True`` to disable any - previous, conflicting settings. - """ - if force: - ParserElement.disable_memoization() - elif ParserElement._left_recursion_enabled: - raise RuntimeError("Packrat and Bounded Recursion are not compatible") - if not ParserElement._packratEnabled: - ParserElement._packratEnabled = True - if cache_size_limit is None: - ParserElement.packrat_cache = _UnboundedCache() - else: - ParserElement.packrat_cache = _FifoCache(cache_size_limit) - ParserElement._parse = ParserElement._parseCache - - def parse_string( - self, instring: str, parse_all: bool = False, *, parseAll: bool = False - ) -> ParseResults: - """ - Parse a string with respect to the parser definition. This function is intended as the primary interface to the - client code. - - :param instring: The input string to be parsed. - :param parse_all: If set, the entire input string must match the grammar. - :param parseAll: retained for pre-PEP8 compatibility, will be removed in a future release. - :raises ParseException: Raised if ``parse_all`` is set and the input string does not match the whole grammar. - :returns: the parsed data as a :class:`ParseResults` object, which may be accessed as a `list`, a `dict`, or - an object with attributes if the given parser includes results names. - - If the input string is required to match the entire grammar, ``parse_all`` flag must be set to ``True``. This - is also equivalent to ending the grammar with :class:`StringEnd`(). - - To report proper column numbers, ``parse_string`` operates on a copy of the input string where all tabs are - converted to spaces (8 spaces per tab, as per the default in ``string.expandtabs``). If the input string - contains tabs and the grammar uses parse actions that use the ``loc`` argument to index into the string - being parsed, one can ensure a consistent view of the input string by doing one of the following: - - - calling ``parse_with_tabs`` on your grammar before calling ``parse_string`` (see :class:`parse_with_tabs`), - - define your parse action using the full ``(s,loc,toks)`` signature, and reference the input string using the - parse action's ``s`` argument, or - - explicitly expand the tabs in your input string before calling ``parse_string``. - - Examples: - - By default, partial matches are OK. - - >>> res = Word('a').parse_string('aaaaabaaa') - >>> print(res) - ['aaaaa'] - - The parsing behavior varies by the inheriting class of this abstract class. Please refer to the children - directly to see more examples. - - It raises an exception if parse_all flag is set and instring does not match the whole grammar. - - >>> res = Word('a').parse_string('aaaaabaaa', parse_all=True) - Traceback (most recent call last): - ... - pyparsing.ParseException: Expected end of text, found 'b' (at char 5), (line:1, col:6) - """ - parseAll = parse_all or parseAll - - ParserElement.reset_cache() - if not self.streamlined: - self.streamline() - for e in self.ignoreExprs: - e.streamline() - if not self.keepTabs: - instring = instring.expandtabs() - try: - loc, tokens = self._parse(instring, 0) - if parseAll: - loc = self.preParse(instring, loc) - se = Empty() + StringEnd() - se._parse(instring, loc) - except ParseBaseException as exc: - if ParserElement.verbose_stacktrace: - raise - else: - # catch and re-raise exception from here, clearing out pyparsing internal stack trace - raise exc.with_traceback(None) - else: - return tokens - - def scan_string( - self, - instring: str, - max_matches: int = _MAX_INT, - overlap: bool = False, - *, - debug: bool = False, - maxMatches: int = _MAX_INT, - ) -> Generator[Tuple[ParseResults, int, int], None, None]: - """ - Scan the input string for expression matches. Each match will return the - matching tokens, start location, and end location. May be called with optional - ``max_matches`` argument, to clip scanning after 'n' matches are found. If - ``overlap`` is specified, then overlapping matches will be reported. - - Note that the start and end locations are reported relative to the string - being parsed. See :class:`parse_string` for more information on parsing - strings with embedded tabs. - - Example:: - - source = "sldjf123lsdjjkf345sldkjf879lkjsfd987" - print(source) - for tokens, start, end in Word(alphas).scan_string(source): - print(' '*start + '^'*(end-start)) - print(' '*start + tokens[0]) - - prints:: - - sldjf123lsdjjkf345sldkjf879lkjsfd987 - ^^^^^ - sldjf - ^^^^^^^ - lsdjjkf - ^^^^^^ - sldkjf - ^^^^^^ - lkjsfd - """ - maxMatches = min(maxMatches, max_matches) - if not self.streamlined: - self.streamline() - for e in self.ignoreExprs: - e.streamline() - - if not self.keepTabs: - instring = str(instring).expandtabs() - instrlen = len(instring) - loc = 0 - preparseFn = self.preParse - parseFn = self._parse - ParserElement.resetCache() - matches = 0 - try: - while loc <= instrlen and matches < maxMatches: - try: - preloc = preparseFn(instring, loc) - nextLoc, tokens = parseFn(instring, preloc, callPreParse=False) - except ParseException: - loc = preloc + 1 - else: - if nextLoc > loc: - matches += 1 - if debug: - print( - { - "tokens": tokens.asList(), - "start": preloc, - "end": nextLoc, - } - ) - yield tokens, preloc, nextLoc - if overlap: - nextloc = preparseFn(instring, loc) - if nextloc > loc: - loc = nextLoc - else: - loc += 1 - else: - loc = nextLoc - else: - loc = preloc + 1 - except ParseBaseException as exc: - if ParserElement.verbose_stacktrace: - raise - else: - # catch and re-raise exception from here, clears out pyparsing internal stack trace - raise exc.with_traceback(None) - - def transform_string(self, instring: str, *, debug: bool = False) -> str: - """ - Extension to :class:`scan_string`, to modify matching text with modified tokens that may - be returned from a parse action. To use ``transform_string``, define a grammar and - attach a parse action to it that modifies the returned token list. - Invoking ``transform_string()`` on a target string will then scan for matches, - and replace the matched text patterns according to the logic in the parse - action. ``transform_string()`` returns the resulting transformed string. - - Example:: - - wd = Word(alphas) - wd.set_parse_action(lambda toks: toks[0].title()) - - print(wd.transform_string("now is the winter of our discontent made glorious summer by this sun of york.")) - - prints:: - - Now Is The Winter Of Our Discontent Made Glorious Summer By This Sun Of York. - """ - out: List[str] = [] - lastE = 0 - # force preservation of s, to minimize unwanted transformation of string, and to - # keep string locs straight between transform_string and scan_string - self.keepTabs = True - try: - for t, s, e in self.scan_string(instring, debug=debug): - out.append(instring[lastE:s]) - if t: - if isinstance(t, ParseResults): - out += t.as_list() - elif isinstance(t, Iterable) and not isinstance(t, str_type): - out.extend(t) - else: - out.append(t) - lastE = e - out.append(instring[lastE:]) - out = [o for o in out if o] - return "".join([str(s) for s in _flatten(out)]) - except ParseBaseException as exc: - if ParserElement.verbose_stacktrace: - raise - else: - # catch and re-raise exception from here, clears out pyparsing internal stack trace - raise exc.with_traceback(None) - - def search_string( - self, - instring: str, - max_matches: int = _MAX_INT, - *, - debug: bool = False, - maxMatches: int = _MAX_INT, - ) -> ParseResults: - """ - Another extension to :class:`scan_string`, simplifying the access to the tokens found - to match the given parse expression. May be called with optional - ``max_matches`` argument, to clip searching after 'n' matches are found. - - Example:: - - # a capitalized word starts with an uppercase letter, followed by zero or more lowercase letters - cap_word = Word(alphas.upper(), alphas.lower()) - - print(cap_word.search_string("More than Iron, more than Lead, more than Gold I need Electricity")) - - # the sum() builtin can be used to merge results into a single ParseResults object - print(sum(cap_word.search_string("More than Iron, more than Lead, more than Gold I need Electricity"))) - - prints:: - - [['More'], ['Iron'], ['Lead'], ['Gold'], ['I'], ['Electricity']] - ['More', 'Iron', 'Lead', 'Gold', 'I', 'Electricity'] - """ - maxMatches = min(maxMatches, max_matches) - try: - return ParseResults( - [t for t, s, e in self.scan_string(instring, maxMatches, debug=debug)] - ) - except ParseBaseException as exc: - if ParserElement.verbose_stacktrace: - raise - else: - # catch and re-raise exception from here, clears out pyparsing internal stack trace - raise exc.with_traceback(None) - - def split( - self, - instring: str, - maxsplit: int = _MAX_INT, - include_separators: bool = False, - *, - includeSeparators=False, - ) -> Generator[str, None, None]: - """ - Generator method to split a string using the given expression as a separator. - May be called with optional ``maxsplit`` argument, to limit the number of splits; - and the optional ``include_separators`` argument (default= ``False``), if the separating - matching text should be included in the split results. - - Example:: - - punc = one_of(list(".,;:/-!?")) - print(list(punc.split("This, this?, this sentence, is badly punctuated!"))) - - prints:: - - ['This', ' this', '', ' this sentence', ' is badly punctuated', ''] - """ - includeSeparators = includeSeparators or include_separators - last = 0 - for t, s, e in self.scan_string(instring, max_matches=maxsplit): - yield instring[last:s] - if includeSeparators: - yield t[0] - last = e - yield instring[last:] - - def __add__(self, other) -> "ParserElement": - """ - Implementation of ``+`` operator - returns :class:`And`. Adding strings to a :class:`ParserElement` - converts them to :class:`Literal`s by default. - - Example:: - - greet = Word(alphas) + "," + Word(alphas) + "!" - hello = "Hello, World!" - print(hello, "->", greet.parse_string(hello)) - - prints:: - - Hello, World! -> ['Hello', ',', 'World', '!'] - - ``...`` may be used as a parse expression as a short form of :class:`SkipTo`. - - Literal('start') + ... + Literal('end') - - is equivalent to: - - Literal('start') + SkipTo('end')("_skipped*") + Literal('end') - - Note that the skipped text is returned with '_skipped' as a results name, - and to support having multiple skips in the same parser, the value returned is - a list of all skipped text. - """ - if other is Ellipsis: - return _PendingSkip(self) - - if isinstance(other, str_type): - other = self._literalStringClass(other) - if not isinstance(other, ParserElement): - raise TypeError( - "Cannot combine element of type {} with ParserElement".format( - type(other).__name__ - ) - ) - return And([self, other]) - - def __radd__(self, other) -> "ParserElement": - """ - Implementation of ``+`` operator when left operand is not a :class:`ParserElement` - """ - if other is Ellipsis: - return SkipTo(self)("_skipped*") + self - - if isinstance(other, str_type): - other = self._literalStringClass(other) - if not isinstance(other, ParserElement): - raise TypeError( - "Cannot combine element of type {} with ParserElement".format( - type(other).__name__ - ) - ) - return other + self - - def __sub__(self, other) -> "ParserElement": - """ - Implementation of ``-`` operator, returns :class:`And` with error stop - """ - if isinstance(other, str_type): - other = self._literalStringClass(other) - if not isinstance(other, ParserElement): - raise TypeError( - "Cannot combine element of type {} with ParserElement".format( - type(other).__name__ - ) - ) - return self + And._ErrorStop() + other - - def __rsub__(self, other) -> "ParserElement": - """ - Implementation of ``-`` operator when left operand is not a :class:`ParserElement` - """ - if isinstance(other, str_type): - other = self._literalStringClass(other) - if not isinstance(other, ParserElement): - raise TypeError( - "Cannot combine element of type {} with ParserElement".format( - type(other).__name__ - ) - ) - return other - self - - def __mul__(self, other) -> "ParserElement": - """ - Implementation of ``*`` operator, allows use of ``expr * 3`` in place of - ``expr + expr + expr``. Expressions may also be multiplied by a 2-integer - tuple, similar to ``{min, max}`` multipliers in regular expressions. Tuples - may also include ``None`` as in: - - ``expr*(n, None)`` or ``expr*(n, )`` is equivalent - to ``expr*n + ZeroOrMore(expr)`` - (read as "at least n instances of ``expr``") - - ``expr*(None, n)`` is equivalent to ``expr*(0, n)`` - (read as "0 to n instances of ``expr``") - - ``expr*(None, None)`` is equivalent to ``ZeroOrMore(expr)`` - - ``expr*(1, None)`` is equivalent to ``OneOrMore(expr)`` - - Note that ``expr*(None, n)`` does not raise an exception if - more than n exprs exist in the input stream; that is, - ``expr*(None, n)`` does not enforce a maximum number of expr - occurrences. If this behavior is desired, then write - ``expr*(None, n) + ~expr`` - """ - if other is Ellipsis: - other = (0, None) - elif isinstance(other, tuple) and other[:1] == (Ellipsis,): - other = ((0,) + other[1:] + (None,))[:2] - - if isinstance(other, int): - minElements, optElements = other, 0 - elif isinstance(other, tuple): - other = tuple(o if o is not Ellipsis else None for o in other) - other = (other + (None, None))[:2] - if other[0] is None: - other = (0, other[1]) - if isinstance(other[0], int) and other[1] is None: - if other[0] == 0: - return ZeroOrMore(self) - if other[0] == 1: - return OneOrMore(self) - else: - return self * other[0] + ZeroOrMore(self) - elif isinstance(other[0], int) and isinstance(other[1], int): - minElements, optElements = other - optElements -= minElements - else: - raise TypeError( - "cannot multiply ParserElement and ({}) objects".format( - ",".join(type(item).__name__ for item in other) - ) - ) - else: - raise TypeError( - "cannot multiply ParserElement and {} objects".format( - type(other).__name__ - ) - ) - - if minElements < 0: - raise ValueError("cannot multiply ParserElement by negative value") - if optElements < 0: - raise ValueError( - "second tuple value must be greater or equal to first tuple value" - ) - if minElements == optElements == 0: - return And([]) - - if optElements: - - def makeOptionalList(n): - if n > 1: - return Opt(self + makeOptionalList(n - 1)) - else: - return Opt(self) - - if minElements: - if minElements == 1: - ret = self + makeOptionalList(optElements) - else: - ret = And([self] * minElements) + makeOptionalList(optElements) - else: - ret = makeOptionalList(optElements) - else: - if minElements == 1: - ret = self - else: - ret = And([self] * minElements) - return ret - - def __rmul__(self, other) -> "ParserElement": - return self.__mul__(other) - - def __or__(self, other) -> "ParserElement": - """ - Implementation of ``|`` operator - returns :class:`MatchFirst` - """ - if other is Ellipsis: - return _PendingSkip(self, must_skip=True) - - if isinstance(other, str_type): - other = self._literalStringClass(other) - if not isinstance(other, ParserElement): - raise TypeError( - "Cannot combine element of type {} with ParserElement".format( - type(other).__name__ - ) - ) - return MatchFirst([self, other]) - - def __ror__(self, other) -> "ParserElement": - """ - Implementation of ``|`` operator when left operand is not a :class:`ParserElement` - """ - if isinstance(other, str_type): - other = self._literalStringClass(other) - if not isinstance(other, ParserElement): - raise TypeError( - "Cannot combine element of type {} with ParserElement".format( - type(other).__name__ - ) - ) - return other | self - - def __xor__(self, other) -> "ParserElement": - """ - Implementation of ``^`` operator - returns :class:`Or` - """ - if isinstance(other, str_type): - other = self._literalStringClass(other) - if not isinstance(other, ParserElement): - raise TypeError( - "Cannot combine element of type {} with ParserElement".format( - type(other).__name__ - ) - ) - return Or([self, other]) - - def __rxor__(self, other) -> "ParserElement": - """ - Implementation of ``^`` operator when left operand is not a :class:`ParserElement` - """ - if isinstance(other, str_type): - other = self._literalStringClass(other) - if not isinstance(other, ParserElement): - raise TypeError( - "Cannot combine element of type {} with ParserElement".format( - type(other).__name__ - ) - ) - return other ^ self - - def __and__(self, other) -> "ParserElement": - """ - Implementation of ``&`` operator - returns :class:`Each` - """ - if isinstance(other, str_type): - other = self._literalStringClass(other) - if not isinstance(other, ParserElement): - raise TypeError( - "Cannot combine element of type {} with ParserElement".format( - type(other).__name__ - ) - ) - return Each([self, other]) - - def __rand__(self, other) -> "ParserElement": - """ - Implementation of ``&`` operator when left operand is not a :class:`ParserElement` - """ - if isinstance(other, str_type): - other = self._literalStringClass(other) - if not isinstance(other, ParserElement): - raise TypeError( - "Cannot combine element of type {} with ParserElement".format( - type(other).__name__ - ) - ) - return other & self - - def __invert__(self) -> "ParserElement": - """ - Implementation of ``~`` operator - returns :class:`NotAny` - """ - return NotAny(self) - - # disable __iter__ to override legacy use of sequential access to __getitem__ to - # iterate over a sequence - __iter__ = None - - def __getitem__(self, key): - """ - use ``[]`` indexing notation as a short form for expression repetition: - - - ``expr[n]`` is equivalent to ``expr*n`` - - ``expr[m, n]`` is equivalent to ``expr*(m, n)`` - - ``expr[n, ...]`` or ``expr[n,]`` is equivalent - to ``expr*n + ZeroOrMore(expr)`` - (read as "at least n instances of ``expr``") - - ``expr[..., n]`` is equivalent to ``expr*(0, n)`` - (read as "0 to n instances of ``expr``") - - ``expr[...]`` and ``expr[0, ...]`` are equivalent to ``ZeroOrMore(expr)`` - - ``expr[1, ...]`` is equivalent to ``OneOrMore(expr)`` - - ``None`` may be used in place of ``...``. - - Note that ``expr[..., n]`` and ``expr[m, n]``do not raise an exception - if more than ``n`` ``expr``s exist in the input stream. If this behavior is - desired, then write ``expr[..., n] + ~expr``. - """ - - # convert single arg keys to tuples - try: - if isinstance(key, str_type): - key = (key,) - iter(key) - except TypeError: - key = (key, key) - - if len(key) > 2: - raise TypeError( - "only 1 or 2 index arguments supported ({}{})".format( - key[:5], "... [{}]".format(len(key)) if len(key) > 5 else "" - ) - ) - - # clip to 2 elements - ret = self * tuple(key[:2]) - return ret - - def __call__(self, name: str = None) -> "ParserElement": - """ - Shortcut for :class:`set_results_name`, with ``list_all_matches=False``. - - If ``name`` is given with a trailing ``'*'`` character, then ``list_all_matches`` will be - passed as ``True``. - - If ``name` is omitted, same as calling :class:`copy`. - - Example:: - - # these are equivalent - userdata = Word(alphas).set_results_name("name") + Word(nums + "-").set_results_name("socsecno") - userdata = Word(alphas)("name") + Word(nums + "-")("socsecno") - """ - if name is not None: - return self._setResultsName(name) - else: - return self.copy() - - def suppress(self) -> "ParserElement": - """ - Suppresses the output of this :class:`ParserElement`; useful to keep punctuation from - cluttering up returned output. - """ - return Suppress(self) - - def ignore_whitespace(self, recursive: bool = True) -> "ParserElement": - """ - Enables the skipping of whitespace before matching the characters in the - :class:`ParserElement`'s defined pattern. - - :param recursive: If ``True`` (the default), also enable whitespace skipping in child elements (if any) - """ - self.skipWhitespace = True - return self - - def leave_whitespace(self, recursive: bool = True) -> "ParserElement": - """ - Disables the skipping of whitespace before matching the characters in the - :class:`ParserElement`'s defined pattern. This is normally only used internally by - the pyparsing module, but may be needed in some whitespace-sensitive grammars. - - :param recursive: If true (the default), also disable whitespace skipping in child elements (if any) - """ - self.skipWhitespace = False - return self - - def set_whitespace_chars( - self, chars: Union[Set[str], str], copy_defaults: bool = False - ) -> "ParserElement": - """ - Overrides the default whitespace chars - """ - self.skipWhitespace = True - self.whiteChars = set(chars) - self.copyDefaultWhiteChars = copy_defaults - return self - - def parse_with_tabs(self) -> "ParserElement": - """ - Overrides default behavior to expand ```` s to spaces before parsing the input string. - Must be called before ``parse_string`` when the input grammar contains elements that - match ```` characters. - """ - self.keepTabs = True - return self - - def ignore(self, other: "ParserElement") -> "ParserElement": - """ - Define expression to be ignored (e.g., comments) while doing pattern - matching; may be called repeatedly, to define multiple comment or other - ignorable patterns. - - Example:: - - patt = Word(alphas)[1, ...] - patt.parse_string('ablaj /* comment */ lskjd') - # -> ['ablaj'] - - patt.ignore(c_style_comment) - patt.parse_string('ablaj /* comment */ lskjd') - # -> ['ablaj', 'lskjd'] - """ - import typing - - if isinstance(other, str_type): - other = Suppress(other) - - if isinstance(other, Suppress): - if other not in self.ignoreExprs: - self.ignoreExprs.append(other) - else: - self.ignoreExprs.append(Suppress(other.copy())) - return self - - def set_debug_actions( - self, - start_action: DebugStartAction, - success_action: DebugSuccessAction, - exception_action: DebugExceptionAction, - ) -> "ParserElement": - """ - Customize display of debugging messages while doing pattern matching: - - - ``start_action`` - method to be called when an expression is about to be parsed; - should have the signature ``fn(input_string: str, location: int, expression: ParserElement, cache_hit: bool)`` - - - ``success_action`` - method to be called when an expression has successfully parsed; - should have the signature ``fn(input_string: str, start_location: int, end_location: int, expression: ParserELement, parsed_tokens: ParseResults, cache_hit: bool)`` - - - ``exception_action`` - method to be called when expression fails to parse; - should have the signature ``fn(input_string: str, location: int, expression: ParserElement, exception: Exception, cache_hit: bool)`` - """ - self.debugActions = self.DebugActions( - start_action or _default_start_debug_action, - success_action or _default_success_debug_action, - exception_action or _default_exception_debug_action, - ) - self.debug = True - return self - - def set_debug(self, flag: bool = True) -> "ParserElement": - """ - Enable display of debugging messages while doing pattern matching. - Set ``flag`` to ``True`` to enable, ``False`` to disable. - - Example:: - - wd = Word(alphas).set_name("alphaword") - integer = Word(nums).set_name("numword") - term = wd | integer - - # turn on debugging for wd - wd.set_debug() - - term[1, ...].parse_string("abc 123 xyz 890") - - prints:: - - Match alphaword at loc 0(1,1) - Matched alphaword -> ['abc'] - Match alphaword at loc 3(1,4) - Exception raised:Expected alphaword (at char 4), (line:1, col:5) - Match alphaword at loc 7(1,8) - Matched alphaword -> ['xyz'] - Match alphaword at loc 11(1,12) - Exception raised:Expected alphaword (at char 12), (line:1, col:13) - Match alphaword at loc 15(1,16) - Exception raised:Expected alphaword (at char 15), (line:1, col:16) - - The output shown is that produced by the default debug actions - custom debug actions can be - specified using :class:`set_debug_actions`. Prior to attempting - to match the ``wd`` expression, the debugging message ``"Match at loc (,)"`` - is shown. Then if the parse succeeds, a ``"Matched"`` message is shown, or an ``"Exception raised"`` - message is shown. Also note the use of :class:`set_name` to assign a human-readable name to the expression, - which makes debugging and exception messages easier to understand - for instance, the default - name created for the :class:`Word` expression without calling ``set_name`` is ``"W:(A-Za-z)"``. - """ - if flag: - self.set_debug_actions( - _default_start_debug_action, - _default_success_debug_action, - _default_exception_debug_action, - ) - else: - self.debug = False - return self - - @property - def default_name(self) -> str: - if self._defaultName is None: - self._defaultName = self._generateDefaultName() - return self._defaultName - - @abstractmethod - def _generateDefaultName(self): - """ - Child classes must define this method, which defines how the ``default_name`` is set. - """ - - def set_name(self, name: str) -> "ParserElement": - """ - Define name for this expression, makes debugging and exception messages clearer. - Example:: - Word(nums).parse_string("ABC") # -> Exception: Expected W:(0-9) (at char 0), (line:1, col:1) - Word(nums).set_name("integer").parse_string("ABC") # -> Exception: Expected integer (at char 0), (line:1, col:1) - """ - self.customName = name - self.errmsg = "Expected " + self.name - if __diag__.enable_debug_on_named_expressions: - self.set_debug() - return self - - @property - def name(self) -> str: - # This will use a user-defined name if available, but otherwise defaults back to the auto-generated name - return self.customName if self.customName is not None else self.default_name - - def __str__(self) -> str: - return self.name - - def __repr__(self) -> str: - return str(self) - - def streamline(self) -> "ParserElement": - self.streamlined = True - self._defaultName = None - return self - - def recurse(self) -> Sequence["ParserElement"]: - return [] - - def _checkRecursion(self, parseElementList): - subRecCheckList = parseElementList[:] + [self] - for e in self.recurse(): - e._checkRecursion(subRecCheckList) - - def validate(self, validateTrace=None) -> None: - """ - Check defined expressions for valid structure, check for infinite recursive definitions. - """ - self._checkRecursion([]) - - def parse_file( - self, - file_or_filename: Union[str, Path, TextIO], - encoding: str = "utf-8", - parse_all: bool = False, - *, - parseAll: bool = False, - ) -> ParseResults: - """ - Execute the parse expression on the given file or filename. - If a filename is specified (instead of a file object), - the entire file is opened, read, and closed before parsing. - """ - parseAll = parseAll or parse_all - try: - file_contents = file_or_filename.read() - except AttributeError: - with open(file_or_filename, "r", encoding=encoding) as f: - file_contents = f.read() - try: - return self.parse_string(file_contents, parseAll) - except ParseBaseException as exc: - if ParserElement.verbose_stacktrace: - raise - else: - # catch and re-raise exception from here, clears out pyparsing internal stack trace - raise exc.with_traceback(None) - - def __eq__(self, other): - if self is other: - return True - elif isinstance(other, str_type): - return self.matches(other, parse_all=True) - elif isinstance(other, ParserElement): - return vars(self) == vars(other) - return False - - def __hash__(self): - return id(self) - - def matches( - self, test_string: str, parse_all: bool = True, *, parseAll: bool = True - ) -> bool: - """ - Method for quick testing of a parser against a test string. Good for simple - inline microtests of sub expressions while building up larger parser. - - Parameters: - - ``test_string`` - to test against this expression for a match - - ``parse_all`` - (default= ``True``) - flag to pass to :class:`parse_string` when running tests - - Example:: - - expr = Word(nums) - assert expr.matches("100") - """ - parseAll = parseAll and parse_all - try: - self.parse_string(str(test_string), parse_all=parseAll) - return True - except ParseBaseException: - return False - - def run_tests( - self, - tests: Union[str, List[str]], - parse_all: bool = True, - comment: typing.Optional[Union["ParserElement", str]] = "#", - full_dump: bool = True, - print_results: bool = True, - failure_tests: bool = False, - post_parse: Callable[[str, ParseResults], str] = None, - file: typing.Optional[TextIO] = None, - with_line_numbers: bool = False, - *, - parseAll: bool = True, - fullDump: bool = True, - printResults: bool = True, - failureTests: bool = False, - postParse: Callable[[str, ParseResults], str] = None, - ) -> Tuple[bool, List[Tuple[str, Union[ParseResults, Exception]]]]: - """ - Execute the parse expression on a series of test strings, showing each - test, the parsed results or where the parse failed. Quick and easy way to - run a parse expression against a list of sample strings. - - Parameters: - - ``tests`` - a list of separate test strings, or a multiline string of test strings - - ``parse_all`` - (default= ``True``) - flag to pass to :class:`parse_string` when running tests - - ``comment`` - (default= ``'#'``) - expression for indicating embedded comments in the test - string; pass None to disable comment filtering - - ``full_dump`` - (default= ``True``) - dump results as list followed by results names in nested outline; - if False, only dump nested list - - ``print_results`` - (default= ``True``) prints test output to stdout - - ``failure_tests`` - (default= ``False``) indicates if these tests are expected to fail parsing - - ``post_parse`` - (default= ``None``) optional callback for successful parse results; called as - `fn(test_string, parse_results)` and returns a string to be added to the test output - - ``file`` - (default= ``None``) optional file-like object to which test output will be written; - if None, will default to ``sys.stdout`` - - ``with_line_numbers`` - default= ``False``) show test strings with line and column numbers - - Returns: a (success, results) tuple, where success indicates that all tests succeeded - (or failed if ``failure_tests`` is True), and the results contain a list of lines of each - test's output - - Example:: - - number_expr = pyparsing_common.number.copy() - - result = number_expr.run_tests(''' - # unsigned integer - 100 - # negative integer - -100 - # float with scientific notation - 6.02e23 - # integer with scientific notation - 1e-12 - ''') - print("Success" if result[0] else "Failed!") - - result = number_expr.run_tests(''' - # stray character - 100Z - # missing leading digit before '.' - -.100 - # too many '.' - 3.14.159 - ''', failure_tests=True) - print("Success" if result[0] else "Failed!") - - prints:: - - # unsigned integer - 100 - [100] - - # negative integer - -100 - [-100] - - # float with scientific notation - 6.02e23 - [6.02e+23] - - # integer with scientific notation - 1e-12 - [1e-12] - - Success - - # stray character - 100Z - ^ - FAIL: Expected end of text (at char 3), (line:1, col:4) - - # missing leading digit before '.' - -.100 - ^ - FAIL: Expected {real number with scientific notation | real number | signed integer} (at char 0), (line:1, col:1) - - # too many '.' - 3.14.159 - ^ - FAIL: Expected end of text (at char 4), (line:1, col:5) - - Success - - Each test string must be on a single line. If you want to test a string that spans multiple - lines, create a test like this:: - - expr.run_tests(r"this is a test\\n of strings that spans \\n 3 lines") - - (Note that this is a raw string literal, you must include the leading ``'r'``.) - """ - from .testing import pyparsing_test - - parseAll = parseAll and parse_all - fullDump = fullDump and full_dump - printResults = printResults and print_results - failureTests = failureTests or failure_tests - postParse = postParse or post_parse - if isinstance(tests, str_type): - line_strip = type(tests).strip - tests = [line_strip(test_line) for test_line in tests.rstrip().splitlines()] - if isinstance(comment, str_type): - comment = Literal(comment) - if file is None: - file = sys.stdout - print_ = file.write - - result: Union[ParseResults, Exception] - allResults = [] - comments = [] - success = True - NL = Literal(r"\n").add_parse_action(replace_with("\n")).ignore(quoted_string) - BOM = "\ufeff" - for t in tests: - if comment is not None and comment.matches(t, False) or comments and not t: - comments.append( - pyparsing_test.with_line_numbers(t) if with_line_numbers else t - ) - continue - if not t: - continue - out = [ - "\n" + "\n".join(comments) if comments else "", - pyparsing_test.with_line_numbers(t) if with_line_numbers else t, - ] - comments = [] - try: - # convert newline marks to actual newlines, and strip leading BOM if present - t = NL.transform_string(t.lstrip(BOM)) - result = self.parse_string(t, parse_all=parseAll) - except ParseBaseException as pe: - fatal = "(FATAL)" if isinstance(pe, ParseFatalException) else "" - out.append(pe.explain()) - out.append("FAIL: " + str(pe)) - if ParserElement.verbose_stacktrace: - out.extend(traceback.format_tb(pe.__traceback__)) - success = success and failureTests - result = pe - except Exception as exc: - out.append("FAIL-EXCEPTION: {}: {}".format(type(exc).__name__, exc)) - if ParserElement.verbose_stacktrace: - out.extend(traceback.format_tb(exc.__traceback__)) - success = success and failureTests - result = exc - else: - success = success and not failureTests - if postParse is not None: - try: - pp_value = postParse(t, result) - if pp_value is not None: - if isinstance(pp_value, ParseResults): - out.append(pp_value.dump()) - else: - out.append(str(pp_value)) - else: - out.append(result.dump()) - except Exception as e: - out.append(result.dump(full=fullDump)) - out.append( - "{} failed: {}: {}".format( - postParse.__name__, type(e).__name__, e - ) - ) - else: - out.append(result.dump(full=fullDump)) - out.append("") - - if printResults: - print_("\n".join(out)) - - allResults.append((t, result)) - - return success, allResults - - def create_diagram( - self, - output_html: Union[TextIO, Path, str], - vertical: int = 3, - show_results_names: bool = False, - show_groups: bool = False, - **kwargs, - ) -> None: - """ - Create a railroad diagram for the parser. - - Parameters: - - output_html (str or file-like object) - output target for generated - diagram HTML - - vertical (int) - threshold for formatting multiple alternatives vertically - instead of horizontally (default=3) - - show_results_names - bool flag whether diagram should show annotations for - defined results names - - show_groups - bool flag whether groups should be highlighted with an unlabeled surrounding box - Additional diagram-formatting keyword arguments can also be included; - see railroad.Diagram class. - """ - - try: - from .diagram import to_railroad, railroad_to_html - except ImportError as ie: - raise Exception( - "must ``pip install pyparsing[diagrams]`` to generate parser railroad diagrams" - ) from ie - - self.streamline() - - railroad = to_railroad( - self, - vertical=vertical, - show_results_names=show_results_names, - show_groups=show_groups, - diagram_kwargs=kwargs, - ) - if isinstance(output_html, (str, Path)): - with open(output_html, "w", encoding="utf-8") as diag_file: - diag_file.write(railroad_to_html(railroad)) - else: - # we were passed a file-like object, just write to it - output_html.write(railroad_to_html(railroad)) - - setDefaultWhitespaceChars = set_default_whitespace_chars - inlineLiteralsUsing = inline_literals_using - setResultsName = set_results_name - setBreak = set_break - setParseAction = set_parse_action - addParseAction = add_parse_action - addCondition = add_condition - setFailAction = set_fail_action - tryParse = try_parse - canParseNext = can_parse_next - resetCache = reset_cache - enableLeftRecursion = enable_left_recursion - enablePackrat = enable_packrat - parseString = parse_string - scanString = scan_string - searchString = search_string - transformString = transform_string - setWhitespaceChars = set_whitespace_chars - parseWithTabs = parse_with_tabs - setDebugActions = set_debug_actions - setDebug = set_debug - defaultName = default_name - setName = set_name - parseFile = parse_file - runTests = run_tests - ignoreWhitespace = ignore_whitespace - leaveWhitespace = leave_whitespace - - -class _PendingSkip(ParserElement): - # internal placeholder class to hold a place were '...' is added to a parser element, - # once another ParserElement is added, this placeholder will be replaced with a SkipTo - def __init__(self, expr: ParserElement, must_skip: bool = False): - super().__init__() - self.anchor = expr - self.must_skip = must_skip - - def _generateDefaultName(self): - return str(self.anchor + Empty()).replace("Empty", "...") - - def __add__(self, other) -> "ParserElement": - skipper = SkipTo(other).set_name("...")("_skipped*") - if self.must_skip: - - def must_skip(t): - if not t._skipped or t._skipped.as_list() == [""]: - del t[0] - t.pop("_skipped", None) - - def show_skip(t): - if t._skipped.as_list()[-1:] == [""]: - t.pop("_skipped") - t["_skipped"] = "missing <" + repr(self.anchor) + ">" - - return ( - self.anchor + skipper().add_parse_action(must_skip) - | skipper().add_parse_action(show_skip) - ) + other - - return self.anchor + skipper + other - - def __repr__(self): - return self.defaultName - - def parseImpl(self, *args): - raise Exception( - "use of `...` expression without following SkipTo target expression" - ) - - -class Token(ParserElement): - """Abstract :class:`ParserElement` subclass, for defining atomic - matching patterns. - """ - - def __init__(self): - super().__init__(savelist=False) - - def _generateDefaultName(self): - return type(self).__name__ - - -class Empty(Token): - """ - An empty token, will always match. - """ - - def __init__(self): - super().__init__() - self.mayReturnEmpty = True - self.mayIndexError = False - - -class NoMatch(Token): - """ - A token that will never match. - """ - - def __init__(self): - super().__init__() - self.mayReturnEmpty = True - self.mayIndexError = False - self.errmsg = "Unmatchable token" - - def parseImpl(self, instring, loc, doActions=True): - raise ParseException(instring, loc, self.errmsg, self) - - -class Literal(Token): - """ - Token to exactly match a specified string. - - Example:: - - Literal('blah').parse_string('blah') # -> ['blah'] - Literal('blah').parse_string('blahfooblah') # -> ['blah'] - Literal('blah').parse_string('bla') # -> Exception: Expected "blah" - - For case-insensitive matching, use :class:`CaselessLiteral`. - - For keyword matching (force word break before and after the matched string), - use :class:`Keyword` or :class:`CaselessKeyword`. - """ - - def __init__(self, match_string: str = "", *, matchString: str = ""): - super().__init__() - match_string = matchString or match_string - self.match = match_string - self.matchLen = len(match_string) - try: - self.firstMatchChar = match_string[0] - except IndexError: - raise ValueError("null string passed to Literal; use Empty() instead") - self.errmsg = "Expected " + self.name - self.mayReturnEmpty = False - self.mayIndexError = False - - # Performance tuning: modify __class__ to select - # a parseImpl optimized for single-character check - if self.matchLen == 1 and type(self) is Literal: - self.__class__ = _SingleCharLiteral - - def _generateDefaultName(self): - return repr(self.match) - - def parseImpl(self, instring, loc, doActions=True): - if instring[loc] == self.firstMatchChar and instring.startswith( - self.match, loc - ): - return loc + self.matchLen, self.match - raise ParseException(instring, loc, self.errmsg, self) - - -class _SingleCharLiteral(Literal): - def parseImpl(self, instring, loc, doActions=True): - if instring[loc] == self.firstMatchChar: - return loc + 1, self.match - raise ParseException(instring, loc, self.errmsg, self) - - -ParserElement._literalStringClass = Literal - - -class Keyword(Token): - """ - Token to exactly match a specified string as a keyword, that is, - it must be immediately followed by a non-keyword character. Compare - with :class:`Literal`: - - - ``Literal("if")`` will match the leading ``'if'`` in - ``'ifAndOnlyIf'``. - - ``Keyword("if")`` will not; it will only match the leading - ``'if'`` in ``'if x=1'``, or ``'if(y==2)'`` - - Accepts two optional constructor arguments in addition to the - keyword string: - - - ``identChars`` is a string of characters that would be valid - identifier characters, defaulting to all alphanumerics + "_" and - "$" - - ``caseless`` allows case-insensitive matching, default is ``False``. - - Example:: - - Keyword("start").parse_string("start") # -> ['start'] - Keyword("start").parse_string("starting") # -> Exception - - For case-insensitive matching, use :class:`CaselessKeyword`. - """ - - DEFAULT_KEYWORD_CHARS = alphanums + "_$" - - def __init__( - self, - match_string: str = "", - ident_chars: typing.Optional[str] = None, - caseless: bool = False, - *, - matchString: str = "", - identChars: typing.Optional[str] = None, - ): - super().__init__() - identChars = identChars or ident_chars - if identChars is None: - identChars = Keyword.DEFAULT_KEYWORD_CHARS - match_string = matchString or match_string - self.match = match_string - self.matchLen = len(match_string) - try: - self.firstMatchChar = match_string[0] - except IndexError: - raise ValueError("null string passed to Keyword; use Empty() instead") - self.errmsg = "Expected {} {}".format(type(self).__name__, self.name) - self.mayReturnEmpty = False - self.mayIndexError = False - self.caseless = caseless - if caseless: - self.caselessmatch = match_string.upper() - identChars = identChars.upper() - self.identChars = set(identChars) - - def _generateDefaultName(self): - return repr(self.match) - - def parseImpl(self, instring, loc, doActions=True): - errmsg = self.errmsg - errloc = loc - if self.caseless: - if instring[loc : loc + self.matchLen].upper() == self.caselessmatch: - if loc == 0 or instring[loc - 1].upper() not in self.identChars: - if ( - loc >= len(instring) - self.matchLen - or instring[loc + self.matchLen].upper() not in self.identChars - ): - return loc + self.matchLen, self.match - else: - # followed by keyword char - errmsg += ", was immediately followed by keyword character" - errloc = loc + self.matchLen - else: - # preceded by keyword char - errmsg += ", keyword was immediately preceded by keyword character" - errloc = loc - 1 - # else no match just raise plain exception - - else: - if ( - instring[loc] == self.firstMatchChar - and self.matchLen == 1 - or instring.startswith(self.match, loc) - ): - if loc == 0 or instring[loc - 1] not in self.identChars: - if ( - loc >= len(instring) - self.matchLen - or instring[loc + self.matchLen] not in self.identChars - ): - return loc + self.matchLen, self.match - else: - # followed by keyword char - errmsg += ( - ", keyword was immediately followed by keyword character" - ) - errloc = loc + self.matchLen - else: - # preceded by keyword char - errmsg += ", keyword was immediately preceded by keyword character" - errloc = loc - 1 - # else no match just raise plain exception - - raise ParseException(instring, errloc, errmsg, self) - - @staticmethod - def set_default_keyword_chars(chars) -> None: - """ - Overrides the default characters used by :class:`Keyword` expressions. - """ - Keyword.DEFAULT_KEYWORD_CHARS = chars - - setDefaultKeywordChars = set_default_keyword_chars - - -class CaselessLiteral(Literal): - """ - Token to match a specified string, ignoring case of letters. - Note: the matched results will always be in the case of the given - match string, NOT the case of the input text. - - Example:: - - CaselessLiteral("CMD")[1, ...].parse_string("cmd CMD Cmd10") - # -> ['CMD', 'CMD', 'CMD'] - - (Contrast with example for :class:`CaselessKeyword`.) - """ - - def __init__(self, match_string: str = "", *, matchString: str = ""): - match_string = matchString or match_string - super().__init__(match_string.upper()) - # Preserve the defining literal. - self.returnString = match_string - self.errmsg = "Expected " + self.name - - def parseImpl(self, instring, loc, doActions=True): - if instring[loc : loc + self.matchLen].upper() == self.match: - return loc + self.matchLen, self.returnString - raise ParseException(instring, loc, self.errmsg, self) - - -class CaselessKeyword(Keyword): - """ - Caseless version of :class:`Keyword`. - - Example:: - - CaselessKeyword("CMD")[1, ...].parse_string("cmd CMD Cmd10") - # -> ['CMD', 'CMD'] - - (Contrast with example for :class:`CaselessLiteral`.) - """ - - def __init__( - self, - match_string: str = "", - ident_chars: typing.Optional[str] = None, - *, - matchString: str = "", - identChars: typing.Optional[str] = None, - ): - identChars = identChars or ident_chars - match_string = matchString or match_string - super().__init__(match_string, identChars, caseless=True) - - -class CloseMatch(Token): - """A variation on :class:`Literal` which matches "close" matches, - that is, strings with at most 'n' mismatching characters. - :class:`CloseMatch` takes parameters: - - - ``match_string`` - string to be matched - - ``caseless`` - a boolean indicating whether to ignore casing when comparing characters - - ``max_mismatches`` - (``default=1``) maximum number of - mismatches allowed to count as a match - - The results from a successful parse will contain the matched text - from the input string and the following named results: - - - ``mismatches`` - a list of the positions within the - match_string where mismatches were found - - ``original`` - the original match_string used to compare - against the input string - - If ``mismatches`` is an empty list, then the match was an exact - match. - - Example:: - - patt = CloseMatch("ATCATCGAATGGA") - patt.parse_string("ATCATCGAAXGGA") # -> (['ATCATCGAAXGGA'], {'mismatches': [[9]], 'original': ['ATCATCGAATGGA']}) - patt.parse_string("ATCAXCGAAXGGA") # -> Exception: Expected 'ATCATCGAATGGA' (with up to 1 mismatches) (at char 0), (line:1, col:1) - - # exact match - patt.parse_string("ATCATCGAATGGA") # -> (['ATCATCGAATGGA'], {'mismatches': [[]], 'original': ['ATCATCGAATGGA']}) - - # close match allowing up to 2 mismatches - patt = CloseMatch("ATCATCGAATGGA", max_mismatches=2) - patt.parse_string("ATCAXCGAAXGGA") # -> (['ATCAXCGAAXGGA'], {'mismatches': [[4, 9]], 'original': ['ATCATCGAATGGA']}) - """ - - def __init__( - self, - match_string: str, - max_mismatches: int = None, - *, - maxMismatches: int = 1, - caseless=False, - ): - maxMismatches = max_mismatches if max_mismatches is not None else maxMismatches - super().__init__() - self.match_string = match_string - self.maxMismatches = maxMismatches - self.errmsg = "Expected {!r} (with up to {} mismatches)".format( - self.match_string, self.maxMismatches - ) - self.caseless = caseless - self.mayIndexError = False - self.mayReturnEmpty = False - - def _generateDefaultName(self): - return "{}:{!r}".format(type(self).__name__, self.match_string) - - def parseImpl(self, instring, loc, doActions=True): - start = loc - instrlen = len(instring) - maxloc = start + len(self.match_string) - - if maxloc <= instrlen: - match_string = self.match_string - match_stringloc = 0 - mismatches = [] - maxMismatches = self.maxMismatches - - for match_stringloc, s_m in enumerate( - zip(instring[loc:maxloc], match_string) - ): - src, mat = s_m - if self.caseless: - src, mat = src.lower(), mat.lower() - - if src != mat: - mismatches.append(match_stringloc) - if len(mismatches) > maxMismatches: - break - else: - loc = start + match_stringloc + 1 - results = ParseResults([instring[start:loc]]) - results["original"] = match_string - results["mismatches"] = mismatches - return loc, results - - raise ParseException(instring, loc, self.errmsg, self) - - -class Word(Token): - """Token for matching words composed of allowed character sets. - Parameters: - - ``init_chars`` - string of all characters that should be used to - match as a word; "ABC" will match "AAA", "ABAB", "CBAC", etc.; - if ``body_chars`` is also specified, then this is the string of - initial characters - - ``body_chars`` - string of characters that - can be used for matching after a matched initial character as - given in ``init_chars``; if omitted, same as the initial characters - (default=``None``) - - ``min`` - minimum number of characters to match (default=1) - - ``max`` - maximum number of characters to match (default=0) - - ``exact`` - exact number of characters to match (default=0) - - ``as_keyword`` - match as a keyword (default=``False``) - - ``exclude_chars`` - characters that might be - found in the input ``body_chars`` string but which should not be - accepted for matching ;useful to define a word of all - printables except for one or two characters, for instance - (default=``None``) - - :class:`srange` is useful for defining custom character set strings - for defining :class:`Word` expressions, using range notation from - regular expression character sets. - - A common mistake is to use :class:`Word` to match a specific literal - string, as in ``Word("Address")``. Remember that :class:`Word` - uses the string argument to define *sets* of matchable characters. - This expression would match "Add", "AAA", "dAred", or any other word - made up of the characters 'A', 'd', 'r', 'e', and 's'. To match an - exact literal string, use :class:`Literal` or :class:`Keyword`. - - pyparsing includes helper strings for building Words: - - - :class:`alphas` - - :class:`nums` - - :class:`alphanums` - - :class:`hexnums` - - :class:`alphas8bit` (alphabetic characters in ASCII range 128-255 - - accented, tilded, umlauted, etc.) - - :class:`punc8bit` (non-alphabetic characters in ASCII range - 128-255 - currency, symbols, superscripts, diacriticals, etc.) - - :class:`printables` (any non-whitespace character) - - ``alphas``, ``nums``, and ``printables`` are also defined in several - Unicode sets - see :class:`pyparsing_unicode``. - - Example:: - - # a word composed of digits - integer = Word(nums) # equivalent to Word("0123456789") or Word(srange("0-9")) - - # a word with a leading capital, and zero or more lowercase - capital_word = Word(alphas.upper(), alphas.lower()) - - # hostnames are alphanumeric, with leading alpha, and '-' - hostname = Word(alphas, alphanums + '-') - - # roman numeral (not a strict parser, accepts invalid mix of characters) - roman = Word("IVXLCDM") - - # any string of non-whitespace characters, except for ',' - csv_value = Word(printables, exclude_chars=",") - """ - - def __init__( - self, - init_chars: str = "", - body_chars: typing.Optional[str] = None, - min: int = 1, - max: int = 0, - exact: int = 0, - as_keyword: bool = False, - exclude_chars: typing.Optional[str] = None, - *, - initChars: typing.Optional[str] = None, - bodyChars: typing.Optional[str] = None, - asKeyword: bool = False, - excludeChars: typing.Optional[str] = None, - ): - initChars = initChars or init_chars - bodyChars = bodyChars or body_chars - asKeyword = asKeyword or as_keyword - excludeChars = excludeChars or exclude_chars - super().__init__() - if not initChars: - raise ValueError( - "invalid {}, initChars cannot be empty string".format( - type(self).__name__ - ) - ) - - initChars = set(initChars) - self.initChars = initChars - if excludeChars: - excludeChars = set(excludeChars) - initChars -= excludeChars - if bodyChars: - bodyChars = set(bodyChars) - excludeChars - self.initCharsOrig = "".join(sorted(initChars)) - - if bodyChars: - self.bodyCharsOrig = "".join(sorted(bodyChars)) - self.bodyChars = set(bodyChars) - else: - self.bodyCharsOrig = "".join(sorted(initChars)) - self.bodyChars = set(initChars) - - self.maxSpecified = max > 0 - - if min < 1: - raise ValueError( - "cannot specify a minimum length < 1; use Opt(Word()) if zero-length word is permitted" - ) - - self.minLen = min - - if max > 0: - self.maxLen = max - else: - self.maxLen = _MAX_INT - - if exact > 0: - self.maxLen = exact - self.minLen = exact - - self.errmsg = "Expected " + self.name - self.mayIndexError = False - self.asKeyword = asKeyword - - # see if we can make a regex for this Word - if " " not in self.initChars | self.bodyChars and (min == 1 and exact == 0): - if self.bodyChars == self.initChars: - if max == 0: - repeat = "+" - elif max == 1: - repeat = "" - else: - repeat = "{{{},{}}}".format( - self.minLen, "" if self.maxLen == _MAX_INT else self.maxLen - ) - self.reString = "[{}]{}".format( - _collapse_string_to_ranges(self.initChars), - repeat, - ) - elif len(self.initChars) == 1: - if max == 0: - repeat = "*" - else: - repeat = "{{0,{}}}".format(max - 1) - self.reString = "{}[{}]{}".format( - re.escape(self.initCharsOrig), - _collapse_string_to_ranges(self.bodyChars), - repeat, - ) - else: - if max == 0: - repeat = "*" - elif max == 2: - repeat = "" - else: - repeat = "{{0,{}}}".format(max - 1) - self.reString = "[{}][{}]{}".format( - _collapse_string_to_ranges(self.initChars), - _collapse_string_to_ranges(self.bodyChars), - repeat, - ) - if self.asKeyword: - self.reString = r"\b" + self.reString + r"\b" - - try: - self.re = re.compile(self.reString) - except re.error: - self.re = None - else: - self.re_match = self.re.match - self.__class__ = _WordRegex - - def _generateDefaultName(self): - def charsAsStr(s): - max_repr_len = 16 - s = _collapse_string_to_ranges(s, re_escape=False) - if len(s) > max_repr_len: - return s[: max_repr_len - 3] + "..." - else: - return s - - if self.initChars != self.bodyChars: - base = "W:({}, {})".format( - charsAsStr(self.initChars), charsAsStr(self.bodyChars) - ) - else: - base = "W:({})".format(charsAsStr(self.initChars)) - - # add length specification - if self.minLen > 1 or self.maxLen != _MAX_INT: - if self.minLen == self.maxLen: - if self.minLen == 1: - return base[2:] - else: - return base + "{{{}}}".format(self.minLen) - elif self.maxLen == _MAX_INT: - return base + "{{{},...}}".format(self.minLen) - else: - return base + "{{{},{}}}".format(self.minLen, self.maxLen) - return base - - def parseImpl(self, instring, loc, doActions=True): - if instring[loc] not in self.initChars: - raise ParseException(instring, loc, self.errmsg, self) - - start = loc - loc += 1 - instrlen = len(instring) - bodychars = self.bodyChars - maxloc = start + self.maxLen - maxloc = min(maxloc, instrlen) - while loc < maxloc and instring[loc] in bodychars: - loc += 1 - - throwException = False - if loc - start < self.minLen: - throwException = True - elif self.maxSpecified and loc < instrlen and instring[loc] in bodychars: - throwException = True - elif self.asKeyword: - if ( - start > 0 - and instring[start - 1] in bodychars - or loc < instrlen - and instring[loc] in bodychars - ): - throwException = True - - if throwException: - raise ParseException(instring, loc, self.errmsg, self) - - return loc, instring[start:loc] - - -class _WordRegex(Word): - def parseImpl(self, instring, loc, doActions=True): - result = self.re_match(instring, loc) - if not result: - raise ParseException(instring, loc, self.errmsg, self) - - loc = result.end() - return loc, result.group() - - -class Char(_WordRegex): - """A short-cut class for defining :class:`Word` ``(characters, exact=1)``, - when defining a match of any single character in a string of - characters. - """ - - def __init__( - self, - charset: str, - as_keyword: bool = False, - exclude_chars: typing.Optional[str] = None, - *, - asKeyword: bool = False, - excludeChars: typing.Optional[str] = None, - ): - asKeyword = asKeyword or as_keyword - excludeChars = excludeChars or exclude_chars - super().__init__( - charset, exact=1, asKeyword=asKeyword, excludeChars=excludeChars - ) - self.reString = "[{}]".format(_collapse_string_to_ranges(self.initChars)) - if asKeyword: - self.reString = r"\b{}\b".format(self.reString) - self.re = re.compile(self.reString) - self.re_match = self.re.match - - -class Regex(Token): - r"""Token for matching strings that match a given regular - expression. Defined with string specifying the regular expression in - a form recognized by the stdlib Python `re module `_. - If the given regex contains named groups (defined using ``(?P...)``), - these will be preserved as named :class:`ParseResults`. - - If instead of the Python stdlib ``re`` module you wish to use a different RE module - (such as the ``regex`` module), you can do so by building your ``Regex`` object with - a compiled RE that was compiled using ``regex``. - - Example:: - - realnum = Regex(r"[+-]?\d+\.\d*") - # ref: https://stackoverflow.com/questions/267399/how-do-you-match-only-valid-roman-numerals-with-a-regular-expression - roman = Regex(r"M{0,4}(CM|CD|D?{0,3})(XC|XL|L?X{0,3})(IX|IV|V?I{0,3})") - - # named fields in a regex will be returned as named results - date = Regex(r'(?P\d{4})-(?P\d\d?)-(?P\d\d?)') - - # the Regex class will accept re's compiled using the regex module - import regex - parser = pp.Regex(regex.compile(r'[0-9]')) - """ - - def __init__( - self, - pattern: Any, - flags: Union[re.RegexFlag, int] = 0, - as_group_list: bool = False, - as_match: bool = False, - *, - asGroupList: bool = False, - asMatch: bool = False, - ): - """The parameters ``pattern`` and ``flags`` are passed - to the ``re.compile()`` function as-is. See the Python - `re module `_ module for an - explanation of the acceptable patterns and flags. - """ - super().__init__() - asGroupList = asGroupList or as_group_list - asMatch = asMatch or as_match - - if isinstance(pattern, str_type): - if not pattern: - raise ValueError("null string passed to Regex; use Empty() instead") - - self._re = None - self.reString = self.pattern = pattern - self.flags = flags - - elif hasattr(pattern, "pattern") and hasattr(pattern, "match"): - self._re = pattern - self.pattern = self.reString = pattern.pattern - self.flags = flags - - else: - raise TypeError( - "Regex may only be constructed with a string or a compiled RE object" - ) - - self.errmsg = "Expected " + self.name - self.mayIndexError = False - self.asGroupList = asGroupList - self.asMatch = asMatch - if self.asGroupList: - self.parseImpl = self.parseImplAsGroupList - if self.asMatch: - self.parseImpl = self.parseImplAsMatch - - @cached_property - def re(self): - if self._re: - return self._re - else: - try: - return re.compile(self.pattern, self.flags) - except re.error: - raise ValueError( - "invalid pattern ({!r}) passed to Regex".format(self.pattern) - ) - - @cached_property - def re_match(self): - return self.re.match - - @cached_property - def mayReturnEmpty(self): - return self.re_match("") is not None - - def _generateDefaultName(self): - return "Re:({})".format(repr(self.pattern).replace("\\\\", "\\")) - - def parseImpl(self, instring, loc, doActions=True): - result = self.re_match(instring, loc) - if not result: - raise ParseException(instring, loc, self.errmsg, self) - - loc = result.end() - ret = ParseResults(result.group()) - d = result.groupdict() - if d: - for k, v in d.items(): - ret[k] = v - return loc, ret - - def parseImplAsGroupList(self, instring, loc, doActions=True): - result = self.re_match(instring, loc) - if not result: - raise ParseException(instring, loc, self.errmsg, self) - - loc = result.end() - ret = result.groups() - return loc, ret - - def parseImplAsMatch(self, instring, loc, doActions=True): - result = self.re_match(instring, loc) - if not result: - raise ParseException(instring, loc, self.errmsg, self) - - loc = result.end() - ret = result - return loc, ret - - def sub(self, repl: str) -> ParserElement: - r""" - Return :class:`Regex` with an attached parse action to transform the parsed - result as if called using `re.sub(expr, repl, string) `_. - - Example:: - - make_html = Regex(r"(\w+):(.*?):").sub(r"<\1>\2") - print(make_html.transform_string("h1:main title:")) - # prints "

main title

" - """ - if self.asGroupList: - raise TypeError("cannot use sub() with Regex(asGroupList=True)") - - if self.asMatch and callable(repl): - raise TypeError("cannot use sub() with a callable with Regex(asMatch=True)") - - if self.asMatch: - - def pa(tokens): - return tokens[0].expand(repl) - - else: - - def pa(tokens): - return self.re.sub(repl, tokens[0]) - - return self.add_parse_action(pa) - - -class QuotedString(Token): - r""" - Token for matching strings that are delimited by quoting characters. - - Defined with the following parameters: - - - ``quote_char`` - string of one or more characters defining the - quote delimiting string - - ``esc_char`` - character to re_escape quotes, typically backslash - (default= ``None``) - - ``esc_quote`` - special quote sequence to re_escape an embedded quote - string (such as SQL's ``""`` to re_escape an embedded ``"``) - (default= ``None``) - - ``multiline`` - boolean indicating whether quotes can span - multiple lines (default= ``False``) - - ``unquote_results`` - boolean indicating whether the matched text - should be unquoted (default= ``True``) - - ``end_quote_char`` - string of one or more characters defining the - end of the quote delimited string (default= ``None`` => same as - quote_char) - - ``convert_whitespace_escapes`` - convert escaped whitespace - (``'\t'``, ``'\n'``, etc.) to actual whitespace - (default= ``True``) - - Example:: - - qs = QuotedString('"') - print(qs.search_string('lsjdf "This is the quote" sldjf')) - complex_qs = QuotedString('{{', end_quote_char='}}') - print(complex_qs.search_string('lsjdf {{This is the "quote"}} sldjf')) - sql_qs = QuotedString('"', esc_quote='""') - print(sql_qs.search_string('lsjdf "This is the quote with ""embedded"" quotes" sldjf')) - - prints:: - - [['This is the quote']] - [['This is the "quote"']] - [['This is the quote with "embedded" quotes']] - """ - ws_map = ((r"\t", "\t"), (r"\n", "\n"), (r"\f", "\f"), (r"\r", "\r")) - - def __init__( - self, - quote_char: str = "", - esc_char: typing.Optional[str] = None, - esc_quote: typing.Optional[str] = None, - multiline: bool = False, - unquote_results: bool = True, - end_quote_char: typing.Optional[str] = None, - convert_whitespace_escapes: bool = True, - *, - quoteChar: str = "", - escChar: typing.Optional[str] = None, - escQuote: typing.Optional[str] = None, - unquoteResults: bool = True, - endQuoteChar: typing.Optional[str] = None, - convertWhitespaceEscapes: bool = True, - ): - super().__init__() - escChar = escChar or esc_char - escQuote = escQuote or esc_quote - unquoteResults = unquoteResults and unquote_results - endQuoteChar = endQuoteChar or end_quote_char - convertWhitespaceEscapes = ( - convertWhitespaceEscapes and convert_whitespace_escapes - ) - quote_char = quoteChar or quote_char - - # remove white space from quote chars - wont work anyway - quote_char = quote_char.strip() - if not quote_char: - raise ValueError("quote_char cannot be the empty string") - - if endQuoteChar is None: - endQuoteChar = quote_char - else: - endQuoteChar = endQuoteChar.strip() - if not endQuoteChar: - raise ValueError("endQuoteChar cannot be the empty string") - - self.quoteChar = quote_char - self.quoteCharLen = len(quote_char) - self.firstQuoteChar = quote_char[0] - self.endQuoteChar = endQuoteChar - self.endQuoteCharLen = len(endQuoteChar) - self.escChar = escChar - self.escQuote = escQuote - self.unquoteResults = unquoteResults - self.convertWhitespaceEscapes = convertWhitespaceEscapes - - sep = "" - inner_pattern = "" - - if escQuote: - inner_pattern += r"{}(?:{})".format(sep, re.escape(escQuote)) - sep = "|" - - if escChar: - inner_pattern += r"{}(?:{}.)".format(sep, re.escape(escChar)) - sep = "|" - self.escCharReplacePattern = re.escape(self.escChar) + "(.)" - - if len(self.endQuoteChar) > 1: - inner_pattern += ( - "{}(?:".format(sep) - + "|".join( - "(?:{}(?!{}))".format( - re.escape(self.endQuoteChar[:i]), - re.escape(self.endQuoteChar[i:]), - ) - for i in range(len(self.endQuoteChar) - 1, 0, -1) - ) - + ")" - ) - sep = "|" - - if multiline: - self.flags = re.MULTILINE | re.DOTALL - inner_pattern += r"{}(?:[^{}{}])".format( - sep, - _escape_regex_range_chars(self.endQuoteChar[0]), - (_escape_regex_range_chars(escChar) if escChar is not None else ""), - ) - else: - self.flags = 0 - inner_pattern += r"{}(?:[^{}\n\r{}])".format( - sep, - _escape_regex_range_chars(self.endQuoteChar[0]), - (_escape_regex_range_chars(escChar) if escChar is not None else ""), - ) - - self.pattern = "".join( - [ - re.escape(self.quoteChar), - "(?:", - inner_pattern, - ")*", - re.escape(self.endQuoteChar), - ] - ) - - try: - self.re = re.compile(self.pattern, self.flags) - self.reString = self.pattern - self.re_match = self.re.match - except re.error: - raise ValueError( - "invalid pattern {!r} passed to Regex".format(self.pattern) - ) - - self.errmsg = "Expected " + self.name - self.mayIndexError = False - self.mayReturnEmpty = True - - def _generateDefaultName(self): - if self.quoteChar == self.endQuoteChar and isinstance(self.quoteChar, str_type): - return "string enclosed in {!r}".format(self.quoteChar) - - return "quoted string, starting with {} ending with {}".format( - self.quoteChar, self.endQuoteChar - ) - - def parseImpl(self, instring, loc, doActions=True): - result = ( - instring[loc] == self.firstQuoteChar - and self.re_match(instring, loc) - or None - ) - if not result: - raise ParseException(instring, loc, self.errmsg, self) - - loc = result.end() - ret = result.group() - - if self.unquoteResults: - - # strip off quotes - ret = ret[self.quoteCharLen : -self.endQuoteCharLen] - - if isinstance(ret, str_type): - # replace escaped whitespace - if "\\" in ret and self.convertWhitespaceEscapes: - for wslit, wschar in self.ws_map: - ret = ret.replace(wslit, wschar) - - # replace escaped characters - if self.escChar: - ret = re.sub(self.escCharReplacePattern, r"\g<1>", ret) - - # replace escaped quotes - if self.escQuote: - ret = ret.replace(self.escQuote, self.endQuoteChar) - - return loc, ret - - -class CharsNotIn(Token): - """Token for matching words composed of characters *not* in a given - set (will include whitespace in matched characters if not listed in - the provided exclusion set - see example). Defined with string - containing all disallowed characters, and an optional minimum, - maximum, and/or exact length. The default value for ``min`` is - 1 (a minimum value < 1 is not valid); the default values for - ``max`` and ``exact`` are 0, meaning no maximum or exact - length restriction. - - Example:: - - # define a comma-separated-value as anything that is not a ',' - csv_value = CharsNotIn(',') - print(delimited_list(csv_value).parse_string("dkls,lsdkjf,s12 34,@!#,213")) - - prints:: - - ['dkls', 'lsdkjf', 's12 34', '@!#', '213'] - """ - - def __init__( - self, - not_chars: str = "", - min: int = 1, - max: int = 0, - exact: int = 0, - *, - notChars: str = "", - ): - super().__init__() - self.skipWhitespace = False - self.notChars = not_chars or notChars - self.notCharsSet = set(self.notChars) - - if min < 1: - raise ValueError( - "cannot specify a minimum length < 1; use " - "Opt(CharsNotIn()) if zero-length char group is permitted" - ) - - self.minLen = min - - if max > 0: - self.maxLen = max - else: - self.maxLen = _MAX_INT - - if exact > 0: - self.maxLen = exact - self.minLen = exact - - self.errmsg = "Expected " + self.name - self.mayReturnEmpty = self.minLen == 0 - self.mayIndexError = False - - def _generateDefaultName(self): - not_chars_str = _collapse_string_to_ranges(self.notChars) - if len(not_chars_str) > 16: - return "!W:({}...)".format(self.notChars[: 16 - 3]) - else: - return "!W:({})".format(self.notChars) - - def parseImpl(self, instring, loc, doActions=True): - notchars = self.notCharsSet - if instring[loc] in notchars: - raise ParseException(instring, loc, self.errmsg, self) - - start = loc - loc += 1 - maxlen = min(start + self.maxLen, len(instring)) - while loc < maxlen and instring[loc] not in notchars: - loc += 1 - - if loc - start < self.minLen: - raise ParseException(instring, loc, self.errmsg, self) - - return loc, instring[start:loc] - - -class White(Token): - """Special matching class for matching whitespace. Normally, - whitespace is ignored by pyparsing grammars. This class is included - when some whitespace structures are significant. Define with - a string containing the whitespace characters to be matched; default - is ``" \\t\\r\\n"``. Also takes optional ``min``, - ``max``, and ``exact`` arguments, as defined for the - :class:`Word` class. - """ - - whiteStrs = { - " ": "", - "\t": "", - "\n": "", - "\r": "", - "\f": "", - "\u00A0": "", - "\u1680": "", - "\u180E": "", - "\u2000": "", - "\u2001": "", - "\u2002": "", - "\u2003": "", - "\u2004": "", - "\u2005": "", - "\u2006": "", - "\u2007": "", - "\u2008": "", - "\u2009": "", - "\u200A": "", - "\u200B": "", - "\u202F": "", - "\u205F": "", - "\u3000": "", - } - - def __init__(self, ws: str = " \t\r\n", min: int = 1, max: int = 0, exact: int = 0): - super().__init__() - self.matchWhite = ws - self.set_whitespace_chars( - "".join(c for c in self.whiteStrs if c not in self.matchWhite), - copy_defaults=True, - ) - # self.leave_whitespace() - self.mayReturnEmpty = True - self.errmsg = "Expected " + self.name - - self.minLen = min - - if max > 0: - self.maxLen = max - else: - self.maxLen = _MAX_INT - - if exact > 0: - self.maxLen = exact - self.minLen = exact - - def _generateDefaultName(self): - return "".join(White.whiteStrs[c] for c in self.matchWhite) - - def parseImpl(self, instring, loc, doActions=True): - if instring[loc] not in self.matchWhite: - raise ParseException(instring, loc, self.errmsg, self) - start = loc - loc += 1 - maxloc = start + self.maxLen - maxloc = min(maxloc, len(instring)) - while loc < maxloc and instring[loc] in self.matchWhite: - loc += 1 - - if loc - start < self.minLen: - raise ParseException(instring, loc, self.errmsg, self) - - return loc, instring[start:loc] - - -class PositionToken(Token): - def __init__(self): - super().__init__() - self.mayReturnEmpty = True - self.mayIndexError = False - - -class GoToColumn(PositionToken): - """Token to advance to a specific column of input text; useful for - tabular report scraping. - """ - - def __init__(self, colno: int): - super().__init__() - self.col = colno - - def preParse(self, instring, loc): - if col(loc, instring) != self.col: - instrlen = len(instring) - if self.ignoreExprs: - loc = self._skipIgnorables(instring, loc) - while ( - loc < instrlen - and instring[loc].isspace() - and col(loc, instring) != self.col - ): - loc += 1 - return loc - - def parseImpl(self, instring, loc, doActions=True): - thiscol = col(loc, instring) - if thiscol > self.col: - raise ParseException(instring, loc, "Text not in expected column", self) - newloc = loc + self.col - thiscol - ret = instring[loc:newloc] - return newloc, ret - - -class LineStart(PositionToken): - r"""Matches if current position is at the beginning of a line within - the parse string - - Example:: - - test = '''\ - AAA this line - AAA and this line - AAA but not this one - B AAA and definitely not this one - ''' - - for t in (LineStart() + 'AAA' + restOfLine).search_string(test): - print(t) - - prints:: - - ['AAA', ' this line'] - ['AAA', ' and this line'] - - """ - - def __init__(self): - super().__init__() - self.leave_whitespace() - self.orig_whiteChars = set() | self.whiteChars - self.whiteChars.discard("\n") - self.skipper = Empty().set_whitespace_chars(self.whiteChars) - self.errmsg = "Expected start of line" - - def preParse(self, instring, loc): - if loc == 0: - return loc - else: - ret = self.skipper.preParse(instring, loc) - if "\n" in self.orig_whiteChars: - while instring[ret : ret + 1] == "\n": - ret = self.skipper.preParse(instring, ret + 1) - return ret - - def parseImpl(self, instring, loc, doActions=True): - if col(loc, instring) == 1: - return loc, [] - raise ParseException(instring, loc, self.errmsg, self) - - -class LineEnd(PositionToken): - """Matches if current position is at the end of a line within the - parse string - """ - - def __init__(self): - super().__init__() - self.whiteChars.discard("\n") - self.set_whitespace_chars(self.whiteChars, copy_defaults=False) - self.errmsg = "Expected end of line" - - def parseImpl(self, instring, loc, doActions=True): - if loc < len(instring): - if instring[loc] == "\n": - return loc + 1, "\n" - else: - raise ParseException(instring, loc, self.errmsg, self) - elif loc == len(instring): - return loc + 1, [] - else: - raise ParseException(instring, loc, self.errmsg, self) - - -class StringStart(PositionToken): - """Matches if current position is at the beginning of the parse - string - """ - - def __init__(self): - super().__init__() - self.errmsg = "Expected start of text" - - def parseImpl(self, instring, loc, doActions=True): - if loc != 0: - # see if entire string up to here is just whitespace and ignoreables - if loc != self.preParse(instring, 0): - raise ParseException(instring, loc, self.errmsg, self) - return loc, [] - - -class StringEnd(PositionToken): - """ - Matches if current position is at the end of the parse string - """ - - def __init__(self): - super().__init__() - self.errmsg = "Expected end of text" - - def parseImpl(self, instring, loc, doActions=True): - if loc < len(instring): - raise ParseException(instring, loc, self.errmsg, self) - elif loc == len(instring): - return loc + 1, [] - elif loc > len(instring): - return loc, [] - else: - raise ParseException(instring, loc, self.errmsg, self) - - -class WordStart(PositionToken): - """Matches if the current position is at the beginning of a - :class:`Word`, and is not preceded by any character in a given - set of ``word_chars`` (default= ``printables``). To emulate the - ``\b`` behavior of regular expressions, use - ``WordStart(alphanums)``. ``WordStart`` will also match at - the beginning of the string being parsed, or at the beginning of - a line. - """ - - def __init__(self, word_chars: str = printables, *, wordChars: str = printables): - wordChars = word_chars if wordChars == printables else wordChars - super().__init__() - self.wordChars = set(wordChars) - self.errmsg = "Not at the start of a word" - - def parseImpl(self, instring, loc, doActions=True): - if loc != 0: - if ( - instring[loc - 1] in self.wordChars - or instring[loc] not in self.wordChars - ): - raise ParseException(instring, loc, self.errmsg, self) - return loc, [] - - -class WordEnd(PositionToken): - """Matches if the current position is at the end of a :class:`Word`, - and is not followed by any character in a given set of ``word_chars`` - (default= ``printables``). To emulate the ``\b`` behavior of - regular expressions, use ``WordEnd(alphanums)``. ``WordEnd`` - will also match at the end of the string being parsed, or at the end - of a line. - """ - - def __init__(self, word_chars: str = printables, *, wordChars: str = printables): - wordChars = word_chars if wordChars == printables else wordChars - super().__init__() - self.wordChars = set(wordChars) - self.skipWhitespace = False - self.errmsg = "Not at the end of a word" - - def parseImpl(self, instring, loc, doActions=True): - instrlen = len(instring) - if instrlen > 0 and loc < instrlen: - if ( - instring[loc] in self.wordChars - or instring[loc - 1] not in self.wordChars - ): - raise ParseException(instring, loc, self.errmsg, self) - return loc, [] - - -class ParseExpression(ParserElement): - """Abstract subclass of ParserElement, for combining and - post-processing parsed tokens. - """ - - def __init__(self, exprs: typing.Iterable[ParserElement], savelist: bool = False): - super().__init__(savelist) - self.exprs: List[ParserElement] - if isinstance(exprs, _generatorType): - exprs = list(exprs) - - if isinstance(exprs, str_type): - self.exprs = [self._literalStringClass(exprs)] - elif isinstance(exprs, ParserElement): - self.exprs = [exprs] - elif isinstance(exprs, Iterable): - exprs = list(exprs) - # if sequence of strings provided, wrap with Literal - if any(isinstance(expr, str_type) for expr in exprs): - exprs = ( - self._literalStringClass(e) if isinstance(e, str_type) else e - for e in exprs - ) - self.exprs = list(exprs) - else: - try: - self.exprs = list(exprs) - except TypeError: - self.exprs = [exprs] - self.callPreparse = False - - def recurse(self) -> Sequence[ParserElement]: - return self.exprs[:] - - def append(self, other) -> ParserElement: - self.exprs.append(other) - self._defaultName = None - return self - - def leave_whitespace(self, recursive: bool = True) -> ParserElement: - """ - Extends ``leave_whitespace`` defined in base class, and also invokes ``leave_whitespace`` on - all contained expressions. - """ - super().leave_whitespace(recursive) - - if recursive: - self.exprs = [e.copy() for e in self.exprs] - for e in self.exprs: - e.leave_whitespace(recursive) - return self - - def ignore_whitespace(self, recursive: bool = True) -> ParserElement: - """ - Extends ``ignore_whitespace`` defined in base class, and also invokes ``leave_whitespace`` on - all contained expressions. - """ - super().ignore_whitespace(recursive) - if recursive: - self.exprs = [e.copy() for e in self.exprs] - for e in self.exprs: - e.ignore_whitespace(recursive) - return self - - def ignore(self, other) -> ParserElement: - if isinstance(other, Suppress): - if other not in self.ignoreExprs: - super().ignore(other) - for e in self.exprs: - e.ignore(self.ignoreExprs[-1]) - else: - super().ignore(other) - for e in self.exprs: - e.ignore(self.ignoreExprs[-1]) - return self - - def _generateDefaultName(self): - return "{}:({})".format(self.__class__.__name__, str(self.exprs)) - - def streamline(self) -> ParserElement: - if self.streamlined: - return self - - super().streamline() - - for e in self.exprs: - e.streamline() - - # collapse nested :class:`And`'s of the form ``And(And(And(a, b), c), d)`` to ``And(a, b, c, d)`` - # but only if there are no parse actions or resultsNames on the nested And's - # (likewise for :class:`Or`'s and :class:`MatchFirst`'s) - if len(self.exprs) == 2: - other = self.exprs[0] - if ( - isinstance(other, self.__class__) - and not other.parseAction - and other.resultsName is None - and not other.debug - ): - self.exprs = other.exprs[:] + [self.exprs[1]] - self._defaultName = None - self.mayReturnEmpty |= other.mayReturnEmpty - self.mayIndexError |= other.mayIndexError - - other = self.exprs[-1] - if ( - isinstance(other, self.__class__) - and not other.parseAction - and other.resultsName is None - and not other.debug - ): - self.exprs = self.exprs[:-1] + other.exprs[:] - self._defaultName = None - self.mayReturnEmpty |= other.mayReturnEmpty - self.mayIndexError |= other.mayIndexError - - self.errmsg = "Expected " + str(self) - - return self - - def validate(self, validateTrace=None) -> None: - tmp = (validateTrace if validateTrace is not None else [])[:] + [self] - for e in self.exprs: - e.validate(tmp) - self._checkRecursion([]) - - def copy(self) -> ParserElement: - ret = super().copy() - ret.exprs = [e.copy() for e in self.exprs] - return ret - - def _setResultsName(self, name, listAllMatches=False): - if ( - __diag__.warn_ungrouped_named_tokens_in_collection - and Diagnostics.warn_ungrouped_named_tokens_in_collection - not in self.suppress_warnings_ - ): - for e in self.exprs: - if ( - isinstance(e, ParserElement) - and e.resultsName - and Diagnostics.warn_ungrouped_named_tokens_in_collection - not in e.suppress_warnings_ - ): - warnings.warn( - "{}: setting results name {!r} on {} expression " - "collides with {!r} on contained expression".format( - "warn_ungrouped_named_tokens_in_collection", - name, - type(self).__name__, - e.resultsName, - ), - stacklevel=3, - ) - - return super()._setResultsName(name, listAllMatches) - - ignoreWhitespace = ignore_whitespace - leaveWhitespace = leave_whitespace - - -class And(ParseExpression): - """ - Requires all given :class:`ParseExpression` s to be found in the given order. - Expressions may be separated by whitespace. - May be constructed using the ``'+'`` operator. - May also be constructed using the ``'-'`` operator, which will - suppress backtracking. - - Example:: - - integer = Word(nums) - name_expr = Word(alphas)[1, ...] - - expr = And([integer("id"), name_expr("name"), integer("age")]) - # more easily written as: - expr = integer("id") + name_expr("name") + integer("age") - """ - - class _ErrorStop(Empty): - def __init__(self, *args, **kwargs): - super().__init__(*args, **kwargs) - self.leave_whitespace() - - def _generateDefaultName(self): - return "-" - - def __init__( - self, exprs_arg: typing.Iterable[ParserElement], savelist: bool = True - ): - exprs: List[ParserElement] = list(exprs_arg) - if exprs and Ellipsis in exprs: - tmp = [] - for i, expr in enumerate(exprs): - if expr is Ellipsis: - if i < len(exprs) - 1: - skipto_arg: ParserElement = (Empty() + exprs[i + 1]).exprs[-1] - tmp.append(SkipTo(skipto_arg)("_skipped*")) - else: - raise Exception( - "cannot construct And with sequence ending in ..." - ) - else: - tmp.append(expr) - exprs[:] = tmp - super().__init__(exprs, savelist) - if self.exprs: - self.mayReturnEmpty = all(e.mayReturnEmpty for e in self.exprs) - if not isinstance(self.exprs[0], White): - self.set_whitespace_chars( - self.exprs[0].whiteChars, - copy_defaults=self.exprs[0].copyDefaultWhiteChars, - ) - self.skipWhitespace = self.exprs[0].skipWhitespace - else: - self.skipWhitespace = False - else: - self.mayReturnEmpty = True - self.callPreparse = True - - def streamline(self) -> ParserElement: - # collapse any _PendingSkip's - if self.exprs: - if any( - isinstance(e, ParseExpression) - and e.exprs - and isinstance(e.exprs[-1], _PendingSkip) - for e in self.exprs[:-1] - ): - for i, e in enumerate(self.exprs[:-1]): - if e is None: - continue - if ( - isinstance(e, ParseExpression) - and e.exprs - and isinstance(e.exprs[-1], _PendingSkip) - ): - e.exprs[-1] = e.exprs[-1] + self.exprs[i + 1] - self.exprs[i + 1] = None - self.exprs = [e for e in self.exprs if e is not None] - - super().streamline() - - # link any IndentedBlocks to the prior expression - for prev, cur in zip(self.exprs, self.exprs[1:]): - # traverse cur or any first embedded expr of cur looking for an IndentedBlock - # (but watch out for recursive grammar) - seen = set() - while cur: - if id(cur) in seen: - break - seen.add(id(cur)) - if isinstance(cur, IndentedBlock): - prev.add_parse_action( - lambda s, l, t, cur_=cur: setattr( - cur_, "parent_anchor", col(l, s) - ) - ) - break - subs = cur.recurse() - cur = next(iter(subs), None) - - self.mayReturnEmpty = all(e.mayReturnEmpty for e in self.exprs) - return self - - def parseImpl(self, instring, loc, doActions=True): - # pass False as callPreParse arg to _parse for first element, since we already - # pre-parsed the string as part of our And pre-parsing - loc, resultlist = self.exprs[0]._parse( - instring, loc, doActions, callPreParse=False - ) - errorStop = False - for e in self.exprs[1:]: - # if isinstance(e, And._ErrorStop): - if type(e) is And._ErrorStop: - errorStop = True - continue - if errorStop: - try: - loc, exprtokens = e._parse(instring, loc, doActions) - except ParseSyntaxException: - raise - except ParseBaseException as pe: - pe.__traceback__ = None - raise ParseSyntaxException._from_exception(pe) - except IndexError: - raise ParseSyntaxException( - instring, len(instring), self.errmsg, self - ) - else: - loc, exprtokens = e._parse(instring, loc, doActions) - if exprtokens or exprtokens.haskeys(): - resultlist += exprtokens - return loc, resultlist - - def __iadd__(self, other): - if isinstance(other, str_type): - other = self._literalStringClass(other) - return self.append(other) # And([self, other]) - - def _checkRecursion(self, parseElementList): - subRecCheckList = parseElementList[:] + [self] - for e in self.exprs: - e._checkRecursion(subRecCheckList) - if not e.mayReturnEmpty: - break - - def _generateDefaultName(self): - inner = " ".join(str(e) for e in self.exprs) - # strip off redundant inner {}'s - while len(inner) > 1 and inner[0 :: len(inner) - 1] == "{}": - inner = inner[1:-1] - return "{" + inner + "}" - - -class Or(ParseExpression): - """Requires that at least one :class:`ParseExpression` is found. If - two expressions match, the expression that matches the longest - string will be used. May be constructed using the ``'^'`` - operator. - - Example:: - - # construct Or using '^' operator - - number = Word(nums) ^ Combine(Word(nums) + '.' + Word(nums)) - print(number.search_string("123 3.1416 789")) - - prints:: - - [['123'], ['3.1416'], ['789']] - """ - - def __init__(self, exprs: typing.Iterable[ParserElement], savelist: bool = False): - super().__init__(exprs, savelist) - if self.exprs: - self.mayReturnEmpty = any(e.mayReturnEmpty for e in self.exprs) - self.skipWhitespace = all(e.skipWhitespace for e in self.exprs) - else: - self.mayReturnEmpty = True - - def streamline(self) -> ParserElement: - super().streamline() - if self.exprs: - self.mayReturnEmpty = any(e.mayReturnEmpty for e in self.exprs) - self.saveAsList = any(e.saveAsList for e in self.exprs) - self.skipWhitespace = all( - e.skipWhitespace and not isinstance(e, White) for e in self.exprs - ) - else: - self.saveAsList = False - return self - - def parseImpl(self, instring, loc, doActions=True): - maxExcLoc = -1 - maxException = None - matches = [] - fatals = [] - if all(e.callPreparse for e in self.exprs): - loc = self.preParse(instring, loc) - for e in self.exprs: - try: - loc2 = e.try_parse(instring, loc, raise_fatal=True) - except ParseFatalException as pfe: - pfe.__traceback__ = None - pfe.parserElement = e - fatals.append(pfe) - maxException = None - maxExcLoc = -1 - except ParseException as err: - if not fatals: - err.__traceback__ = None - if err.loc > maxExcLoc: - maxException = err - maxExcLoc = err.loc - except IndexError: - if len(instring) > maxExcLoc: - maxException = ParseException( - instring, len(instring), e.errmsg, self - ) - maxExcLoc = len(instring) - else: - # save match among all matches, to retry longest to shortest - matches.append((loc2, e)) - - if matches: - # re-evaluate all matches in descending order of length of match, in case attached actions - # might change whether or how much they match of the input. - matches.sort(key=itemgetter(0), reverse=True) - - if not doActions: - # no further conditions or parse actions to change the selection of - # alternative, so the first match will be the best match - best_expr = matches[0][1] - return best_expr._parse(instring, loc, doActions) - - longest = -1, None - for loc1, expr1 in matches: - if loc1 <= longest[0]: - # already have a longer match than this one will deliver, we are done - return longest - - try: - loc2, toks = expr1._parse(instring, loc, doActions) - except ParseException as err: - err.__traceback__ = None - if err.loc > maxExcLoc: - maxException = err - maxExcLoc = err.loc - else: - if loc2 >= loc1: - return loc2, toks - # didn't match as much as before - elif loc2 > longest[0]: - longest = loc2, toks - - if longest != (-1, None): - return longest - - if fatals: - if len(fatals) > 1: - fatals.sort(key=lambda e: -e.loc) - if fatals[0].loc == fatals[1].loc: - fatals.sort(key=lambda e: (-e.loc, -len(str(e.parserElement)))) - max_fatal = fatals[0] - raise max_fatal - - if maxException is not None: - maxException.msg = self.errmsg - raise maxException - else: - raise ParseException( - instring, loc, "no defined alternatives to match", self - ) - - def __ixor__(self, other): - if isinstance(other, str_type): - other = self._literalStringClass(other) - return self.append(other) # Or([self, other]) - - def _generateDefaultName(self): - return "{" + " ^ ".join(str(e) for e in self.exprs) + "}" - - def _setResultsName(self, name, listAllMatches=False): - if ( - __diag__.warn_multiple_tokens_in_named_alternation - and Diagnostics.warn_multiple_tokens_in_named_alternation - not in self.suppress_warnings_ - ): - if any( - isinstance(e, And) - and Diagnostics.warn_multiple_tokens_in_named_alternation - not in e.suppress_warnings_ - for e in self.exprs - ): - warnings.warn( - "{}: setting results name {!r} on {} expression " - "will return a list of all parsed tokens in an And alternative, " - "in prior versions only the first token was returned; enclose " - "contained argument in Group".format( - "warn_multiple_tokens_in_named_alternation", - name, - type(self).__name__, - ), - stacklevel=3, - ) - - return super()._setResultsName(name, listAllMatches) - - -class MatchFirst(ParseExpression): - """Requires that at least one :class:`ParseExpression` is found. If - more than one expression matches, the first one listed is the one that will - match. May be constructed using the ``'|'`` operator. - - Example:: - - # construct MatchFirst using '|' operator - - # watch the order of expressions to match - number = Word(nums) | Combine(Word(nums) + '.' + Word(nums)) - print(number.search_string("123 3.1416 789")) # Fail! -> [['123'], ['3'], ['1416'], ['789']] - - # put more selective expression first - number = Combine(Word(nums) + '.' + Word(nums)) | Word(nums) - print(number.search_string("123 3.1416 789")) # Better -> [['123'], ['3.1416'], ['789']] - """ - - def __init__(self, exprs: typing.Iterable[ParserElement], savelist: bool = False): - super().__init__(exprs, savelist) - if self.exprs: - self.mayReturnEmpty = any(e.mayReturnEmpty for e in self.exprs) - self.skipWhitespace = all(e.skipWhitespace for e in self.exprs) - else: - self.mayReturnEmpty = True - - def streamline(self) -> ParserElement: - if self.streamlined: - return self - - super().streamline() - if self.exprs: - self.saveAsList = any(e.saveAsList for e in self.exprs) - self.mayReturnEmpty = any(e.mayReturnEmpty for e in self.exprs) - self.skipWhitespace = all( - e.skipWhitespace and not isinstance(e, White) for e in self.exprs - ) - else: - self.saveAsList = False - self.mayReturnEmpty = True - return self - - def parseImpl(self, instring, loc, doActions=True): - maxExcLoc = -1 - maxException = None - - for e in self.exprs: - try: - return e._parse( - instring, - loc, - doActions, - ) - except ParseFatalException as pfe: - pfe.__traceback__ = None - pfe.parserElement = e - raise - except ParseException as err: - if err.loc > maxExcLoc: - maxException = err - maxExcLoc = err.loc - except IndexError: - if len(instring) > maxExcLoc: - maxException = ParseException( - instring, len(instring), e.errmsg, self - ) - maxExcLoc = len(instring) - - if maxException is not None: - maxException.msg = self.errmsg - raise maxException - else: - raise ParseException( - instring, loc, "no defined alternatives to match", self - ) - - def __ior__(self, other): - if isinstance(other, str_type): - other = self._literalStringClass(other) - return self.append(other) # MatchFirst([self, other]) - - def _generateDefaultName(self): - return "{" + " | ".join(str(e) for e in self.exprs) + "}" - - def _setResultsName(self, name, listAllMatches=False): - if ( - __diag__.warn_multiple_tokens_in_named_alternation - and Diagnostics.warn_multiple_tokens_in_named_alternation - not in self.suppress_warnings_ - ): - if any( - isinstance(e, And) - and Diagnostics.warn_multiple_tokens_in_named_alternation - not in e.suppress_warnings_ - for e in self.exprs - ): - warnings.warn( - "{}: setting results name {!r} on {} expression " - "will return a list of all parsed tokens in an And alternative, " - "in prior versions only the first token was returned; enclose " - "contained argument in Group".format( - "warn_multiple_tokens_in_named_alternation", - name, - type(self).__name__, - ), - stacklevel=3, - ) - - return super()._setResultsName(name, listAllMatches) - - -class Each(ParseExpression): - """Requires all given :class:`ParseExpression` s to be found, but in - any order. Expressions may be separated by whitespace. - - May be constructed using the ``'&'`` operator. - - Example:: - - color = one_of("RED ORANGE YELLOW GREEN BLUE PURPLE BLACK WHITE BROWN") - shape_type = one_of("SQUARE CIRCLE TRIANGLE STAR HEXAGON OCTAGON") - integer = Word(nums) - shape_attr = "shape:" + shape_type("shape") - posn_attr = "posn:" + Group(integer("x") + ',' + integer("y"))("posn") - color_attr = "color:" + color("color") - size_attr = "size:" + integer("size") - - # use Each (using operator '&') to accept attributes in any order - # (shape and posn are required, color and size are optional) - shape_spec = shape_attr & posn_attr & Opt(color_attr) & Opt(size_attr) - - shape_spec.run_tests(''' - shape: SQUARE color: BLACK posn: 100, 120 - shape: CIRCLE size: 50 color: BLUE posn: 50,80 - color:GREEN size:20 shape:TRIANGLE posn:20,40 - ''' - ) - - prints:: - - shape: SQUARE color: BLACK posn: 100, 120 - ['shape:', 'SQUARE', 'color:', 'BLACK', 'posn:', ['100', ',', '120']] - - color: BLACK - - posn: ['100', ',', '120'] - - x: 100 - - y: 120 - - shape: SQUARE - - - shape: CIRCLE size: 50 color: BLUE posn: 50,80 - ['shape:', 'CIRCLE', 'size:', '50', 'color:', 'BLUE', 'posn:', ['50', ',', '80']] - - color: BLUE - - posn: ['50', ',', '80'] - - x: 50 - - y: 80 - - shape: CIRCLE - - size: 50 - - - color: GREEN size: 20 shape: TRIANGLE posn: 20,40 - ['color:', 'GREEN', 'size:', '20', 'shape:', 'TRIANGLE', 'posn:', ['20', ',', '40']] - - color: GREEN - - posn: ['20', ',', '40'] - - x: 20 - - y: 40 - - shape: TRIANGLE - - size: 20 - """ - - def __init__(self, exprs: typing.Iterable[ParserElement], savelist: bool = True): - super().__init__(exprs, savelist) - if self.exprs: - self.mayReturnEmpty = all(e.mayReturnEmpty for e in self.exprs) - else: - self.mayReturnEmpty = True - self.skipWhitespace = True - self.initExprGroups = True - self.saveAsList = True - - def streamline(self) -> ParserElement: - super().streamline() - if self.exprs: - self.mayReturnEmpty = all(e.mayReturnEmpty for e in self.exprs) - else: - self.mayReturnEmpty = True - return self - - def parseImpl(self, instring, loc, doActions=True): - if self.initExprGroups: - self.opt1map = dict( - (id(e.expr), e) for e in self.exprs if isinstance(e, Opt) - ) - opt1 = [e.expr for e in self.exprs if isinstance(e, Opt)] - opt2 = [ - e - for e in self.exprs - if e.mayReturnEmpty and not isinstance(e, (Opt, Regex, ZeroOrMore)) - ] - self.optionals = opt1 + opt2 - self.multioptionals = [ - e.expr.set_results_name(e.resultsName, list_all_matches=True) - for e in self.exprs - if isinstance(e, _MultipleMatch) - ] - self.multirequired = [ - e.expr.set_results_name(e.resultsName, list_all_matches=True) - for e in self.exprs - if isinstance(e, OneOrMore) - ] - self.required = [ - e for e in self.exprs if not isinstance(e, (Opt, ZeroOrMore, OneOrMore)) - ] - self.required += self.multirequired - self.initExprGroups = False - - tmpLoc = loc - tmpReqd = self.required[:] - tmpOpt = self.optionals[:] - multis = self.multioptionals[:] - matchOrder = [] - - keepMatching = True - failed = [] - fatals = [] - while keepMatching: - tmpExprs = tmpReqd + tmpOpt + multis - failed.clear() - fatals.clear() - for e in tmpExprs: - try: - tmpLoc = e.try_parse(instring, tmpLoc, raise_fatal=True) - except ParseFatalException as pfe: - pfe.__traceback__ = None - pfe.parserElement = e - fatals.append(pfe) - failed.append(e) - except ParseException: - failed.append(e) - else: - matchOrder.append(self.opt1map.get(id(e), e)) - if e in tmpReqd: - tmpReqd.remove(e) - elif e in tmpOpt: - tmpOpt.remove(e) - if len(failed) == len(tmpExprs): - keepMatching = False - - # look for any ParseFatalExceptions - if fatals: - if len(fatals) > 1: - fatals.sort(key=lambda e: -e.loc) - if fatals[0].loc == fatals[1].loc: - fatals.sort(key=lambda e: (-e.loc, -len(str(e.parserElement)))) - max_fatal = fatals[0] - raise max_fatal - - if tmpReqd: - missing = ", ".join([str(e) for e in tmpReqd]) - raise ParseException( - instring, - loc, - "Missing one or more required elements ({})".format(missing), - ) - - # add any unmatched Opts, in case they have default values defined - matchOrder += [e for e in self.exprs if isinstance(e, Opt) and e.expr in tmpOpt] - - total_results = ParseResults([]) - for e in matchOrder: - loc, results = e._parse(instring, loc, doActions) - total_results += results - - return loc, total_results - - def _generateDefaultName(self): - return "{" + " & ".join(str(e) for e in self.exprs) + "}" - - -class ParseElementEnhance(ParserElement): - """Abstract subclass of :class:`ParserElement`, for combining and - post-processing parsed tokens. - """ - - def __init__(self, expr: Union[ParserElement, str], savelist: bool = False): - super().__init__(savelist) - if isinstance(expr, str_type): - if issubclass(self._literalStringClass, Token): - expr = self._literalStringClass(expr) - elif issubclass(type(self), self._literalStringClass): - expr = Literal(expr) - else: - expr = self._literalStringClass(Literal(expr)) - self.expr = expr - if expr is not None: - self.mayIndexError = expr.mayIndexError - self.mayReturnEmpty = expr.mayReturnEmpty - self.set_whitespace_chars( - expr.whiteChars, copy_defaults=expr.copyDefaultWhiteChars - ) - self.skipWhitespace = expr.skipWhitespace - self.saveAsList = expr.saveAsList - self.callPreparse = expr.callPreparse - self.ignoreExprs.extend(expr.ignoreExprs) - - def recurse(self) -> Sequence[ParserElement]: - return [self.expr] if self.expr is not None else [] - - def parseImpl(self, instring, loc, doActions=True): - if self.expr is not None: - return self.expr._parse(instring, loc, doActions, callPreParse=False) - else: - raise ParseException(instring, loc, "No expression defined", self) - - def leave_whitespace(self, recursive: bool = True) -> ParserElement: - super().leave_whitespace(recursive) - - if recursive: - self.expr = self.expr.copy() - if self.expr is not None: - self.expr.leave_whitespace(recursive) - return self - - def ignore_whitespace(self, recursive: bool = True) -> ParserElement: - super().ignore_whitespace(recursive) - - if recursive: - self.expr = self.expr.copy() - if self.expr is not None: - self.expr.ignore_whitespace(recursive) - return self - - def ignore(self, other) -> ParserElement: - if isinstance(other, Suppress): - if other not in self.ignoreExprs: - super().ignore(other) - if self.expr is not None: - self.expr.ignore(self.ignoreExprs[-1]) - else: - super().ignore(other) - if self.expr is not None: - self.expr.ignore(self.ignoreExprs[-1]) - return self - - def streamline(self) -> ParserElement: - super().streamline() - if self.expr is not None: - self.expr.streamline() - return self - - def _checkRecursion(self, parseElementList): - if self in parseElementList: - raise RecursiveGrammarException(parseElementList + [self]) - subRecCheckList = parseElementList[:] + [self] - if self.expr is not None: - self.expr._checkRecursion(subRecCheckList) - - def validate(self, validateTrace=None) -> None: - if validateTrace is None: - validateTrace = [] - tmp = validateTrace[:] + [self] - if self.expr is not None: - self.expr.validate(tmp) - self._checkRecursion([]) - - def _generateDefaultName(self): - return "{}:({})".format(self.__class__.__name__, str(self.expr)) - - ignoreWhitespace = ignore_whitespace - leaveWhitespace = leave_whitespace - - -class IndentedBlock(ParseElementEnhance): - """ - Expression to match one or more expressions at a given indentation level. - Useful for parsing text where structure is implied by indentation (like Python source code). - """ - - class _Indent(Empty): - def __init__(self, ref_col: int): - super().__init__() - self.errmsg = "expected indent at column {}".format(ref_col) - self.add_condition(lambda s, l, t: col(l, s) == ref_col) - - class _IndentGreater(Empty): - def __init__(self, ref_col: int): - super().__init__() - self.errmsg = "expected indent at column greater than {}".format(ref_col) - self.add_condition(lambda s, l, t: col(l, s) > ref_col) - - def __init__( - self, expr: ParserElement, *, recursive: bool = False, grouped: bool = True - ): - super().__init__(expr, savelist=True) - # if recursive: - # raise NotImplementedError("IndentedBlock with recursive is not implemented") - self._recursive = recursive - self._grouped = grouped - self.parent_anchor = 1 - - def parseImpl(self, instring, loc, doActions=True): - # advance parse position to non-whitespace by using an Empty() - # this should be the column to be used for all subsequent indented lines - anchor_loc = Empty().preParse(instring, loc) - - # see if self.expr matches at the current location - if not it will raise an exception - # and no further work is necessary - self.expr.try_parse(instring, anchor_loc, doActions) - - indent_col = col(anchor_loc, instring) - peer_detect_expr = self._Indent(indent_col) - - inner_expr = Empty() + peer_detect_expr + self.expr - if self._recursive: - sub_indent = self._IndentGreater(indent_col) - nested_block = IndentedBlock( - self.expr, recursive=self._recursive, grouped=self._grouped - ) - nested_block.set_debug(self.debug) - nested_block.parent_anchor = indent_col - inner_expr += Opt(sub_indent + nested_block) - - inner_expr.set_name(f"inner {hex(id(inner_expr))[-4:].upper()}@{indent_col}") - block = OneOrMore(inner_expr) - - trailing_undent = self._Indent(self.parent_anchor) | StringEnd() - - if self._grouped: - wrapper = Group - else: - wrapper = lambda expr: expr - return (wrapper(block) + Optional(trailing_undent)).parseImpl( - instring, anchor_loc, doActions - ) - - -class AtStringStart(ParseElementEnhance): - """Matches if expression matches at the beginning of the parse - string:: - - AtStringStart(Word(nums)).parse_string("123") - # prints ["123"] - - AtStringStart(Word(nums)).parse_string(" 123") - # raises ParseException - """ - - def __init__(self, expr: Union[ParserElement, str]): - super().__init__(expr) - self.callPreparse = False - - def parseImpl(self, instring, loc, doActions=True): - if loc != 0: - raise ParseException(instring, loc, "not found at string start") - return super().parseImpl(instring, loc, doActions) - - -class AtLineStart(ParseElementEnhance): - r"""Matches if an expression matches at the beginning of a line within - the parse string - - Example:: - - test = '''\ - AAA this line - AAA and this line - AAA but not this one - B AAA and definitely not this one - ''' - - for t in (AtLineStart('AAA') + restOfLine).search_string(test): - print(t) - - prints:: - - ['AAA', ' this line'] - ['AAA', ' and this line'] - - """ - - def __init__(self, expr: Union[ParserElement, str]): - super().__init__(expr) - self.callPreparse = False - - def parseImpl(self, instring, loc, doActions=True): - if col(loc, instring) != 1: - raise ParseException(instring, loc, "not found at line start") - return super().parseImpl(instring, loc, doActions) - - -class FollowedBy(ParseElementEnhance): - """Lookahead matching of the given parse expression. - ``FollowedBy`` does *not* advance the parsing position within - the input string, it only verifies that the specified parse - expression matches at the current position. ``FollowedBy`` - always returns a null token list. If any results names are defined - in the lookahead expression, those *will* be returned for access by - name. - - Example:: - - # use FollowedBy to match a label only if it is followed by a ':' - data_word = Word(alphas) - label = data_word + FollowedBy(':') - attr_expr = Group(label + Suppress(':') + OneOrMore(data_word, stop_on=label).set_parse_action(' '.join)) - - attr_expr[1, ...].parse_string("shape: SQUARE color: BLACK posn: upper left").pprint() - - prints:: - - [['shape', 'SQUARE'], ['color', 'BLACK'], ['posn', 'upper left']] - """ - - def __init__(self, expr: Union[ParserElement, str]): - super().__init__(expr) - self.mayReturnEmpty = True - - def parseImpl(self, instring, loc, doActions=True): - # by using self._expr.parse and deleting the contents of the returned ParseResults list - # we keep any named results that were defined in the FollowedBy expression - _, ret = self.expr._parse(instring, loc, doActions=doActions) - del ret[:] - - return loc, ret - - -class PrecededBy(ParseElementEnhance): - """Lookbehind matching of the given parse expression. - ``PrecededBy`` does not advance the parsing position within the - input string, it only verifies that the specified parse expression - matches prior to the current position. ``PrecededBy`` always - returns a null token list, but if a results name is defined on the - given expression, it is returned. - - Parameters: - - - expr - expression that must match prior to the current parse - location - - retreat - (default= ``None``) - (int) maximum number of characters - to lookbehind prior to the current parse location - - If the lookbehind expression is a string, :class:`Literal`, - :class:`Keyword`, or a :class:`Word` or :class:`CharsNotIn` - with a specified exact or maximum length, then the retreat - parameter is not required. Otherwise, retreat must be specified to - give a maximum number of characters to look back from - the current parse position for a lookbehind match. - - Example:: - - # VB-style variable names with type prefixes - int_var = PrecededBy("#") + pyparsing_common.identifier - str_var = PrecededBy("$") + pyparsing_common.identifier - - """ - - def __init__( - self, expr: Union[ParserElement, str], retreat: typing.Optional[int] = None - ): - super().__init__(expr) - self.expr = self.expr().leave_whitespace() - self.mayReturnEmpty = True - self.mayIndexError = False - self.exact = False - if isinstance(expr, str_type): - retreat = len(expr) - self.exact = True - elif isinstance(expr, (Literal, Keyword)): - retreat = expr.matchLen - self.exact = True - elif isinstance(expr, (Word, CharsNotIn)) and expr.maxLen != _MAX_INT: - retreat = expr.maxLen - self.exact = True - elif isinstance(expr, PositionToken): - retreat = 0 - self.exact = True - self.retreat = retreat - self.errmsg = "not preceded by " + str(expr) - self.skipWhitespace = False - self.parseAction.append(lambda s, l, t: t.__delitem__(slice(None, None))) - - def parseImpl(self, instring, loc=0, doActions=True): - if self.exact: - if loc < self.retreat: - raise ParseException(instring, loc, self.errmsg) - start = loc - self.retreat - _, ret = self.expr._parse(instring, start) - else: - # retreat specified a maximum lookbehind window, iterate - test_expr = self.expr + StringEnd() - instring_slice = instring[max(0, loc - self.retreat) : loc] - last_expr = ParseException(instring, loc, self.errmsg) - for offset in range(1, min(loc, self.retreat + 1) + 1): - try: - # print('trying', offset, instring_slice, repr(instring_slice[loc - offset:])) - _, ret = test_expr._parse( - instring_slice, len(instring_slice) - offset - ) - except ParseBaseException as pbe: - last_expr = pbe - else: - break - else: - raise last_expr - return loc, ret - - -class Located(ParseElementEnhance): - """ - Decorates a returned token with its starting and ending - locations in the input string. - - This helper adds the following results names: - - - ``locn_start`` - location where matched expression begins - - ``locn_end`` - location where matched expression ends - - ``value`` - the actual parsed results - - Be careful if the input text contains ```` characters, you - may want to call :class:`ParserElement.parse_with_tabs` - - Example:: - - wd = Word(alphas) - for match in Located(wd).search_string("ljsdf123lksdjjf123lkkjj1222"): - print(match) - - prints:: - - [0, ['ljsdf'], 5] - [8, ['lksdjjf'], 15] - [18, ['lkkjj'], 23] - - """ - - def parseImpl(self, instring, loc, doActions=True): - start = loc - loc, tokens = self.expr._parse(instring, start, doActions, callPreParse=False) - ret_tokens = ParseResults([start, tokens, loc]) - ret_tokens["locn_start"] = start - ret_tokens["value"] = tokens - ret_tokens["locn_end"] = loc - if self.resultsName: - # must return as a list, so that the name will be attached to the complete group - return loc, [ret_tokens] - else: - return loc, ret_tokens - - -class NotAny(ParseElementEnhance): - """ - Lookahead to disallow matching with the given parse expression. - ``NotAny`` does *not* advance the parsing position within the - input string, it only verifies that the specified parse expression - does *not* match at the current position. Also, ``NotAny`` does - *not* skip over leading whitespace. ``NotAny`` always returns - a null token list. May be constructed using the ``'~'`` operator. - - Example:: - - AND, OR, NOT = map(CaselessKeyword, "AND OR NOT".split()) - - # take care not to mistake keywords for identifiers - ident = ~(AND | OR | NOT) + Word(alphas) - boolean_term = Opt(NOT) + ident - - # very crude boolean expression - to support parenthesis groups and - # operation hierarchy, use infix_notation - boolean_expr = boolean_term + ((AND | OR) + boolean_term)[...] - - # integers that are followed by "." are actually floats - integer = Word(nums) + ~Char(".") - """ - - def __init__(self, expr: Union[ParserElement, str]): - super().__init__(expr) - # do NOT use self.leave_whitespace(), don't want to propagate to exprs - # self.leave_whitespace() - self.skipWhitespace = False - - self.mayReturnEmpty = True - self.errmsg = "Found unwanted token, " + str(self.expr) - - def parseImpl(self, instring, loc, doActions=True): - if self.expr.can_parse_next(instring, loc): - raise ParseException(instring, loc, self.errmsg, self) - return loc, [] - - def _generateDefaultName(self): - return "~{" + str(self.expr) + "}" - - -class _MultipleMatch(ParseElementEnhance): - def __init__( - self, - expr: ParserElement, - stop_on: typing.Optional[Union[ParserElement, str]] = None, - *, - stopOn: typing.Optional[Union[ParserElement, str]] = None, - ): - super().__init__(expr) - stopOn = stopOn or stop_on - self.saveAsList = True - ender = stopOn - if isinstance(ender, str_type): - ender = self._literalStringClass(ender) - self.stopOn(ender) - - def stopOn(self, ender) -> ParserElement: - if isinstance(ender, str_type): - ender = self._literalStringClass(ender) - self.not_ender = ~ender if ender is not None else None - return self - - def parseImpl(self, instring, loc, doActions=True): - self_expr_parse = self.expr._parse - self_skip_ignorables = self._skipIgnorables - check_ender = self.not_ender is not None - if check_ender: - try_not_ender = self.not_ender.tryParse - - # must be at least one (but first see if we are the stopOn sentinel; - # if so, fail) - if check_ender: - try_not_ender(instring, loc) - loc, tokens = self_expr_parse(instring, loc, doActions) - try: - hasIgnoreExprs = not not self.ignoreExprs - while 1: - if check_ender: - try_not_ender(instring, loc) - if hasIgnoreExprs: - preloc = self_skip_ignorables(instring, loc) - else: - preloc = loc - loc, tmptokens = self_expr_parse(instring, preloc, doActions) - if tmptokens or tmptokens.haskeys(): - tokens += tmptokens - except (ParseException, IndexError): - pass - - return loc, tokens - - def _setResultsName(self, name, listAllMatches=False): - if ( - __diag__.warn_ungrouped_named_tokens_in_collection - and Diagnostics.warn_ungrouped_named_tokens_in_collection - not in self.suppress_warnings_ - ): - for e in [self.expr] + self.expr.recurse(): - if ( - isinstance(e, ParserElement) - and e.resultsName - and Diagnostics.warn_ungrouped_named_tokens_in_collection - not in e.suppress_warnings_ - ): - warnings.warn( - "{}: setting results name {!r} on {} expression " - "collides with {!r} on contained expression".format( - "warn_ungrouped_named_tokens_in_collection", - name, - type(self).__name__, - e.resultsName, - ), - stacklevel=3, - ) - - return super()._setResultsName(name, listAllMatches) - - -class OneOrMore(_MultipleMatch): - """ - Repetition of one or more of the given expression. - - Parameters: - - expr - expression that must match one or more times - - stop_on - (default= ``None``) - expression for a terminating sentinel - (only required if the sentinel would ordinarily match the repetition - expression) - - Example:: - - data_word = Word(alphas) - label = data_word + FollowedBy(':') - attr_expr = Group(label + Suppress(':') + OneOrMore(data_word).set_parse_action(' '.join)) - - text = "shape: SQUARE posn: upper left color: BLACK" - attr_expr[1, ...].parse_string(text).pprint() # Fail! read 'color' as data instead of next label -> [['shape', 'SQUARE color']] - - # use stop_on attribute for OneOrMore to avoid reading label string as part of the data - attr_expr = Group(label + Suppress(':') + OneOrMore(data_word, stop_on=label).set_parse_action(' '.join)) - OneOrMore(attr_expr).parse_string(text).pprint() # Better -> [['shape', 'SQUARE'], ['posn', 'upper left'], ['color', 'BLACK']] - - # could also be written as - (attr_expr * (1,)).parse_string(text).pprint() - """ - - def _generateDefaultName(self): - return "{" + str(self.expr) + "}..." - - -class ZeroOrMore(_MultipleMatch): - """ - Optional repetition of zero or more of the given expression. - - Parameters: - - ``expr`` - expression that must match zero or more times - - ``stop_on`` - expression for a terminating sentinel - (only required if the sentinel would ordinarily match the repetition - expression) - (default= ``None``) - - Example: similar to :class:`OneOrMore` - """ - - def __init__( - self, - expr: ParserElement, - stop_on: typing.Optional[Union[ParserElement, str]] = None, - *, - stopOn: typing.Optional[Union[ParserElement, str]] = None, - ): - super().__init__(expr, stopOn=stopOn or stop_on) - self.mayReturnEmpty = True - - def parseImpl(self, instring, loc, doActions=True): - try: - return super().parseImpl(instring, loc, doActions) - except (ParseException, IndexError): - return loc, ParseResults([], name=self.resultsName) - - def _generateDefaultName(self): - return "[" + str(self.expr) + "]..." - - -class _NullToken: - def __bool__(self): - return False - - def __str__(self): - return "" - - -class Opt(ParseElementEnhance): - """ - Optional matching of the given expression. - - Parameters: - - ``expr`` - expression that must match zero or more times - - ``default`` (optional) - value to be returned if the optional expression is not found. - - Example:: - - # US postal code can be a 5-digit zip, plus optional 4-digit qualifier - zip = Combine(Word(nums, exact=5) + Opt('-' + Word(nums, exact=4))) - zip.run_tests(''' - # traditional ZIP code - 12345 - - # ZIP+4 form - 12101-0001 - - # invalid ZIP - 98765- - ''') - - prints:: - - # traditional ZIP code - 12345 - ['12345'] - - # ZIP+4 form - 12101-0001 - ['12101-0001'] - - # invalid ZIP - 98765- - ^ - FAIL: Expected end of text (at char 5), (line:1, col:6) - """ - - __optionalNotMatched = _NullToken() - - def __init__( - self, expr: Union[ParserElement, str], default: Any = __optionalNotMatched - ): - super().__init__(expr, savelist=False) - self.saveAsList = self.expr.saveAsList - self.defaultValue = default - self.mayReturnEmpty = True - - def parseImpl(self, instring, loc, doActions=True): - self_expr = self.expr - try: - loc, tokens = self_expr._parse(instring, loc, doActions, callPreParse=False) - except (ParseException, IndexError): - default_value = self.defaultValue - if default_value is not self.__optionalNotMatched: - if self_expr.resultsName: - tokens = ParseResults([default_value]) - tokens[self_expr.resultsName] = default_value - else: - tokens = [default_value] - else: - tokens = [] - return loc, tokens - - def _generateDefaultName(self): - inner = str(self.expr) - # strip off redundant inner {}'s - while len(inner) > 1 and inner[0 :: len(inner) - 1] == "{}": - inner = inner[1:-1] - return "[" + inner + "]" - - -Optional = Opt - - -class SkipTo(ParseElementEnhance): - """ - Token for skipping over all undefined text until the matched - expression is found. - - Parameters: - - ``expr`` - target expression marking the end of the data to be skipped - - ``include`` - if ``True``, the target expression is also parsed - (the skipped text and target expression are returned as a 2-element - list) (default= ``False``). - - ``ignore`` - (default= ``None``) used to define grammars (typically quoted strings and - comments) that might contain false matches to the target expression - - ``fail_on`` - (default= ``None``) define expressions that are not allowed to be - included in the skipped test; if found before the target expression is found, - the :class:`SkipTo` is not a match - - Example:: - - report = ''' - Outstanding Issues Report - 1 Jan 2000 - - # | Severity | Description | Days Open - -----+----------+-------------------------------------------+----------- - 101 | Critical | Intermittent system crash | 6 - 94 | Cosmetic | Spelling error on Login ('log|n') | 14 - 79 | Minor | System slow when running too many reports | 47 - ''' - integer = Word(nums) - SEP = Suppress('|') - # use SkipTo to simply match everything up until the next SEP - # - ignore quoted strings, so that a '|' character inside a quoted string does not match - # - parse action will call token.strip() for each matched token, i.e., the description body - string_data = SkipTo(SEP, ignore=quoted_string) - string_data.set_parse_action(token_map(str.strip)) - ticket_expr = (integer("issue_num") + SEP - + string_data("sev") + SEP - + string_data("desc") + SEP - + integer("days_open")) - - for tkt in ticket_expr.search_string(report): - print tkt.dump() - - prints:: - - ['101', 'Critical', 'Intermittent system crash', '6'] - - days_open: '6' - - desc: 'Intermittent system crash' - - issue_num: '101' - - sev: 'Critical' - ['94', 'Cosmetic', "Spelling error on Login ('log|n')", '14'] - - days_open: '14' - - desc: "Spelling error on Login ('log|n')" - - issue_num: '94' - - sev: 'Cosmetic' - ['79', 'Minor', 'System slow when running too many reports', '47'] - - days_open: '47' - - desc: 'System slow when running too many reports' - - issue_num: '79' - - sev: 'Minor' - """ - - def __init__( - self, - other: Union[ParserElement, str], - include: bool = False, - ignore: bool = None, - fail_on: typing.Optional[Union[ParserElement, str]] = None, - *, - failOn: Union[ParserElement, str] = None, - ): - super().__init__(other) - failOn = failOn or fail_on - self.ignoreExpr = ignore - self.mayReturnEmpty = True - self.mayIndexError = False - self.includeMatch = include - self.saveAsList = False - if isinstance(failOn, str_type): - self.failOn = self._literalStringClass(failOn) - else: - self.failOn = failOn - self.errmsg = "No match found for " + str(self.expr) - - def parseImpl(self, instring, loc, doActions=True): - startloc = loc - instrlen = len(instring) - self_expr_parse = self.expr._parse - self_failOn_canParseNext = ( - self.failOn.canParseNext if self.failOn is not None else None - ) - self_ignoreExpr_tryParse = ( - self.ignoreExpr.tryParse if self.ignoreExpr is not None else None - ) - - tmploc = loc - while tmploc <= instrlen: - if self_failOn_canParseNext is not None: - # break if failOn expression matches - if self_failOn_canParseNext(instring, tmploc): - break - - if self_ignoreExpr_tryParse is not None: - # advance past ignore expressions - while 1: - try: - tmploc = self_ignoreExpr_tryParse(instring, tmploc) - except ParseBaseException: - break - - try: - self_expr_parse(instring, tmploc, doActions=False, callPreParse=False) - except (ParseException, IndexError): - # no match, advance loc in string - tmploc += 1 - else: - # matched skipto expr, done - break - - else: - # ran off the end of the input string without matching skipto expr, fail - raise ParseException(instring, loc, self.errmsg, self) - - # build up return values - loc = tmploc - skiptext = instring[startloc:loc] - skipresult = ParseResults(skiptext) - - if self.includeMatch: - loc, mat = self_expr_parse(instring, loc, doActions, callPreParse=False) - skipresult += mat - - return loc, skipresult - - -class Forward(ParseElementEnhance): - """ - Forward declaration of an expression to be defined later - - used for recursive grammars, such as algebraic infix notation. - When the expression is known, it is assigned to the ``Forward`` - variable using the ``'<<'`` operator. - - Note: take care when assigning to ``Forward`` not to overlook - precedence of operators. - - Specifically, ``'|'`` has a lower precedence than ``'<<'``, so that:: - - fwd_expr << a | b | c - - will actually be evaluated as:: - - (fwd_expr << a) | b | c - - thereby leaving b and c out as parseable alternatives. It is recommended that you - explicitly group the values inserted into the ``Forward``:: - - fwd_expr << (a | b | c) - - Converting to use the ``'<<='`` operator instead will avoid this problem. - - See :class:`ParseResults.pprint` for an example of a recursive - parser created using ``Forward``. - """ - - def __init__(self, other: typing.Optional[Union[ParserElement, str]] = None): - self.caller_frame = traceback.extract_stack(limit=2)[0] - super().__init__(other, savelist=False) - self.lshift_line = None - - def __lshift__(self, other): - if hasattr(self, "caller_frame"): - del self.caller_frame - if isinstance(other, str_type): - other = self._literalStringClass(other) - self.expr = other - self.mayIndexError = self.expr.mayIndexError - self.mayReturnEmpty = self.expr.mayReturnEmpty - self.set_whitespace_chars( - self.expr.whiteChars, copy_defaults=self.expr.copyDefaultWhiteChars - ) - self.skipWhitespace = self.expr.skipWhitespace - self.saveAsList = self.expr.saveAsList - self.ignoreExprs.extend(self.expr.ignoreExprs) - self.lshift_line = traceback.extract_stack(limit=2)[-2] - return self - - def __ilshift__(self, other): - return self << other - - def __or__(self, other): - caller_line = traceback.extract_stack(limit=2)[-2] - if ( - __diag__.warn_on_match_first_with_lshift_operator - and caller_line == self.lshift_line - and Diagnostics.warn_on_match_first_with_lshift_operator - not in self.suppress_warnings_ - ): - warnings.warn( - "using '<<' operator with '|' is probably an error, use '<<='", - stacklevel=2, - ) - ret = super().__or__(other) - return ret - - def __del__(self): - # see if we are getting dropped because of '=' reassignment of var instead of '<<=' or '<<' - if ( - self.expr is None - and __diag__.warn_on_assignment_to_Forward - and Diagnostics.warn_on_assignment_to_Forward not in self.suppress_warnings_ - ): - warnings.warn_explicit( - "Forward defined here but no expression attached later using '<<=' or '<<'", - UserWarning, - filename=self.caller_frame.filename, - lineno=self.caller_frame.lineno, - ) - - def parseImpl(self, instring, loc, doActions=True): - if ( - self.expr is None - and __diag__.warn_on_parse_using_empty_Forward - and Diagnostics.warn_on_parse_using_empty_Forward - not in self.suppress_warnings_ - ): - # walk stack until parse_string, scan_string, search_string, or transform_string is found - parse_fns = [ - "parse_string", - "scan_string", - "search_string", - "transform_string", - ] - tb = traceback.extract_stack(limit=200) - for i, frm in enumerate(reversed(tb), start=1): - if frm.name in parse_fns: - stacklevel = i + 1 - break - else: - stacklevel = 2 - warnings.warn( - "Forward expression was never assigned a value, will not parse any input", - stacklevel=stacklevel, - ) - if not ParserElement._left_recursion_enabled: - return super().parseImpl(instring, loc, doActions) - # ## Bounded Recursion algorithm ## - # Recursion only needs to be processed at ``Forward`` elements, since they are - # the only ones that can actually refer to themselves. The general idea is - # to handle recursion stepwise: We start at no recursion, then recurse once, - # recurse twice, ..., until more recursion offers no benefit (we hit the bound). - # - # The "trick" here is that each ``Forward`` gets evaluated in two contexts - # - to *match* a specific recursion level, and - # - to *search* the bounded recursion level - # and the two run concurrently. The *search* must *match* each recursion level - # to find the best possible match. This is handled by a memo table, which - # provides the previous match to the next level match attempt. - # - # See also "Left Recursion in Parsing Expression Grammars", Medeiros et al. - # - # There is a complication since we not only *parse* but also *transform* via - # actions: We do not want to run the actions too often while expanding. Thus, - # we expand using `doActions=False` and only run `doActions=True` if the next - # recursion level is acceptable. - with ParserElement.recursion_lock: - memo = ParserElement.recursion_memos - try: - # we are parsing at a specific recursion expansion - use it as-is - prev_loc, prev_result = memo[loc, self, doActions] - if isinstance(prev_result, Exception): - raise prev_result - return prev_loc, prev_result.copy() - except KeyError: - act_key = (loc, self, True) - peek_key = (loc, self, False) - # we are searching for the best recursion expansion - keep on improving - # both `doActions` cases must be tracked separately here! - prev_loc, prev_peek = memo[peek_key] = ( - loc - 1, - ParseException( - instring, loc, "Forward recursion without base case", self - ), - ) - if doActions: - memo[act_key] = memo[peek_key] - while True: - try: - new_loc, new_peek = super().parseImpl(instring, loc, False) - except ParseException: - # we failed before getting any match – do not hide the error - if isinstance(prev_peek, Exception): - raise - new_loc, new_peek = prev_loc, prev_peek - # the match did not get better: we are done - if new_loc <= prev_loc: - if doActions: - # replace the match for doActions=False as well, - # in case the action did backtrack - prev_loc, prev_result = memo[peek_key] = memo[act_key] - del memo[peek_key], memo[act_key] - return prev_loc, prev_result.copy() - del memo[peek_key] - return prev_loc, prev_peek.copy() - # the match did get better: see if we can improve further - else: - if doActions: - try: - memo[act_key] = super().parseImpl(instring, loc, True) - except ParseException as e: - memo[peek_key] = memo[act_key] = (new_loc, e) - raise - prev_loc, prev_peek = memo[peek_key] = new_loc, new_peek - - def leave_whitespace(self, recursive: bool = True) -> ParserElement: - self.skipWhitespace = False - return self - - def ignore_whitespace(self, recursive: bool = True) -> ParserElement: - self.skipWhitespace = True - return self - - def streamline(self) -> ParserElement: - if not self.streamlined: - self.streamlined = True - if self.expr is not None: - self.expr.streamline() - return self - - def validate(self, validateTrace=None) -> None: - if validateTrace is None: - validateTrace = [] - - if self not in validateTrace: - tmp = validateTrace[:] + [self] - if self.expr is not None: - self.expr.validate(tmp) - self._checkRecursion([]) - - def _generateDefaultName(self): - # Avoid infinite recursion by setting a temporary _defaultName - self._defaultName = ": ..." - - # Use the string representation of main expression. - retString = "..." - try: - if self.expr is not None: - retString = str(self.expr)[:1000] - else: - retString = "None" - finally: - return self.__class__.__name__ + ": " + retString - - def copy(self) -> ParserElement: - if self.expr is not None: - return super().copy() - else: - ret = Forward() - ret <<= self - return ret - - def _setResultsName(self, name, list_all_matches=False): - if ( - __diag__.warn_name_set_on_empty_Forward - and Diagnostics.warn_name_set_on_empty_Forward - not in self.suppress_warnings_ - ): - if self.expr is None: - warnings.warn( - "{}: setting results name {!r} on {} expression " - "that has no contained expression".format( - "warn_name_set_on_empty_Forward", name, type(self).__name__ - ), - stacklevel=3, - ) - - return super()._setResultsName(name, list_all_matches) - - ignoreWhitespace = ignore_whitespace - leaveWhitespace = leave_whitespace - - -class TokenConverter(ParseElementEnhance): - """ - Abstract subclass of :class:`ParseExpression`, for converting parsed results. - """ - - def __init__(self, expr: Union[ParserElement, str], savelist=False): - super().__init__(expr) # , savelist) - self.saveAsList = False - - -class Combine(TokenConverter): - """Converter to concatenate all matching tokens to a single string. - By default, the matching patterns must also be contiguous in the - input string; this can be disabled by specifying - ``'adjacent=False'`` in the constructor. - - Example:: - - real = Word(nums) + '.' + Word(nums) - print(real.parse_string('3.1416')) # -> ['3', '.', '1416'] - # will also erroneously match the following - print(real.parse_string('3. 1416')) # -> ['3', '.', '1416'] - - real = Combine(Word(nums) + '.' + Word(nums)) - print(real.parse_string('3.1416')) # -> ['3.1416'] - # no match when there are internal spaces - print(real.parse_string('3. 1416')) # -> Exception: Expected W:(0123...) - """ - - def __init__( - self, - expr: ParserElement, - join_string: str = "", - adjacent: bool = True, - *, - joinString: typing.Optional[str] = None, - ): - super().__init__(expr) - joinString = joinString if joinString is not None else join_string - # suppress whitespace-stripping in contained parse expressions, but re-enable it on the Combine itself - if adjacent: - self.leave_whitespace() - self.adjacent = adjacent - self.skipWhitespace = True - self.joinString = joinString - self.callPreparse = True - - def ignore(self, other) -> ParserElement: - if self.adjacent: - ParserElement.ignore(self, other) - else: - super().ignore(other) - return self - - def postParse(self, instring, loc, tokenlist): - retToks = tokenlist.copy() - del retToks[:] - retToks += ParseResults( - ["".join(tokenlist._asStringList(self.joinString))], modal=self.modalResults - ) - - if self.resultsName and retToks.haskeys(): - return [retToks] - else: - return retToks - - -class Group(TokenConverter): - """Converter to return the matched tokens as a list - useful for - returning tokens of :class:`ZeroOrMore` and :class:`OneOrMore` expressions. - - The optional ``aslist`` argument when set to True will return the - parsed tokens as a Python list instead of a pyparsing ParseResults. - - Example:: - - ident = Word(alphas) - num = Word(nums) - term = ident | num - func = ident + Opt(delimited_list(term)) - print(func.parse_string("fn a, b, 100")) - # -> ['fn', 'a', 'b', '100'] - - func = ident + Group(Opt(delimited_list(term))) - print(func.parse_string("fn a, b, 100")) - # -> ['fn', ['a', 'b', '100']] - """ - - def __init__(self, expr: ParserElement, aslist: bool = False): - super().__init__(expr) - self.saveAsList = True - self._asPythonList = aslist - - def postParse(self, instring, loc, tokenlist): - if self._asPythonList: - return ParseResults.List( - tokenlist.asList() - if isinstance(tokenlist, ParseResults) - else list(tokenlist) - ) - else: - return [tokenlist] - - -class Dict(TokenConverter): - """Converter to return a repetitive expression as a list, but also - as a dictionary. Each element can also be referenced using the first - token in the expression as its key. Useful for tabular report - scraping when the first column can be used as a item key. - - The optional ``asdict`` argument when set to True will return the - parsed tokens as a Python dict instead of a pyparsing ParseResults. - - Example:: - - data_word = Word(alphas) - label = data_word + FollowedBy(':') - - text = "shape: SQUARE posn: upper left color: light blue texture: burlap" - attr_expr = (label + Suppress(':') + OneOrMore(data_word, stop_on=label).set_parse_action(' '.join)) - - # print attributes as plain groups - print(attr_expr[1, ...].parse_string(text).dump()) - - # instead of OneOrMore(expr), parse using Dict(Group(expr)[1, ...]) - Dict will auto-assign names - result = Dict(Group(attr_expr)[1, ...]).parse_string(text) - print(result.dump()) - - # access named fields as dict entries, or output as dict - print(result['shape']) - print(result.as_dict()) - - prints:: - - ['shape', 'SQUARE', 'posn', 'upper left', 'color', 'light blue', 'texture', 'burlap'] - [['shape', 'SQUARE'], ['posn', 'upper left'], ['color', 'light blue'], ['texture', 'burlap']] - - color: 'light blue' - - posn: 'upper left' - - shape: 'SQUARE' - - texture: 'burlap' - SQUARE - {'color': 'light blue', 'posn': 'upper left', 'texture': 'burlap', 'shape': 'SQUARE'} - - See more examples at :class:`ParseResults` of accessing fields by results name. - """ - - def __init__(self, expr: ParserElement, asdict: bool = False): - super().__init__(expr) - self.saveAsList = True - self._asPythonDict = asdict - - def postParse(self, instring, loc, tokenlist): - for i, tok in enumerate(tokenlist): - if len(tok) == 0: - continue - - ikey = tok[0] - if isinstance(ikey, int): - ikey = str(ikey).strip() - - if len(tok) == 1: - tokenlist[ikey] = _ParseResultsWithOffset("", i) - - elif len(tok) == 2 and not isinstance(tok[1], ParseResults): - tokenlist[ikey] = _ParseResultsWithOffset(tok[1], i) - - else: - try: - dictvalue = tok.copy() # ParseResults(i) - except Exception: - exc = TypeError( - "could not extract dict values from parsed results" - " - Dict expression must contain Grouped expressions" - ) - raise exc from None - - del dictvalue[0] - - if len(dictvalue) != 1 or ( - isinstance(dictvalue, ParseResults) and dictvalue.haskeys() - ): - tokenlist[ikey] = _ParseResultsWithOffset(dictvalue, i) - else: - tokenlist[ikey] = _ParseResultsWithOffset(dictvalue[0], i) - - if self._asPythonDict: - return [tokenlist.as_dict()] if self.resultsName else tokenlist.as_dict() - else: - return [tokenlist] if self.resultsName else tokenlist - - -class Suppress(TokenConverter): - """Converter for ignoring the results of a parsed expression. - - Example:: - - source = "a, b, c,d" - wd = Word(alphas) - wd_list1 = wd + (',' + wd)[...] - print(wd_list1.parse_string(source)) - - # often, delimiters that are useful during parsing are just in the - # way afterward - use Suppress to keep them out of the parsed output - wd_list2 = wd + (Suppress(',') + wd)[...] - print(wd_list2.parse_string(source)) - - # Skipped text (using '...') can be suppressed as well - source = "lead in START relevant text END trailing text" - start_marker = Keyword("START") - end_marker = Keyword("END") - find_body = Suppress(...) + start_marker + ... + end_marker - print(find_body.parse_string(source) - - prints:: - - ['a', ',', 'b', ',', 'c', ',', 'd'] - ['a', 'b', 'c', 'd'] - ['START', 'relevant text ', 'END'] - - (See also :class:`delimited_list`.) - """ - - def __init__(self, expr: Union[ParserElement, str], savelist: bool = False): - if expr is ...: - expr = _PendingSkip(NoMatch()) - super().__init__(expr) - - def __add__(self, other) -> "ParserElement": - if isinstance(self.expr, _PendingSkip): - return Suppress(SkipTo(other)) + other - else: - return super().__add__(other) - - def __sub__(self, other) -> "ParserElement": - if isinstance(self.expr, _PendingSkip): - return Suppress(SkipTo(other)) - other - else: - return super().__sub__(other) - - def postParse(self, instring, loc, tokenlist): - return [] - - def suppress(self) -> ParserElement: - return self - - -def trace_parse_action(f: ParseAction) -> ParseAction: - """Decorator for debugging parse actions. - - When the parse action is called, this decorator will print - ``">> entering method-name(line:, , )"``. - When the parse action completes, the decorator will print - ``"<<"`` followed by the returned value, or any exception that the parse action raised. - - Example:: - - wd = Word(alphas) - - @trace_parse_action - def remove_duplicate_chars(tokens): - return ''.join(sorted(set(''.join(tokens)))) - - wds = wd[1, ...].set_parse_action(remove_duplicate_chars) - print(wds.parse_string("slkdjs sld sldd sdlf sdljf")) - - prints:: - - >>entering remove_duplicate_chars(line: 'slkdjs sld sldd sdlf sdljf', 0, (['slkdjs', 'sld', 'sldd', 'sdlf', 'sdljf'], {})) - < 3: - thisFunc = paArgs[0].__class__.__name__ + "." + thisFunc - sys.stderr.write( - ">>entering {}(line: {!r}, {}, {!r})\n".format(thisFunc, line(l, s), l, t) - ) - try: - ret = f(*paArgs) - except Exception as exc: - sys.stderr.write("< str: - r"""Helper to easily define string ranges for use in :class:`Word` - construction. Borrows syntax from regexp ``'[]'`` string range - definitions:: - - srange("[0-9]") -> "0123456789" - srange("[a-z]") -> "abcdefghijklmnopqrstuvwxyz" - srange("[a-z$_]") -> "abcdefghijklmnopqrstuvwxyz$_" - - The input string must be enclosed in []'s, and the returned string - is the expanded character set joined into a single string. The - values enclosed in the []'s may be: - - - a single character - - an escaped character with a leading backslash (such as ``\-`` - or ``\]``) - - an escaped hex character with a leading ``'\x'`` - (``\x21``, which is a ``'!'`` character) (``\0x##`` - is also supported for backwards compatibility) - - an escaped octal character with a leading ``'\0'`` - (``\041``, which is a ``'!'`` character) - - a range of any of the above, separated by a dash (``'a-z'``, - etc.) - - any combination of the above (``'aeiouy'``, - ``'a-zA-Z0-9_$'``, etc.) - """ - _expanded = ( - lambda p: p - if not isinstance(p, ParseResults) - else "".join(chr(c) for c in range(ord(p[0]), ord(p[1]) + 1)) - ) - try: - return "".join(_expanded(part) for part in _reBracketExpr.parse_string(s).body) - except Exception: - return "" - - -def token_map(func, *args) -> ParseAction: - """Helper to define a parse action by mapping a function to all - elements of a :class:`ParseResults` list. If any additional args are passed, - they are forwarded to the given function as additional arguments - after the token, as in - ``hex_integer = Word(hexnums).set_parse_action(token_map(int, 16))``, - which will convert the parsed data to an integer using base 16. - - Example (compare the last to example in :class:`ParserElement.transform_string`:: - - hex_ints = Word(hexnums)[1, ...].set_parse_action(token_map(int, 16)) - hex_ints.run_tests(''' - 00 11 22 aa FF 0a 0d 1a - ''') - - upperword = Word(alphas).set_parse_action(token_map(str.upper)) - upperword[1, ...].run_tests(''' - my kingdom for a horse - ''') - - wd = Word(alphas).set_parse_action(token_map(str.title)) - wd[1, ...].set_parse_action(' '.join).run_tests(''' - now is the winter of our discontent made glorious summer by this sun of york - ''') - - prints:: - - 00 11 22 aa FF 0a 0d 1a - [0, 17, 34, 170, 255, 10, 13, 26] - - my kingdom for a horse - ['MY', 'KINGDOM', 'FOR', 'A', 'HORSE'] - - now is the winter of our discontent made glorious summer by this sun of york - ['Now Is The Winter Of Our Discontent Made Glorious Summer By This Sun Of York'] - """ - - def pa(s, l, t): - return [func(tokn, *args) for tokn in t] - - func_name = getattr(func, "__name__", getattr(func, "__class__").__name__) - pa.__name__ = func_name - - return pa - - -def autoname_elements() -> None: - """ - Utility to simplify mass-naming of parser elements, for - generating railroad diagram with named subdiagrams. - """ - for name, var in sys._getframe().f_back.f_locals.items(): - if isinstance(var, ParserElement) and not var.customName: - var.set_name(name) - - -dbl_quoted_string = Combine( - Regex(r'"(?:[^"\n\r\\]|(?:"")|(?:\\(?:[^x]|x[0-9a-fA-F]+)))*') + '"' -).set_name("string enclosed in double quotes") - -sgl_quoted_string = Combine( - Regex(r"'(?:[^'\n\r\\]|(?:'')|(?:\\(?:[^x]|x[0-9a-fA-F]+)))*") + "'" -).set_name("string enclosed in single quotes") - -quoted_string = Combine( - Regex(r'"(?:[^"\n\r\\]|(?:"")|(?:\\(?:[^x]|x[0-9a-fA-F]+)))*') + '"' - | Regex(r"'(?:[^'\n\r\\]|(?:'')|(?:\\(?:[^x]|x[0-9a-fA-F]+)))*") + "'" -).set_name("quotedString using single or double quotes") - -unicode_string = Combine("u" + quoted_string.copy()).set_name("unicode string literal") - - -alphas8bit = srange(r"[\0xc0-\0xd6\0xd8-\0xf6\0xf8-\0xff]") -punc8bit = srange(r"[\0xa1-\0xbf\0xd7\0xf7]") - -# build list of built-in expressions, for future reference if a global default value -# gets updated -_builtin_exprs: List[ParserElement] = [ - v for v in vars().values() if isinstance(v, ParserElement) -] - -# backward compatibility names -tokenMap = token_map -conditionAsParseAction = condition_as_parse_action -nullDebugAction = null_debug_action -sglQuotedString = sgl_quoted_string -dblQuotedString = dbl_quoted_string -quotedString = quoted_string -unicodeString = unicode_string -lineStart = line_start -lineEnd = line_end -stringStart = string_start -stringEnd = string_end -traceParseAction = trace_parse_action diff --git a/gestao_raul/Lib/site-packages/pip/_vendor/pyparsing/diagram/__init__.py b/gestao_raul/Lib/site-packages/pip/_vendor/pyparsing/diagram/__init__.py deleted file mode 100644 index 1506d66..0000000 --- a/gestao_raul/Lib/site-packages/pip/_vendor/pyparsing/diagram/__init__.py +++ /dev/null @@ -1,642 +0,0 @@ -import railroad -from pip._vendor import pyparsing -import typing -from typing import ( - List, - NamedTuple, - Generic, - TypeVar, - Dict, - Callable, - Set, - Iterable, -) -from jinja2 import Template -from io import StringIO -import inspect - - -jinja2_template_source = """\ - - - - {% if not head %} - - {% else %} - {{ head | safe }} - {% endif %} - - -{{ body | safe }} -{% for diagram in diagrams %} -
-

{{ diagram.title }}

-
{{ diagram.text }}
-
- {{ diagram.svg }} -
-
-{% endfor %} - - -""" - -template = Template(jinja2_template_source) - -# Note: ideally this would be a dataclass, but we're supporting Python 3.5+ so we can't do this yet -NamedDiagram = NamedTuple( - "NamedDiagram", - [("name", str), ("diagram", typing.Optional[railroad.DiagramItem]), ("index", int)], -) -""" -A simple structure for associating a name with a railroad diagram -""" - -T = TypeVar("T") - - -class EachItem(railroad.Group): - """ - Custom railroad item to compose a: - - Group containing a - - OneOrMore containing a - - Choice of the elements in the Each - with the group label indicating that all must be matched - """ - - all_label = "[ALL]" - - def __init__(self, *items): - choice_item = railroad.Choice(len(items) - 1, *items) - one_or_more_item = railroad.OneOrMore(item=choice_item) - super().__init__(one_or_more_item, label=self.all_label) - - -class AnnotatedItem(railroad.Group): - """ - Simple subclass of Group that creates an annotation label - """ - - def __init__(self, label: str, item): - super().__init__(item=item, label="[{}]".format(label) if label else label) - - -class EditablePartial(Generic[T]): - """ - Acts like a functools.partial, but can be edited. In other words, it represents a type that hasn't yet been - constructed. - """ - - # We need this here because the railroad constructors actually transform the data, so can't be called until the - # entire tree is assembled - - def __init__(self, func: Callable[..., T], args: list, kwargs: dict): - self.func = func - self.args = args - self.kwargs = kwargs - - @classmethod - def from_call(cls, func: Callable[..., T], *args, **kwargs) -> "EditablePartial[T]": - """ - If you call this function in the same way that you would call the constructor, it will store the arguments - as you expect. For example EditablePartial.from_call(Fraction, 1, 3)() == Fraction(1, 3) - """ - return EditablePartial(func=func, args=list(args), kwargs=kwargs) - - @property - def name(self): - return self.kwargs["name"] - - def __call__(self) -> T: - """ - Evaluate the partial and return the result - """ - args = self.args.copy() - kwargs = self.kwargs.copy() - - # This is a helpful hack to allow you to specify varargs parameters (e.g. *args) as keyword args (e.g. - # args=['list', 'of', 'things']) - arg_spec = inspect.getfullargspec(self.func) - if arg_spec.varargs in self.kwargs: - args += kwargs.pop(arg_spec.varargs) - - return self.func(*args, **kwargs) - - -def railroad_to_html(diagrams: List[NamedDiagram], **kwargs) -> str: - """ - Given a list of NamedDiagram, produce a single HTML string that visualises those diagrams - :params kwargs: kwargs to be passed in to the template - """ - data = [] - for diagram in diagrams: - if diagram.diagram is None: - continue - io = StringIO() - diagram.diagram.writeSvg(io.write) - title = diagram.name - if diagram.index == 0: - title += " (root)" - data.append({"title": title, "text": "", "svg": io.getvalue()}) - - return template.render(diagrams=data, **kwargs) - - -def resolve_partial(partial: "EditablePartial[T]") -> T: - """ - Recursively resolves a collection of Partials into whatever type they are - """ - if isinstance(partial, EditablePartial): - partial.args = resolve_partial(partial.args) - partial.kwargs = resolve_partial(partial.kwargs) - return partial() - elif isinstance(partial, list): - return [resolve_partial(x) for x in partial] - elif isinstance(partial, dict): - return {key: resolve_partial(x) for key, x in partial.items()} - else: - return partial - - -def to_railroad( - element: pyparsing.ParserElement, - diagram_kwargs: typing.Optional[dict] = None, - vertical: int = 3, - show_results_names: bool = False, - show_groups: bool = False, -) -> List[NamedDiagram]: - """ - Convert a pyparsing element tree into a list of diagrams. This is the recommended entrypoint to diagram - creation if you want to access the Railroad tree before it is converted to HTML - :param element: base element of the parser being diagrammed - :param diagram_kwargs: kwargs to pass to the Diagram() constructor - :param vertical: (optional) - int - limit at which number of alternatives should be - shown vertically instead of horizontally - :param show_results_names - bool to indicate whether results name annotations should be - included in the diagram - :param show_groups - bool to indicate whether groups should be highlighted with an unlabeled - surrounding box - """ - # Convert the whole tree underneath the root - lookup = ConverterState(diagram_kwargs=diagram_kwargs or {}) - _to_diagram_element( - element, - lookup=lookup, - parent=None, - vertical=vertical, - show_results_names=show_results_names, - show_groups=show_groups, - ) - - root_id = id(element) - # Convert the root if it hasn't been already - if root_id in lookup: - if not element.customName: - lookup[root_id].name = "" - lookup[root_id].mark_for_extraction(root_id, lookup, force=True) - - # Now that we're finished, we can convert from intermediate structures into Railroad elements - diags = list(lookup.diagrams.values()) - if len(diags) > 1: - # collapse out duplicate diags with the same name - seen = set() - deduped_diags = [] - for d in diags: - # don't extract SkipTo elements, they are uninformative as subdiagrams - if d.name == "...": - continue - if d.name is not None and d.name not in seen: - seen.add(d.name) - deduped_diags.append(d) - resolved = [resolve_partial(partial) for partial in deduped_diags] - else: - # special case - if just one diagram, always display it, even if - # it has no name - resolved = [resolve_partial(partial) for partial in diags] - return sorted(resolved, key=lambda diag: diag.index) - - -def _should_vertical( - specification: int, exprs: Iterable[pyparsing.ParserElement] -) -> bool: - """ - Returns true if we should return a vertical list of elements - """ - if specification is None: - return False - else: - return len(_visible_exprs(exprs)) >= specification - - -class ElementState: - """ - State recorded for an individual pyparsing Element - """ - - # Note: this should be a dataclass, but we have to support Python 3.5 - def __init__( - self, - element: pyparsing.ParserElement, - converted: EditablePartial, - parent: EditablePartial, - number: int, - name: str = None, - parent_index: typing.Optional[int] = None, - ): - #: The pyparsing element that this represents - self.element: pyparsing.ParserElement = element - #: The name of the element - self.name: typing.Optional[str] = name - #: The output Railroad element in an unconverted state - self.converted: EditablePartial = converted - #: The parent Railroad element, which we store so that we can extract this if it's duplicated - self.parent: EditablePartial = parent - #: The order in which we found this element, used for sorting diagrams if this is extracted into a diagram - self.number: int = number - #: The index of this inside its parent - self.parent_index: typing.Optional[int] = parent_index - #: If true, we should extract this out into a subdiagram - self.extract: bool = False - #: If true, all of this element's children have been filled out - self.complete: bool = False - - def mark_for_extraction( - self, el_id: int, state: "ConverterState", name: str = None, force: bool = False - ): - """ - Called when this instance has been seen twice, and thus should eventually be extracted into a sub-diagram - :param el_id: id of the element - :param state: element/diagram state tracker - :param name: name to use for this element's text - :param force: If true, force extraction now, regardless of the state of this. Only useful for extracting the - root element when we know we're finished - """ - self.extract = True - - # Set the name - if not self.name: - if name: - # Allow forcing a custom name - self.name = name - elif self.element.customName: - self.name = self.element.customName - else: - self.name = "" - - # Just because this is marked for extraction doesn't mean we can do it yet. We may have to wait for children - # to be added - # Also, if this is just a string literal etc, don't bother extracting it - if force or (self.complete and _worth_extracting(self.element)): - state.extract_into_diagram(el_id) - - -class ConverterState: - """ - Stores some state that persists between recursions into the element tree - """ - - def __init__(self, diagram_kwargs: typing.Optional[dict] = None): - #: A dictionary mapping ParserElements to state relating to them - self._element_diagram_states: Dict[int, ElementState] = {} - #: A dictionary mapping ParserElement IDs to subdiagrams generated from them - self.diagrams: Dict[int, EditablePartial[NamedDiagram]] = {} - #: The index of the next unnamed element - self.unnamed_index: int = 1 - #: The index of the next element. This is used for sorting - self.index: int = 0 - #: Shared kwargs that are used to customize the construction of diagrams - self.diagram_kwargs: dict = diagram_kwargs or {} - self.extracted_diagram_names: Set[str] = set() - - def __setitem__(self, key: int, value: ElementState): - self._element_diagram_states[key] = value - - def __getitem__(self, key: int) -> ElementState: - return self._element_diagram_states[key] - - def __delitem__(self, key: int): - del self._element_diagram_states[key] - - def __contains__(self, key: int): - return key in self._element_diagram_states - - def generate_unnamed(self) -> int: - """ - Generate a number used in the name of an otherwise unnamed diagram - """ - self.unnamed_index += 1 - return self.unnamed_index - - def generate_index(self) -> int: - """ - Generate a number used to index a diagram - """ - self.index += 1 - return self.index - - def extract_into_diagram(self, el_id: int): - """ - Used when we encounter the same token twice in the same tree. When this - happens, we replace all instances of that token with a terminal, and - create a new subdiagram for the token - """ - position = self[el_id] - - # Replace the original definition of this element with a regular block - if position.parent: - ret = EditablePartial.from_call(railroad.NonTerminal, text=position.name) - if "item" in position.parent.kwargs: - position.parent.kwargs["item"] = ret - elif "items" in position.parent.kwargs: - position.parent.kwargs["items"][position.parent_index] = ret - - # If the element we're extracting is a group, skip to its content but keep the title - if position.converted.func == railroad.Group: - content = position.converted.kwargs["item"] - else: - content = position.converted - - self.diagrams[el_id] = EditablePartial.from_call( - NamedDiagram, - name=position.name, - diagram=EditablePartial.from_call( - railroad.Diagram, content, **self.diagram_kwargs - ), - index=position.number, - ) - - del self[el_id] - - -def _worth_extracting(element: pyparsing.ParserElement) -> bool: - """ - Returns true if this element is worth having its own sub-diagram. Simply, if any of its children - themselves have children, then its complex enough to extract - """ - children = element.recurse() - return any(child.recurse() for child in children) - - -def _apply_diagram_item_enhancements(fn): - """ - decorator to ensure enhancements to a diagram item (such as results name annotations) - get applied on return from _to_diagram_element (we do this since there are several - returns in _to_diagram_element) - """ - - def _inner( - element: pyparsing.ParserElement, - parent: typing.Optional[EditablePartial], - lookup: ConverterState = None, - vertical: int = None, - index: int = 0, - name_hint: str = None, - show_results_names: bool = False, - show_groups: bool = False, - ) -> typing.Optional[EditablePartial]: - - ret = fn( - element, - parent, - lookup, - vertical, - index, - name_hint, - show_results_names, - show_groups, - ) - - # apply annotation for results name, if present - if show_results_names and ret is not None: - element_results_name = element.resultsName - if element_results_name: - # add "*" to indicate if this is a "list all results" name - element_results_name += "" if element.modalResults else "*" - ret = EditablePartial.from_call( - railroad.Group, item=ret, label=element_results_name - ) - - return ret - - return _inner - - -def _visible_exprs(exprs: Iterable[pyparsing.ParserElement]): - non_diagramming_exprs = ( - pyparsing.ParseElementEnhance, - pyparsing.PositionToken, - pyparsing.And._ErrorStop, - ) - return [ - e - for e in exprs - if not (e.customName or e.resultsName or isinstance(e, non_diagramming_exprs)) - ] - - -@_apply_diagram_item_enhancements -def _to_diagram_element( - element: pyparsing.ParserElement, - parent: typing.Optional[EditablePartial], - lookup: ConverterState = None, - vertical: int = None, - index: int = 0, - name_hint: str = None, - show_results_names: bool = False, - show_groups: bool = False, -) -> typing.Optional[EditablePartial]: - """ - Recursively converts a PyParsing Element to a railroad Element - :param lookup: The shared converter state that keeps track of useful things - :param index: The index of this element within the parent - :param parent: The parent of this element in the output tree - :param vertical: Controls at what point we make a list of elements vertical. If this is an integer (the default), - it sets the threshold of the number of items before we go vertical. If True, always go vertical, if False, never - do so - :param name_hint: If provided, this will override the generated name - :param show_results_names: bool flag indicating whether to add annotations for results names - :returns: The converted version of the input element, but as a Partial that hasn't yet been constructed - :param show_groups: bool flag indicating whether to show groups using bounding box - """ - exprs = element.recurse() - name = name_hint or element.customName or element.__class__.__name__ - - # Python's id() is used to provide a unique identifier for elements - el_id = id(element) - - element_results_name = element.resultsName - - # Here we basically bypass processing certain wrapper elements if they contribute nothing to the diagram - if not element.customName: - if isinstance( - element, - ( - # pyparsing.TokenConverter, - # pyparsing.Forward, - pyparsing.Located, - ), - ): - # However, if this element has a useful custom name, and its child does not, we can pass it on to the child - if exprs: - if not exprs[0].customName: - propagated_name = name - else: - propagated_name = None - - return _to_diagram_element( - element.expr, - parent=parent, - lookup=lookup, - vertical=vertical, - index=index, - name_hint=propagated_name, - show_results_names=show_results_names, - show_groups=show_groups, - ) - - # If the element isn't worth extracting, we always treat it as the first time we say it - if _worth_extracting(element): - if el_id in lookup: - # If we've seen this element exactly once before, we are only just now finding out that it's a duplicate, - # so we have to extract it into a new diagram. - looked_up = lookup[el_id] - looked_up.mark_for_extraction(el_id, lookup, name=name_hint) - ret = EditablePartial.from_call(railroad.NonTerminal, text=looked_up.name) - return ret - - elif el_id in lookup.diagrams: - # If we have seen the element at least twice before, and have already extracted it into a subdiagram, we - # just put in a marker element that refers to the sub-diagram - ret = EditablePartial.from_call( - railroad.NonTerminal, text=lookup.diagrams[el_id].kwargs["name"] - ) - return ret - - # Recursively convert child elements - # Here we find the most relevant Railroad element for matching pyparsing Element - # We use ``items=[]`` here to hold the place for where the child elements will go once created - if isinstance(element, pyparsing.And): - # detect And's created with ``expr*N`` notation - for these use a OneOrMore with a repeat - # (all will have the same name, and resultsName) - if not exprs: - return None - if len(set((e.name, e.resultsName) for e in exprs)) == 1: - ret = EditablePartial.from_call( - railroad.OneOrMore, item="", repeat=str(len(exprs)) - ) - elif _should_vertical(vertical, exprs): - ret = EditablePartial.from_call(railroad.Stack, items=[]) - else: - ret = EditablePartial.from_call(railroad.Sequence, items=[]) - elif isinstance(element, (pyparsing.Or, pyparsing.MatchFirst)): - if not exprs: - return None - if _should_vertical(vertical, exprs): - ret = EditablePartial.from_call(railroad.Choice, 0, items=[]) - else: - ret = EditablePartial.from_call(railroad.HorizontalChoice, items=[]) - elif isinstance(element, pyparsing.Each): - if not exprs: - return None - ret = EditablePartial.from_call(EachItem, items=[]) - elif isinstance(element, pyparsing.NotAny): - ret = EditablePartial.from_call(AnnotatedItem, label="NOT", item="") - elif isinstance(element, pyparsing.FollowedBy): - ret = EditablePartial.from_call(AnnotatedItem, label="LOOKAHEAD", item="") - elif isinstance(element, pyparsing.PrecededBy): - ret = EditablePartial.from_call(AnnotatedItem, label="LOOKBEHIND", item="") - elif isinstance(element, pyparsing.Group): - if show_groups: - ret = EditablePartial.from_call(AnnotatedItem, label="", item="") - else: - ret = EditablePartial.from_call(railroad.Group, label="", item="") - elif isinstance(element, pyparsing.TokenConverter): - ret = EditablePartial.from_call( - AnnotatedItem, label=type(element).__name__.lower(), item="" - ) - elif isinstance(element, pyparsing.Opt): - ret = EditablePartial.from_call(railroad.Optional, item="") - elif isinstance(element, pyparsing.OneOrMore): - ret = EditablePartial.from_call(railroad.OneOrMore, item="") - elif isinstance(element, pyparsing.ZeroOrMore): - ret = EditablePartial.from_call(railroad.ZeroOrMore, item="") - elif isinstance(element, pyparsing.Group): - ret = EditablePartial.from_call( - railroad.Group, item=None, label=element_results_name - ) - elif isinstance(element, pyparsing.Empty) and not element.customName: - # Skip unnamed "Empty" elements - ret = None - elif len(exprs) > 1: - ret = EditablePartial.from_call(railroad.Sequence, items=[]) - elif len(exprs) > 0 and not element_results_name: - ret = EditablePartial.from_call(railroad.Group, item="", label=name) - else: - terminal = EditablePartial.from_call(railroad.Terminal, element.defaultName) - ret = terminal - - if ret is None: - return - - # Indicate this element's position in the tree so we can extract it if necessary - lookup[el_id] = ElementState( - element=element, - converted=ret, - parent=parent, - parent_index=index, - number=lookup.generate_index(), - ) - if element.customName: - lookup[el_id].mark_for_extraction(el_id, lookup, element.customName) - - i = 0 - for expr in exprs: - # Add a placeholder index in case we have to extract the child before we even add it to the parent - if "items" in ret.kwargs: - ret.kwargs["items"].insert(i, None) - - item = _to_diagram_element( - expr, - parent=ret, - lookup=lookup, - vertical=vertical, - index=i, - show_results_names=show_results_names, - show_groups=show_groups, - ) - - # Some elements don't need to be shown in the diagram - if item is not None: - if "item" in ret.kwargs: - ret.kwargs["item"] = item - elif "items" in ret.kwargs: - # If we've already extracted the child, don't touch this index, since it's occupied by a nonterminal - ret.kwargs["items"][i] = item - i += 1 - elif "items" in ret.kwargs: - # If we're supposed to skip this element, remove it from the parent - del ret.kwargs["items"][i] - - # If all this items children are none, skip this item - if ret and ( - ("items" in ret.kwargs and len(ret.kwargs["items"]) == 0) - or ("item" in ret.kwargs and ret.kwargs["item"] is None) - ): - ret = EditablePartial.from_call(railroad.Terminal, name) - - # Mark this element as "complete", ie it has all of its children - if el_id in lookup: - lookup[el_id].complete = True - - if el_id in lookup and lookup[el_id].extract and lookup[el_id].complete: - lookup.extract_into_diagram(el_id) - if ret is not None: - ret = EditablePartial.from_call( - railroad.NonTerminal, text=lookup.diagrams[el_id].kwargs["name"] - ) - - return ret diff --git a/gestao_raul/Lib/site-packages/pip/_vendor/pyparsing/diagram/__pycache__/__init__.cpython-310.pyc b/gestao_raul/Lib/site-packages/pip/_vendor/pyparsing/diagram/__pycache__/__init__.cpython-310.pyc deleted file mode 100644 index 12d456bc0f1f2c09910ace52f641f8ccc6c41efb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 16581 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 D&X_u& diff --git a/gestao_raul/Lib/site-packages/pip/_vendor/pyparsing/exceptions.py b/gestao_raul/Lib/site-packages/pip/_vendor/pyparsing/exceptions.py deleted file mode 100644 index a38447b..0000000 --- a/gestao_raul/Lib/site-packages/pip/_vendor/pyparsing/exceptions.py +++ /dev/null @@ -1,267 +0,0 @@ -# exceptions.py - -import re -import sys -import typing - -from .util import col, line, lineno, _collapse_string_to_ranges -from .unicode import pyparsing_unicode as ppu - - -class ExceptionWordUnicode(ppu.Latin1, ppu.LatinA, ppu.LatinB, ppu.Greek, ppu.Cyrillic): - pass - - -_extract_alphanums = _collapse_string_to_ranges(ExceptionWordUnicode.alphanums) -_exception_word_extractor = re.compile("([" + _extract_alphanums + "]{1,16})|.") - - -class ParseBaseException(Exception): - """base exception class for all parsing runtime exceptions""" - - # Performance tuning: we construct a *lot* of these, so keep this - # constructor as small and fast as possible - def __init__( - self, - pstr: str, - loc: int = 0, - msg: typing.Optional[str] = None, - elem=None, - ): - self.loc = loc - if msg is None: - self.msg = pstr - self.pstr = "" - else: - self.msg = msg - self.pstr = pstr - self.parser_element = self.parserElement = elem - self.args = (pstr, loc, msg) - - @staticmethod - def explain_exception(exc, depth=16): - """ - Method to take an exception and translate the Python internal traceback into a list - of the pyparsing expressions that caused the exception to be raised. - - Parameters: - - - exc - exception raised during parsing (need not be a ParseException, in support - of Python exceptions that might be raised in a parse action) - - depth (default=16) - number of levels back in the stack trace to list expression - and function names; if None, the full stack trace names will be listed; if 0, only - the failing input line, marker, and exception string will be shown - - Returns a multi-line string listing the ParserElements and/or function names in the - exception's stack trace. - """ - import inspect - from .core import ParserElement - - if depth is None: - depth = sys.getrecursionlimit() - ret = [] - if isinstance(exc, ParseBaseException): - ret.append(exc.line) - ret.append(" " * (exc.column - 1) + "^") - ret.append("{}: {}".format(type(exc).__name__, exc)) - - if depth > 0: - callers = inspect.getinnerframes(exc.__traceback__, context=depth) - seen = set() - for i, ff in enumerate(callers[-depth:]): - frm = ff[0] - - f_self = frm.f_locals.get("self", None) - if isinstance(f_self, ParserElement): - if frm.f_code.co_name not in ("parseImpl", "_parseNoCache"): - continue - if id(f_self) in seen: - continue - seen.add(id(f_self)) - - self_type = type(f_self) - ret.append( - "{}.{} - {}".format( - self_type.__module__, self_type.__name__, f_self - ) - ) - - elif f_self is not None: - self_type = type(f_self) - ret.append("{}.{}".format(self_type.__module__, self_type.__name__)) - - else: - code = frm.f_code - if code.co_name in ("wrapper", ""): - continue - - ret.append("{}".format(code.co_name)) - - depth -= 1 - if not depth: - break - - return "\n".join(ret) - - @classmethod - def _from_exception(cls, pe): - """ - internal factory method to simplify creating one type of ParseException - from another - avoids having __init__ signature conflicts among subclasses - """ - return cls(pe.pstr, pe.loc, pe.msg, pe.parserElement) - - @property - def line(self) -> str: - """ - Return the line of text where the exception occurred. - """ - return line(self.loc, self.pstr) - - @property - def lineno(self) -> int: - """ - Return the 1-based line number of text where the exception occurred. - """ - return lineno(self.loc, self.pstr) - - @property - def col(self) -> int: - """ - Return the 1-based column on the line of text where the exception occurred. - """ - return col(self.loc, self.pstr) - - @property - def column(self) -> int: - """ - Return the 1-based column on the line of text where the exception occurred. - """ - return col(self.loc, self.pstr) - - def __str__(self) -> str: - if self.pstr: - if self.loc >= len(self.pstr): - foundstr = ", found end of text" - else: - # pull out next word at error location - found_match = _exception_word_extractor.match(self.pstr, self.loc) - if found_match is not None: - found = found_match.group(0) - else: - found = self.pstr[self.loc : self.loc + 1] - foundstr = (", found %r" % found).replace(r"\\", "\\") - else: - foundstr = "" - return "{}{} (at char {}), (line:{}, col:{})".format( - self.msg, foundstr, self.loc, self.lineno, self.column - ) - - def __repr__(self): - return str(self) - - def mark_input_line(self, marker_string: str = None, *, markerString=">!<") -> str: - """ - Extracts the exception line from the input string, and marks - the location of the exception with a special symbol. - """ - markerString = marker_string if marker_string is not None else markerString - line_str = self.line - line_column = self.column - 1 - if markerString: - line_str = "".join( - (line_str[:line_column], markerString, line_str[line_column:]) - ) - return line_str.strip() - - def explain(self, depth=16) -> str: - """ - Method to translate the Python internal traceback into a list - of the pyparsing expressions that caused the exception to be raised. - - Parameters: - - - depth (default=16) - number of levels back in the stack trace to list expression - and function names; if None, the full stack trace names will be listed; if 0, only - the failing input line, marker, and exception string will be shown - - Returns a multi-line string listing the ParserElements and/or function names in the - exception's stack trace. - - Example:: - - expr = pp.Word(pp.nums) * 3 - try: - expr.parse_string("123 456 A789") - except pp.ParseException as pe: - print(pe.explain(depth=0)) - - prints:: - - 123 456 A789 - ^ - ParseException: Expected W:(0-9), found 'A' (at char 8), (line:1, col:9) - - Note: the diagnostic output will include string representations of the expressions - that failed to parse. These representations will be more helpful if you use `set_name` to - give identifiable names to your expressions. Otherwise they will use the default string - forms, which may be cryptic to read. - - Note: pyparsing's default truncation of exception tracebacks may also truncate the - stack of expressions that are displayed in the ``explain`` output. To get the full listing - of parser expressions, you may have to set ``ParserElement.verbose_stacktrace = True`` - """ - return self.explain_exception(self, depth) - - markInputline = mark_input_line - - -class ParseException(ParseBaseException): - """ - Exception thrown when a parse expression doesn't match the input string - - Example:: - - try: - Word(nums).set_name("integer").parse_string("ABC") - except ParseException as pe: - print(pe) - print("column: {}".format(pe.column)) - - prints:: - - Expected integer (at char 0), (line:1, col:1) - column: 1 - - """ - - -class ParseFatalException(ParseBaseException): - """ - User-throwable exception thrown when inconsistent parse content - is found; stops all parsing immediately - """ - - -class ParseSyntaxException(ParseFatalException): - """ - Just like :class:`ParseFatalException`, but thrown internally - when an :class:`ErrorStop` ('-' operator) indicates - that parsing is to stop immediately because an unbacktrackable - syntax error has been found. - """ - - -class RecursiveGrammarException(Exception): - """ - Exception thrown by :class:`ParserElement.validate` if the - grammar could be left-recursive; parser may need to enable - left recursion using :class:`ParserElement.enable_left_recursion` - """ - - def __init__(self, parseElementList): - self.parseElementTrace = parseElementList - - def __str__(self) -> str: - return "RecursiveGrammarException: {}".format(self.parseElementTrace) diff --git a/gestao_raul/Lib/site-packages/pip/_vendor/pyparsing/helpers.py b/gestao_raul/Lib/site-packages/pip/_vendor/pyparsing/helpers.py deleted file mode 100644 index 9588b3b..0000000 --- a/gestao_raul/Lib/site-packages/pip/_vendor/pyparsing/helpers.py +++ /dev/null @@ -1,1088 +0,0 @@ -# helpers.py -import html.entities -import re -import typing - -from . import __diag__ -from .core import * -from .util import _bslash, _flatten, _escape_regex_range_chars - - -# -# global helpers -# -def delimited_list( - expr: Union[str, ParserElement], - delim: Union[str, ParserElement] = ",", - combine: bool = False, - min: typing.Optional[int] = None, - max: typing.Optional[int] = None, - *, - allow_trailing_delim: bool = False, -) -> ParserElement: - """Helper to define a delimited list of expressions - the delimiter - defaults to ','. By default, the list elements and delimiters can - have intervening whitespace, and comments, but this can be - overridden by passing ``combine=True`` in the constructor. If - ``combine`` is set to ``True``, the matching tokens are - returned as a single token string, with the delimiters included; - otherwise, the matching tokens are returned as a list of tokens, - with the delimiters suppressed. - - If ``allow_trailing_delim`` is set to True, then the list may end with - a delimiter. - - Example:: - - delimited_list(Word(alphas)).parse_string("aa,bb,cc") # -> ['aa', 'bb', 'cc'] - delimited_list(Word(hexnums), delim=':', combine=True).parse_string("AA:BB:CC:DD:EE") # -> ['AA:BB:CC:DD:EE'] - """ - if isinstance(expr, str_type): - expr = ParserElement._literalStringClass(expr) - - dlName = "{expr} [{delim} {expr}]...{end}".format( - expr=str(expr.copy().streamline()), - delim=str(delim), - end=" [{}]".format(str(delim)) if allow_trailing_delim else "", - ) - - if not combine: - delim = Suppress(delim) - - if min is not None: - if min < 1: - raise ValueError("min must be greater than 0") - min -= 1 - if max is not None: - if min is not None and max <= min: - raise ValueError("max must be greater than, or equal to min") - max -= 1 - delimited_list_expr = expr + (delim + expr)[min, max] - - if allow_trailing_delim: - delimited_list_expr += Opt(delim) - - if combine: - return Combine(delimited_list_expr).set_name(dlName) - else: - return delimited_list_expr.set_name(dlName) - - -def counted_array( - expr: ParserElement, - int_expr: typing.Optional[ParserElement] = None, - *, - intExpr: typing.Optional[ParserElement] = None, -) -> ParserElement: - """Helper to define a counted list of expressions. - - This helper defines a pattern of the form:: - - integer expr expr expr... - - where the leading integer tells how many expr expressions follow. - The matched tokens returns the array of expr tokens as a list - the - leading count token is suppressed. - - If ``int_expr`` is specified, it should be a pyparsing expression - that produces an integer value. - - Example:: - - counted_array(Word(alphas)).parse_string('2 ab cd ef') # -> ['ab', 'cd'] - - # in this parser, the leading integer value is given in binary, - # '10' indicating that 2 values are in the array - binary_constant = Word('01').set_parse_action(lambda t: int(t[0], 2)) - counted_array(Word(alphas), int_expr=binary_constant).parse_string('10 ab cd ef') # -> ['ab', 'cd'] - - # if other fields must be parsed after the count but before the - # list items, give the fields results names and they will - # be preserved in the returned ParseResults: - count_with_metadata = integer + Word(alphas)("type") - typed_array = counted_array(Word(alphanums), int_expr=count_with_metadata)("items") - result = typed_array.parse_string("3 bool True True False") - print(result.dump()) - - # prints - # ['True', 'True', 'False'] - # - items: ['True', 'True', 'False'] - # - type: 'bool' - """ - intExpr = intExpr or int_expr - array_expr = Forward() - - def count_field_parse_action(s, l, t): - nonlocal array_expr - n = t[0] - array_expr <<= (expr * n) if n else Empty() - # clear list contents, but keep any named results - del t[:] - - if intExpr is None: - intExpr = Word(nums).set_parse_action(lambda t: int(t[0])) - else: - intExpr = intExpr.copy() - intExpr.set_name("arrayLen") - intExpr.add_parse_action(count_field_parse_action, call_during_try=True) - return (intExpr + array_expr).set_name("(len) " + str(expr) + "...") - - -def match_previous_literal(expr: ParserElement) -> ParserElement: - """Helper to define an expression that is indirectly defined from - the tokens matched in a previous expression, that is, it looks for - a 'repeat' of a previous expression. For example:: - - first = Word(nums) - second = match_previous_literal(first) - match_expr = first + ":" + second - - will match ``"1:1"``, but not ``"1:2"``. Because this - matches a previous literal, will also match the leading - ``"1:1"`` in ``"1:10"``. If this is not desired, use - :class:`match_previous_expr`. Do *not* use with packrat parsing - enabled. - """ - rep = Forward() - - def copy_token_to_repeater(s, l, t): - if t: - if len(t) == 1: - rep << t[0] - else: - # flatten t tokens - tflat = _flatten(t.as_list()) - rep << And(Literal(tt) for tt in tflat) - else: - rep << Empty() - - expr.add_parse_action(copy_token_to_repeater, callDuringTry=True) - rep.set_name("(prev) " + str(expr)) - return rep - - -def match_previous_expr(expr: ParserElement) -> ParserElement: - """Helper to define an expression that is indirectly defined from - the tokens matched in a previous expression, that is, it looks for - a 'repeat' of a previous expression. For example:: - - first = Word(nums) - second = match_previous_expr(first) - match_expr = first + ":" + second - - will match ``"1:1"``, but not ``"1:2"``. Because this - matches by expressions, will *not* match the leading ``"1:1"`` - in ``"1:10"``; the expressions are evaluated first, and then - compared, so ``"1"`` is compared with ``"10"``. Do *not* use - with packrat parsing enabled. - """ - rep = Forward() - e2 = expr.copy() - rep <<= e2 - - def copy_token_to_repeater(s, l, t): - matchTokens = _flatten(t.as_list()) - - def must_match_these_tokens(s, l, t): - theseTokens = _flatten(t.as_list()) - if theseTokens != matchTokens: - raise ParseException( - s, l, "Expected {}, found{}".format(matchTokens, theseTokens) - ) - - rep.set_parse_action(must_match_these_tokens, callDuringTry=True) - - expr.add_parse_action(copy_token_to_repeater, callDuringTry=True) - rep.set_name("(prev) " + str(expr)) - return rep - - -def one_of( - strs: Union[typing.Iterable[str], str], - caseless: bool = False, - use_regex: bool = True, - as_keyword: bool = False, - *, - useRegex: bool = True, - asKeyword: bool = False, -) -> ParserElement: - """Helper to quickly define a set of alternative :class:`Literal` s, - and makes sure to do longest-first testing when there is a conflict, - regardless of the input order, but returns - a :class:`MatchFirst` for best performance. - - Parameters: - - - ``strs`` - a string of space-delimited literals, or a collection of - string literals - - ``caseless`` - treat all literals as caseless - (default= ``False``) - - ``use_regex`` - as an optimization, will - generate a :class:`Regex` object; otherwise, will generate - a :class:`MatchFirst` object (if ``caseless=True`` or ``asKeyword=True``, or if - creating a :class:`Regex` raises an exception) - (default= ``True``) - - ``as_keyword`` - enforce :class:`Keyword`-style matching on the - generated expressions - (default= ``False``) - - ``asKeyword`` and ``useRegex`` are retained for pre-PEP8 compatibility, - but will be removed in a future release - - Example:: - - comp_oper = one_of("< = > <= >= !=") - var = Word(alphas) - number = Word(nums) - term = var | number - comparison_expr = term + comp_oper + term - print(comparison_expr.search_string("B = 12 AA=23 B<=AA AA>12")) - - prints:: - - [['B', '=', '12'], ['AA', '=', '23'], ['B', '<=', 'AA'], ['AA', '>', '12']] - """ - asKeyword = asKeyword or as_keyword - useRegex = useRegex and use_regex - - if ( - isinstance(caseless, str_type) - and __diag__.warn_on_multiple_string_args_to_oneof - ): - warnings.warn( - "More than one string argument passed to one_of, pass" - " choices as a list or space-delimited string", - stacklevel=2, - ) - - if caseless: - isequal = lambda a, b: a.upper() == b.upper() - masks = lambda a, b: b.upper().startswith(a.upper()) - parseElementClass = CaselessKeyword if asKeyword else CaselessLiteral - else: - isequal = lambda a, b: a == b - masks = lambda a, b: b.startswith(a) - parseElementClass = Keyword if asKeyword else Literal - - symbols: List[str] = [] - if isinstance(strs, str_type): - symbols = strs.split() - elif isinstance(strs, Iterable): - symbols = list(strs) - else: - raise TypeError("Invalid argument to one_of, expected string or iterable") - if not symbols: - return NoMatch() - - # reorder given symbols to take care to avoid masking longer choices with shorter ones - # (but only if the given symbols are not just single characters) - if any(len(sym) > 1 for sym in symbols): - i = 0 - while i < len(symbols) - 1: - cur = symbols[i] - for j, other in enumerate(symbols[i + 1 :]): - if isequal(other, cur): - del symbols[i + j + 1] - break - elif masks(cur, other): - del symbols[i + j + 1] - symbols.insert(i, other) - break - else: - i += 1 - - if useRegex: - re_flags: int = re.IGNORECASE if caseless else 0 - - try: - if all(len(sym) == 1 for sym in symbols): - # symbols are just single characters, create range regex pattern - patt = "[{}]".format( - "".join(_escape_regex_range_chars(sym) for sym in symbols) - ) - else: - patt = "|".join(re.escape(sym) for sym in symbols) - - # wrap with \b word break markers if defining as keywords - if asKeyword: - patt = r"\b(?:{})\b".format(patt) - - ret = Regex(patt, flags=re_flags).set_name(" | ".join(symbols)) - - if caseless: - # add parse action to return symbols as specified, not in random - # casing as found in input string - symbol_map = {sym.lower(): sym for sym in symbols} - ret.add_parse_action(lambda s, l, t: symbol_map[t[0].lower()]) - - return ret - - except re.error: - warnings.warn( - "Exception creating Regex for one_of, building MatchFirst", stacklevel=2 - ) - - # last resort, just use MatchFirst - return MatchFirst(parseElementClass(sym) for sym in symbols).set_name( - " | ".join(symbols) - ) - - -def dict_of(key: ParserElement, value: ParserElement) -> ParserElement: - """Helper to easily and clearly define a dictionary by specifying - the respective patterns for the key and value. Takes care of - defining the :class:`Dict`, :class:`ZeroOrMore`, and - :class:`Group` tokens in the proper order. The key pattern - can include delimiting markers or punctuation, as long as they are - suppressed, thereby leaving the significant key text. The value - pattern can include named results, so that the :class:`Dict` results - can include named token fields. - - Example:: - - text = "shape: SQUARE posn: upper left color: light blue texture: burlap" - attr_expr = (label + Suppress(':') + OneOrMore(data_word, stop_on=label).set_parse_action(' '.join)) - print(attr_expr[1, ...].parse_string(text).dump()) - - attr_label = label - attr_value = Suppress(':') + OneOrMore(data_word, stop_on=label).set_parse_action(' '.join) - - # similar to Dict, but simpler call format - result = dict_of(attr_label, attr_value).parse_string(text) - print(result.dump()) - print(result['shape']) - print(result.shape) # object attribute access works too - print(result.as_dict()) - - prints:: - - [['shape', 'SQUARE'], ['posn', 'upper left'], ['color', 'light blue'], ['texture', 'burlap']] - - color: 'light blue' - - posn: 'upper left' - - shape: 'SQUARE' - - texture: 'burlap' - SQUARE - SQUARE - {'color': 'light blue', 'shape': 'SQUARE', 'posn': 'upper left', 'texture': 'burlap'} - """ - return Dict(OneOrMore(Group(key + value))) - - -def original_text_for( - expr: ParserElement, as_string: bool = True, *, asString: bool = True -) -> ParserElement: - """Helper to return the original, untokenized text for a given - expression. Useful to restore the parsed fields of an HTML start - tag into the raw tag text itself, or to revert separate tokens with - intervening whitespace back to the original matching input text. By - default, returns astring containing the original parsed text. - - If the optional ``as_string`` argument is passed as - ``False``, then the return value is - a :class:`ParseResults` containing any results names that - were originally matched, and a single token containing the original - matched text from the input string. So if the expression passed to - :class:`original_text_for` contains expressions with defined - results names, you must set ``as_string`` to ``False`` if you - want to preserve those results name values. - - The ``asString`` pre-PEP8 argument is retained for compatibility, - but will be removed in a future release. - - Example:: - - src = "this is test bold text normal text " - for tag in ("b", "i"): - opener, closer = make_html_tags(tag) - patt = original_text_for(opener + SkipTo(closer) + closer) - print(patt.search_string(src)[0]) - - prints:: - - [' bold text '] - ['text'] - """ - asString = asString and as_string - - locMarker = Empty().set_parse_action(lambda s, loc, t: loc) - endlocMarker = locMarker.copy() - endlocMarker.callPreparse = False - matchExpr = locMarker("_original_start") + expr + endlocMarker("_original_end") - if asString: - extractText = lambda s, l, t: s[t._original_start : t._original_end] - else: - - def extractText(s, l, t): - t[:] = [s[t.pop("_original_start") : t.pop("_original_end")]] - - matchExpr.set_parse_action(extractText) - matchExpr.ignoreExprs = expr.ignoreExprs - matchExpr.suppress_warning(Diagnostics.warn_ungrouped_named_tokens_in_collection) - return matchExpr - - -def ungroup(expr: ParserElement) -> ParserElement: - """Helper to undo pyparsing's default grouping of And expressions, - even if all but one are non-empty. - """ - return TokenConverter(expr).add_parse_action(lambda t: t[0]) - - -def locatedExpr(expr: ParserElement) -> ParserElement: - """ - (DEPRECATED - future code should use the Located class) - Helper to decorate a returned token with its starting and ending - locations in the input string. - - This helper adds the following results names: - - - ``locn_start`` - location where matched expression begins - - ``locn_end`` - location where matched expression ends - - ``value`` - the actual parsed results - - Be careful if the input text contains ```` characters, you - may want to call :class:`ParserElement.parseWithTabs` - - Example:: - - wd = Word(alphas) - for match in locatedExpr(wd).searchString("ljsdf123lksdjjf123lkkjj1222"): - print(match) - - prints:: - - [[0, 'ljsdf', 5]] - [[8, 'lksdjjf', 15]] - [[18, 'lkkjj', 23]] - """ - locator = Empty().set_parse_action(lambda ss, ll, tt: ll) - return Group( - locator("locn_start") - + expr("value") - + locator.copy().leaveWhitespace()("locn_end") - ) - - -def nested_expr( - opener: Union[str, ParserElement] = "(", - closer: Union[str, ParserElement] = ")", - content: typing.Optional[ParserElement] = None, - ignore_expr: ParserElement = quoted_string(), - *, - ignoreExpr: ParserElement = quoted_string(), -) -> ParserElement: - """Helper method for defining nested lists enclosed in opening and - closing delimiters (``"("`` and ``")"`` are the default). - - Parameters: - - ``opener`` - opening character for a nested list - (default= ``"("``); can also be a pyparsing expression - - ``closer`` - closing character for a nested list - (default= ``")"``); can also be a pyparsing expression - - ``content`` - expression for items within the nested lists - (default= ``None``) - - ``ignore_expr`` - expression for ignoring opening and closing delimiters - (default= :class:`quoted_string`) - - ``ignoreExpr`` - this pre-PEP8 argument is retained for compatibility - but will be removed in a future release - - If an expression is not provided for the content argument, the - nested expression will capture all whitespace-delimited content - between delimiters as a list of separate values. - - Use the ``ignore_expr`` argument to define expressions that may - contain opening or closing characters that should not be treated as - opening or closing characters for nesting, such as quoted_string or - a comment expression. Specify multiple expressions using an - :class:`Or` or :class:`MatchFirst`. The default is - :class:`quoted_string`, but if no expressions are to be ignored, then - pass ``None`` for this argument. - - Example:: - - data_type = one_of("void int short long char float double") - decl_data_type = Combine(data_type + Opt(Word('*'))) - ident = Word(alphas+'_', alphanums+'_') - number = pyparsing_common.number - arg = Group(decl_data_type + ident) - LPAR, RPAR = map(Suppress, "()") - - code_body = nested_expr('{', '}', ignore_expr=(quoted_string | c_style_comment)) - - c_function = (decl_data_type("type") - + ident("name") - + LPAR + Opt(delimited_list(arg), [])("args") + RPAR - + code_body("body")) - c_function.ignore(c_style_comment) - - source_code = ''' - int is_odd(int x) { - return (x%2); - } - - int dec_to_hex(char hchar) { - if (hchar >= '0' && hchar <= '9') { - return (ord(hchar)-ord('0')); - } else { - return (10+ord(hchar)-ord('A')); - } - } - ''' - for func in c_function.search_string(source_code): - print("%(name)s (%(type)s) args: %(args)s" % func) - - - prints:: - - is_odd (int) args: [['int', 'x']] - dec_to_hex (int) args: [['char', 'hchar']] - """ - if ignoreExpr != ignore_expr: - ignoreExpr = ignore_expr if ignoreExpr == quoted_string() else ignoreExpr - if opener == closer: - raise ValueError("opening and closing strings cannot be the same") - if content is None: - if isinstance(opener, str_type) and isinstance(closer, str_type): - if len(opener) == 1 and len(closer) == 1: - if ignoreExpr is not None: - content = Combine( - OneOrMore( - ~ignoreExpr - + CharsNotIn( - opener + closer + ParserElement.DEFAULT_WHITE_CHARS, - exact=1, - ) - ) - ).set_parse_action(lambda t: t[0].strip()) - else: - content = empty.copy() + CharsNotIn( - opener + closer + ParserElement.DEFAULT_WHITE_CHARS - ).set_parse_action(lambda t: t[0].strip()) - else: - if ignoreExpr is not None: - content = Combine( - OneOrMore( - ~ignoreExpr - + ~Literal(opener) - + ~Literal(closer) - + CharsNotIn(ParserElement.DEFAULT_WHITE_CHARS, exact=1) - ) - ).set_parse_action(lambda t: t[0].strip()) - else: - content = Combine( - OneOrMore( - ~Literal(opener) - + ~Literal(closer) - + CharsNotIn(ParserElement.DEFAULT_WHITE_CHARS, exact=1) - ) - ).set_parse_action(lambda t: t[0].strip()) - else: - raise ValueError( - "opening and closing arguments must be strings if no content expression is given" - ) - ret = Forward() - if ignoreExpr is not None: - ret <<= Group( - Suppress(opener) + ZeroOrMore(ignoreExpr | ret | content) + Suppress(closer) - ) - else: - ret <<= Group(Suppress(opener) + ZeroOrMore(ret | content) + Suppress(closer)) - ret.set_name("nested %s%s expression" % (opener, closer)) - return ret - - -def _makeTags(tagStr, xml, suppress_LT=Suppress("<"), suppress_GT=Suppress(">")): - """Internal helper to construct opening and closing tag expressions, given a tag name""" - if isinstance(tagStr, str_type): - resname = tagStr - tagStr = Keyword(tagStr, caseless=not xml) - else: - resname = tagStr.name - - tagAttrName = Word(alphas, alphanums + "_-:") - if xml: - tagAttrValue = dbl_quoted_string.copy().set_parse_action(remove_quotes) - openTag = ( - suppress_LT - + tagStr("tag") - + Dict(ZeroOrMore(Group(tagAttrName + Suppress("=") + tagAttrValue))) - + Opt("/", default=[False])("empty").set_parse_action( - lambda s, l, t: t[0] == "/" - ) - + suppress_GT - ) - else: - tagAttrValue = quoted_string.copy().set_parse_action(remove_quotes) | Word( - printables, exclude_chars=">" - ) - openTag = ( - suppress_LT - + tagStr("tag") - + Dict( - ZeroOrMore( - Group( - tagAttrName.set_parse_action(lambda t: t[0].lower()) - + Opt(Suppress("=") + tagAttrValue) - ) - ) - ) - + Opt("/", default=[False])("empty").set_parse_action( - lambda s, l, t: t[0] == "/" - ) - + suppress_GT - ) - closeTag = Combine(Literal("", adjacent=False) - - openTag.set_name("<%s>" % resname) - # add start results name in parse action now that ungrouped names are not reported at two levels - openTag.add_parse_action( - lambda t: t.__setitem__( - "start" + "".join(resname.replace(":", " ").title().split()), t.copy() - ) - ) - closeTag = closeTag( - "end" + "".join(resname.replace(":", " ").title().split()) - ).set_name("" % resname) - openTag.tag = resname - closeTag.tag = resname - openTag.tag_body = SkipTo(closeTag()) - return openTag, closeTag - - -def make_html_tags( - tag_str: Union[str, ParserElement] -) -> Tuple[ParserElement, ParserElement]: - """Helper to construct opening and closing tag expressions for HTML, - given a tag name. Matches tags in either upper or lower case, - attributes with namespaces and with quoted or unquoted values. - - Example:: - - text = 'More info at the
pyparsing wiki page' - # make_html_tags returns pyparsing expressions for the opening and - # closing tags as a 2-tuple - a, a_end = make_html_tags("A") - link_expr = a + SkipTo(a_end)("link_text") + a_end - - for link in link_expr.search_string(text): - # attributes in the tag (like "href" shown here) are - # also accessible as named results - print(link.link_text, '->', link.href) - - prints:: - - pyparsing -> https://github.com/pyparsing/pyparsing/wiki - """ - return _makeTags(tag_str, False) - - -def make_xml_tags( - tag_str: Union[str, ParserElement] -) -> Tuple[ParserElement, ParserElement]: - """Helper to construct opening and closing tag expressions for XML, - given a tag name. Matches tags only in the given upper/lower case. - - Example: similar to :class:`make_html_tags` - """ - return _makeTags(tag_str, True) - - -any_open_tag: ParserElement -any_close_tag: ParserElement -any_open_tag, any_close_tag = make_html_tags( - Word(alphas, alphanums + "_:").set_name("any tag") -) - -_htmlEntityMap = {k.rstrip(";"): v for k, v in html.entities.html5.items()} -common_html_entity = Regex("&(?P" + "|".join(_htmlEntityMap) + ");").set_name( - "common HTML entity" -) - - -def replace_html_entity(t): - """Helper parser action to replace common HTML entities with their special characters""" - return _htmlEntityMap.get(t.entity) - - -class OpAssoc(Enum): - LEFT = 1 - RIGHT = 2 - - -InfixNotationOperatorArgType = Union[ - ParserElement, str, Tuple[Union[ParserElement, str], Union[ParserElement, str]] -] -InfixNotationOperatorSpec = Union[ - Tuple[ - InfixNotationOperatorArgType, - int, - OpAssoc, - typing.Optional[ParseAction], - ], - Tuple[ - InfixNotationOperatorArgType, - int, - OpAssoc, - ], -] - - -def infix_notation( - base_expr: ParserElement, - op_list: List[InfixNotationOperatorSpec], - lpar: Union[str, ParserElement] = Suppress("("), - rpar: Union[str, ParserElement] = Suppress(")"), -) -> ParserElement: - """Helper method for constructing grammars of expressions made up of - operators working in a precedence hierarchy. Operators may be unary - or binary, left- or right-associative. Parse actions can also be - attached to operator expressions. The generated parser will also - recognize the use of parentheses to override operator precedences - (see example below). - - Note: if you define a deep operator list, you may see performance - issues when using infix_notation. See - :class:`ParserElement.enable_packrat` for a mechanism to potentially - improve your parser performance. - - Parameters: - - ``base_expr`` - expression representing the most basic operand to - be used in the expression - - ``op_list`` - list of tuples, one for each operator precedence level - in the expression grammar; each tuple is of the form ``(op_expr, - num_operands, right_left_assoc, (optional)parse_action)``, where: - - - ``op_expr`` is the pyparsing expression for the operator; may also - be a string, which will be converted to a Literal; if ``num_operands`` - is 3, ``op_expr`` is a tuple of two expressions, for the two - operators separating the 3 terms - - ``num_operands`` is the number of terms for this operator (must be 1, - 2, or 3) - - ``right_left_assoc`` is the indicator whether the operator is right - or left associative, using the pyparsing-defined constants - ``OpAssoc.RIGHT`` and ``OpAssoc.LEFT``. - - ``parse_action`` is the parse action to be associated with - expressions matching this operator expression (the parse action - tuple member may be omitted); if the parse action is passed - a tuple or list of functions, this is equivalent to calling - ``set_parse_action(*fn)`` - (:class:`ParserElement.set_parse_action`) - - ``lpar`` - expression for matching left-parentheses; if passed as a - str, then will be parsed as Suppress(lpar). If lpar is passed as - an expression (such as ``Literal('(')``), then it will be kept in - the parsed results, and grouped with them. (default= ``Suppress('(')``) - - ``rpar`` - expression for matching right-parentheses; if passed as a - str, then will be parsed as Suppress(rpar). If rpar is passed as - an expression (such as ``Literal(')')``), then it will be kept in - the parsed results, and grouped with them. (default= ``Suppress(')')``) - - Example:: - - # simple example of four-function arithmetic with ints and - # variable names - integer = pyparsing_common.signed_integer - varname = pyparsing_common.identifier - - arith_expr = infix_notation(integer | varname, - [ - ('-', 1, OpAssoc.RIGHT), - (one_of('* /'), 2, OpAssoc.LEFT), - (one_of('+ -'), 2, OpAssoc.LEFT), - ]) - - arith_expr.run_tests(''' - 5+3*6 - (5+3)*6 - -2--11 - ''', full_dump=False) - - prints:: - - 5+3*6 - [[5, '+', [3, '*', 6]]] - - (5+3)*6 - [[[5, '+', 3], '*', 6]] - - -2--11 - [[['-', 2], '-', ['-', 11]]] - """ - # captive version of FollowedBy that does not do parse actions or capture results names - class _FB(FollowedBy): - def parseImpl(self, instring, loc, doActions=True): - self.expr.try_parse(instring, loc) - return loc, [] - - _FB.__name__ = "FollowedBy>" - - ret = Forward() - if isinstance(lpar, str): - lpar = Suppress(lpar) - if isinstance(rpar, str): - rpar = Suppress(rpar) - - # if lpar and rpar are not suppressed, wrap in group - if not (isinstance(rpar, Suppress) and isinstance(rpar, Suppress)): - lastExpr = base_expr | Group(lpar + ret + rpar) - else: - lastExpr = base_expr | (lpar + ret + rpar) - - for i, operDef in enumerate(op_list): - opExpr, arity, rightLeftAssoc, pa = (operDef + (None,))[:4] - if isinstance(opExpr, str_type): - opExpr = ParserElement._literalStringClass(opExpr) - if arity == 3: - if not isinstance(opExpr, (tuple, list)) or len(opExpr) != 2: - raise ValueError( - "if numterms=3, opExpr must be a tuple or list of two expressions" - ) - opExpr1, opExpr2 = opExpr - term_name = "{}{} term".format(opExpr1, opExpr2) - else: - term_name = "{} term".format(opExpr) - - if not 1 <= arity <= 3: - raise ValueError("operator must be unary (1), binary (2), or ternary (3)") - - if rightLeftAssoc not in (OpAssoc.LEFT, OpAssoc.RIGHT): - raise ValueError("operator must indicate right or left associativity") - - thisExpr: Forward = Forward().set_name(term_name) - if rightLeftAssoc is OpAssoc.LEFT: - if arity == 1: - matchExpr = _FB(lastExpr + opExpr) + Group(lastExpr + opExpr[1, ...]) - elif arity == 2: - if opExpr is not None: - matchExpr = _FB(lastExpr + opExpr + lastExpr) + Group( - lastExpr + (opExpr + lastExpr)[1, ...] - ) - else: - matchExpr = _FB(lastExpr + lastExpr) + Group(lastExpr[2, ...]) - elif arity == 3: - matchExpr = _FB( - lastExpr + opExpr1 + lastExpr + opExpr2 + lastExpr - ) + Group(lastExpr + OneOrMore(opExpr1 + lastExpr + opExpr2 + lastExpr)) - elif rightLeftAssoc is OpAssoc.RIGHT: - if arity == 1: - # try to avoid LR with this extra test - if not isinstance(opExpr, Opt): - opExpr = Opt(opExpr) - matchExpr = _FB(opExpr.expr + thisExpr) + Group(opExpr + thisExpr) - elif arity == 2: - if opExpr is not None: - matchExpr = _FB(lastExpr + opExpr + thisExpr) + Group( - lastExpr + (opExpr + thisExpr)[1, ...] - ) - else: - matchExpr = _FB(lastExpr + thisExpr) + Group( - lastExpr + thisExpr[1, ...] - ) - elif arity == 3: - matchExpr = _FB( - lastExpr + opExpr1 + thisExpr + opExpr2 + thisExpr - ) + Group(lastExpr + opExpr1 + thisExpr + opExpr2 + thisExpr) - if pa: - if isinstance(pa, (tuple, list)): - matchExpr.set_parse_action(*pa) - else: - matchExpr.set_parse_action(pa) - thisExpr <<= (matchExpr | lastExpr).setName(term_name) - lastExpr = thisExpr - ret <<= lastExpr - return ret - - -def indentedBlock(blockStatementExpr, indentStack, indent=True, backup_stacks=[]): - """ - (DEPRECATED - use IndentedBlock class instead) - Helper method for defining space-delimited indentation blocks, - such as those used to define block statements in Python source code. - - Parameters: - - - ``blockStatementExpr`` - expression defining syntax of statement that - is repeated within the indented block - - ``indentStack`` - list created by caller to manage indentation stack - (multiple ``statementWithIndentedBlock`` expressions within a single - grammar should share a common ``indentStack``) - - ``indent`` - boolean indicating whether block must be indented beyond - the current level; set to ``False`` for block of left-most statements - (default= ``True``) - - A valid block must contain at least one ``blockStatement``. - - (Note that indentedBlock uses internal parse actions which make it - incompatible with packrat parsing.) - - Example:: - - data = ''' - def A(z): - A1 - B = 100 - G = A2 - A2 - A3 - B - def BB(a,b,c): - BB1 - def BBA(): - bba1 - bba2 - bba3 - C - D - def spam(x,y): - def eggs(z): - pass - ''' - - - indentStack = [1] - stmt = Forward() - - identifier = Word(alphas, alphanums) - funcDecl = ("def" + identifier + Group("(" + Opt(delimitedList(identifier)) + ")") + ":") - func_body = indentedBlock(stmt, indentStack) - funcDef = Group(funcDecl + func_body) - - rvalue = Forward() - funcCall = Group(identifier + "(" + Opt(delimitedList(rvalue)) + ")") - rvalue << (funcCall | identifier | Word(nums)) - assignment = Group(identifier + "=" + rvalue) - stmt << (funcDef | assignment | identifier) - - module_body = stmt[1, ...] - - parseTree = module_body.parseString(data) - parseTree.pprint() - - prints:: - - [['def', - 'A', - ['(', 'z', ')'], - ':', - [['A1'], [['B', '=', '100']], [['G', '=', 'A2']], ['A2'], ['A3']]], - 'B', - ['def', - 'BB', - ['(', 'a', 'b', 'c', ')'], - ':', - [['BB1'], [['def', 'BBA', ['(', ')'], ':', [['bba1'], ['bba2'], ['bba3']]]]]], - 'C', - 'D', - ['def', - 'spam', - ['(', 'x', 'y', ')'], - ':', - [[['def', 'eggs', ['(', 'z', ')'], ':', [['pass']]]]]]] - """ - backup_stacks.append(indentStack[:]) - - def reset_stack(): - indentStack[:] = backup_stacks[-1] - - def checkPeerIndent(s, l, t): - if l >= len(s): - return - curCol = col(l, s) - if curCol != indentStack[-1]: - if curCol > indentStack[-1]: - raise ParseException(s, l, "illegal nesting") - raise ParseException(s, l, "not a peer entry") - - def checkSubIndent(s, l, t): - curCol = col(l, s) - if curCol > indentStack[-1]: - indentStack.append(curCol) - else: - raise ParseException(s, l, "not a subentry") - - def checkUnindent(s, l, t): - if l >= len(s): - return - curCol = col(l, s) - if not (indentStack and curCol in indentStack): - raise ParseException(s, l, "not an unindent") - if curCol < indentStack[-1]: - indentStack.pop() - - NL = OneOrMore(LineEnd().set_whitespace_chars("\t ").suppress()) - INDENT = (Empty() + Empty().set_parse_action(checkSubIndent)).set_name("INDENT") - PEER = Empty().set_parse_action(checkPeerIndent).set_name("") - UNDENT = Empty().set_parse_action(checkUnindent).set_name("UNINDENT") - if indent: - smExpr = Group( - Opt(NL) - + INDENT - + OneOrMore(PEER + Group(blockStatementExpr) + Opt(NL)) - + UNDENT - ) - else: - smExpr = Group( - Opt(NL) - + OneOrMore(PEER + Group(blockStatementExpr) + Opt(NL)) - + Opt(UNDENT) - ) - - # add a parse action to remove backup_stack from list of backups - smExpr.add_parse_action( - lambda: backup_stacks.pop(-1) and None if backup_stacks else None - ) - smExpr.set_fail_action(lambda a, b, c, d: reset_stack()) - blockStatementExpr.ignore(_bslash + LineEnd()) - return smExpr.set_name("indented block") - - -# it's easy to get these comment structures wrong - they're very common, so may as well make them available -c_style_comment = Combine(Regex(r"/\*(?:[^*]|\*(?!/))*") + "*/").set_name( - "C style comment" -) -"Comment of the form ``/* ... */``" - -html_comment = Regex(r"").set_name("HTML comment") -"Comment of the form ````" - -rest_of_line = Regex(r".*").leave_whitespace().set_name("rest of line") -dbl_slash_comment = Regex(r"//(?:\\\n|[^\n])*").set_name("// comment") -"Comment of the form ``// ... (to end of line)``" - -cpp_style_comment = Combine( - Regex(r"/\*(?:[^*]|\*(?!/))*") + "*/" | dbl_slash_comment -).set_name("C++ style comment") -"Comment of either form :class:`c_style_comment` or :class:`dbl_slash_comment`" - -java_style_comment = cpp_style_comment -"Same as :class:`cpp_style_comment`" - -python_style_comment = Regex(r"#.*").set_name("Python style comment") -"Comment of the form ``# ... (to end of line)``" - - -# build list of built-in expressions, for future reference if a global default value -# gets updated -_builtin_exprs: List[ParserElement] = [ - v for v in vars().values() if isinstance(v, ParserElement) -] - - -# pre-PEP8 compatible names -delimitedList = delimited_list -countedArray = counted_array -matchPreviousLiteral = match_previous_literal -matchPreviousExpr = match_previous_expr -oneOf = one_of -dictOf = dict_of -originalTextFor = original_text_for -nestedExpr = nested_expr -makeHTMLTags = make_html_tags -makeXMLTags = make_xml_tags -anyOpenTag, anyCloseTag = any_open_tag, any_close_tag -commonHTMLEntity = common_html_entity -replaceHTMLEntity = replace_html_entity -opAssoc = OpAssoc -infixNotation = infix_notation -cStyleComment = c_style_comment -htmlComment = html_comment -restOfLine = rest_of_line -dblSlashComment = dbl_slash_comment -cppStyleComment = cpp_style_comment -javaStyleComment = java_style_comment -pythonStyleComment = python_style_comment diff --git a/gestao_raul/Lib/site-packages/pip/_vendor/pyparsing/results.py b/gestao_raul/Lib/site-packages/pip/_vendor/pyparsing/results.py deleted file mode 100644 index 00c9421..0000000 --- a/gestao_raul/Lib/site-packages/pip/_vendor/pyparsing/results.py +++ /dev/null @@ -1,760 +0,0 @@ -# results.py -from collections.abc import MutableMapping, Mapping, MutableSequence, Iterator -import pprint -from weakref import ref as wkref -from typing import Tuple, Any - -str_type: Tuple[type, ...] = (str, bytes) -_generator_type = type((_ for _ in ())) - - -class _ParseResultsWithOffset: - __slots__ = ["tup"] - - def __init__(self, p1, p2): - self.tup = (p1, p2) - - def __getitem__(self, i): - return self.tup[i] - - def __getstate__(self): - return self.tup - - def __setstate__(self, *args): - self.tup = args[0] - - -class ParseResults: - """Structured parse results, to provide multiple means of access to - the parsed data: - - - as a list (``len(results)``) - - by list index (``results[0], results[1]``, etc.) - - by attribute (``results.`` - see :class:`ParserElement.set_results_name`) - - Example:: - - integer = Word(nums) - date_str = (integer.set_results_name("year") + '/' - + integer.set_results_name("month") + '/' - + integer.set_results_name("day")) - # equivalent form: - # date_str = (integer("year") + '/' - # + integer("month") + '/' - # + integer("day")) - - # parse_string returns a ParseResults object - result = date_str.parse_string("1999/12/31") - - def test(s, fn=repr): - print("{} -> {}".format(s, fn(eval(s)))) - test("list(result)") - test("result[0]") - test("result['month']") - test("result.day") - test("'month' in result") - test("'minutes' in result") - test("result.dump()", str) - - prints:: - - list(result) -> ['1999', '/', '12', '/', '31'] - result[0] -> '1999' - result['month'] -> '12' - result.day -> '31' - 'month' in result -> True - 'minutes' in result -> False - result.dump() -> ['1999', '/', '12', '/', '31'] - - day: '31' - - month: '12' - - year: '1999' - """ - - _null_values: Tuple[Any, ...] = (None, [], "", ()) - - __slots__ = [ - "_name", - "_parent", - "_all_names", - "_modal", - "_toklist", - "_tokdict", - "__weakref__", - ] - - class List(list): - """ - Simple wrapper class to distinguish parsed list results that should be preserved - as actual Python lists, instead of being converted to :class:`ParseResults`: - - LBRACK, RBRACK = map(pp.Suppress, "[]") - element = pp.Forward() - item = ppc.integer - element_list = LBRACK + pp.delimited_list(element) + RBRACK - - # add parse actions to convert from ParseResults to actual Python collection types - def as_python_list(t): - return pp.ParseResults.List(t.as_list()) - element_list.add_parse_action(as_python_list) - - element <<= item | element_list - - element.run_tests(''' - 100 - [2,3,4] - [[2, 1],3,4] - [(2, 1),3,4] - (2,3,4) - ''', post_parse=lambda s, r: (r[0], type(r[0]))) - - prints: - - 100 - (100, ) - - [2,3,4] - ([2, 3, 4], ) - - [[2, 1],3,4] - ([[2, 1], 3, 4], ) - - (Used internally by :class:`Group` when `aslist=True`.) - """ - - def __new__(cls, contained=None): - if contained is None: - contained = [] - - if not isinstance(contained, list): - raise TypeError( - "{} may only be constructed with a list," - " not {}".format(cls.__name__, type(contained).__name__) - ) - - return list.__new__(cls) - - def __new__(cls, toklist=None, name=None, **kwargs): - if isinstance(toklist, ParseResults): - return toklist - self = object.__new__(cls) - self._name = None - self._parent = None - self._all_names = set() - - if toklist is None: - self._toklist = [] - elif isinstance(toklist, (list, _generator_type)): - self._toklist = ( - [toklist[:]] - if isinstance(toklist, ParseResults.List) - else list(toklist) - ) - else: - self._toklist = [toklist] - self._tokdict = dict() - return self - - # Performance tuning: we construct a *lot* of these, so keep this - # constructor as small and fast as possible - def __init__( - self, toklist=None, name=None, asList=True, modal=True, isinstance=isinstance - ): - self._modal = modal - if name is not None and name != "": - if isinstance(name, int): - name = str(name) - if not modal: - self._all_names = {name} - self._name = name - if toklist not in self._null_values: - if isinstance(toklist, (str_type, type)): - toklist = [toklist] - if asList: - if isinstance(toklist, ParseResults): - self[name] = _ParseResultsWithOffset( - ParseResults(toklist._toklist), 0 - ) - else: - self[name] = _ParseResultsWithOffset( - ParseResults(toklist[0]), 0 - ) - self[name]._name = name - else: - try: - self[name] = toklist[0] - except (KeyError, TypeError, IndexError): - if toklist is not self: - self[name] = toklist - else: - self._name = name - - def __getitem__(self, i): - if isinstance(i, (int, slice)): - return self._toklist[i] - else: - if i not in self._all_names: - return self._tokdict[i][-1][0] - else: - return ParseResults([v[0] for v in self._tokdict[i]]) - - def __setitem__(self, k, v, isinstance=isinstance): - if isinstance(v, _ParseResultsWithOffset): - self._tokdict[k] = self._tokdict.get(k, list()) + [v] - sub = v[0] - elif isinstance(k, (int, slice)): - self._toklist[k] = v - sub = v - else: - self._tokdict[k] = self._tokdict.get(k, list()) + [ - _ParseResultsWithOffset(v, 0) - ] - sub = v - if isinstance(sub, ParseResults): - sub._parent = wkref(self) - - def __delitem__(self, i): - if isinstance(i, (int, slice)): - mylen = len(self._toklist) - del self._toklist[i] - - # convert int to slice - if isinstance(i, int): - if i < 0: - i += mylen - i = slice(i, i + 1) - # get removed indices - removed = list(range(*i.indices(mylen))) - removed.reverse() - # fixup indices in token dictionary - for name, occurrences in self._tokdict.items(): - for j in removed: - for k, (value, position) in enumerate(occurrences): - occurrences[k] = _ParseResultsWithOffset( - value, position - (position > j) - ) - else: - del self._tokdict[i] - - def __contains__(self, k) -> bool: - return k in self._tokdict - - def __len__(self) -> int: - return len(self._toklist) - - def __bool__(self) -> bool: - return not not (self._toklist or self._tokdict) - - def __iter__(self) -> Iterator: - return iter(self._toklist) - - def __reversed__(self) -> Iterator: - return iter(self._toklist[::-1]) - - def keys(self): - return iter(self._tokdict) - - def values(self): - return (self[k] for k in self.keys()) - - def items(self): - return ((k, self[k]) for k in self.keys()) - - def haskeys(self) -> bool: - """ - Since ``keys()`` returns an iterator, this method is helpful in bypassing - code that looks for the existence of any defined results names.""" - return bool(self._tokdict) - - def pop(self, *args, **kwargs): - """ - Removes and returns item at specified index (default= ``last``). - Supports both ``list`` and ``dict`` semantics for ``pop()``. If - passed no argument or an integer argument, it will use ``list`` - semantics and pop tokens from the list of parsed tokens. If passed - a non-integer argument (most likely a string), it will use ``dict`` - semantics and pop the corresponding value from any defined results - names. A second default return value argument is supported, just as in - ``dict.pop()``. - - Example:: - - numlist = Word(nums)[...] - print(numlist.parse_string("0 123 321")) # -> ['0', '123', '321'] - - def remove_first(tokens): - tokens.pop(0) - numlist.add_parse_action(remove_first) - print(numlist.parse_string("0 123 321")) # -> ['123', '321'] - - label = Word(alphas) - patt = label("LABEL") + Word(nums)[1, ...] - print(patt.parse_string("AAB 123 321").dump()) - - # Use pop() in a parse action to remove named result (note that corresponding value is not - # removed from list form of results) - def remove_LABEL(tokens): - tokens.pop("LABEL") - return tokens - patt.add_parse_action(remove_LABEL) - print(patt.parse_string("AAB 123 321").dump()) - - prints:: - - ['AAB', '123', '321'] - - LABEL: 'AAB' - - ['AAB', '123', '321'] - """ - if not args: - args = [-1] - for k, v in kwargs.items(): - if k == "default": - args = (args[0], v) - else: - raise TypeError( - "pop() got an unexpected keyword argument {!r}".format(k) - ) - if isinstance(args[0], int) or len(args) == 1 or args[0] in self: - index = args[0] - ret = self[index] - del self[index] - return ret - else: - defaultvalue = args[1] - return defaultvalue - - def get(self, key, default_value=None): - """ - Returns named result matching the given key, or if there is no - such name, then returns the given ``default_value`` or ``None`` if no - ``default_value`` is specified. - - Similar to ``dict.get()``. - - Example:: - - integer = Word(nums) - date_str = integer("year") + '/' + integer("month") + '/' + integer("day") - - result = date_str.parse_string("1999/12/31") - print(result.get("year")) # -> '1999' - print(result.get("hour", "not specified")) # -> 'not specified' - print(result.get("hour")) # -> None - """ - if key in self: - return self[key] - else: - return default_value - - def insert(self, index, ins_string): - """ - Inserts new element at location index in the list of parsed tokens. - - Similar to ``list.insert()``. - - Example:: - - numlist = Word(nums)[...] - print(numlist.parse_string("0 123 321")) # -> ['0', '123', '321'] - - # use a parse action to insert the parse location in the front of the parsed results - def insert_locn(locn, tokens): - tokens.insert(0, locn) - numlist.add_parse_action(insert_locn) - print(numlist.parse_string("0 123 321")) # -> [0, '0', '123', '321'] - """ - self._toklist.insert(index, ins_string) - # fixup indices in token dictionary - for name, occurrences in self._tokdict.items(): - for k, (value, position) in enumerate(occurrences): - occurrences[k] = _ParseResultsWithOffset( - value, position + (position > index) - ) - - def append(self, item): - """ - Add single element to end of ``ParseResults`` list of elements. - - Example:: - - numlist = Word(nums)[...] - print(numlist.parse_string("0 123 321")) # -> ['0', '123', '321'] - - # use a parse action to compute the sum of the parsed integers, and add it to the end - def append_sum(tokens): - tokens.append(sum(map(int, tokens))) - numlist.add_parse_action(append_sum) - print(numlist.parse_string("0 123 321")) # -> ['0', '123', '321', 444] - """ - self._toklist.append(item) - - def extend(self, itemseq): - """ - Add sequence of elements to end of ``ParseResults`` list of elements. - - Example:: - - patt = Word(alphas)[1, ...] - - # use a parse action to append the reverse of the matched strings, to make a palindrome - def make_palindrome(tokens): - tokens.extend(reversed([t[::-1] for t in tokens])) - return ''.join(tokens) - patt.add_parse_action(make_palindrome) - print(patt.parse_string("lskdj sdlkjf lksd")) # -> 'lskdjsdlkjflksddsklfjkldsjdksl' - """ - if isinstance(itemseq, ParseResults): - self.__iadd__(itemseq) - else: - self._toklist.extend(itemseq) - - def clear(self): - """ - Clear all elements and results names. - """ - del self._toklist[:] - self._tokdict.clear() - - def __getattr__(self, name): - try: - return self[name] - except KeyError: - if name.startswith("__"): - raise AttributeError(name) - return "" - - def __add__(self, other) -> "ParseResults": - ret = self.copy() - ret += other - return ret - - def __iadd__(self, other) -> "ParseResults": - if other._tokdict: - offset = len(self._toklist) - addoffset = lambda a: offset if a < 0 else a + offset - otheritems = other._tokdict.items() - otherdictitems = [ - (k, _ParseResultsWithOffset(v[0], addoffset(v[1]))) - for k, vlist in otheritems - for v in vlist - ] - for k, v in otherdictitems: - self[k] = v - if isinstance(v[0], ParseResults): - v[0]._parent = wkref(self) - - self._toklist += other._toklist - self._all_names |= other._all_names - return self - - def __radd__(self, other) -> "ParseResults": - if isinstance(other, int) and other == 0: - # useful for merging many ParseResults using sum() builtin - return self.copy() - else: - # this may raise a TypeError - so be it - return other + self - - def __repr__(self) -> str: - return "{}({!r}, {})".format(type(self).__name__, self._toklist, self.as_dict()) - - def __str__(self) -> str: - return ( - "[" - + ", ".join( - [ - str(i) if isinstance(i, ParseResults) else repr(i) - for i in self._toklist - ] - ) - + "]" - ) - - def _asStringList(self, sep=""): - out = [] - for item in self._toklist: - if out and sep: - out.append(sep) - if isinstance(item, ParseResults): - out += item._asStringList() - else: - out.append(str(item)) - return out - - def as_list(self) -> list: - """ - Returns the parse results as a nested list of matching tokens, all converted to strings. - - Example:: - - patt = Word(alphas)[1, ...] - result = patt.parse_string("sldkj lsdkj sldkj") - # even though the result prints in string-like form, it is actually a pyparsing ParseResults - print(type(result), result) # -> ['sldkj', 'lsdkj', 'sldkj'] - - # Use as_list() to create an actual list - result_list = result.as_list() - print(type(result_list), result_list) # -> ['sldkj', 'lsdkj', 'sldkj'] - """ - return [ - res.as_list() if isinstance(res, ParseResults) else res - for res in self._toklist - ] - - def as_dict(self) -> dict: - """ - Returns the named parse results as a nested dictionary. - - Example:: - - integer = Word(nums) - date_str = integer("year") + '/' + integer("month") + '/' + integer("day") - - result = date_str.parse_string('12/31/1999') - print(type(result), repr(result)) # -> (['12', '/', '31', '/', '1999'], {'day': [('1999', 4)], 'year': [('12', 0)], 'month': [('31', 2)]}) - - result_dict = result.as_dict() - print(type(result_dict), repr(result_dict)) # -> {'day': '1999', 'year': '12', 'month': '31'} - - # even though a ParseResults supports dict-like access, sometime you just need to have a dict - import json - print(json.dumps(result)) # -> Exception: TypeError: ... is not JSON serializable - print(json.dumps(result.as_dict())) # -> {"month": "31", "day": "1999", "year": "12"} - """ - - def to_item(obj): - if isinstance(obj, ParseResults): - return obj.as_dict() if obj.haskeys() else [to_item(v) for v in obj] - else: - return obj - - return dict((k, to_item(v)) for k, v in self.items()) - - def copy(self) -> "ParseResults": - """ - Returns a new copy of a :class:`ParseResults` object. - """ - ret = ParseResults(self._toklist) - ret._tokdict = self._tokdict.copy() - ret._parent = self._parent - ret._all_names |= self._all_names - ret._name = self._name - return ret - - def get_name(self): - r""" - Returns the results name for this token expression. Useful when several - different expressions might match at a particular location. - - Example:: - - integer = Word(nums) - ssn_expr = Regex(r"\d\d\d-\d\d-\d\d\d\d") - house_number_expr = Suppress('#') + Word(nums, alphanums) - user_data = (Group(house_number_expr)("house_number") - | Group(ssn_expr)("ssn") - | Group(integer)("age")) - user_info = user_data[1, ...] - - result = user_info.parse_string("22 111-22-3333 #221B") - for item in result: - print(item.get_name(), ':', item[0]) - - prints:: - - age : 22 - ssn : 111-22-3333 - house_number : 221B - """ - if self._name: - return self._name - elif self._parent: - par = self._parent() - - def find_in_parent(sub): - return next( - ( - k - for k, vlist in par._tokdict.items() - for v, loc in vlist - if sub is v - ), - None, - ) - - return find_in_parent(self) if par else None - elif ( - len(self) == 1 - and len(self._tokdict) == 1 - and next(iter(self._tokdict.values()))[0][1] in (0, -1) - ): - return next(iter(self._tokdict.keys())) - else: - return None - - def dump(self, indent="", full=True, include_list=True, _depth=0) -> str: - """ - Diagnostic method for listing out the contents of - a :class:`ParseResults`. Accepts an optional ``indent`` argument so - that this string can be embedded in a nested display of other data. - - Example:: - - integer = Word(nums) - date_str = integer("year") + '/' + integer("month") + '/' + integer("day") - - result = date_str.parse_string('1999/12/31') - print(result.dump()) - - prints:: - - ['1999', '/', '12', '/', '31'] - - day: '31' - - month: '12' - - year: '1999' - """ - out = [] - NL = "\n" - out.append(indent + str(self.as_list()) if include_list else "") - - if full: - if self.haskeys(): - items = sorted((str(k), v) for k, v in self.items()) - for k, v in items: - if out: - out.append(NL) - out.append("{}{}- {}: ".format(indent, (" " * _depth), k)) - if isinstance(v, ParseResults): - if v: - out.append( - v.dump( - indent=indent, - full=full, - include_list=include_list, - _depth=_depth + 1, - ) - ) - else: - out.append(str(v)) - else: - out.append(repr(v)) - if any(isinstance(vv, ParseResults) for vv in self): - v = self - for i, vv in enumerate(v): - if isinstance(vv, ParseResults): - out.append( - "\n{}{}[{}]:\n{}{}{}".format( - indent, - (" " * (_depth)), - i, - indent, - (" " * (_depth + 1)), - vv.dump( - indent=indent, - full=full, - include_list=include_list, - _depth=_depth + 1, - ), - ) - ) - else: - out.append( - "\n%s%s[%d]:\n%s%s%s" - % ( - indent, - (" " * (_depth)), - i, - indent, - (" " * (_depth + 1)), - str(vv), - ) - ) - - return "".join(out) - - def pprint(self, *args, **kwargs): - """ - Pretty-printer for parsed results as a list, using the - `pprint `_ module. - Accepts additional positional or keyword args as defined for - `pprint.pprint `_ . - - Example:: - - ident = Word(alphas, alphanums) - num = Word(nums) - func = Forward() - term = ident | num | Group('(' + func + ')') - func <<= ident + Group(Optional(delimited_list(term))) - result = func.parse_string("fna a,b,(fnb c,d,200),100") - result.pprint(width=40) - - prints:: - - ['fna', - ['a', - 'b', - ['(', 'fnb', ['c', 'd', '200'], ')'], - '100']] - """ - pprint.pprint(self.as_list(), *args, **kwargs) - - # add support for pickle protocol - def __getstate__(self): - return ( - self._toklist, - ( - self._tokdict.copy(), - self._parent is not None and self._parent() or None, - self._all_names, - self._name, - ), - ) - - def __setstate__(self, state): - self._toklist, (self._tokdict, par, inAccumNames, self._name) = state - self._all_names = set(inAccumNames) - if par is not None: - self._parent = wkref(par) - else: - self._parent = None - - def __getnewargs__(self): - return self._toklist, self._name - - def __dir__(self): - return dir(type(self)) + list(self.keys()) - - @classmethod - def from_dict(cls, other, name=None) -> "ParseResults": - """ - Helper classmethod to construct a ``ParseResults`` from a ``dict``, preserving the - name-value relations as results names. If an optional ``name`` argument is - given, a nested ``ParseResults`` will be returned. - """ - - def is_iterable(obj): - try: - iter(obj) - except Exception: - return False - else: - return not isinstance(obj, str_type) - - ret = cls([]) - for k, v in other.items(): - if isinstance(v, Mapping): - ret += cls.from_dict(v, name=k) - else: - ret += cls([v], name=k, asList=is_iterable(v)) - if name is not None: - ret = cls([ret], name=name) - return ret - - asList = as_list - asDict = as_dict - getName = get_name - - -MutableMapping.register(ParseResults) -MutableSequence.register(ParseResults) diff --git a/gestao_raul/Lib/site-packages/pip/_vendor/pyparsing/testing.py b/gestao_raul/Lib/site-packages/pip/_vendor/pyparsing/testing.py deleted file mode 100644 index 84a0ef1..0000000 --- a/gestao_raul/Lib/site-packages/pip/_vendor/pyparsing/testing.py +++ /dev/null @@ -1,331 +0,0 @@ -# testing.py - -from contextlib import contextmanager -import typing - -from .core import ( - ParserElement, - ParseException, - Keyword, - __diag__, - __compat__, -) - - -class pyparsing_test: - """ - namespace class for classes useful in writing unit tests - """ - - class reset_pyparsing_context: - """ - Context manager to be used when writing unit tests that modify pyparsing config values: - - packrat parsing - - bounded recursion parsing - - default whitespace characters. - - default keyword characters - - literal string auto-conversion class - - __diag__ settings - - Example:: - - with reset_pyparsing_context(): - # test that literals used to construct a grammar are automatically suppressed - ParserElement.inlineLiteralsUsing(Suppress) - - term = Word(alphas) | Word(nums) - group = Group('(' + term[...] + ')') - - # assert that the '()' characters are not included in the parsed tokens - self.assertParseAndCheckList(group, "(abc 123 def)", ['abc', '123', 'def']) - - # after exiting context manager, literals are converted to Literal expressions again - """ - - def __init__(self): - self._save_context = {} - - def save(self): - self._save_context["default_whitespace"] = ParserElement.DEFAULT_WHITE_CHARS - self._save_context["default_keyword_chars"] = Keyword.DEFAULT_KEYWORD_CHARS - - self._save_context[ - "literal_string_class" - ] = ParserElement._literalStringClass - - self._save_context["verbose_stacktrace"] = ParserElement.verbose_stacktrace - - self._save_context["packrat_enabled"] = ParserElement._packratEnabled - if ParserElement._packratEnabled: - self._save_context[ - "packrat_cache_size" - ] = ParserElement.packrat_cache.size - else: - self._save_context["packrat_cache_size"] = None - self._save_context["packrat_parse"] = ParserElement._parse - self._save_context[ - "recursion_enabled" - ] = ParserElement._left_recursion_enabled - - self._save_context["__diag__"] = { - name: getattr(__diag__, name) for name in __diag__._all_names - } - - self._save_context["__compat__"] = { - "collect_all_And_tokens": __compat__.collect_all_And_tokens - } - - return self - - def restore(self): - # reset pyparsing global state - if ( - ParserElement.DEFAULT_WHITE_CHARS - != self._save_context["default_whitespace"] - ): - ParserElement.set_default_whitespace_chars( - self._save_context["default_whitespace"] - ) - - ParserElement.verbose_stacktrace = self._save_context["verbose_stacktrace"] - - Keyword.DEFAULT_KEYWORD_CHARS = self._save_context["default_keyword_chars"] - ParserElement.inlineLiteralsUsing( - self._save_context["literal_string_class"] - ) - - for name, value in self._save_context["__diag__"].items(): - (__diag__.enable if value else __diag__.disable)(name) - - ParserElement._packratEnabled = False - if self._save_context["packrat_enabled"]: - ParserElement.enable_packrat(self._save_context["packrat_cache_size"]) - else: - ParserElement._parse = self._save_context["packrat_parse"] - ParserElement._left_recursion_enabled = self._save_context[ - "recursion_enabled" - ] - - __compat__.collect_all_And_tokens = self._save_context["__compat__"] - - return self - - def copy(self): - ret = type(self)() - ret._save_context.update(self._save_context) - return ret - - def __enter__(self): - return self.save() - - def __exit__(self, *args): - self.restore() - - class TestParseResultsAsserts: - """ - A mixin class to add parse results assertion methods to normal unittest.TestCase classes. - """ - - def assertParseResultsEquals( - self, result, expected_list=None, expected_dict=None, msg=None - ): - """ - Unit test assertion to compare a :class:`ParseResults` object with an optional ``expected_list``, - and compare any defined results names with an optional ``expected_dict``. - """ - if expected_list is not None: - self.assertEqual(expected_list, result.as_list(), msg=msg) - if expected_dict is not None: - self.assertEqual(expected_dict, result.as_dict(), msg=msg) - - def assertParseAndCheckList( - self, expr, test_string, expected_list, msg=None, verbose=True - ): - """ - Convenience wrapper assert to test a parser element and input string, and assert that - the resulting ``ParseResults.asList()`` is equal to the ``expected_list``. - """ - result = expr.parse_string(test_string, parse_all=True) - if verbose: - print(result.dump()) - else: - print(result.as_list()) - self.assertParseResultsEquals(result, expected_list=expected_list, msg=msg) - - def assertParseAndCheckDict( - self, expr, test_string, expected_dict, msg=None, verbose=True - ): - """ - Convenience wrapper assert to test a parser element and input string, and assert that - the resulting ``ParseResults.asDict()`` is equal to the ``expected_dict``. - """ - result = expr.parse_string(test_string, parseAll=True) - if verbose: - print(result.dump()) - else: - print(result.as_list()) - self.assertParseResultsEquals(result, expected_dict=expected_dict, msg=msg) - - def assertRunTestResults( - self, run_tests_report, expected_parse_results=None, msg=None - ): - """ - Unit test assertion to evaluate output of ``ParserElement.runTests()``. If a list of - list-dict tuples is given as the ``expected_parse_results`` argument, then these are zipped - with the report tuples returned by ``runTests`` and evaluated using ``assertParseResultsEquals``. - Finally, asserts that the overall ``runTests()`` success value is ``True``. - - :param run_tests_report: tuple(bool, [tuple(str, ParseResults or Exception)]) returned from runTests - :param expected_parse_results (optional): [tuple(str, list, dict, Exception)] - """ - run_test_success, run_test_results = run_tests_report - - if expected_parse_results is not None: - merged = [ - (*rpt, expected) - for rpt, expected in zip(run_test_results, expected_parse_results) - ] - for test_string, result, expected in merged: - # expected should be a tuple containing a list and/or a dict or an exception, - # and optional failure message string - # an empty tuple will skip any result validation - fail_msg = next( - (exp for exp in expected if isinstance(exp, str)), None - ) - expected_exception = next( - ( - exp - for exp in expected - if isinstance(exp, type) and issubclass(exp, Exception) - ), - None, - ) - if expected_exception is not None: - with self.assertRaises( - expected_exception=expected_exception, msg=fail_msg or msg - ): - if isinstance(result, Exception): - raise result - else: - expected_list = next( - (exp for exp in expected if isinstance(exp, list)), None - ) - expected_dict = next( - (exp for exp in expected if isinstance(exp, dict)), None - ) - if (expected_list, expected_dict) != (None, None): - self.assertParseResultsEquals( - result, - expected_list=expected_list, - expected_dict=expected_dict, - msg=fail_msg or msg, - ) - else: - # warning here maybe? - print("no validation for {!r}".format(test_string)) - - # do this last, in case some specific test results can be reported instead - self.assertTrue( - run_test_success, msg=msg if msg is not None else "failed runTests" - ) - - @contextmanager - def assertRaisesParseException(self, exc_type=ParseException, msg=None): - with self.assertRaises(exc_type, msg=msg): - yield - - @staticmethod - def with_line_numbers( - s: str, - start_line: typing.Optional[int] = None, - end_line: typing.Optional[int] = None, - expand_tabs: bool = True, - eol_mark: str = "|", - mark_spaces: typing.Optional[str] = None, - mark_control: typing.Optional[str] = None, - ) -> str: - """ - Helpful method for debugging a parser - prints a string with line and column numbers. - (Line and column numbers are 1-based.) - - :param s: tuple(bool, str - string to be printed with line and column numbers - :param start_line: int - (optional) starting line number in s to print (default=1) - :param end_line: int - (optional) ending line number in s to print (default=len(s)) - :param expand_tabs: bool - (optional) expand tabs to spaces, to match the pyparsing default - :param eol_mark: str - (optional) string to mark the end of lines, helps visualize trailing spaces (default="|") - :param mark_spaces: str - (optional) special character to display in place of spaces - :param mark_control: str - (optional) convert non-printing control characters to a placeholding - character; valid values: - - "unicode" - replaces control chars with Unicode symbols, such as "␍" and "␊" - - any single character string - replace control characters with given string - - None (default) - string is displayed as-is - - :return: str - input string with leading line numbers and column number headers - """ - if expand_tabs: - s = s.expandtabs() - if mark_control is not None: - if mark_control == "unicode": - tbl = str.maketrans( - {c: u for c, u in zip(range(0, 33), range(0x2400, 0x2433))} - | {127: 0x2421} - ) - eol_mark = "" - else: - tbl = str.maketrans( - {c: mark_control for c in list(range(0, 32)) + [127]} - ) - s = s.translate(tbl) - if mark_spaces is not None and mark_spaces != " ": - if mark_spaces == "unicode": - tbl = str.maketrans({9: 0x2409, 32: 0x2423}) - s = s.translate(tbl) - else: - s = s.replace(" ", mark_spaces) - if start_line is None: - start_line = 1 - if end_line is None: - end_line = len(s) - end_line = min(end_line, len(s)) - start_line = min(max(1, start_line), end_line) - - if mark_control != "unicode": - s_lines = s.splitlines()[start_line - 1 : end_line] - else: - s_lines = [line + "␊" for line in s.split("␊")[start_line - 1 : end_line]] - if not s_lines: - return "" - - lineno_width = len(str(end_line)) - max_line_len = max(len(line) for line in s_lines) - lead = " " * (lineno_width + 1) - if max_line_len >= 99: - header0 = ( - lead - + "".join( - "{}{}".format(" " * 99, (i + 1) % 100) - for i in range(max(max_line_len // 100, 1)) - ) - + "\n" - ) - else: - header0 = "" - header1 = ( - header0 - + lead - + "".join( - " {}".format((i + 1) % 10) - for i in range(-(-max_line_len // 10)) - ) - + "\n" - ) - header2 = lead + "1234567890" * (-(-max_line_len // 10)) + "\n" - return ( - header1 - + header2 - + "\n".join( - "{:{}d}:{}{}".format(i, lineno_width, line, eol_mark) - for i, line in enumerate(s_lines, start=start_line) - ) - + "\n" - ) diff --git a/gestao_raul/Lib/site-packages/pip/_vendor/pyparsing/unicode.py b/gestao_raul/Lib/site-packages/pip/_vendor/pyparsing/unicode.py deleted file mode 100644 index 0652620..0000000 --- a/gestao_raul/Lib/site-packages/pip/_vendor/pyparsing/unicode.py +++ /dev/null @@ -1,352 +0,0 @@ -# unicode.py - -import sys -from itertools import filterfalse -from typing import List, Tuple, Union - - -class _lazyclassproperty: - def __init__(self, fn): - self.fn = fn - self.__doc__ = fn.__doc__ - self.__name__ = fn.__name__ - - def __get__(self, obj, cls): - if cls is None: - cls = type(obj) - if not hasattr(cls, "_intern") or any( - cls._intern is getattr(superclass, "_intern", []) - for superclass in cls.__mro__[1:] - ): - cls._intern = {} - attrname = self.fn.__name__ - if attrname not in cls._intern: - cls._intern[attrname] = self.fn(cls) - return cls._intern[attrname] - - -UnicodeRangeList = List[Union[Tuple[int, int], Tuple[int]]] - - -class unicode_set: - """ - A set of Unicode characters, for language-specific strings for - ``alphas``, ``nums``, ``alphanums``, and ``printables``. - A unicode_set is defined by a list of ranges in the Unicode character - set, in a class attribute ``_ranges``. Ranges can be specified using - 2-tuples or a 1-tuple, such as:: - - _ranges = [ - (0x0020, 0x007e), - (0x00a0, 0x00ff), - (0x0100,), - ] - - Ranges are left- and right-inclusive. A 1-tuple of (x,) is treated as (x, x). - - A unicode set can also be defined using multiple inheritance of other unicode sets:: - - class CJK(Chinese, Japanese, Korean): - pass - """ - - _ranges: UnicodeRangeList = [] - - @_lazyclassproperty - def _chars_for_ranges(cls): - ret = [] - for cc in cls.__mro__: - if cc is unicode_set: - break - for rr in getattr(cc, "_ranges", ()): - ret.extend(range(rr[0], rr[-1] + 1)) - return [chr(c) for c in sorted(set(ret))] - - @_lazyclassproperty - def printables(cls): - "all non-whitespace characters in this range" - return "".join(filterfalse(str.isspace, cls._chars_for_ranges)) - - @_lazyclassproperty - def alphas(cls): - "all alphabetic characters in this range" - return "".join(filter(str.isalpha, cls._chars_for_ranges)) - - @_lazyclassproperty - def nums(cls): - "all numeric digit characters in this range" - return "".join(filter(str.isdigit, cls._chars_for_ranges)) - - @_lazyclassproperty - def alphanums(cls): - "all alphanumeric characters in this range" - return cls.alphas + cls.nums - - @_lazyclassproperty - def identchars(cls): - "all characters in this range that are valid identifier characters, plus underscore '_'" - return "".join( - sorted( - set( - "".join(filter(str.isidentifier, cls._chars_for_ranges)) - + "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyzªµº" - + "ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõöøùúûüýþÿ" - + "_" - ) - ) - ) - - @_lazyclassproperty - def identbodychars(cls): - """ - all characters in this range that are valid identifier body characters, - plus the digits 0-9 - """ - return "".join( - sorted( - set( - cls.identchars - + "0123456789" - + "".join( - [c for c in cls._chars_for_ranges if ("_" + c).isidentifier()] - ) - ) - ) - ) - - -class pyparsing_unicode(unicode_set): - """ - A namespace class for defining common language unicode_sets. - """ - - # fmt: off - - # define ranges in language character sets - _ranges: UnicodeRangeList = [ - (0x0020, sys.maxunicode), - ] - - class BasicMultilingualPlane(unicode_set): - "Unicode set for the Basic Multilingual Plane" - _ranges: UnicodeRangeList = [ - (0x0020, 0xFFFF), - ] - - class Latin1(unicode_set): - "Unicode set for Latin-1 Unicode Character Range" - _ranges: UnicodeRangeList = [ - (0x0020, 0x007E), - (0x00A0, 0x00FF), - ] - - class LatinA(unicode_set): - "Unicode set for Latin-A Unicode Character Range" - _ranges: UnicodeRangeList = [ - (0x0100, 0x017F), - ] - - class LatinB(unicode_set): - "Unicode set for Latin-B Unicode Character Range" - _ranges: UnicodeRangeList = [ - (0x0180, 0x024F), - ] - - class Greek(unicode_set): - "Unicode set for Greek Unicode Character Ranges" - _ranges: UnicodeRangeList = [ - (0x0342, 0x0345), - (0x0370, 0x0377), - (0x037A, 0x037F), - (0x0384, 0x038A), - (0x038C,), - (0x038E, 0x03A1), - (0x03A3, 0x03E1), - (0x03F0, 0x03FF), - (0x1D26, 0x1D2A), - (0x1D5E,), - (0x1D60,), - (0x1D66, 0x1D6A), - (0x1F00, 0x1F15), - (0x1F18, 0x1F1D), - (0x1F20, 0x1F45), - (0x1F48, 0x1F4D), - (0x1F50, 0x1F57), - (0x1F59,), - (0x1F5B,), - (0x1F5D,), - (0x1F5F, 0x1F7D), - (0x1F80, 0x1FB4), - (0x1FB6, 0x1FC4), - (0x1FC6, 0x1FD3), - (0x1FD6, 0x1FDB), - (0x1FDD, 0x1FEF), - (0x1FF2, 0x1FF4), - (0x1FF6, 0x1FFE), - (0x2129,), - (0x2719, 0x271A), - (0xAB65,), - (0x10140, 0x1018D), - (0x101A0,), - (0x1D200, 0x1D245), - (0x1F7A1, 0x1F7A7), - ] - - class Cyrillic(unicode_set): - "Unicode set for Cyrillic Unicode Character Range" - _ranges: UnicodeRangeList = [ - (0x0400, 0x052F), - (0x1C80, 0x1C88), - (0x1D2B,), - (0x1D78,), - (0x2DE0, 0x2DFF), - (0xA640, 0xA672), - (0xA674, 0xA69F), - (0xFE2E, 0xFE2F), - ] - - class Chinese(unicode_set): - "Unicode set for Chinese Unicode Character Range" - _ranges: UnicodeRangeList = [ - (0x2E80, 0x2E99), - (0x2E9B, 0x2EF3), - (0x31C0, 0x31E3), - (0x3400, 0x4DB5), - (0x4E00, 0x9FEF), - (0xA700, 0xA707), - (0xF900, 0xFA6D), - (0xFA70, 0xFAD9), - (0x16FE2, 0x16FE3), - (0x1F210, 0x1F212), - (0x1F214, 0x1F23B), - (0x1F240, 0x1F248), - (0x20000, 0x2A6D6), - (0x2A700, 0x2B734), - (0x2B740, 0x2B81D), - (0x2B820, 0x2CEA1), - (0x2CEB0, 0x2EBE0), - (0x2F800, 0x2FA1D), - ] - - class Japanese(unicode_set): - "Unicode set for Japanese Unicode Character Range, combining Kanji, Hiragana, and Katakana ranges" - _ranges: UnicodeRangeList = [] - - class Kanji(unicode_set): - "Unicode set for Kanji Unicode Character Range" - _ranges: UnicodeRangeList = [ - (0x4E00, 0x9FBF), - (0x3000, 0x303F), - ] - - class Hiragana(unicode_set): - "Unicode set for Hiragana Unicode Character Range" - _ranges: UnicodeRangeList = [ - (0x3041, 0x3096), - (0x3099, 0x30A0), - (0x30FC,), - (0xFF70,), - (0x1B001,), - (0x1B150, 0x1B152), - (0x1F200,), - ] - - class Katakana(unicode_set): - "Unicode set for Katakana Unicode Character Range" - _ranges: UnicodeRangeList = [ - (0x3099, 0x309C), - (0x30A0, 0x30FF), - (0x31F0, 0x31FF), - (0x32D0, 0x32FE), - (0xFF65, 0xFF9F), - (0x1B000,), - (0x1B164, 0x1B167), - (0x1F201, 0x1F202), - (0x1F213,), - ] - - class Hangul(unicode_set): - "Unicode set for Hangul (Korean) Unicode Character Range" - _ranges: UnicodeRangeList = [ - (0x1100, 0x11FF), - (0x302E, 0x302F), - (0x3131, 0x318E), - (0x3200, 0x321C), - (0x3260, 0x327B), - (0x327E,), - (0xA960, 0xA97C), - (0xAC00, 0xD7A3), - (0xD7B0, 0xD7C6), - (0xD7CB, 0xD7FB), - (0xFFA0, 0xFFBE), - (0xFFC2, 0xFFC7), - (0xFFCA, 0xFFCF), - (0xFFD2, 0xFFD7), - (0xFFDA, 0xFFDC), - ] - - Korean = Hangul - - class CJK(Chinese, Japanese, Hangul): - "Unicode set for combined Chinese, Japanese, and Korean (CJK) Unicode Character Range" - - class Thai(unicode_set): - "Unicode set for Thai Unicode Character Range" - _ranges: UnicodeRangeList = [ - (0x0E01, 0x0E3A), - (0x0E3F, 0x0E5B) - ] - - class Arabic(unicode_set): - "Unicode set for Arabic Unicode Character Range" - _ranges: UnicodeRangeList = [ - (0x0600, 0x061B), - (0x061E, 0x06FF), - (0x0700, 0x077F), - ] - - class Hebrew(unicode_set): - "Unicode set for Hebrew Unicode Character Range" - _ranges: UnicodeRangeList = [ - (0x0591, 0x05C7), - (0x05D0, 0x05EA), - (0x05EF, 0x05F4), - (0xFB1D, 0xFB36), - (0xFB38, 0xFB3C), - (0xFB3E,), - (0xFB40, 0xFB41), - (0xFB43, 0xFB44), - (0xFB46, 0xFB4F), - ] - - class Devanagari(unicode_set): - "Unicode set for Devanagari Unicode Character Range" - _ranges: UnicodeRangeList = [ - (0x0900, 0x097F), - (0xA8E0, 0xA8FF) - ] - - # fmt: on - - -pyparsing_unicode.Japanese._ranges = ( - pyparsing_unicode.Japanese.Kanji._ranges - + pyparsing_unicode.Japanese.Hiragana._ranges - + pyparsing_unicode.Japanese.Katakana._ranges -) - -pyparsing_unicode.BMP = pyparsing_unicode.BasicMultilingualPlane - -# add language identifiers using language Unicode -pyparsing_unicode.العربية = pyparsing_unicode.Arabic -pyparsing_unicode.中文 = pyparsing_unicode.Chinese -pyparsing_unicode.кириллица = pyparsing_unicode.Cyrillic -pyparsing_unicode.Ελληνικά = pyparsing_unicode.Greek -pyparsing_unicode.עִברִית = pyparsing_unicode.Hebrew -pyparsing_unicode.日本語 = pyparsing_unicode.Japanese -pyparsing_unicode.Japanese.漢字 = pyparsing_unicode.Japanese.Kanji -pyparsing_unicode.Japanese.カタカナ = pyparsing_unicode.Japanese.Katakana -pyparsing_unicode.Japanese.ひらがな = pyparsing_unicode.Japanese.Hiragana -pyparsing_unicode.한국어 = pyparsing_unicode.Korean -pyparsing_unicode.ไทย = pyparsing_unicode.Thai -pyparsing_unicode.देवनागरी = pyparsing_unicode.Devanagari diff --git a/gestao_raul/Lib/site-packages/pip/_vendor/pyparsing/util.py b/gestao_raul/Lib/site-packages/pip/_vendor/pyparsing/util.py deleted file mode 100644 index 34ce092..0000000 --- a/gestao_raul/Lib/site-packages/pip/_vendor/pyparsing/util.py +++ /dev/null @@ -1,235 +0,0 @@ -# util.py -import warnings -import types -import collections -import itertools -from functools import lru_cache -from typing import List, Union, Iterable - -_bslash = chr(92) - - -class __config_flags: - """Internal class for defining compatibility and debugging flags""" - - _all_names: List[str] = [] - _fixed_names: List[str] = [] - _type_desc = "configuration" - - @classmethod - def _set(cls, dname, value): - if dname in cls._fixed_names: - warnings.warn( - "{}.{} {} is {} and cannot be overridden".format( - cls.__name__, - dname, - cls._type_desc, - str(getattr(cls, dname)).upper(), - ) - ) - return - if dname in cls._all_names: - setattr(cls, dname, value) - else: - raise ValueError("no such {} {!r}".format(cls._type_desc, dname)) - - enable = classmethod(lambda cls, name: cls._set(name, True)) - disable = classmethod(lambda cls, name: cls._set(name, False)) - - -@lru_cache(maxsize=128) -def col(loc: int, strg: str) -> int: - """ - Returns current column within a string, counting newlines as line separators. - The first column is number 1. - - Note: the default parsing behavior is to expand tabs in the input string - before starting the parsing process. See - :class:`ParserElement.parseString` for more - information on parsing strings containing ```` s, and suggested - methods to maintain a consistent view of the parsed string, the parse - location, and line and column positions within the parsed string. - """ - s = strg - return 1 if 0 < loc < len(s) and s[loc - 1] == "\n" else loc - s.rfind("\n", 0, loc) - - -@lru_cache(maxsize=128) -def lineno(loc: int, strg: str) -> int: - """Returns current line number within a string, counting newlines as line separators. - The first line is number 1. - - Note - the default parsing behavior is to expand tabs in the input string - before starting the parsing process. See :class:`ParserElement.parseString` - for more information on parsing strings containing ```` s, and - suggested methods to maintain a consistent view of the parsed string, the - parse location, and line and column positions within the parsed string. - """ - return strg.count("\n", 0, loc) + 1 - - -@lru_cache(maxsize=128) -def line(loc: int, strg: str) -> str: - """ - Returns the line of text containing loc within a string, counting newlines as line separators. - """ - last_cr = strg.rfind("\n", 0, loc) - next_cr = strg.find("\n", loc) - return strg[last_cr + 1 : next_cr] if next_cr >= 0 else strg[last_cr + 1 :] - - -class _UnboundedCache: - def __init__(self): - cache = {} - cache_get = cache.get - self.not_in_cache = not_in_cache = object() - - def get(_, key): - return cache_get(key, not_in_cache) - - def set_(_, key, value): - cache[key] = value - - def clear(_): - cache.clear() - - self.size = None - self.get = types.MethodType(get, self) - self.set = types.MethodType(set_, self) - self.clear = types.MethodType(clear, self) - - -class _FifoCache: - def __init__(self, size): - self.not_in_cache = not_in_cache = object() - cache = collections.OrderedDict() - cache_get = cache.get - - def get(_, key): - return cache_get(key, not_in_cache) - - def set_(_, key, value): - cache[key] = value - while len(cache) > size: - cache.popitem(last=False) - - def clear(_): - cache.clear() - - self.size = size - self.get = types.MethodType(get, self) - self.set = types.MethodType(set_, self) - self.clear = types.MethodType(clear, self) - - -class LRUMemo: - """ - A memoizing mapping that retains `capacity` deleted items - - The memo tracks retained items by their access order; once `capacity` items - are retained, the least recently used item is discarded. - """ - - def __init__(self, capacity): - self._capacity = capacity - self._active = {} - self._memory = collections.OrderedDict() - - def __getitem__(self, key): - try: - return self._active[key] - except KeyError: - self._memory.move_to_end(key) - return self._memory[key] - - def __setitem__(self, key, value): - self._memory.pop(key, None) - self._active[key] = value - - def __delitem__(self, key): - try: - value = self._active.pop(key) - except KeyError: - pass - else: - while len(self._memory) >= self._capacity: - self._memory.popitem(last=False) - self._memory[key] = value - - def clear(self): - self._active.clear() - self._memory.clear() - - -class UnboundedMemo(dict): - """ - A memoizing mapping that retains all deleted items - """ - - def __delitem__(self, key): - pass - - -def _escape_regex_range_chars(s: str) -> str: - # escape these chars: ^-[] - for c in r"\^-[]": - s = s.replace(c, _bslash + c) - s = s.replace("\n", r"\n") - s = s.replace("\t", r"\t") - return str(s) - - -def _collapse_string_to_ranges( - s: Union[str, Iterable[str]], re_escape: bool = True -) -> str: - def is_consecutive(c): - c_int = ord(c) - is_consecutive.prev, prev = c_int, is_consecutive.prev - if c_int - prev > 1: - is_consecutive.value = next(is_consecutive.counter) - return is_consecutive.value - - is_consecutive.prev = 0 - is_consecutive.counter = itertools.count() - is_consecutive.value = -1 - - def escape_re_range_char(c): - return "\\" + c if c in r"\^-][" else c - - def no_escape_re_range_char(c): - return c - - if not re_escape: - escape_re_range_char = no_escape_re_range_char - - ret = [] - s = "".join(sorted(set(s))) - if len(s) > 3: - for _, chars in itertools.groupby(s, key=is_consecutive): - first = last = next(chars) - last = collections.deque( - itertools.chain(iter([last]), chars), maxlen=1 - ).pop() - if first == last: - ret.append(escape_re_range_char(first)) - else: - sep = "" if ord(last) == ord(first) + 1 else "-" - ret.append( - "{}{}{}".format( - escape_re_range_char(first), sep, escape_re_range_char(last) - ) - ) - else: - ret = [escape_re_range_char(c) for c in s] - - return "".join(ret) - - -def _flatten(ll: list) -> list: - ret = [] - for i in ll: - if isinstance(i, list): - ret.extend(_flatten(i)) - else: - ret.append(i) - return ret diff --git a/gestao_raul/Lib/site-packages/pip/_vendor/pyproject_hooks/__init__.py b/gestao_raul/Lib/site-packages/pip/_vendor/pyproject_hooks/__init__.py index ddfcf7f..746b89f 100644 --- a/gestao_raul/Lib/site-packages/pip/_vendor/pyproject_hooks/__init__.py +++ b/gestao_raul/Lib/site-packages/pip/_vendor/pyproject_hooks/__init__.py @@ -1,8 +1,9 @@ """Wrappers to call pyproject.toml-based build backend hooks. """ +from typing import TYPE_CHECKING + from ._impl import ( - BackendInvalid, BackendUnavailable, BuildBackendHookCaller, HookMissing, @@ -11,13 +12,20 @@ from ._impl import ( quiet_subprocess_runner, ) -__version__ = '1.0.0' +__version__ = "1.2.0" __all__ = [ - 'BackendUnavailable', - 'BackendInvalid', - 'HookMissing', - 'UnsupportedOperation', - 'default_subprocess_runner', - 'quiet_subprocess_runner', - 'BuildBackendHookCaller', + "BackendUnavailable", + "BackendInvalid", + "HookMissing", + "UnsupportedOperation", + "default_subprocess_runner", + "quiet_subprocess_runner", + "BuildBackendHookCaller", ] + +BackendInvalid = BackendUnavailable # Deprecated alias, previously a separate exception + +if TYPE_CHECKING: + from ._impl import SubprocessRunner + + __all__ += ["SubprocessRunner"] diff --git a/gestao_raul/Lib/site-packages/pip/_vendor/pyproject_hooks/__pycache__/__init__.cpython-310.pyc b/gestao_raul/Lib/site-packages/pip/_vendor/pyproject_hooks/__pycache__/__init__.cpython-310.pyc index 1039840ed2d61401d9c23c8e0b264f3bd59d0391..46f2659d5121e8faaf0cdbe59e11800dba519c01 100644 GIT binary patch delta 367 zcmX|-&q~8U5XN`5o2E&cprBx(2d}xPcu?p;p|NNYinR9N5{PYfiN*XWn^y7U(R1kC zLvP|y@Z=Nt2zi6Pf*`otg9GzpzM0`0m~Zl_Ihk#nNXD}F9(~}#X*R}EF+>pqhGR%D z#ei6ak+?YBZY2gaq|~SxAy!=iwK$=5j>W!Q(c?;DQyUPsSS^BML@j0vkV@Aq?oOKO zkPD@KeRI_byo-)^+3lULKy|Cd*UR(a-hrzNB6aDsN8vqBSvP$c#SwRGi!@~@5L?X zU@TstaU|4J);@1YY^qw}hj}f3m~)Z)k361b{#h2z6Q0g;zu#|nyu}KJJ6m#*pn7E& O6Qc&iB)AR^Ccl5qMN~2X delta 239 zcmdnSdWwZFpO=@50SKypgr>h{oX96*X947;Fhnt=Fs3l&Fy=BvG37ExG3T;GvE;Hw zvF5TxvE{NyvFCC`aWFEZFh_BwGo-LAVvOQSVGU-`WScn2PK*&~f+qVdKBvUw?9{vz z&%Cn4oXnJoZ`yeb^b9oFiaGa@_1 diff --git a/gestao_raul/Lib/site-packages/pip/_vendor/pyproject_hooks/__pycache__/_compat.cpython-310.pyc b/gestao_raul/Lib/site-packages/pip/_vendor/pyproject_hooks/__pycache__/_compat.cpython-310.pyc deleted file mode 100644 index f6a09ba506a3938de1bbc1b4ec92b09cd2c7a609..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 337 zcmY*T%}T^D5Khw8UG@j`F?w(d9z{gZqj-_MltSn>am_aEgd|-lzJYJzE9L5G-$3@{ zWbvQ_^UZwoO)?)WmotL#{=MFQVEu~ZZ!jcxnC=Qekdg>0n5HF_bjL)}X7=JVNyef6lOFQcCzvO6`*wmZ=f@^UzssXZ#oczmbcNCixyHcWiz&* G=j;cd7hK)| diff --git a/gestao_raul/Lib/site-packages/pip/_vendor/pyproject_hooks/__pycache__/_impl.cpython-310.pyc b/gestao_raul/Lib/site-packages/pip/_vendor/pyproject_hooks/__pycache__/_impl.cpython-310.pyc index d01369a43b6cc1b2da7b84a91929c18028e36b46..86d4edd6745a1b3abe7136132e6b20db18aba7fd 100644 GIT binary patch literal 14088 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 delta 3770 zcma(UTWlOxb?)r!cy@NzyWU;z!_T$jCRrzSoQLhiHIW@Br76wEq)8JtDU2P_7UkJX%Xg;0lRK5d!rCAtVYCNTpwuMuLwb1^%cM385Af&bhOW z5lw(2XyVc$$6u#bp+0`^hb0{a%RZ-sq~#$g{9 z`y}n43EH|w3Ms&nGzD0irfCLbXMnejwy#Mc+P*3m+9-Km%60PJle7Gi+{u5gd~4G6 zS<}~CrB-z2T=n{5kS4nzmE4 z3|3sI@E`e3cIb<&?3l(i+p31)OfMxjm(Zn7ZsN=BirvaE!fl#R+Q&R9znff3E z3RS>oKYv@jJXb>Itp{;jld$e%-j>O-WJpwcUfLk}4dMnIRxFv*#nSZ+*;Q<_GQ+xo ztpk>PoUu42=*Y@ivYE| zVHAECq?gP}WlMvI>LBun(Cz~a4SyKg1Y!Fyw2`gQvVJ(uDST5q!!HMh#)O+bwjV_Z zHGw(Hx^7g9^CncMaCI2ZgpTbTBI_RhZlE{E4&m{3@opP41P8*KBgio%%#Z;c$88$` zsLo~m%F1J_lVOrXB3Kt3i+y8%rWU%$Xn4VTh)ir&9lCp z5`?UTkTU`&A_zHT8R72)f9rRBrA5l`g!=mdo2Tq39JyihCVU@;S-nwaR+SywDKW|4 z4|T;cB(?@X_bZU@n9L@)9RBq)C_ud7s&0mZj3qB%)uSesZ&*JOYT0)veLUNLX zln_Zkhf!p97IPKEk{L&??@IimXzNM`^-%?ytYZ49pQ>xpDk(sFry6vdCfZ2@REJY7 zAP0i9OSE=U2*6IJ-J-FRf(~5R(n%p$=fZ|g3ZXie*UrPh<+bx>z_6i{LWH(8V?T%6 zLxxX3>n8cj{YiQ0Y5w=vgsNxZ$=`h`enNf@{e;Rr3qP)ITMMjY8nn!EvMUb^x}>&2 zys8%Qz|_0?Sfy+`C2PKRd>P%vwxmk%r9Sv(@@V%2>==fEeHMTlo?a+dsDa%P8V?)b zXOep@x21N=nX{^fdDAQ{IK}CT35gXS55B}+Kp>ih$`-0sNPGb)!i4jPJuKxJ*xC4P zXi=yfStVFMGMJ+J5Esp(oA(?^^S>m|k^Ou$wak6#pPjl0ufY8xR9*%gE;eS~Xe^u- zdtti9tP(UV!!zVds1GkE`L-J557NKN2zwqW7C2*{2k>p~W`=oB+d(qSf7mz7Uu}!= zXP+3!VCeA~WzMadIhw^-UbY?fB7eEJjc@K9E5t2$GjHEh#y%GFt$86b0` z-eF3pq(SF2(7pppv@$gazC$`P{Lb!_x;ST=mGk_)Y#aZ2N4Ff2`P&_5_=T>;xM#|? zFO+T4gytW>N;V+MY_tBzd-y2$iKy~mf4AZ)vaSc8GHKzj?8 zxI@*b3Tcvwwz)I{m3hc7Yy=Ze%YP%ht>;Pp$-WfJ@=+=w{G!Zb^c#cp|O zP$9%bRNGa=>xO&*@NJGpLo7J`B`h1K3oW8Sm24Tqi+#tnB9L>w;y9%3-2a`jJn!AT zdoL!5Q3MUnJ3#vY=_Y`sVQ@JGsW}$F`UPFF|Cy4zn|n`_eRC+{I)Vy<1|s=8IL7Y}sswF7^caw9@WW5&_~)pO`u|HFR*qIC0_hb0>`x6O*4gl|Sjmx2WFUn3_2M z42$#9p&nISi{tz&hq}gbP;#LqSFNoU>qhFm7N$)xttJv?ZnP^`ap%_>(}0C2DWV$&2Ko9l!0ivG@Un00-#ro%??6lYb2QxzKm zkkcQTh~h{cM=-$OINYCUNZM66$zjsQ_=ksc$*Ab#is#Z18gzG34? zhNHLKgk4MjSnk$|)}kwN6n6iTQwa6cj$K;ULqUcT*y{jt?cyI9Z+y9g)H?uN9r`?f zZzxM%= (3, 11): - import tomllib -else: - from pip._vendor import tomli as tomllib diff --git a/gestao_raul/Lib/site-packages/pip/_vendor/pyproject_hooks/_impl.py b/gestao_raul/Lib/site-packages/pip/_vendor/pyproject_hooks/_impl.py index 37b0e65..d1e9d7b 100644 --- a/gestao_raul/Lib/site-packages/pip/_vendor/pyproject_hooks/_impl.py +++ b/gestao_raul/Lib/site-packages/pip/_vendor/pyproject_hooks/_impl.py @@ -6,48 +6,72 @@ from contextlib import contextmanager from os.path import abspath from os.path import join as pjoin from subprocess import STDOUT, check_call, check_output +from typing import TYPE_CHECKING, Any, Iterator, Mapping, Optional, Sequence from ._in_process import _in_proc_script_path +if TYPE_CHECKING: + from typing import Protocol -def write_json(obj, path, **kwargs): - with open(path, 'w', encoding='utf-8') as f: + class SubprocessRunner(Protocol): + """A protocol for the subprocess runner.""" + + def __call__( + self, + cmd: Sequence[str], + cwd: Optional[str] = None, + extra_environ: Optional[Mapping[str, str]] = None, + ) -> None: + ... + + +def write_json(obj: Mapping[str, Any], path: str, **kwargs) -> None: + with open(path, "w", encoding="utf-8") as f: json.dump(obj, f, **kwargs) -def read_json(path): - with open(path, encoding='utf-8') as f: +def read_json(path: str) -> Mapping[str, Any]: + with open(path, encoding="utf-8") as f: return json.load(f) class BackendUnavailable(Exception): """Will be raised if the backend cannot be imported in the hook process.""" - def __init__(self, traceback): - self.traceback = traceback - -class BackendInvalid(Exception): - """Will be raised if the backend is invalid.""" - def __init__(self, backend_name, backend_path, message): - super().__init__(message) + def __init__( + self, + traceback: str, + message: Optional[str] = None, + backend_name: Optional[str] = None, + backend_path: Optional[Sequence[str]] = None, + ) -> None: + # Preserving arg order for the sake of API backward compatibility. self.backend_name = backend_name self.backend_path = backend_path + self.traceback = traceback + super().__init__(message or "Error while importing backend") class HookMissing(Exception): """Will be raised on missing hooks (if a fallback can't be used).""" - def __init__(self, hook_name): + + def __init__(self, hook_name: str) -> None: super().__init__(hook_name) self.hook_name = hook_name class UnsupportedOperation(Exception): """May be raised by build_sdist if the backend indicates that it can't.""" - def __init__(self, traceback): + + def __init__(self, traceback: str) -> None: self.traceback = traceback -def default_subprocess_runner(cmd, cwd=None, extra_environ=None): +def default_subprocess_runner( + cmd: Sequence[str], + cwd: Optional[str] = None, + extra_environ: Optional[Mapping[str, str]] = None, +) -> None: """The default method of calling the wrapper subprocess. This uses :func:`subprocess.check_call` under the hood. @@ -59,7 +83,11 @@ def default_subprocess_runner(cmd, cwd=None, extra_environ=None): check_call(cmd, cwd=cwd, env=env) -def quiet_subprocess_runner(cmd, cwd=None, extra_environ=None): +def quiet_subprocess_runner( + cmd: Sequence[str], + cwd: Optional[str] = None, + extra_environ: Optional[Mapping[str, str]] = None, +) -> None: """Call the subprocess while suppressing output. This uses :func:`subprocess.check_output` under the hood. @@ -71,7 +99,7 @@ def quiet_subprocess_runner(cmd, cwd=None, extra_environ=None): check_output(cmd, cwd=cwd, env=env, stderr=STDOUT) -def norm_and_check(source_tree, requested): +def norm_and_check(source_tree: str, requested: str) -> str: """Normalise and check a backend path. Ensure that the requested backend path is specified as a relative path, @@ -96,17 +124,16 @@ def norm_and_check(source_tree, requested): class BuildBackendHookCaller: - """A wrapper to call the build backend hooks for a source directory. - """ + """A wrapper to call the build backend hooks for a source directory.""" def __init__( - self, - source_dir, - build_backend, - backend_path=None, - runner=None, - python_executable=None, - ): + self, + source_dir: str, + build_backend: str, + backend_path: Optional[Sequence[str]] = None, + runner: Optional["SubprocessRunner"] = None, + python_executable: Optional[str] = None, + ) -> None: """ :param source_dir: The source directory to invoke the build backend for :param build_backend: The build backend spec @@ -121,9 +148,7 @@ class BuildBackendHookCaller: self.source_dir = abspath(source_dir) self.build_backend = build_backend if backend_path: - backend_path = [ - norm_and_check(self.source_dir, p) for p in backend_path - ] + backend_path = [norm_and_check(self.source_dir, p) for p in backend_path] self.backend_path = backend_path self._subprocess_runner = runner if not python_executable: @@ -131,10 +156,12 @@ class BuildBackendHookCaller: self.python_executable = python_executable @contextmanager - def subprocess_runner(self, runner): + def subprocess_runner(self, runner: "SubprocessRunner") -> Iterator[None]: """A context manager for temporarily overriding the default :ref:`subprocess runner `. + :param runner: The new subprocess runner to use within the context. + .. code-block:: python hook_caller = BuildBackendHookCaller(...) @@ -148,33 +175,44 @@ class BuildBackendHookCaller: finally: self._subprocess_runner = prev - def _supported_features(self): + def _supported_features(self) -> Sequence[str]: """Return the list of optional features supported by the backend.""" - return self._call_hook('_supported_features', {}) + return self._call_hook("_supported_features", {}) - def get_requires_for_build_wheel(self, config_settings=None): + def get_requires_for_build_wheel( + self, + config_settings: Optional[Mapping[str, Any]] = None, + ) -> Sequence[str]: """Get additional dependencies required for building a wheel. + :param config_settings: The configuration settings for the build backend :returns: A list of :pep:`dependency specifiers <508>`. - :rtype: list[str] .. admonition:: Fallback If the build backend does not defined a hook with this name, an empty list will be returned. """ - return self._call_hook('get_requires_for_build_wheel', { - 'config_settings': config_settings - }) + return self._call_hook( + "get_requires_for_build_wheel", {"config_settings": config_settings} + ) def prepare_metadata_for_build_wheel( - self, metadata_directory, config_settings=None, - _allow_fallback=True): + self, + metadata_directory: str, + config_settings: Optional[Mapping[str, Any]] = None, + _allow_fallback: bool = True, + ) -> str: """Prepare a ``*.dist-info`` folder with metadata for this project. + :param metadata_directory: The directory to write the metadata to + :param config_settings: The configuration settings for the build backend + :param _allow_fallback: + Whether to allow the fallback to building a wheel and extracting + the metadata from it. Should be passed as a keyword argument only. + :returns: Name of the newly created subfolder within ``metadata_directory``, containing the metadata. - :rtype: str .. admonition:: Fallback @@ -183,17 +221,26 @@ class BuildBackendHookCaller: wheel via the ``build_wheel`` hook and the dist-info extracted from that will be returned. """ - return self._call_hook('prepare_metadata_for_build_wheel', { - 'metadata_directory': abspath(metadata_directory), - 'config_settings': config_settings, - '_allow_fallback': _allow_fallback, - }) + return self._call_hook( + "prepare_metadata_for_build_wheel", + { + "metadata_directory": abspath(metadata_directory), + "config_settings": config_settings, + "_allow_fallback": _allow_fallback, + }, + ) def build_wheel( - self, wheel_directory, config_settings=None, - metadata_directory=None): + self, + wheel_directory: str, + config_settings: Optional[Mapping[str, Any]] = None, + metadata_directory: Optional[str] = None, + ) -> str: """Build a wheel from this project. + :param wheel_directory: The directory to write the wheel to + :param config_settings: The configuration settings for the build backend + :param metadata_directory: The directory to reuse existing metadata from :returns: The name of the newly created wheel within ``wheel_directory``. @@ -206,35 +253,48 @@ class BuildBackendHookCaller: """ if metadata_directory is not None: metadata_directory = abspath(metadata_directory) - return self._call_hook('build_wheel', { - 'wheel_directory': abspath(wheel_directory), - 'config_settings': config_settings, - 'metadata_directory': metadata_directory, - }) + return self._call_hook( + "build_wheel", + { + "wheel_directory": abspath(wheel_directory), + "config_settings": config_settings, + "metadata_directory": metadata_directory, + }, + ) - def get_requires_for_build_editable(self, config_settings=None): + def get_requires_for_build_editable( + self, + config_settings: Optional[Mapping[str, Any]] = None, + ) -> Sequence[str]: """Get additional dependencies required for building an editable wheel. + :param config_settings: The configuration settings for the build backend :returns: A list of :pep:`dependency specifiers <508>`. - :rtype: list[str] .. admonition:: Fallback If the build backend does not defined a hook with this name, an empty list will be returned. """ - return self._call_hook('get_requires_for_build_editable', { - 'config_settings': config_settings - }) + return self._call_hook( + "get_requires_for_build_editable", {"config_settings": config_settings} + ) def prepare_metadata_for_build_editable( - self, metadata_directory, config_settings=None, - _allow_fallback=True): + self, + metadata_directory: str, + config_settings: Optional[Mapping[str, Any]] = None, + _allow_fallback: bool = True, + ) -> Optional[str]: """Prepare a ``*.dist-info`` folder with metadata for this project. + :param metadata_directory: The directory to write the metadata to + :param config_settings: The configuration settings for the build backend + :param _allow_fallback: + Whether to allow the fallback to building a wheel and extracting + the metadata from it. Should be passed as a keyword argument only. :returns: Name of the newly created subfolder within ``metadata_directory``, containing the metadata. - :rtype: str .. admonition:: Fallback @@ -243,17 +303,26 @@ class BuildBackendHookCaller: wheel via the ``build_editable`` hook and the dist-info extracted from that will be returned. """ - return self._call_hook('prepare_metadata_for_build_editable', { - 'metadata_directory': abspath(metadata_directory), - 'config_settings': config_settings, - '_allow_fallback': _allow_fallback, - }) + return self._call_hook( + "prepare_metadata_for_build_editable", + { + "metadata_directory": abspath(metadata_directory), + "config_settings": config_settings, + "_allow_fallback": _allow_fallback, + }, + ) def build_editable( - self, wheel_directory, config_settings=None, - metadata_directory=None): + self, + wheel_directory: str, + config_settings: Optional[Mapping[str, Any]] = None, + metadata_directory: Optional[str] = None, + ) -> str: """Build an editable wheel from this project. + :param wheel_directory: The directory to write the wheel to + :param config_settings: The configuration settings for the build backend + :param metadata_directory: The directory to reuse existing metadata from :returns: The name of the newly created wheel within ``wheel_directory``. @@ -267,43 +336,55 @@ class BuildBackendHookCaller: """ if metadata_directory is not None: metadata_directory = abspath(metadata_directory) - return self._call_hook('build_editable', { - 'wheel_directory': abspath(wheel_directory), - 'config_settings': config_settings, - 'metadata_directory': metadata_directory, - }) + return self._call_hook( + "build_editable", + { + "wheel_directory": abspath(wheel_directory), + "config_settings": config_settings, + "metadata_directory": metadata_directory, + }, + ) - def get_requires_for_build_sdist(self, config_settings=None): + def get_requires_for_build_sdist( + self, + config_settings: Optional[Mapping[str, Any]] = None, + ) -> Sequence[str]: """Get additional dependencies required for building an sdist. :returns: A list of :pep:`dependency specifiers <508>`. - :rtype: list[str] """ - return self._call_hook('get_requires_for_build_sdist', { - 'config_settings': config_settings - }) + return self._call_hook( + "get_requires_for_build_sdist", {"config_settings": config_settings} + ) - def build_sdist(self, sdist_directory, config_settings=None): + def build_sdist( + self, + sdist_directory: str, + config_settings: Optional[Mapping[str, Any]] = None, + ) -> str: """Build an sdist from this project. :returns: The name of the newly created sdist within ``wheel_directory``. """ - return self._call_hook('build_sdist', { - 'sdist_directory': abspath(sdist_directory), - 'config_settings': config_settings, - }) + return self._call_hook( + "build_sdist", + { + "sdist_directory": abspath(sdist_directory), + "config_settings": config_settings, + }, + ) - def _call_hook(self, hook_name, kwargs): - extra_environ = {'PEP517_BUILD_BACKEND': self.build_backend} + def _call_hook(self, hook_name: str, kwargs: Mapping[str, Any]) -> Any: + extra_environ = {"_PYPROJECT_HOOKS_BUILD_BACKEND": self.build_backend} if self.backend_path: backend_path = os.pathsep.join(self.backend_path) - extra_environ['PEP517_BACKEND_PATH'] = backend_path + extra_environ["_PYPROJECT_HOOKS_BACKEND_PATH"] = backend_path with tempfile.TemporaryDirectory() as td: - hook_input = {'kwargs': kwargs} - write_json(hook_input, pjoin(td, 'input.json'), indent=2) + hook_input = {"kwargs": kwargs} + write_json(hook_input, pjoin(td, "input.json"), indent=2) # Run the hook in a subprocess with _in_proc_script_path() as script: @@ -311,20 +392,19 @@ class BuildBackendHookCaller: self._subprocess_runner( [python, abspath(str(script)), hook_name, td], cwd=self.source_dir, - extra_environ=extra_environ + extra_environ=extra_environ, ) - data = read_json(pjoin(td, 'output.json')) - if data.get('unsupported'): - raise UnsupportedOperation(data.get('traceback', '')) - if data.get('no_backend'): - raise BackendUnavailable(data.get('traceback', '')) - if data.get('backend_invalid'): - raise BackendInvalid( + data = read_json(pjoin(td, "output.json")) + if data.get("unsupported"): + raise UnsupportedOperation(data.get("traceback", "")) + if data.get("no_backend"): + raise BackendUnavailable( + data.get("traceback", ""), + message=data.get("backend_error", ""), backend_name=self.build_backend, backend_path=self.backend_path, - message=data.get('backend_error', '') ) - if data.get('hook_missing'): - raise HookMissing(data.get('missing_hook_name') or hook_name) - return data['return_val'] + if data.get("hook_missing"): + raise HookMissing(data.get("missing_hook_name") or hook_name) + return data["return_val"] diff --git a/gestao_raul/Lib/site-packages/pip/_vendor/pyproject_hooks/_in_process/__init__.py b/gestao_raul/Lib/site-packages/pip/_vendor/pyproject_hooks/_in_process/__init__.py index 917fa06..906d0ba 100644 --- a/gestao_raul/Lib/site-packages/pip/_vendor/pyproject_hooks/_in_process/__init__.py +++ b/gestao_raul/Lib/site-packages/pip/_vendor/pyproject_hooks/_in_process/__init__.py @@ -11,8 +11,11 @@ try: except AttributeError: # Python 3.8 compatibility def _in_proc_script_path(): - return resources.path(__package__, '_in_process.py') + return resources.path(__package__, "_in_process.py") + else: + def _in_proc_script_path(): return resources.as_file( - resources.files(__package__).joinpath('_in_process.py')) + resources.files(__package__).joinpath("_in_process.py") + ) diff --git a/gestao_raul/Lib/site-packages/pip/_vendor/pyproject_hooks/_in_process/__pycache__/__init__.cpython-310.pyc b/gestao_raul/Lib/site-packages/pip/_vendor/pyproject_hooks/_in_process/__pycache__/__init__.cpython-310.pyc index cde24022261da90707a8cdfc4b3cc11a0c5a0dad..064e6e04c04ac8ee2b3dc8c4e0463652ae0747dd 100644 GIT binary patch delta 46 zcmdnNwuy~5pO=@50SFfPtxnh7$UBjdv0(CiMoHG7ASYMn$%h#~FbYlH!qm*j4geqh B4D+oetc14Y0l)mj2{>UCa+^^ HW@H5bj{Oii diff --git a/gestao_raul/Lib/site-packages/pip/_vendor/pyproject_hooks/_in_process/__pycache__/_in_process.cpython-310.pyc b/gestao_raul/Lib/site-packages/pip/_vendor/pyproject_hooks/_in_process/__pycache__/_in_process.cpython-310.pyc index 56a9be3bed311da7d93c5dd4b878cebd5e28cdeb..fb4465d6709ffb40eff46fc7dd7d0ab1c07c2ee8 100644 GIT binary patch literal 10479 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 delta 4479 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 diff --git a/gestao_raul/Lib/site-packages/pip/_vendor/pyproject_hooks/_in_process/_in_process.py b/gestao_raul/Lib/site-packages/pip/_vendor/pyproject_hooks/_in_process/_in_process.py index ee511ff..d689bab 100644 --- a/gestao_raul/Lib/site-packages/pip/_vendor/pyproject_hooks/_in_process/_in_process.py +++ b/gestao_raul/Lib/site-packages/pip/_vendor/pyproject_hooks/_in_process/_in_process.py @@ -3,8 +3,8 @@ It expects: - Command line args: hook_name, control_dir - Environment variables: - PEP517_BUILD_BACKEND=entry.point:spec - PEP517_BACKEND_PATH=paths (separated with os.pathsep) + _PYPROJECT_HOOKS_BUILD_BACKEND=entry.point:spec + _PYPROJECT_HOOKS_BACKEND_PATH=paths (separated with os.pathsep) - control_dir/input.json: - {"kwargs": {...}} @@ -21,6 +21,7 @@ import sys import traceback from glob import glob from importlib import import_module +from importlib.machinery import PathFinder from os.path import join as pjoin # This file is run as a script, and `import wrappers` is not zip-safe, so we @@ -28,69 +29,93 @@ from os.path import join as pjoin def write_json(obj, path, **kwargs): - with open(path, 'w', encoding='utf-8') as f: + with open(path, "w", encoding="utf-8") as f: json.dump(obj, f, **kwargs) def read_json(path): - with open(path, encoding='utf-8') as f: + with open(path, encoding="utf-8") as f: return json.load(f) class BackendUnavailable(Exception): """Raised if we cannot import the backend""" - def __init__(self, traceback): - self.traceback = traceback - -class BackendInvalid(Exception): - """Raised if the backend is invalid""" - def __init__(self, message): + def __init__(self, message, traceback=None): + super().__init__(message) self.message = message + self.traceback = traceback class HookMissing(Exception): """Raised if a hook is missing and we are not executing the fallback""" + def __init__(self, hook_name=None): super().__init__(hook_name) self.hook_name = hook_name -def contained_in(filename, directory): - """Test if a file is located within the given directory.""" - filename = os.path.normcase(os.path.abspath(filename)) - directory = os.path.normcase(os.path.abspath(directory)) - return os.path.commonprefix([filename, directory]) == directory - - def _build_backend(): """Find and load the build backend""" - # Add in-tree backend directories to the front of sys.path. - backend_path = os.environ.get('PEP517_BACKEND_PATH') - if backend_path: - extra_pathitems = backend_path.split(os.pathsep) - sys.path[:0] = extra_pathitems + backend_path = os.environ.get("_PYPROJECT_HOOKS_BACKEND_PATH") + ep = os.environ["_PYPROJECT_HOOKS_BUILD_BACKEND"] + mod_path, _, obj_path = ep.partition(":") + + if backend_path: + # Ensure in-tree backend directories have the highest priority when importing. + extra_pathitems = backend_path.split(os.pathsep) + sys.meta_path.insert(0, _BackendPathFinder(extra_pathitems, mod_path)) - ep = os.environ['PEP517_BUILD_BACKEND'] - mod_path, _, obj_path = ep.partition(':') try: obj = import_module(mod_path) except ImportError: - raise BackendUnavailable(traceback.format_exc()) - - if backend_path: - if not any( - contained_in(obj.__file__, path) - for path in extra_pathitems - ): - raise BackendInvalid("Backend was not loaded from backend-path") + msg = f"Cannot import {mod_path!r}" + raise BackendUnavailable(msg, traceback.format_exc()) if obj_path: - for path_part in obj_path.split('.'): + for path_part in obj_path.split("."): obj = getattr(obj, path_part) return obj +class _BackendPathFinder: + """Implements the MetaPathFinder interface to locate modules in ``backend-path``. + + Since the environment provided by the frontend can contain all sorts of + MetaPathFinders, the only way to ensure the backend is loaded from the + right place is to prepend our own. + """ + + def __init__(self, backend_path, backend_module): + self.backend_path = backend_path + self.backend_module = backend_module + self.backend_parent, _, _ = backend_module.partition(".") + + def find_spec(self, fullname, _path, _target=None): + if "." in fullname: + # Rely on importlib to find nested modules based on parent's path + return None + + # Ignore other items in _path or sys.path and use backend_path instead: + spec = PathFinder.find_spec(fullname, path=self.backend_path) + if spec is None and fullname == self.backend_parent: + # According to the spec, the backend MUST be loaded from backend-path. + # Therefore, we can halt the import machinery and raise a clean error. + msg = f"Cannot find module {self.backend_module!r} in {self.backend_path!r}" + raise BackendUnavailable(msg) + + return spec + + if sys.version_info >= (3, 8): + + def find_distributions(self, context=None): + # Delayed import: Python 3.7 does not contain importlib.metadata + from importlib.metadata import DistributionFinder, MetadataPathFinder + + context = DistributionFinder.Context(path=self.backend_path) + return MetadataPathFinder.find_distributions(context=context) + + def _supported_features(): """Return the list of options features supported by the backend. @@ -133,7 +158,8 @@ def get_requires_for_build_editable(config_settings): def prepare_metadata_for_build_wheel( - metadata_directory, config_settings, _allow_fallback): + metadata_directory, config_settings, _allow_fallback +): """Invoke optional prepare_metadata_for_build_wheel Implements a fallback by building a wheel if the hook isn't defined, @@ -150,12 +176,14 @@ def prepare_metadata_for_build_wheel( # fallback to build_wheel outside the try block to avoid exception chaining # which can be confusing to users and is not relevant whl_basename = backend.build_wheel(metadata_directory, config_settings) - return _get_wheel_metadata_from_wheel(whl_basename, metadata_directory, - config_settings) + return _get_wheel_metadata_from_wheel( + whl_basename, metadata_directory, config_settings + ) def prepare_metadata_for_build_editable( - metadata_directory, config_settings, _allow_fallback): + metadata_directory, config_settings, _allow_fallback +): """Invoke optional prepare_metadata_for_build_editable Implements a fallback by building an editable wheel if the hook isn't @@ -171,24 +199,24 @@ def prepare_metadata_for_build_editable( try: build_hook = backend.build_editable except AttributeError: - raise HookMissing(hook_name='build_editable') + raise HookMissing(hook_name="build_editable") else: whl_basename = build_hook(metadata_directory, config_settings) - return _get_wheel_metadata_from_wheel(whl_basename, - metadata_directory, - config_settings) + return _get_wheel_metadata_from_wheel( + whl_basename, metadata_directory, config_settings + ) else: return hook(metadata_directory, config_settings) -WHEEL_BUILT_MARKER = 'PEP517_ALREADY_BUILT_WHEEL' +WHEEL_BUILT_MARKER = "PYPROJECT_HOOKS_ALREADY_BUILT_WHEEL" def _dist_info_files(whl_zip): """Identify the .dist-info folder inside a wheel ZipFile.""" res = [] for path in whl_zip.namelist(): - m = re.match(r'[^/\\]+-[^/\\]+\.dist-info/', path) + m = re.match(r"[^/\\]+-[^/\\]+\.dist-info/", path) if m: res.append(path) if res: @@ -196,40 +224,41 @@ def _dist_info_files(whl_zip): raise Exception("No .dist-info folder found in wheel") -def _get_wheel_metadata_from_wheel( - whl_basename, metadata_directory, config_settings): +def _get_wheel_metadata_from_wheel(whl_basename, metadata_directory, config_settings): """Extract the metadata from a wheel. Fallback for when the build backend does not define the 'get_wheel_metadata' hook. """ from zipfile import ZipFile - with open(os.path.join(metadata_directory, WHEEL_BUILT_MARKER), 'wb'): + + with open(os.path.join(metadata_directory, WHEEL_BUILT_MARKER), "wb"): pass # Touch marker file whl_file = os.path.join(metadata_directory, whl_basename) with ZipFile(whl_file) as zipf: dist_info = _dist_info_files(zipf) zipf.extractall(path=metadata_directory, members=dist_info) - return dist_info[0].split('/')[0] + return dist_info[0].split("/")[0] def _find_already_built_wheel(metadata_directory): - """Check for a wheel already built during the get_wheel_metadata hook. - """ + """Check for a wheel already built during the get_wheel_metadata hook.""" if not metadata_directory: return None metadata_parent = os.path.dirname(metadata_directory) if not os.path.isfile(pjoin(metadata_parent, WHEEL_BUILT_MARKER)): return None - whl_files = glob(os.path.join(metadata_parent, '*.whl')) + whl_files = glob(os.path.join(metadata_parent, "*.whl")) if not whl_files: - print('Found wheel built marker, but no .whl files') + print("Found wheel built marker, but no .whl files") return None if len(whl_files) > 1: - print('Found multiple .whl files; unspecified behaviour. ' - 'Will call build_wheel.') + print( + "Found multiple .whl files; unspecified behaviour. " + "Will call build_wheel." + ) return None # Exactly one .whl file @@ -248,8 +277,9 @@ def build_wheel(wheel_directory, config_settings, metadata_directory=None): shutil.copy2(prebuilt_whl, wheel_directory) return os.path.basename(prebuilt_whl) - return _build_backend().build_wheel(wheel_directory, config_settings, - metadata_directory) + return _build_backend().build_wheel( + wheel_directory, config_settings, metadata_directory + ) def build_editable(wheel_directory, config_settings, metadata_directory=None): @@ -293,6 +323,7 @@ class _DummyException(Exception): class GotUnsupportedOperation(Exception): """For internal use when backend raises UnsupportedOperation""" + def __init__(self, traceback): self.traceback = traceback @@ -302,20 +333,20 @@ def build_sdist(sdist_directory, config_settings): backend = _build_backend() try: return backend.build_sdist(sdist_directory, config_settings) - except getattr(backend, 'UnsupportedOperation', _DummyException): + except getattr(backend, "UnsupportedOperation", _DummyException): raise GotUnsupportedOperation(traceback.format_exc()) HOOK_NAMES = { - 'get_requires_for_build_wheel', - 'prepare_metadata_for_build_wheel', - 'build_wheel', - 'get_requires_for_build_editable', - 'prepare_metadata_for_build_editable', - 'build_editable', - 'get_requires_for_build_sdist', - 'build_sdist', - '_supported_features', + "get_requires_for_build_wheel", + "prepare_metadata_for_build_wheel", + "build_wheel", + "get_requires_for_build_editable", + "prepare_metadata_for_build_editable", + "build_editable", + "get_requires_for_build_sdist", + "build_sdist", + "_supported_features", } @@ -326,28 +357,33 @@ def main(): control_dir = sys.argv[2] if hook_name not in HOOK_NAMES: sys.exit("Unknown hook: %s" % hook_name) + + # Remove the parent directory from sys.path to avoid polluting the backend + # import namespace with this directory. + here = os.path.dirname(__file__) + if here in sys.path: + sys.path.remove(here) + hook = globals()[hook_name] - hook_input = read_json(pjoin(control_dir, 'input.json')) + hook_input = read_json(pjoin(control_dir, "input.json")) - json_out = {'unsupported': False, 'return_val': None} + json_out = {"unsupported": False, "return_val": None} try: - json_out['return_val'] = hook(**hook_input['kwargs']) + json_out["return_val"] = hook(**hook_input["kwargs"]) except BackendUnavailable as e: - json_out['no_backend'] = True - json_out['traceback'] = e.traceback - except BackendInvalid as e: - json_out['backend_invalid'] = True - json_out['backend_error'] = e.message + json_out["no_backend"] = True + json_out["traceback"] = e.traceback + json_out["backend_error"] = e.message except GotUnsupportedOperation as e: - json_out['unsupported'] = True - json_out['traceback'] = e.traceback + json_out["unsupported"] = True + json_out["traceback"] = e.traceback except HookMissing as e: - json_out['hook_missing'] = True - json_out['missing_hook_name'] = e.hook_name or hook_name + json_out["hook_missing"] = True + json_out["missing_hook_name"] = e.hook_name or hook_name - write_json(json_out, pjoin(control_dir, 'output.json'), indent=2) + write_json(json_out, pjoin(control_dir, "output.json"), indent=2) -if __name__ == '__main__': +if __name__ == "__main__": main() diff --git a/gestao_raul/Lib/site-packages/pip/_vendor/pyproject_hooks/py.typed b/gestao_raul/Lib/site-packages/pip/_vendor/pyproject_hooks/py.typed new file mode 100644 index 0000000..e69de29 diff --git a/gestao_raul/Lib/site-packages/pip/_vendor/requests/__init__.py b/gestao_raul/Lib/site-packages/pip/_vendor/requests/__init__.py index a477624..04230fc 100644 --- a/gestao_raul/Lib/site-packages/pip/_vendor/requests/__init__.py +++ b/gestao_raul/Lib/site-packages/pip/_vendor/requests/__init__.py @@ -45,11 +45,7 @@ from pip._vendor import urllib3 from .exceptions import RequestsDependencyWarning charset_normalizer_version = None - -try: - from pip._vendor.chardet import __version__ as chardet_version -except ImportError: - chardet_version = None +chardet_version = None def check_compatibility(urllib3_version, chardet_version, charset_normalizer_version): @@ -63,10 +59,10 @@ def check_compatibility(urllib3_version, chardet_version, charset_normalizer_ver # Check urllib3 for compatibility. major, minor, patch = urllib3_version # noqa: F811 major, minor, patch = int(major), int(minor), int(patch) - # urllib3 >= 1.21.1, <= 1.26 - assert major == 1 - assert minor >= 21 - assert minor <= 26 + # urllib3 >= 1.21.1 + assert major >= 1 + if major == 1: + assert minor >= 21 # Check charset_normalizer for compatibility. if chardet_version: @@ -80,7 +76,8 @@ def check_compatibility(urllib3_version, chardet_version, charset_normalizer_ver # charset_normalizer >= 2.0.0 < 4.0.0 assert (2, 0, 0) <= (major, minor, patch) < (4, 0, 0) else: - raise Exception("You need either charset_normalizer or chardet installed") + # pip does not need or use character detection + pass def _check_cryptography(cryptography_version): diff --git a/gestao_raul/Lib/site-packages/pip/_vendor/requests/__pycache__/__init__.cpython-310.pyc b/gestao_raul/Lib/site-packages/pip/_vendor/requests/__pycache__/__init__.cpython-310.pyc index d4d3930b1a3c8f838e467bf7934126e73157583b..44bfe363bc44344b03e512666bdf4e55059e7ae7 100644 GIT binary patch delta 1205 zcmZ8hO>7%Q7@gT&@2=Nt$98JRiS5|=m*awvLIMOx)1*n75cSZ4NT;q=k!Rw#nX#=| zrzMpUQp|;8G!jBRIb69^Ldt;?9Jz7r9(r!CNL)AoGixMNW;Jg#Z{GL5Z+^7TOV1_~ z?ReY)vVDK&hsH0X7l{HaUsS8xSVI;zvGp}THnwq8j?t%4ViWz5Lo8zUbqGEOtuX_T z7;%rZvo#3RN8liiok3!#yZAZtRg8|XBudJqq`yy6*zLn}_|(J@Yc!40(j+ELQfCi` z1~PH_K4`%wfQ*tfj^jjM_rH+p5qgbfP)7P>2H8uQN^(g$#vGKBT$JScFf1t=x}6W* z?t?vLC8a4k&L+@ASYaNg$;71=T4=O@3UYmv7FZD#C1>Dkbdr@&iIq_~oM))RrqGml z2B#7ZazZXk7g-gFUt!S==VR1hOK3^_4rlj6B1b=FYiNz#KsVSrS`WE#dXsIS4Yr9k z!}$cg#kSCvEUGZrCOemKaGMnS;8N~{z(;wUC(Az`Y3q8vuB$uxx0!M@WZ#tCUlG4W zYSoDU&K@|2Jsn3*G``w1uz3>kS3?f+W)BYJ8C*gPuq7Utm1Vo9_l#cTNH>5EP9VoP zdIJ20(nFvSgL|N-@$Y)tn~`rh|BDnjCL_OnGcpQPe8m+htFWj_ujpL8G7c43A@N#m zV@N1gDlAd6Ci4{|i1;1a>;^g|t-w6&bVv&adb8CPFRX*vF)9A@;pS@XGoNt3_Jq)G zyLPKxKV_uV^=o(UZftFe2ll6MNj$f+IUBmr&~vZ==QRTkM^oqH;-&p%IxjLpeRVZoSIRh*e>g|c{fyuZ{pYCoVbcFz_NH5pRFz^h3hw2hmxZv z?GheXwB2YlTMb@OYk)5*zbXJ?Ch_)MpdWUcd|6Q|3f@!jzJjcR4-~A5$BESs1CzBe zp+4VM+>V0V5(3*NzS_OdcNMp%IM?qUc29k;E+c&YiTEQiw-TP{e-NIn{gL!Mr9}Qo ZR;@^BNYbSF)r2341WlWj#bS9Tj_X;k zHM60_7*%TE0JmyDswyGuBR8Z<`~ip)7bLhK-#PTk2?3(KS(jG8TKmn+_vU;1-Z$e% zxvwWIFOi5T@O<#w&C25711pO*9?Z?%YZ@5gFpao|9YxA5r5@K65<8heiu_^Kjvgp= zbXUOJqwh28yh z$W7a6$dhglcVy|Ztr2J|1Dr`Rrzj{g8npLWFWZ5#74(Mi03CJ5>@nDi+F6_=W3tYm zh;e%y#uOcQb9N3m9S_n8H*e?NNqaI_4^cxj(WEtN&%)=7fJ;;H6&g3)%l749Jxq1+ zBbwTCm+j?%7@;ffHT#;oYOlI$_FBMY=yiA9UUxU_jbJ@WH{C6J3yK6o)5OgPt$H>Ct>*}gDTR`2o0uX=UIDQohepFLq1b$Hj|N|W zr3NVyvGSJEQrV-H`aktW9RH8{b8Le8;lI_s-n#(>OZ*(pUKoXJv41m{WBKO!t&J}NOze5dX)w?wN=pu8T7iJ!05xnH7` z;6g~OL^APibo2c(Y4~8JxD~lQD{J_@yuMhx$-&^_T|#}YxZ#zLT~haXu|h!ZIjnR{ z#ZQs9FI<7`d&q&_t@9jQov z+OO$>@f<7<@gzt5%0$T8W;dUVYeG`9PE`HhfNC4oY|LY>{O%Ln1@?c z#~z!P9)epe1Q9j_(2ei74UhSojCqV@B|R-^YmI|X(!E|}LPpL=$cyjIynYU*;t%sB zbY7fK%%HPkFEKS)kV=zR-3BFxRq7MgjZm*rsn#oOPR7KSiTP>vvP`oe*IKDjWzuT) ziiE2Y7A0iFuZhJ?wk7A=0Nt?bVL~~(A($pXqr${n`&84MtztrpQ;UjY%2RVn g@?%``lS^|`^Gb?i(o>5|67%DW5=(O?Z)eN|0G9t6vj6}9 diff --git a/gestao_raul/Lib/site-packages/pip/_vendor/requests/__pycache__/_internal_utils.cpython-310.pyc b/gestao_raul/Lib/site-packages/pip/_vendor/requests/__pycache__/_internal_utils.cpython-310.pyc index c8ec2d219845c1c88f6d87b7ac5b9ff7d33d5399..871d88d6399abc1d7ad60e417d0b42721f0f0130 100644 GIT binary patch delta 243 zcmbQsbA?AcpO=@50SFfPtxmtr%E0g##6bouK#l_t7Z**`cF|=^_ zmAxjIi)XO3W$+}yxi%gCrU`5%iiqrhY(*2#uZV(}iXjxMf2@nMcW zo-U3d{z1Xehlz`cixC7lm^c_&m{=HD{&BJK G@B#pb=QpGP delta 166 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 TN1``b`jr$-{&(|m=l=f%2r!b5 delta 4557 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 diff --git a/gestao_raul/Lib/site-packages/pip/_vendor/requests/__pycache__/api.cpython-310.pyc b/gestao_raul/Lib/site-packages/pip/_vendor/requests/__pycache__/api.cpython-310.pyc index 366611cfbef47e93f59fcaf6267a487272a9ca00..6e8ba94a6f950ebfc64b690b4933af7c2ff1e92c 100644 GIT binary patch delta 102 zcmexoe87Y+pO=@50SFfPtxh+T+{h=&#u&d@h3zyeW5nbS+>)$8K~ApDn?-o8url75 w{8I4yig*vKc!#;Chlh3zyeW8CBq+>+essl_FU`SC@Gr8%4V zc&@NA9+>=C@H=N#aekgcN@7XkWJPhy$#?m>C+`<7=G)K6z!038mr|^ds1Oi3`J>=V XEDHI=QWy_TE*ATNDYrR5;sYZ9bHz3~ diff --git a/gestao_raul/Lib/site-packages/pip/_vendor/requests/__pycache__/auth.cpython-310.pyc b/gestao_raul/Lib/site-packages/pip/_vendor/requests/__pycache__/auth.cpython-310.pyc index bd533225baaeb79edd1834de3b7594ab7ed1ad06..38bf5005140a1a2b9c9e67c0f8585c3bbff392cd 100644 GIT binary patch delta 100 zcmdmGzr~(6pO=@50SFfPtxi9+k@p9Se5A8gOlWaxQE^OpYEDUhj7xrUX>Mv>NpVb2 zkdv$PW-Zp)VvLNNk4a}RGRjWYm#tzmWMp6{GMy|SCpP)0tSh7CWNx{BMxD*G<>VOw DW+ont delta 97 zcmdmDzssICpO=@50SKypgr=X~$oqpuHQw1OCbT%Us5quPHK!y$#w9ufPbrp*VWGZ-1=CTq%8F&a%?BAdWyHJMeepHX-7R5^J@0C6H9 AO8@`> diff --git a/gestao_raul/Lib/site-packages/pip/_vendor/requests/__pycache__/certs.cpython-310.pyc b/gestao_raul/Lib/site-packages/pip/_vendor/requests/__pycache__/certs.cpython-310.pyc index f981aee7bd3e52e9229390a1dcb2e7d1e6fe78da..e27b52f5b9f201daf632e00ace011fc28c1cc1dd 100644 GIT binary patch delta 237 zcmZ3<_LGG#pO=@50SFfPtxn&`IFV1rKnuuAVTfW#VN7AlVa#QUVq#=SWlmwvW-1a+ zWl3dfW@u()WJqBN24hXujb#Ch^_q;gSj#g~i&AfK#K-3*X6D7m`)RV?Vvmnc$xn`t zza?CdS)dnRmYSE6U!<3uT2zvmmRZCEvFEKY2sD`zmC^N5QB|{MhP#jGBigLD! z2`x@7Dvl{n%_+%`ami0E%}vcKDUJyWa&mQ!Nlz^>g)?Ii@(l3i}_5SYPXhL<3Z zwL?-PBOw8l6J|2&4TXf8%znYL!7WbKXbpfE9`4~g@8JL%LFv)K?SKwP?V#K4-v>R~ z={<~mD9zO~mptAac~M7SRn;d2ngN4TG(ba#c(Om6JufJ;$v(Y3LC;mFSns-{6V2hMrfmZ5J6T!|w4ZGlA J$8drC`~nDDS-b!M diff --git a/gestao_raul/Lib/site-packages/pip/_vendor/requests/__pycache__/compat.cpython-310.pyc b/gestao_raul/Lib/site-packages/pip/_vendor/requests/__pycache__/compat.cpython-310.pyc index f5822ef2af73460db81f1152070f026d70ba0e24..0e67c0cc908292fb19d07af595df76ee711968df 100644 GIT binary patch delta 611 zcmYjOJ#P~+7`A=Bpz`#S}&9*`f!&UU+>0fj}ML z4@CD5*bpOsfDs|}4}^)0k(mj<*YaWMef;=&KlIrC*7^}dMHID&UGGO9A0I8E?jfUu zNFs=&l4&ZabR>UA1XJuS5ssoyxNwy#X@^MnDHDwo-mtt`_jtmydsBP4FMNt~Jl)Cz z5!Bq*VIGMnk42m(BB`~OK9#SC(>3n|`b^#y?fMYvv-zr6t$DQgyhG!~&zmm0Pd1b4 zD*bXeO40hCWsMVzp$+3%kn|0CO>8xLb>(h$AbVy$n-x$h*-Q7QFilGZJ*i5SmRWJo z)7c(OAycM5`am}6vWZ1D4b0A};n&0Ajok-Ef!TebbXk4np*tSmzB8=8^TFk{2`E$O z=W2qDlfQ#k&=0r38K>Y{@`-;(xkbRODPn@1VSoEMM7*K7PbxyAQmquBo>6)b@-DaAqIA~Do?@8 z8z2UrA-n(*TPMVX9XjCQ_&dkvA8dbmAI(4pK@+L<@O^$|PlEMFgb_**MF~y_$AVCT zH5=TZ1~YC3)CSaQzdB9)^YY@M|JCH?3!hK5SP(c)Ie7Y%q!N4${usFG^s@+Z27!toM94JJr1$xQ(`PrGNS&2oPD;WzI z8NW|{#pH)B5!6%$&VT2vfUo|;pVALEjrT$-DjS5h1k6y)UUyt#{2hLss) z&PuLq7RIBKMfvBTnKOA8e;QbYvVaQ{gZ<8(@T{C0By%vvH$=8 delta 214 zcmbO|iLrSSBX2%0FBbz4RR0J~Z`jBy!N|CFvKpfoXL5dic4lf$X42+5#sWshPm|v> z`5_59C$pqdAvq_pxY$}DvsfWf0pTV) UNheXpoXL%P>PRMR(@T{C0H^Rsr~m)} diff --git a/gestao_raul/Lib/site-packages/pip/_vendor/requests/__pycache__/exceptions.cpython-310.pyc b/gestao_raul/Lib/site-packages/pip/_vendor/requests/__pycache__/exceptions.cpython-310.pyc index 4893e5ab90620f0480fbfa1cc339c87f4ef5a813..44ed923cabb48915c57c38bad42fb733f59ad004 100644 GIT binary patch delta 1060 zcmZWo%}x_h6zt8X_$G+ z3|otvIUE4fDN|jgn3tW!+1G<7k}-jWV5T#o_Mu^ne;qF#LFsYtKl4&gV$v}`B&1%U z4-VySxGx1l62?d#pCEZdK`2St)+r>|8Gd+SMji$sFemmSyab;EDm)ELi{}tcLo%qs z@4#h+AmVSM5ks7q2f=U30CG26e!$_i)(_$!a<}0ilz>zyuM8ntalM8duV0}haTvLK zupd@I56_6_5oKUXPQdr@s(1lW4!+7N>?jfxRqRQMy$izA4(ppIxqSruc5 zELdw(L26qNSH=<5T(5D*>sCh! zk`Z6)GnZE#{!51`CXm~OkC6oEk?Ud-(MwqERN-f&s!Sl-b7Ll)nBC5*GKt(Pm!E`i zltMK+*v@$8_23VI!{uegrp6Dl;kEE7(h)C;w2$Ml|DeVK**}CD6}N$rBSF5 zVxR*9+gTWZg`J1Gvalc|7?^|j2atdbA+d0d3%2A>_xIgTN8ho()W27(el)5p_}u%w z()nq zom3-JSISH#Fej5FDUvja0S&!iPU3ODqN!#?YS2#4z(c*MR^gpK;#s_EQ1TE-7H^BN zZk%R0#1qgo1bj8-*kPoT@Cxa&`I+UBnvgREEJRD)4ZWSvuLb_c)QHv5dj!u?0*2`kr!V_BOf}$7 z+E=r1{b1?ASikCS4E^&`_NAn?Wr>7VleCefMI`l?RC|12d3*3LT_KZNN-8(rcg>Z( pZm%P$(l~z3A4q@A-Rkyx|1YSM41RKqP9!j|>tJW{ss)YA>|Zq5kgfm# diff --git a/gestao_raul/Lib/site-packages/pip/_vendor/requests/__pycache__/help.cpython-310.pyc b/gestao_raul/Lib/site-packages/pip/_vendor/requests/__pycache__/help.cpython-310.pyc index e0a1c999e26a8010f3572aa74e09ffc0c5e0f90f..1e0e4908ee7b3e0068a05aeb99c17ae4451e5a26 100644 GIT binary patch delta 571 zcmYjNO;6NN6n*ziJAKpX#|#Vx8DTIW1PBs|aif6*!$KoN!Ys%%G0lWml`w6|>!=xG z!a}!d$ol~%Zb{h8-XAi1*Y1f%?`;>@n|tobJ*V%Tc694{%1d3>X83$>U%vk7U3hok z$Hm(Ix#WR!CL~C!@5Wx>0Xt-gZ?MQ8ZUdu2hlgFmu6J2ddC$CHtU6^#yp?rk4qAywD%GWbit6ZafQ*T?(D`V^EO;5>a zpuboT*K=W>)Vl~{YrnIrRH{^qRwV+HV2R+K{$=ezS#OGOYm2xD{A`#FqBzX5et4X` zN)-hxU=G>Xpyk%+x8N{yBjv2nBUhP{+I10fOrz;e|Zbgn{6T(OmG2I4tKB( bZUE;saKOM4!2bx-L%Adt#A9LFVEp|D9q4kX delta 546 zcmYk0-D(p-6vt;K`!U_!?8c@mR6~*qF|?%(g;G$&i(nCh7$itZK$gW>YjHoyG@(T4 zRegat51>9n?)w6LgHXIEh?rn=|M9=bZo4A3t=neBMHGeZT&&U-w3C z315!Z+pTYuVP?j9;`AJh_E2hTD9R6?VFa6zp3_AsK1NDMV>j`7p3-?r_x?`jjeb`e z3(Wd~dW+0vj=YO3&s=#gMLzSs5}rj%r>bd3HtwL+!sx0?%}-xK&Z7SK75>JfQ(*cF*Tf&{`(TMHRAe;K4${wA zb9_z-el#!Lt0&<>dLsTWtl4Vr27LEL$$DG^r?XL;5Y6U6Py0=BnDM@HCE8XwHle-- zr~|5i24F{GLW3X;lPCygw&pIBLHZ)e*dUHxVyQiPE}IQ=Xbrk{{!epIn-onpaXB6BOj+ L>b!X!qX`oL{I3$6 delta 63 zcmcb^{)nABpO=@50SKypgl^=nV^mFWwu%WYPAw{qDNoHQ$&Yc#PcF?(%_}L6Nlz^< RNz9KgN-WLUyn@k$2>^?t754xD diff --git a/gestao_raul/Lib/site-packages/pip/_vendor/requests/__pycache__/models.cpython-310.pyc b/gestao_raul/Lib/site-packages/pip/_vendor/requests/__pycache__/models.cpython-310.pyc index 2d2db6987fca4cfa079c6112dec05da8e5588eaa..5d4f4f333f34a2b2d517d8ce26a6b398c271d2b7 100644 GIT binary patch delta 432 zcmWlUT}V@59EacEd)}R`Lz}~oz>g^B#PmXpTuf(_{SfRUWRCv|hI{oe*czEEqvw_kEJh$9#L)d#B zUA?ig@Y?f3M}q$7jgDCCk{RK8XTA;|T5Wm)KMyr$fDT%3c?lm+oXl&8^54^sfh0Zh zJ-{@bX#0s7lKx%HbJ1T9EONR1o`z*kc3Qvzb61VRFaFS-2L?FaWA{dR@2p3|B<=TZ z;Vu;dZ_vl_^Jg?H(Oh2+?@9GfW0P|IJJ_X>P#W9xE>y%GEe>Sym5mFZff9WmoWdbp z4j1fvC0r|U#MO&I033|yfQ!OI+whXpJm+h%?`A{_caT1w5l?Yn+?3Cdl8wR=Da{g{ zipI>Vu4wv;Ev6&%!W^t=(1f_H+w9W3P>L(&ume3D7-x2!vXu`L N-=xzLvtqXP%0JsPhvEPL delta 416 zcmWlUO-Pe*9LN9P|MRrz#5rHVmq0cLQzWv~n#+mk1BRK#wnTTRWhJN}%!#DN?38*E zemKN~C?uXFbilI99xouaNSY|+GnVI)|s{Q>-<9rtS- zQhnVAU4K-UC2_{*_4fhEcNz>pDmfd!B9oxq&9msyAu*3p(IXe|68XX-N+mtjp2*-& z`lz|n@)RKkq<*s~e4#bnKsjs8cA$`ZAH9&dzH4mNu^dxPs#IZ0rl`F4H~mwYJY08Z1i@k)+0Jj=U<*~oZPiMnQ~c`n?*V}N{3u-T4!Ngsh#qDS$l(VUZho{ z&41H&9VE$dnsbuWUX|J*S0){xo;^dIgItbFuE-qc9ONeO9_fe~{p}C174hq2ski39S z;uH8T8QgsX@dv#14CinT=fHWlf25bS+b$T~evZa(;?Y~byE2Y|Foh6E4B)62B1uLc zLcx+ng=|&8*ax;5&RZ3l&St1svA7U=i`A3Ef-E1NG2b=m0?7&qA4C^IcfMfNg}IW= zt`B{ft{@fCp)-=D=6;8 Hul4;0`_4sX diff --git a/gestao_raul/Lib/site-packages/pip/_vendor/requests/__pycache__/sessions.cpython-310.pyc b/gestao_raul/Lib/site-packages/pip/_vendor/requests/__pycache__/sessions.cpython-310.pyc index 6cead7ca58d8ee7176fc722cf0111d9111b68f5c..5b8e3e6962ead6abcb4088864d2e32e08870046a 100644 GIT binary patch delta 488 zcmYjOO=uHg5Z(9fPrht+BP3~?#@5|~9$IT7ii&7iv?yCN(nfj^jgT~J{YkR08x_ey zL9rJPBHuyn$>gXA%6Jv(O+1Lw9tH0n^d^Xhx=VX--eumKc?^&F{S2#X$oi(KOK}Y@ zyjr&IzRgxO)I?nyRjbw0XJ+Z4_Q?Pf^Z9W+r%qmHD2aPRmvCQf3^n#CFL+b#BXlAy zaH3S;bkmU*r5>@fuN<%rC%LYv3F1CQw4@vFd7%Aa`8 zut{HMYCvCr6FJ?JRuUN1e+Z0xxBvhE delta 372 zcmZph#rSOoBVRr*FBbz4RR0J~e^R=UFNlpXd2%9~BzJmhaYjMU$l2imYnbi>yjGYS?Pno0)2uQy6U+ zYFL9AG?_Pth@E3((&U`1DWNwxMk0h!fAU5N872F zY{)6Q*;)DyGj}T^14FS4&}kg3o3-R~S((Z?C-W+bZ{DEtigmM$_5>D2+s$kBS1~gB zZ;mhwWn_%nyw1p*kui1iFXL1u#)8cWX3R{CwVP8c?lUrWZg#PXV`QAVd9n3gCdSK~ z6YXLd8Rt*lZ?DbBy!o}g8x!N(%|=eM7-M2Jm@Y4c5I4_3)!kUKm;?qFbH zpe#_2R8>d7dIC#7Y_#y2N#DQhdc-0<{Zz7 N%$!vW^&rR-3;=R8VN3u3 diff --git a/gestao_raul/Lib/site-packages/pip/_vendor/requests/__pycache__/status_codes.cpython-310.pyc b/gestao_raul/Lib/site-packages/pip/_vendor/requests/__pycache__/status_codes.cpython-310.pyc index 8c95e5c2a4c2ed06092d9e9d2c47d749c0254699..af4217d24246f2cf4ae9dc45a7729b36269db708 100644 GIT binary patch delta 214 zcmX@8(xl3p&&$ij00fKtR;NGO$Q!^S#dM3SpeR2%wYWGlFTIL8HL)nCQa2+rucUZ$ z7K;{3Ak!_0qSV6D)Z&u()Vz|+lFIm!{QUTw#G>@nD8c0Xyb_=&LMU?{BLjmb(=Ab$ zp3t_Djp?Tng_K!F)1fC9%|g=mz>r>6{=i{+)_?W^X7|u1T*GT!1UD9TSxEiTT?OW$11qQzp#cuS%vwXig` zxFkL`uOzdiGQK1~KRze1C_OcE9wP&TCgUwpn1a%xOoZ&@PaNMEnI^yFRGqBKWesE{ zaw%@^^1>9Fq>TCNV$0D6uqWvk-p)GXTqB BI}88- diff --git a/gestao_raul/Lib/site-packages/pip/_vendor/requests/__pycache__/structures.cpython-310.pyc b/gestao_raul/Lib/site-packages/pip/_vendor/requests/__pycache__/structures.cpython-310.pyc index ecc1f1fd6c264c69d09671ed75242f00f2bf0dc9..09afb33c16a1c33960f55fd4b7944e5ff7ea13fb 100644 GIT binary patch delta 37 rcmcbnbU}$bpO=@50SFfPt=`D}kd-lh@>^C()}SCKSLe-wY_8k@%H#@B delta 43 xcmcbhbWMpnpO=@50SKypgl^=1$jX>H`7Ns?cY11ZNn(C{QDSM%W^OiDZU8264XgkF diff --git a/gestao_raul/Lib/site-packages/pip/_vendor/requests/__pycache__/utils.cpython-310.pyc b/gestao_raul/Lib/site-packages/pip/_vendor/requests/__pycache__/utils.cpython-310.pyc index 820d0b1fa33c7001bbed6eb98e40d64fd5803f1d..b06272fe482e02554627964cd3860d04d93cf08d 100644 GIT binary patch delta 6673 zcmZu#X>1%vcJAuwnduo0hlhAe6e&?6Iif_};vrHp#Y2=RkrEFbElRE7RFiCSE>-vF zphxDyl(T?sAz9aEH-NJNxrq(S>qH3#aAG6bEMRAo-Po}g_6A8CYuHExM**CylOK!7 zYbozl>!4_pm{--Ws=j*l>eYL%>i2$3{^}ZO3*QN^A;11k)6#sR zTq{phXca`FUK)s3CaScm#As@XwVuGjasAV6N*O?o3u@$o*!>YY}Pg>wrE=t&02F}tF{&R^IjT` zZ%b^~w!=q(w!Qd*Lih}LST zGi|hDR%UO~N?LVI(%R{2x(3Siw3@Dkaxbl+wNQ3Yo35vI*NE0hH_(m1*+=VX!!>DM z+i%D-PtZmhxh5?Tt&47=P0)ORZl+tH?553hE0jHS8{H0NF97YJI{~PV?xMSabCB+# zEl~E;R@w&TA=*y&LV1{W&`u}^=svn1$|Lj%+6CoNdVqFAIcN;go`rd$9izRp4;aVk zLD~=HFg-*MLpeeR=n*JK=}|fezj zE-^YyO(-dyp|emLG)@yxPSPYzK{-X!^a7OAlu-*xlNWpbbBE%T>;1i5J-x&FiLN7u zdb&o3hDY=Rr$>98vTtY@86D1j<#~sYU-O@PpQCnwN?Bz=zN%!E9_j3+tKO`a`eC0> zQ8g=FBCTWUj9P*!D?sKiG?;=d4T@;yan-Mp}~g#T21yS)f{vr;78Kq7>7 zU>zrO$pNgDAc3Fd1LE@mq|8bL#J>d0y*6URJV@c5|yqJO0LSb1Zp7*G7D#=MVZ2px+>Y8tVBJ)tFV&RSnrZ_)pJrxh7`&6&G>C~QohnkB>X=uC5tafc3?4>^(>K@ z`8=2!hRlRu7Z2O{i(%@w3zlT!POJjtbpcrjkTO6P0A$e>>Vjnnl`@1)WI=cUjsP%< z8^BSbO@h&@K%inu&?*Qla1oIR^0IRJsY8@35h4L_o&bK{1qN*p03?^B`!F0i_9{xU zBr8`)3-X8*$s1&#Jn4=%V^3~r&HY{87^yFDf~I9AEjtPtXXViB_(1t7YOr4TV26&CLT?ecS+?fR#xbOphDMZ$qm!2t*+Y3CcnKS$;p!bKAn7 zkwzR8ksY~tn?okQ2GKEPB#p~yw(kSJzc8u}VdoMy#$PF{@fq;JD1W!GaepONk0EhI zrv{4d_>zVlPsP|CXmP^Pj6DrzZ^oi_idnAoTXD=N-&?fjJjE(vIzbr5VtP7iPqPVR zcmTwandzujI&RvQ&0LFLkB$C#YRXLN=1SSaQ--a(NI3I5{1-)I9`T@3Dnk|Ehl@ z6?kR_BjHEzEQx4)cy}o!v;39P!+Fb)`B$ZtB*e?hTFCeKP}xVDo`ueiKQU|BMk4(P z#PL&;p@@!elBUu|lC|>D^1+g2PμK(_PO%WKH<;<$fQ70CT>`2{)laD!L@PM}Pr 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 SyMR%(YPDLZ=BcYfMgI@oM1{xz delta 6389 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 diff --git a/gestao_raul/Lib/site-packages/pip/_vendor/requests/__version__.py b/gestao_raul/Lib/site-packages/pip/_vendor/requests/__version__.py index 69be3de..2c105ac 100644 --- a/gestao_raul/Lib/site-packages/pip/_vendor/requests/__version__.py +++ b/gestao_raul/Lib/site-packages/pip/_vendor/requests/__version__.py @@ -5,10 +5,10 @@ __title__ = "requests" __description__ = "Python HTTP for Humans." __url__ = "https://requests.readthedocs.io" -__version__ = "2.28.2" -__build__ = 0x022802 +__version__ = "2.32.3" +__build__ = 0x023203 __author__ = "Kenneth Reitz" __author_email__ = "me@kennethreitz.org" -__license__ = "Apache 2.0" +__license__ = "Apache-2.0" __copyright__ = "Copyright Kenneth Reitz" __cake__ = "\u2728 \U0001f370 \u2728" diff --git a/gestao_raul/Lib/site-packages/pip/_vendor/requests/_internal_utils.py b/gestao_raul/Lib/site-packages/pip/_vendor/requests/_internal_utils.py index 7dc9bc5..f2cf635 100644 --- a/gestao_raul/Lib/site-packages/pip/_vendor/requests/_internal_utils.py +++ b/gestao_raul/Lib/site-packages/pip/_vendor/requests/_internal_utils.py @@ -14,9 +14,11 @@ _VALID_HEADER_NAME_RE_STR = re.compile(r"^[^:\s][^:\r\n]*$") _VALID_HEADER_VALUE_RE_BYTE = re.compile(rb"^\S[^\r\n]*$|^$") _VALID_HEADER_VALUE_RE_STR = re.compile(r"^\S[^\r\n]*$|^$") +_HEADER_VALIDATORS_STR = (_VALID_HEADER_NAME_RE_STR, _VALID_HEADER_VALUE_RE_STR) +_HEADER_VALIDATORS_BYTE = (_VALID_HEADER_NAME_RE_BYTE, _VALID_HEADER_VALUE_RE_BYTE) HEADER_VALIDATORS = { - bytes: (_VALID_HEADER_NAME_RE_BYTE, _VALID_HEADER_VALUE_RE_BYTE), - str: (_VALID_HEADER_NAME_RE_STR, _VALID_HEADER_VALUE_RE_STR), + bytes: _HEADER_VALIDATORS_BYTE, + str: _HEADER_VALIDATORS_STR, } diff --git a/gestao_raul/Lib/site-packages/pip/_vendor/requests/adapters.py b/gestao_raul/Lib/site-packages/pip/_vendor/requests/adapters.py index f68f7d4..7030777 100644 --- a/gestao_raul/Lib/site-packages/pip/_vendor/requests/adapters.py +++ b/gestao_raul/Lib/site-packages/pip/_vendor/requests/adapters.py @@ -8,6 +8,8 @@ and maintain connections. import os.path import socket # noqa: F401 +import typing +import warnings from pip._vendor.urllib3.exceptions import ClosedPoolError, ConnectTimeoutError from pip._vendor.urllib3.exceptions import HTTPError as _HTTPError @@ -22,10 +24,10 @@ from pip._vendor.urllib3.exceptions import ProxyError as _ProxyError from pip._vendor.urllib3.exceptions import ReadTimeoutError, ResponseError from pip._vendor.urllib3.exceptions import SSLError as _SSLError from pip._vendor.urllib3.poolmanager import PoolManager, proxy_from_url -from pip._vendor.urllib3.response import HTTPResponse from pip._vendor.urllib3.util import Timeout as TimeoutSauce from pip._vendor.urllib3.util import parse_url from pip._vendor.urllib3.util.retry import Retry +from pip._vendor.urllib3.util.ssl_ import create_urllib3_context from .auth import _basic_auth_str from .compat import basestring, urlparse @@ -62,12 +64,76 @@ except ImportError: raise InvalidSchema("Missing dependencies for SOCKS support.") +if typing.TYPE_CHECKING: + from .models import PreparedRequest + + DEFAULT_POOLBLOCK = False DEFAULT_POOLSIZE = 10 DEFAULT_RETRIES = 0 DEFAULT_POOL_TIMEOUT = None +try: + import ssl # noqa: F401 + + _preloaded_ssl_context = create_urllib3_context() + _preloaded_ssl_context.load_verify_locations( + extract_zipped_paths(DEFAULT_CA_BUNDLE_PATH) + ) +except ImportError: + # Bypass default SSLContext creation when Python + # interpreter isn't built with the ssl module. + _preloaded_ssl_context = None + + +def _urllib3_request_context( + request: "PreparedRequest", + verify: "bool | str | None", + client_cert: "typing.Tuple[str, str] | str | None", + poolmanager: "PoolManager", +) -> "(typing.Dict[str, typing.Any], typing.Dict[str, typing.Any])": + host_params = {} + pool_kwargs = {} + parsed_request_url = urlparse(request.url) + scheme = parsed_request_url.scheme.lower() + port = parsed_request_url.port + + # Determine if we have and should use our default SSLContext + # to optimize performance on standard requests. + poolmanager_kwargs = getattr(poolmanager, "connection_pool_kw", {}) + has_poolmanager_ssl_context = poolmanager_kwargs.get("ssl_context") + should_use_default_ssl_context = ( + _preloaded_ssl_context is not None and not has_poolmanager_ssl_context + ) + + cert_reqs = "CERT_REQUIRED" + if verify is False: + cert_reqs = "CERT_NONE" + elif verify is True and should_use_default_ssl_context: + pool_kwargs["ssl_context"] = _preloaded_ssl_context + elif isinstance(verify, str): + if not os.path.isdir(verify): + pool_kwargs["ca_certs"] = verify + else: + pool_kwargs["ca_cert_dir"] = verify + pool_kwargs["cert_reqs"] = cert_reqs + if client_cert is not None: + if isinstance(client_cert, tuple) and len(client_cert) == 2: + pool_kwargs["cert_file"] = client_cert[0] + pool_kwargs["key_file"] = client_cert[1] + else: + # According to our docs, we allow users to specify just the client + # cert path + pool_kwargs["cert_file"] = client_cert + host_params = { + "scheme": scheme, + "host": parsed_request_url.hostname, + "port": port, + } + return host_params, pool_kwargs + + class BaseAdapter: """The Base Transport Adapter""" @@ -194,7 +260,6 @@ class HTTPAdapter(BaseAdapter): num_pools=connections, maxsize=maxsize, block=block, - strict=True, **pool_kwargs, ) @@ -249,28 +314,26 @@ class HTTPAdapter(BaseAdapter): :param cert: The SSL certificate to verify. """ if url.lower().startswith("https") and verify: - - cert_loc = None - - # Allow self-specified cert location. - if verify is not True: - cert_loc = verify - - if not cert_loc: - cert_loc = extract_zipped_paths(DEFAULT_CA_BUNDLE_PATH) - - if not cert_loc or not os.path.exists(cert_loc): - raise OSError( - f"Could not find a suitable TLS CA certificate bundle, " - f"invalid path: {cert_loc}" - ) - conn.cert_reqs = "CERT_REQUIRED" - if not os.path.isdir(cert_loc): - conn.ca_certs = cert_loc - else: - conn.ca_cert_dir = cert_loc + # Only load the CA certificates if 'verify' is a string indicating the CA bundle to use. + # Otherwise, if verify is a boolean, we don't load anything since + # the connection will be using a context with the default certificates already loaded, + # and this avoids a call to the slow load_verify_locations() + if verify is not True: + # `verify` must be a str with a path then + cert_loc = verify + + if not os.path.exists(cert_loc): + raise OSError( + f"Could not find a suitable TLS CA certificate bundle, " + f"invalid path: {cert_loc}" + ) + + if not os.path.isdir(cert_loc): + conn.ca_certs = cert_loc + else: + conn.ca_cert_dir = cert_loc else: conn.cert_reqs = "CERT_NONE" conn.ca_certs = None @@ -330,8 +393,110 @@ class HTTPAdapter(BaseAdapter): return response + def build_connection_pool_key_attributes(self, request, verify, cert=None): + """Build the PoolKey attributes used by urllib3 to return a connection. + + This looks at the PreparedRequest, the user-specified verify value, + and the value of the cert parameter to determine what PoolKey values + to use to select a connection from a given urllib3 Connection Pool. + + The SSL related pool key arguments are not consistently set. As of + this writing, use the following to determine what keys may be in that + dictionary: + + * If ``verify`` is ``True``, ``"ssl_context"`` will be set and will be the + default Requests SSL Context + * If ``verify`` is ``False``, ``"ssl_context"`` will not be set but + ``"cert_reqs"`` will be set + * If ``verify`` is a string, (i.e., it is a user-specified trust bundle) + ``"ca_certs"`` will be set if the string is not a directory recognized + by :py:func:`os.path.isdir`, otherwise ``"ca_certs_dir"`` will be + set. + * If ``"cert"`` is specified, ``"cert_file"`` will always be set. If + ``"cert"`` is a tuple with a second item, ``"key_file"`` will also + be present + + To override these settings, one may subclass this class, call this + method and use the above logic to change parameters as desired. For + example, if one wishes to use a custom :py:class:`ssl.SSLContext` one + must both set ``"ssl_context"`` and based on what else they require, + alter the other keys to ensure the desired behaviour. + + :param request: + The PreparedReqest being sent over the connection. + :type request: + :class:`~requests.models.PreparedRequest` + :param verify: + Either a boolean, in which case it controls whether + we verify the server's TLS certificate, or a string, in which case it + must be a path to a CA bundle to use. + :param cert: + (optional) Any user-provided SSL certificate for client + authentication (a.k.a., mTLS). This may be a string (i.e., just + the path to a file which holds both certificate and key) or a + tuple of length 2 with the certificate file path and key file + path. + :returns: + A tuple of two dictionaries. The first is the "host parameters" + portion of the Pool Key including scheme, hostname, and port. The + second is a dictionary of SSLContext related parameters. + """ + return _urllib3_request_context(request, verify, cert, self.poolmanager) + + def get_connection_with_tls_context(self, request, verify, proxies=None, cert=None): + """Returns a urllib3 connection for the given request and TLS settings. + This should not be called from user code, and is only exposed for use + when subclassing the :class:`HTTPAdapter `. + + :param request: + The :class:`PreparedRequest ` object to be sent + over the connection. + :param verify: + Either a boolean, in which case it controls whether we verify the + server's TLS certificate, or a string, in which case it must be a + path to a CA bundle to use. + :param proxies: + (optional) The proxies dictionary to apply to the request. + :param cert: + (optional) Any user-provided SSL certificate to be used for client + authentication (a.k.a., mTLS). + :rtype: + urllib3.ConnectionPool + """ + proxy = select_proxy(request.url, proxies) + try: + host_params, pool_kwargs = self.build_connection_pool_key_attributes( + request, + verify, + cert, + ) + except ValueError as e: + raise InvalidURL(e, request=request) + if proxy: + proxy = prepend_scheme_if_needed(proxy, "http") + proxy_url = parse_url(proxy) + if not proxy_url.host: + raise InvalidProxyURL( + "Please check proxy URL. It is malformed " + "and could be missing the host." + ) + proxy_manager = self.proxy_manager_for(proxy) + conn = proxy_manager.connection_from_host( + **host_params, pool_kwargs=pool_kwargs + ) + else: + # Only scheme should be lower case + conn = self.poolmanager.connection_from_host( + **host_params, pool_kwargs=pool_kwargs + ) + + return conn + def get_connection(self, url, proxies=None): - """Returns a urllib3 connection for the given URL. This should not be + """DEPRECATED: Users should move to `get_connection_with_tls_context` + for all subclasses of HTTPAdapter using Requests>=2.32.2. + + Returns a urllib3 connection for the given URL. This should not be called from user code, and is only exposed for use when subclassing the :class:`HTTPAdapter `. @@ -339,6 +504,15 @@ class HTTPAdapter(BaseAdapter): :param proxies: (optional) A Requests-style dictionary of proxies used on this request. :rtype: urllib3.ConnectionPool """ + warnings.warn( + ( + "`get_connection` has been deprecated in favor of " + "`get_connection_with_tls_context`. Custom HTTPAdapter subclasses " + "will need to migrate for Requests>=2.32.2. Please see " + "https://github.com/psf/requests/pull/6710 for more details." + ), + DeprecationWarning, + ) proxy = select_proxy(url, proxies) if proxy: @@ -393,6 +567,9 @@ class HTTPAdapter(BaseAdapter): using_socks_proxy = proxy_scheme.startswith("socks") url = request.path_url + if url.startswith("//"): # Don't confuse urllib3 + url = f"/{url.lstrip('/')}" + if is_proxied_http_request and not using_socks_proxy: url = urldefragauth(request.url) @@ -453,7 +630,9 @@ class HTTPAdapter(BaseAdapter): """ try: - conn = self.get_connection(request.url, proxies) + conn = self.get_connection_with_tls_context( + request, verify, proxies=proxies, cert=cert + ) except LocationValueError as e: raise InvalidURL(e, request=request) @@ -485,63 +664,19 @@ class HTTPAdapter(BaseAdapter): timeout = TimeoutSauce(connect=timeout, read=timeout) try: - if not chunked: - resp = conn.urlopen( - method=request.method, - url=url, - body=request.body, - headers=request.headers, - redirect=False, - assert_same_host=False, - preload_content=False, - decode_content=False, - retries=self.max_retries, - timeout=timeout, - ) - - # Send the request. - else: - if hasattr(conn, "proxy_pool"): - conn = conn.proxy_pool - - low_conn = conn._get_conn(timeout=DEFAULT_POOL_TIMEOUT) - - try: - skip_host = "Host" in request.headers - low_conn.putrequest( - request.method, - url, - skip_accept_encoding=True, - skip_host=skip_host, - ) - - for header, value in request.headers.items(): - low_conn.putheader(header, value) - - low_conn.endheaders() - - for i in request.body: - low_conn.send(hex(len(i))[2:].encode("utf-8")) - low_conn.send(b"\r\n") - low_conn.send(i) - low_conn.send(b"\r\n") - low_conn.send(b"0\r\n\r\n") - - # Receive the response from the server - r = low_conn.getresponse() - - resp = HTTPResponse.from_httplib( - r, - pool=conn, - connection=low_conn, - preload_content=False, - decode_content=False, - ) - except Exception: - # If we hit any problems here, clean up the connection. - # Then, raise so that we can handle the actual exception. - low_conn.close() - raise + resp = conn.urlopen( + method=request.method, + url=url, + body=request.body, + headers=request.headers, + redirect=False, + assert_same_host=False, + preload_content=False, + decode_content=False, + retries=self.max_retries, + timeout=timeout, + chunked=chunked, + ) except (ProtocolError, OSError) as err: raise ConnectionError(err, request=request) diff --git a/gestao_raul/Lib/site-packages/pip/_vendor/requests/api.py b/gestao_raul/Lib/site-packages/pip/_vendor/requests/api.py index 2f71aae..5960744 100644 --- a/gestao_raul/Lib/site-packages/pip/_vendor/requests/api.py +++ b/gestao_raul/Lib/site-packages/pip/_vendor/requests/api.py @@ -25,7 +25,7 @@ def request(method, url, **kwargs): :param cookies: (optional) Dict or CookieJar object to send with the :class:`Request`. :param files: (optional) Dictionary of ``'name': file-like-objects`` (or ``{'name': file-tuple}``) for multipart encoding upload. ``file-tuple`` can be a 2-tuple ``('filename', fileobj)``, 3-tuple ``('filename', fileobj, 'content_type')`` - or a 4-tuple ``('filename', fileobj, 'content_type', custom_headers)``, where ``'content-type'`` is a string + or a 4-tuple ``('filename', fileobj, 'content_type', custom_headers)``, where ``'content_type'`` is a string defining the content type of the given file and ``custom_headers`` a dict-like object containing additional headers to add for the file. :param auth: (optional) Auth tuple to enable Basic/Digest/Custom HTTP Auth. @@ -106,7 +106,7 @@ def post(url, data=None, json=None, **kwargs): :param url: URL for the new :class:`Request` object. :param data: (optional) Dictionary, list of tuples, bytes, or file-like object to send in the body of the :class:`Request`. - :param json: (optional) json data to send in the body of the :class:`Request`. + :param json: (optional) A JSON serializable Python object to send in the body of the :class:`Request`. :param \*\*kwargs: Optional arguments that ``request`` takes. :return: :class:`Response ` object :rtype: requests.Response @@ -121,7 +121,7 @@ def put(url, data=None, **kwargs): :param url: URL for the new :class:`Request` object. :param data: (optional) Dictionary, list of tuples, bytes, or file-like object to send in the body of the :class:`Request`. - :param json: (optional) json data to send in the body of the :class:`Request`. + :param json: (optional) A JSON serializable Python object to send in the body of the :class:`Request`. :param \*\*kwargs: Optional arguments that ``request`` takes. :return: :class:`Response ` object :rtype: requests.Response @@ -136,7 +136,7 @@ def patch(url, data=None, **kwargs): :param url: URL for the new :class:`Request` object. :param data: (optional) Dictionary, list of tuples, bytes, or file-like object to send in the body of the :class:`Request`. - :param json: (optional) json data to send in the body of the :class:`Request`. + :param json: (optional) A JSON serializable Python object to send in the body of the :class:`Request`. :param \*\*kwargs: Optional arguments that ``request`` takes. :return: :class:`Response ` object :rtype: requests.Response diff --git a/gestao_raul/Lib/site-packages/pip/_vendor/requests/auth.py b/gestao_raul/Lib/site-packages/pip/_vendor/requests/auth.py index 9733686..4a7ce6d 100644 --- a/gestao_raul/Lib/site-packages/pip/_vendor/requests/auth.py +++ b/gestao_raul/Lib/site-packages/pip/_vendor/requests/auth.py @@ -258,7 +258,6 @@ class HTTPDigestAuth(AuthBase): s_auth = r.headers.get("www-authenticate", "") if "digest" in s_auth.lower() and self._thread_local.num_401_calls < 2: - self._thread_local.num_401_calls += 1 pat = re.compile(r"digest ", flags=re.IGNORECASE) self._thread_local.chal = parse_dict_header(pat.sub("", s_auth, count=1)) diff --git a/gestao_raul/Lib/site-packages/pip/_vendor/requests/certs.py b/gestao_raul/Lib/site-packages/pip/_vendor/requests/certs.py index 38696a1..2743144 100644 --- a/gestao_raul/Lib/site-packages/pip/_vendor/requests/certs.py +++ b/gestao_raul/Lib/site-packages/pip/_vendor/requests/certs.py @@ -11,14 +11,7 @@ If you are packaging Requests, e.g., for a Linux distribution or a managed environment, you can change the definition of where() to return a separately packaged CA bundle. """ - -import os - -if "_PIP_STANDALONE_CERT" not in os.environ: - from pip._vendor.certifi import where -else: - def where(): - return os.environ["_PIP_STANDALONE_CERT"] +from pip._vendor.certifi import where if __name__ == "__main__": print(where()) diff --git a/gestao_raul/Lib/site-packages/pip/_vendor/requests/compat.py b/gestao_raul/Lib/site-packages/pip/_vendor/requests/compat.py index 9ab2bb4..7081da7 100644 --- a/gestao_raul/Lib/site-packages/pip/_vendor/requests/compat.py +++ b/gestao_raul/Lib/site-packages/pip/_vendor/requests/compat.py @@ -7,10 +7,21 @@ between Python 2 and Python 3. It remains for backwards compatibility until the next major version. """ -from pip._vendor import chardet - import sys +# ------------------- +# Character Detection +# ------------------- + + +def _resolve_char_detection(): + """Find supported character detection libraries.""" + chardet = None + return chardet + + +chardet = _resolve_char_detection() + # ------- # Pythons # ------- diff --git a/gestao_raul/Lib/site-packages/pip/_vendor/requests/cookies.py b/gestao_raul/Lib/site-packages/pip/_vendor/requests/cookies.py index bf54ab2..f69d0cd 100644 --- a/gestao_raul/Lib/site-packages/pip/_vendor/requests/cookies.py +++ b/gestao_raul/Lib/site-packages/pip/_vendor/requests/cookies.py @@ -2,7 +2,7 @@ requests.cookies ~~~~~~~~~~~~~~~~ -Compatibility code to be able to use `cookielib.CookieJar` with requests. +Compatibility code to be able to use `http.cookiejar.CookieJar` with requests. requests.utils imports from here, so be careful with imports. """ @@ -23,7 +23,7 @@ except ImportError: class MockRequest: """Wraps a `requests.Request` to mimic a `urllib2.Request`. - The code in `cookielib.CookieJar` expects this interface in order to correctly + The code in `http.cookiejar.CookieJar` expects this interface in order to correctly manage cookie policies, i.e., determine whether a cookie can be set, given the domains of the request and the cookie. @@ -76,7 +76,7 @@ class MockRequest: return self._r.headers.get(name, self._new_headers.get(name, default)) def add_header(self, key, val): - """cookielib has no legitimate use for this method; add it back if you find one.""" + """cookiejar has no legitimate use for this method; add it back if you find one.""" raise NotImplementedError( "Cookie headers should be added with add_unredirected_header()" ) @@ -104,11 +104,11 @@ class MockResponse: """Wraps a `httplib.HTTPMessage` to mimic a `urllib.addinfourl`. ...what? Basically, expose the parsed HTTP headers from the server response - the way `cookielib` expects to see them. + the way `http.cookiejar` expects to see them. """ def __init__(self, headers): - """Make a MockResponse for `cookielib` to read. + """Make a MockResponse for `cookiejar` to read. :param headers: a httplib.HTTPMessage or analogous carrying the headers """ @@ -124,7 +124,7 @@ class MockResponse: def extract_cookies_to_jar(jar, request, response): """Extract the cookies from the response into a CookieJar. - :param jar: cookielib.CookieJar (not necessarily a RequestsCookieJar) + :param jar: http.cookiejar.CookieJar (not necessarily a RequestsCookieJar) :param request: our own requests.Request object :param response: urllib3.HTTPResponse object """ @@ -174,7 +174,7 @@ class CookieConflictError(RuntimeError): class RequestsCookieJar(cookielib.CookieJar, MutableMapping): - """Compatibility class; is a cookielib.CookieJar, but exposes a dict + """Compatibility class; is a http.cookiejar.CookieJar, but exposes a dict interface. This is the CookieJar we create by default for requests and sessions that @@ -341,7 +341,7 @@ class RequestsCookieJar(cookielib.CookieJar, MutableMapping): self.set(name, value) def __delitem__(self, name): - """Deletes a cookie given a name. Wraps ``cookielib.CookieJar``'s + """Deletes a cookie given a name. Wraps ``http.cookiejar.CookieJar``'s ``remove_cookie_by_name()``. """ remove_cookie_by_name(self, name) diff --git a/gestao_raul/Lib/site-packages/pip/_vendor/requests/exceptions.py b/gestao_raul/Lib/site-packages/pip/_vendor/requests/exceptions.py index 168d073..7f3660f 100644 --- a/gestao_raul/Lib/site-packages/pip/_vendor/requests/exceptions.py +++ b/gestao_raul/Lib/site-packages/pip/_vendor/requests/exceptions.py @@ -41,6 +41,16 @@ class JSONDecodeError(InvalidJSONError, CompatJSONDecodeError): CompatJSONDecodeError.__init__(self, *args) InvalidJSONError.__init__(self, *self.args, **kwargs) + def __reduce__(self): + """ + The __reduce__ method called when pickling the object must + be the one from the JSONDecodeError (be it json/simplejson) + as it expects all the arguments for instantiation, not just + one like the IOError, and the MRO would by default call the + __reduce__ method from the IOError due to the inheritance order. + """ + return CompatJSONDecodeError.__reduce__(self) + class HTTPError(RequestException): """An HTTP error occurred.""" diff --git a/gestao_raul/Lib/site-packages/pip/_vendor/requests/help.py b/gestao_raul/Lib/site-packages/pip/_vendor/requests/help.py index 2d292c2..ddbb615 100644 --- a/gestao_raul/Lib/site-packages/pip/_vendor/requests/help.py +++ b/gestao_raul/Lib/site-packages/pip/_vendor/requests/help.py @@ -11,11 +11,7 @@ from pip._vendor import urllib3 from . import __version__ as requests_version charset_normalizer = None - -try: - from pip._vendor import chardet -except ImportError: - chardet = None +chardet = None try: from pip._vendor.urllib3.contrib import pyopenssl diff --git a/gestao_raul/Lib/site-packages/pip/_vendor/requests/models.py b/gestao_raul/Lib/site-packages/pip/_vendor/requests/models.py index 76e6f19..85a008c 100644 --- a/gestao_raul/Lib/site-packages/pip/_vendor/requests/models.py +++ b/gestao_raul/Lib/site-packages/pip/_vendor/requests/models.py @@ -170,7 +170,7 @@ class RequestEncodingMixin: ) ) - for (k, v) in files: + for k, v in files: # support for explicit filename ft = None fh = None @@ -268,7 +268,6 @@ class Request(RequestHooksMixin): hooks=None, json=None, ): - # Default empty dicts for dict params. data = [] if data is None else data files = [] if files is None else files @@ -277,7 +276,7 @@ class Request(RequestHooksMixin): hooks = {} if hooks is None else hooks self.hooks = default_hooks() - for (k, v) in list(hooks.items()): + for k, v in list(hooks.items()): self.register_hook(event=k, hook=v) self.method = method @@ -790,7 +789,12 @@ class Response: @property def apparent_encoding(self): """The apparent encoding, provided by the charset_normalizer or chardet libraries.""" - return chardet.detect(self.content)["encoding"] + if chardet is not None: + return chardet.detect(self.content)["encoding"] + else: + # If no character detection library is available, we'll fall back + # to a standard Python utf-8 str. + return "utf-8" def iter_content(self, chunk_size=1, decode_unicode=False): """Iterates over the response data. When stream=True is set on the @@ -865,7 +869,6 @@ class Response: for chunk in self.iter_content( chunk_size=chunk_size, decode_unicode=decode_unicode ): - if pending is not None: chunk = pending + chunk diff --git a/gestao_raul/Lib/site-packages/pip/_vendor/requests/packages.py b/gestao_raul/Lib/site-packages/pip/_vendor/requests/packages.py index 9582fa7..200c382 100644 --- a/gestao_raul/Lib/site-packages/pip/_vendor/requests/packages.py +++ b/gestao_raul/Lib/site-packages/pip/_vendor/requests/packages.py @@ -1,9 +1,11 @@ import sys +from .compat import chardet + # This code exists for backwards compatibility reasons. # I don't like it either. Just look the other way. :) -for package in ('urllib3', 'idna', 'chardet'): +for package in ("urllib3", "idna"): vendored_package = "pip._vendor." + package locals()[package] = __import__(vendored_package) # This traversal is apparently necessary such that the identities are @@ -13,4 +15,11 @@ for package in ('urllib3', 'idna', 'chardet'): unprefixed_mod = mod[len("pip._vendor."):] sys.modules['pip._vendor.requests.packages.' + unprefixed_mod] = sys.modules[mod] -# Kinda cool, though, right? +if chardet is not None: + target = chardet.__name__ + for mod in list(sys.modules): + if mod == target or mod.startswith(f"{target}."): + imported_mod = sys.modules[mod] + sys.modules[f"requests.packages.{mod}"] = imported_mod + mod = mod.replace(target, "chardet") + sys.modules[f"requests.packages.{mod}"] = imported_mod diff --git a/gestao_raul/Lib/site-packages/pip/_vendor/requests/sessions.py b/gestao_raul/Lib/site-packages/pip/_vendor/requests/sessions.py index 6cb3b4d..b387bc3 100644 --- a/gestao_raul/Lib/site-packages/pip/_vendor/requests/sessions.py +++ b/gestao_raul/Lib/site-packages/pip/_vendor/requests/sessions.py @@ -262,7 +262,6 @@ class SessionRedirectMixin: if yield_requests: yield req else: - resp = self.send( req, stream=stream, @@ -324,7 +323,9 @@ class SessionRedirectMixin: except KeyError: username, password = None, None - if username and password: + # urllib3 handles proxy authorization for us in the standard adapter. + # Avoid appending this to TLS tunneled requests where it may be leaked. + if not scheme.startswith("https") and username and password: headers["Proxy-Authorization"] = _basic_auth_str(username, password) return new_proxies @@ -387,7 +388,6 @@ class Session(SessionRedirectMixin): ] def __init__(self): - #: A case-insensitive dictionary of headers to be sent on each #: :class:`Request ` sent from this #: :class:`Session `. @@ -543,6 +543,8 @@ class Session(SessionRedirectMixin): :type allow_redirects: bool :param proxies: (optional) Dictionary mapping protocol or protocol and hostname to the URL of the proxy. + :param hooks: (optional) Dictionary mapping hook name to one event or + list of events, event must be callable. :param stream: (optional) whether to immediately download the response content. Defaults to ``False``. :param verify: (optional) Either a boolean, in which case it controls whether we verify @@ -709,7 +711,6 @@ class Session(SessionRedirectMixin): # Persist cookies if r.history: - # If the hooks create history then we want those cookies too for resp in r.history: extract_cookies_to_jar(self.cookies, resp.request, resp.raw) @@ -757,7 +758,7 @@ class Session(SessionRedirectMixin): # Set environment's proxies. no_proxy = proxies.get("no_proxy") if proxies is not None else None env_proxies = get_environ_proxies(url, no_proxy=no_proxy) - for (k, v) in env_proxies.items(): + for k, v in env_proxies.items(): proxies.setdefault(k, v) # Look for requests environment configuration @@ -783,8 +784,7 @@ class Session(SessionRedirectMixin): :rtype: requests.adapters.BaseAdapter """ - for (prefix, adapter) in self.adapters.items(): - + for prefix, adapter in self.adapters.items(): if url.lower().startswith(prefix.lower()): return adapter diff --git a/gestao_raul/Lib/site-packages/pip/_vendor/requests/status_codes.py b/gestao_raul/Lib/site-packages/pip/_vendor/requests/status_codes.py index 4bd072b..c7945a2 100644 --- a/gestao_raul/Lib/site-packages/pip/_vendor/requests/status_codes.py +++ b/gestao_raul/Lib/site-packages/pip/_vendor/requests/status_codes.py @@ -24,7 +24,7 @@ _codes = { # Informational. 100: ("continue",), 101: ("switching_protocols",), - 102: ("processing",), + 102: ("processing", "early-hints"), 103: ("checkpoint",), 122: ("uri_too_long", "request_uri_too_long"), 200: ("ok", "okay", "all_ok", "all_okay", "all_good", "\\o/", "✓"), @@ -65,8 +65,8 @@ _codes = { 410: ("gone",), 411: ("length_required",), 412: ("precondition_failed", "precondition"), - 413: ("request_entity_too_large",), - 414: ("request_uri_too_large",), + 413: ("request_entity_too_large", "content_too_large"), + 414: ("request_uri_too_large", "uri_too_long"), 415: ("unsupported_media_type", "unsupported_media", "media_type"), 416: ( "requested_range_not_satisfiable", @@ -76,10 +76,10 @@ _codes = { 417: ("expectation_failed",), 418: ("im_a_teapot", "teapot", "i_am_a_teapot"), 421: ("misdirected_request",), - 422: ("unprocessable_entity", "unprocessable"), + 422: ("unprocessable_entity", "unprocessable", "unprocessable_content"), 423: ("locked",), 424: ("failed_dependency", "dependency"), - 425: ("unordered_collection", "unordered"), + 425: ("unordered_collection", "unordered", "too_early"), 426: ("upgrade_required", "upgrade"), 428: ("precondition_required", "precondition"), 429: ("too_many_requests", "too_many"), diff --git a/gestao_raul/Lib/site-packages/pip/_vendor/requests/utils.py b/gestao_raul/Lib/site-packages/pip/_vendor/requests/utils.py index 33f394d..a35ce47 100644 --- a/gestao_raul/Lib/site-packages/pip/_vendor/requests/utils.py +++ b/gestao_raul/Lib/site-packages/pip/_vendor/requests/utils.py @@ -25,7 +25,12 @@ from . import certs from .__version__ import __version__ # to_native_string is unused here, but imported here for backwards compatibility -from ._internal_utils import HEADER_VALIDATORS, to_native_string # noqa: F401 +from ._internal_utils import ( # noqa: F401 + _HEADER_VALIDATORS_BYTE, + _HEADER_VALIDATORS_STR, + HEADER_VALIDATORS, + to_native_string, +) from .compat import ( Mapping, basestring, @@ -92,6 +97,8 @@ if sys.platform == "win32": # '' string by the localhost entry and the corresponding # canonical entry. proxyOverride = proxyOverride.split(";") + # filter out empty strings to avoid re.match return true in the following code. + proxyOverride = filter(None, proxyOverride) # now check if we match one of the registry values. for test in proxyOverride: if test == "": @@ -129,6 +136,9 @@ def super_len(o): total_length = None current_position = 0 + if isinstance(o, str): + o = o.encode("utf-8") + if hasattr(o, "__len__"): total_length = len(o) @@ -461,11 +471,7 @@ def dict_from_cookiejar(cj): :rtype: dict """ - cookie_dict = {} - - for cookie in cj: - cookie_dict[cookie.name] = cookie.value - + cookie_dict = {cookie.name: cookie.value for cookie in cj} return cookie_dict @@ -762,6 +768,7 @@ def should_bypass_proxies(url, no_proxy): :rtype: bool """ + # Prioritize lowercase environment variables over uppercase # to keep a consistent behaviour with other http projects (curl, wget). def get_proxy(key): @@ -857,7 +864,7 @@ def select_proxy(url, proxies): def resolve_proxies(request, proxies, trust_env=True): """This method takes proxy information from a request and configuration input to resolve a mapping of target proxies. This will consider settings - such a NO_PROXY to strip proxy configurations. + such as NO_PROXY to strip proxy configurations. :param request: Request or PreparedRequest :param proxies: A dictionary of schemes or schemes and hosts to proxy URLs @@ -1031,22 +1038,25 @@ def check_header_validity(header): :param header: tuple, in the format (name, value). """ name, value = header - - for part in header: - if type(part) not in HEADER_VALIDATORS: - raise InvalidHeader( - f"Header part ({part!r}) from {{{name!r}: {value!r}}} must be " - f"of type str or bytes, not {type(part)}" - ) - - _validate_header_part(name, "name", HEADER_VALIDATORS[type(name)][0]) - _validate_header_part(value, "value", HEADER_VALIDATORS[type(value)][1]) + _validate_header_part(header, name, 0) + _validate_header_part(header, value, 1) -def _validate_header_part(header_part, header_kind, validator): - if not validator.match(header_part): +def _validate_header_part(header, header_part, header_validator_index): + if isinstance(header_part, str): + validator = _HEADER_VALIDATORS_STR[header_validator_index] + elif isinstance(header_part, bytes): + validator = _HEADER_VALIDATORS_BYTE[header_validator_index] + else: raise InvalidHeader( - f"Invalid leading whitespace, reserved character(s), or return" + f"Header part ({header_part!r}) from {header} " + f"must be of type str or bytes, not {type(header_part)}" + ) + + if not validator.match(header_part): + header_kind = "name" if header_validator_index == 0 else "value" + raise InvalidHeader( + f"Invalid leading whitespace, reserved character(s), or return " f"character(s) in header {header_kind}: {header_part!r}" ) diff --git a/gestao_raul/Lib/site-packages/pip/_vendor/resolvelib/__init__.py b/gestao_raul/Lib/site-packages/pip/_vendor/resolvelib/__init__.py index ce05fd3..d92acc7 100644 --- a/gestao_raul/Lib/site-packages/pip/_vendor/resolvelib/__init__.py +++ b/gestao_raul/Lib/site-packages/pip/_vendor/resolvelib/__init__.py @@ -11,7 +11,7 @@ __all__ = [ "ResolutionTooDeep", ] -__version__ = "0.8.1" +__version__ = "1.0.1" from .providers import AbstractProvider, AbstractResolver diff --git a/gestao_raul/Lib/site-packages/pip/_vendor/resolvelib/__pycache__/__init__.cpython-310.pyc b/gestao_raul/Lib/site-packages/pip/_vendor/resolvelib/__pycache__/__init__.cpython-310.pyc index c9a2a70b0b5d1b377b3d18161ee8227b93a223d2..25f570549c937ca4b77d906221c90ae15fdee1db 100644 GIT binary patch delta 43 xcmcb|a)X6CpO=@50SFfPt=`D3&d6-2XE526aT#O$P& tGEe5^C}l58EXvF;E#BP6@qwAKZ*o14E;G=I&8vB0*ccNxa|r)r0|3}uG4cQa delta 146 zcmexm+-Sm^&&$ij00h-PLeoD?n& zMa41YsW~P2F)sPZr69@TnDo@*lEnP@qQugi$<9oZ86R)H&Q!)Y*@Rbbas^Ap=Fco5 w%#3-H**Qvi5*5l4i!$>|ixu+IHaBy8U}o%^T*9Nfc_~jc8)NEbM&X}q08tn;$N&HU diff --git a/gestao_raul/Lib/site-packages/pip/_vendor/resolvelib/__pycache__/reporters.cpython-310.pyc b/gestao_raul/Lib/site-packages/pip/_vendor/resolvelib/__pycache__/reporters.cpython-310.pyc index a54aeed6054521eebd07b36026a7c4b9b26b55f5..4da9a592ef7ec621d6cc501a4af325648597cfec 100644 GIT binary patch delta 137 zcmbOzvRZ^UpO=@50SFfPtxk8`$Q#edm@qk)QIa(%$jQ}t^F+pUw#ge=Me z7qI|U-r`Iy$}CAO%FNH39K#_kDqNJBm6}|VnU@})oS2uAnUYwNsy_KFyQCn7@Z^hZ Wijz-rIB;q*fsHB>-ptL(#s~nL$S8OK delta 109 zcmZ22GEsy#pO=@50SKypgr@6nBqb(imlOes%)E5<$?uuPQA8&1=162J656cF$;Jo(&r%@M diff --git a/gestao_raul/Lib/site-packages/pip/_vendor/resolvelib/__pycache__/resolvers.cpython-310.pyc b/gestao_raul/Lib/site-packages/pip/_vendor/resolvelib/__pycache__/resolvers.cpython-310.pyc index d5f6679087dd15bd2ba2ebd80b8b80c0727e988e..a95556a4a3e9b625204f494af42efd876eb52421 100644 GIT binary patch delta 5565 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 delta 3398 zcmZuzYiwLc6~5=b_U^;GYw!A*_>tJ5*^oF-=RxAcwVh|3Cd#vQ8_Z_s+F5(O>&(4Q z6X!15#4d5DQW{32fC{V?0)zlfcPq?d!5M`G?a;I~7)CzC!pMj1 zF!B-PBdiMfD#=$NA7wG*V|FQu3NaMKSv3l(r9vF}8kRslVaKt(8u=uvMZQ+@HPV1O zR*#b>u&seLVq2q4Vvov^!8Mj_dbfk$A#*0UE_! z<1{2ipZR-e6ODm)Vfk0BJS-ChYd^HkziA!Sp+_XD{tmmu|Eey*PB9&Q2~wga)&cv) zrr0wuAViGA7V(#j2~qy69zKYZ@~sF{%f*Fwt>}&?^=-(Cd$mcCjaQimNTFMJ@yB6@ z=&5cnI#IAv{4rik^dNN@zXi*6;5`eL=b%^otGWUD1O)2gDbZZ>OrjSxkK=dWUuP0{ zuhjldO%NUzH*5OP=J#rvVYlovB-#_ppkI`&hS)Cb^?CgGPJ&%xBC#8ocq3u!hm}=f{9OHMXnKO$YSN5l^CLstK0TS`_PCvQ`986-aS#`I zsj(w22eoMAAi)Xo^Tus(S-juK#GB1ya6+V77Hy?TQ$fCu28@o_?$89chiz`>GdL}E zBP+QFYFW7Terd6;+@t5rr%3+wY4^ll3qPQj9`Kwj!OE9c5EDkf4rGZn6S;bSQ)r&9-qoL98tirS_ zI2v-w(orZ!Je>w7cC@M-^?)gJD)I{wack+SaE_KSPLLOWUD|H`nMf`o?cJp_NTy;R zbIlrRJ4;YQ@DzdcuS?Wp1S<(-egr16`8*~_#hjdAY1j4>PMau9qyoMNAH}DSdXXfDUg{coK+>pDN(-0iEIO1o0w zik7qUToyNvMv=uWfVq}+?QuV|3?dyrX=Q>&K3X(pDIdgcSO;X;i=5*C_|XB{mO~9qBa#l zmB6eb7OmY>Qp!iB^CHSjoWA-_}a4jb_c{9={E3i49M`$(bZuO^*KwsOGRQab?PHEmA{NXSv*sVWM)<( zhbHrGcHG{{d4c;y(!vzuF6G}I@rw;D$LWCiSizNLmTn8awX|(yqE-x^&X3rY=)>+q zyfBH|>_t?-J(s70xuT6{^L&iDltfQgW6M{Fqyx7S@ii7Y?Ltv1EWED8P!!+j>exmJ zUx^N`Fwn5Y}m|(V7Ku%=HMU zBDb*_V&cmiJ5uCYxe9rl`W8}j{F9|blr(jY?pUe4$e+T`X+p3R9V}BdLWow>dd!Mh zA*4DYPxHN^b<^vi9jH`Mvy3~UvZ>XS$MaS3VAERT2DZE?x;C$Z8}pgXr@*|90)7FH z?iRQ%{`xztw}rwlYl|_$(-Ws;Wl4qoTM9X!%Tej*;ol{Y z2GG=;EaOx*D}hWQpSLqE{~>ZI%MbSv1r_-BNa@D}R|#ZQ`~gun38Ya!B1$^GYUt!- zHplP+=1k_?Ik9wWH@qhAkv~ZU=Zjl^ZEpV-Dr21`AM*VKPZG=#yoP{HRPT5f0qIsk zGMMsEz-u3-H=cir@-~QX_qN09;+MUvL58LMHj3XOw^&F}STNoyCuypYe+_>;Bi8k? uR1c9dgDK7Yo2N8KI)ywSE#bE@*!AKMeKC`65EhoSzV^VfNW#*RE&m6zLMO8T diff --git a/gestao_raul/Lib/site-packages/pip/_vendor/resolvelib/__pycache__/structs.cpython-310.pyc b/gestao_raul/Lib/site-packages/pip/_vendor/resolvelib/__pycache__/structs.cpython-310.pyc index 4825c5b2481b44076ae9a3e732011e14774a37f7..87eb4d1a1e6fa7168d75eed3cfeb67df3db93c84 100644 GIT binary patch delta 569 zcmXw#O>fgc5QcYl9oGqo3ADA1P5BTKs-Z#z4n!RINZ?wDgmS@&RbqpvN~5kFAsSmb zAUJXvA#qF)7sLtm3^83kYe_7V;Ay;>_Jdpf-rz~Rl_o)})wtc=-I9jyvo3&tGr}`Zw$|ugPn)$Tfw_3SIncIVIKm8VI zvz?_530_eoCc$7D7`h=0p@}k=9UQt}^?S;)gAMNjyu)p89wL0<)paG55qa1+^-hS> GW$Q1$8HX+a delta 518 zcmXv}L2DCH5PolWvwbz2NK?DpZrW0mLZVfW9$X@5wH`&PAr{(&kT%;=iLT6UDQQv= z#Dh0wz>5bPZ@pE#c~O5tZ>7PbCoh5*OD}%AwGU?a=9`)Cebe_&ZsfyU?wr8u{H?8j zDSXQJ<#cnt;@6^pB7ZAr#i4&MT-|&cJc}cLJ&58)Sf|Ej>$B3n6{h|qyIt88b}e0S&CX7#vr{f-=oV&=jJW+gpxG3*HlmoSystUu={A@)BGQmtuHd5|BPA1RvL`re z&&Vo!_7&OXrai~MM+~;|gTo5L7!kcQ-}LBIZU~K6XL1U1ZA(|WF<@!50Q&9z7#}*n z40?#84n{rshCA*hoaQ+-w97_nmL3DAUdc~nv#Co?$h-W)oq$6JHWcS{Yk=kwKAkh^ z4)8ljUgR0~y8KTjp5BAJESLCec64GH^=m|wM^eI&%2bI-9VVB#?|wHI(E$8dye2>J ZL2+2F@Xw-WCX2KJ4Tme^llr)2{{z(pe-Qux diff --git a/gestao_raul/Lib/site-packages/pip/_vendor/resolvelib/compat/__pycache__/__init__.cpython-310.pyc b/gestao_raul/Lib/site-packages/pip/_vendor/resolvelib/compat/__pycache__/__init__.cpython-310.pyc index 1d05bba4c1a131165cef6372c0d3eb3f6ef44802..a35ef6f4ce1f0b47150849f0805e611ca242e662 100644 GIT binary patch delta 54 zcmX@fc$kqppO=@50SFfPt)9qjBcJAM6%$&VT2vfUo|;pVALEjrT$-DjS5h1k6y)UU IJTWI00Ju#N$p8QV delta 60 zcmX@ic#@GjpO=@50SKypgihqPQO$9-iU}=FEh>&FPt7UGk8#OQF3nBND=CgiPc1G< O%#SZhEX|pi77GA8-xVYP diff --git a/gestao_raul/Lib/site-packages/pip/_vendor/resolvelib/compat/__pycache__/collections_abc.cpython-310.pyc b/gestao_raul/Lib/site-packages/pip/_vendor/resolvelib/compat/__pycache__/collections_abc.cpython-310.pyc index b08577fa1cd161d85237511648d531b2f41fe6ed..8b626185828ec23f3627d6cf26f9301ed167b892 100644 GIT binary patch delta 55 zcmey#^qGk}pO=@50SFfPt)9qzTRzv>DkiizwWv6zJT<2zKgK0LximL5ucSC8D9Fjx Jc``R+9su=A5`+K% delta 61 zcmey&^plA@pO=@50SKypgihqXty=7C6%$&VT2vfUo|;pVALEjrT$-DjS5h34o?2Xz Pm>*x1Sei4Ll`#(hgJ>1s diff --git a/gestao_raul/Lib/site-packages/pip/_vendor/resolvelib/providers.py b/gestao_raul/Lib/site-packages/pip/_vendor/resolvelib/providers.py index 7d0a9c2..e99d87e 100644 --- a/gestao_raul/Lib/site-packages/pip/_vendor/resolvelib/providers.py +++ b/gestao_raul/Lib/site-packages/pip/_vendor/resolvelib/providers.py @@ -1,5 +1,5 @@ class AbstractProvider(object): - """Delegate class to provide requirement interface for the resolver.""" + """Delegate class to provide the required interface for the resolver.""" def identify(self, requirement_or_candidate): """Given a requirement, return an identifier for it. @@ -24,9 +24,9 @@ class AbstractProvider(object): this group of arguments is. :param identifier: An identifier as returned by ``identify()``. This - identifies the dependency matches of which should be returned. + identifies the dependency matches which should be returned. :param resolutions: Mapping of candidates currently pinned by the - resolver. Each key is an identifier, and the value a candidate. + resolver. Each key is an identifier, and the value is a candidate. The candidate may conflict with requirements from ``information``. :param candidates: Mapping of each dependency's possible candidates. Each value is an iterator of candidates. @@ -39,10 +39,10 @@ class AbstractProvider(object): * ``requirement`` specifies a requirement contributing to the current list of candidates. - * ``parent`` specifies the candidate that provides (dependend on) the + * ``parent`` specifies the candidate that provides (depended on) the requirement, or ``None`` to indicate a root requirement. - The preference could depend on a various of issues, including (not + The preference could depend on various issues, including (not necessarily in this order): * Is this package pinned in the current resolution result? @@ -61,7 +61,7 @@ class AbstractProvider(object): raise NotImplementedError def find_matches(self, identifier, requirements, incompatibilities): - """Find all possible candidates that satisfy given constraints. + """Find all possible candidates that satisfy the given constraints. :param identifier: An identifier as returned by ``identify()``. This identifies the dependency matches of which should be returned. @@ -92,7 +92,7 @@ class AbstractProvider(object): def is_satisfied_by(self, requirement, candidate): """Whether the given requirement can be satisfied by a candidate. - The candidate is guarenteed to have been generated from the + The candidate is guaranteed to have been generated from the requirement. A boolean should be returned to indicate whether ``candidate`` is a diff --git a/gestao_raul/Lib/site-packages/pip/_vendor/resolvelib/py.typed b/gestao_raul/Lib/site-packages/pip/_vendor/resolvelib/py.typed new file mode 100644 index 0000000..e69de29 diff --git a/gestao_raul/Lib/site-packages/pip/_vendor/resolvelib/reporters.py b/gestao_raul/Lib/site-packages/pip/_vendor/resolvelib/reporters.py index 6695480..688b5e1 100644 --- a/gestao_raul/Lib/site-packages/pip/_vendor/resolvelib/reporters.py +++ b/gestao_raul/Lib/site-packages/pip/_vendor/resolvelib/reporters.py @@ -36,7 +36,7 @@ class BaseReporter(object): :param causes: The information on the collision that caused the backtracking. """ - def backtracking(self, candidate): + def rejecting_candidate(self, criterion, candidate): """Called when rejecting a candidate during backtracking.""" def pinning(self, candidate): diff --git a/gestao_raul/Lib/site-packages/pip/_vendor/resolvelib/resolvers.py b/gestao_raul/Lib/site-packages/pip/_vendor/resolvelib/resolvers.py index 787681b..2c3d0e3 100644 --- a/gestao_raul/Lib/site-packages/pip/_vendor/resolvelib/resolvers.py +++ b/gestao_raul/Lib/site-packages/pip/_vendor/resolvelib/resolvers.py @@ -1,4 +1,5 @@ import collections +import itertools import operator from .providers import AbstractResolver @@ -173,6 +174,31 @@ class Resolution(object): raise RequirementsConflicted(criterion) criteria[identifier] = criterion + def _remove_information_from_criteria(self, criteria, parents): + """Remove information from parents of criteria. + + Concretely, removes all values from each criterion's ``information`` + field that have one of ``parents`` as provider of the requirement. + + :param criteria: The criteria to update. + :param parents: Identifiers for which to remove information from all criteria. + """ + if not parents: + return + for key, criterion in criteria.items(): + criteria[key] = Criterion( + criterion.candidates, + [ + information + for information in criterion.information + if ( + information.parent is None + or self._p.identify(information.parent) not in parents + ) + ], + criterion.incompatibilities, + ) + def _get_preference(self, name): return self._p.get_preference( identifier=name, @@ -212,6 +238,7 @@ class Resolution(object): try: criteria = self._get_updated_criteria(candidate) except RequirementsConflicted as e: + self._r.rejecting_candidate(e.criterion, candidate) causes.append(e.criterion) continue @@ -240,8 +267,8 @@ class Resolution(object): # end, signal for backtracking. return causes - def _backtrack(self): - """Perform backtracking. + def _backjump(self, causes): + """Perform backjumping. When we enter here, the stack is like this:: @@ -257,22 +284,46 @@ class Resolution(object): Each iteration of the loop will: - 1. Discard Z. - 2. Discard Y but remember its incompatibility information gathered + 1. Identify Z. The incompatibility is not always caused by the latest + state. For example, given three requirements A, B and C, with + dependencies A1, B1 and C1, where A1 and B1 are incompatible: the + last state might be related to C, so we want to discard the + previous state. + 2. Discard Z. + 3. Discard Y but remember its incompatibility information gathered previously, and the failure we're dealing with right now. - 3. Push a new state Y' based on X, and apply the incompatibility + 4. Push a new state Y' based on X, and apply the incompatibility information from Y to Y'. - 4a. If this causes Y' to conflict, we need to backtrack again. Make Y' + 5a. If this causes Y' to conflict, we need to backtrack again. Make Y' the new Z and go back to step 2. - 4b. If the incompatibilities apply cleanly, end backtracking. + 5b. If the incompatibilities apply cleanly, end backtracking. """ + incompatible_reqs = itertools.chain( + (c.parent for c in causes if c.parent is not None), + (c.requirement for c in causes), + ) + incompatible_deps = {self._p.identify(r) for r in incompatible_reqs} while len(self._states) >= 3: # Remove the state that triggered backtracking. del self._states[-1] - # Retrieve the last candidate pin and known incompatibilities. - broken_state = self._states.pop() - name, candidate = broken_state.mapping.popitem() + # Ensure to backtrack to a state that caused the incompatibility + incompatible_state = False + while not incompatible_state: + # Retrieve the last candidate pin and known incompatibilities. + try: + broken_state = self._states.pop() + name, candidate = broken_state.mapping.popitem() + except (IndexError, KeyError): + raise ResolutionImpossible(causes) + current_dependencies = { + self._p.identify(d) + for d in self._p.get_dependencies(candidate) + } + incompatible_state = not current_dependencies.isdisjoint( + incompatible_deps + ) + incompatibilities_from_broken = [ (k, list(v.incompatibilities)) for k, v in broken_state.criteria.items() @@ -281,8 +332,6 @@ class Resolution(object): # Also mark the newly known incompatibility. incompatibilities_from_broken.append((name, [candidate])) - self._r.backtracking(candidate=candidate) - # Create a new state from the last known-to-work one, and apply # the previously gathered incompatibility information. def _patch_criteria(): @@ -368,22 +417,38 @@ class Resolution(object): self._r.ending(state=self.state) return self.state + # keep track of satisfied names to calculate diff after pinning + satisfied_names = set(self.state.criteria.keys()) - set( + unsatisfied_names + ) + # Choose the most preferred unpinned criterion to try. name = min(unsatisfied_names, key=self._get_preference) failure_causes = self._attempt_to_pin_criterion(name) if failure_causes: causes = [i for c in failure_causes for i in c.information] - # Backtrack if pinning fails. The backtrack process puts us in + # Backjump if pinning fails. The backjump process puts us in # an unpinned state, so we can work on it in the next round. self._r.resolving_conflicts(causes=causes) - success = self._backtrack() + success = self._backjump(causes) self.state.backtrack_causes[:] = causes # Dead ends everywhere. Give up. if not success: raise ResolutionImpossible(self.state.backtrack_causes) else: + # discard as information sources any invalidated names + # (unsatisfied names that were previously satisfied) + newly_unsatisfied_names = { + key + for key, criterion in self.state.criteria.items() + if key in satisfied_names + and not self._is_current_pin_satisfying(key, criterion) + } + self._remove_information_from_criteria( + self.state.criteria, newly_unsatisfied_names + ) # Pinning was successful. Push a new state to do another pin. self._push_new_state() diff --git a/gestao_raul/Lib/site-packages/pip/_vendor/resolvelib/structs.py b/gestao_raul/Lib/site-packages/pip/_vendor/resolvelib/structs.py index 93d1568..359a34f 100644 --- a/gestao_raul/Lib/site-packages/pip/_vendor/resolvelib/structs.py +++ b/gestao_raul/Lib/site-packages/pip/_vendor/resolvelib/structs.py @@ -117,13 +117,14 @@ class _FactoryIterableView(object): def __init__(self, factory): self._factory = factory + self._iterable = None def __repr__(self): - return "{}({})".format(type(self).__name__, list(self._factory())) + return "{}({})".format(type(self).__name__, list(self)) def __bool__(self): try: - next(self._factory()) + next(iter(self)) except StopIteration: return False return True @@ -131,7 +132,11 @@ class _FactoryIterableView(object): __nonzero__ = __bool__ # XXX: Python 2. def __iter__(self): - return self._factory() + iterable = ( + self._factory() if self._iterable is None else self._iterable + ) + self._iterable, current = itertools.tee(iterable) + return current class _SequenceIterableView(object): diff --git a/gestao_raul/Lib/site-packages/pip/_vendor/rich/__main__.py b/gestao_raul/Lib/site-packages/pip/_vendor/rich/__main__.py index 270629f..efb7fb7 100644 --- a/gestao_raul/Lib/site-packages/pip/_vendor/rich/__main__.py +++ b/gestao_raul/Lib/site-packages/pip/_vendor/rich/__main__.py @@ -207,7 +207,6 @@ Supports much of the *markdown* __syntax__! if __name__ == "__main__": # pragma: no cover - console = Console( file=io.StringIO(), force_terminal=True, diff --git a/gestao_raul/Lib/site-packages/pip/_vendor/rich/__pycache__/__init__.cpython-310.pyc b/gestao_raul/Lib/site-packages/pip/_vendor/rich/__pycache__/__init__.cpython-310.pyc index 8fc00bc0cfb0463b0be4c1c1bc5aec218fa8d5f8..e773be1af0b57d324455ead61130f5ce14991a6a 100644 GIT binary patch delta 57 zcmaE;e_NkBpO=@50SFfPt=`DZ#UdZ+Y!wq)oLW>IQ=Xbrk{{!epIn-onpaXB6BOj+ L>b%*CWw|f_`#}KVo{BEwu%WYPAw{qDNoHQ$&Yc#PcF?(%_}L6Nlz^< RNz9KgN-WLUY{If!7yyY}73Kf{ diff --git a/gestao_raul/Lib/site-packages/pip/_vendor/rich/__pycache__/__main__.cpython-310.pyc b/gestao_raul/Lib/site-packages/pip/_vendor/rich/__pycache__/__main__.cpython-310.pyc index 8c6a14a8fe77d0edf678d92b39522a8ebae982c7..f18eb99598fbd5d9c3acfef3e6887c350ccae1e4 100644 GIT binary patch delta 67 zcmeCT=(OO?=jG*M0D?t+tJ7sS@|v;AM><=@gche36~~mP=9J{exa237=BDPA6vqSw VIk`G-&S3QtV`QAXSvs2WBmkY=6$=0W delta 73 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 W-cDIJ)Ko02uFS@9VsTo!#{D0k*P|~0 diff --git a/gestao_raul/Lib/site-packages/pip/_vendor/rich/__pycache__/_emoji_codes.cpython-310.pyc b/gestao_raul/Lib/site-packages/pip/_vendor/rich/__pycache__/_emoji_codes.cpython-310.pyc index c597c2c4f5f72e1565438213e715827f2d2e2265..2d16fd411a75cd45f86e1e1bc5c79fafba6cb922 100644 GIT binary patch delta 59 zcmezNNA$xVQSN+RUM>b8Smd|5k-L?faVs~IfD>cvbQvcmN!FksCs*fo2PY;VW(H!G K?G8??W;Os6`Vc4p delta 65 zcmezHNA%ktQSN+RUM>b8sQwY!$lc1#xRskpz=<(=x{MQ(BzJmhaY&8 Q6A&{4G0S!)}SCKSLe--m`*SP0JU}ssQ>@~ delta 43 xcmZ3&xr&oJpO=@50SKypgl^>C#Kf37c^{J`cY11ZNn(C{QDSM%<~vL$7y%1!4g>%I diff --git a/gestao_raul/Lib/site-packages/pip/_vendor/rich/__pycache__/_export_format.cpython-310.pyc b/gestao_raul/Lib/site-packages/pip/_vendor/rich/__pycache__/_export_format.cpython-310.pyc index 6ac5d39c18e766cbdb4061aaabd7d31001884d77..ad2bb4e1ba22d6df0591030383fde0802167f30b 100644 GIT binary patch delta 156 zcmZn{>KEe8=jG*M0D?t+tJ4D}@>+9M!%p4Drln*6xm$MD9)~$>TDGgTAW%`98;c}Q<5L! jlAm0fo0?Zr9Fv|}T#}d{UzAvyGkG&dIIAd&IR_&E#7ZmF diff --git a/gestao_raul/Lib/site-packages/pip/_vendor/rich/__pycache__/_extension.cpython-310.pyc b/gestao_raul/Lib/site-packages/pip/_vendor/rich/__pycache__/_extension.cpython-310.pyc index 2e05349464622cc73be8b808510c99ddadd9cda3..1b9188c0196aeec1a94b231bb358404b5f495988 100644 GIT binary patch delta 36 qcmaFQ{F0eFpO=@50SFfPt=`Bj%E%Z!S&>naH7Ll*)p@cj<0=5AKnV%} delta 42 wcmaFK{GORRpO=@50SKypgl^;(Wn@g8tjH+Iot|1;l9(S~lvtWG*`9F~0Q5r)WdHyG diff --git a/gestao_raul/Lib/site-packages/pip/_vendor/rich/__pycache__/_fileno.cpython-310.pyc b/gestao_raul/Lib/site-packages/pip/_vendor/rich/__pycache__/_fileno.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..1796a0e789a016e478fe3bb247c6f417f42d539a GIT binary patch literal 782 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 diff --git a/gestao_raul/Lib/site-packages/pip/_vendor/rich/__pycache__/_log_render.cpython-310.pyc b/gestao_raul/Lib/site-packages/pip/_vendor/rich/__pycache__/_log_render.cpython-310.pyc index c7bb4de9f62380905fff407aafdc472f7fd01b2b..d2b352c1d34410fa309950243177476b7bcbff15 100644 GIT binary patch delta 37 rcmca0a!Q0dpO=@50SFfPt=`C;z|0skIfq%2H7Ll*)p_#-<^ya1w>1h9 delta 43 xcmX>lazTVUpO=@50SKypgl^94!k)Ig=fz$f=jG*M0D|ftp&Pl+GOETnTg8MHrxq2*l&9vDXM2N^v(Vy zeGB@J_O(xb?pyDfrAQr?s)w$?(d^7}zM0vXUHbWaR)X%)E4=npv8? zkjycXdMlOnE3hY(WuAY>Y=<7&&WCqrO^#Bjbupn zGG!X=6=Ng^D>ASmpR6d5aafTB*@Tdd(e%6oZ%&dT$a5f{0(nX3^qNkl$qdNzZHu#H z4lEX6rh^CbWC3R5@XjIyYx9s3=1|$P{ ze0JdZO#?!tx6&uM@(Bpn0_xRR9;AZ&{=?3f)%O8qLG^@spkZQo*c%c~x^ht+iafkl;imU z)zJ?Hh$f#GV%Il?YJ}f1_^nj-B6kb1&(U-Ord)ReI}FbhYEq3kIiqQd}vStfRz$^gCa7} z0(PUo7S<u&hpL9w|QGY)Dg7IY<3KznY3B5D*^FEr}-co+1s+Zc`< zVCfw}=`oQg%wUYZG5|e;fg?gNoxm4+A{Rv_Qwu4!?8muQrQ<%tQ!&2hz>bnZirdCH6UxTj`wy5 zRMqg{#?a2S8Z8e9E{o==sKdJn_*7D)9qot!lXhf-HqC%Tik^m+bw9!A^kJ;KhJYs- zp7;TNV}x*h9myAPeu~zIt6u}h*)TZNS=I)=jb^g)c{gCBy#^S!l<4!Hdis1IPR6p} zUO}LTfDx5@r@<3t&tV<*?Bhqd&a@TCLYMg-m$*j)uL|Sf+bA&@d&xT z;~jQ@p1QCDPe3VBqUk*;iL@Nr>vZ@57#;W5x(03b1Exgje1#g(GM#HuD2C>~FS>zw zPu09uaQtF`ZJ`)$8?VE%Qn~sEM&$6IYSr=U>?Y-92@v`1WPk59~3Lr%0Y5 zd5)x0GJ?aykKuO+8V2lLkjILqPM>kCoX#EPu$%jA;3iE97l!hX!gYrfXjExpYw)-G6uwqY6V32UNlTBfS}pnwi+UjfE-UaTv7x>e$(J;f?R z;f>NTKBGLPp(fS0!g2YA7K;Xa0VsL;H-?6orOi5&Eh-f_#7|SF&9W@a2_t;JI8wO zT!c%wY92204Q&hUM*=pNih%6W|819*to1xeT75j@7(MKCe{ z-zH|W>-(=f%&{SO+!cX~8OsOZ^t{05H--SzH_9iinJAx>Pin#n0FyKNrC(fTHjVkfkP)Afh&HE&}*@?w6ogQe%-s`ZZ7S++m$079`W zJa=o^4$wlog(fa_b`sVOffvaf4FS`3tC<5!#2IV7DC6>m))e$^YVu@`Ne`xRny|oW z^C~fB5ex_?`j>@cSYC}6Y`A_HaUdnB`bR^2QFnO8-!<-lq#$sMJjA) zVv6w786h2%n_=ImrM?*-tvO+nj_knn^+y9o+-;hdOjlzgtSP`k%s63ai#j1A%@FH*V^|f z;~nACm-oE+QFt*$?e+)_8SlUj!KxbX+ycotRHHXXI9DR^T-M>eT={HXqWzAEm8mfwxG)<(#djPbI2*OJfw;z$i1RjCGDe}eFJF28^LrX1`P zRF2JtDo){l<5EJ!jdvE?PD-|oSEH^^c*VAV>NR~ z=!_K|r1(R|vaGKsMP4!mbmLU6HCqED@0HioR#WEdq3A z2-#rhn<1$_cOw3B+vW26LeM4=_X)@?`iL;vJp-wgNv495H#-s>Jx5?F8kDY&uAw_^ln92ROj?k^FKNk BzCr*1 diff --git a/gestao_raul/Lib/site-packages/pip/_vendor/rich/__pycache__/_palettes.cpython-310.pyc b/gestao_raul/Lib/site-packages/pip/_vendor/rich/__pycache__/_palettes.cpython-310.pyc index 96ce35cab639ad36d69860b258f5d384126ffb70..6f7a06ee128c7c1dc66832055c871830abcfaede 100644 GIT binary patch delta 56 zcmaE<{#czmpO=@50SFfPt=`BTCM+N2Y!wq)oLW>IQ=Xbrk{{!epIn-onpaXB6BOj+ K>O8qkI2i!;ni9(Z delta 62 zcmaE?{!*PgpO=@50SKypgl^;x6IM-dwu%WYPAw{qDNoHQ$&Yc#PcF?(%_}L6Nlz^< QNz9KgN-WKp+#s9`0E2=SCIA2c diff --git a/gestao_raul/Lib/site-packages/pip/_vendor/rich/__pycache__/_pick.cpython-310.pyc b/gestao_raul/Lib/site-packages/pip/_vendor/rich/__pycache__/_pick.cpython-310.pyc index 800c5e1c6f9c72a71312c16225675f6af8e0f0b5..0a3722368627e476dbb663bda8213205d44b6d1f 100644 GIT binary patch delta 56 zcmZo*{l&ta&&$ij00fKtR&V59$0#4>Y!wq)oLW>IQ=Xbrk{{!epIn-onpaXB6BOj+ K>OA=#<01gy{1W>B delta 62 zcmeyx(!k1{&&$ij00h-PLN{`+V^ocCwu%WYPAw{qDNoHQ$&Yc#PcF?(%_}L6Nlz^< QNz9KgN-WKpe1mZj0BqzIRsaA1 diff --git a/gestao_raul/Lib/site-packages/pip/_vendor/rich/__pycache__/_ratio.cpython-310.pyc b/gestao_raul/Lib/site-packages/pip/_vendor/rich/__pycache__/_ratio.cpython-310.pyc index 423ea7c23a4a6a93260c33daa938fb916ee6eea1..274b5c0e4cf276e06dd4755dc6daafcf2e89ca8b 100644 GIT binary patch delta 72 zcmZ3gF<*l>pO=@50SFfPtxk{M$a|AXKHS+VCbT%Us5quPHK!y$#w9 gT3nKtA77MMnzNae`6@pn^XA(^_Kd7-0*owQ0r`~~=>Px# diff --git a/gestao_raul/Lib/site-packages/pip/_vendor/rich/__pycache__/_spinners.cpython-310.pyc b/gestao_raul/Lib/site-packages/pip/_vendor/rich/__pycache__/_spinners.cpython-310.pyc index 27b1a2489e43f3de551e9895b2b4ee679ac98ceb..f563827747d93abb30d4c45c1ca2b6d62e1d879d 100644 GIT binary patch delta 37 rcmaDK|1zFCpO=@50SFfPt=`D}NQW_M@;e<#)}SCKSLe+_x_6lX=)?>E delta 43 xcmaDE|302OpO=@50SKypgl^=1q{Emn`JIj=cY11ZNn(C{QDSM%W**(UOaMw74_W{K diff --git a/gestao_raul/Lib/site-packages/pip/_vendor/rich/__pycache__/_stack.cpython-310.pyc b/gestao_raul/Lib/site-packages/pip/_vendor/rich/__pycache__/_stack.cpython-310.pyc index 37dd0df6770f45c26be3be78d2ed842603c47eff..5383053587d958db643f0a269fb23c7520993a45 100644 GIT binary patch delta 57 zcmX@cc7TmLpO=@50SFfPt=`D(&L|)5Y!wq)oLW>IQ=Xbrk{{!epIn-onpaXB6BOj+ L>b$v}@jN2{=ZzAJ delta 63 zcmX@Wc8rZXpO=@50SKypgl^<^XH<=Kwu%WYPAw{qDNoHQ$&Yc#PcF?(%_}L6Nlz^< RNz9KgN-WLUT*!Ey5dd?@73Kf{ diff --git a/gestao_raul/Lib/site-packages/pip/_vendor/rich/__pycache__/_timer.cpython-310.pyc b/gestao_raul/Lib/site-packages/pip/_vendor/rich/__pycache__/_timer.cpython-310.pyc index 5f5b4d23ecdfd8b7198e7cac7feb416894b096e2..193cbe7adc4b2eec76d8b399f421d98d6b8f497d 100644 GIT binary patch delta 36 rcmZ3_x{{SUpO=@50SFfPt=`DJo{=$p@@_^+)}SCKSLez187}|;siq2k delta 42 wcmZ35XX1!-7jrjMbWKH&DErBwam@$T1|7)K9r0gNE5M(+oHR2b{9*uHR~Zn zLmdtKF0;}kH4YI(6cY3hK`#-p^b%GC;gdxLL7llRZ?j}PVw%YSWDI-qW-~6YyM)c#^o1;U* z>=QZc1p1sSaXI@7^x~(SR2blfjUg%hBuTvjHUkTi-Am{roFbgY+qu~=#$V;00T{-{ zJS#lH-n<_W!Y+qHaMt01XZY2zm@rEEF@ai9tA{Qj{Jg~m=P)sU9lXZU{3U%vgBuGD z!+RVon1>N`7S_QMo-Ld+jZiMTNST+grYIA>ac>cTS@lor|JLj&-UAYUE-11srB;~0 zlG4p!#w2*8YgZkMpLZ?93 z*ui`q3JV-(iR6pyg95TYz?i!B7zzv#kT6a-Pq;w1Ot?b0PDmw85^fUi66OhtQMp{Agt?XW_~4Xa4XG6j(S_eS{7_mgqI!l1|n_H9ATZmO;I}jX;^Je?Nyyl c9Y-BZ9dRD_nJhS3odh~QQ!N7oajs_QH!K?pF#rGn delta 953 zcmYk(+e;L26bJDA&g_m`?pjnzp>1VK?W&|{she%u#Y;D%h=}ZBHdvyL%#4VYuA2|t zNj+M2FS=i0G+@{(#Dgf{5s$Uh2W@?zxjR7ne$_M`|+$FNrvA) z(Iu|~W1H(Uw%$()c{BAD;hN2sZdx^MdZTUBtTgIcoAhSes;Sp4yVlrg*0wg%7H>Jy z#3gS;MTp)f9>Z+0*B1ba=&=7emW!&S0bt#=50g~v5Fe+MtB8tuDWqaZJee^|!AtQr zwLrlqF*)!K_$|K8DpoK>%u62wLSlACIS>)`nNc_P(U)LVu}2QMLf${-OKjIcR|C4y zpme}iZMW??hz6}&8GlOXR`%eevdI-x_Mf2MtZB46FNF?=j5M#gPL`WZ%v>g!Nn`@# z%_{V@!R4~ta_vhCoiY;Rtk=mZmcZ za=f4y`Jbi|=ldn=Wv>oibkfs;AO`45K_*_2f6+HBp6Oe>1D|Q<;(O?&$%WPUPP+<6 ze7#(1p5wyvlviU8IAg=X4!j;R(sTK>t<8DV~l=Q%n3W+>f)@&YSi_X|E6*#a0YUY;LPky V@0??Vsw;Eg79Eu;&_=PUp1&Mj1w#M; diff --git a/gestao_raul/Lib/site-packages/pip/_vendor/rich/__pycache__/_windows.cpython-310.pyc b/gestao_raul/Lib/site-packages/pip/_vendor/rich/__pycache__/_windows.cpython-310.pyc index c1da340d8808236e9db4bfa9ddef01b92d9413a8..86e91dde05fc5c0d21668fbeb44c60a4c78a9f6e 100644 GIT binary patch delta 73 zcmey%`<<6JpO=@50SFfPtxj*<$Scdl7&%#+Ns=`v$jQ}tvpJ`~a9W1{gg6 delta 99 zcmey$|C^sXpO=@50SKypgl^ p?)22+lEnP@qQugi$vtfQ8Eq%~u$PJ20u>a2R3Q;IldrSO0RZ_89GU0Su9d>`IwM=`-rU`|OgOAN_pVwdQ z2b+E}K(^eFt9`U@VIA4J2yy8;S|HoVKu77|S3lXlsn#xD zXEax+MZ0TfUjUkFoX+r6jW|nljPf?~mv^jqyu{m~OD{P-A2bC4t+BB>##vc8V6fnI zEcgXr=Aqz;%%uf6mSTBPNt9S2N?T^TV`V{Elxj+%CK~W6kr(AekJVU<^@e&L3h~HF zdu$bzR|}xd-M{EimqaGD>n(FSV8m>&z%zM^ns^A)j!fGWDHlyx^}y%0<2!!S+!b+~ zam(=uof$N#PgYp;QW-K2n>&%)38w^iP9$v6rDx9yUyfgQ+XUi3EW6Izw%bj>_K9ix zv*vWm;WP^EI;aFfi#g2}9}>n43wFAqrFljzjFak~&FigH0}DUZn=ELDl^iobEj7X* za`1A~BC1+lOp&j}lLYM~SEv8KRj!1gew-r8eLGdmm#XHy-6L?s9jtp}o9 z)%22V$R)W5zmnYl58DjlQP6V;Z>1{0Bh?y#3+asqfxBFAoroiH#_B34uB?7wbodP; zT>b>6DJ5#GUXcDxq-@ zhe1Oibr3KExG_cT%v~O}qc)=i(I@(|GH7;N5p=MQ0!3hpo8Y4nQ63@WpbZd^kDN!X zpzRWK90Z~3Ks#`B2-irN*$9{kBEV+D>AIVC0O*KzYBoiZBAKD0h;^7Xql1FOM#APg zXpXM5891Rcw&(b?3vW~r#$6qI%643wN8NNExkV*h2$6&4iH14K+H_DfQDnM---IN2 z%l6I7!r(G^gtNj~&;UvUy&OO_d^!yk!N?-J5izjVqR?o)9NR zQ>e?Dw!9;=0f1p8pXTf^gic^M(FC|*9%5xfmPZMqHdSGeR{BMw3NyA9q}4tVz*=eC zi0wdWkC?pO+e!;!@Zub1*iNZtVWb^eTp`sU@W!r0@-m z-m56fTEPGgG*m-|A)v75(WPO*TylKNg7+ss3=dHN&kw%J>}eo#hxWew%Dz`kd%R9) zquFwShImhV_T5mJ+N&^gz|RaDo>?F%WAaY z38t3C6cD8fqiK%MhA=yriUQrj$GrG(B zidBTO5QY+fhPA;4Uz0UNAjf#a3kYn!i4R!x9FUS^0ALU#MWv{gdX4??A}9bApaLjL IudMz3FZc%6M*si- literal 1551 zcmZ`(Npsvp6z)wUX*?R+<1NkwUnpuqfmuRPP!wgbfdq_MY==Z8N|C4AW5wFs(s)Cv z3YA>_A3R6?2fu)0Upe_7upM~albBEit$I&SZ|i>VeXZQ{+6dMUzwHj+uo3!If4sP~ zbq%Qe85l<#C&<@tlHip1B&9x0na?odl(WQ2TYk&PR$`})@1(BpVkFRIo43Z;pW?RY za7Pfqga=P&pDv?iw9mN9+fSL_d`SerEpAoZs=8(vTu-k0X zOXvJK$Uet=eC`7KJ<+?I=ksF>x_RO91<)_@r3?B5G#qam>MvhGC1|Tpm2MAJ~s@js{og64$84W73eCa5Td5R!uI+7zL!E4Fj2SJjRVx z)0)-RKD~!9dKSh0i7GvgpfaF7*^=h$OxaR|C%NRxN~3CUpjcT%nX-m59~J$Ubm0`r zDe^L|;v7oSuHnSfDyv9Vii(UYru9D|IS=lC1nchyyQPq2a3Yc_4>t0_C>2>%215Zc zc_^b%@-KNa-V0y{@mdiL4kPdiinv$}k0Es~S7kgnSPf5PRJ>lCDNAovYOs|(VB|5w z9qa(LfjW5RFS!Wn9q@~J1@-Lb2_H~UJzrfAbf?#W%3pvDQA2C`2sI44ZB@8wRis8w z@CN$+K|mY3aT>R7)$S!7gSKhcR^48Lc^oqNux^|8c1`4+iq&q7Ip*YoHdB>VPnjG` zFr`l8)wX;OrekY_)g8G889m5m9j(@OW#o5JV;`*^Y0s@|PuSOZd9@`&u!R3*(WiTY zA>M*$3iGAU<_mC4qtmdA&xM?ZQv0@QMMVL9m2icTX%#@RtYlnBM{9Iv6b1P9yJq-u zNo#Ltt0)L&i_XCk~thHHSXaW7}JnT2|jIW0~Z(12wK^YHYgCf#yTAdxoi67oB99e{#k9`d+L7?v;V zbWRAkjk7R>3u~|ES((EH)-dX0Q{(yCn{T~+`<<0&Z@|U=@F0G4n50==96@(R$0ui} z=O2B%zVXSYpWV6p`4^jCZhiIjH{WjW?B4tC{sVu-gsPkW6MK4genlobnIYhv{(>S> zs8)4W#Mw}4qtqCc`uZy?)IXHTC@k~;m`qC#NZErtE#gGTDg8xZbc)7VH5nz_%k$*A z-YiN*80rX9t$f8KFQj(Y9eshBjyoTuIUgnBL;Y_k^^_enk2_=rx5)}!X*(~$ErT{M HV)p0X0YHqU diff --git a/gestao_raul/Lib/site-packages/pip/_vendor/rich/__pycache__/abc.cpython-310.pyc b/gestao_raul/Lib/site-packages/pip/_vendor/rich/__pycache__/abc.cpython-310.pyc index 786aa32639ec538ad6624838d0245fe06d8b0ab2..5fd75373e2f72e8977bcc9cd2e7a7fed10bdb16a 100644 GIT binary patch delta 37 rcmZ3)HHV8kpO=@50SFfPt=`D}o{2GJ@^2;wPx!lA4xSnp0A&P?E3Um!Fq9IZC{q@!RBE z;$4jYHm6G5Vr1l>>>%}lk#Vx2^dwFhpx&Z5plc^5N=r1IyZyNryM Jlb_3}0RWL8LDv8P delta 189 zcmaE1*K5a{&&$ij00h-PLem>I@+L59%cRKmvP5a5iY(AfmCjO2)ku*`kxv!L(n?Y2 zWm(9`$dJMq491#@n`bbdWoAmx+?>vOmRU8%*(xTqIJKxaraU#LBtOO_Ke;qFHLs*N zCOx&dBr!j}D6uqWb1B(v`GZ=X%@0VH19>waIlb)HkIYss^BcsJ+CwVmh%?mzC diff --git a/gestao_raul/Lib/site-packages/pip/_vendor/rich/__pycache__/ansi.cpython-310.pyc b/gestao_raul/Lib/site-packages/pip/_vendor/rich/__pycache__/ansi.cpython-310.pyc index 623669578d1b8e1c9e9ef34b9dd32d13c23b7a58..5c26a3245650469f11edf82d80c3f947933cb2d9 100644 GIT binary patch delta 699 zcmXw0%}*0S6rZ;{yIq!UEu~#k@S};5K#WxmBq%1;0?|{|R?!HAfV*PTk1f;Lrqr#X z)r*FM&Q+lxH^ag7K%xoJyMMtRh!_6>j~vvQ5+`}T%=^9fdml63lfRN7$1rrn&vxe1 za?jxB(2yLyr4Oer&(%klW-p#k&5wAUG5I>cUDm{LC7Vr8PqHn11)}T#Pnlo1^f|Ji z2^6)#Lt8L~=C84F<*(Hi@AoPu4>H|)e>qRI}GJ>w9D ziONUxp+tJwrn)|Qf_v2=4$>OdLvjd$pg{yMM-3#c@Q*DpX8&?BHGK%~4g zqXVSGFLiEJ@tGRJpi8D~21$vT(HgvG>(O{@gNJ^K9PuJSzA6T?!M;XI_Z?0UO~6|L zqP`z^=#(mXK2l(2I-9QDzzM!E)cuw7OAgPNWM&o%YMgh^eFf+ Ntecv2noXL2{sAOGr+@$e delta 667 zcmY+BO=uHA6vy}N&dzQ=P4lskC{mCpK`eMs>jy|fii*%;gFPq`Vt0+jO*WlOs%f^E z8uTCv!r)0O33?F0L&;e|P&|8G1TTsQFCK-0Ixoe83;Sc6{v9Kba z?yrlr=ee!;ehp?uCG8BrW$}PyBQ>YRt6qgw+pc&;PC-h1Cnf8pbZjU#tOHjD;44EY zDOaY&jDEaw%%=n0R)@fja$;*fwTZ3YRkMn(_q9a@l!mdR|BHRH4lAY)occ;1ZYXSl z6JPPcrs(PedTd%AzXe15&_9F&sI!P1fl={>K0LTv9$S+VYLA5DS{$NaLJ|ms!2-1x zSE*DiAb(hX)HPlcxH&3BF97wh#ER&}CSgqsV|n1CkFmX4Bq#N`HFf$VJ0N~0Ucf*+ zo|uC};_Jj|nnzDV6p}}vE-K05zHt$b>IUMDL_jNL-f^9PaOW0heephdU2n;Yd*X2F z?fE9=r4Sk-glHo$g=PMSg`q2fEn4`iOhqoHTACGQt~ilig(qSwoy}~@tIwE2C8Bb5 z0&G)!N!M>Tq`*wXBLwyfj3uw$T$Upmi?a*G`SL8okI1n8&S>L3?_-F~1GDK?`8AK# z*)9y#Wsg0Thf7+McLKw9mOR^Gfl=&mr*&?gJwsy`Gxe(!H95+sOfE4*$*ehiwd%GV Z))w2D9B^S-XG4T+CqkB~?h!TX_g}wVpRWJ_ diff --git a/gestao_raul/Lib/site-packages/pip/_vendor/rich/__pycache__/bar.cpython-310.pyc b/gestao_raul/Lib/site-packages/pip/_vendor/rich/__pycache__/bar.cpython-310.pyc index 210e4506f01c4f87e37d4bb8f81eeba5932e8f4b..1d0626acc41eacb7258874a035180dccf748cbf7 100644 GIT binary patch delta 77 zcmZ23zEGSupO=@50SFfPtxn&+kvEi8KE&B7CbT%Us5quPHK!y$#w9 mT3nKtA77MMnzOl)wV#=hWwIdWdB*U`4>`Xvs!zVbbrJx7e;tef diff --git a/gestao_raul/Lib/site-packages/pip/_vendor/rich/__pycache__/box.cpython-310.pyc b/gestao_raul/Lib/site-packages/pip/_vendor/rich/__pycache__/box.cpython-310.pyc index 3ea15183618c9d18a80e5837bc44621114e16e17..e20bf44176449c9bb72aaefa5a7d963366a11c4f 100644 GIT binary patch delta 180 zcmccYc-E0GpO=@50SFfPtxosX+Q|2YgE3_CZw^V;pdcq#=gsn*@5Sm3nHZTk_`Wmo tVA4GQnYfu4;UrK69yYQpvM#J_kc}+-EQ~CSlY14!85t)pRnTR;003Q`CC~r> delta 205 zcmX@>c-fIJpO=@50SKypgr*m%ZRC5y!5B69H-{v5dTMb=Vt#y4VrkB1NzV6T^#)9g zOk8|lnfNeip8rg|OpI_6r~(fgSr%CrRyN2+76BGU7DfpW0ffI;xS=dYmfu{QJWP}4 JE9f$w2LPS1Ds}(> diff --git a/gestao_raul/Lib/site-packages/pip/_vendor/rich/__pycache__/cells.cpython-310.pyc b/gestao_raul/Lib/site-packages/pip/_vendor/rich/__pycache__/cells.cpython-310.pyc index 0e99c1a6a414d2528577f4151f075171d5e86a2e..465a9f320872efcd7b4671ac796b87de7f720eda 100644 GIT binary patch literal 4268 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 D;Q`{P delta 876 zcmZWmT}TvB6u#%q%+Alw&g$-xm{ySVr(~3EE1D+wL--aVL2Ss8+)oNB&VSeu{uoV;dfMUZsUsgUH@MpyZwQBBU%Iy=J#3qn zot`xFPBGnAyf86t792aBHEkzT9I-MJdB0y@IT#J&iV}7&w*3KkG`VNWa!F2dgj{Hh zTEQ$cm;k$RklcU(<&?DGQBUwhM|G(yxZ<>cjO2wp*_9a`Bi0#5b3;r>kZJG~S79P5 zbur0P3t>coZXc5oiA;8tI^wBL7?pJga-yqFF=a*=B1~c`%21{SG6_;gSQxRejS-1k z=wFE~1s5q$<+Qx0smnZ8!OSnU#5=KmbF6B8qefMubIrE$n)>1j>BPVH;&d1z~fjjwFO5K zk1`#(REB&R?6R1(GFPoAJb&Mnj3}4$8RsJISEiQ9p}Qn)uH?V&)&X?? b?Wty|UK2HCgMzr-)cBpO=@50SFfPt=`D3%^@G*Y!wq)oLW>IQ=Xbrk{{!epIn-onpaXB6BOj+ L>byCc;}$;v?%Wcs delta 63 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 Rl9(S~lvtXxS%CQnGXR^}7FPfO diff --git a/gestao_raul/Lib/site-packages/pip/_vendor/rich/__pycache__/containers.cpython-310.pyc b/gestao_raul/Lib/site-packages/pip/_vendor/rich/__pycache__/containers.cpython-310.pyc index 9424f3e9010736648357293c3f7fb679ba570393..1f019082ee8ce337e861b532b7b3cfe189b1c179 100644 GIT binary patch delta 207 zcmca+bk&GApO=@50SFfPtxm6-$Q#DUJTb+ckz?W-dmrAA$N<-PXAf6rZ%;q>TO6Jx zsYQuNIjK-qNq*5S7N5-Gl3N`91tppJd5Jl<*h4A{Qo|C9Zn1{u0Yz?cxu<>V)( zY&K_n$;cQzS&>D{nDp=9Lr$f>^A@Iho0+MQk7`&du+|(-{FsoI^7J delta 208 zcmca=bj^r2pO=@50SKypgr-+c2B>oLj7+c|gW3j{LIJqMZE1lw0f}l?AC`iAA?~Lm~rQu_ diff --git a/gestao_raul/Lib/site-packages/pip/_vendor/rich/__pycache__/control.cpython-310.pyc b/gestao_raul/Lib/site-packages/pip/_vendor/rich/__pycache__/control.cpython-310.pyc index 4528be91251af0fae94fef9abe36e7ea30e51f73..c5fae5eef23200ffb9ffadd86953ba33e3af85b3 100644 GIT binary patch delta 37 rcmca_f76~jpO=@50SFfPt=`Bzm6S{3iR@xc26`5XK}fAB}|JMkyqE-TbcWsiiuBPUeGGJsRdXElSWBM(JL z149;?ygZz%<|FbLIvYJ^@@gJ# zjXs>Llq63BP_O)f>gY8-($(s|&wiwqmRf}th^m-nZG&lUJn$y^f-@5Ro zd^L7CQwgn&sU7JUPl@T?DHEX1EU_DP4%j;VLnTR-@p!YMCflM!9P#cI^L*j)L^Df` z=23U&aK8=p#lbYO#>bp=s8vQh@cr@5G=|tZ^RunBN`uz>nb%qhz*s?Je-@?;O z)nZypazm^=(X4Q7l9(D8i6@JOz+7A}b_Z5Pmm5ut?N5Bs?533&u4S4!xYDjREmo78 zQ#{?CX=-d-xMY#=1ef90g?O+J2R&QJ9@;^6)2(C|-9~oOPO`%;W>wC>RH&5^z0`ra z$Zw=m3j76h0)GNsz#mBWxPjl1?(zV?fnN^%3akKrL3*hd_!;s(;3uFT_!05};0MSD gQJ3vK((NIN?buj@`=GKrAw*qOZ{USm;j0?^7q&V?djJ3c delta 1078 zcmYk4S!@$W7{_O3?Zlqgj_<@KV896?(1t^5#ign$@YaWl>tS&fh0NEGWNnwVgE<~n zk)@VHD~v{kmeZznOP~i}HBF&+oAA=dKJiegLh4Ho%2BQ-zFpRkS?%}#eb;<5tCcGz zmoLrx{hZ+1|8VP2I7P@!%bC5}(Rmf$!j{WR7csh^v5DIMoepuEKr1X{)9IszW?)hMgD^hJV*Db1^TZRILQ{aS0w`cxk!$X7LgHlPM< zzNWQjgKCfx@K!@LqJ|+n5)t1R;#={Z_})}75w1ot5rf!BT#Z8q4*LOz#Vd+_AAER; zAAwgpYef8HDmezeGEox{5I>7w%1ljyyE>;vHjp<%8K!or43gEk5QHvZV%lVQ0am6p zMoGoBi$S6~50W*CGt+Ur$6}ZViIEhJm@#P?!(wXlv$ywp>VyE9WT)qIn$9cxR;Ex2gKkU^*%9tZK(efBj7{5hjBmZ zUDN>T9b&Y!qu$24AnJdpA=F!#52OBz`3UMi=toii#(a#7yZ$1EC(fw{pQqL$4<+NB N?mw_JE%Tk-PXI|lD=Gj0 diff --git a/gestao_raul/Lib/site-packages/pip/_vendor/rich/__pycache__/diagnose.cpython-310.pyc b/gestao_raul/Lib/site-packages/pip/_vendor/rich/__pycache__/diagnose.cpython-310.pyc index f9ba756a1b1b9073dc7649f646a348e689497e76..a008d97c87d779e622596d77c6d17c603ac4d0ed 100644 GIT binary patch delta 37 rcmX@gxu26epO=@50SFfPt=`Dp%)}Tuxt~drH7Ll*)p_$~CLtyOw0H@Z delta 43 xcmdnbd6bhopO=@50SKypgl^<+W@3z=+|MM*ot|1;l9(S~lvtXxc`cI=695Ta4DtW~ diff --git a/gestao_raul/Lib/site-packages/pip/_vendor/rich/__pycache__/emoji.cpython-310.pyc b/gestao_raul/Lib/site-packages/pip/_vendor/rich/__pycache__/emoji.cpython-310.pyc index 945d9efaa03d857c1e6d6fca494a5d37399a5ba8..c79e16b81d8e47d103bc3c4bf8aa6175050f5b06 100644 GIT binary patch delta 57 zcmX>sxmS`qpO=@50SFfPt=`DJj!8bu*(xTqIJKxaraU#LBtOO_Ke;qFHLs*NCMd|s L)p_$hrl*_$|Lqf) delta 63 zcmdlhd03J=pO=@50SKypgl^IQ=Xbrk{{!epIn-onpaXBlb%{! Rl9(S~lvtXx`3BQdP5_Tm7V`iA diff --git a/gestao_raul/Lib/site-packages/pip/_vendor/rich/__pycache__/errors.cpython-310.pyc b/gestao_raul/Lib/site-packages/pip/_vendor/rich/__pycache__/errors.cpython-310.pyc index 231baa734401b6cd0ae91897f689147e59ea297e..2e445b6d1eb33cad7e1b78edce23d8d8aaf723c8 100644 GIT binary patch delta 37 rcmey){gInHpO=@50SFfPt=`BT!pImtIe}4IZV=)T=yvqsD delta 43 xcmey!{hgaTpO=@50SKypgl^;xVPuS*oWLl_ot|1;l9(S~lvtXxxsI`z1ppD$4J!Zu diff --git a/gestao_raul/Lib/site-packages/pip/_vendor/rich/__pycache__/file_proxy.cpython-310.pyc b/gestao_raul/Lib/site-packages/pip/_vendor/rich/__pycache__/file_proxy.cpython-310.pyc index 6dcc4b12acdd83611ae54fadeabf44dbb9b256d9..e387e6fd8ca004a7d9e391b1f30fe6104dc09595 100644 GIT binary patch delta 448 zcmX|7&r2IY6rMMkolQ4RYBtFVg4&+ih(^)|T09yp;z7iqrFB6hvx*^RVK$PsOz0sk z^dLx_yJWq#^y1CGLeNuA?ajZyvv0BVJ-+w8kM{%KyUmSU5enfDw2Sqh2WBAdKo9Qa zR8i)n`;C1R(h4&BROV#?RaWvkDS4NN@C;^lYK#6>6sXAW2CYu$FNcleqoCc1{LRg! zmD=TR`U~LN?67k2jfNqYGzLG_V?C<}+ENSVoO!duCouui=9&&|&0;`KHAJ3HDfxpm zogUZxbQ(w}WB#zI`7v!LJ@1Jm485PiiqO!9I;oIow~MvJKOj27%vygTYsUDRJ+d0D zU{9HCuE8-k{7lT@$t9}tm{i5Y>Ad-Fzx>*O8C613{ z8u9(ZR?rUB1PWF7ABqX9Vt9*)l0^=D8Gnbp8!G(tx%@bVO9YnIOHb7cVy^6Z<`qiy eItf*iPe1ouq-nxnl2Tp(m$@m&bGcbfpF9AQN@1V? delta 334 zcmWlUu}i~16vppeE|;_Rs!dA;2hl;W2qopAODJ_g2)Sd zM9#RN4OA}9hOiEs?SnnH8G1qJ4!vIFyLG=axc2%{=yts@YWwFwd(fM`;Aen$)ghJI zu7s2dJO$T?No>X-&A^dHY6&A{QgcaG&=dekERaCAcwfDeQp>wXR|_$f^l=SPlo2?A zl-;3A5JZ?GCXG5uU<$D%X}Tz_`GHd%Ct8W26IlrfG*A_V7enpM)zTehm1BMbS2jIV z9V#KKzUYK+>*vcjDCiM53P?dstgVbDT$7`6PVKN0TAjN!^~5%c%X(#qz$(VH2sW{e JTuHsLhkt}QP`m&D diff --git a/gestao_raul/Lib/site-packages/pip/_vendor/rich/__pycache__/filesize.cpython-310.pyc b/gestao_raul/Lib/site-packages/pip/_vendor/rich/__pycache__/filesize.cpython-310.pyc index b9eeb2df0c0c86d9f40cddf444590037dfd0f9be..c659575834834855dcc08df19c64c3abc114b51c 100644 GIT binary patch delta 412 zcmYk2%}WA77{=#ocSmzYOwBcjpe|MreLx@*k#_ZOnZB>&tUs9vzno_Mz_z-@b91 zfoGS!Q}DI}->z2o4@%(?E9aA7^cMh}Gt6-eCkcm_VKQMPiplTQzl9Zkv6oy5j3TX& zQBYg{kPYuN%UXrnj{_1gBnDBA$(R$7`+V1)=!ykOo{E@Csb3Q_3R6Q=i2>W;b)>qZ g>>~HyoAUi8vLFn3vE@0Prn{?Bei6V>IEfT~0DV4F*8l(j delta 415 zcmY+APfNov7>AQ4>$K$%^V)BG0Mch!`**v>pWT=m- z zQI9upy|^m$a6>@TFw~$9Gm0iEhRO^pI#lLU{h~Skj>pH+rl!Q2guLq)>tZ!AFTM7K z9r+%!9pAOXsMGPT%VH;76j&C)X%VMEX8F!gf#&S`7~Ai0sH`34*&oF diff --git a/gestao_raul/Lib/site-packages/pip/_vendor/rich/__pycache__/highlighter.cpython-310.pyc b/gestao_raul/Lib/site-packages/pip/_vendor/rich/__pycache__/highlighter.cpython-310.pyc index a22d679484ba9a04f5814ed31fda9ad118dd14a8..a0069bb5c6332c86480d2d0d451957f968c39c72 100644 GIT binary patch delta 80 zcmexk_uY;+pO=@50SFfPtxhl6$oq(iF=p}yCP~(yASYMn%_7W6oQ!^x%X#cKZ|8Z* k%;++Cp@2P8ox|n_0;Y^yoVOUcelha?VpP~HFBHoQ0Qr3wnE(I) delta 85 zcmexv_s5PmpO=@50SKypgr*m6+oetc14Y0hRo<|Ix=|H*|s p_KfzMH}JeUHaNz))dg92H@)yjZXSi|c1qsCb)~Hm7mG(2g$INfP^ZV`RJCC-V z#Bo-TdcN8F?%>-mo&M>E7$J%%4pD>&#$aoq7U@Kf3}WQI9-2{s6e5dQkxlHVNQx?M zP%~VKN~DzAg|Hks#ED$uV)Qnm7PUV?)IQTlg;iZ~?hrKcrY zo@3Hrjp-V7s7oufI@dAE{Ti*)Ro0{px<;Gx0z?UD8#t?inKMtV`Rp zqbl`oH&}bxr(N|)&g#>R#ilwjh%JU8eufuY;9o=W&_L|M>B&8e$PlC3E!JCX({G`=c*&DzSyCCu&$x&>JDW1!7w(L>oGn?Y<;@TDr}%mj_Af*Q$jZ9n(E5R zd->}PeuIvCSQ_sJ*`cRNGfV=SN|WA-?*E9tHeaf$ytLD!$?S-oq1=9@$yDToc zUGbS+$D8-RvL6{QKz7FUC`U;*S^>LW;P4SB}dNEf;oN1cG z{v=MbARaSbfxQC&Xj$TdvSjflPa>ZNS#U{=-2EM>>|qYN{=3yyIws>o-)G_nw})Nv zv-|3G8;a0&fBi?J%c}|7HMQBGsZ8$wx&3*_QX%s{wa(~jk1^~H#7g32QzP1S~E4*aI()e z*qh(~@t9;mRhh&GOO3hOTsK^1+1p&;0Nmw7!2((QDFtZ<{9qRFlu123Nu{`48{wzL zN41M@J`ZVYoWyAoGU71K6Yl@x@@FAwrWu{Y(%>whq?k_$x-W|m@H6&tCVsCC^1tu@ ynj`I(qlDfH*(+F8OZODYsEXUTtW~kA+c#`1-l;!RHSV}7*u?f7?XR9;Jp3ET4gy60 delta 1114 zcmZux&ube;6rNd)_J^h2l^k1M$+EnWV~2&rG{mHYHZAR?kV0BWg308tl|5ry^8PTh zn+hvXCvkfyMTD}a5DNA+m(u3cL;r^MyyPDUJqJn;N#3jylR#&gZ{B=w=Dly;gMD%4 zr)4uX%_#)q?!Py;|NPlpIQSML#1O*)3Ngi@LKQ6cN>B<3C1IJCLzSwbMm69|j0AdU zP@}NR!BkkGm9R>y7=3}5%Czqh(+(ACa*OG^iueN}8G%jhVy)2{w+D4L#VTV=r}^~Y z6g#LglUd9jmoO@b8mqHuKEqD288$msC3`e`jA#QwG=jO%p$>4)A)-z0usP;HsMhE# zZw%&H6H*4eHfSF$z>QAS;)?~}I#eE3smt97zYd}ZBIpou9z^;Dl-wU;jO2F<<~oX& z2;!&rpI}707>(w5>u8D1%TSLM*5=*E=ofMfH+b#n3|o-aI^1Li?cVN2<;gn4L&Ted zC2sN#++1dzu>x`z$Fjc0^ujWejm)1~S*#37r`$ub5wt15FVqf&`1eu|KhMnw7{SxjxeW1S} zR~$HZ@Cn(s$^==<*mmLXdb<|VWNJTotC28rlMqR6&J%|Q}Jem{aN(Iyv#kVWZt zPvA6Ixv?eU&}Y50x0YGf#^*A!hsDClDOXy>Q5|&jH+OuW0hP%2s(55xz5dm;)wdo` z7iRXm_314Qym_e~r8(J%<3Ok~N?C%er07a_Wi#j{NyyWkn2BXc8xmF|xbK6^FRB1~ zcGdm?SF^wEW5TLwvO=DN^9&<;^NAB}i zFyMuq3G>-E0ZdnG%{BqXg}JXNG`+|&ya7MbfC~%RCUsG>5wYL*=)6b z8K28`>L1`s*`s><`~{%%a+0!sloKh28bya><#Q76@#qb))em^~tnOZx0{^cLx&Cn& wvpWI*1bzu9`5K^x99&gu*edDY=t}nC^yIQ=Xbrk{{!epIn-onpaXB6BOj+ L>byCc*@XuH+wu{- delta 63 zcmbO!KVP0ZpO=@50SKypgl^>4W>$@Jwu%WYPAw{qDNoHQ$&Yc#PcF?(%_}L6Nlz^< RNz9KgN-WLU9Lns%0{~|46&C;i diff --git a/gestao_raul/Lib/site-packages/pip/_vendor/rich/__pycache__/layout.cpython-310.pyc b/gestao_raul/Lib/site-packages/pip/_vendor/rich/__pycache__/layout.cpython-310.pyc index be76c415403aca8a7a149228bf8b81ddbf9e6f23..97421b9c188024387aff98a3862b34223738190c 100644 GIT binary patch delta 174 zcmV;f08#(9a+XNX4XJvDAVQ*h@VRdY?`2<)R z4FU`T8Uq6V3{Fn zB!4qI_bwrW6rlPNh8o5a#%87>?iz+HrUlG3j0+iS8G&q;ekn$vTn$4!YYkJ8LJh+L zw#kAb>WtcxndM%}uoq{!#GTE}N?RBiYbIN$ z=rR7BoUZa-q5vjW#0g>vf`~>SF?pem$mAx~dPcs@Ols<^j8i9TX&d^qfu!3(LgrREfMf!HiXr8%iZ-5@4gab;dfVntC8SWQV{5>TRd@^Wn# d&gnprqC6lm`HS{K#)8SybOIT3C%@2X000}vY)SwC delta 340 zcmbOh{UVAtpO=@50SKypgr>)A+oetc14Y0hS8w!6%X?>7JB zWM*VlD9_Bv*~Gm|NZJpmtA-(qpL<@soyN$s*+5O5m2vXq2yH{3 z7La%=h-d>6w^$Q%GSl;l+Cc&`V1a_fywsec4iKBAs5B?Fs1w9wE3V8dNvtU90;?%W lOae-DPrj<{!Z{Tr!dzTZG+9Y!A!FX;BRYYM*^|X|8vqQGU&a6c diff --git a/gestao_raul/Lib/site-packages/pip/_vendor/rich/__pycache__/live_render.cpython-310.pyc b/gestao_raul/Lib/site-packages/pip/_vendor/rich/__pycache__/live_render.cpython-310.pyc index dbfb28a5e8f9d71769d30f447da8916db9ddba32..fefdd2ae9b46c95c8e5025d3f055ce2552ae9c73 100644 GIT binary patch delta 66 zcmX>lbwr9cpO=@50SFfPtxgZx$a{oYKE~N9CbT%Us5quPHK!y$#w9fFjq0KOR%@&Et; delta 72 zcmX>ibxMjipO=@50SKypgr)~? aT3nKtA77MMnzQ)>vjICJ%VtGxWhMY>_83V3 diff --git a/gestao_raul/Lib/site-packages/pip/_vendor/rich/__pycache__/logging.cpython-310.pyc b/gestao_raul/Lib/site-packages/pip/_vendor/rich/__pycache__/logging.cpython-310.pyc index 57f8052ce0ff7adee000769bc0c575fe37a3ffb4..d4bdb61d4e71ae0f7b2ffd582e97ea362dac6bc0 100644 GIT binary patch delta 2228 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 C0L^az diff --git a/gestao_raul/Lib/site-packages/pip/_vendor/rich/__pycache__/markup.cpython-310.pyc b/gestao_raul/Lib/site-packages/pip/_vendor/rich/__pycache__/markup.cpython-310.pyc index 044fca25d24ab95534438dc52961b61614c21b45..c6f89dfe9f2012f9e5c3dc2375d216d8d3736059 100644 GIT binary patch delta 697 zcmXYv&rcIU6vz8!+tMshX{DE-=s~%kDZe{Lo;C zCVKJaT)dcwS3O7?y=sh!HxC{w|AR*k;Ey*AlgxKMdGnq3-c07B{rqw=Xl^zmINnab zTQSb2L8N|e1H~p=w4rz-mWlO z-={L5>w>A*$*CQBJlI;W>XtVg?mE7tz4enpC^3uU;n|sEq;(%X_6<;m9WqWkCEJpn zG(f5wI&C_}mYsD^3SDeE@R@Czrmj_RT){-P&XlU7trzgJRZSpN6@KQZ#*@H24 zB{c-2s*<_{x74fDS;(nRscx83`>9p9swUDMjd}f6<60)vgY@aiyBg=Ttf15yoiM~V zEQ`?bYq4?>7e1nQi&}=Y#SA^i^~<_?U1*@xlLkFzT z4ejy<<`1~d-NlM6odu8aO{J_XEUO>ZwZSu_ivWS>5$ZpakiWzrf8tScL}KP)WG8_? RqAAe?Ns=IGXd=E15`{AB0to?{k$~Gw#p;k-j2Pw;@U1Q3cU1m3J zp_HEVVs9^q7Z0BGQWn9RBI40MAb*75p&(d4X6EqB!#h8IGxMVQ!6`)fyg4A&(XX|( ze*LWQRjF(*)S7Eaz?0@d5T;SH9_{p=1>H1hwu2<~Bai#NF#D+}2xD}vRn*miaV@Lq z@4*^Jeo2(^n*yX6w=G==%bS`CyqdYjON2%GZq9<68M$QzW@)`}Oy;0V9|vDUogQ8O z0!vgHx(BDUGIRzDg!UxN(X>4QE7Z2HfJ@Kq3Ot~9_8v?TD_+ah<%JE2MVc=T-`|kB zDe*+0pY!85=-V%W}FTF-LEUha(TAj>weG zMNPol!jsPes!exGpCHN3OAd&ajIQ=Xbrk{{!epIn-onpaXB6BOj+ L>b%*Gd71zK@>>#8 delta 63 zcmX@7enp)-pO=@50SKypgl^>KV^)oGwu%WYPAw{qDNoHQ$&Yc#PcF?(%_}L6Nlz^< RNz9KgN-WLUY{5KD004i66|DdO diff --git a/gestao_raul/Lib/site-packages/pip/_vendor/rich/__pycache__/padding.cpython-310.pyc b/gestao_raul/Lib/site-packages/pip/_vendor/rich/__pycache__/padding.cpython-310.pyc index ff3dcb2f3c05b26cb8b9955fa7b26f2b1e8c124a..ab30be046c41bc276e27d7ee2d152b8f8ec92555 100644 GIT binary patch delta 1341 zcmah|&2QX96!)yX@yFV`PB$ML$QNlzx=LFppirPeg3Zzvs!$p}tw@Wrp6r^A?bVEz zP(&5+Ax;Ps&9&kH5)wjO$c-zNdg~d@jT2J;04h~NV%|7yB80@Q{QTzkKIZ-2d;aYB zZwp@Ld5$K3->v`DJGJM{pgViZGrLH`h)zePNGBtS8JLL`Scx6ji4!KxApwyTMSdSxr0fbZLVeAAymLNuU>t*-P*rh z{so;@p<|E{Q6FBq(7S{cc^`wkkgE`L{0H+{$B^fieAw6gPjgLQ{zT*Ftr>k)zEf)w z>HJG;6`A~&^~#bVoS4Na%fqybg&wE5&e$?5Cqr5NlBu=RZ33chI8YWC>j+0?hln-o#I~+t| zj*B4r6hPhq)W>nJpHry+tYR%(iqiXN#~ z*&<bcqmX%oDmQ3zQKo9~0vs#FdSUZF{Q4A(-8oCQ8QN{{WaiD9Zo< delta 1440 zcmah}&u<$=6yEW!ch~D(|7aX1E{W?VBEbr+NLwj@N&q>bKubYwTEr^C+IT1SwzIp| z%$iVsD1vfF(IAdoI3O-PkOLCp#*rHrr1=ASkhQd_W@7e0lS|H{ZPX=B6=KyMcNJvp-!yW_U*Xjmtx0v;<8^xn&b`Q z#-8sfyGSZ=)vqesB(=Ei*OhINQ}K*HBehK2zy@x#G(g>j~gB&?fw7~>>6{vNIBsLX#i7R-k11D)l6 z8SkSe-!87)$O*}Ii^5=-?9(QM%mF<0{ixA1l6drC@8#WF3{$pyfJv6_Zl!|>+`x8+ zm}NoQr@@3A|6KeDol^p{po?f7{^>#=5SFVifjTJW(Ba=&8;&XWJ-OHe{-?E7zmVyf zk)aGh8$Z+T7kJxVoPFmBt30xu%Cl+Dp(4L+zk+Q3js3>DDV&H!iA*UOV4+7zCUk-m zT7WBy5`=R*AQQYzX-c~`o#Uv~?wtnjGXM(!ivUwe!nP&hvRrIlf}^|0MYdcnYAS5= zz0&7vs)7F@COgpvktt2?IF}kFNeU}fFUu&5Ds_)yn`t02=&P_xTmoICYJ)M}p+8I!HGmV7l~* z_cf~U@4PS0+S1jv=mtbQJ*=vrF9Fx&uT>f~)w`3sHh5Thu{&|3+FT<32Y8T^xO(@P=tAIQ=Xbrk{{!epIn-onpaXB6BOj+ L>b%*Ush1f5-Ifv3 delta 63 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 Yzhn3^V>?;Sv&M(~F*zc~RQ2os53ib`AOHXW delta 11237 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 diff --git a/gestao_raul/Lib/site-packages/pip/_vendor/rich/__pycache__/progress.cpython-310.pyc b/gestao_raul/Lib/site-packages/pip/_vendor/rich/__pycache__/progress.cpython-310.pyc index 9e0b353e71adbc7e478201915912ef317df4f6f5..7048eb76149a3abf98f4ee03855408e31ce7dcf1 100644 GIT binary patch delta 17862 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 Ya6zFH^x{bo@GnJw(DSGK!SUMv0Ds3gHUIzs delta 17346 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 diff --git a/gestao_raul/Lib/site-packages/pip/_vendor/rich/__pycache__/progress_bar.cpython-310.pyc b/gestao_raul/Lib/site-packages/pip/_vendor/rich/__pycache__/progress_bar.cpython-310.pyc index ab99b947e45bae20163328faea364a6a4f0aeec0..c609f81c865f75acf993f555f9755b19f3d3377a 100644 GIT binary patch delta 105 zcmexw`qPv*pO=@50SFfPtxkWmk@p0Le5|uoOlWaxQE^OpYEDUhj7xrUX>Mv>NpVb2 zkdv$P=3g8~c^R1}9}xS=cw+M|@r{g(I-7GOs~9C6*%)~kIheSZ1Q@x1kOv4sB+F+2 DbUYs0 delta 91 zcmexq`rni{pO=@50SKypgr+~;$a{iAHQCuJCbT%Us5quPHK!y$#w9JuX_8fpj82muN=X0!85bfy diff --git a/gestao_raul/Lib/site-packages/pip/_vendor/rich/__pycache__/prompt.cpython-310.pyc b/gestao_raul/Lib/site-packages/pip/_vendor/rich/__pycache__/prompt.cpython-310.pyc index 046f08b1b291e4d699ae13d1d55e63b8702c2fab..99398b2767043226d6bfd495383e388747399e58 100644 GIT binary patch delta 3342 zcmbUjOKcm*b!WI-{wax~L{cQBrT#10lK)m*J54RSwqr+5EIW4S4?%N=5-o~UW~n$5 z=n9B*bqiwxxPTqla!+oG_CN$h4-Jq@Pex$C4O;M!BIpNbPX!#O$iZ>n+l^$(X?y4r z^Z4fd-<$Vl_h;um$ObEcfLDR%-sFeVcedRKCdh*u=?BYQF=fS(i62o|n02fwtb=#( zghfm8Zq_+V#b21hBBh==J);waC$FSfl*L%rbt*phC_D!HI7{F@)607qopp-$;XgS` z#QS9@*ID-pA_k|Fpse?h!T!dIP{8;scxb!@xIyKf==29hpIp*un?bCD`bc0+g+29dH){#TctM z$bQmuc4FU!GbR`2g{!<&tz0-%$uG?Da@D+W>eRu*6ZP*o{zkoBP{dbYnLn3l?UlA& zOk*BcUhC((t;w2ez-Z&GEX1@zD{E)rRad5shj_ck%{EJGtV1rjhJJw3ojlAU+|N5= z3JY=A@koKjltLKGz3N&aD_mFE^Bg%Im%*8Gn5I7FSe?Z$YQ?FeE``Z4gF zwDmJlE4mQxDyXcR^{lFycoRiuDWD{H$fL2{EWlfsp9fiRQ#5M9%X(SgsuQwEvVN{Y zj;&yAfDM9f_wu)-2#|)@FpzpIiUCK3Wz_I6ftq4_*cP@GuwLE{;g8-XO(CQ97~8h0 zfs?)s{)>f;@UT@_jcs3-WxKH!J8o0RYI6-VwiAUieN2Nk+1v2GE-G{L)q^>c=l))Q z=>97S<^j)|ylfV$#do;;#M{2*wOlnnQ!G#Gm4cq1sTA|v)Xka7LW${@xsD23pDX;N zEm8l-J4Otx;mTLaW~Ia%?)jW)Uabfw`k>PqFZy`ud#Qf}7y^4SPXXYg!E(b=VNJj? zPs=m@*OE0?P09M00`WU0MH(3QNyBMY7famm%is7%Nm`Zzk)S|}hFc`zPo(9;K$48e zR3H-FgSI*W_oZE#r<&7EG&u<(E?El13`@76nN`7aa}5{ch1^1^Dz<~tMtB&S zSKbfwxV;TWzGT`y4p@2Y0G=f+(2orwfHfRBb9NFC6O&Y1mV(dgKME{)D-er{ov0H> zfZB#f>_Xg1L9@(nhdkOtyMda8W!nml8g7hz%8FfVM6fAdABcNkS>@~nq^8tJjn*7B zwdSm8H5Vh-UDv!dZ_QovFnXP0k#q0WzX`hNi--1qG)AhfwM9u}BQ`rfUsHa*rt-;i zp+pLktiUqE0BDku=AZVp-&2>NK0KG^Y>i*6$8Nhxp zp!tgB`GuWVF$}smp`ti1jst$5+66r-pGNi8&wyg$Faq$Q{27|U};P)$K%oen50j#djEg24kiU!0o4yteNC|@zZN%$ zb`&HX*BZle3r5V?Th=Nw_;N;_fhlBM7Y4wz~Q)+(r>x0ARS9CIpAV z?td%#bGXf*ODDRF%7lKBjLDL&`_3TiO#~D2ran22vo5gFL;wMfVv}=hZL!&}9bZ;1 z_eXnD!0v`+?uVqjic0(emBRB(b%f!HmmjBwb?Tx2qF(P;GzzzfgMI@Qe}11(?TP#} z6%E@$^efFrpLqSjFKG*u{-3EmUBM?b_#G|KxAj8Jdera#GBhMddV3tf&K`N9_YazV z#bBr%48q)orMKU3Dsj67lfUdw)J314kTWP0DS!~B@)$?M4f&`pHxUI8OA;<0^#9S8 zYbgTzD9DK!Kt!?rU|IFrL=C5u2jnSmb7dmMbsZ z1J)trlotIIj7lFmb>sR2L+`emb zh_xbke$;Pa-lMZXJdMQ(0)pqLx>XV;A=>E_$ZNQ>*|}V?oXr|UoR=4k6xmTF z(Ak+>b;#7KGaNok%&LBi~ZJF<0*@21bCF<3IaSVVO3^U&ZXnpdED=oKTapy8O`<}zi@`- n$LSVwNq(B{@`b~G{JFdQL_SWBgn|URnrPT|PeV?>L;d{Uvw85? delta 2617 zcmaJ?OKcm*8QvK#mk%u|nXlzjBt=pbDVdV|P~^e^QYWaK*pd8*VV6-tu$qxVnV|@(zb-?SftZ^tZA(vgn+hHC%kTnL`lD1zp3L_3dCGmBYrP%n6T1^~~q*(?e zNgnWM>=^U$QKoZ0^YgI-(bRP>%d&|bCsdw->8KEG45H;(0er_%avMYjh$dMPL^wi~ zP4Nsn1Z~q;iIqW`Wyjexn*nZu2chu8yW~I;^scbk9SxG?hWf{wY4DKMOpVR$*)nXx z{QNG3Q$5-PjU7RwYL01uiiLsqoM>-$x~J+Uum7m8dj3KB7e;1D%sFtawOeMp$p`LE z-88Sa1rs@dgM3#%k&XkiMuFg;6P62>3hQZD=CXA8o;R2R2^`C!45D|)z-e}GGam41#TW1S)ajEDd!c?OQP zra7!hn@7!@eBW=ZoB`IvQ>*@){sTqS&1=IH8mQf{_ELx=usIOkEsml9n}SCsbMj6x zICc!SFT%2;`zo^HPoA+egLD`i>&N#C6Ih+j0Mk=?q(^&>p4xNvG)C@fw>&*h&((7? zdY9r1>f!#Uqb}M%8;FtkFsglA@1ym6cc`wqY8?w2mYq!uNGGt?tFX)f5SpN5|I_}h zyZe6&=7^lg2Bi@mBR}m=g?Gu5c-(=y*6!RGICzVR66`HB4b-dcMr)weI~|lyq5LqC z3X%yVCnPcA_87`CYb=sC`&FYw3OLyk;HuH;Y;{Xc`y7+#f!Rb63C=C}ddy4yAV*@0 z(>Ob;Z%JT!a0*7Yi0OJx`7!B{x5)!b_8Q`r%AdtPFiO-e60j>8op-1W*Ch-prxQN? zBM4(6hWsACJe@d3F34MnlZj$ad0Xp|2gEFP9gqgzH%Ne^pubBdh+1-s)AG&K6NTr% zbr5MZn|!0*tgXG$ZmjXzCO6Ic1}{1Gvbn~OB>sw-u;Ff<5!&V<>!hk~#U?Op<=1$UkQmlaHA^O#cx6 z0MbL3AO+&u2B|8J_m{F~$mJI>a~?=#84h+4ch4aC9ujLF)+knRi@z!20+79{KZKh- zH0u=0Xmk$mg%eY1lH^uMMV`-PM$V$@c_gP~FSmRYu_$n=!iVGplKte^Uh!yNaZ%o% zN(Hl^!H34o!+E@lN_1Tw&PS>CwY-y$N4#Ir2%y?Q|4Y>&x~cqQe!}Y=@qa=6sFWx2 zQ(nzOzoK6Mm((YJlV4EvF9La4ETkQJ#E{Px{sLuZCsW}nro+zJuY*e5Zc&xLE++f! zNu7|hvR8~6t6)?HqtEenyP+o4+itW5>IJY9F9RcL{ST)m37MCl zm3}_8fRZPWEFzf(@({vSe@dzisd@QcIqAe^t;mnd1+pZ+EN>-G!+zjwwy$$xq23;r z)$wPoVPGd;koTug9lZjaeK{?44!3v>>|1*oxiKXBLs`KiI_n@jC1+=h0CEF&t+rWj zwBYq7;=H^vlO^;0n=^|ncM zZ%A8IL}Tq0aUOMukAWt*i9ZDh!-1p8TUF<}*lKh|1mGW%m02I$+mo~L5gO9*bH{Zm O>$7DoKy-)t_x}MDHzr#E diff --git a/gestao_raul/Lib/site-packages/pip/_vendor/rich/__pycache__/protocol.cpython-310.pyc b/gestao_raul/Lib/site-packages/pip/_vendor/rich/__pycache__/protocol.cpython-310.pyc index 63b91dea55376026030e586f270db7d45b1f5f0a..8216b3f89f10c3b75c61f550338fcdd593767b8c 100644 GIT binary patch delta 37 rcmX@Xb%={QpO=@50SFfPt=`DJpOGC&&U`*`81;>cY11ZNn(C{QDSM%=9i3-%m5aM4f6m1 diff --git a/gestao_raul/Lib/site-packages/pip/_vendor/rich/__pycache__/region.cpython-310.pyc b/gestao_raul/Lib/site-packages/pip/_vendor/rich/__pycache__/region.cpython-310.pyc index 89abffc87b5585771e9a97ea5db46f6e1d19ce16..2de789317a67cd5259e98a027e81f354384a4a75 100644 GIT binary patch delta 56 zcmeBY>15%~=jG*M0D?t+t2c7HGs=fMTg8MHrxq2*l&9vD1W~2=jG*M0D|ftp&Pl~8C7GQtztrpQ;UjY%2RVn@?%``lS^|`^Gb?i(o>5| Q67%DW5=(O?7c$NO073;78~^|S diff --git a/gestao_raul/Lib/site-packages/pip/_vendor/rich/__pycache__/repr.cpython-310.pyc b/gestao_raul/Lib/site-packages/pip/_vendor/rich/__pycache__/repr.cpython-310.pyc index 104c526875c20360281c41a28c7f8773705bb92e..c5419ccb94a2a2c18e028f033e53deda54eb9c57 100644 GIT binary patch delta 105 zcmZos_$AMq&&$ij00fKtR;T-K_&vm|R!kdv$P=A+EfOpLcCE3&EZ+Sjs_ zFxRk@urxCjc}@;uvlFOcFS4&;PhpW{sA0=yDzcxvgiW0>Ve=U_4@O3T$)X(Vm`WKo JALX!T2LS8p9C-i$ delta 115 zcmew*-=e^q&&$ij00h-PLeoPw@=j)EjGnxZS&}@%Gl(5#YH!~JF*086rNHWy0Wiu5yPM*c4&X~0M5Ss@h TqsU}#j&)4gOq+Le*s}uwq){NS diff --git a/gestao_raul/Lib/site-packages/pip/_vendor/rich/__pycache__/rule.cpython-310.pyc b/gestao_raul/Lib/site-packages/pip/_vendor/rich/__pycache__/rule.cpython-310.pyc index eefd4cf828fa9d8e7e4532f6cbd61fdd37e32a92..35c47161cd312cdcd18208ceed109a095525828f 100644 GIT binary patch delta 848 zcmZvaOKTKC5XZZFW_stn8xz?z;KnEkEFyT2XyOAO_&_m-NOF+i8q%OM(OEJxVuTu2 zS;%cc?JqFnO+1N5@hf=qvIjvgeg{uh&$_ED8R(+As($~fqUYQEkEY-8Je%P6ZuP^X z-%}s`OPsFDyZnf;ws!UUwNJZzj&^;_8+f+yBuz%hD*`MenTD3eK9G>*T0s(D(1@v9 zrl&gSJ(?MKGm?2AIR^u@f^85=1i44jipr#BkHsgIm+{C18d}O1OlWHt^gnPymZO!FO1ELsTLv%&e07!U7E{4bo$o31)KtfR-k5RblsOrrHb@K4X&_ zn8FcmpP{mbgJatsZ4hD3lFUv`=;~mDF-wG3Co=@Ma=^)JU<AL*sM*OU*S&|#x?(!Msa%E1VY3W0eVS$P+E7KgCIpv)~6TJ0r)ARCK?r)Z`PjCKz^w;{s2GA B!BYSL delta 1226 zcmZ`%OHUL*5bo}IKX+L`7NQUnjoFZ(F(E1;1S39TA~6y@_!@`p&9V<>VP=SkJz2%VUC(iU}_P? zB+{4`&=Vvzz~!m6gCqTb;WKFTF^$?Zw?lxrEkNZU8{;CP#t4dxP-7A^m^^}Leh3X9 z=*nbfr;iylUqoFDAdWHjF^A~LIss`j8<19p(mMr?qUsQDsK3kQ^)>{R-Z52~T{jMo zy*pXmebD)jV|8<~e{ekpC|zKBT`EH1JrVDG#!_gIx7fFi@w7P+2PquHJ3It3ID@C) z9UsVr13+&uAtp?R2hw}*Tk4-rm0I8iU5GfcoSr@?GN_A@QQA!0a&nQS1gy9)COVDfVlQszrI64{$A)6y@v@!Kyty!6H9KTjxa>^|)Xf-R2Gcnz4mEC4A z1CG1ANL}vqB0VOq={B42!@+SqwTH{(cuNJeapAbu(0{~|kJ|I`!Bksz*PWL&8ZMIQ=Xbrk{{!epIn-onpaXBlb%{! Rl9(S~lvtXx`2gE<765J2^9g1Ew;>7< delta 43 xcmcb}cb$(rpO=@50SKypgl^=HXJ(9@oXsrBot|1;l9(S~lvtXxxs&+>GXM)}4Qv1a diff --git a/gestao_raul/Lib/site-packages/pip/_vendor/rich/__pycache__/segment.cpython-310.pyc b/gestao_raul/Lib/site-packages/pip/_vendor/rich/__pycache__/segment.cpython-310.pyc index 4030c35d3f86535d5625a7fb45b1dbaa0f545306..3e5e2e293b001189a44059b5dcd693d693b32d18 100644 GIT binary patch delta 2796 zcmaJ@YfK#16`p%%cG(wTSnzImm|0>%7VtW5A_9b(z+x{L2UBA^PD@Lcoq^r3>@0T% zFzKv}vyJj_(>l3vlBRA`yR}-|mC|%-HIL?DCI4DgvMlAXf0Fh`B{x+gwW`{>Rnl{2 z0OPjGO7qRR=lR_;=g#cOGvvLqq(Un%_X+SjGkRg>$M?Tfan{vzINmdHP*<5gv7}}V zZDLSMEzGGoL!a2ce_&VKdf#=zOLp>1W#Xt;FhxZ)y${oygo4j-nZ6<^_)Wh_!$Kio z2K2b;HhrdKx{4x5;Hik{>u9FwxL^hpX_m5#=|SsFLXjvgdkx-enH6_vHNtc&PL{He z0GW6L zgZTB_ncON5J)caeeC3NRWAd%z4$Ekd+`rBk-0bSH^-yG&S}^2WA&2dH1Ap8fTD2U% z+$2}@L*;x{m9=TyHIK-_a7j2Ydi68-u_hR;YeZ&MaF4qA8=JQ9KW+Mw=gV$w!I+#{ z=JBfLo=&j&Dkb739`ZO$Urgd;{km~4WxO*fY@lg6le!A+m z!#M~yg$c1h3t~Ysi9%*wx_^)G5HSRk775#75`&;L>tc+Me4DSox)(8V4 zumb?2QHfRK;xNJ>!X$qr*i-&}5OuWp0s+E*6MT%kY#pj;7ReR99Qux|f+b4XeHfr1 z3?Rf2(g5%CFNAmaQ@GrXpzvI{Au@yF^$_$f`IGs4c6m}amb2>X)`jq8LQ=d?*Gm3i zovnM9kR&%7+MP^O7@p%lZx|r|YI=MflxSMDU6d3hv8JiIs3 zL8h!sWLT7-=rq5(JLI<8cbH$<+I!#-M2s?gR8dz+)EDL$&J-I#NFZ!RQ@KONu6ZMw zl0TctsgqeXH)Et3!-yPDwcJed{8&8bS^~u`>xGsjGA4nD*X?lW%>c(>biW#aCK4Q9 zQ`G6Bf=PB(hx({m&8h5IWmo7-6^XasFbo zCxnKQIF~$P&vsOF`c!2R*ElX#dbg8K>u0^+!bRWC1c~!UcCLgK5x%-^`09$RJ}1ox z_Ne(4i8u9~BqG1q_mw8}2%rd-W)?Gw$|JRPeE9CS``AHXw0d&N zoI`U8Ierh}2tY|nY58Rq#P$6EH=O7T{GR@UXA#aLSp12hFn>DUCT^#7 z)}{Cr>Q15lIDdZkaL5s14HG?#>Q&pd-3{a?Jd`+d%W>2WB22B>qb|qybyU1zo8WB| z=6_FAk)Lw!&>hvk0OdJ1vmNSeFTQW6%l#`9-$X*LS3!J%pC4)@ukzmww(-9Vjkt?w zMqXXk*M~<)!)v&9lpw7!T=l}24(5A>U)!^_VnZd+@p}^WJTWra{$J!V^nc0Q@3JZT zE%qijyu+`K^ty2e>@D8DH@bm!t`n=rj12%KF{{n6Ex5cF;UdB>5$rZ&XV@kF@xI>1w?Qn`<}>-&B>cfrG!|o- ZR61th(R_ywjz!69JU5ny$^USy^FIU<#xei^ delta 2421 zcmah~du&rx7{BM-+p@OX7<;h?uu%l8BWxgGnFBWljIlA;cm8$3tsZYcWG_4{N#+ zj0Z$;ZPfb0@urK7fzZGP#gtVE&J4`ou!@UX(`mX*#dIWPq-4{jN?Uocl$NaE^Ci<| zphJ?alEhxp7fXpuwBpZ5376?HGtA5+L)t?@O&9ql+$iT5JN7@ZH%PXjB6g7>xvRX$ zPOr*?@0VaYRrz6AebPq@(`On^RY|hV%;#uHNn#Mr=MPrCzF=`A8ZD1$>oid=v|y;C zyh9V3Z-AJN2BJxV(Yb{=sq8u(hi63Mu^B?d1x(3pb*7Y1M^M1NTyKpZZQY8(oIHc& zFooyyOr$cHo98m+uS|vLO#JJUWGE%PkTkz%iXoXi$wY<8 z3`W!{hZt;123Hw&sU&6U%-|+hxykH|V6)nI7 zEj~r$Qdf%!?EaR)xPod=5Au2rg4+e%1>4z4ix+xj_9=`kK3Kj2~(Lxj=4oinkW52-BVH??1@RoUpPfNIQ4DOYDoh0Vqx2z-L;5>=U zM3(6h&7hTyWV2ys*{C6^tjb&Y6x<-ae9b^}fay*$CL!e%0qc5MJ};oTV{>-p>yU2o zIWXtl;ohoF(hN%XV3)m?>Um%&x`<8JNK`k>@m6})5Ge?B*yf$YTyV)dmbu|q?-&-c zN=7uw!+W_1lR+DSJ<3Pt*#uig)ht+u+7`hOeU6l@uU#$TWZy*4Ku}1ktaN#H6_1ve z@R`9M)IK>qku4;3p)}AH zQE>ov@K-5Dy{!prMnLZfc51@9Q*oU;Y20EtTpin#yA{b^StRB%gM4;AaNGq)Dn}Q*PJBA6-j{Ww^=;*T{#-gM>ajtJ+?(;3 zV5m=dFsTRz=xBAZ2hNTk%HFeXj6cM49)uEaQNA9!Vz7H+mh%b@UL3HFPCUk|9~zaB z5n1}&k54J~k>wsp_$RZQ);a%J&Q$oJx}N{ZtcqvfV8~sl@v|c9Zq0mRW=*YRKC64` zZej-1Hn2%Bw{~Mu825!9=~c2QjVWQt-Xf1G!;iH+Oo2q*3wa7!Wa<;vRG6-$tydNJ zx$aiot-tYO--H%?l{}~wV=R;<#6}5X1oZPM3<8tD-UfRIw-XBl0}1vM93(hIaE#zM!3lzs z1Rp|qOA$Oj<0*L*FSNGJ_>!le!CkOyR^wp%Y1xH#xVnvGo)+Nw6%L5RB1RzaHheeh zSOuA+pX^Yd6+TtA$7K>+A+S|#_Ss)-9K?>mjm8PN=TOt@6t)%JXmJG!X8WBV6M2YAF^giFMyg-G=k{6NtEHKPot;Bxa5 zp3CHTKlknCM18+zD8hf6u^%nFqkhlTRWv^br{~l-sWtHl+?nJ1cRSZmdJ?9zl(K8q zl9n|L5B&Pv1}l4BnE5Z0hh0f2Q9}??ax@+m!-!o(aGu~Jg6RY_9B~akXsyBD!=GA9 U*=OKv^RY`%)z*oTkG4(v2ga^W00000 diff --git a/gestao_raul/Lib/site-packages/pip/_vendor/rich/__pycache__/spinner.cpython-310.pyc b/gestao_raul/Lib/site-packages/pip/_vendor/rich/__pycache__/spinner.cpython-310.pyc index 7a7496beecc4a1f2fb6567199a80ad7b1aab7c8f..7fdac89308f7a1901603ca950efac8685338b56f 100644 GIT binary patch delta 637 zcmZ8dJ#Q016x@AxxA);Ye+4^nViLy!L?}|wfFe;iHbQ{n!T}L1gJt=xgN1#L?k=G* zLMVn3gqDIL6%-&r0ZIWyQqb`mTp@%+hiDUI%wFi2V)SN4@6BpI=RfA1p5s_V;$`{m zy8Xc!(Fbp&;-pHEQ~_yKF#%^$K^3(fK*m+n(Lj@HXk`dSI71timW2*R2YOXEV`kh; zm`T$%CvXmrVQQdO4UAzN6PQGsn=OWEoRqGGQ%BoIOT`RMODBSWw-i}6v!nc1qj4td z!YTu^cznRBa$Y41xuL$g(RN+#HNI0q3OWCu$~D|}w-K~^?xJPoBnsZTzhsH8$`!Gw zJ{F(UYa*^)H7bp^&%@xZwj%c7Hhm$o%B359+9!2AFak4BGNi8|WXLukLGnmWGP7hB zk-ki~L24UA*Xb*gqkUC!3`33|aRP~at5z0!S~fK_+HSzTtw!fZ`12talH#X!o~A^e zJ)B!BF4eC4-1BSqcqi!9O1hO@$4tpm zaZ=x-XT>-D9X+@E)OZH;!tQ+J3DCND@06({#?A?SsMqV*Yl`{k%IP(E#vm$%7>qyz z$_@eG4=6BV8vF(ZhoD;rF!kzrluq0aiw#MP0Hnuk>|GYGW4}%nq&3u=z0PLW^}Xd# cX&Vifcf4XatDW{1_ex?vev{r2lZi8b0rCo;!~g&Q delta 629 zcmZ9J&1(}u7{+I2XJ>adyPK~zHJWM&eoznMK}G7tv;~zyK}rRe*s|oEgurIE>~1Qw zksgc}4}#9odeW14DLHuYpnrgO$v+@?5RYCY&eqa{@8QS$JTve649v&ImxdELj)he1 z{od$S4xK-E|D93-c^HsKIEHy3paDG~pbHHc7+?wtyo$gQI^=+KEU>{D86M*<&+`H= z@*FS0St!HIhkAt%fZgITC3m&4rAw9%n(3aZMn0IMVd*G?b&A47$%;<6|c z&OmL%Jk_tGg>w^QeY+QiB9`yzCVnNkerG>5QZv=6Xs83JqNmy8wP&guqAjk@EalV8 zS2_opqCL#$45^|Ex?=u_1<+Im^C>~7Sx^22)%~#7_tRb!Ua_qDaW&&^vUsfIXU^nL zvNSH)m#|!=mb_1Aq)+eN$S&`e!sujG+YbT(^$F|5eqSVO6SEhlBHr)J-M*Cyx7`EM4Yr9iy)0!D^YvU7h#&Tx*|#aXe;&yfjnd@RaXrrH3d?(v5j3! zrWK7&Ynm(=pYT=r)%bv~k9W+oetc14Y0hRD_9a}5Op^}^ IYBIhA0MaiJod5s; diff --git a/gestao_raul/Lib/site-packages/pip/_vendor/rich/__pycache__/style.cpython-310.pyc b/gestao_raul/Lib/site-packages/pip/_vendor/rich/__pycache__/style.cpython-310.pyc index 05b4d35e763c2100da6055ba9bf6d44227a64deb..93b49d600b85cde8ff15428cb7a7abf53e5874ef 100644 GIT binary patch delta 936 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 diff --git a/gestao_raul/Lib/site-packages/pip/_vendor/rich/__pycache__/table.cpython-310.pyc b/gestao_raul/Lib/site-packages/pip/_vendor/rich/__pycache__/table.cpython-310.pyc index a93156fd9336143f8859db281dd02023f48dc37c..9b340ea32df605c0a72a8c6690f3c53edd937ae0 100644 GIT binary patch delta 4895 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 J8`R0u{|C5$b`t;q diff --git a/gestao_raul/Lib/site-packages/pip/_vendor/rich/__pycache__/terminal_theme.cpython-310.pyc b/gestao_raul/Lib/site-packages/pip/_vendor/rich/__pycache__/terminal_theme.cpython-310.pyc index 3eff2b7b352877b5256ae3f7134c0faee5fc0e3e..47f88f3a0b3d52b77daf3e613dc007bf231171a2 100644 GIT binary patch delta 57 zcmX>hen^}IQ=Xbrk{{!epIn-onpaXB6BOj+ L>b%*PrJ5Z8>827L delta 63 zcmX>kenOl(pO=@50SKypgl^=PWl>Fawu%WYPAw{qDNoHQ$&Yc#PcF?(%_}L6Nlz^< RNz9KgN-WLU?9Nin4ghuw6?gyu diff --git a/gestao_raul/Lib/site-packages/pip/_vendor/rich/__pycache__/text.cpython-310.pyc b/gestao_raul/Lib/site-packages/pip/_vendor/rich/__pycache__/text.cpython-310.pyc index a6077cfeca555a0f9c85dc29dcbae00e4c62d42e..7db779157514c3ecce49c2bd323a5a6818ac18f4 100644 GIT binary patch delta 14139 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 diff --git a/gestao_raul/Lib/site-packages/pip/_vendor/rich/__pycache__/theme.cpython-310.pyc b/gestao_raul/Lib/site-packages/pip/_vendor/rich/__pycache__/theme.cpython-310.pyc index 941107764f524bac83e7f5d691fe151598f8fad1..ae88b8f4cb3c2b2278f132d87e29f65bdbbaa9cb 100644 GIT binary patch delta 753 zcmZvaO=}ZD7{}+CosHXUvQ5+0wl?A@Y3a7LFJiSXBHE^kP@<%*^(B{(nWS6N-7veQ zAQ6#z5Tr;M@B?`8;xQfs59$}tOHaXzUqhsIrdCk!S^mFgcAjTv{yWUKY-=DHB$IKZ z;&uLQ^}}BBeLKE&yG3$dIckw5FO2r~@4*{+9$Ed9*ffd^@3EF-tO`2_~>nY#oz zeyQfp(#2z+G^ptBX*uvKUX@n78Xu!MUMX$WqL4-b%?G}WTf_2aJafVYF{<3ljNRX3 ziXk-=BN|B!T@mNxXVNK)wsXpH9LOF%imzyMV?sG~ael?cD|xwNPkGW}H%cybxcfVe|Wz>VZ>ieF` zf+u4ggO^=Ue7Aj7vLx!_GOxIvWEA$iXk{fTza* delta 647 zcmZva&ubGw6vyYy%!W1lqsg{ni&3g3(KY@^`~|iCz$!{XQ?LnE5#rL>)=1lg*%d`s zL{dZ%kuq10dhjT@c=T@&53=|N=+T>}+Ba!0LTC7XhI!w|oA;JYOFxTF$8oX**VDhv z#mbuVWr$yC&&Mgh-j3pwPS31;pM&@6C=|g{H{mq$6_m%tuowyrVT6`21zE_5oXD>l zJ-FiuHcR}G{tqZoxU1ILn6(&2anNbW;Neogz~316=9zwQYjHeH)MZq30TGh~1oY^; z+%uMt2avD?5-R9hc8gFV7$=~Bhlz10HXJ8)Zl3zcxpKNP36slDzFMiQYvGg z$^%$gI*7VYQ{L%@EAlYjd@c`Zr!uhBXRADBTP_s;J;^rihs)tH83w|q^~NV?s6SQ} zsM>Egfvd-M1*+Fn)|wED>Y?HIL#nm7f)HY)5W|XUxWqq zGGBf!k7F3WK>?4tze8@Cnev(;J- j+AFP=KO##ypnR`s>COhetg6@ERqK+=&3zegfv;}>sb7LY diff --git a/gestao_raul/Lib/site-packages/pip/_vendor/rich/__pycache__/themes.cpython-310.pyc b/gestao_raul/Lib/site-packages/pip/_vendor/rich/__pycache__/themes.cpython-310.pyc index 5459eef087a02135c2f3b64930a5220c9c80a417..dae24f830842d7cf43ccbe493a2af1c38578a04e 100644 GIT binary patch delta 33 ncmZ3=G@pq(pO=@50SFfPt)9rem@$0fdP&xxASYMniI;-_jN%EK delta 39 tcmbQww3LZEpO=@50SKypgihpM%osayy(D*fYH>+oetc14Y0kv6K>*oa4E6v3 diff --git a/gestao_raul/Lib/site-packages/pip/_vendor/rich/__pycache__/traceback.cpython-310.pyc b/gestao_raul/Lib/site-packages/pip/_vendor/rich/__pycache__/traceback.cpython-310.pyc index b5e11bc7bcae415a6c66b0efcdd740bcafa1e6e7..ef10f433fa4659ef3d3bb12a02fd3dba1a1a6404 100644 GIT binary patch literal 22647 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 z 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 diff --git a/gestao_raul/Lib/site-packages/pip/_vendor/rich/_cell_widths.py b/gestao_raul/Lib/site-packages/pip/_vendor/rich/_cell_widths.py index 36286df..608ae3a 100644 --- a/gestao_raul/Lib/site-packages/pip/_vendor/rich/_cell_widths.py +++ b/gestao_raul/Lib/site-packages/pip/_vendor/rich/_cell_widths.py @@ -4,6 +4,7 @@ CELL_WIDTHS = [ (0, 0, 0), (1, 31, -1), (127, 159, -1), + (173, 173, 0), (768, 879, 0), (1155, 1161, 0), (1425, 1469, 0), @@ -11,13 +12,16 @@ CELL_WIDTHS = [ (1473, 1474, 0), (1476, 1477, 0), (1479, 1479, 0), + (1536, 1541, 0), (1552, 1562, 0), + (1564, 1564, 0), (1611, 1631, 0), (1648, 1648, 0), - (1750, 1756, 0), + (1750, 1757, 0), (1759, 1764, 0), (1767, 1768, 0), (1770, 1773, 0), + (1807, 1807, 0), (1809, 1809, 0), (1840, 1866, 0), (1958, 1968, 0), @@ -28,149 +32,137 @@ CELL_WIDTHS = [ (2085, 2087, 0), (2089, 2093, 0), (2137, 2139, 0), - (2259, 2273, 0), - (2275, 2306, 0), - (2362, 2362, 0), - (2364, 2364, 0), - (2369, 2376, 0), - (2381, 2381, 0), + (2192, 2193, 0), + (2200, 2207, 0), + (2250, 2307, 0), + (2362, 2364, 0), + (2366, 2383, 0), (2385, 2391, 0), (2402, 2403, 0), - (2433, 2433, 0), + (2433, 2435, 0), (2492, 2492, 0), - (2497, 2500, 0), - (2509, 2509, 0), + (2494, 2500, 0), + (2503, 2504, 0), + (2507, 2509, 0), + (2519, 2519, 0), (2530, 2531, 0), (2558, 2558, 0), - (2561, 2562, 0), + (2561, 2563, 0), (2620, 2620, 0), - (2625, 2626, 0), + (2622, 2626, 0), (2631, 2632, 0), (2635, 2637, 0), (2641, 2641, 0), (2672, 2673, 0), (2677, 2677, 0), - (2689, 2690, 0), + (2689, 2691, 0), (2748, 2748, 0), - (2753, 2757, 0), - (2759, 2760, 0), - (2765, 2765, 0), + (2750, 2757, 0), + (2759, 2761, 0), + (2763, 2765, 0), (2786, 2787, 0), (2810, 2815, 0), - (2817, 2817, 0), + (2817, 2819, 0), (2876, 2876, 0), - (2879, 2879, 0), - (2881, 2884, 0), - (2893, 2893, 0), - (2901, 2902, 0), + (2878, 2884, 0), + (2887, 2888, 0), + (2891, 2893, 0), + (2901, 2903, 0), (2914, 2915, 0), (2946, 2946, 0), - (3008, 3008, 0), - (3021, 3021, 0), - (3072, 3072, 0), - (3076, 3076, 0), - (3134, 3136, 0), + (3006, 3010, 0), + (3014, 3016, 0), + (3018, 3021, 0), + (3031, 3031, 0), + (3072, 3076, 0), + (3132, 3132, 0), + (3134, 3140, 0), (3142, 3144, 0), (3146, 3149, 0), (3157, 3158, 0), (3170, 3171, 0), - (3201, 3201, 0), + (3201, 3203, 0), (3260, 3260, 0), - (3263, 3263, 0), - (3270, 3270, 0), - (3276, 3277, 0), + (3262, 3268, 0), + (3270, 3272, 0), + (3274, 3277, 0), + (3285, 3286, 0), (3298, 3299, 0), - (3328, 3329, 0), + (3315, 3315, 0), + (3328, 3331, 0), (3387, 3388, 0), - (3393, 3396, 0), - (3405, 3405, 0), + (3390, 3396, 0), + (3398, 3400, 0), + (3402, 3405, 0), + (3415, 3415, 0), (3426, 3427, 0), - (3457, 3457, 0), + (3457, 3459, 0), (3530, 3530, 0), - (3538, 3540, 0), + (3535, 3540, 0), (3542, 3542, 0), + (3544, 3551, 0), + (3570, 3571, 0), (3633, 3633, 0), (3636, 3642, 0), (3655, 3662, 0), (3761, 3761, 0), (3764, 3772, 0), - (3784, 3789, 0), + (3784, 3790, 0), (3864, 3865, 0), (3893, 3893, 0), (3895, 3895, 0), (3897, 3897, 0), - (3953, 3966, 0), - (3968, 3972, 0), + (3902, 3903, 0), + (3953, 3972, 0), (3974, 3975, 0), (3981, 3991, 0), (3993, 4028, 0), (4038, 4038, 0), - (4141, 4144, 0), - (4146, 4151, 0), - (4153, 4154, 0), - (4157, 4158, 0), - (4184, 4185, 0), + (4139, 4158, 0), + (4182, 4185, 0), (4190, 4192, 0), + (4194, 4196, 0), + (4199, 4205, 0), (4209, 4212, 0), - (4226, 4226, 0), - (4229, 4230, 0), - (4237, 4237, 0), - (4253, 4253, 0), + (4226, 4237, 0), + (4239, 4239, 0), + (4250, 4253, 0), (4352, 4447, 2), + (4448, 4607, 0), (4957, 4959, 0), - (5906, 5908, 0), + (5906, 5909, 0), (5938, 5940, 0), (5970, 5971, 0), (6002, 6003, 0), - (6068, 6069, 0), - (6071, 6077, 0), - (6086, 6086, 0), - (6089, 6099, 0), + (6068, 6099, 0), (6109, 6109, 0), - (6155, 6157, 0), + (6155, 6159, 0), (6277, 6278, 0), (6313, 6313, 0), - (6432, 6434, 0), - (6439, 6440, 0), - (6450, 6450, 0), - (6457, 6459, 0), - (6679, 6680, 0), - (6683, 6683, 0), - (6742, 6742, 0), - (6744, 6750, 0), - (6752, 6752, 0), - (6754, 6754, 0), - (6757, 6764, 0), - (6771, 6780, 0), + (6432, 6443, 0), + (6448, 6459, 0), + (6679, 6683, 0), + (6741, 6750, 0), + (6752, 6780, 0), (6783, 6783, 0), - (6832, 6848, 0), - (6912, 6915, 0), - (6964, 6964, 0), - (6966, 6970, 0), - (6972, 6972, 0), - (6978, 6978, 0), + (6832, 6862, 0), + (6912, 6916, 0), + (6964, 6980, 0), (7019, 7027, 0), - (7040, 7041, 0), - (7074, 7077, 0), - (7080, 7081, 0), - (7083, 7085, 0), - (7142, 7142, 0), - (7144, 7145, 0), - (7149, 7149, 0), - (7151, 7153, 0), - (7212, 7219, 0), - (7222, 7223, 0), + (7040, 7042, 0), + (7073, 7085, 0), + (7142, 7155, 0), + (7204, 7223, 0), (7376, 7378, 0), - (7380, 7392, 0), - (7394, 7400, 0), + (7380, 7400, 0), (7405, 7405, 0), (7412, 7412, 0), - (7416, 7417, 0), - (7616, 7673, 0), - (7675, 7679, 0), + (7415, 7417, 0), + (7616, 7679, 0), (8203, 8207, 0), (8232, 8238, 0), - (8288, 8291, 0), + (8288, 8292, 0), + (8294, 8303, 0), (8400, 8432, 0), (8986, 8987, 2), (9001, 9002, 2), @@ -212,17 +204,16 @@ CELL_WIDTHS = [ (11904, 11929, 2), (11931, 12019, 2), (12032, 12245, 2), - (12272, 12283, 2), - (12288, 12329, 2), - (12330, 12333, 0), - (12334, 12350, 2), + (12272, 12329, 2), + (12330, 12335, 0), + (12336, 12350, 2), (12353, 12438, 2), (12441, 12442, 0), (12443, 12543, 2), (12549, 12591, 2), (12593, 12686, 2), (12688, 12771, 2), - (12784, 12830, 2), + (12783, 12830, 2), (12832, 12871, 2), (12880, 19903, 2), (19968, 42124, 2), @@ -234,36 +225,33 @@ CELL_WIDTHS = [ (43010, 43010, 0), (43014, 43014, 0), (43019, 43019, 0), - (43045, 43046, 0), + (43043, 43047, 0), (43052, 43052, 0), - (43204, 43205, 0), + (43136, 43137, 0), + (43188, 43205, 0), (43232, 43249, 0), (43263, 43263, 0), (43302, 43309, 0), - (43335, 43345, 0), + (43335, 43347, 0), (43360, 43388, 2), - (43392, 43394, 0), - (43443, 43443, 0), - (43446, 43449, 0), - (43452, 43453, 0), + (43392, 43395, 0), + (43443, 43456, 0), (43493, 43493, 0), - (43561, 43566, 0), - (43569, 43570, 0), - (43573, 43574, 0), + (43561, 43574, 0), (43587, 43587, 0), - (43596, 43596, 0), - (43644, 43644, 0), + (43596, 43597, 0), + (43643, 43645, 0), (43696, 43696, 0), (43698, 43700, 0), (43703, 43704, 0), (43710, 43711, 0), (43713, 43713, 0), - (43756, 43757, 0), - (43766, 43766, 0), - (44005, 44005, 0), - (44008, 44008, 0), - (44013, 44013, 0), + (43755, 43759, 0), + (43765, 43766, 0), + (44003, 44010, 0), + (44012, 44013, 0), (44032, 55203, 2), + (55216, 55295, 0), (63744, 64255, 2), (64286, 64286, 0), (65024, 65039, 0), @@ -272,8 +260,10 @@ CELL_WIDTHS = [ (65072, 65106, 2), (65108, 65126, 2), (65128, 65131, 2), + (65279, 65279, 0), (65281, 65376, 2), (65504, 65510, 2), + (65529, 65531, 0), (66045, 66045, 0), (66272, 66272, 0), (66422, 66426, 0), @@ -285,102 +275,108 @@ CELL_WIDTHS = [ (68325, 68326, 0), (68900, 68903, 0), (69291, 69292, 0), + (69373, 69375, 0), (69446, 69456, 0), - (69633, 69633, 0), + (69506, 69509, 0), + (69632, 69634, 0), (69688, 69702, 0), - (69759, 69761, 0), - (69811, 69814, 0), - (69817, 69818, 0), + (69744, 69744, 0), + (69747, 69748, 0), + (69759, 69762, 0), + (69808, 69818, 0), + (69821, 69821, 0), + (69826, 69826, 0), + (69837, 69837, 0), (69888, 69890, 0), - (69927, 69931, 0), - (69933, 69940, 0), + (69927, 69940, 0), + (69957, 69958, 0), (70003, 70003, 0), - (70016, 70017, 0), - (70070, 70078, 0), + (70016, 70018, 0), + (70067, 70080, 0), (70089, 70092, 0), - (70095, 70095, 0), - (70191, 70193, 0), - (70196, 70196, 0), - (70198, 70199, 0), + (70094, 70095, 0), + (70188, 70199, 0), (70206, 70206, 0), - (70367, 70367, 0), - (70371, 70378, 0), - (70400, 70401, 0), + (70209, 70209, 0), + (70367, 70378, 0), + (70400, 70403, 0), (70459, 70460, 0), - (70464, 70464, 0), + (70462, 70468, 0), + (70471, 70472, 0), + (70475, 70477, 0), + (70487, 70487, 0), + (70498, 70499, 0), (70502, 70508, 0), (70512, 70516, 0), - (70712, 70719, 0), - (70722, 70724, 0), - (70726, 70726, 0), + (70709, 70726, 0), (70750, 70750, 0), - (70835, 70840, 0), - (70842, 70842, 0), - (70847, 70848, 0), - (70850, 70851, 0), - (71090, 71093, 0), - (71100, 71101, 0), - (71103, 71104, 0), + (70832, 70851, 0), + (71087, 71093, 0), + (71096, 71104, 0), (71132, 71133, 0), - (71219, 71226, 0), - (71229, 71229, 0), - (71231, 71232, 0), - (71339, 71339, 0), - (71341, 71341, 0), - (71344, 71349, 0), - (71351, 71351, 0), - (71453, 71455, 0), - (71458, 71461, 0), - (71463, 71467, 0), - (71727, 71735, 0), - (71737, 71738, 0), - (71995, 71996, 0), - (71998, 71998, 0), - (72003, 72003, 0), - (72148, 72151, 0), - (72154, 72155, 0), - (72160, 72160, 0), + (71216, 71232, 0), + (71339, 71351, 0), + (71453, 71467, 0), + (71724, 71738, 0), + (71984, 71989, 0), + (71991, 71992, 0), + (71995, 71998, 0), + (72000, 72000, 0), + (72002, 72003, 0), + (72145, 72151, 0), + (72154, 72160, 0), + (72164, 72164, 0), (72193, 72202, 0), - (72243, 72248, 0), + (72243, 72249, 0), (72251, 72254, 0), (72263, 72263, 0), - (72273, 72278, 0), - (72281, 72283, 0), - (72330, 72342, 0), - (72344, 72345, 0), - (72752, 72758, 0), - (72760, 72765, 0), - (72767, 72767, 0), + (72273, 72283, 0), + (72330, 72345, 0), + (72751, 72758, 0), + (72760, 72767, 0), (72850, 72871, 0), - (72874, 72880, 0), - (72882, 72883, 0), - (72885, 72886, 0), + (72873, 72886, 0), (73009, 73014, 0), (73018, 73018, 0), (73020, 73021, 0), (73023, 73029, 0), (73031, 73031, 0), + (73098, 73102, 0), (73104, 73105, 0), - (73109, 73109, 0), - (73111, 73111, 0), - (73459, 73460, 0), + (73107, 73111, 0), + (73459, 73462, 0), + (73472, 73473, 0), + (73475, 73475, 0), + (73524, 73530, 0), + (73534, 73538, 0), + (78896, 78912, 0), + (78919, 78933, 0), (92912, 92916, 0), (92976, 92982, 0), (94031, 94031, 0), + (94033, 94087, 0), (94095, 94098, 0), (94176, 94179, 2), (94180, 94180, 0), - (94192, 94193, 2), + (94192, 94193, 0), (94208, 100343, 2), (100352, 101589, 2), (101632, 101640, 2), - (110592, 110878, 2), + (110576, 110579, 2), + (110581, 110587, 2), + (110589, 110590, 2), + (110592, 110882, 2), + (110898, 110898, 2), (110928, 110930, 2), + (110933, 110933, 2), (110948, 110951, 2), (110960, 111355, 2), (113821, 113822, 0), - (119143, 119145, 0), - (119163, 119170, 0), + (113824, 113827, 0), + (118528, 118573, 0), + (118576, 118598, 0), + (119141, 119145, 0), + (119149, 119170, 0), (119173, 119179, 0), (119210, 119213, 0), (119362, 119364, 0), @@ -395,8 +391,11 @@ CELL_WIDTHS = [ (122907, 122913, 0), (122915, 122916, 0), (122918, 122922, 0), + (123023, 123023, 0), (123184, 123190, 0), + (123566, 123566, 0), (123628, 123631, 0), + (124140, 124143, 0), (125136, 125142, 0), (125252, 125258, 0), (126980, 126980, 2), @@ -416,7 +415,9 @@ CELL_WIDTHS = [ (127951, 127955, 2), (127968, 127984, 2), (127988, 127988, 2), - (127992, 128062, 2), + (127992, 127994, 2), + (127995, 127999, 0), + (128000, 128062, 2), (128064, 128064, 2), (128066, 128252, 2), (128255, 128317, 2), @@ -430,22 +431,24 @@ CELL_WIDTHS = [ (128716, 128716, 2), (128720, 128722, 2), (128725, 128727, 2), + (128732, 128735, 2), (128747, 128748, 2), (128756, 128764, 2), (128992, 129003, 2), + (129008, 129008, 2), (129292, 129338, 2), (129340, 129349, 2), - (129351, 129400, 2), - (129402, 129483, 2), - (129485, 129535, 2), - (129648, 129652, 2), - (129656, 129658, 2), - (129664, 129670, 2), - (129680, 129704, 2), - (129712, 129718, 2), - (129728, 129730, 2), - (129744, 129750, 2), + (129351, 129535, 2), + (129648, 129660, 2), + (129664, 129672, 2), + (129680, 129725, 2), + (129727, 129733, 2), + (129742, 129755, 2), + (129760, 129768, 2), + (129776, 129784, 2), (131072, 196605, 2), (196608, 262141, 2), + (917505, 917505, 0), + (917536, 917631, 0), (917760, 917999, 0), ] diff --git a/gestao_raul/Lib/site-packages/pip/_vendor/rich/_export_format.py b/gestao_raul/Lib/site-packages/pip/_vendor/rich/_export_format.py index b79c130..e7527e5 100644 --- a/gestao_raul/Lib/site-packages/pip/_vendor/rich/_export_format.py +++ b/gestao_raul/Lib/site-packages/pip/_vendor/rich/_export_format.py @@ -1,5 +1,6 @@ CONSOLE_HTML_FORMAT = """\ + - - -
{code}
-
+
{code}
""" diff --git a/gestao_raul/Lib/site-packages/pip/_vendor/rich/_fileno.py b/gestao_raul/Lib/site-packages/pip/_vendor/rich/_fileno.py new file mode 100644 index 0000000..b17ee65 --- /dev/null +++ b/gestao_raul/Lib/site-packages/pip/_vendor/rich/_fileno.py @@ -0,0 +1,24 @@ +from __future__ import annotations + +from typing import IO, Callable + + +def get_fileno(file_like: IO[str]) -> int | None: + """Get fileno() from a file, accounting for poorly implemented file-like objects. + + Args: + file_like (IO): A file-like object. + + Returns: + int | None: The result of fileno if available, or None if operation failed. + """ + fileno: Callable[[], int] | None = getattr(file_like, "fileno", None) + if fileno is not None: + try: + return fileno() + except Exception: + # `fileno` is documented as potentially raising a OSError + # Alas, from the issues, there are so many poorly implemented file-like objects, + # that `fileno()` can raise just about anything. + return None + return None diff --git a/gestao_raul/Lib/site-packages/pip/_vendor/rich/_inspect.py b/gestao_raul/Lib/site-packages/pip/_vendor/rich/_inspect.py index 30446ce..e87698d 100644 --- a/gestao_raul/Lib/site-packages/pip/_vendor/rich/_inspect.py +++ b/gestao_raul/Lib/site-packages/pip/_vendor/rich/_inspect.py @@ -1,5 +1,3 @@ -from __future__ import absolute_import - import inspect from inspect import cleandoc, getdoc, getfile, isclass, ismodule, signature from typing import Any, Collection, Iterable, Optional, Tuple, Type, Union diff --git a/gestao_raul/Lib/site-packages/pip/_vendor/rich/_null_file.py b/gestao_raul/Lib/site-packages/pip/_vendor/rich/_null_file.py index 49038bf..6ae05d3 100644 --- a/gestao_raul/Lib/site-packages/pip/_vendor/rich/_null_file.py +++ b/gestao_raul/Lib/site-packages/pip/_vendor/rich/_null_file.py @@ -3,20 +3,6 @@ from typing import IO, Iterable, Iterator, List, Optional, Type class NullFile(IO[str]): - - # TODO: "mode", "name" and "closed" are only required for Python 3.6. - - @property - def mode(self) -> str: - return "" - - @property - def name(self) -> str: - return "NullFile" - - def closed(self) -> bool: - return False - def close(self) -> None: pass @@ -60,7 +46,7 @@ class NullFile(IO[str]): return iter([""]) def __enter__(self) -> IO[str]: - pass + return self def __exit__( self, diff --git a/gestao_raul/Lib/site-packages/pip/_vendor/rich/_ratio.py b/gestao_raul/Lib/site-packages/pip/_vendor/rich/_ratio.py index e8a3a67..95267b0 100644 --- a/gestao_raul/Lib/site-packages/pip/_vendor/rich/_ratio.py +++ b/gestao_raul/Lib/site-packages/pip/_vendor/rich/_ratio.py @@ -151,7 +151,6 @@ if __name__ == "__main__": @dataclass class E: - size: Optional[int] = None ratio: int = 1 minimum_size: int = 1 diff --git a/gestao_raul/Lib/site-packages/pip/_vendor/rich/_win32_console.py b/gestao_raul/Lib/site-packages/pip/_vendor/rich/_win32_console.py index 81b1082..2eba1b9 100644 --- a/gestao_raul/Lib/site-packages/pip/_vendor/rich/_win32_console.py +++ b/gestao_raul/Lib/site-packages/pip/_vendor/rich/_win32_console.py @@ -2,6 +2,7 @@ The API that this module wraps is documented at https://docs.microsoft.com/en-us/windows/console/console-functions """ + import ctypes import sys from typing import Any @@ -380,7 +381,7 @@ class LegacyWindowsTerm: WindowsCoordinates: The current cursor position. """ coord: COORD = GetConsoleScreenBufferInfo(self._handle).dwCursorPosition - return WindowsCoordinates(row=cast(int, coord.Y), col=cast(int, coord.X)) + return WindowsCoordinates(row=coord.Y, col=coord.X) @property def screen_size(self) -> WindowsCoordinates: @@ -390,9 +391,7 @@ class LegacyWindowsTerm: WindowsCoordinates: The width and height of the screen as WindowsCoordinates. """ screen_size: COORD = GetConsoleScreenBufferInfo(self._handle).dwSize - return WindowsCoordinates( - row=cast(int, screen_size.Y), col=cast(int, screen_size.X) - ) + return WindowsCoordinates(row=screen_size.Y, col=screen_size.X) def write_text(self, text: str) -> None: """Write text directly to the terminal without any modification of styles diff --git a/gestao_raul/Lib/site-packages/pip/_vendor/rich/_windows.py b/gestao_raul/Lib/site-packages/pip/_vendor/rich/_windows.py index 10fc0d7..7520a9f 100644 --- a/gestao_raul/Lib/site-packages/pip/_vendor/rich/_windows.py +++ b/gestao_raul/Lib/site-packages/pip/_vendor/rich/_windows.py @@ -30,7 +30,6 @@ try: ) except (AttributeError, ImportError, ValueError): - # Fallback if we can't load the Windows DLL def get_windows_console_features() -> WindowsConsoleFeatures: features = WindowsConsoleFeatures() diff --git a/gestao_raul/Lib/site-packages/pip/_vendor/rich/_wrap.py b/gestao_raul/Lib/site-packages/pip/_vendor/rich/_wrap.py index c45f193..2e94ff6 100644 --- a/gestao_raul/Lib/site-packages/pip/_vendor/rich/_wrap.py +++ b/gestao_raul/Lib/site-packages/pip/_vendor/rich/_wrap.py @@ -1,5 +1,7 @@ +from __future__ import annotations + import re -from typing import Iterable, List, Tuple +from typing import Iterable from ._loop import loop_last from .cells import cell_len, chop_cells @@ -7,7 +9,11 @@ from .cells import cell_len, chop_cells re_word = re.compile(r"\s*\S+\s*") -def words(text: str) -> Iterable[Tuple[int, int, str]]: +def words(text: str) -> Iterable[tuple[int, int, str]]: + """Yields each word from the text as a tuple + containing (start_index, end_index, word). A "word" in this context may + include the actual word and any whitespace to the right. + """ position = 0 word_match = re_word.match(text, position) while word_match is not None: @@ -17,35 +23,59 @@ def words(text: str) -> Iterable[Tuple[int, int, str]]: word_match = re_word.match(text, end) -def divide_line(text: str, width: int, fold: bool = True) -> List[int]: - divides: List[int] = [] - append = divides.append - line_position = 0 +def divide_line(text: str, width: int, fold: bool = True) -> list[int]: + """Given a string of text, and a width (measured in cells), return a list + of cell offsets which the string should be split at in order for it to fit + within the given width. + + Args: + text: The text to examine. + width: The available cell width. + fold: If True, words longer than `width` will be folded onto a new line. + + Returns: + A list of indices to break the line at. + """ + break_positions: list[int] = [] # offsets to insert the breaks at + append = break_positions.append + cell_offset = 0 _cell_len = cell_len + for start, _end, word in words(text): word_length = _cell_len(word.rstrip()) - if line_position + word_length > width: + remaining_space = width - cell_offset + word_fits_remaining_space = remaining_space >= word_length + + if word_fits_remaining_space: + # Simplest case - the word fits within the remaining width for this line. + cell_offset += _cell_len(word) + else: + # Not enough space remaining for this word on the current line. if word_length > width: + # The word doesn't fit on any line, so we can't simply + # place it on the next line... if fold: - chopped_words = chop_cells(word, max_size=width, position=0) - for last, line in loop_last(chopped_words): + # Fold the word across multiple lines. + folded_word = chop_cells(word, width=width) + for last, line in loop_last(folded_word): if start: append(start) - if last: - line_position = _cell_len(line) + cell_offset = _cell_len(line) else: start += len(line) else: + # Folding isn't allowed, so crop the word. if start: append(start) - line_position = _cell_len(word) - elif line_position and start: + cell_offset = _cell_len(word) + elif cell_offset and start: + # The word doesn't fit within the remaining space on the current + # line, but it *can* fit on to the next (empty) line. append(start) - line_position = _cell_len(word) - else: - line_position += _cell_len(word) - return divides + cell_offset = _cell_len(word) + + return break_positions if __name__ == "__main__": # pragma: no cover @@ -53,4 +83,11 @@ if __name__ == "__main__": # pragma: no cover console = Console(width=10) console.print("12345 abcdefghijklmnopqrstuvwyxzABCDEFGHIJKLMNOPQRSTUVWXYZ 12345") - print(chop_cells("abcdefghijklmnopqrstuvwxyz", 10, position=2)) + print(chop_cells("abcdefghijklmnopqrstuvwxyz", 10)) + + console = Console(width=20) + console.rule() + console.print("TextualはPythonの高速アプリケーション開発フレームワークです") + + console.rule() + console.print("アプリケーションは1670万色を使用でき") diff --git a/gestao_raul/Lib/site-packages/pip/_vendor/rich/align.py b/gestao_raul/Lib/site-packages/pip/_vendor/rich/align.py index d5abb59..330dcc5 100644 --- a/gestao_raul/Lib/site-packages/pip/_vendor/rich/align.py +++ b/gestao_raul/Lib/site-packages/pip/_vendor/rich/align.py @@ -27,7 +27,7 @@ class Align(JupyterMixin): renderable (RenderableType): A console renderable. align (AlignMethod): One of "left", "center", or "right"" style (StyleType, optional): An optional style to apply to the background. - vertical (Optional[VerticalAlginMethod], optional): Optional vertical align, one of "top", "middle", or "bottom". Defaults to None. + vertical (Optional[VerticalAlignMethod], optional): Optional vertical align, one of "top", "middle", or "bottom". Defaults to None. pad (bool, optional): Pad the right with spaces. Defaults to True. width (int, optional): Restrict contents to given width, or None to use default width. Defaults to None. height (int, optional): Set height of align renderable, or None to fit to contents. Defaults to None. @@ -240,6 +240,7 @@ class VerticalCenter(JupyterMixin): Args: renderable (RenderableType): A renderable object. + style (StyleType, optional): An optional style to apply to the background. Defaults to None. """ def __init__( @@ -303,7 +304,7 @@ if __name__ == "__main__": # pragma: no cover ), width=60, style="on dark_blue", - title="Algin", + title="Align", ) console.print( diff --git a/gestao_raul/Lib/site-packages/pip/_vendor/rich/ansi.py b/gestao_raul/Lib/site-packages/pip/_vendor/rich/ansi.py index 92ef519..7de86ce 100644 --- a/gestao_raul/Lib/site-packages/pip/_vendor/rich/ansi.py +++ b/gestao_raul/Lib/site-packages/pip/_vendor/rich/ansi.py @@ -9,6 +9,7 @@ from .text import Text re_ansi = re.compile( r""" +(?:\x1b[0-?])| (?:\x1b\](.*?)\x1b\\)| (?:\x1b([(@-Z\\-_]|\[[0-?]*[ -/]*[@-~])) """, @@ -43,6 +44,9 @@ def _ansi_tokenize(ansi_text: str) -> Iterable[_AnsiToken]: if start > position: yield _AnsiToken(ansi_text[position:start]) if sgr: + if sgr == "(": + position = end + 1 + continue if sgr.endswith("m"): yield _AnsiToken("", sgr[1:-1], osc) else: diff --git a/gestao_raul/Lib/site-packages/pip/_vendor/rich/bar.py b/gestao_raul/Lib/site-packages/pip/_vendor/rich/bar.py index ed86a55..022284b 100644 --- a/gestao_raul/Lib/site-packages/pip/_vendor/rich/bar.py +++ b/gestao_raul/Lib/site-packages/pip/_vendor/rich/bar.py @@ -48,7 +48,6 @@ class Bar(JupyterMixin): def __rich_console__( self, console: Console, options: ConsoleOptions ) -> RenderResult: - width = min( self.width if self.width is not None else options.max_width, options.max_width, diff --git a/gestao_raul/Lib/site-packages/pip/_vendor/rich/box.py b/gestao_raul/Lib/site-packages/pip/_vendor/rich/box.py index 97d2a94..0511a9e 100644 --- a/gestao_raul/Lib/site-packages/pip/_vendor/rich/box.py +++ b/gestao_raul/Lib/site-packages/pip/_vendor/rich/box.py @@ -188,260 +188,224 @@ class Box: return "".join(parts) +# fmt: off ASCII: Box = Box( - """\ -+--+ -| || -|-+| -| || -|-+| -|-+| -| || -+--+ -""", + "+--+\n" + "| ||\n" + "|-+|\n" + "| ||\n" + "|-+|\n" + "|-+|\n" + "| ||\n" + "+--+\n", ascii=True, ) ASCII2: Box = Box( - """\ -+-++ -| || -+-++ -| || -+-++ -+-++ -| || -+-++ -""", + "+-++\n" + "| ||\n" + "+-++\n" + "| ||\n" + "+-++\n" + "+-++\n" + "| ||\n" + "+-++\n", ascii=True, ) ASCII_DOUBLE_HEAD: Box = Box( - """\ -+-++ -| || -+=++ -| || -+-++ -+-++ -| || -+-++ -""", + "+-++\n" + "| ||\n" + "+=++\n" + "| ||\n" + "+-++\n" + "+-++\n" + "| ||\n" + "+-++\n", ascii=True, ) SQUARE: Box = Box( - """\ -┌─┬┐ -│ ││ -├─┼┤ -│ ││ -├─┼┤ -├─┼┤ -│ ││ -└─┴┘ -""" + "┌─┬┐\n" + "│ ││\n" + "├─┼┤\n" + "│ ││\n" + "├─┼┤\n" + "├─┼┤\n" + "│ ││\n" + "└─┴┘\n" ) SQUARE_DOUBLE_HEAD: Box = Box( - """\ -┌─┬┐ -│ ││ -╞═╪╡ -│ ││ -├─┼┤ -├─┼┤ -│ ││ -└─┴┘ -""" + "┌─┬┐\n" + "│ ││\n" + "╞═╪╡\n" + "│ ││\n" + "├─┼┤\n" + "├─┼┤\n" + "│ ││\n" + "└─┴┘\n" ) MINIMAL: Box = Box( - """\ - ╷ - │ -╶─┼╴ - │ -╶─┼╴ -╶─┼╴ - │ - ╵ -""" + " ╷ \n" + " │ \n" + "╶─┼╴\n" + " │ \n" + "╶─┼╴\n" + "╶─┼╴\n" + " │ \n" + " ╵ \n" ) MINIMAL_HEAVY_HEAD: Box = Box( - """\ - ╷ - │ -╺━┿╸ - │ -╶─┼╴ -╶─┼╴ - │ - ╵ -""" + " ╷ \n" + " │ \n" + "╺━┿╸\n" + " │ \n" + "╶─┼╴\n" + "╶─┼╴\n" + " │ \n" + " ╵ \n" ) MINIMAL_DOUBLE_HEAD: Box = Box( - """\ - ╷ - │ - ═╪ - │ - ─┼ - ─┼ - │ - ╵ -""" + " ╷ \n" + " │ \n" + " ═╪ \n" + " │ \n" + " ─┼ \n" + " ─┼ \n" + " │ \n" + " ╵ \n" ) SIMPLE: Box = Box( - """\ - - - ── - - - ── - - -""" + " \n" + " \n" + " ── \n" + " \n" + " \n" + " ── \n" + " \n" + " \n" ) SIMPLE_HEAD: Box = Box( - """\ - - - ── - - - - - -""" + " \n" + " \n" + " ── \n" + " \n" + " \n" + " \n" + " \n" + " \n" ) SIMPLE_HEAVY: Box = Box( - """\ - - - ━━ - - - ━━ - - -""" + " \n" + " \n" + " ━━ \n" + " \n" + " \n" + " ━━ \n" + " \n" + " \n" ) HORIZONTALS: Box = Box( - """\ - ── - - ── - - ── - ── - - ── -""" + " ── \n" + " \n" + " ── \n" + " \n" + " ── \n" + " ── \n" + " \n" + " ── \n" ) ROUNDED: Box = Box( - """\ -╭─┬╮ -│ ││ -├─┼┤ -│ ││ -├─┼┤ -├─┼┤ -│ ││ -╰─┴╯ -""" + "╭─┬╮\n" + "│ ││\n" + "├─┼┤\n" + "│ ││\n" + "├─┼┤\n" + "├─┼┤\n" + "│ ││\n" + "╰─┴╯\n" ) HEAVY: Box = Box( - """\ -┏━┳┓ -┃ ┃┃ -┣━╋┫ -┃ ┃┃ -┣━╋┫ -┣━╋┫ -┃ ┃┃ -┗━┻┛ -""" + "┏━┳┓\n" + "┃ ┃┃\n" + "┣━╋┫\n" + "┃ ┃┃\n" + "┣━╋┫\n" + "┣━╋┫\n" + "┃ ┃┃\n" + "┗━┻┛\n" ) HEAVY_EDGE: Box = Box( - """\ -┏━┯┓ -┃ │┃ -┠─┼┨ -┃ │┃ -┠─┼┨ -┠─┼┨ -┃ │┃ -┗━┷┛ -""" + "┏━┯┓\n" + "┃ │┃\n" + "┠─┼┨\n" + "┃ │┃\n" + "┠─┼┨\n" + "┠─┼┨\n" + "┃ │┃\n" + "┗━┷┛\n" ) HEAVY_HEAD: Box = Box( - """\ -┏━┳┓ -┃ ┃┃ -┡━╇┩ -│ ││ -├─┼┤ -├─┼┤ -│ ││ -└─┴┘ -""" + "┏━┳┓\n" + "┃ ┃┃\n" + "┡━╇┩\n" + "│ ││\n" + "├─┼┤\n" + "├─┼┤\n" + "│ ││\n" + "└─┴┘\n" ) DOUBLE: Box = Box( - """\ -╔═╦╗ -║ ║║ -╠═╬╣ -║ ║║ -╠═╬╣ -╠═╬╣ -║ ║║ -╚═╩╝ -""" + "╔═╦╗\n" + "║ ║║\n" + "╠═╬╣\n" + "║ ║║\n" + "╠═╬╣\n" + "╠═╬╣\n" + "║ ║║\n" + "╚═╩╝\n" ) DOUBLE_EDGE: Box = Box( - """\ -╔═╤╗ -║ │║ -╟─┼╢ -║ │║ -╟─┼╢ -╟─┼╢ -║ │║ -╚═╧╝ -""" + "╔═╤╗\n" + "║ │║\n" + "╟─┼╢\n" + "║ │║\n" + "╟─┼╢\n" + "╟─┼╢\n" + "║ │║\n" + "╚═╧╝\n" ) MARKDOWN: Box = Box( - """\ - -| || -|-|| -| || -|-|| -|-|| -| || - -""", + " \n" + "| ||\n" + "|-||\n" + "| ||\n" + "|-||\n" + "|-||\n" + "| ||\n" + " \n", ascii=True, ) +# fmt: on # Map Boxes that don't render with raster fonts on to equivalent that do LEGACY_WINDOWS_SUBSTITUTIONS = { @@ -464,7 +428,6 @@ PLAIN_HEADED_SUBSTITUTIONS = { if __name__ == "__main__": # pragma: no cover - from pip._vendor.rich.columns import Columns from pip._vendor.rich.panel import Panel diff --git a/gestao_raul/Lib/site-packages/pip/_vendor/rich/cells.py b/gestao_raul/Lib/site-packages/pip/_vendor/rich/cells.py index 139b949..a854622 100644 --- a/gestao_raul/Lib/site-packages/pip/_vendor/rich/cells.py +++ b/gestao_raul/Lib/site-packages/pip/_vendor/rich/cells.py @@ -1,11 +1,33 @@ -import re +from __future__ import annotations + from functools import lru_cache -from typing import Callable, List +from typing import Callable from ._cell_widths import CELL_WIDTHS -# Regex to match sequence of the most common character ranges -_is_single_cell_widths = re.compile("^[\u0020-\u006f\u00a0\u02ff\u0370-\u0482]*$").match +# Ranges of unicode ordinals that produce a 1-cell wide character +# This is non-exhaustive, but covers most common Western characters +_SINGLE_CELL_UNICODE_RANGES: list[tuple[int, int]] = [ + (0x20, 0x7E), # Latin (excluding non-printable) + (0xA0, 0xAC), + (0xAE, 0x002FF), + (0x00370, 0x00482), # Greek / Cyrillic + (0x02500, 0x025FC), # Box drawing, box elements, geometric shapes + (0x02800, 0x028FF), # Braille +] + +# A set of characters that are a single cell wide +_SINGLE_CELLS = frozenset( + [ + character + for _start, _end in _SINGLE_CELL_UNICODE_RANGES + for character in map(chr, range(_start, _end + 1)) + ] +) + +# When called with a string this will return True if all +# characters are single-cell, otherwise False +_is_single_cell_widths: Callable[[str], bool] = _SINGLE_CELLS.issuperset @lru_cache(4096) @@ -21,9 +43,9 @@ def cached_cell_len(text: str) -> int: Returns: int: Get the number of cells required to display text. """ - _get_size = get_character_cell_size - total_size = sum(_get_size(character) for character in text) - return total_size + if _is_single_cell_widths(text): + return len(text) + return sum(map(get_character_cell_size, text)) def cell_len(text: str, _cell_len: Callable[[str], int] = cached_cell_len) -> int: @@ -37,9 +59,9 @@ def cell_len(text: str, _cell_len: Callable[[str], int] = cached_cell_len) -> in """ if len(text) < 512: return _cell_len(text) - _get_size = get_character_cell_size - total_size = sum(_get_size(character) for character in text) - return total_size + if _is_single_cell_widths(text): + return len(text) + return sum(map(get_character_cell_size, text)) @lru_cache(maxsize=4096) @@ -52,20 +74,7 @@ def get_character_cell_size(character: str) -> int: Returns: int: Number of cells (0, 1 or 2) occupied by that character. """ - return _get_codepoint_cell_size(ord(character)) - - -@lru_cache(maxsize=4096) -def _get_codepoint_cell_size(codepoint: int) -> int: - """Get the cell size of a character. - - Args: - character (str): A single character. - - Returns: - int: Number of cells (0, 1 or 2) occupied by that character. - """ - + codepoint = ord(character) _table = CELL_WIDTHS lower_bound = 0 upper_bound = len(_table) - 1 @@ -119,33 +128,44 @@ def set_cell_size(text: str, total: int) -> str: start = pos -# TODO: This is inefficient -# TODO: This might not work with CWJ type characters -def chop_cells(text: str, max_size: int, position: int = 0) -> List[str]: - """Break text in to equal (cell) length strings, returning the characters in reverse - order""" - _get_character_cell_size = get_character_cell_size - characters = [ - (character, _get_character_cell_size(character)) for character in text - ] - total_size = position - lines: List[List[str]] = [[]] - append = lines[-1].append +def chop_cells( + text: str, + width: int, +) -> list[str]: + """Split text into lines such that each line fits within the available (cell) width. - for character, size in reversed(characters): - if total_size + size > max_size: - lines.append([character]) - append = lines[-1].append - total_size = size + Args: + text: The text to fold such that it fits in the given width. + width: The width available (number of cells). + + Returns: + A list of strings such that each string in the list has cell width + less than or equal to the available width. + """ + _get_character_cell_size = get_character_cell_size + lines: list[list[str]] = [[]] + + append_new_line = lines.append + append_to_last_line = lines[-1].append + + total_width = 0 + + for character in text: + cell_width = _get_character_cell_size(character) + char_doesnt_fit = total_width + cell_width > width + + if char_doesnt_fit: + append_new_line([character]) + append_to_last_line = lines[-1].append + total_width = cell_width else: - total_size += size - append(character) + append_to_last_line(character) + total_width += cell_width return ["".join(line) for line in lines] if __name__ == "__main__": # pragma: no cover - print(get_character_cell_size("😽")) for line in chop_cells("""这是对亚洲语言支持的测试。面对模棱两可的想法,拒绝猜测的诱惑。""", 8): print(line) diff --git a/gestao_raul/Lib/site-packages/pip/_vendor/rich/color.py b/gestao_raul/Lib/site-packages/pip/_vendor/rich/color.py index ef2e895..e2c23a6 100644 --- a/gestao_raul/Lib/site-packages/pip/_vendor/rich/color.py +++ b/gestao_raul/Lib/site-packages/pip/_vendor/rich/color.py @@ -1,5 +1,5 @@ -import platform import re +import sys from colorsys import rgb_to_hls from enum import IntEnum from functools import lru_cache @@ -15,7 +15,7 @@ if TYPE_CHECKING: # pragma: no cover from .text import Text -WINDOWS = platform.system() == "Windows" +WINDOWS = sys.platform == "win32" class ColorSystem(IntEnum): @@ -513,15 +513,14 @@ class Color(NamedTuple): def downgrade(self, system: ColorSystem) -> "Color": """Downgrade a color system to a system with fewer colors.""" - if self.type in [ColorType.DEFAULT, system]: + if self.type in (ColorType.DEFAULT, system): return self # Convert to 8-bit color from truecolor color if system == ColorSystem.EIGHT_BIT and self.system == ColorSystem.TRUECOLOR: assert self.triplet is not None - red, green, blue = self.triplet.normalized - _h, l, s = rgb_to_hls(red, green, blue) - # If saturation is under 10% assume it is grayscale - if s < 0.1: + _h, l, s = rgb_to_hls(*self.triplet.normalized) + # If saturation is under 15% assume it is grayscale + if s < 0.15: gray = round(l * 25.0) if gray == 0: color_number = 16 @@ -531,8 +530,13 @@ class Color(NamedTuple): color_number = 231 + gray return Color(self.name, ColorType.EIGHT_BIT, number=color_number) + red, green, blue = self.triplet + six_red = red / 95 if red < 95 else 1 + (red - 95) / 40 + six_green = green / 95 if green < 95 else 1 + (green - 95) / 40 + six_blue = blue / 95 if blue < 95 else 1 + (blue - 95) / 40 + color_number = ( - 16 + 36 * round(red * 5.0) + 6 * round(green * 5.0) + round(blue * 5.0) + 16 + 36 * round(six_red) + 6 * round(six_green) + round(six_blue) ) return Color(self.name, ColorType.EIGHT_BIT, number=color_number) @@ -588,7 +592,6 @@ def blend_rgb( if __name__ == "__main__": # pragma: no cover - from .console import Console from .table import Table from .text import Text diff --git a/gestao_raul/Lib/site-packages/pip/_vendor/rich/console.py b/gestao_raul/Lib/site-packages/pip/_vendor/rich/console.py index f805f2d..5728845 100644 --- a/gestao_raul/Lib/site-packages/pip/_vendor/rich/console.py +++ b/gestao_raul/Lib/site-packages/pip/_vendor/rich/console.py @@ -1,7 +1,5 @@ import inspect -import io import os -import platform import sys import threading import zlib @@ -48,6 +46,7 @@ else: from . import errors, themes from ._emoji_replace import _emoji_replace from ._export_format import CONSOLE_HTML_FORMAT, CONSOLE_SVG_FORMAT +from ._fileno import get_fileno from ._log_render import FormatTimeCallable, LogRender from .align import Align, AlignMethod from .color import ColorSystem, blend_rgb @@ -76,7 +75,7 @@ if TYPE_CHECKING: JUPYTER_DEFAULT_COLUMNS = 115 JUPYTER_DEFAULT_LINES = 100 -WINDOWS = platform.system() == "Windows" +WINDOWS = sys.platform == "win32" HighlighterType = Callable[[Union[str, "Text"]], "Text"] JustifyMethod = Literal["default", "left", "center", "right", "full"] @@ -90,15 +89,15 @@ class NoChange: NO_CHANGE = NoChange() try: - _STDIN_FILENO = sys.__stdin__.fileno() + _STDIN_FILENO = sys.__stdin__.fileno() # type: ignore[union-attr] except Exception: _STDIN_FILENO = 0 try: - _STDOUT_FILENO = sys.__stdout__.fileno() + _STDOUT_FILENO = sys.__stdout__.fileno() # type: ignore[union-attr] except Exception: _STDOUT_FILENO = 1 try: - _STDERR_FILENO = sys.__stderr__.fileno() + _STDERR_FILENO = sys.__stderr__.fileno() # type: ignore[union-attr] except Exception: _STDERR_FILENO = 2 @@ -278,6 +277,7 @@ class ConsoleRenderable(Protocol): # A type that may be rendered by Console. RenderableType = Union[ConsoleRenderable, RichCast, str] +"""A string or any object that may be rendered by Rich.""" # The result of calling a __rich_console__ method. RenderResult = Iterable[Union[RenderableType, Segment]] @@ -711,11 +711,6 @@ class Console: self._force_terminal = None if force_terminal is not None: self._force_terminal = force_terminal - else: - # If FORCE_COLOR env var has any value at all, we force terminal. - force_color = self._environ.get("FORCE_COLOR") - if force_color is not None: - self._force_terminal = True self._file = file self.quiet = quiet @@ -758,7 +753,7 @@ class Console: self._is_alt_screen = False def __repr__(self) -> str: - return f"" + return f"" @property def file(self) -> IO[str]: @@ -949,6 +944,16 @@ class Console: # Return False for Idle which claims to be a tty but can't handle ansi codes return False + if self.is_jupyter: + # return False for Jupyter, which may have FORCE_COLOR set + return False + + # If FORCE_COLOR env var has any value at all, we assume a terminal. + force_color = self._environ.get("FORCE_COLOR") + if force_color is not None: + self._force_terminal = True + return True + isatty: Optional[Callable[[], bool]] = getattr(self.file, "isatty", None) try: return False if isatty is None else isatty() @@ -1000,19 +1005,14 @@ class Console: width: Optional[int] = None height: Optional[int] = None - if WINDOWS: # pragma: no cover + streams = _STD_STREAMS_OUTPUT if WINDOWS else _STD_STREAMS + for file_descriptor in streams: try: - width, height = os.get_terminal_size() + width, height = os.get_terminal_size(file_descriptor) except (AttributeError, ValueError, OSError): # Probably not a terminal pass - else: - for file_descriptor in _STD_STREAMS: - try: - width, height = os.get_terminal_size(file_descriptor) - except (AttributeError, ValueError, OSError): - pass - else: - break + else: + break columns = self._environ.get("COLUMNS") if columns is not None and columns.isdigit(): @@ -1146,7 +1146,7 @@ class Console: status: RenderableType, *, spinner: str = "dots", - spinner_style: str = "status.spinner", + spinner_style: StyleType = "status.spinner", speed: float = 1.0, refresh_per_second: float = 12.5, ) -> "Status": @@ -1303,7 +1303,7 @@ class Console: renderable = rich_cast(renderable) if hasattr(renderable, "__rich_console__") and not isclass(renderable): - render_iterable = renderable.__rich_console__(self, _options) # type: ignore[union-attr] + render_iterable = renderable.__rich_console__(self, _options) elif isinstance(renderable, str): text_renderable = self.render_str( renderable, highlight=_options.highlight, markup=_options.markup @@ -1380,9 +1380,14 @@ class Console: extra_lines = render_options.height - len(lines) if extra_lines > 0: pad_line = [ - [Segment(" " * render_options.max_width, style), Segment("\n")] - if new_lines - else [Segment(" " * render_options.max_width, style)] + ( + [ + Segment(" " * render_options.max_width, style), + Segment("\n"), + ] + if new_lines + else [Segment(" " * render_options.max_width, style)] + ) ] lines.extend(pad_line * extra_lines) @@ -1431,9 +1436,11 @@ class Console: rich_text.overflow = overflow else: rich_text = Text( - _emoji_replace(text, default_variant=self._emoji_variant) - if emoji_enabled - else text, + ( + _emoji_replace(text, default_variant=self._emoji_variant) + if emoji_enabled + else text + ), justify=justify, overflow=overflow, style=style, @@ -1523,14 +1530,18 @@ class Console: if text: sep_text = Text(sep, justify=justify, end=end) append(sep_text.join(text)) - del text[:] + text.clear() for renderable in objects: renderable = rich_cast(renderable) if isinstance(renderable, str): append_text( self.render_str( - renderable, emoji=emoji, markup=markup, highlighter=_highlighter + renderable, + emoji=emoji, + markup=markup, + highlight=highlight, + highlighter=_highlighter, ) ) elif isinstance(renderable, Text): @@ -1920,7 +1931,6 @@ class Console: end (str, optional): String to write at end of print data. Defaults to "\\\\n". style (Union[str, Style], optional): A style to apply to output. Defaults to None. justify (str, optional): One of "left", "right", "center", or "full". Defaults to ``None``. - overflow (str, optional): Overflow method: "crop", "fold", or "ellipsis". Defaults to None. emoji (Optional[bool], optional): Enable emoji code, or ``None`` to use console default. Defaults to None. markup (Optional[bool], optional): Enable markup, or ``None`` to use console default. Defaults to None. highlight (Optional[bool], optional): Enable automatic highlighting, or ``None`` to use console default. Defaults to None. @@ -1981,6 +1991,20 @@ class Console: ): buffer_extend(line) + def on_broken_pipe(self) -> None: + """This function is called when a `BrokenPipeError` is raised. + + This can occur when piping Textual output in Linux and macOS. + The default implementation is to exit the app, but you could implement + this method in a subclass to change the behavior. + + See https://docs.python.org/3/library/signal.html#note-on-sigpipe for details. + """ + self.quiet = True + devnull = os.open(os.devnull, os.O_WRONLY) + os.dup2(devnull, sys.stdout.fileno()) + raise SystemExit(1) + def _check_buffer(self) -> None: """Check if the buffer may be rendered. Render it if it can (e.g. Console.quiet is False) Rendering is supported on Windows, Unix and Jupyter environments. For @@ -1990,13 +2014,21 @@ class Console: if self.quiet: del self._buffer[:] return + + try: + self._write_buffer() + except BrokenPipeError: + self.on_broken_pipe() + + def _write_buffer(self) -> None: + """Write the buffer to the output file.""" + with self._lock: - if self.record: + if self.record and not self._buffer_index: with self._record_buffer_lock: self._record_buffer.extend(self._buffer[:]) if self._buffer_index == 0: - if self.is_jupyter: # pragma: no cover from .jupyter import display @@ -2006,12 +2038,11 @@ class Console: if WINDOWS: use_legacy_windows_render = False if self.legacy_windows: - try: + fileno = get_fileno(self.file) + if fileno is not None: use_legacy_windows_render = ( - self.file.fileno() in _STD_STREAMS_OUTPUT + fileno in _STD_STREAMS_OUTPUT ) - except (ValueError, io.UnsupportedOperation): - pass if use_legacy_windows_render: from pip._vendor.rich._win32_console import LegacyWindowsTerm @@ -2026,13 +2057,31 @@ class Console: # Either a non-std stream on legacy Windows, or modern Windows. text = self._render_buffer(self._buffer[:]) # https://bugs.python.org/issue37871 + # https://github.com/python/cpython/issues/82052 + # We need to avoid writing more than 32Kb in a single write, due to the above bug write = self.file.write - for line in text.splitlines(True): - try: - write(line) - except UnicodeEncodeError as error: - error.reason = f"{error.reason}\n*** You may need to add PYTHONIOENCODING=utf-8 to your environment ***" - raise + # Worse case scenario, every character is 4 bytes of utf-8 + MAX_WRITE = 32 * 1024 // 4 + try: + if len(text) <= MAX_WRITE: + write(text) + else: + batch: List[str] = [] + batch_append = batch.append + size = 0 + for line in text.splitlines(True): + if size + len(line) > MAX_WRITE and batch: + write("".join(batch)) + batch.clear() + size = 0 + batch_append(line) + size += len(line) + if batch: + write("".join(batch)) + batch.clear() + except UnicodeEncodeError as error: + error.reason = f"{error.reason}\n*** You may need to add PYTHONIOENCODING=utf-8 to your environment ***" + raise else: text = self._render_buffer(self._buffer[:]) try: @@ -2145,7 +2194,7 @@ class Console: """ text = self.export_text(clear=clear, styles=styles) - with open(path, "wt", encoding="utf-8") as write_file: + with open(path, "w", encoding="utf-8") as write_file: write_file.write(text) def export_html( @@ -2251,7 +2300,7 @@ class Console: code_format=code_format, inline_styles=inline_styles, ) - with open(path, "wt", encoding="utf-8") as write_file: + with open(path, "w", encoding="utf-8") as write_file: write_file.write(html) def export_svg( @@ -2540,7 +2589,7 @@ class Console: font_aspect_ratio=font_aspect_ratio, unique_id=unique_id, ) - with open(path, "wt", encoding="utf-8") as write_file: + with open(path, "w", encoding="utf-8") as write_file: write_file.write(svg) diff --git a/gestao_raul/Lib/site-packages/pip/_vendor/rich/containers.py b/gestao_raul/Lib/site-packages/pip/_vendor/rich/containers.py index e29cf36..901ff8b 100644 --- a/gestao_raul/Lib/site-packages/pip/_vendor/rich/containers.py +++ b/gestao_raul/Lib/site-packages/pip/_vendor/rich/containers.py @@ -1,13 +1,13 @@ from itertools import zip_longest from typing import ( - Iterator, + TYPE_CHECKING, Iterable, + Iterator, List, Optional, + TypeVar, Union, overload, - TypeVar, - TYPE_CHECKING, ) if TYPE_CHECKING: @@ -119,7 +119,7 @@ class Lines: Args: console (Console): Console instance. - width (int): Number of characters per line. + width (int): Number of cells available per line. justify (str, optional): Default justify method for text: "left", "center", "full" or "right". Defaults to "left". overflow (str, optional): Default overflow for text: "crop", "fold", or "ellipsis". Defaults to "fold". diff --git a/gestao_raul/Lib/site-packages/pip/_vendor/rich/default_styles.py b/gestao_raul/Lib/site-packages/pip/_vendor/rich/default_styles.py index 46e9ea5..6c0d732 100644 --- a/gestao_raul/Lib/site-packages/pip/_vendor/rich/default_styles.py +++ b/gestao_raul/Lib/site-packages/pip/_vendor/rich/default_styles.py @@ -54,7 +54,7 @@ DEFAULT_STYLES: Dict[str, Style] = { "logging.level.notset": Style(dim=True), "logging.level.debug": Style(color="green"), "logging.level.info": Style(color="blue"), - "logging.level.warning": Style(color="red"), + "logging.level.warning": Style(color="yellow"), "logging.level.error": Style(color="red", bold=True), "logging.level.critical": Style(color="red", bold=True, reverse=True), "log.level": Style.null(), @@ -120,6 +120,7 @@ DEFAULT_STYLES: Dict[str, Style] = { "traceback.exc_type": Style(color="bright_red", bold=True), "traceback.exc_value": Style.null(), "traceback.offset": Style(color="bright_red", bold=True), + "traceback.error_range": Style(underline=True, bold=True, dim=False), "bar.back": Style(color="grey23"), "bar.complete": Style(color="rgb(249,38,114)"), "bar.finished": Style(color="rgb(114,156,31)"), @@ -138,10 +139,11 @@ DEFAULT_STYLES: Dict[str, Style] = { "tree.line": Style(), "markdown.paragraph": Style(), "markdown.text": Style(), - "markdown.emph": Style(italic=True), + "markdown.em": Style(italic=True), + "markdown.emph": Style(italic=True), # For commonmark backwards compatibility "markdown.strong": Style(bold=True), - "markdown.code": Style(bgcolor="black", color="bright_white"), - "markdown.code_block": Style(dim=True, color="cyan", bgcolor="black"), + "markdown.code": Style(bold=True, color="cyan", bgcolor="black"), + "markdown.code_block": Style(color="cyan", bgcolor="black"), "markdown.block_quote": Style(color="magenta"), "markdown.list": Style(color="cyan"), "markdown.item": Style(), @@ -157,7 +159,8 @@ DEFAULT_STYLES: Dict[str, Style] = { "markdown.h6": Style(italic=True), "markdown.h7": Style(italic=True, dim=True), "markdown.link": Style(color="bright_blue"), - "markdown.link_url": Style(color="blue"), + "markdown.link_url": Style(color="blue", underline=True), + "markdown.s": Style(strike=True), "iso8601.date": Style(color="blue"), "iso8601.time": Style(color="magenta"), "iso8601.timezone": Style(color="yellow"), diff --git a/gestao_raul/Lib/site-packages/pip/_vendor/rich/file_proxy.py b/gestao_raul/Lib/site-packages/pip/_vendor/rich/file_proxy.py index cc69f22..4b0b0da 100644 --- a/gestao_raul/Lib/site-packages/pip/_vendor/rich/file_proxy.py +++ b/gestao_raul/Lib/site-packages/pip/_vendor/rich/file_proxy.py @@ -34,7 +34,7 @@ class FileProxy(io.TextIOBase): line, new_line, text = text.partition("\n") if new_line: lines.append("".join(buffer) + line) - del buffer[:] + buffer.clear() else: buffer.append(line) break @@ -52,3 +52,6 @@ class FileProxy(io.TextIOBase): if output: self.__console.print(output) del self.__buffer[:] + + def fileno(self) -> int: + return self.__file.fileno() diff --git a/gestao_raul/Lib/site-packages/pip/_vendor/rich/filesize.py b/gestao_raul/Lib/site-packages/pip/_vendor/rich/filesize.py index 99f118e..83bc911 100644 --- a/gestao_raul/Lib/site-packages/pip/_vendor/rich/filesize.py +++ b/gestao_raul/Lib/site-packages/pip/_vendor/rich/filesize.py @@ -1,4 +1,3 @@ -# coding: utf-8 """Functions for reporting filesizes. Borrowed from https://github.com/PyFilesystem/pyfilesystem2 The functions declared in this module should cover the different @@ -27,7 +26,7 @@ def _to_str( if size == 1: return "1 byte" elif size < base: - return "{:,} bytes".format(size) + return f"{size:,} bytes" for i, suffix in enumerate(suffixes, 2): # noqa: B007 unit = base**i diff --git a/gestao_raul/Lib/site-packages/pip/_vendor/rich/highlighter.py b/gestao_raul/Lib/site-packages/pip/_vendor/rich/highlighter.py index 82293df..e4c462e 100644 --- a/gestao_raul/Lib/site-packages/pip/_vendor/rich/highlighter.py +++ b/gestao_raul/Lib/site-packages/pip/_vendor/rich/highlighter.py @@ -82,7 +82,7 @@ class ReprHighlighter(RegexHighlighter): base_style = "repr." highlights = [ - r"(?P<)(?P[-\w.:|]*)(?P[\w\W]*?)(?P>)", + r"(?P<)(?P[-\w.:|]*)(?P[\w\W]*)(?P>)", r'(?P[\w_]{1,50})=(?P"?[\w_]+"?)?', r"(?P[][{}()])", _combine_regex( @@ -98,7 +98,7 @@ class ReprHighlighter(RegexHighlighter): r"(?P(?\B(/[-\w._+]+)*\/)(?P[-\w._+]*)?", r"(?b?'''.*?(?(file|https|http|ws|wss)://[-0-9a-zA-Z$_+!`(),.?/;:&=%#]*)", + r"(?P(file|https|http|ws|wss)://[-0-9a-zA-Z$_+!`(),.?/;:&=%#~@]*)", ), ] diff --git a/gestao_raul/Lib/site-packages/pip/_vendor/rich/json.py b/gestao_raul/Lib/site-packages/pip/_vendor/rich/json.py index 21b642a..4087c79 100644 --- a/gestao_raul/Lib/site-packages/pip/_vendor/rich/json.py +++ b/gestao_raul/Lib/site-packages/pip/_vendor/rich/json.py @@ -1,3 +1,4 @@ +from pathlib import Path from json import loads, dumps from typing import Any, Callable, Optional, Union @@ -102,7 +103,6 @@ class JSON: if __name__ == "__main__": - import argparse import sys @@ -131,8 +131,7 @@ if __name__ == "__main__": if args.path == "-": json_data = sys.stdin.read() else: - with open(args.path, "rt") as json_file: - json_data = json_file.read() + json_data = Path(args.path).read_text() except Exception as error: error_console.print(f"Unable to read {args.path!r}; {error}") sys.exit(-1) diff --git a/gestao_raul/Lib/site-packages/pip/_vendor/rich/layout.py b/gestao_raul/Lib/site-packages/pip/_vendor/rich/layout.py index 849356e..a6f1a31 100644 --- a/gestao_raul/Lib/site-packages/pip/_vendor/rich/layout.py +++ b/gestao_raul/Lib/site-packages/pip/_vendor/rich/layout.py @@ -227,7 +227,6 @@ class Layout: from pip._vendor.rich.tree import Tree def summary(layout: "Layout") -> Table: - icon = layout.splitter.get_tree_icon() table = Table.grid(padding=(0, 1, 0, 0)) @@ -403,7 +402,7 @@ class Layout: self._render_map = render_map layout_lines: List[List[Segment]] = [[] for _ in range(height)] _islice = islice - for (region, lines) in render_map.values(): + for region, lines in render_map.values(): _x, y, _layout_width, layout_height = region for row, line in zip( _islice(layout_lines, y, y + layout_height), lines diff --git a/gestao_raul/Lib/site-packages/pip/_vendor/rich/live.py b/gestao_raul/Lib/site-packages/pip/_vendor/rich/live.py index e635fe5..8738cf0 100644 --- a/gestao_raul/Lib/site-packages/pip/_vendor/rich/live.py +++ b/gestao_raul/Lib/site-packages/pip/_vendor/rich/live.py @@ -37,7 +37,7 @@ class Live(JupyterMixin, RenderHook): Args: renderable (RenderableType, optional): The renderable to live display. Defaults to displaying nothing. - console (Console, optional): Optional Console instance. Default will an internal Console instance writing to stdout. + console (Console, optional): Optional Console instance. Defaults to an internal Console instance writing to stdout. screen (bool, optional): Enable alternate screen mode. Defaults to False. auto_refresh (bool, optional): Enable auto refresh. If disabled, you will need to call `refresh()` or `update()` with refresh flag. Defaults to True refresh_per_second (float, optional): Number of times per second to refresh the live display. Defaults to 4. @@ -210,6 +210,8 @@ class Live(JupyterMixin, RenderHook): renderable (RenderableType): New renderable to use. refresh (bool, optional): Refresh the display. Defaults to False. """ + if isinstance(renderable, str): + renderable = self.console.render_str(renderable) with self._lock: self._renderable = renderable if refresh: @@ -360,7 +362,7 @@ if __name__ == "__main__": # pragma: no cover table.add_column("Destination Currency") table.add_column("Exchange Rate") - for ((source, dest), exchange_rate) in exchange_rate_dict.items(): + for (source, dest), exchange_rate in exchange_rate_dict.items(): table.add_row( source, dest, diff --git a/gestao_raul/Lib/site-packages/pip/_vendor/rich/live_render.py b/gestao_raul/Lib/site-packages/pip/_vendor/rich/live_render.py index b90fbf7..e20745d 100644 --- a/gestao_raul/Lib/site-packages/pip/_vendor/rich/live_render.py +++ b/gestao_raul/Lib/site-packages/pip/_vendor/rich/live_render.py @@ -82,7 +82,6 @@ class LiveRender: def __rich_console__( self, console: Console, options: ConsoleOptions ) -> RenderResult: - renderable = self.renderable style = console.get_style(self.style) lines = console.render_lines(renderable, options, style=style, pad=False) diff --git a/gestao_raul/Lib/site-packages/pip/_vendor/rich/logging.py b/gestao_raul/Lib/site-packages/pip/_vendor/rich/logging.py index 91368dd..ff8d5d9 100644 --- a/gestao_raul/Lib/site-packages/pip/_vendor/rich/logging.py +++ b/gestao_raul/Lib/site-packages/pip/_vendor/rich/logging.py @@ -36,11 +36,13 @@ class RichHandler(Handler): markup (bool, optional): Enable console markup in log messages. Defaults to False. rich_tracebacks (bool, optional): Enable rich tracebacks with syntax highlighting and formatting. Defaults to False. tracebacks_width (Optional[int], optional): Number of characters used to render tracebacks, or None for full width. Defaults to None. + tracebacks_code_width (int, optional): Number of code characters used to render tracebacks, or None for full width. Defaults to 88. tracebacks_extra_lines (int, optional): Additional lines of code to render tracebacks, or None for full width. Defaults to None. tracebacks_theme (str, optional): Override pygments theme used in traceback. tracebacks_word_wrap (bool, optional): Enable word wrapping of long tracebacks lines. Defaults to True. tracebacks_show_locals (bool, optional): Enable display of locals in tracebacks. Defaults to False. tracebacks_suppress (Sequence[Union[str, ModuleType]]): Optional sequence of modules or paths to exclude from traceback. + tracebacks_max_frames (int, optional): Optional maximum number of frames returned by traceback. locals_max_length (int, optional): Maximum length of containers before abbreviating, or None for no abbreviation. Defaults to 10. locals_max_string (int, optional): Maximum length of string before truncating, or None to disable. Defaults to 80. @@ -74,11 +76,13 @@ class RichHandler(Handler): markup: bool = False, rich_tracebacks: bool = False, tracebacks_width: Optional[int] = None, + tracebacks_code_width: int = 88, tracebacks_extra_lines: int = 3, tracebacks_theme: Optional[str] = None, tracebacks_word_wrap: bool = True, tracebacks_show_locals: bool = False, tracebacks_suppress: Iterable[Union[str, ModuleType]] = (), + tracebacks_max_frames: int = 100, locals_max_length: int = 10, locals_max_string: int = 80, log_time_format: Union[str, FormatTimeCallable] = "[%x %X]", @@ -104,6 +108,8 @@ class RichHandler(Handler): self.tracebacks_word_wrap = tracebacks_word_wrap self.tracebacks_show_locals = tracebacks_show_locals self.tracebacks_suppress = tracebacks_suppress + self.tracebacks_max_frames = tracebacks_max_frames + self.tracebacks_code_width = tracebacks_code_width self.locals_max_length = locals_max_length self.locals_max_string = locals_max_string self.keywords = keywords @@ -140,6 +146,7 @@ class RichHandler(Handler): exc_value, exc_traceback, width=self.tracebacks_width, + code_width=self.tracebacks_code_width, extra_lines=self.tracebacks_extra_lines, theme=self.tracebacks_theme, word_wrap=self.tracebacks_word_wrap, @@ -147,6 +154,7 @@ class RichHandler(Handler): locals_max_length=self.locals_max_length, locals_max_string=self.locals_max_string, suppress=self.tracebacks_suppress, + max_frames=self.tracebacks_max_frames, ) message = record.getMessage() if self.formatter: diff --git a/gestao_raul/Lib/site-packages/pip/_vendor/rich/markup.py b/gestao_raul/Lib/site-packages/pip/_vendor/rich/markup.py index fd80d8c..f617187 100644 --- a/gestao_raul/Lib/site-packages/pip/_vendor/rich/markup.py +++ b/gestao_raul/Lib/site-packages/pip/_vendor/rich/markup.py @@ -64,6 +64,9 @@ def escape( return f"{backslashes}{backslashes}\\{text}" markup = _escape(escape_backslashes, markup) + if markup.endswith("\\") and not markup.endswith("\\\\"): + return markup + "\\" + return markup @@ -110,7 +113,10 @@ def render( Args: markup (str): A string containing console markup. + style: (Union[str, Style]): The style to use. emoji (bool, optional): Also render emoji code. Defaults to True. + emoji_variant (str, optional): Optional emoji variant, either "text" or "emoji". Defaults to None. + Raises: MarkupError: If there is a syntax error in the markup. @@ -226,7 +232,6 @@ def render( if __name__ == "__main__": # pragma: no cover - MARKUP = [ "[red]Hello World[/red]", "[magenta]Hello [b]World[/b]", diff --git a/gestao_raul/Lib/site-packages/pip/_vendor/rich/padding.py b/gestao_raul/Lib/site-packages/pip/_vendor/rich/padding.py index 1b2204f..0161cd1 100644 --- a/gestao_raul/Lib/site-packages/pip/_vendor/rich/padding.py +++ b/gestao_raul/Lib/site-packages/pip/_vendor/rich/padding.py @@ -1,4 +1,4 @@ -from typing import cast, List, Optional, Tuple, TYPE_CHECKING, Union +from typing import TYPE_CHECKING, List, Optional, Tuple, Union if TYPE_CHECKING: from .console import ( @@ -7,11 +7,11 @@ if TYPE_CHECKING: RenderableType, RenderResult, ) + from .jupyter import JupyterMixin from .measure import Measurement -from .style import Style from .segment import Segment - +from .style import Style PaddingDimensions = Union[int, Tuple[int], Tuple[int, int], Tuple[int, int, int, int]] @@ -66,10 +66,10 @@ class Padding(JupyterMixin): _pad = pad[0] return (_pad, _pad, _pad, _pad) if len(pad) == 2: - pad_top, pad_right = cast(Tuple[int, int], pad) + pad_top, pad_right = pad return (pad_top, pad_right, pad_top, pad_right) if len(pad) == 4: - top, right, bottom, left = cast(Tuple[int, int, int, int], pad) + top, right, bottom, left = pad return (top, right, bottom, left) raise ValueError(f"1, 2 or 4 integers required for padding; {len(pad)} given") diff --git a/gestao_raul/Lib/site-packages/pip/_vendor/rich/panel.py b/gestao_raul/Lib/site-packages/pip/_vendor/rich/panel.py index d522d80..8cfa6f4 100644 --- a/gestao_raul/Lib/site-packages/pip/_vendor/rich/panel.py +++ b/gestao_raul/Lib/site-packages/pip/_vendor/rich/panel.py @@ -22,11 +22,13 @@ class Panel(JupyterMixin): Args: renderable (RenderableType): A console renderable object. - box (Box, optional): A Box instance that defines the look of the border (see :ref:`appendix_box`. - Defaults to box.ROUNDED. + box (Box, optional): A Box instance that defines the look of the border (see :ref:`appendix_box`. Defaults to box.ROUNDED. + title (Optional[TextType], optional): Optional title displayed in panel header. Defaults to None. + title_align (AlignMethod, optional): Alignment of title. Defaults to "center". + subtitle (Optional[TextType], optional): Optional subtitle displayed in panel footer. Defaults to None. + subtitle_align (AlignMethod, optional): Alignment of subtitle. Defaults to "center". safe_box (bool, optional): Disable box characters that don't display on windows legacy terminal with *raster* fonts. Defaults to True. - expand (bool, optional): If True the panel will stretch to fill the console - width, otherwise it will be sized to fit the contents. Defaults to True. + expand (bool, optional): If True the panel will stretch to fill the console width, otherwise it will be sized to fit the contents. Defaults to True. style (str, optional): The style of the panel (border and contents). Defaults to "none". border_style (str, optional): The style of the border. Defaults to "none". width (Optional[int], optional): Optional width of panel. Defaults to None to auto-detect. @@ -82,7 +84,9 @@ class Panel(JupyterMixin): style: StyleType = "none", border_style: StyleType = "none", width: Optional[int] = None, + height: Optional[int] = None, padding: PaddingDimensions = (0, 1), + highlight: bool = False, ) -> "Panel": """An alternative constructor that sets expand=False.""" return cls( @@ -96,7 +100,9 @@ class Panel(JupyterMixin): style=style, border_style=border_style, width=width, + height=height, padding=padding, + highlight=highlight, expand=False, ) @@ -140,7 +146,8 @@ class Panel(JupyterMixin): Padding(self.renderable, _padding) if any(_padding) else self.renderable ) style = console.get_style(self.style) - border_style = style + console.get_style(self.border_style) + partial_border_style = console.get_style(self.border_style) + border_style = style + partial_border_style width = ( options.max_width if self.width is None @@ -168,6 +175,9 @@ class Panel(JupyterMixin): text = text.copy() text.truncate(width) excess_space = width - cell_len(text.plain) + if text.style: + text.stylize(console.get_style(text.style)) + if excess_space: if align == "left": return Text.assemble( @@ -196,7 +206,7 @@ class Panel(JupyterMixin): title_text = self._title if title_text is not None: - title_text.stylize_before(border_style) + title_text.stylize_before(partial_border_style) child_width = ( width - 2 @@ -245,7 +255,7 @@ class Panel(JupyterMixin): subtitle_text = self._subtitle if subtitle_text is not None: - subtitle_text.stylize_before(border_style) + subtitle_text.stylize_before(partial_border_style) if subtitle_text is None or width <= 4: yield Segment(box.get_bottom([width - 2]), border_style) diff --git a/gestao_raul/Lib/site-packages/pip/_vendor/rich/pretty.py b/gestao_raul/Lib/site-packages/pip/_vendor/rich/pretty.py index 847b558..c4a274f 100644 --- a/gestao_raul/Lib/site-packages/pip/_vendor/rich/pretty.py +++ b/gestao_raul/Lib/site-packages/pip/_vendor/rich/pretty.py @@ -3,6 +3,7 @@ import collections import dataclasses import inspect import os +import reprlib import sys from array import array from collections import Counter, UserDict, UserList, defaultdict, deque @@ -15,6 +16,7 @@ from typing import ( Any, Callable, DefaultDict, + Deque, Dict, Iterable, List, @@ -30,7 +32,7 @@ from pip._vendor.rich.repr import RichReprResult try: import attr as _attr_module - _has_attrs = True + _has_attrs = hasattr(_attr_module, "ib") except ImportError: # pragma: no cover _has_attrs = False @@ -55,13 +57,6 @@ if TYPE_CHECKING: ) -JUPYTER_CLASSES_TO_NOT_RENDER = { - # Matplotlib "Artists" manage their own rendering in a Jupyter notebook, and we should not try to render them too. - # "Typically, all [Matplotlib] visible elements in a figure are subclasses of Artist." - "matplotlib.artist.Artist", -} - - def _is_attr_object(obj: Any) -> bool: """Check if an object was created with attrs module.""" return _has_attrs and _attr_module.has(type(obj)) @@ -84,7 +79,10 @@ def _is_dataclass_repr(obj: object) -> bool: # Digging in to a lot of internals here # Catching all exceptions in case something is missing on a non CPython implementation try: - return obj.__repr__.__code__.co_filename == dataclasses.__file__ + return obj.__repr__.__code__.co_filename in ( + dataclasses.__file__, + reprlib.__file__, + ) except Exception: # pragma: no coverage return False @@ -122,69 +120,42 @@ def _ipy_display_hook( max_string: Optional[int] = None, max_depth: Optional[int] = None, expand_all: bool = False, -) -> None: +) -> Union[str, None]: # needed here to prevent circular import: - from ._inspect import is_object_one_of_types from .console import ConsoleRenderable # always skip rich generated jupyter renderables or None values if _safe_isinstance(value, JupyterRenderable) or value is None: - return + return None console = console or get_console() - if console.is_jupyter: - # Delegate rendering to IPython if the object (and IPython) supports it - # https://ipython.readthedocs.io/en/stable/config/integrating.html#rich-display - ipython_repr_methods = [ - "_repr_html_", - "_repr_markdown_", - "_repr_json_", - "_repr_latex_", - "_repr_jpeg_", - "_repr_png_", - "_repr_svg_", - "_repr_mimebundle_", - ] - for repr_method in ipython_repr_methods: - method = getattr(value, repr_method, None) - if inspect.ismethod(method): - # Calling the method ourselves isn't ideal. The interface for the `_repr_*_` methods - # specifies that if they return None, then they should not be rendered - # by the notebook. - try: - repr_result = method() - except Exception: - continue # If the method raises, treat it as if it doesn't exist, try any others - if repr_result is not None: - return # Delegate rendering to IPython - # When in a Jupyter notebook let's avoid the display of some specific classes, - # as they result in the rendering of useless and noisy lines such as `
`. - # What does this do? - # --> if the class has "matplotlib.artist.Artist" in its hierarchy for example, we don't render it. - if is_object_one_of_types(value, JUPYTER_CLASSES_TO_NOT_RENDER): - return - - # certain renderables should start on a new line - if _safe_isinstance(value, ConsoleRenderable): - console.line() - - console.print( - value - if _safe_isinstance(value, RichRenderable) - else Pretty( - value, - overflow=overflow, - indent_guides=indent_guides, - max_length=max_length, - max_string=max_string, - max_depth=max_depth, - expand_all=expand_all, - margin=12, - ), - crop=crop, - new_line_start=True, - ) + with console.capture() as capture: + # certain renderables should start on a new line + if _safe_isinstance(value, ConsoleRenderable): + console.line() + console.print( + ( + value + if _safe_isinstance(value, RichRenderable) + else Pretty( + value, + overflow=overflow, + indent_guides=indent_guides, + max_length=max_length, + max_string=max_string, + max_depth=max_depth, + expand_all=expand_all, + margin=12, + ) + ), + crop=crop, + new_line_start=True, + end="", + ) + # strip trailing newline, not usually part of a text repr + # I'm not sure if this should be prevented at a lower level + return capture.get().rstrip("\n") def _safe_isinstance( @@ -232,23 +203,28 @@ def install( assert console is not None builtins._ = None # type: ignore[attr-defined] console.print( - value - if _safe_isinstance(value, RichRenderable) - else Pretty( - value, - overflow=overflow, - indent_guides=indent_guides, - max_length=max_length, - max_string=max_string, - max_depth=max_depth, - expand_all=expand_all, + ( + value + if _safe_isinstance(value, RichRenderable) + else Pretty( + value, + overflow=overflow, + indent_guides=indent_guides, + max_length=max_length, + max_string=max_string, + max_depth=max_depth, + expand_all=expand_all, + ) ), crop=crop, ) builtins._ = value # type: ignore[attr-defined] - try: # pragma: no cover + try: ip = get_ipython() # type: ignore[name-defined] + except NameError: + sys.displayhook = display_hook + else: from IPython.core.formatters import BaseFormatter class RichFormatter(BaseFormatter): # type: ignore[misc] @@ -272,8 +248,6 @@ def install( # replace plain text formatter with rich formatter rich_formatter = RichFormatter() ip.display_formatter.formatters["text/plain"] = rich_formatter - except Exception: - sys.displayhook = display_hook class Pretty(JupyterMixin): @@ -371,6 +345,7 @@ class Pretty(JupyterMixin): indent_size=self.indent_size, max_length=self.max_length, max_string=self.max_string, + max_depth=self.max_depth, expand_all=self.expand_all, ) text_width = ( @@ -387,6 +362,16 @@ def _get_braces_for_defaultdict(_object: DefaultDict[Any, Any]) -> Tuple[str, st ) +def _get_braces_for_deque(_object: Deque[Any]) -> Tuple[str, str, str]: + if _object.maxlen is None: + return ("deque([", "])", "deque()") + return ( + "deque([", + f"], maxlen={_object.maxlen})", + f"deque(maxlen={_object.maxlen})", + ) + + def _get_braces_for_array(_object: "array[Any]") -> Tuple[str, str, str]: return (f"array({_object.typecode!r}, [", "])", f"array({_object.typecode!r})") @@ -396,7 +381,7 @@ _BRACES: Dict[type, Callable[[Any], Tuple[str, str, str]]] = { array: _get_braces_for_array, defaultdict: _get_braces_for_defaultdict, Counter: lambda _object: ("Counter({", "})", "Counter()"), - deque: lambda _object: ("deque([", "])", "deque()"), + deque: _get_braces_for_deque, dict: lambda _object: ("{", "}", "{}"), UserDict: lambda _object: ("{", "}", "{}"), frozenset: lambda _object: ("frozenset({", "})", "frozenset()"), @@ -433,7 +418,7 @@ class Node: is_tuple: bool = False is_namedtuple: bool = False children: Optional[List["Node"]] = None - key_separator = ": " + key_separator: str = ": " separator: str = ", " def iter_tokens(self) -> Iterable[str]: @@ -642,7 +627,6 @@ def traverse( return Node(value_repr="...") obj_type = type(obj) - py_version = (sys.version_info.major, sys.version_info.minor) children: List[Node] reached_max_depth = max_depth is not None and depth >= max_depth @@ -744,9 +728,9 @@ def traverse( last=root, ) - def iter_attrs() -> Iterable[ - Tuple[str, Any, Optional[Callable[[Any], str]]] - ]: + def iter_attrs() -> ( + Iterable[Tuple[str, Any, Optional[Callable[[Any], str]]]] + ): """Iterate over attr fields and values.""" for attr in attr_fields: if attr.repr: @@ -780,7 +764,7 @@ def traverse( is_dataclass(obj) and not _safe_isinstance(obj, type) and not fake_attributes - and (_is_dataclass_repr(obj) or py_version == (3, 6)) + and _is_dataclass_repr(obj) ): push_visited(obj_id) children = [] @@ -793,10 +777,13 @@ def traverse( close_brace=")", children=children, last=root, + empty=f"{obj.__class__.__name__}()", ) for last, field in loop_last( - field for field in fields(obj) if field.repr + field + for field in fields(obj) + if field.repr and hasattr(obj, field.name) ): child_node = _traverse(getattr(obj, field.name), depth=depth + 1) child_node.key_repr = field.name @@ -880,7 +867,7 @@ def traverse( pop_visited(obj_id) else: node = Node(value_repr=to_repr(obj), last=root) - node.is_tuple = _safe_isinstance(obj, tuple) + node.is_tuple = type(obj) == tuple node.is_namedtuple = _is_namedtuple(obj) return node @@ -1020,7 +1007,7 @@ if __name__ == "__main__": # pragma: no cover from pip._vendor.rich import print - # print(Pretty(data, indent_guides=True, max_string=20)) + print(Pretty(data, indent_guides=True, max_string=20)) class Thing: def __repr__(self) -> str: diff --git a/gestao_raul/Lib/site-packages/pip/_vendor/rich/progress.py b/gestao_raul/Lib/site-packages/pip/_vendor/rich/progress.py index e7d163c..ec086d9 100644 --- a/gestao_raul/Lib/site-packages/pip/_vendor/rich/progress.py +++ b/gestao_raul/Lib/site-packages/pip/_vendor/rich/progress.py @@ -4,12 +4,12 @@ import typing import warnings from abc import ABC, abstractmethod from collections import deque -from collections.abc import Sized from dataclasses import dataclass, field from datetime import timedelta from io import RawIOBase, UnsupportedOperation from math import ceil from mmap import mmap +from operator import length_hint from os import PathLike, stat from threading import Event, RLock, Thread from types import TracebackType @@ -39,6 +39,11 @@ if sys.version_info >= (3, 8): else: from pip._vendor.typing_extensions import Literal # pragma: no cover +if sys.version_info >= (3, 11): + from typing import Self +else: + from pip._vendor.typing_extensions import Self # pragma: no cover + from . import filesize, get_console from .console import Console, Group, JustifyMethod, RenderableType from .highlighter import Highlighter @@ -70,7 +75,7 @@ class _TrackThread(Thread): self.done = Event() self.completed = 0 - super().__init__() + super().__init__(daemon=True) def run(self) -> None: task_id = self.task_id @@ -78,7 +83,7 @@ class _TrackThread(Thread): update_period = self.update_period last_completed = 0 wait = self.done.wait - while not wait(update_period): + while not wait(update_period) and self.progress.live.is_started: completed = self.completed if last_completed != completed: advance(task_id, completed - last_completed) @@ -104,6 +109,7 @@ def track( sequence: Union[Sequence[ProgressType], Iterable[ProgressType]], description: str = "Working...", total: Optional[float] = None, + completed: int = 0, auto_refresh: bool = True, console: Optional[Console] = None, transient: bool = False, @@ -123,6 +129,7 @@ def track( sequence (Iterable[ProgressType]): A sequence (must support "len") you wish to iterate over. description (str, optional): Description of task show next to progress bar. Defaults to "Working". total: (float, optional): Total number of steps. Default is len(sequence). + completed (int, optional): Number of steps completed so far. Defaults to 0. auto_refresh (bool, optional): Automatic refresh, disable to force a refresh after each iteration. Default is True. transient: (bool, optional): Clear the progress on exit. Defaults to False. console (Console, optional): Console to write to. Default creates internal Console instance. @@ -151,7 +158,7 @@ def track( pulse_style=pulse_style, ), TaskProgressColumn(show_speed=show_speed), - TimeRemainingColumn(), + TimeRemainingColumn(elapsed_when_finished=True), ) ) progress = Progress( @@ -166,7 +173,11 @@ def track( with progress: yield from progress.track( - sequence, total=total, description=description, update_period=update_period + sequence, + total=total, + completed=completed, + description=description, + update_period=update_period, ) @@ -269,6 +280,9 @@ class _Reader(RawIOBase, BinaryIO): def write(self, s: Any) -> int: raise UnsupportedOperation("write") + def writelines(self, lines: Iterable[Any]) -> None: + raise UnsupportedOperation("writelines") + class _ReadContext(ContextManager[_I], Generic[_I]): """A utility class to handle a context for both a reader and a progress.""" @@ -677,11 +691,11 @@ class TimeElapsedColumn(ProgressColumn): """Renders time elapsed.""" def render(self, task: "Task") -> Text: - """Show time remaining.""" + """Show time elapsed.""" elapsed = task.finished_time if task.finished else task.elapsed if elapsed is None: return Text("-:--:--", style="progress.elapsed") - delta = timedelta(seconds=int(elapsed)) + delta = timedelta(seconds=max(0, int(elapsed))) return Text(str(delta), style="progress.elapsed") @@ -710,7 +724,6 @@ class TaskProgressColumn(TextColumn): table_column: Optional[Column] = None, show_speed: bool = False, ) -> None: - self.text_format_no_percentage = text_format_no_percentage self.show_speed = show_speed super().__init__( @@ -1051,7 +1064,7 @@ class Progress(JupyterMixin): """Renders an auto-updating progress bar(s). Args: - console (Console, optional): Optional Console instance. Default will an internal Console instance writing to stdout. + console (Console, optional): Optional Console instance. Defaults to an internal Console instance writing to stdout. auto_refresh (bool, optional): Enable auto refresh. If disabled, you will need to call `refresh()`. refresh_per_second (Optional[float], optional): Number of times per second to refresh the progress information or None to use default (10). Defaults to None. speed_estimate_period: (float, optional): Period (in seconds) used to calculate the speed estimate. Defaults to 30. @@ -1114,7 +1127,7 @@ class Progress(JupyterMixin): progress = Progress( SpinnerColumn(), - *Progress.default_columns(), + *Progress.get_default_columns(), "Elapsed:", TimeElapsedColumn(), ) @@ -1162,10 +1175,10 @@ class Progress(JupyterMixin): def stop(self) -> None: """Stop the progress display.""" self.live.stop() - if not self.console.is_interactive: + if not self.console.is_interactive and not self.console.is_jupyter: self.console.print() - def __enter__(self) -> "Progress": + def __enter__(self) -> Self: self.start() return self @@ -1181,6 +1194,7 @@ class Progress(JupyterMixin): self, sequence: Union[Iterable[ProgressType], Sequence[ProgressType]], total: Optional[float] = None, + completed: int = 0, task_id: Optional[TaskID] = None, description: str = "Working...", update_period: float = 0.1, @@ -1190,6 +1204,7 @@ class Progress(JupyterMixin): Args: sequence (Sequence[ProgressType]): A sequence of values you want to iterate over and track progress. total: (float, optional): Total number of steps. Default is len(sequence). + completed (int, optional): Number of steps completed so far. Defaults to 0. task_id: (TaskID): Task to track. Default is new task. description: (str, optional): Description of task, if new task is created. update_period (float, optional): Minimum time (in seconds) between calls to update(). Defaults to 0.1. @@ -1197,18 +1212,13 @@ class Progress(JupyterMixin): Returns: Iterable[ProgressType]: An iterable of values taken from the provided sequence. """ - - task_total: Optional[float] = None if total is None: - if isinstance(sequence, Sized): - task_total = float(len(sequence)) - else: - task_total = total + total = float(length_hint(sequence)) or None if task_id is None: - task_id = self.add_task(description, total=task_total) + task_id = self.add_task(description, total=total, completed=completed) else: - self.update(task_id, total=task_total) + self.update(task_id, total=total, completed=completed) if self.live.auto_refresh: with _TrackThread(self, task_id, update_period) as track_thread: @@ -1332,7 +1342,7 @@ class Progress(JupyterMixin): # normalize the mode (always rb, rt) _mode = "".join(sorted(mode, reverse=False)) if _mode not in ("br", "rt", "r"): - raise ValueError("invalid mode {!r}".format(mode)) + raise ValueError(f"invalid mode {mode!r}") # patch buffering to provide the same behaviour as the builtin `open` line_buffering = buffering == 1 @@ -1342,7 +1352,7 @@ class Progress(JupyterMixin): RuntimeWarning, ) buffering = -1 - elif _mode == "rt" or _mode == "r": + elif _mode in ("rt", "r"): if buffering == 0: raise ValueError("can't have unbuffered text I/O") elif buffering == 1: @@ -1363,7 +1373,7 @@ class Progress(JupyterMixin): reader = _Reader(handle, self, task_id, close_handle=True) # wrap the reader in a `TextIOWrapper` if text mode - if mode == "r" or mode == "rt": + if mode in ("r", "rt"): return io.TextIOWrapper( reader, encoding=encoding, @@ -1641,7 +1651,6 @@ class Progress(JupyterMixin): if __name__ == "__main__": # pragma: no coverage - import random import time @@ -1694,7 +1703,6 @@ if __name__ == "__main__": # pragma: no coverage console=console, transient=False, ) as progress: - task1 = progress.add_task("[red]Downloading", total=1000) task2 = progress.add_task("[green]Processing", total=1000) task3 = progress.add_task("[yellow]Thinking", total=None) diff --git a/gestao_raul/Lib/site-packages/pip/_vendor/rich/progress_bar.py b/gestao_raul/Lib/site-packages/pip/_vendor/rich/progress_bar.py index 67361df..41794f7 100644 --- a/gestao_raul/Lib/site-packages/pip/_vendor/rich/progress_bar.py +++ b/gestao_raul/Lib/site-packages/pip/_vendor/rich/progress_bar.py @@ -108,7 +108,7 @@ class ProgressBar(JupyterMixin): for index in range(PULSE_SIZE): position = index / PULSE_SIZE - fade = 0.5 + cos((position * pi * 2)) / 2.0 + fade = 0.5 + cos(position * pi * 2) / 2.0 color = blend_rgb(fore_color, back_color, cross_fade=fade) append(_Segment(bar, _Style(color=from_triplet(color)))) return segments @@ -156,7 +156,6 @@ class ProgressBar(JupyterMixin): def __rich_console__( self, console: Console, options: ConsoleOptions ) -> RenderResult: - width = min(self.width or options.max_width, options.max_width) ascii = options.legacy_windows or options.ascii_only should_pulse = self.pulse or self.total is None diff --git a/gestao_raul/Lib/site-packages/pip/_vendor/rich/prompt.py b/gestao_raul/Lib/site-packages/pip/_vendor/rich/prompt.py index 2bd0a77..fccb70d 100644 --- a/gestao_raul/Lib/site-packages/pip/_vendor/rich/prompt.py +++ b/gestao_raul/Lib/site-packages/pip/_vendor/rich/prompt.py @@ -36,6 +36,7 @@ class PromptBase(Generic[PromptType]): console (Console, optional): A Console instance or None to use global console. Defaults to None. password (bool, optional): Enable password input. Defaults to False. choices (List[str], optional): A list of valid choices. Defaults to None. + case_sensitive (bool, optional): Matching of choices should be case-sensitive. Defaults to True. show_default (bool, optional): Show default in prompt. Defaults to True. show_choices (bool, optional): Show choices in prompt. Defaults to True. """ @@ -57,6 +58,7 @@ class PromptBase(Generic[PromptType]): console: Optional[Console] = None, password: bool = False, choices: Optional[List[str]] = None, + case_sensitive: bool = True, show_default: bool = True, show_choices: bool = True, ) -> None: @@ -69,6 +71,7 @@ class PromptBase(Generic[PromptType]): self.password = password if choices is not None: self.choices = choices + self.case_sensitive = case_sensitive self.show_default = show_default self.show_choices = show_choices @@ -81,6 +84,7 @@ class PromptBase(Generic[PromptType]): console: Optional[Console] = None, password: bool = False, choices: Optional[List[str]] = None, + case_sensitive: bool = True, show_default: bool = True, show_choices: bool = True, default: DefaultType, @@ -97,6 +101,7 @@ class PromptBase(Generic[PromptType]): console: Optional[Console] = None, password: bool = False, choices: Optional[List[str]] = None, + case_sensitive: bool = True, show_default: bool = True, show_choices: bool = True, stream: Optional[TextIO] = None, @@ -111,6 +116,7 @@ class PromptBase(Generic[PromptType]): console: Optional[Console] = None, password: bool = False, choices: Optional[List[str]] = None, + case_sensitive: bool = True, show_default: bool = True, show_choices: bool = True, default: Any = ..., @@ -126,6 +132,7 @@ class PromptBase(Generic[PromptType]): console (Console, optional): A Console instance or None to use global console. Defaults to None. password (bool, optional): Enable password input. Defaults to False. choices (List[str], optional): A list of valid choices. Defaults to None. + case_sensitive (bool, optional): Matching of choices should be case-sensitive. Defaults to True. show_default (bool, optional): Show default in prompt. Defaults to True. show_choices (bool, optional): Show choices in prompt. Defaults to True. stream (TextIO, optional): Optional text file open for reading to get input. Defaults to None. @@ -135,6 +142,7 @@ class PromptBase(Generic[PromptType]): console=console, password=password, choices=choices, + case_sensitive=case_sensitive, show_default=show_default, show_choices=show_choices, ) @@ -212,7 +220,9 @@ class PromptBase(Generic[PromptType]): bool: True if choice was valid, otherwise False. """ assert self.choices is not None - return value.strip() in self.choices + if self.case_sensitive: + return value.strip() in self.choices + return value.strip().lower() in [choice.lower() for choice in self.choices] def process_response(self, value: str) -> PromptType: """Process response from user, convert to prompt type. @@ -232,9 +242,17 @@ class PromptBase(Generic[PromptType]): except ValueError: raise InvalidResponse(self.validate_error_message) - if self.choices is not None and not self.check_choice(value): - raise InvalidResponse(self.illegal_choice_message) + if self.choices is not None: + if not self.check_choice(value): + raise InvalidResponse(self.illegal_choice_message) + if not self.case_sensitive: + # return the original choice, not the lower case version + return_value = self.response_type( + self.choices[ + [choice.lower() for choice in self.choices].index(value.lower()) + ] + ) return return_value def on_validate_error(self, value: str, error: InvalidResponse) -> None: @@ -307,7 +325,7 @@ class IntPrompt(PromptBase[int]): validate_error_message = "[prompt.invalid]Please enter a valid integer number" -class FloatPrompt(PromptBase[int]): +class FloatPrompt(PromptBase[float]): """A prompt that returns a float. Example: @@ -346,7 +364,6 @@ class Confirm(PromptBase[bool]): if __name__ == "__main__": # pragma: no cover - from pip._vendor.rich import print if Confirm.ask("Run [i]prompt[/i] tests?", default=True): @@ -372,5 +389,12 @@ if __name__ == "__main__": # pragma: no cover fruit = Prompt.ask("Enter a fruit", choices=["apple", "orange", "pear"]) print(f"fruit={fruit!r}") + doggie = Prompt.ask( + "What's the best Dog? (Case INSENSITIVE)", + choices=["Border Terrier", "Collie", "Labradoodle"], + case_sensitive=False, + ) + print(f"doggie={doggie!r}") + else: print("[b]OK :loudly_crying_face:") diff --git a/gestao_raul/Lib/site-packages/pip/_vendor/rich/py.typed b/gestao_raul/Lib/site-packages/pip/_vendor/rich/py.typed new file mode 100644 index 0000000..e69de29 diff --git a/gestao_raul/Lib/site-packages/pip/_vendor/rich/repr.py b/gestao_raul/Lib/site-packages/pip/_vendor/rich/repr.py index 72d1a7e..10efc42 100644 --- a/gestao_raul/Lib/site-packages/pip/_vendor/rich/repr.py +++ b/gestao_raul/Lib/site-packages/pip/_vendor/rich/repr.py @@ -55,7 +55,7 @@ def auto( if key is None: append(repr(value)) else: - if len(default) and default[0] == value: + if default and default[0] == value: continue append(f"{key}={value!r}") else: @@ -76,7 +76,7 @@ def auto( param.POSITIONAL_OR_KEYWORD, param.KEYWORD_ONLY, ): - if param.default == param.empty: + if param.default is param.empty: yield getattr(self, param.name) else: yield param.name, getattr(self, param.name), param.default diff --git a/gestao_raul/Lib/site-packages/pip/_vendor/rich/rule.py b/gestao_raul/Lib/site-packages/pip/_vendor/rich/rule.py index 0b78f7a..fd00ce6 100644 --- a/gestao_raul/Lib/site-packages/pip/_vendor/rich/rule.py +++ b/gestao_raul/Lib/site-packages/pip/_vendor/rich/rule.py @@ -51,13 +51,9 @@ class Rule(JupyterMixin): ) -> RenderResult: width = options.max_width - # Python3.6 doesn't have an isascii method on str - isascii = getattr(str, "isascii", None) or ( - lambda s: all(ord(c) < 128 for c in s) - ) characters = ( "-" - if (options.ascii_only and not isascii(self.characters)) + if (options.ascii_only and not self.characters.isascii()) else self.characters ) diff --git a/gestao_raul/Lib/site-packages/pip/_vendor/rich/segment.py b/gestao_raul/Lib/site-packages/pip/_vendor/rich/segment.py index 1ea5435..4b5f997 100644 --- a/gestao_raul/Lib/site-packages/pip/_vendor/rich/segment.py +++ b/gestao_raul/Lib/site-packages/pip/_vendor/rich/segment.py @@ -109,10 +109,20 @@ class Segment(NamedTuple): @classmethod @lru_cache(1024 * 16) def _split_cells(cls, segment: "Segment", cut: int) -> Tuple["Segment", "Segment"]: + """Split a segment in to two at a given cell position. + Note that splitting a double-width character, may result in that character turning + into two spaces. + + Args: + segment (Segment): A segment to split. + cut (int): A cell position to cut on. + + Returns: + A tuple of two segments. + """ text, style, control = segment _Segment = Segment - cell_length = segment.cell_length if cut >= cell_length: return segment, _Segment("", style, control) @@ -121,30 +131,29 @@ class Segment(NamedTuple): pos = int((cut / cell_length) * len(text)) - before = text[:pos] - cell_pos = cell_len(before) - if cell_pos == cut: - return ( - _Segment(before, style, control), - _Segment(text[pos:], style, control), - ) - while pos < len(text): - char = text[pos] - pos += 1 - cell_pos += cell_size(char) + while True: before = text[:pos] - if cell_pos == cut: + cell_pos = cell_len(before) + out_by = cell_pos - cut + if not out_by: return ( _Segment(before, style, control), _Segment(text[pos:], style, control), ) - if cell_pos > cut: + if out_by == -1 and cell_size(text[pos]) == 2: return ( - _Segment(before[: pos - 1] + " ", style, control), + _Segment(text[:pos] + " ", style, control), + _Segment(" " + text[pos + 1 :], style, control), + ) + if out_by == +1 and cell_size(text[pos - 1]) == 2: + return ( + _Segment(text[: pos - 1] + " ", style, control), _Segment(" " + text[pos:], style, control), ) - - raise AssertionError("Will never reach here") + if cell_pos < cut: + pos += 1 + else: + pos -= 1 def split_cells(self, cut: int) -> Tuple["Segment", "Segment"]: """Split segment in to two segments at the specified column. @@ -152,10 +161,14 @@ class Segment(NamedTuple): If the cut point falls in the middle of a 2-cell wide character then it is replaced by two spaces, to preserve the display width of the parent segment. + Args: + cut (int): Offset within the segment to cut. + Returns: Tuple[Segment, Segment]: Two segments. """ text, style, control = self + assert cut >= 0 if _is_single_cell_widths(text): # Fast path with all 1 cell characters @@ -303,7 +316,7 @@ class Segment(NamedTuple): if include_new_lines: cropped_line.append(new_line_segment) yield cropped_line - del line[:] + line.clear() else: append(segment) if line: @@ -365,7 +378,7 @@ class Segment(NamedTuple): int: The length of the line. """ _cell_len = cell_len - return sum(_cell_len(segment.text) for segment in line) + return sum(_cell_len(text) for text, style, control in line if not control) @classmethod def get_shape(cls, lines: List[List["Segment"]]) -> Tuple[int, int]: @@ -605,7 +618,7 @@ class Segment(NamedTuple): while True: cut = next(iter_cuts, -1) if cut == -1: - return [] + return if cut != 0: break yield [] @@ -727,7 +740,7 @@ console.print(text)""" console.print(Syntax(code, "python", line_numbers=True)) console.print() console.print( - "When you call [b]print()[/b], Rich [i]renders[/i] the object in to the the following:\n" + "When you call [b]print()[/b], Rich [i]renders[/i] the object in to the following:\n" ) fragments = list(console.render(text)) console.print(fragments) diff --git a/gestao_raul/Lib/site-packages/pip/_vendor/rich/spinner.py b/gestao_raul/Lib/site-packages/pip/_vendor/rich/spinner.py index 0879088..70570b6 100644 --- a/gestao_raul/Lib/site-packages/pip/_vendor/rich/spinner.py +++ b/gestao_raul/Lib/site-packages/pip/_vendor/rich/spinner.py @@ -11,6 +11,18 @@ if TYPE_CHECKING: class Spinner: + """A spinner animation. + + Args: + name (str): Name of spinner (run python -m rich.spinner). + text (RenderableType, optional): A renderable to display at the right of the spinner (str or Text typically). Defaults to "". + style (StyleType, optional): Style for spinner animation. Defaults to None. + speed (float, optional): Speed factor for animation. Defaults to 1.0. + + Raises: + KeyError: If name isn't one of the supported spinner animations. + """ + def __init__( self, name: str, @@ -19,17 +31,6 @@ class Spinner: style: Optional["StyleType"] = None, speed: float = 1.0, ) -> None: - """A spinner animation. - - Args: - name (str): Name of spinner (run python -m rich.spinner). - text (RenderableType, optional): A renderable to display at the right of the spinner (str or Text typically). Defaults to "". - style (StyleType, optional): Style for spinner animation. Defaults to None. - speed (float, optional): Speed factor for animation. Defaults to 1.0. - - Raises: - KeyError: If name isn't one of the supported spinner animations. - """ try: spinner = SPINNERS[name] except KeyError: @@ -37,6 +38,7 @@ class Spinner: self.text: "Union[RenderableType, Text]" = ( Text.from_markup(text) if isinstance(text, str) else text ) + self.name = name self.frames = cast(List[str], spinner["frames"])[:] self.interval = cast(float, spinner["interval"]) self.start_time: Optional[float] = None diff --git a/gestao_raul/Lib/site-packages/pip/_vendor/rich/status.py b/gestao_raul/Lib/site-packages/pip/_vendor/rich/status.py index 09eff40..6574483 100644 --- a/gestao_raul/Lib/site-packages/pip/_vendor/rich/status.py +++ b/gestao_raul/Lib/site-packages/pip/_vendor/rich/status.py @@ -107,7 +107,6 @@ class Status(JupyterMixin): if __name__ == "__main__": # pragma: no cover - from time import sleep from .console import Console diff --git a/gestao_raul/Lib/site-packages/pip/_vendor/rich/style.py b/gestao_raul/Lib/site-packages/pip/_vendor/rich/style.py index ad388aa..262fd6e 100644 --- a/gestao_raul/Lib/site-packages/pip/_vendor/rich/style.py +++ b/gestao_raul/Lib/site-packages/pip/_vendor/rich/style.py @@ -645,6 +645,29 @@ class Style: style._meta = self._meta return style + @lru_cache(maxsize=128) + def clear_meta_and_links(self) -> "Style": + """Get a copy of this style with link and meta information removed. + + Returns: + Style: New style object. + """ + if self._null: + return NULL_STYLE + style: Style = self.__new__(Style) + style._ansi = self._ansi + style._style_definition = self._style_definition + style._color = self._color + style._bgcolor = self._bgcolor + style._attributes = self._attributes + style._set_attributes = self._set_attributes + style._link = None + style._link_id = "" + style._hash = None + style._null = False + style._meta = None + return style + def update_link(self, link: Optional[str] = None) -> "Style": """Get a copy with a different value for link. diff --git a/gestao_raul/Lib/site-packages/pip/_vendor/rich/syntax.py b/gestao_raul/Lib/site-packages/pip/_vendor/rich/syntax.py index 01bdd04..f3d483c 100644 --- a/gestao_raul/Lib/site-packages/pip/_vendor/rich/syntax.py +++ b/gestao_raul/Lib/site-packages/pip/_vendor/rich/syntax.py @@ -1,9 +1,9 @@ import os.path -import platform import re import sys import textwrap from abc import ABC, abstractmethod +from pathlib import Path from typing import ( Any, Dict, @@ -51,7 +51,7 @@ from .text import Text TokenType = Tuple[str, ...] -WINDOWS = platform.system() == "Windows" +WINDOWS = sys.platform == "win32" DEFAULT_THEME = "monokai" # The following styles are based on https://github.com/pygments/pygments/blob/master/pygments/formatters/terminal.py @@ -221,6 +221,7 @@ class _SyntaxHighlightRange(NamedTuple): style: StyleType start: SyntaxPosition end: SyntaxPosition + style_before: bool = False class Syntax(JupyterMixin): @@ -338,8 +339,7 @@ class Syntax(JupyterMixin): Returns: [Syntax]: A Syntax object that may be printed to the console """ - with open(path, "rt", encoding=encoding) as code_file: - code = code_file.read() + code = Path(path).read_text(encoding=encoding) if not lexer: lexer = cls.guess_lexer(path, code=code) @@ -439,6 +439,16 @@ class Syntax(JupyterMixin): except ClassNotFound: return None + @property + def default_lexer(self) -> Lexer: + """A Pygments Lexer to use if one is not specified or invalid.""" + return get_lexer_by_name( + "text", + stripnl=False, + ensurenl=True, + tabsize=self.tab_size, + ) + def highlight( self, code: str, @@ -467,7 +477,7 @@ class Syntax(JupyterMixin): ) _get_theme_style = self._theme.get_style_for_token - lexer = self.lexer + lexer = self.lexer or self.default_lexer if lexer is None: text.append(code) @@ -494,7 +504,10 @@ class Syntax(JupyterMixin): # Skip over tokens until line start while line_no < _line_start: - _token_type, token = next(tokens) + try: + _token_type, token = next(tokens) + except StopIteration: + break yield (token, None) if token.endswith("\n"): line_no += 1 @@ -522,7 +535,11 @@ class Syntax(JupyterMixin): return text def stylize_range( - self, style: StyleType, start: SyntaxPosition, end: SyntaxPosition + self, + style: StyleType, + start: SyntaxPosition, + end: SyntaxPosition, + style_before: bool = False, ) -> None: """ Adds a custom style on a part of the code, that will be applied to the syntax display when it's rendered. @@ -532,8 +549,11 @@ class Syntax(JupyterMixin): style (StyleType): The style to apply. start (Tuple[int, int]): The start of the range, in the form `[line number, column index]`. end (Tuple[int, int]): The end of the range, in the form `[line number, column index]`. + style_before (bool): Apply the style before any existing styles. """ - self._stylized_ranges.append(_SyntaxHighlightRange(style, start, end)) + self._stylized_ranges.append( + _SyntaxHighlightRange(style, start, end, style_before) + ) def _get_line_numbers_color(self, blend: float = 0.3) -> Color: background_style = self._theme.get_background_style() + self.background_style @@ -587,7 +607,6 @@ class Syntax(JupyterMixin): def __rich_measure__( self, console: "Console", options: "ConsoleOptions" ) -> "Measurement": - _, right, _, left = Padding.unpack(self.padding) padding = left + right if self.code_width is not None: @@ -608,9 +627,7 @@ class Syntax(JupyterMixin): ) -> RenderResult: segments = Segments(self._get_syntax(console, options)) if self.padding: - yield Padding( - segments, style=self._theme.get_background_style(), pad=self.padding - ) + yield Padding(segments, style=self._get_base_style(), pad=self.padding) else: yield segments @@ -671,6 +688,8 @@ class Syntax(JupyterMixin): line_offset = max(0, start_line - 1) lines: Union[List[Text], Lines] = text.split("\n", allow_blank=ends_on_nl) if self.line_range: + if line_offset > len(lines): + return lines = lines[line_offset:end_line] if self.indent_guides and not options.ascii_only: @@ -683,7 +702,7 @@ class Syntax(JupyterMixin): lines = ( Text("\n") .join(lines) - .with_indent_guides(self.tab_size, style=style) + .with_indent_guides(self.tab_size, style=style + Style(italic=False)) .split("\n", allow_blank=True) ) @@ -774,7 +793,10 @@ class Syntax(JupyterMixin): newlines_offsets, stylized_range.end ) if start is not None and end is not None: - text.stylize(stylized_range.style, start, end) + if stylized_range.style_before: + text.stylize_before(stylized_range.style, start, end) + else: + text.stylize(stylized_range.style, start, end) def _process_code(self, code: str) -> Tuple[bool, str]: """ @@ -825,7 +847,6 @@ def _get_code_index_for_syntax_position( if __name__ == "__main__": # pragma: no cover - import argparse import sys diff --git a/gestao_raul/Lib/site-packages/pip/_vendor/rich/table.py b/gestao_raul/Lib/site-packages/pip/_vendor/rich/table.py index 17409f2..654c855 100644 --- a/gestao_raul/Lib/site-packages/pip/_vendor/rich/table.py +++ b/gestao_raul/Lib/site-packages/pip/_vendor/rich/table.py @@ -54,7 +54,7 @@ class Column: show_footer (bool, optional): Show a footer row. Defaults to False. show_edge (bool, optional): Draw a box around the outside of the table. Defaults to True. show_lines (bool, optional): Draw lines between every row. Defaults to False. - leading (bool, optional): Number of blank lines between rows (precludes ``show_lines``). Defaults to 0. + leading (int, optional): Number of blank lines between rows (precludes ``show_lines``). Defaults to 0. style (Union[str, Style], optional): Default style for the table. Defaults to "none". row_styles (List[Union, str], optional): Optional list of row styles, if more than one style is given then the styles will alternate. Defaults to None. header_style (Union[str, Style], optional): Style of the header. Defaults to "table.header". @@ -106,6 +106,9 @@ class Column: no_wrap: bool = False """bool: Prevent wrapping of text within the column. Defaults to ``False``.""" + highlight: bool = False + """bool: Apply highlighter to column. Defaults to ``False``.""" + _index: int = 0 """Index of column.""" @@ -167,7 +170,7 @@ class Table(JupyterMixin): show_footer (bool, optional): Show a footer row. Defaults to False. show_edge (bool, optional): Draw a box around the outside of the table. Defaults to True. show_lines (bool, optional): Draw lines between every row. Defaults to False. - leading (bool, optional): Number of blank lines between rows (precludes ``show_lines``). Defaults to 0. + leading (int, optional): Number of blank lines between rows (precludes ``show_lines``). Defaults to 0. style (Union[str, Style], optional): Default style for the table. Defaults to "none". row_styles (List[Union, str], optional): Optional list of row styles, if more than one style is given then the styles will alternate. Defaults to None. header_style (Union[str, Style], optional): Style of the header. Defaults to "table.header". @@ -212,7 +215,6 @@ class Table(JupyterMixin): caption_justify: "JustifyMethod" = "center", highlight: bool = False, ) -> None: - self.columns: List[Column] = [] self.rows: List[Row] = [] self.title = title @@ -366,6 +368,7 @@ class Table(JupyterMixin): footer: "RenderableType" = "", *, header_style: Optional[StyleType] = None, + highlight: Optional[bool] = None, footer_style: Optional[StyleType] = None, style: Optional[StyleType] = None, justify: "JustifyMethod" = "left", @@ -385,6 +388,7 @@ class Table(JupyterMixin): footer (RenderableType, optional): Text or renderable for the footer. Defaults to "". header_style (Union[str, Style], optional): Style for the header, or None for default. Defaults to None. + highlight (bool, optional): Whether to highlight the text. The default of None uses the value of the table (self) object. footer_style (Union[str, Style], optional): Style for the footer, or None for default. Defaults to None. style (Union[str, Style], optional): Style for the column cells, or None for default. Defaults to None. justify (JustifyMethod, optional): Alignment for cells. Defaults to "left". @@ -402,6 +406,7 @@ class Table(JupyterMixin): header=header, footer=footer, header_style=header_style or "", + highlight=highlight if highlight is not None else self.highlight, footer_style=footer_style or "", style=style or "", justify=justify, @@ -446,7 +451,7 @@ class Table(JupyterMixin): ] for index, renderable in enumerate(cell_renderables): if index == len(columns): - column = Column(_index=index) + column = Column(_index=index, highlight=self.highlight) for _ in self.rows: add_cell(column, Text("")) self.columns.append(column) @@ -471,7 +476,6 @@ class Table(JupyterMixin): def __rich_console__( self, console: "Console", options: "ConsoleOptions" ) -> "RenderResult": - if not self.columns: yield Segment("\n") return @@ -685,7 +689,7 @@ class Table(JupyterMixin): getattr(renderable, "vertical", None) or column.vertical, ) else: - for (style, renderable) in raw_cells: + for style, renderable in raw_cells: yield _Cell( style, renderable, @@ -777,16 +781,16 @@ class Table(JupyterMixin): _Segment(_box.head_right, border_style), _Segment(_box.head_vertical, border_style), ), - ( - _Segment(_box.foot_left, border_style), - _Segment(_box.foot_right, border_style), - _Segment(_box.foot_vertical, border_style), - ), ( _Segment(_box.mid_left, border_style), _Segment(_box.mid_right, border_style), _Segment(_box.mid_vertical, border_style), ), + ( + _Segment(_box.foot_left, border_style), + _Segment(_box.foot_right, border_style), + _Segment(_box.foot_vertical, border_style), + ), ] if show_edge: yield _Segment(_box.get_top(widths), border_style) @@ -820,6 +824,7 @@ class Table(JupyterMixin): no_wrap=column.no_wrap, overflow=column.overflow, height=None, + highlight=column.highlight, ) lines = console.render_lines( cell.renderable, diff --git a/gestao_raul/Lib/site-packages/pip/_vendor/rich/text.py b/gestao_raul/Lib/site-packages/pip/_vendor/rich/text.py index b14055a..5a0c6b1 100644 --- a/gestao_raul/Lib/site-packages/pip/_vendor/rich/text.py +++ b/gestao_raul/Lib/site-packages/pip/_vendor/rich/text.py @@ -11,6 +11,7 @@ from typing import ( List, NamedTuple, Optional, + Pattern, Tuple, Union, ) @@ -38,6 +39,7 @@ DEFAULT_OVERFLOW: "OverflowMethod" = "fold" _re_whitespace = re.compile(r"\s+$") TextType = Union[str, "Text"] +"""A plain string or a :class:`Text` instance.""" GetStyleCallable = Callable[[str], Optional[StyleType]] @@ -53,11 +55,7 @@ class Span(NamedTuple): """Style associated with the span.""" def __repr__(self) -> str: - return ( - f"Span({self.start}, {self.end}, {self.style!r})" - if (isinstance(self.style, Style) and self.style._meta) - else f"Span({self.start}, {self.end}, {repr(self.style)})" - ) + return f"Span({self.start}, {self.end}, {self.style!r})" def __bool__(self) -> bool: return self.end > self.start @@ -101,6 +99,21 @@ class Span(NamedTuple): return self return Span(start, min(offset, end), style) + def extend(self, cells: int) -> "Span": + """Extend the span by the given number of cells. + + Args: + cells (int): Additional space to add to end of span. + + Returns: + Span: A span. + """ + if cells: + start, end, style = self + return Span(start, end + cells, style) + else: + return self + class Text(JupyterMixin): """Text with color / style. @@ -112,7 +125,7 @@ class Text(JupyterMixin): overflow (str, optional): Overflow method: "crop", "fold", "ellipsis". Defaults to None. no_wrap (bool, optional): Disable text wrapping, or None for default. Defaults to None. end (str, optional): Character to end text with. Defaults to "\\\\n". - tab_size (int): Number of spaces per tab, or ``None`` to use ``console.tab_size``. Defaults to 8. + tab_size (int): Number of spaces per tab, or ``None`` to use ``console.tab_size``. Defaults to None. spans (List[Span], optional). A list of predefined style spans. Defaults to None. """ @@ -137,7 +150,7 @@ class Text(JupyterMixin): overflow: Optional["OverflowMethod"] = None, no_wrap: Optional[bool] = None, end: str = "\n", - tab_size: Optional[int] = 8, + tab_size: Optional[int] = None, spans: Optional[List[Span]] = None, ) -> None: sanitized_text = strip_control_codes(text) @@ -161,7 +174,7 @@ class Text(JupyterMixin): return self.plain def __repr__(self) -> str: - return f"" + return f"" def __add__(self, other: Any) -> "Text": if isinstance(other, (str, Text)): @@ -259,7 +272,9 @@ class Text(JupyterMixin): Args: text (str): A string containing console markup. + style (Union[str, Style], optional): Base style for text. Defaults to "". emoji (bool, optional): Also render emoji code. Defaults to True. + emoji_variant (str, optional): Optional emoji variant, either "text" or "emoji". Defaults to None. justify (str, optional): Justify method: "left", "center", "full", "right". Defaults to None. overflow (str, optional): Overflow method: "crop", "fold", "ellipsis". Defaults to None. end (str, optional): Character to end text with. Defaults to "\\\\n". @@ -296,7 +311,7 @@ class Text(JupyterMixin): overflow (str, optional): Overflow method: "crop", "fold", "ellipsis". Defaults to None. no_wrap (bool, optional): Disable text wrapping, or None for default. Defaults to None. end (str, optional): Character to end text with. Defaults to "\\\\n". - tab_size (int): Number of spaces per tab, or ``None`` to use ``console.tab_size``. Defaults to 8. + tab_size (int): Number of spaces per tab, or ``None`` to use ``console.tab_size``. Defaults to None. """ from .ansi import AnsiDecoder @@ -357,8 +372,9 @@ class Text(JupyterMixin): style (Union[str, Style], optional): Base style for text. Defaults to "". justify (str, optional): Justify method: "left", "center", "full", "right". Defaults to None. overflow (str, optional): Overflow method: "crop", "fold", "ellipsis". Defaults to None. + no_wrap (bool, optional): Disable text wrapping, or None for default. Defaults to None. end (str, optional): Character to end text with. Defaults to "\\\\n". - tab_size (int): Number of spaces per tab, or ``None`` to use ``console.tab_size``. Defaults to 8. + tab_size (int): Number of spaces per tab, or ``None`` to use ``console.tab_size``. Defaults to None. meta (Dict[str, Any], optional). Meta data to apply to text, or None for no meta data. Default to None Returns: @@ -412,7 +428,7 @@ class Text(JupyterMixin): self._spans = spans[:] def blank_copy(self, plain: str = "") -> "Text": - """Return a new Text instance with copied meta data (but not the string or spans).""" + """Return a new Text instance with copied metadata (but not the string or spans).""" copy_self = Text( plain, style=self.style, @@ -493,7 +509,7 @@ class Text(JupyterMixin): def apply_meta( self, meta: Dict[str, Any], start: int = 0, end: Optional[int] = None ) -> None: - """Apply meta data to the text, or a portion of the text. + """Apply metadata to the text, or a portion of the text. Args: meta (Dict[str, Any]): A dict of meta information. @@ -553,9 +569,30 @@ class Text(JupyterMixin): style += get_style(span_style, default="") return style + def extend_style(self, spaces: int) -> None: + """Extend the Text given number of spaces where the spaces have the same style as the last character. + + Args: + spaces (int): Number of spaces to add to the Text. + """ + if spaces <= 0: + return + spans = self.spans + new_spaces = " " * spaces + if spans: + end_offset = len(self) + self._spans[:] = [ + span.extend(spaces) if span.end >= end_offset else span + for span in spans + ] + self._text.append(new_spaces) + self._length += spaces + else: + self.plain += new_spaces + def highlight_regex( self, - re_highlight: str, + re_highlight: Union[Pattern[str], str], style: Optional[Union[GetStyleCallable, StyleType]] = None, *, style_prefix: str = "", @@ -564,7 +601,7 @@ class Text(JupyterMixin): translated to styles. Args: - re_highlight (str): A regular expression. + re_highlight (Union[re.Pattern, str]): A regular expression object or string. style (Union[GetStyleCallable, StyleType]): Optional style to apply to whole match, or a callable which accepts the matched text and returns a style. Defaults to None. style_prefix (str, optional): Optional prefix to add to style group names. @@ -576,7 +613,9 @@ class Text(JupyterMixin): append_span = self._spans.append _Span = Span plain = self.plain - for match in re.finditer(re_highlight, plain): + if isinstance(re_highlight, str): + re_highlight = re.compile(re_highlight) + for match in re_highlight.finditer(plain): get_span = match.span if style: start, end = get_span() @@ -601,9 +640,9 @@ class Text(JupyterMixin): """Highlight words with a style. Args: - words (Iterable[str]): Worlds to highlight. + words (Iterable[str]): Words to highlight. style (Union[str, Style]): Style to apply. - case_sensitive (bool, optional): Enable case sensitive matchings. Defaults to True. + case_sensitive (bool, optional): Enable case sensitive matching. Defaults to True. Returns: int: Number of words highlighted. @@ -650,7 +689,7 @@ class Text(JupyterMixin): def __rich_console__( self, console: "Console", options: "ConsoleOptions" ) -> Iterable[Segment]: - tab_size: int = console.tab_size or self.tab_size or 8 + tab_size: int = console.tab_size if self.tab_size is None else self.tab_size justify = self.justify or options.justify or DEFAULT_JUSTIFY overflow = self.overflow or options.overflow or DEFAULT_OVERFLOW @@ -785,27 +824,35 @@ class Text(JupyterMixin): """ if "\t" not in self.plain: return - pos = 0 if tab_size is None: tab_size = self.tab_size - assert tab_size is not None - result = self.blank_copy() - append = result.append + if tab_size is None: + tab_size = 8 + + new_text: List[Text] = [] + append = new_text.append - _style = self.style for line in self.split("\n", include_separator=True): - parts = line.split("\t", include_separator=True) - for part in parts: - if part.plain.endswith("\t"): - part._text = [part.plain[:-1] + " "] - append(part) - pos += len(part) - spaces = tab_size - ((pos - 1) % tab_size) - 1 - if spaces: - append(" " * spaces, _style) - pos += spaces - else: + if "\t" not in line.plain: + append(line) + else: + cell_position = 0 + parts = line.split("\t", include_separator=True) + for part in parts: + if part.plain.endswith("\t"): + part._text[-1] = part._text[-1][:-1] + " " + cell_position += part.cell_len + tab_remainder = cell_position % tab_size + if tab_remainder: + spaces = tab_size - tab_remainder + part.extend_style(spaces) + cell_position += spaces + else: + cell_position += part.cell_len append(part) + + result = Text("").join(new_text) + self._text = [result.plain] self._length = len(self.plain) self._spans[:] = result._spans @@ -856,6 +903,7 @@ class Text(JupyterMixin): Args: count (int): Width of padding. + character (str): The character to pad with. Must be a string of length 1. """ assert len(character) == 1, "Character must be a string of length 1" if count: @@ -936,7 +984,7 @@ class Text(JupyterMixin): self._text.append(sanitized_text) offset = len(self) text_length = len(sanitized_text) - if style is not None: + if style: self._spans.append(Span(offset, offset + text_length, style)) self._length += text_length elif isinstance(text, Text): @@ -946,14 +994,14 @@ class Text(JupyterMixin): "style must not be set when appending Text instance" ) text_length = self._length - if text.style is not None: + if text.style: self._spans.append( _Span(text_length, text_length + len(text), text.style) ) self._text.append(text.plain) self._spans.extend( _Span(start + text_length, end + text_length, style) - for start, end, style in text._spans + for start, end, style in text._spans.copy() ) self._length += len(text) return self @@ -962,17 +1010,20 @@ class Text(JupyterMixin): """Append another Text instance. This method is more performant that Text.append, but only works for Text. + Args: + text (Text): The Text instance to append to this instance. + Returns: Text: Returns self for chaining. """ _Span = Span text_length = self._length - if text.style is not None: + if text.style: self._spans.append(_Span(text_length, text_length + len(text), text.style)) self._text.append(text.plain) self._spans.extend( _Span(start + text_length, end + text_length, style) - for start, end, style in text._spans + for start, end, style in text._spans.copy() ) self._length += len(text) return self @@ -983,7 +1034,7 @@ class Text(JupyterMixin): """Append iterable of str and style. Style may be a Style instance or a str style definition. Args: - pairs (Iterable[Tuple[str, Optional[StyleType]]]): An iterable of tuples containing str content and style. + tokens (Iterable[Tuple[str, Optional[StyleType]]]): An iterable of tuples containing str content and style. Returns: Text: Returns self for chaining. @@ -993,8 +1044,9 @@ class Text(JupyterMixin): _Span = Span offset = len(self) for content, style in tokens: + content = strip_control_codes(content) append_text(content) - if style is not None: + if style: append_span(_Span(offset, offset + len(content), style)) offset += len(content) self._length = offset @@ -1092,7 +1144,6 @@ class Text(JupyterMixin): _Span = Span for span_start, span_end, style in self._spans: - lower_bound = 0 upper_bound = line_count start_line_no = (lower_bound + upper_bound) // 2 @@ -1162,8 +1213,7 @@ class Text(JupyterMixin): Args: console (Console): Console instance. - width (int): Number of characters per line. - emoji (bool, optional): Also render emoji code. Defaults to True. + width (int): Number of cells available per line. justify (str, optional): Justify method: "default", "left", "center", "full", "right". Defaults to "default". overflow (str, optional): Overflow method: "crop", "fold", or "ellipsis". Defaults to None. tab_size (int, optional): Default tab size. Defaults to 8. @@ -1204,7 +1254,7 @@ class Text(JupyterMixin): width (int): Maximum characters in a line. Returns: - Lines: List of lines. + Lines: Lines container. """ lines: Lines = Lines() append = lines.append diff --git a/gestao_raul/Lib/site-packages/pip/_vendor/rich/theme.py b/gestao_raul/Lib/site-packages/pip/_vendor/rich/theme.py index bfb3c7f..227f1d8 100644 --- a/gestao_raul/Lib/site-packages/pip/_vendor/rich/theme.py +++ b/gestao_raul/Lib/site-packages/pip/_vendor/rich/theme.py @@ -1,5 +1,5 @@ import configparser -from typing import Dict, List, IO, Mapping, Optional +from typing import IO, Dict, List, Mapping, Optional from .default_styles import DEFAULT_STYLES from .style import Style, StyleType @@ -56,17 +56,20 @@ class Theme: return theme @classmethod - def read(cls, path: str, inherit: bool = True) -> "Theme": + def read( + cls, path: str, inherit: bool = True, encoding: Optional[str] = None + ) -> "Theme": """Read a theme from a path. Args: path (str): Path to a config file readable by Python configparser module. inherit (bool, optional): Inherit default styles. Defaults to True. + encoding (str, optional): Encoding of the config file. Defaults to None. Returns: Theme: A new theme instance. """ - with open(path, "rt") as config_file: + with open(path, encoding=encoding) as config_file: return cls.from_file(config_file, source=path, inherit=inherit) diff --git a/gestao_raul/Lib/site-packages/pip/_vendor/rich/traceback.py b/gestao_raul/Lib/site-packages/pip/_vendor/rich/traceback.py index 1f48129..28d742b 100644 --- a/gestao_raul/Lib/site-packages/pip/_vendor/rich/traceback.py +++ b/gestao_raul/Lib/site-packages/pip/_vendor/rich/traceback.py @@ -1,12 +1,23 @@ -from __future__ import absolute_import - +import inspect +import linecache import os -import platform import sys from dataclasses import dataclass, field +from itertools import islice from traceback import walk_tb from types import ModuleType, TracebackType -from typing import Any, Callable, Dict, Iterable, List, Optional, Sequence, Type, Union +from typing import ( + Any, + Callable, + Dict, + Iterable, + List, + Optional, + Sequence, + Tuple, + Type, + Union, +) from pip._vendor.pygments.lexers import guess_lexer_for_filename from pip._vendor.pygments.token import Comment, Keyword, Name, Number, Operator, String @@ -27,7 +38,7 @@ from .syntax import Syntax from .text import Text from .theme import Theme -WINDOWS = platform.system() == "Windows" +WINDOWS = sys.platform == "win32" LOCALS_MAX_LENGTH = 10 LOCALS_MAX_STRING = 80 @@ -37,10 +48,15 @@ def install( *, console: Optional[Console] = None, width: Optional[int] = 100, + code_width: Optional[int] = 88, extra_lines: int = 3, theme: Optional[str] = None, word_wrap: bool = False, show_locals: bool = False, + locals_max_length: int = LOCALS_MAX_LENGTH, + locals_max_string: int = LOCALS_MAX_STRING, + locals_hide_dunder: bool = True, + locals_hide_sunder: Optional[bool] = None, indent_guides: bool = True, suppress: Iterable[Union[str, ModuleType]] = (), max_frames: int = 100, @@ -53,11 +69,17 @@ def install( Args: console (Optional[Console], optional): Console to write exception to. Default uses internal Console instance. width (Optional[int], optional): Width (in characters) of traceback. Defaults to 100. + code_width (Optional[int], optional): Code width (in characters) of traceback. Defaults to 88. extra_lines (int, optional): Extra lines of code. Defaults to 3. theme (Optional[str], optional): Pygments theme to use in traceback. Defaults to ``None`` which will pick a theme appropriate for the platform. word_wrap (bool, optional): Enable word wrapping of long lines. Defaults to False. show_locals (bool, optional): Enable display of local variables. Defaults to False. + locals_max_length (int, optional): Maximum length of containers before abbreviating, or None for no abbreviation. + Defaults to 10. + locals_max_string (int, optional): Maximum length of string before truncating, or None to disable. Defaults to 80. + locals_hide_dunder (bool, optional): Hide locals prefixed with double underscore. Defaults to True. + locals_hide_sunder (bool, optional): Hide locals prefixed with single underscore. Defaults to False. indent_guides (bool, optional): Enable indent guides in code and locals. Defaults to True. suppress (Sequence[Union[str, ModuleType]]): Optional sequence of modules or paths to exclude from traceback. @@ -65,7 +87,13 @@ def install( Callable: The previous exception handler that was replaced. """ - traceback_console = Console(file=sys.stderr) if console is None else console + traceback_console = Console(stderr=True) if console is None else console + + locals_hide_sunder = ( + True + if (traceback_console.is_jupyter and locals_hide_sunder is None) + else locals_hide_sunder + ) def excepthook( type_: Type[BaseException], @@ -78,10 +106,15 @@ def install( value, traceback, width=width, + code_width=code_width, extra_lines=extra_lines, theme=theme, word_wrap=word_wrap, show_locals=show_locals, + locals_max_length=locals_max_length, + locals_max_string=locals_max_string, + locals_hide_dunder=locals_hide_dunder, + locals_hide_sunder=bool(locals_hide_sunder), indent_guides=indent_guides, suppress=suppress, max_frames=max_frames, @@ -148,6 +181,7 @@ class Frame: name: str line: str = "" locals: Optional[Dict[str, pretty.Node]] = None + last_instruction: Optional[Tuple[Tuple[int, int], Tuple[int, int]]] = None @dataclass @@ -184,6 +218,7 @@ class Traceback: trace (Trace, optional): A `Trace` object produced from `extract`. Defaults to None, which uses the last exception. width (Optional[int], optional): Number of characters used to traceback. Defaults to 100. + code_width (Optional[int], optional): Number of code characters used to traceback. Defaults to 88. extra_lines (int, optional): Additional lines of code to render. Defaults to 3. theme (str, optional): Override pygments theme used in traceback. word_wrap (bool, optional): Enable word wrapping of long lines. Defaults to False. @@ -192,6 +227,8 @@ class Traceback: locals_max_length (int, optional): Maximum length of containers before abbreviating, or None for no abbreviation. Defaults to 10. locals_max_string (int, optional): Maximum length of string before truncating, or None to disable. Defaults to 80. + locals_hide_dunder (bool, optional): Hide locals prefixed with double underscore. Defaults to True. + locals_hide_sunder (bool, optional): Hide locals prefixed with single underscore. Defaults to False. suppress (Sequence[Union[str, ModuleType]]): Optional sequence of modules or paths to exclude from traceback. max_frames (int): Maximum number of frames to show in a traceback, 0 for no maximum. Defaults to 100. @@ -208,14 +245,18 @@ class Traceback: def __init__( self, trace: Optional[Trace] = None, + *, width: Optional[int] = 100, + code_width: Optional[int] = 88, extra_lines: int = 3, theme: Optional[str] = None, word_wrap: bool = False, show_locals: bool = False, - indent_guides: bool = True, locals_max_length: int = LOCALS_MAX_LENGTH, locals_max_string: int = LOCALS_MAX_STRING, + locals_hide_dunder: bool = True, + locals_hide_sunder: bool = False, + indent_guides: bool = True, suppress: Iterable[Union[str, ModuleType]] = (), max_frames: int = 100, ): @@ -230,6 +271,7 @@ class Traceback: ) self.trace = trace self.width = width + self.code_width = code_width self.extra_lines = extra_lines self.theme = Syntax.get_theme(theme or "ansi_dark") self.word_wrap = word_wrap @@ -237,6 +279,8 @@ class Traceback: self.indent_guides = indent_guides self.locals_max_length = locals_max_length self.locals_max_string = locals_max_string + self.locals_hide_dunder = locals_hide_dunder + self.locals_hide_sunder = locals_hide_sunder self.suppress: Sequence[str] = [] for suppress_entity in suppress: @@ -257,14 +301,18 @@ class Traceback: exc_type: Type[Any], exc_value: BaseException, traceback: Optional[TracebackType], + *, width: Optional[int] = 100, + code_width: Optional[int] = 88, extra_lines: int = 3, theme: Optional[str] = None, word_wrap: bool = False, show_locals: bool = False, - indent_guides: bool = True, locals_max_length: int = LOCALS_MAX_LENGTH, locals_max_string: int = LOCALS_MAX_STRING, + locals_hide_dunder: bool = True, + locals_hide_sunder: bool = False, + indent_guides: bool = True, suppress: Iterable[Union[str, ModuleType]] = (), max_frames: int = 100, ) -> "Traceback": @@ -275,6 +323,7 @@ class Traceback: exc_value (BaseException): Exception value. traceback (TracebackType): Python Traceback object. width (Optional[int], optional): Number of characters used to traceback. Defaults to 100. + code_width (Optional[int], optional): Number of code characters used to traceback. Defaults to 88. extra_lines (int, optional): Additional lines of code to render. Defaults to 3. theme (str, optional): Override pygments theme used in traceback. word_wrap (bool, optional): Enable word wrapping of long lines. Defaults to False. @@ -283,6 +332,8 @@ class Traceback: locals_max_length (int, optional): Maximum length of containers before abbreviating, or None for no abbreviation. Defaults to 10. locals_max_string (int, optional): Maximum length of string before truncating, or None to disable. Defaults to 80. + locals_hide_dunder (bool, optional): Hide locals prefixed with double underscore. Defaults to True. + locals_hide_sunder (bool, optional): Hide locals prefixed with single underscore. Defaults to False. suppress (Iterable[Union[str, ModuleType]]): Optional sequence of modules or paths to exclude from traceback. max_frames (int): Maximum number of frames to show in a traceback, 0 for no maximum. Defaults to 100. @@ -290,11 +341,20 @@ class Traceback: Traceback: A Traceback instance that may be printed. """ rich_traceback = cls.extract( - exc_type, exc_value, traceback, show_locals=show_locals + exc_type, + exc_value, + traceback, + show_locals=show_locals, + locals_max_length=locals_max_length, + locals_max_string=locals_max_string, + locals_hide_dunder=locals_hide_dunder, + locals_hide_sunder=locals_hide_sunder, ) + return cls( rich_traceback, width=width, + code_width=code_width, extra_lines=extra_lines, theme=theme, word_wrap=word_wrap, @@ -302,6 +362,8 @@ class Traceback: indent_guides=indent_guides, locals_max_length=locals_max_length, locals_max_string=locals_max_string, + locals_hide_dunder=locals_hide_dunder, + locals_hide_sunder=locals_hide_sunder, suppress=suppress, max_frames=max_frames, ) @@ -312,9 +374,12 @@ class Traceback: exc_type: Type[BaseException], exc_value: BaseException, traceback: Optional[TracebackType], + *, show_locals: bool = False, locals_max_length: int = LOCALS_MAX_LENGTH, locals_max_string: int = LOCALS_MAX_STRING, + locals_hide_dunder: bool = True, + locals_hide_sunder: bool = False, ) -> Trace: """Extract traceback information. @@ -326,6 +391,8 @@ class Traceback: locals_max_length (int, optional): Maximum length of containers before abbreviating, or None for no abbreviation. Defaults to 10. locals_max_string (int, optional): Maximum length of string before truncating, or None to disable. Defaults to 80. + locals_hide_dunder (bool, optional): Hide locals prefixed with double underscore. Defaults to True. + locals_hide_sunder (bool, optional): Hide locals prefixed with single underscore. Defaults to False. Returns: Trace: A Trace instance which you can use to construct a `Traceback`. @@ -362,27 +429,75 @@ class Traceback: stacks.append(stack) append = stack.frames.append + def get_locals( + iter_locals: Iterable[Tuple[str, object]] + ) -> Iterable[Tuple[str, object]]: + """Extract locals from an iterator of key pairs.""" + if not (locals_hide_dunder or locals_hide_sunder): + yield from iter_locals + return + for key, value in iter_locals: + if locals_hide_dunder and key.startswith("__"): + continue + if locals_hide_sunder and key.startswith("_"): + continue + yield key, value + for frame_summary, line_no in walk_tb(traceback): filename = frame_summary.f_code.co_filename + + last_instruction: Optional[Tuple[Tuple[int, int], Tuple[int, int]]] + last_instruction = None + if sys.version_info >= (3, 11): + instruction_index = frame_summary.f_lasti // 2 + instruction_position = next( + islice( + frame_summary.f_code.co_positions(), + instruction_index, + instruction_index + 1, + ) + ) + ( + start_line, + end_line, + start_column, + end_column, + ) = instruction_position + if ( + start_line is not None + and end_line is not None + and start_column is not None + and end_column is not None + ): + last_instruction = ( + (start_line, start_column), + (end_line, end_column), + ) + if filename and not filename.startswith("<"): if not os.path.isabs(filename): filename = os.path.join(_IMPORT_CWD, filename) if frame_summary.f_locals.get("_rich_traceback_omit", False): continue + frame = Frame( filename=filename or "?", lineno=line_no, name=frame_summary.f_code.co_name, - locals={ - key: pretty.traverse( - value, - max_length=locals_max_length, - max_string=locals_max_string, - ) - for key, value in frame_summary.f_locals.items() - } - if show_locals - else None, + locals=( + { + key: pretty.traverse( + value, + max_length=locals_max_length, + max_string=locals_max_string, + ) + for key, value in get_locals(frame_summary.f_locals.items()) + if not (inspect.isfunction(value) or inspect.isclass(value)) + } + if show_locals + else None + ), + last_instruction=last_instruction, ) append(frame) if frame_summary.f_locals.get("_rich_traceback_guard", False): @@ -494,13 +609,14 @@ class Traceback: highlighter = ReprHighlighter() path_highlighter = PathHighlighter() if syntax_error.filename != "": - text = Text.assemble( - (f" {syntax_error.filename}", "pygments.string"), - (":", "pygments.text"), - (str(syntax_error.lineno), "pygments.number"), - style="pygments.text", - ) - yield path_highlighter(text) + if os.path.exists(syntax_error.filename): + text = Text.assemble( + (f" {syntax_error.filename}", "pygments.string"), + (":", "pygments.text"), + (str(syntax_error.lineno), "pygments.number"), + style="pygments.text", + ) + yield path_highlighter(text) syntax_error_text = highlighter(syntax_error.line.rstrip()) syntax_error_text.no_wrap = True offset = min(syntax_error.offset - 1, len(syntax_error_text)) @@ -531,7 +647,6 @@ class Traceback: def _render_stack(self, stack: Stack) -> RenderResult: path_highlighter = PathHighlighter() theme = self.theme - code_cache: Dict[str, str] = {} def read_code(filename: str) -> str: """Read files, and cache results on filename. @@ -542,14 +657,7 @@ class Traceback: Returns: str: Contents of file """ - code = code_cache.get(filename) - if code is None: - with open( - filename, "rt", encoding="utf-8", errors="replace" - ) as code_file: - code = code_file.read() - code_cache[filename] = code - return code + return "".join(linecache.getlines(filename)) def render_locals(frame: Frame) -> Iterable[ConsoleRenderable]: if frame.locals: @@ -570,7 +678,6 @@ class Traceback: excluded = False for frame_index, frame in enumerate(stack.frames): - if exclude_frames and frame_index in exclude_frames: excluded = True continue @@ -588,14 +695,23 @@ class Traceback: frame_filename = frame.filename suppressed = any(frame_filename.startswith(path) for path in self.suppress) - text = Text.assemble( - path_highlighter(Text(frame.filename, style="pygments.string")), - (":", "pygments.text"), - (str(frame.lineno), "pygments.number"), - " in ", - (frame.name, "pygments.function"), - style="pygments.text", - ) + if os.path.exists(frame.filename): + text = Text.assemble( + path_highlighter(Text(frame.filename, style="pygments.string")), + (":", "pygments.text"), + (str(frame.lineno), "pygments.number"), + " in ", + (frame.name, "pygments.function"), + style="pygments.text", + ) + else: + text = Text.assemble( + "in ", + (frame.name, "pygments.function"), + (":", "pygments.text"), + (str(frame.lineno), "pygments.number"), + style="pygments.text", + ) if not frame.filename.startswith("<") and not first: yield "" yield text @@ -605,6 +721,10 @@ class Traceback: if not suppressed: try: code = read_code(frame.filename) + if not code: + # code may be an empty string if the file doesn't exist, OR + # if the traceback filename is generated dynamically + continue lexer_name = self._guess_lexer(frame.filename, code) syntax = Syntax( code, @@ -617,7 +737,7 @@ class Traceback: ), highlight_lines={frame.lineno}, word_wrap=self.word_wrap, - code_width=88, + code_width=self.code_width, indent_guides=self.indent_guides, dedent=False, ) @@ -627,6 +747,14 @@ class Traceback: (f"\n{error}", "traceback.error"), ) else: + if frame.last_instruction is not None: + start, end = frame.last_instruction + syntax.stylize_range( + style="traceback.error_range", + start=start, + end=end, + style_before=True, + ) yield ( Columns( [ @@ -641,13 +769,12 @@ class Traceback: if __name__ == "__main__": # pragma: no cover - - from .console import Console - - console = Console() + install(show_locals=True) import sys - def bar(a: Any) -> None: # 这是对亚洲语言支持的测试。面对模棱两可的想法,拒绝猜测的诱惑 + def bar( + a: Any, + ) -> None: # 这是对亚洲语言支持的测试。面对模棱两可的想法,拒绝猜测的诱惑 one = 1 print(one / a) @@ -665,13 +792,6 @@ if __name__ == "__main__": # pragma: no cover bar(a) def error() -> None: - - try: - try: - foo(0) - except: - slfkjsldkfj # type: ignore[name-defined] - except: - console.print_exception(show_locals=True) + foo(0) error() diff --git a/gestao_raul/Lib/site-packages/pip/_vendor/rich/tree.py b/gestao_raul/Lib/site-packages/pip/_vendor/rich/tree.py index afe8da1..27c5cf7 100644 --- a/gestao_raul/Lib/site-packages/pip/_vendor/rich/tree.py +++ b/gestao_raul/Lib/site-packages/pip/_vendor/rich/tree.py @@ -8,18 +8,32 @@ from .segment import Segment from .style import Style, StyleStack, StyleType from .styled import Styled +GuideType = Tuple[str, str, str, str] + class Tree(JupyterMixin): """A renderable for a tree structure. + Attributes: + ASCII_GUIDES (GuideType): Guide lines used when Console.ascii_only is True. + TREE_GUIDES (List[GuideType, GuideType, GuideType]): Default guide lines. + Args: label (RenderableType): The renderable or str for the tree label. style (StyleType, optional): Style of this tree. Defaults to "tree". guide_style (StyleType, optional): Style of the guide lines. Defaults to "tree.line". expanded (bool, optional): Also display children. Defaults to True. highlight (bool, optional): Highlight renderable (if str). Defaults to False. + hide_root (bool, optional): Hide the root node. Defaults to False. """ + ASCII_GUIDES = (" ", "| ", "+-- ", "`-- ") + TREE_GUIDES = [ + (" ", "│ ", "├── ", "└── "), + (" ", "┃ ", "┣━━ ", "┗━━ "), + (" ", "║ ", "╠══ ", "╚══ "), + ] + def __init__( self, label: RenderableType, @@ -72,7 +86,6 @@ class Tree(JupyterMixin): def __rich_console__( self, console: "Console", options: "ConsoleOptions" ) -> "RenderResult": - stack: List[Iterator[Tuple[bool, Tree]]] = [] pop = stack.pop push = stack.append @@ -83,21 +96,15 @@ class Tree(JupyterMixin): guide_style = get_style(self.guide_style, default="") or null_style SPACE, CONTINUE, FORK, END = range(4) - ASCII_GUIDES = (" ", "| ", "+-- ", "`-- ") - TREE_GUIDES = [ - (" ", "│ ", "├── ", "└── "), - (" ", "┃ ", "┣━━ ", "┗━━ "), - (" ", "║ ", "╠══ ", "╚══ "), - ] _Segment = Segment def make_guide(index: int, style: Style) -> Segment: """Make a Segment for a level of the guide lines.""" if options.ascii_only: - line = ASCII_GUIDES[index] + line = self.ASCII_GUIDES[index] else: guide = 1 if style.bold else (2 if style.underline2 else 0) - line = TREE_GUIDES[0 if options.legacy_windows else guide][index] + line = self.TREE_GUIDES[0 if options.legacy_windows else guide][index] return _Segment(line, style) levels: List[Segment] = [make_guide(CONTINUE, guide_style)] @@ -195,7 +202,6 @@ class Tree(JupyterMixin): if __name__ == "__main__": # pragma: no cover - from pip._vendor.rich.console import Group from pip._vendor.rich.markdown import Markdown from pip._vendor.rich.panel import Panel diff --git a/gestao_raul/Lib/site-packages/pip/_vendor/six.py b/gestao_raul/Lib/site-packages/pip/_vendor/six.py deleted file mode 100644 index 4e15675..0000000 --- a/gestao_raul/Lib/site-packages/pip/_vendor/six.py +++ /dev/null @@ -1,998 +0,0 @@ -# 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. - -"""Utilities for writing code that runs on Python 2 and 3""" - -from __future__ import absolute_import - -import functools -import itertools -import operator -import sys -import types - -__author__ = "Benjamin Peterson " -__version__ = "1.16.0" - - -# Useful for very coarse version differentiation. -PY2 = sys.version_info[0] == 2 -PY3 = sys.version_info[0] == 3 -PY34 = sys.version_info[0:2] >= (3, 4) - -if PY3: - string_types = str, - integer_types = int, - class_types = type, - text_type = str - binary_type = bytes - - MAXSIZE = sys.maxsize -else: - string_types = basestring, - integer_types = (int, long) - class_types = (type, types.ClassType) - text_type = unicode - binary_type = str - - if sys.platform.startswith("java"): - # Jython always uses 32 bits. - MAXSIZE = int((1 << 31) - 1) - else: - # It's possible to have sizeof(long) != sizeof(Py_ssize_t). - class X(object): - - def __len__(self): - return 1 << 31 - try: - len(X()) - except OverflowError: - # 32-bit - MAXSIZE = int((1 << 31) - 1) - else: - # 64-bit - MAXSIZE = int((1 << 63) - 1) - del X - -if PY34: - from importlib.util import spec_from_loader -else: - spec_from_loader = None - - -def _add_doc(func, doc): - """Add documentation to a function.""" - func.__doc__ = doc - - -def _import_module(name): - """Import module, returning the module after the last dot.""" - __import__(name) - return sys.modules[name] - - -class _LazyDescr(object): - - def __init__(self, name): - self.name = name - - def __get__(self, obj, tp): - result = self._resolve() - setattr(obj, self.name, result) # Invokes __set__. - try: - # This is a bit ugly, but it avoids running this again by - # removing this descriptor. - delattr(obj.__class__, self.name) - except AttributeError: - pass - return result - - -class MovedModule(_LazyDescr): - - def __init__(self, name, old, new=None): - super(MovedModule, self).__init__(name) - if PY3: - if new is None: - new = name - self.mod = new - else: - self.mod = old - - def _resolve(self): - return _import_module(self.mod) - - def __getattr__(self, attr): - _module = self._resolve() - value = getattr(_module, attr) - setattr(self, attr, value) - return value - - -class _LazyModule(types.ModuleType): - - def __init__(self, name): - super(_LazyModule, self).__init__(name) - self.__doc__ = self.__class__.__doc__ - - def __dir__(self): - attrs = ["__doc__", "__name__"] - attrs += [attr.name for attr in self._moved_attributes] - return attrs - - # Subclasses should override this - _moved_attributes = [] - - -class MovedAttribute(_LazyDescr): - - def __init__(self, name, old_mod, new_mod, old_attr=None, new_attr=None): - super(MovedAttribute, self).__init__(name) - if PY3: - if new_mod is None: - new_mod = name - self.mod = new_mod - if new_attr is None: - if old_attr is None: - new_attr = name - else: - new_attr = old_attr - self.attr = new_attr - else: - self.mod = old_mod - if old_attr is None: - old_attr = name - self.attr = old_attr - - def _resolve(self): - module = _import_module(self.mod) - return getattr(module, self.attr) - - -class _SixMetaPathImporter(object): - - """ - A meta path importer to import six.moves and its submodules. - - This class implements a PEP302 finder and loader. It should be compatible - with Python 2.5 and all existing versions of Python3 - """ - - def __init__(self, six_module_name): - self.name = six_module_name - self.known_modules = {} - - def _add_module(self, mod, *fullnames): - for fullname in fullnames: - self.known_modules[self.name + "." + fullname] = mod - - def _get_module(self, fullname): - return self.known_modules[self.name + "." + fullname] - - def find_module(self, fullname, path=None): - if fullname in self.known_modules: - return self - return None - - def find_spec(self, fullname, path, target=None): - if fullname in self.known_modules: - return spec_from_loader(fullname, self) - return None - - def __get_module(self, fullname): - try: - return self.known_modules[fullname] - except KeyError: - raise ImportError("This loader does not know module " + fullname) - - def load_module(self, fullname): - try: - # in case of a reload - return sys.modules[fullname] - except KeyError: - pass - mod = self.__get_module(fullname) - if isinstance(mod, MovedModule): - mod = mod._resolve() - else: - mod.__loader__ = self - sys.modules[fullname] = mod - return mod - - def is_package(self, fullname): - """ - Return true, if the named module is a package. - - We need this method to get correct spec objects with - Python 3.4 (see PEP451) - """ - return hasattr(self.__get_module(fullname), "__path__") - - def get_code(self, fullname): - """Return None - - Required, if is_package is implemented""" - self.__get_module(fullname) # eventually raises ImportError - return None - get_source = get_code # same as get_code - - def create_module(self, spec): - return self.load_module(spec.name) - - def exec_module(self, module): - pass - -_importer = _SixMetaPathImporter(__name__) - - -class _MovedItems(_LazyModule): - - """Lazy loading of moved objects""" - __path__ = [] # mark as package - - -_moved_attributes = [ - MovedAttribute("cStringIO", "cStringIO", "io", "StringIO"), - MovedAttribute("filter", "itertools", "builtins", "ifilter", "filter"), - MovedAttribute("filterfalse", "itertools", "itertools", "ifilterfalse", "filterfalse"), - MovedAttribute("input", "__builtin__", "builtins", "raw_input", "input"), - MovedAttribute("intern", "__builtin__", "sys"), - MovedAttribute("map", "itertools", "builtins", "imap", "map"), - MovedAttribute("getcwd", "os", "os", "getcwdu", "getcwd"), - MovedAttribute("getcwdb", "os", "os", "getcwd", "getcwdb"), - MovedAttribute("getoutput", "commands", "subprocess"), - MovedAttribute("range", "__builtin__", "builtins", "xrange", "range"), - MovedAttribute("reload_module", "__builtin__", "importlib" if PY34 else "imp", "reload"), - MovedAttribute("reduce", "__builtin__", "functools"), - MovedAttribute("shlex_quote", "pipes", "shlex", "quote"), - MovedAttribute("StringIO", "StringIO", "io"), - MovedAttribute("UserDict", "UserDict", "collections"), - MovedAttribute("UserList", "UserList", "collections"), - MovedAttribute("UserString", "UserString", "collections"), - MovedAttribute("xrange", "__builtin__", "builtins", "xrange", "range"), - MovedAttribute("zip", "itertools", "builtins", "izip", "zip"), - MovedAttribute("zip_longest", "itertools", "itertools", "izip_longest", "zip_longest"), - MovedModule("builtins", "__builtin__"), - MovedModule("configparser", "ConfigParser"), - MovedModule("collections_abc", "collections", "collections.abc" if sys.version_info >= (3, 3) else "collections"), - MovedModule("copyreg", "copy_reg"), - MovedModule("dbm_gnu", "gdbm", "dbm.gnu"), - MovedModule("dbm_ndbm", "dbm", "dbm.ndbm"), - MovedModule("_dummy_thread", "dummy_thread", "_dummy_thread" if sys.version_info < (3, 9) else "_thread"), - MovedModule("http_cookiejar", "cookielib", "http.cookiejar"), - MovedModule("http_cookies", "Cookie", "http.cookies"), - MovedModule("html_entities", "htmlentitydefs", "html.entities"), - MovedModule("html_parser", "HTMLParser", "html.parser"), - MovedModule("http_client", "httplib", "http.client"), - MovedModule("email_mime_base", "email.MIMEBase", "email.mime.base"), - MovedModule("email_mime_image", "email.MIMEImage", "email.mime.image"), - MovedModule("email_mime_multipart", "email.MIMEMultipart", "email.mime.multipart"), - MovedModule("email_mime_nonmultipart", "email.MIMENonMultipart", "email.mime.nonmultipart"), - MovedModule("email_mime_text", "email.MIMEText", "email.mime.text"), - MovedModule("BaseHTTPServer", "BaseHTTPServer", "http.server"), - MovedModule("CGIHTTPServer", "CGIHTTPServer", "http.server"), - MovedModule("SimpleHTTPServer", "SimpleHTTPServer", "http.server"), - MovedModule("cPickle", "cPickle", "pickle"), - MovedModule("queue", "Queue"), - MovedModule("reprlib", "repr"), - MovedModule("socketserver", "SocketServer"), - MovedModule("_thread", "thread", "_thread"), - MovedModule("tkinter", "Tkinter"), - MovedModule("tkinter_dialog", "Dialog", "tkinter.dialog"), - MovedModule("tkinter_filedialog", "FileDialog", "tkinter.filedialog"), - MovedModule("tkinter_scrolledtext", "ScrolledText", "tkinter.scrolledtext"), - MovedModule("tkinter_simpledialog", "SimpleDialog", "tkinter.simpledialog"), - MovedModule("tkinter_tix", "Tix", "tkinter.tix"), - MovedModule("tkinter_ttk", "ttk", "tkinter.ttk"), - MovedModule("tkinter_constants", "Tkconstants", "tkinter.constants"), - MovedModule("tkinter_dnd", "Tkdnd", "tkinter.dnd"), - MovedModule("tkinter_colorchooser", "tkColorChooser", - "tkinter.colorchooser"), - MovedModule("tkinter_commondialog", "tkCommonDialog", - "tkinter.commondialog"), - MovedModule("tkinter_tkfiledialog", "tkFileDialog", "tkinter.filedialog"), - MovedModule("tkinter_font", "tkFont", "tkinter.font"), - MovedModule("tkinter_messagebox", "tkMessageBox", "tkinter.messagebox"), - MovedModule("tkinter_tksimpledialog", "tkSimpleDialog", - "tkinter.simpledialog"), - MovedModule("urllib_parse", __name__ + ".moves.urllib_parse", "urllib.parse"), - MovedModule("urllib_error", __name__ + ".moves.urllib_error", "urllib.error"), - MovedModule("urllib", __name__ + ".moves.urllib", __name__ + ".moves.urllib"), - MovedModule("urllib_robotparser", "robotparser", "urllib.robotparser"), - MovedModule("xmlrpc_client", "xmlrpclib", "xmlrpc.client"), - MovedModule("xmlrpc_server", "SimpleXMLRPCServer", "xmlrpc.server"), -] -# Add windows specific modules. -if sys.platform == "win32": - _moved_attributes += [ - MovedModule("winreg", "_winreg"), - ] - -for attr in _moved_attributes: - setattr(_MovedItems, attr.name, attr) - if isinstance(attr, MovedModule): - _importer._add_module(attr, "moves." + attr.name) -del attr - -_MovedItems._moved_attributes = _moved_attributes - -moves = _MovedItems(__name__ + ".moves") -_importer._add_module(moves, "moves") - - -class Module_six_moves_urllib_parse(_LazyModule): - - """Lazy loading of moved objects in six.moves.urllib_parse""" - - -_urllib_parse_moved_attributes = [ - MovedAttribute("ParseResult", "urlparse", "urllib.parse"), - MovedAttribute("SplitResult", "urlparse", "urllib.parse"), - MovedAttribute("parse_qs", "urlparse", "urllib.parse"), - MovedAttribute("parse_qsl", "urlparse", "urllib.parse"), - MovedAttribute("urldefrag", "urlparse", "urllib.parse"), - MovedAttribute("urljoin", "urlparse", "urllib.parse"), - MovedAttribute("urlparse", "urlparse", "urllib.parse"), - MovedAttribute("urlsplit", "urlparse", "urllib.parse"), - MovedAttribute("urlunparse", "urlparse", "urllib.parse"), - MovedAttribute("urlunsplit", "urlparse", "urllib.parse"), - MovedAttribute("quote", "urllib", "urllib.parse"), - MovedAttribute("quote_plus", "urllib", "urllib.parse"), - MovedAttribute("unquote", "urllib", "urllib.parse"), - MovedAttribute("unquote_plus", "urllib", "urllib.parse"), - MovedAttribute("unquote_to_bytes", "urllib", "urllib.parse", "unquote", "unquote_to_bytes"), - MovedAttribute("urlencode", "urllib", "urllib.parse"), - MovedAttribute("splitquery", "urllib", "urllib.parse"), - MovedAttribute("splittag", "urllib", "urllib.parse"), - MovedAttribute("splituser", "urllib", "urllib.parse"), - MovedAttribute("splitvalue", "urllib", "urllib.parse"), - MovedAttribute("uses_fragment", "urlparse", "urllib.parse"), - MovedAttribute("uses_netloc", "urlparse", "urllib.parse"), - MovedAttribute("uses_params", "urlparse", "urllib.parse"), - MovedAttribute("uses_query", "urlparse", "urllib.parse"), - MovedAttribute("uses_relative", "urlparse", "urllib.parse"), -] -for attr in _urllib_parse_moved_attributes: - setattr(Module_six_moves_urllib_parse, attr.name, attr) -del attr - -Module_six_moves_urllib_parse._moved_attributes = _urllib_parse_moved_attributes - -_importer._add_module(Module_six_moves_urllib_parse(__name__ + ".moves.urllib_parse"), - "moves.urllib_parse", "moves.urllib.parse") - - -class Module_six_moves_urllib_error(_LazyModule): - - """Lazy loading of moved objects in six.moves.urllib_error""" - - -_urllib_error_moved_attributes = [ - MovedAttribute("URLError", "urllib2", "urllib.error"), - MovedAttribute("HTTPError", "urllib2", "urllib.error"), - MovedAttribute("ContentTooShortError", "urllib", "urllib.error"), -] -for attr in _urllib_error_moved_attributes: - setattr(Module_six_moves_urllib_error, attr.name, attr) -del attr - -Module_six_moves_urllib_error._moved_attributes = _urllib_error_moved_attributes - -_importer._add_module(Module_six_moves_urllib_error(__name__ + ".moves.urllib.error"), - "moves.urllib_error", "moves.urllib.error") - - -class Module_six_moves_urllib_request(_LazyModule): - - """Lazy loading of moved objects in six.moves.urllib_request""" - - -_urllib_request_moved_attributes = [ - MovedAttribute("urlopen", "urllib2", "urllib.request"), - MovedAttribute("install_opener", "urllib2", "urllib.request"), - MovedAttribute("build_opener", "urllib2", "urllib.request"), - MovedAttribute("pathname2url", "urllib", "urllib.request"), - MovedAttribute("url2pathname", "urllib", "urllib.request"), - MovedAttribute("getproxies", "urllib", "urllib.request"), - MovedAttribute("Request", "urllib2", "urllib.request"), - MovedAttribute("OpenerDirector", "urllib2", "urllib.request"), - MovedAttribute("HTTPDefaultErrorHandler", "urllib2", "urllib.request"), - MovedAttribute("HTTPRedirectHandler", "urllib2", "urllib.request"), - MovedAttribute("HTTPCookieProcessor", "urllib2", "urllib.request"), - MovedAttribute("ProxyHandler", "urllib2", "urllib.request"), - MovedAttribute("BaseHandler", "urllib2", "urllib.request"), - MovedAttribute("HTTPPasswordMgr", "urllib2", "urllib.request"), - MovedAttribute("HTTPPasswordMgrWithDefaultRealm", "urllib2", "urllib.request"), - MovedAttribute("AbstractBasicAuthHandler", "urllib2", "urllib.request"), - MovedAttribute("HTTPBasicAuthHandler", "urllib2", "urllib.request"), - MovedAttribute("ProxyBasicAuthHandler", "urllib2", "urllib.request"), - MovedAttribute("AbstractDigestAuthHandler", "urllib2", "urllib.request"), - MovedAttribute("HTTPDigestAuthHandler", "urllib2", "urllib.request"), - MovedAttribute("ProxyDigestAuthHandler", "urllib2", "urllib.request"), - MovedAttribute("HTTPHandler", "urllib2", "urllib.request"), - MovedAttribute("HTTPSHandler", "urllib2", "urllib.request"), - MovedAttribute("FileHandler", "urllib2", "urllib.request"), - MovedAttribute("FTPHandler", "urllib2", "urllib.request"), - MovedAttribute("CacheFTPHandler", "urllib2", "urllib.request"), - MovedAttribute("UnknownHandler", "urllib2", "urllib.request"), - MovedAttribute("HTTPErrorProcessor", "urllib2", "urllib.request"), - MovedAttribute("urlretrieve", "urllib", "urllib.request"), - MovedAttribute("urlcleanup", "urllib", "urllib.request"), - MovedAttribute("URLopener", "urllib", "urllib.request"), - MovedAttribute("FancyURLopener", "urllib", "urllib.request"), - MovedAttribute("proxy_bypass", "urllib", "urllib.request"), - MovedAttribute("parse_http_list", "urllib2", "urllib.request"), - MovedAttribute("parse_keqv_list", "urllib2", "urllib.request"), -] -for attr in _urllib_request_moved_attributes: - setattr(Module_six_moves_urllib_request, attr.name, attr) -del attr - -Module_six_moves_urllib_request._moved_attributes = _urllib_request_moved_attributes - -_importer._add_module(Module_six_moves_urllib_request(__name__ + ".moves.urllib.request"), - "moves.urllib_request", "moves.urllib.request") - - -class Module_six_moves_urllib_response(_LazyModule): - - """Lazy loading of moved objects in six.moves.urllib_response""" - - -_urllib_response_moved_attributes = [ - MovedAttribute("addbase", "urllib", "urllib.response"), - MovedAttribute("addclosehook", "urllib", "urllib.response"), - MovedAttribute("addinfo", "urllib", "urllib.response"), - MovedAttribute("addinfourl", "urllib", "urllib.response"), -] -for attr in _urllib_response_moved_attributes: - setattr(Module_six_moves_urllib_response, attr.name, attr) -del attr - -Module_six_moves_urllib_response._moved_attributes = _urllib_response_moved_attributes - -_importer._add_module(Module_six_moves_urllib_response(__name__ + ".moves.urllib.response"), - "moves.urllib_response", "moves.urllib.response") - - -class Module_six_moves_urllib_robotparser(_LazyModule): - - """Lazy loading of moved objects in six.moves.urllib_robotparser""" - - -_urllib_robotparser_moved_attributes = [ - MovedAttribute("RobotFileParser", "robotparser", "urllib.robotparser"), -] -for attr in _urllib_robotparser_moved_attributes: - setattr(Module_six_moves_urllib_robotparser, attr.name, attr) -del attr - -Module_six_moves_urllib_robotparser._moved_attributes = _urllib_robotparser_moved_attributes - -_importer._add_module(Module_six_moves_urllib_robotparser(__name__ + ".moves.urllib.robotparser"), - "moves.urllib_robotparser", "moves.urllib.robotparser") - - -class Module_six_moves_urllib(types.ModuleType): - - """Create a six.moves.urllib namespace that resembles the Python 3 namespace""" - __path__ = [] # mark as package - parse = _importer._get_module("moves.urllib_parse") - error = _importer._get_module("moves.urllib_error") - request = _importer._get_module("moves.urllib_request") - response = _importer._get_module("moves.urllib_response") - robotparser = _importer._get_module("moves.urllib_robotparser") - - def __dir__(self): - return ['parse', 'error', 'request', 'response', 'robotparser'] - -_importer._add_module(Module_six_moves_urllib(__name__ + ".moves.urllib"), - "moves.urllib") - - -def add_move(move): - """Add an item to six.moves.""" - setattr(_MovedItems, move.name, move) - - -def remove_move(name): - """Remove item from six.moves.""" - try: - delattr(_MovedItems, name) - except AttributeError: - try: - del moves.__dict__[name] - except KeyError: - raise AttributeError("no such move, %r" % (name,)) - - -if PY3: - _meth_func = "__func__" - _meth_self = "__self__" - - _func_closure = "__closure__" - _func_code = "__code__" - _func_defaults = "__defaults__" - _func_globals = "__globals__" -else: - _meth_func = "im_func" - _meth_self = "im_self" - - _func_closure = "func_closure" - _func_code = "func_code" - _func_defaults = "func_defaults" - _func_globals = "func_globals" - - -try: - advance_iterator = next -except NameError: - def advance_iterator(it): - return it.next() -next = advance_iterator - - -try: - callable = callable -except NameError: - def callable(obj): - return any("__call__" in klass.__dict__ for klass in type(obj).__mro__) - - -if PY3: - def get_unbound_function(unbound): - return unbound - - create_bound_method = types.MethodType - - def create_unbound_method(func, cls): - return func - - Iterator = object -else: - def get_unbound_function(unbound): - return unbound.im_func - - def create_bound_method(func, obj): - return types.MethodType(func, obj, obj.__class__) - - def create_unbound_method(func, cls): - return types.MethodType(func, None, cls) - - class Iterator(object): - - def next(self): - return type(self).__next__(self) - - callable = callable -_add_doc(get_unbound_function, - """Get the function out of a possibly unbound function""") - - -get_method_function = operator.attrgetter(_meth_func) -get_method_self = operator.attrgetter(_meth_self) -get_function_closure = operator.attrgetter(_func_closure) -get_function_code = operator.attrgetter(_func_code) -get_function_defaults = operator.attrgetter(_func_defaults) -get_function_globals = operator.attrgetter(_func_globals) - - -if PY3: - def iterkeys(d, **kw): - return iter(d.keys(**kw)) - - def itervalues(d, **kw): - return iter(d.values(**kw)) - - def iteritems(d, **kw): - return iter(d.items(**kw)) - - def iterlists(d, **kw): - return iter(d.lists(**kw)) - - viewkeys = operator.methodcaller("keys") - - viewvalues = operator.methodcaller("values") - - viewitems = operator.methodcaller("items") -else: - def iterkeys(d, **kw): - return d.iterkeys(**kw) - - def itervalues(d, **kw): - return d.itervalues(**kw) - - def iteritems(d, **kw): - return d.iteritems(**kw) - - def iterlists(d, **kw): - return d.iterlists(**kw) - - viewkeys = operator.methodcaller("viewkeys") - - viewvalues = operator.methodcaller("viewvalues") - - viewitems = operator.methodcaller("viewitems") - -_add_doc(iterkeys, "Return an iterator over the keys of a dictionary.") -_add_doc(itervalues, "Return an iterator over the values of a dictionary.") -_add_doc(iteritems, - "Return an iterator over the (key, value) pairs of a dictionary.") -_add_doc(iterlists, - "Return an iterator over the (key, [values]) pairs of a dictionary.") - - -if PY3: - def b(s): - return s.encode("latin-1") - - def u(s): - return s - unichr = chr - import struct - int2byte = struct.Struct(">B").pack - del struct - byte2int = operator.itemgetter(0) - indexbytes = operator.getitem - iterbytes = iter - import io - StringIO = io.StringIO - BytesIO = io.BytesIO - del io - _assertCountEqual = "assertCountEqual" - if sys.version_info[1] <= 1: - _assertRaisesRegex = "assertRaisesRegexp" - _assertRegex = "assertRegexpMatches" - _assertNotRegex = "assertNotRegexpMatches" - else: - _assertRaisesRegex = "assertRaisesRegex" - _assertRegex = "assertRegex" - _assertNotRegex = "assertNotRegex" -else: - def b(s): - return s - # Workaround for standalone backslash - - def u(s): - return unicode(s.replace(r'\\', r'\\\\'), "unicode_escape") - unichr = unichr - int2byte = chr - - def byte2int(bs): - return ord(bs[0]) - - def indexbytes(buf, i): - return ord(buf[i]) - iterbytes = functools.partial(itertools.imap, ord) - import StringIO - StringIO = BytesIO = StringIO.StringIO - _assertCountEqual = "assertItemsEqual" - _assertRaisesRegex = "assertRaisesRegexp" - _assertRegex = "assertRegexpMatches" - _assertNotRegex = "assertNotRegexpMatches" -_add_doc(b, """Byte literal""") -_add_doc(u, """Text literal""") - - -def assertCountEqual(self, *args, **kwargs): - return getattr(self, _assertCountEqual)(*args, **kwargs) - - -def assertRaisesRegex(self, *args, **kwargs): - return getattr(self, _assertRaisesRegex)(*args, **kwargs) - - -def assertRegex(self, *args, **kwargs): - return getattr(self, _assertRegex)(*args, **kwargs) - - -def assertNotRegex(self, *args, **kwargs): - return getattr(self, _assertNotRegex)(*args, **kwargs) - - -if PY3: - exec_ = getattr(moves.builtins, "exec") - - def reraise(tp, value, tb=None): - try: - if value is None: - value = tp() - if value.__traceback__ is not tb: - raise value.with_traceback(tb) - raise value - finally: - value = None - tb = None - -else: - def exec_(_code_, _globs_=None, _locs_=None): - """Execute code in a namespace.""" - if _globs_ is None: - frame = sys._getframe(1) - _globs_ = frame.f_globals - if _locs_ is None: - _locs_ = frame.f_locals - del frame - elif _locs_ is None: - _locs_ = _globs_ - exec("""exec _code_ in _globs_, _locs_""") - - exec_("""def reraise(tp, value, tb=None): - try: - raise tp, value, tb - finally: - tb = None -""") - - -if sys.version_info[:2] > (3,): - exec_("""def raise_from(value, from_value): - try: - raise value from from_value - finally: - value = None -""") -else: - def raise_from(value, from_value): - raise value - - -print_ = getattr(moves.builtins, "print", None) -if print_ is None: - def print_(*args, **kwargs): - """The new-style print function for Python 2.4 and 2.5.""" - fp = kwargs.pop("file", sys.stdout) - if fp is None: - return - - def write(data): - if not isinstance(data, basestring): - data = str(data) - # If the file has an encoding, encode unicode with it. - if (isinstance(fp, file) and - isinstance(data, unicode) and - fp.encoding is not None): - errors = getattr(fp, "errors", None) - if errors is None: - errors = "strict" - data = data.encode(fp.encoding, errors) - fp.write(data) - want_unicode = False - sep = kwargs.pop("sep", None) - if sep is not None: - if isinstance(sep, unicode): - want_unicode = True - elif not isinstance(sep, str): - raise TypeError("sep must be None or a string") - end = kwargs.pop("end", None) - if end is not None: - if isinstance(end, unicode): - want_unicode = True - elif not isinstance(end, str): - raise TypeError("end must be None or a string") - if kwargs: - raise TypeError("invalid keyword arguments to print()") - if not want_unicode: - for arg in args: - if isinstance(arg, unicode): - want_unicode = True - break - if want_unicode: - newline = unicode("\n") - space = unicode(" ") - else: - newline = "\n" - space = " " - if sep is None: - sep = space - if end is None: - end = newline - for i, arg in enumerate(args): - if i: - write(sep) - write(arg) - write(end) -if sys.version_info[:2] < (3, 3): - _print = print_ - - def print_(*args, **kwargs): - fp = kwargs.get("file", sys.stdout) - flush = kwargs.pop("flush", False) - _print(*args, **kwargs) - if flush and fp is not None: - fp.flush() - -_add_doc(reraise, """Reraise an exception.""") - -if sys.version_info[0:2] < (3, 4): - # This does exactly the same what the :func:`py3:functools.update_wrapper` - # function does on Python versions after 3.2. It sets the ``__wrapped__`` - # attribute on ``wrapper`` object and it doesn't raise an error if any of - # the attributes mentioned in ``assigned`` and ``updated`` are missing on - # ``wrapped`` object. - def _update_wrapper(wrapper, wrapped, - assigned=functools.WRAPPER_ASSIGNMENTS, - updated=functools.WRAPPER_UPDATES): - for attr in assigned: - try: - value = getattr(wrapped, attr) - except AttributeError: - continue - else: - setattr(wrapper, attr, value) - for attr in updated: - getattr(wrapper, attr).update(getattr(wrapped, attr, {})) - wrapper.__wrapped__ = wrapped - return wrapper - _update_wrapper.__doc__ = functools.update_wrapper.__doc__ - - def wraps(wrapped, assigned=functools.WRAPPER_ASSIGNMENTS, - updated=functools.WRAPPER_UPDATES): - return functools.partial(_update_wrapper, wrapped=wrapped, - assigned=assigned, updated=updated) - wraps.__doc__ = functools.wraps.__doc__ - -else: - wraps = functools.wraps - - -def with_metaclass(meta, *bases): - """Create a base class with a metaclass.""" - # This requires a bit of explanation: the basic idea is to make a dummy - # metaclass for one level of class instantiation that replaces itself with - # the actual metaclass. - class metaclass(type): - - def __new__(cls, name, this_bases, d): - if sys.version_info[:2] >= (3, 7): - # This version introduced PEP 560 that requires a bit - # of extra care (we mimic what is done by __build_class__). - resolved_bases = types.resolve_bases(bases) - if resolved_bases is not bases: - d['__orig_bases__'] = bases - else: - resolved_bases = bases - return meta(name, resolved_bases, d) - - @classmethod - def __prepare__(cls, name, this_bases): - return meta.__prepare__(name, bases) - return type.__new__(metaclass, 'temporary_class', (), {}) - - -def add_metaclass(metaclass): - """Class decorator for creating a class with a metaclass.""" - def wrapper(cls): - orig_vars = cls.__dict__.copy() - slots = orig_vars.get('__slots__') - if slots is not None: - if isinstance(slots, str): - slots = [slots] - for slots_var in slots: - orig_vars.pop(slots_var) - orig_vars.pop('__dict__', None) - orig_vars.pop('__weakref__', None) - if hasattr(cls, '__qualname__'): - orig_vars['__qualname__'] = cls.__qualname__ - return metaclass(cls.__name__, cls.__bases__, orig_vars) - return wrapper - - -def ensure_binary(s, encoding='utf-8', errors='strict'): - """Coerce **s** to six.binary_type. - - For Python 2: - - `unicode` -> encoded to `str` - - `str` -> `str` - - For Python 3: - - `str` -> encoded to `bytes` - - `bytes` -> `bytes` - """ - if isinstance(s, binary_type): - return s - if isinstance(s, text_type): - return s.encode(encoding, errors) - raise TypeError("not expecting type '%s'" % type(s)) - - -def ensure_str(s, encoding='utf-8', errors='strict'): - """Coerce *s* to `str`. - - For Python 2: - - `unicode` -> encoded to `str` - - `str` -> `str` - - For Python 3: - - `str` -> `str` - - `bytes` -> decoded to `str` - """ - # Optimization: Fast return for the common case. - if type(s) is str: - return s - if PY2 and isinstance(s, text_type): - return s.encode(encoding, errors) - elif PY3 and isinstance(s, binary_type): - return s.decode(encoding, errors) - elif not isinstance(s, (text_type, binary_type)): - raise TypeError("not expecting type '%s'" % type(s)) - return s - - -def ensure_text(s, encoding='utf-8', errors='strict'): - """Coerce *s* to six.text_type. - - For Python 2: - - `unicode` -> `unicode` - - `str` -> `unicode` - - For Python 3: - - `str` -> `str` - - `bytes` -> decoded to `str` - """ - if isinstance(s, binary_type): - return s.decode(encoding, errors) - elif isinstance(s, text_type): - return s - else: - raise TypeError("not expecting type '%s'" % type(s)) - - -def python_2_unicode_compatible(klass): - """ - A class decorator that defines __unicode__ and __str__ methods under Python 2. - Under Python 3 it does nothing. - - To support Python 2 and 3 with a single code base, define a __str__ method - returning text and apply this decorator to the class. - """ - if PY2: - if '__str__' not in klass.__dict__: - raise ValueError("@python_2_unicode_compatible cannot be applied " - "to %s because it doesn't define __str__()." % - klass.__name__) - klass.__unicode__ = klass.__str__ - klass.__str__ = lambda self: self.__unicode__().encode('utf-8') - return klass - - -# Complete the moves implementation. -# This code is at the end of this module to speed up module loading. -# Turn this module into a package. -__path__ = [] # required for PEP 302 and PEP 451 -__package__ = __name__ # see PEP 366 @ReservedAssignment -if globals().get("__spec__") is not None: - __spec__.submodule_search_locations = [] # PEP 451 @UndefinedVariable -# Remove other six meta path importers, since they cause problems. This can -# happen if six is removed from sys.modules and then reloaded. (Setuptools does -# this for some reason.) -if sys.meta_path: - for i, importer in enumerate(sys.meta_path): - # Here's some real nastiness: Another "instance" of the six module might - # be floating around. Therefore, we can't use isinstance() to check for - # the six meta path importer, since the other six instance will have - # inserted an importer with different class. - if (type(importer).__name__ == "_SixMetaPathImporter" and - importer.name == __name__): - del sys.meta_path[i] - break - del i, importer -# Finally, add the importer to the meta path import hook. -sys.meta_path.append(_importer) diff --git a/gestao_raul/Lib/site-packages/pip/_vendor/tenacity/__init__.py b/gestao_raul/Lib/site-packages/pip/_vendor/tenacity/__init__.py deleted file mode 100644 index ab3be3b..0000000 --- a/gestao_raul/Lib/site-packages/pip/_vendor/tenacity/__init__.py +++ /dev/null @@ -1,519 +0,0 @@ -# Copyright 2016-2018 Julien Danjou -# Copyright 2017 Elisey Zanko -# Copyright 2016 Étienne Bersac -# Copyright 2016 Joshua Harlow -# Copyright 2013-2014 Ray Holder -# -# 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 functools -import sys -import threading -import time -import typing as t -import warnings -from abc import ABC, abstractmethod -from concurrent import futures -from inspect import iscoroutinefunction - -# Import all built-in retry strategies for easier usage. -from .retry import retry_base # noqa -from .retry import retry_all # noqa -from .retry import retry_always # noqa -from .retry import retry_any # noqa -from .retry import retry_if_exception # noqa -from .retry import retry_if_exception_type # noqa -from .retry import retry_if_exception_cause_type # noqa -from .retry import retry_if_not_exception_type # noqa -from .retry import retry_if_not_result # noqa -from .retry import retry_if_result # noqa -from .retry import retry_never # noqa -from .retry import retry_unless_exception_type # noqa -from .retry import retry_if_exception_message # noqa -from .retry import retry_if_not_exception_message # noqa - -# Import all nap strategies for easier usage. -from .nap import sleep # noqa -from .nap import sleep_using_event # noqa - -# Import all built-in stop strategies for easier usage. -from .stop import stop_after_attempt # noqa -from .stop import stop_after_delay # noqa -from .stop import stop_all # noqa -from .stop import stop_any # noqa -from .stop import stop_never # noqa -from .stop import stop_when_event_set # noqa - -# Import all built-in wait strategies for easier usage. -from .wait import wait_chain # noqa -from .wait import wait_combine # noqa -from .wait import wait_exponential # noqa -from .wait import wait_fixed # noqa -from .wait import wait_incrementing # noqa -from .wait import wait_none # noqa -from .wait import wait_random # noqa -from .wait import wait_random_exponential # noqa -from .wait import wait_random_exponential as wait_full_jitter # noqa -from .wait import wait_exponential_jitter # noqa - -# Import all built-in before strategies for easier usage. -from .before import before_log # noqa -from .before import before_nothing # noqa - -# Import all built-in after strategies for easier usage. -from .after import after_log # noqa -from .after import after_nothing # noqa - -# Import all built-in after strategies for easier usage. -from .before_sleep import before_sleep_log # noqa -from .before_sleep import before_sleep_nothing # noqa - -# Replace a conditional import with a hard-coded None so that pip does -# not attempt to use tornado even if it is present in the environment. -# If tornado is non-None, tenacity will attempt to execute some code -# that is sensitive to the version of tornado, which could break pip -# if an old version is found. -tornado = None # type: ignore - -if t.TYPE_CHECKING: - import types - - from .wait import wait_base - from .stop import stop_base - - -WrappedFn = t.TypeVar("WrappedFn", bound=t.Callable) -_RetValT = t.TypeVar("_RetValT") - - -@t.overload -def retry(fn: WrappedFn) -> WrappedFn: - pass - - -@t.overload -def retry(*dargs: t.Any, **dkw: t.Any) -> t.Callable[[WrappedFn], WrappedFn]: # noqa - pass - - -def retry(*dargs: t.Any, **dkw: t.Any) -> t.Union[WrappedFn, t.Callable[[WrappedFn], WrappedFn]]: # noqa - """Wrap a function with a new `Retrying` object. - - :param dargs: positional arguments passed to Retrying object - :param dkw: keyword arguments passed to the Retrying object - """ - # support both @retry and @retry() as valid syntax - if len(dargs) == 1 and callable(dargs[0]): - return retry()(dargs[0]) - else: - - def wrap(f: WrappedFn) -> WrappedFn: - if isinstance(f, retry_base): - warnings.warn( - f"Got retry_base instance ({f.__class__.__name__}) as callable argument, " - f"this will probably hang indefinitely (did you mean retry={f.__class__.__name__}(...)?)" - ) - if iscoroutinefunction(f): - r: "BaseRetrying" = AsyncRetrying(*dargs, **dkw) - elif tornado and hasattr(tornado.gen, "is_coroutine_function") and tornado.gen.is_coroutine_function(f): - r = TornadoRetrying(*dargs, **dkw) - else: - r = Retrying(*dargs, **dkw) - - return r.wraps(f) - - return wrap - - -class TryAgain(Exception): - """Always retry the executed function when raised.""" - - -NO_RESULT = object() - - -class DoAttempt: - pass - - -class DoSleep(float): - pass - - -class BaseAction: - """Base class for representing actions to take by retry object. - - Concrete implementations must define: - - __init__: to initialize all necessary fields - - REPR_FIELDS: class variable specifying attributes to include in repr(self) - - NAME: for identification in retry object methods and callbacks - """ - - REPR_FIELDS: t.Sequence[str] = () - NAME: t.Optional[str] = None - - def __repr__(self) -> str: - state_str = ", ".join(f"{field}={getattr(self, field)!r}" for field in self.REPR_FIELDS) - return f"{self.__class__.__name__}({state_str})" - - def __str__(self) -> str: - return repr(self) - - -class RetryAction(BaseAction): - REPR_FIELDS = ("sleep",) - NAME = "retry" - - def __init__(self, sleep: t.SupportsFloat) -> None: - self.sleep = float(sleep) - - -_unset = object() - - -def _first_set(first: t.Union[t.Any, object], second: t.Any) -> t.Any: - return second if first is _unset else first - - -class RetryError(Exception): - """Encapsulates the last attempt instance right before giving up.""" - - def __init__(self, last_attempt: "Future") -> None: - self.last_attempt = last_attempt - super().__init__(last_attempt) - - def reraise(self) -> "t.NoReturn": - if self.last_attempt.failed: - raise self.last_attempt.result() - raise self - - def __str__(self) -> str: - return f"{self.__class__.__name__}[{self.last_attempt}]" - - -class AttemptManager: - """Manage attempt context.""" - - def __init__(self, retry_state: "RetryCallState"): - self.retry_state = retry_state - - def __enter__(self) -> None: - pass - - def __exit__( - self, - exc_type: t.Optional[t.Type[BaseException]], - exc_value: t.Optional[BaseException], - traceback: t.Optional["types.TracebackType"], - ) -> t.Optional[bool]: - if isinstance(exc_value, BaseException): - self.retry_state.set_exception((exc_type, exc_value, traceback)) - return True # Swallow exception. - else: - # We don't have the result, actually. - self.retry_state.set_result(None) - return None - - -class BaseRetrying(ABC): - def __init__( - self, - sleep: t.Callable[[t.Union[int, float]], None] = sleep, - stop: "stop_base" = stop_never, - wait: "wait_base" = wait_none(), - retry: retry_base = retry_if_exception_type(), - before: t.Callable[["RetryCallState"], None] = before_nothing, - after: t.Callable[["RetryCallState"], None] = after_nothing, - before_sleep: t.Optional[t.Callable[["RetryCallState"], None]] = None, - reraise: bool = False, - retry_error_cls: t.Type[RetryError] = RetryError, - retry_error_callback: t.Optional[t.Callable[["RetryCallState"], t.Any]] = None, - ): - self.sleep = sleep - self.stop = stop - self.wait = wait - self.retry = retry - self.before = before - self.after = after - self.before_sleep = before_sleep - self.reraise = reraise - self._local = threading.local() - self.retry_error_cls = retry_error_cls - self.retry_error_callback = retry_error_callback - - def copy( - self, - sleep: t.Union[t.Callable[[t.Union[int, float]], None], object] = _unset, - stop: t.Union["stop_base", object] = _unset, - wait: t.Union["wait_base", object] = _unset, - retry: t.Union[retry_base, object] = _unset, - before: t.Union[t.Callable[["RetryCallState"], None], object] = _unset, - after: t.Union[t.Callable[["RetryCallState"], None], object] = _unset, - before_sleep: t.Union[t.Optional[t.Callable[["RetryCallState"], None]], object] = _unset, - reraise: t.Union[bool, object] = _unset, - retry_error_cls: t.Union[t.Type[RetryError], object] = _unset, - retry_error_callback: t.Union[t.Optional[t.Callable[["RetryCallState"], t.Any]], object] = _unset, - ) -> "BaseRetrying": - """Copy this object with some parameters changed if needed.""" - return self.__class__( - sleep=_first_set(sleep, self.sleep), - stop=_first_set(stop, self.stop), - wait=_first_set(wait, self.wait), - retry=_first_set(retry, self.retry), - before=_first_set(before, self.before), - after=_first_set(after, self.after), - before_sleep=_first_set(before_sleep, self.before_sleep), - reraise=_first_set(reraise, self.reraise), - retry_error_cls=_first_set(retry_error_cls, self.retry_error_cls), - retry_error_callback=_first_set(retry_error_callback, self.retry_error_callback), - ) - - def __repr__(self) -> str: - return ( - f"<{self.__class__.__name__} object at 0x{id(self):x} (" - f"stop={self.stop}, " - f"wait={self.wait}, " - f"sleep={self.sleep}, " - f"retry={self.retry}, " - f"before={self.before}, " - f"after={self.after})>" - ) - - @property - def statistics(self) -> t.Dict[str, t.Any]: - """Return a dictionary of runtime statistics. - - This dictionary will be empty when the controller has never been - ran. When it is running or has ran previously it should have (but - may not) have useful and/or informational keys and values when - running is underway and/or completed. - - .. warning:: The keys in this dictionary **should** be some what - stable (not changing), but there existence **may** - change between major releases as new statistics are - gathered or removed so before accessing keys ensure that - they actually exist and handle when they do not. - - .. note:: The values in this dictionary are local to the thread - running call (so if multiple threads share the same retrying - object - either directly or indirectly) they will each have - there own view of statistics they have collected (in the - future we may provide a way to aggregate the various - statistics from each thread). - """ - try: - return self._local.statistics - except AttributeError: - self._local.statistics = {} - return self._local.statistics - - def wraps(self, f: WrappedFn) -> WrappedFn: - """Wrap a function for retrying. - - :param f: A function to wraps for retrying. - """ - - @functools.wraps(f) - def wrapped_f(*args: t.Any, **kw: t.Any) -> t.Any: - return self(f, *args, **kw) - - def retry_with(*args: t.Any, **kwargs: t.Any) -> WrappedFn: - return self.copy(*args, **kwargs).wraps(f) - - wrapped_f.retry = self - wrapped_f.retry_with = retry_with - - return wrapped_f - - def begin(self) -> None: - self.statistics.clear() - self.statistics["start_time"] = time.monotonic() - self.statistics["attempt_number"] = 1 - self.statistics["idle_for"] = 0 - - def iter(self, retry_state: "RetryCallState") -> t.Union[DoAttempt, DoSleep, t.Any]: # noqa - fut = retry_state.outcome - if fut is None: - if self.before is not None: - self.before(retry_state) - return DoAttempt() - - is_explicit_retry = retry_state.outcome.failed and isinstance(retry_state.outcome.exception(), TryAgain) - if not (is_explicit_retry or self.retry(retry_state=retry_state)): - return fut.result() - - if self.after is not None: - self.after(retry_state) - - self.statistics["delay_since_first_attempt"] = retry_state.seconds_since_start - if self.stop(retry_state=retry_state): - if self.retry_error_callback: - return self.retry_error_callback(retry_state) - retry_exc = self.retry_error_cls(fut) - if self.reraise: - raise retry_exc.reraise() - raise retry_exc from fut.exception() - - if self.wait: - sleep = self.wait(retry_state=retry_state) - else: - sleep = 0.0 - retry_state.next_action = RetryAction(sleep) - retry_state.idle_for += sleep - self.statistics["idle_for"] += sleep - self.statistics["attempt_number"] += 1 - - if self.before_sleep is not None: - self.before_sleep(retry_state) - - return DoSleep(sleep) - - def __iter__(self) -> t.Generator[AttemptManager, None, None]: - self.begin() - - retry_state = RetryCallState(self, fn=None, args=(), kwargs={}) - while True: - do = self.iter(retry_state=retry_state) - if isinstance(do, DoAttempt): - yield AttemptManager(retry_state=retry_state) - elif isinstance(do, DoSleep): - retry_state.prepare_for_next_attempt() - self.sleep(do) - else: - break - - @abstractmethod - def __call__(self, fn: t.Callable[..., _RetValT], *args: t.Any, **kwargs: t.Any) -> _RetValT: - pass - - -class Retrying(BaseRetrying): - """Retrying controller.""" - - def __call__(self, fn: t.Callable[..., _RetValT], *args: t.Any, **kwargs: t.Any) -> _RetValT: - self.begin() - - retry_state = RetryCallState(retry_object=self, fn=fn, args=args, kwargs=kwargs) - while True: - do = self.iter(retry_state=retry_state) - if isinstance(do, DoAttempt): - try: - result = fn(*args, **kwargs) - except BaseException: # noqa: B902 - retry_state.set_exception(sys.exc_info()) - else: - retry_state.set_result(result) - elif isinstance(do, DoSleep): - retry_state.prepare_for_next_attempt() - self.sleep(do) - else: - return do - - -class Future(futures.Future): - """Encapsulates a (future or past) attempted call to a target function.""" - - def __init__(self, attempt_number: int) -> None: - super().__init__() - self.attempt_number = attempt_number - - @property - def failed(self) -> bool: - """Return whether a exception is being held in this future.""" - return self.exception() is not None - - @classmethod - def construct(cls, attempt_number: int, value: t.Any, has_exception: bool) -> "Future": - """Construct a new Future object.""" - fut = cls(attempt_number) - if has_exception: - fut.set_exception(value) - else: - fut.set_result(value) - return fut - - -class RetryCallState: - """State related to a single call wrapped with Retrying.""" - - def __init__( - self, - retry_object: BaseRetrying, - fn: t.Optional[WrappedFn], - args: t.Any, - kwargs: t.Any, - ) -> None: - #: Retry call start timestamp - self.start_time = time.monotonic() - #: Retry manager object - self.retry_object = retry_object - #: Function wrapped by this retry call - self.fn = fn - #: Arguments of the function wrapped by this retry call - self.args = args - #: Keyword arguments of the function wrapped by this retry call - self.kwargs = kwargs - - #: The number of the current attempt - self.attempt_number: int = 1 - #: Last outcome (result or exception) produced by the function - self.outcome: t.Optional[Future] = None - #: Timestamp of the last outcome - self.outcome_timestamp: t.Optional[float] = None - #: Time spent sleeping in retries - self.idle_for: float = 0.0 - #: Next action as decided by the retry manager - self.next_action: t.Optional[RetryAction] = None - - @property - def seconds_since_start(self) -> t.Optional[float]: - if self.outcome_timestamp is None: - return None - return self.outcome_timestamp - self.start_time - - def prepare_for_next_attempt(self) -> None: - self.outcome = None - self.outcome_timestamp = None - self.attempt_number += 1 - self.next_action = None - - def set_result(self, val: t.Any) -> None: - ts = time.monotonic() - fut = Future(self.attempt_number) - fut.set_result(val) - self.outcome, self.outcome_timestamp = fut, ts - - def set_exception(self, exc_info: t.Tuple[t.Type[BaseException], BaseException, "types.TracebackType"]) -> None: - ts = time.monotonic() - fut = Future(self.attempt_number) - fut.set_exception(exc_info[1]) - self.outcome, self.outcome_timestamp = fut, ts - - def __repr__(self): - if self.outcome is None: - result = "none yet" - elif self.outcome.failed: - exception = self.outcome.exception() - result = f"failed ({exception.__class__.__name__} {exception})" - else: - result = f"returned {self.outcome.result()}" - - slept = float(round(self.idle_for, 2)) - clsname = self.__class__.__name__ - return f"<{clsname} {id(self)}: attempt #{self.attempt_number}; slept for {slept}; last result: {result}>" - - -from pip._vendor.tenacity._asyncio import AsyncRetrying # noqa:E402,I100 - -if tornado: - from pip._vendor.tenacity.tornadoweb import TornadoRetrying diff --git a/gestao_raul/Lib/site-packages/pip/_vendor/tenacity/__pycache__/__init__.cpython-310.pyc b/gestao_raul/Lib/site-packages/pip/_vendor/tenacity/__pycache__/__init__.cpython-310.pyc deleted file mode 100644 index e4b9048ce898656235d2cd28245991ed5ea5b7af..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 16472 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

exO<9H_gNnAgi^rjdHl96o* zN7?R_1fmk|w8YbAMaSwqb(K+Z_;`5FL@rWS9QwB44ib)x4PNcE?~5<>udui+3S1oF zCSmnHgh`-6WETL?IdK;pg1`+lOayLVYanpLP)<@pIVt+Z%W02oGLk~#0L}@V7emlm z(D$jcRr6$4<7cK41qg!VCAWc8AAmX+u-u-#cV@yqK zFjr{MT99opr|-bP7D)!uGf7woA(Zj&$R2{zo5+c*uLalF2=&+1Q{(?VN+UB2MoBXf ze*e9`#+u3GvCcbXt6p_|&{@gitzB0)e_=%6?xCB!a^s*zePFge%Q(AD8v?%*gYVR*gPB8-&ETlY?|{=5hs!vPg+`P43NXj_uIu5|=X zaMPqkoQZ_}2~_+pXMO|#&s|V;d~wExHD<#aGgGKoBs9ikoXG@}NhaJ0HO+))M`SfCtJ(*&i)FvSWR}Tp zCOi|=UM6DD?6sWxbSNE%Eha1ynIc2dxVDGLXF&{mdn55dC;-_ zo2=MiBINiYArWh&n`l4&WH%rG$!@;)C%gG_g?}WfwS++2gCpC-e=b_{7lnRCk!F-R zssAa1zfpre|1y%yR0f=-zY{of@wFt?@Ya-do9j2jy|%qJ__fm+a4S826EG%iYsRqc rIpcAAVt>jWvnK2@dtxS)IYMY+Vm9$-Cmx&HHMXm8DFtt#{n`Ho@^dto diff --git a/gestao_raul/Lib/site-packages/pip/_vendor/tenacity/__pycache__/_asyncio.cpython-310.pyc b/gestao_raul/Lib/site-packages/pip/_vendor/tenacity/__pycache__/_asyncio.cpython-310.pyc deleted file mode 100644 index dc1fd7bcbcbe318e2df53e80a1bf8ba0a6b1478c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2614 zcmZuz-ESN<5VyU%cYB+?d^MD`MMV?=x4l5bl1MEN?Y}^R5K{jR{s7+hl_y?7LWu9*crVQd-IK>-dpsV`{APT4vl%daU;ci5 z<(H7LpJ;IKb1`@et#}L~ndB*ps-8#OjzuKUi_}?jBbU>flX`2lsAhQ=d_AgL-UIJP zzU6D+8&SjZb?`wHaHhoSg!Dl}*?1(PrV=|7GT7zO8&~tO3_W&)g(#Mp01FSatbR`&^V3N>8@+fnU*u#VKnoAxh$H6`;L{(%f&G3>^VmZ*k0Cd zuP1t?C~I1ofzB2>G`sgXUacs}Qyj!TWYX=(0V^0v9IPRoLQ9x!AGk zn#xSEyrK$|*GWy8cPVrM70i28`Wwe3Din2({$a^g^zU^^om}F<*cK$N7GG8 zws-D!RNwUStZWv_#OmqLDTYPqV+}St%^Zvbd7e;_qFOLTE*R5$CJzk6$eaLcRS|M5eDoYG0d^fEbsWEnQ9*$g_x#$l5IjVz1)oPh%f-K; z6L24#E5xt=M?j^b!?AtuBc9B@f>xXcIT&=Rj6J0KBbTyaMA_ghSgTsjksDy*Bz9MR z4dD=qN#%21-T26jkR=JZKaMZa(PV=)oNqjT6u4u#Lv~X>Qy%|7n?D1&&n+wonj9AM zO+G^T8ZbR(`k;ufSQjkhPU$n0zlP&-F+JM}Tx{1HC{HdN_50ykgM^Ejy0(5KL8 zibOfPX!5?b_Zse!5MDG@6bmFx23k;PidYqYQF-HKns|mwEMVd*SS{!$=+qYt`wF!M8_4~mELx^#W%%6 zw(5;U?4hrrM*|RQ3;SuNo6y}sd-_p$s1kjHR!}nh|Qv1-xR$WhFTj^P$ve6x69h2uN zUI{bo<6SMC%h|B>EOyJFg7A9Jd=6~y=j`iHp=XJlB|--3H$Xl{E2!p#+;`4!-$l^G z#<6FZ*AmuWnw}p#Ur6mNSyORb264QW%Rx$f7{_-8Nm{K`&r2KfrB82raw}D(*G==p zl#R>l$Pb#)=OJJp0!{yh^eaSOqfOrRjDSfn&@CcV=&jXdbNpC!6jhf4h_qL78y?H=5SxNc)RKtjTp7gfi5ky}ytFD59_vV+pk6-fMn_^`pM6h0deK2|7MCgm%99$GOH$cXsiC>EzHq2VdNCr@|eddqr5Sutik-Zbjv?*(qsXgG}#iz+W`wfFOA6wwC}&n zBCv)GZ=%l10$9+-f`B&7vQUYrrpA|CS5l0yHSRBqJ&<(}bsy9m?zTgu&&a059^i;k zhZ}&~%y+m6_&5tT5nGxg3MqE5Jj+7R=WHZK+D0!QLvQSTq77+@4AD;(HBef*%MrmA zmfsM`7Pd%>qgL5s?qL&+Gr^KVvP`7;9+uW~56Q#u`IfF!N?N7*$g) zwCYc|(rJ;%w95a&ce7z%Wtv|u)6q@}Ui~sF*OF&kutKhBF49q^XKP8Nvs`t{nLGqM zCqdM4PywMhz<;C-nEZ%5=k@=ZwjgwlKDc_k!5`2^s7?oO$W=I(*63bSt2S&+sEc1O zz6g6|%hba1h_#W?u=^L4H7Ib#LtcT*KEoD&CN6g!-8&e~$fxEUxZ$DRuDH#0 zoW`Rx&xcU&`e9g*yOu5f6D>%7RrR@EQyxFXe^N zurnCMnR4miI2A0ehnlml%Tdo6?sfv>r)3GPHBpjSI!lx!X0@la%!ZZbx1=nj36f;r zLM?>}lVl2{x%Krk0RyHD-7YfGA<~Yf2^62WIs3P9hbLSozuxJRcEMlSCejAMEga!m z+qt2y$#>caFd;r!#q@RLrYR)yG`M$`ji+YH_PKP-+UQf(irUQ4hKaF$~7F?@ec-{VrDgqU>0vtBlUb}UM{sc65 B9{>OV diff --git a/gestao_raul/Lib/site-packages/pip/_vendor/tenacity/__pycache__/after.cpython-310.pyc b/gestao_raul/Lib/site-packages/pip/_vendor/tenacity/__pycache__/after.cpython-310.pyc deleted file mode 100644 index f0973e7250455702ea2f1df4270b6532fa6aa388..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1231 zcmZ`(OK%e~5VpO~q)BK)p+X$k3y(;!MdDT=1cawR5dwN3inMHFZ@RGAjckW10dAGr z|A3I_G5-kp%87q~5EN!MZB;;6@_1(bn9tvQ-lATw5@>I~tq(psgnYr^cw2zrCUlj6 z;e^wSba7-E9kMQ?M37gOTq$Slt_`CFGfvl`gfDWB``dQctyK6Dukr<66CSS%pS!TD z!kq!-G+}2*;`0VSvF&uLoIWG1=2yr?IxTA4Xspvrf!BB{w4Ai#EPJM7EzE+%I8qo$ z3zi!fzKmtwr?~l`p^v={UD;sD^V#&mtpv6OeK;;qTEZEFNuW1l9q>Y^ATRW0nh(Ox zjLfLSebPNN-(R-Zdh1F^)!P!8E_!#0{&*;It$G6iaEeIALq;IWOd@7J1xH^<*_hOyOu^>ZKPQpg4=z85o<$3Jl+!^H;-biE*=HFc5Ou zz!A|tE@M-HILgEuk(sIz{U|BqFxGwK=&<39u;Vv%8VvV#$PV3MiNzi6Zr9#h?<^>U zKfV25q9BV3bP=dxC<254eCkaRBx#i$DYH~D2k?M`*H7%_L;?gHtfca-^BwwCjbBd diff --git a/gestao_raul/Lib/site-packages/pip/_vendor/tenacity/__pycache__/before.cpython-310.pyc b/gestao_raul/Lib/site-packages/pip/_vendor/tenacity/__pycache__/before.cpython-310.pyc deleted file mode 100644 index 7fc7ce46a344375fb7273e311bd8d5a5d0dbd6ce..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1109 zcmZ`&&2G~`5Z+xoj*}*7S}GynfW?6-61exOst}<9L=_=Q4@42h$!=VOq!PD=r?%Fa(bJM--~v$9^V5?CL;?MH7)gnU8g>T7r%{9kDK>M3A?Zx}JZryEbSGzLdHpN_c~pxqEDP9bVy8z9h=rfoPYPBFgEI z-5^7U*LWQwDxB_-*78@VK{_p(Il;uli3Y3jLKrn|he@($LL;&zg?^yXQ5J+}4*WAw z>44(l#X=i*8@9GV$ zA-;$0&ECEiO84H2#K_(wIhc$@YIH9WfJX)@oFsqPyK%p#VdlaGu`Otp#1SPYZPX%z;O%VGY~dW6;PRz$S4wO)`~tk;vFE z&8kKQQt>zqldQ40PmoSVeW6qt&dr%x0;TYQ6k~voA@4yDn>%3Z8VH**+N4$L{B(cJ zZY~-Kwf(I`LQ%c#g98WV_TOCPNn2J?ATPCgS!xBXyk7Np%G+2I8``w&vciTcq_$Pf z95Wrm)w4AiFn=*%{>6Y5EYx4VdcG61pX{`sJ?%Ws%GgXel0Twix~w=gncD`U!hRx( h{Fmc@g#mYKB>5x}+xWzE1BBbGF^9Rd#;Vp``xj`Q7tH_w diff --git a/gestao_raul/Lib/site-packages/pip/_vendor/tenacity/__pycache__/before_sleep.cpython-310.pyc b/gestao_raul/Lib/site-packages/pip/_vendor/tenacity/__pycache__/before_sleep.cpython-310.pyc deleted file mode 100644 index 1bb2b3383a464dd0087de25c4f62cc1295945f8c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1411 zcmZ`(&5s*36t_K|&wMm3s{%r(hC@*fWbdo0LZn?lR1u=>fhf{wGIr7llbOhNmQ6@* zEA3w3AE+vIkNYqA%8CB~RW0S&*@bQ;EWMxK^T+e^^Y6KCwGssF*T0@lb%@X()_Auy z!1xM8O#nFJxI{zSlM>I#kYFUx%#$Cw89JoUdobe3b!ABC2yepZ%`b*6=B zNNcCc8q$O1CV-Kpta5BOUpA{->4PW=;QW*I7hj7>Ed|TLA5&U_lj(}-XPIWa7K&B1 zepXb|-rxdtv9udya0RcX{e#g{C8QetB1&D49@P1AE-I}?QvvbRsmzw;HT_XB9;rf$ zFBe(FP|Mp@3 z`|k$dm=I#LHRQe&S6{{}DsAYvuAz+V|C5bNu{+4c_8+(aqkHq3FH3RXemjZ*M4cuH ZNQ9dt@kmJD5KJIb@#r4&ib7q4#*W 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 diff --git a/gestao_raul/Lib/site-packages/pip/_vendor/tenacity/__pycache__/tornadoweb.cpython-310.pyc b/gestao_raul/Lib/site-packages/pip/_vendor/tenacity/__pycache__/tornadoweb.cpython-310.pyc deleted file mode 100644 index 80515fe4482d1e67f04a0af4c30c17ab8a21881b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1764 zcmb7ENpB-X6t1dX-Chzx267lgG(reVgCoIhgb+g#!X^umWi%Z}rA~L*w5MI&Q&lG8 z;7C9s&1v`zj>KjDQe8Q5=7QK?b=x5maiOiQew$x?uip16Z#Dx2&o{sB4vmD?NYWuc0#9=9gyA7EoC?JMt`SJ^B;^Cp zYg_q!rP!!YpmptO#G9vx@w@UWldkvh7&UI9Ps=A0cJY4_1d zBnDEufy z!O)baic(?N0d`xmtY0d^PHCJ)QbJ4z0`&gg_4cZ!Kvg1y$^ zm8P^69N^Qn8;96gVArJ2Prtf(l$}oJ?)u!g&(oYA&Xpa;nTTMwh2cJ*Tt$}hf-V2{ z;mQKduuUsY-}(R9Ug(+!Wx*Vx+|)ROq()KT_15%*3569rwiOqUPPnfn0oWg97H@-Buv(06<0DsSdrqDx@GL&R^N7+Y=X z8lB%Na|Mv=Q?S;}-hiPobuJ+r_#M@pwT$*Xe%xx?-L|b8z(6sf`SFm&N~{8Iamy@* zEPF6<^~w)KfH_>!&M_OLTsYv>Hc&w5AeAWxH;zPC&WZU8F@UWM-pCVw}q0Q%yIThyaDO*=|pz5tRAKntUZtgw&Vw-M$yuJC^C*7TJW$x_6IgiIez-1u} w{k69@DcC_Igc*c#`)laS5~>coSDn)P7{cT$u=p(>H%J3c9)83HDIlxXKg0dg8~^|S diff --git a/gestao_raul/Lib/site-packages/pip/_vendor/tenacity/__pycache__/wait.cpython-310.pyc b/gestao_raul/Lib/site-packages/pip/_vendor/tenacity/__pycache__/wait.cpython-310.pyc deleted file mode 100644 index 801c56a18e4cd49ee012807a3aaef3ff0270ef92..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9360 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 None: - super().__init__(**kwargs) - self.sleep = sleep - - async def __call__( # type: ignore # Change signature from supertype - self, - fn: typing.Callable[..., typing.Awaitable[_RetValT]], - *args: typing.Any, - **kwargs: typing.Any, - ) -> _RetValT: - self.begin() - - retry_state = RetryCallState(retry_object=self, fn=fn, args=args, kwargs=kwargs) - while True: - do = self.iter(retry_state=retry_state) - if isinstance(do, DoAttempt): - try: - result = await fn(*args, **kwargs) - except BaseException: # noqa: B902 - retry_state.set_exception(sys.exc_info()) - else: - retry_state.set_result(result) - elif isinstance(do, DoSleep): - retry_state.prepare_for_next_attempt() - await self.sleep(do) - else: - return do - - def __aiter__(self) -> "AsyncRetrying": - self.begin() - self._retry_state = RetryCallState(self, fn=None, args=(), kwargs={}) - return self - - async def __anext__(self) -> typing.Union[AttemptManager, typing.Any]: - while True: - do = self.iter(retry_state=self._retry_state) - if do is None: - raise StopAsyncIteration - elif isinstance(do, DoAttempt): - return AttemptManager(retry_state=self._retry_state) - elif isinstance(do, DoSleep): - self._retry_state.prepare_for_next_attempt() - await self.sleep(do) - else: - return do - - def wraps(self, fn: WrappedFn) -> WrappedFn: - fn = super().wraps(fn) - # Ensure wrapper is recognized as a coroutine function. - - @functools.wraps(fn) - async def async_wrapped(*args: typing.Any, **kwargs: typing.Any) -> typing.Any: - return await fn(*args, **kwargs) - - # Preserve attributes - async_wrapped.retry = fn.retry - async_wrapped.retry_with = fn.retry_with - - return async_wrapped diff --git a/gestao_raul/Lib/site-packages/pip/_vendor/tenacity/_utils.py b/gestao_raul/Lib/site-packages/pip/_vendor/tenacity/_utils.py deleted file mode 100644 index d5c4c9d..0000000 --- a/gestao_raul/Lib/site-packages/pip/_vendor/tenacity/_utils.py +++ /dev/null @@ -1,68 +0,0 @@ -# Copyright 2016 Julien Danjou -# Copyright 2016 Joshua Harlow -# Copyright 2013-2014 Ray Holder -# -# 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 -import typing - - -# sys.maxsize: -# An integer giving the maximum value a variable of type Py_ssize_t can take. -MAX_WAIT = sys.maxsize / 2 - - -def find_ordinal(pos_num: int) -> str: - # See: https://en.wikipedia.org/wiki/English_numerals#Ordinal_numbers - if pos_num == 0: - return "th" - elif pos_num == 1: - return "st" - elif pos_num == 2: - return "nd" - elif pos_num == 3: - return "rd" - elif 4 <= pos_num <= 20: - return "th" - else: - return find_ordinal(pos_num % 10) - - -def to_ordinal(pos_num: int) -> str: - return f"{pos_num}{find_ordinal(pos_num)}" - - -def get_callback_name(cb: typing.Callable[..., typing.Any]) -> str: - """Get a callback fully-qualified name. - - If no name can be produced ``repr(cb)`` is called and returned. - """ - segments = [] - try: - segments.append(cb.__qualname__) - except AttributeError: - try: - segments.append(cb.__name__) - except AttributeError: - pass - if not segments: - return repr(cb) - else: - try: - # When running under sphinx it appears this can be none? - if cb.__module__: - segments.insert(0, cb.__module__) - except AttributeError: - pass - return ".".join(segments) diff --git a/gestao_raul/Lib/site-packages/pip/_vendor/tenacity/after.py b/gestao_raul/Lib/site-packages/pip/_vendor/tenacity/after.py deleted file mode 100644 index c056700..0000000 --- a/gestao_raul/Lib/site-packages/pip/_vendor/tenacity/after.py +++ /dev/null @@ -1,46 +0,0 @@ -# Copyright 2016 Julien Danjou -# Copyright 2016 Joshua Harlow -# Copyright 2013-2014 Ray Holder -# -# 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 typing - -from pip._vendor.tenacity import _utils - -if typing.TYPE_CHECKING: - import logging - - from pip._vendor.tenacity import RetryCallState - - -def after_nothing(retry_state: "RetryCallState") -> None: - """After call strategy that does nothing.""" - - -def after_log( - logger: "logging.Logger", - log_level: int, - sec_format: str = "%0.3f", -) -> typing.Callable[["RetryCallState"], None]: - """After call strategy that logs to some logger the finished attempt.""" - - def log_it(retry_state: "RetryCallState") -> None: - logger.log( - log_level, - f"Finished call to '{_utils.get_callback_name(retry_state.fn)}' " - f"after {sec_format % retry_state.seconds_since_start}(s), " - f"this was the {_utils.to_ordinal(retry_state.attempt_number)} time calling it.", - ) - - return log_it diff --git a/gestao_raul/Lib/site-packages/pip/_vendor/tenacity/before.py b/gestao_raul/Lib/site-packages/pip/_vendor/tenacity/before.py deleted file mode 100644 index a72c2c5..0000000 --- a/gestao_raul/Lib/site-packages/pip/_vendor/tenacity/before.py +++ /dev/null @@ -1,41 +0,0 @@ -# Copyright 2016 Julien Danjou -# Copyright 2016 Joshua Harlow -# Copyright 2013-2014 Ray Holder -# -# 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 typing - -from pip._vendor.tenacity import _utils - -if typing.TYPE_CHECKING: - import logging - - from pip._vendor.tenacity import RetryCallState - - -def before_nothing(retry_state: "RetryCallState") -> None: - """Before call strategy that does nothing.""" - - -def before_log(logger: "logging.Logger", log_level: int) -> typing.Callable[["RetryCallState"], None]: - """Before call strategy that logs to some logger the attempt.""" - - def log_it(retry_state: "RetryCallState") -> None: - logger.log( - log_level, - f"Starting call to '{_utils.get_callback_name(retry_state.fn)}', " - f"this is the {_utils.to_ordinal(retry_state.attempt_number)} time calling it.", - ) - - return log_it diff --git a/gestao_raul/Lib/site-packages/pip/_vendor/tenacity/before_sleep.py b/gestao_raul/Lib/site-packages/pip/_vendor/tenacity/before_sleep.py deleted file mode 100644 index b35564f..0000000 --- a/gestao_raul/Lib/site-packages/pip/_vendor/tenacity/before_sleep.py +++ /dev/null @@ -1,58 +0,0 @@ -# Copyright 2016 Julien Danjou -# Copyright 2016 Joshua Harlow -# Copyright 2013-2014 Ray Holder -# -# 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 typing - -from pip._vendor.tenacity import _utils - -if typing.TYPE_CHECKING: - import logging - - from pip._vendor.tenacity import RetryCallState - - -def before_sleep_nothing(retry_state: "RetryCallState") -> None: - """Before call strategy that does nothing.""" - - -def before_sleep_log( - logger: "logging.Logger", - log_level: int, - exc_info: bool = False, -) -> typing.Callable[["RetryCallState"], None]: - """Before call strategy that logs to some logger the attempt.""" - - def log_it(retry_state: "RetryCallState") -> None: - if retry_state.outcome.failed: - ex = retry_state.outcome.exception() - verb, value = "raised", f"{ex.__class__.__name__}: {ex}" - - if exc_info: - local_exc_info = retry_state.outcome.exception() - else: - local_exc_info = False - else: - verb, value = "returned", retry_state.outcome.result() - local_exc_info = False # exc_info does not apply when no exception - - logger.log( - log_level, - f"Retrying {_utils.get_callback_name(retry_state.fn)} " - f"in {retry_state.next_action.sleep} seconds as it {verb} {value}.", - exc_info=local_exc_info, - ) - - return log_it diff --git a/gestao_raul/Lib/site-packages/pip/_vendor/tenacity/nap.py b/gestao_raul/Lib/site-packages/pip/_vendor/tenacity/nap.py deleted file mode 100644 index 72aa5bf..0000000 --- a/gestao_raul/Lib/site-packages/pip/_vendor/tenacity/nap.py +++ /dev/null @@ -1,43 +0,0 @@ -# Copyright 2016 Étienne Bersac -# Copyright 2016 Julien Danjou -# Copyright 2016 Joshua Harlow -# Copyright 2013-2014 Ray Holder -# -# 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 time -import typing - -if typing.TYPE_CHECKING: - import threading - - -def sleep(seconds: float) -> None: - """ - Sleep strategy that delays execution for a given number of seconds. - - This is the default strategy, and may be mocked out for unit testing. - """ - time.sleep(seconds) - - -class sleep_using_event: - """Sleep strategy that waits on an event to be set.""" - - def __init__(self, event: "threading.Event") -> None: - self.event = event - - def __call__(self, timeout: typing.Optional[float]) -> None: - # NOTE(harlowja): this may *not* actually wait for timeout - # seconds if the event is set (ie this may eject out early). - self.event.wait(timeout=timeout) diff --git a/gestao_raul/Lib/site-packages/pip/_vendor/tenacity/retry.py b/gestao_raul/Lib/site-packages/pip/_vendor/tenacity/retry.py deleted file mode 100644 index 9ebeb62..0000000 --- a/gestao_raul/Lib/site-packages/pip/_vendor/tenacity/retry.py +++ /dev/null @@ -1,240 +0,0 @@ -# Copyright 2016–2021 Julien Danjou -# Copyright 2016 Joshua Harlow -# Copyright 2013-2014 Ray Holder -# -# 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 abc -import re -import typing - -if typing.TYPE_CHECKING: - from pip._vendor.tenacity import RetryCallState - - -class retry_base(abc.ABC): - """Abstract base class for retry strategies.""" - - @abc.abstractmethod - def __call__(self, retry_state: "RetryCallState") -> bool: - pass - - def __and__(self, other: "retry_base") -> "retry_all": - return retry_all(self, other) - - def __or__(self, other: "retry_base") -> "retry_any": - return retry_any(self, other) - - -class _retry_never(retry_base): - """Retry strategy that never rejects any result.""" - - def __call__(self, retry_state: "RetryCallState") -> bool: - return False - - -retry_never = _retry_never() - - -class _retry_always(retry_base): - """Retry strategy that always rejects any result.""" - - def __call__(self, retry_state: "RetryCallState") -> bool: - return True - - -retry_always = _retry_always() - - -class retry_if_exception(retry_base): - """Retry strategy that retries if an exception verifies a predicate.""" - - def __init__(self, predicate: typing.Callable[[BaseException], bool]) -> None: - self.predicate = predicate - - def __call__(self, retry_state: "RetryCallState") -> bool: - if retry_state.outcome.failed: - return self.predicate(retry_state.outcome.exception()) - else: - return False - - -class retry_if_exception_type(retry_if_exception): - """Retries if an exception has been raised of one or more types.""" - - def __init__( - self, - exception_types: typing.Union[ - typing.Type[BaseException], - typing.Tuple[typing.Type[BaseException], ...], - ] = Exception, - ) -> None: - self.exception_types = exception_types - super().__init__(lambda e: isinstance(e, exception_types)) - - -class retry_if_not_exception_type(retry_if_exception): - """Retries except an exception has been raised of one or more types.""" - - def __init__( - self, - exception_types: typing.Union[ - typing.Type[BaseException], - typing.Tuple[typing.Type[BaseException], ...], - ] = Exception, - ) -> None: - self.exception_types = exception_types - super().__init__(lambda e: not isinstance(e, exception_types)) - - -class retry_unless_exception_type(retry_if_exception): - """Retries until an exception is raised of one or more types.""" - - def __init__( - self, - exception_types: typing.Union[ - typing.Type[BaseException], - typing.Tuple[typing.Type[BaseException], ...], - ] = Exception, - ) -> None: - self.exception_types = exception_types - super().__init__(lambda e: not isinstance(e, exception_types)) - - def __call__(self, retry_state: "RetryCallState") -> bool: - # always retry if no exception was raised - if not retry_state.outcome.failed: - return True - return self.predicate(retry_state.outcome.exception()) - - -class retry_if_exception_cause_type(retry_base): - """Retries if any of the causes of the raised exception is of one or more types. - - The check on the type of the cause of the exception is done recursively (until finding - an exception in the chain that has no `__cause__`) - """ - - def __init__( - self, - exception_types: typing.Union[ - typing.Type[BaseException], - typing.Tuple[typing.Type[BaseException], ...], - ] = Exception, - ) -> None: - self.exception_cause_types = exception_types - - def __call__(self, retry_state: "RetryCallState") -> bool: - if retry_state.outcome.failed: - exc = retry_state.outcome.exception() - while exc is not None: - if isinstance(exc.__cause__, self.exception_cause_types): - return True - exc = exc.__cause__ - - return False - - -class retry_if_result(retry_base): - """Retries if the result verifies a predicate.""" - - def __init__(self, predicate: typing.Callable[[typing.Any], bool]) -> None: - self.predicate = predicate - - def __call__(self, retry_state: "RetryCallState") -> bool: - if not retry_state.outcome.failed: - return self.predicate(retry_state.outcome.result()) - else: - return False - - -class retry_if_not_result(retry_base): - """Retries if the result refutes a predicate.""" - - def __init__(self, predicate: typing.Callable[[typing.Any], bool]) -> None: - self.predicate = predicate - - def __call__(self, retry_state: "RetryCallState") -> bool: - if not retry_state.outcome.failed: - return not self.predicate(retry_state.outcome.result()) - else: - return False - - -class retry_if_exception_message(retry_if_exception): - """Retries if an exception message equals or matches.""" - - def __init__( - self, - message: typing.Optional[str] = None, - match: typing.Optional[str] = None, - ) -> None: - if message and match: - raise TypeError(f"{self.__class__.__name__}() takes either 'message' or 'match', not both") - - # set predicate - if message: - - def message_fnc(exception: BaseException) -> bool: - return message == str(exception) - - predicate = message_fnc - elif match: - prog = re.compile(match) - - def match_fnc(exception: BaseException) -> bool: - return bool(prog.match(str(exception))) - - predicate = match_fnc - else: - raise TypeError(f"{self.__class__.__name__}() missing 1 required argument 'message' or 'match'") - - super().__init__(predicate) - - -class retry_if_not_exception_message(retry_if_exception_message): - """Retries until an exception message equals or matches.""" - - def __init__( - self, - message: typing.Optional[str] = None, - match: typing.Optional[str] = None, - ) -> None: - super().__init__(message, match) - # invert predicate - if_predicate = self.predicate - self.predicate = lambda *args_, **kwargs_: not if_predicate(*args_, **kwargs_) - - def __call__(self, retry_state: "RetryCallState") -> bool: - if not retry_state.outcome.failed: - return True - return self.predicate(retry_state.outcome.exception()) - - -class retry_any(retry_base): - """Retries if any of the retries condition is valid.""" - - def __init__(self, *retries: retry_base) -> None: - self.retries = retries - - def __call__(self, retry_state: "RetryCallState") -> bool: - return any(r(retry_state) for r in self.retries) - - -class retry_all(retry_base): - """Retries if all the retries condition are valid.""" - - def __init__(self, *retries: retry_base) -> None: - self.retries = retries - - def __call__(self, retry_state: "RetryCallState") -> bool: - return all(r(retry_state) for r in self.retries) diff --git a/gestao_raul/Lib/site-packages/pip/_vendor/tenacity/stop.py b/gestao_raul/Lib/site-packages/pip/_vendor/tenacity/stop.py deleted file mode 100644 index faaae9a..0000000 --- a/gestao_raul/Lib/site-packages/pip/_vendor/tenacity/stop.py +++ /dev/null @@ -1,96 +0,0 @@ -# Copyright 2016–2021 Julien Danjou -# Copyright 2016 Joshua Harlow -# Copyright 2013-2014 Ray Holder -# -# 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 abc -import typing - -if typing.TYPE_CHECKING: - import threading - - from pip._vendor.tenacity import RetryCallState - - -class stop_base(abc.ABC): - """Abstract base class for stop strategies.""" - - @abc.abstractmethod - def __call__(self, retry_state: "RetryCallState") -> bool: - pass - - def __and__(self, other: "stop_base") -> "stop_all": - return stop_all(self, other) - - def __or__(self, other: "stop_base") -> "stop_any": - return stop_any(self, other) - - -class stop_any(stop_base): - """Stop if any of the stop condition is valid.""" - - def __init__(self, *stops: stop_base) -> None: - self.stops = stops - - def __call__(self, retry_state: "RetryCallState") -> bool: - return any(x(retry_state) for x in self.stops) - - -class stop_all(stop_base): - """Stop if all the stop conditions are valid.""" - - def __init__(self, *stops: stop_base) -> None: - self.stops = stops - - def __call__(self, retry_state: "RetryCallState") -> bool: - return all(x(retry_state) for x in self.stops) - - -class _stop_never(stop_base): - """Never stop.""" - - def __call__(self, retry_state: "RetryCallState") -> bool: - return False - - -stop_never = _stop_never() - - -class stop_when_event_set(stop_base): - """Stop when the given event is set.""" - - def __init__(self, event: "threading.Event") -> None: - self.event = event - - def __call__(self, retry_state: "RetryCallState") -> bool: - return self.event.is_set() - - -class stop_after_attempt(stop_base): - """Stop when the previous attempt >= max_attempt.""" - - def __init__(self, max_attempt_number: int) -> None: - self.max_attempt_number = max_attempt_number - - def __call__(self, retry_state: "RetryCallState") -> bool: - return retry_state.attempt_number >= self.max_attempt_number - - -class stop_after_delay(stop_base): - """Stop when the time from the first attempt >= limit.""" - - def __init__(self, max_delay: float) -> None: - self.max_delay = max_delay - - def __call__(self, retry_state: "RetryCallState") -> bool: - return retry_state.seconds_since_start >= self.max_delay diff --git a/gestao_raul/Lib/site-packages/pip/_vendor/tenacity/tornadoweb.py b/gestao_raul/Lib/site-packages/pip/_vendor/tenacity/tornadoweb.py deleted file mode 100644 index 8f7731a..0000000 --- a/gestao_raul/Lib/site-packages/pip/_vendor/tenacity/tornadoweb.py +++ /dev/null @@ -1,59 +0,0 @@ -# Copyright 2017 Elisey Zanko -# -# 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 -import typing - -from pip._vendor.tenacity import BaseRetrying -from pip._vendor.tenacity import DoAttempt -from pip._vendor.tenacity import DoSleep -from pip._vendor.tenacity import RetryCallState - -from tornado import gen - -if typing.TYPE_CHECKING: - from tornado.concurrent import Future - -_RetValT = typing.TypeVar("_RetValT") - - -class TornadoRetrying(BaseRetrying): - def __init__(self, sleep: "typing.Callable[[float], Future[None]]" = gen.sleep, **kwargs: typing.Any) -> None: - super().__init__(**kwargs) - self.sleep = sleep - - @gen.coroutine - def __call__( # type: ignore # Change signature from supertype - self, - fn: "typing.Callable[..., typing.Union[typing.Generator[typing.Any, typing.Any, _RetValT], Future[_RetValT]]]", - *args: typing.Any, - **kwargs: typing.Any, - ) -> "typing.Generator[typing.Any, typing.Any, _RetValT]": - self.begin() - - retry_state = RetryCallState(retry_object=self, fn=fn, args=args, kwargs=kwargs) - while True: - do = self.iter(retry_state=retry_state) - if isinstance(do, DoAttempt): - try: - result = yield fn(*args, **kwargs) - except BaseException: # noqa: B902 - retry_state.set_exception(sys.exc_info()) - else: - retry_state.set_result(result) - elif isinstance(do, DoSleep): - retry_state.prepare_for_next_attempt() - yield self.sleep(do) - else: - raise gen.Return(do) diff --git a/gestao_raul/Lib/site-packages/pip/_vendor/tenacity/wait.py b/gestao_raul/Lib/site-packages/pip/_vendor/tenacity/wait.py deleted file mode 100644 index 8fdfc8f..0000000 --- a/gestao_raul/Lib/site-packages/pip/_vendor/tenacity/wait.py +++ /dev/null @@ -1,232 +0,0 @@ -# Copyright 2016–2021 Julien Danjou -# Copyright 2016 Joshua Harlow -# Copyright 2013-2014 Ray Holder -# -# 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 abc -import random -import typing -from datetime import timedelta - -from pip._vendor.tenacity import _utils - -if typing.TYPE_CHECKING: - from pip._vendor.tenacity import RetryCallState - -wait_unit_type = typing.Union[int, float, timedelta] - - -def to_seconds(wait_unit: wait_unit_type) -> float: - return float(wait_unit.total_seconds() if isinstance(wait_unit, timedelta) else wait_unit) - - -class wait_base(abc.ABC): - """Abstract base class for wait strategies.""" - - @abc.abstractmethod - def __call__(self, retry_state: "RetryCallState") -> float: - pass - - def __add__(self, other: "wait_base") -> "wait_combine": - return wait_combine(self, other) - - def __radd__(self, other: "wait_base") -> typing.Union["wait_combine", "wait_base"]: - # make it possible to use multiple waits with the built-in sum function - if other == 0: - return self - return self.__add__(other) - - -class wait_fixed(wait_base): - """Wait strategy that waits a fixed amount of time between each retry.""" - - def __init__(self, wait: wait_unit_type) -> None: - self.wait_fixed = to_seconds(wait) - - def __call__(self, retry_state: "RetryCallState") -> float: - return self.wait_fixed - - -class wait_none(wait_fixed): - """Wait strategy that doesn't wait at all before retrying.""" - - def __init__(self) -> None: - super().__init__(0) - - -class wait_random(wait_base): - """Wait strategy that waits a random amount of time between min/max.""" - - def __init__(self, min: wait_unit_type = 0, max: wait_unit_type = 1) -> None: # noqa - self.wait_random_min = to_seconds(min) - self.wait_random_max = to_seconds(max) - - def __call__(self, retry_state: "RetryCallState") -> float: - return self.wait_random_min + (random.random() * (self.wait_random_max - self.wait_random_min)) - - -class wait_combine(wait_base): - """Combine several waiting strategies.""" - - def __init__(self, *strategies: wait_base) -> None: - self.wait_funcs = strategies - - def __call__(self, retry_state: "RetryCallState") -> float: - return sum(x(retry_state=retry_state) for x in self.wait_funcs) - - -class wait_chain(wait_base): - """Chain two or more waiting strategies. - - If all strategies are exhausted, the very last strategy is used - thereafter. - - For example:: - - @retry(wait=wait_chain(*[wait_fixed(1) for i in range(3)] + - [wait_fixed(2) for j in range(5)] + - [wait_fixed(5) for k in range(4))) - def wait_chained(): - print("Wait 1s for 3 attempts, 2s for 5 attempts and 5s - thereafter.") - """ - - def __init__(self, *strategies: wait_base) -> None: - self.strategies = strategies - - def __call__(self, retry_state: "RetryCallState") -> float: - wait_func_no = min(max(retry_state.attempt_number, 1), len(self.strategies)) - wait_func = self.strategies[wait_func_no - 1] - return wait_func(retry_state=retry_state) - - -class wait_incrementing(wait_base): - """Wait an incremental amount of time after each attempt. - - Starting at a starting value and incrementing by a value for each attempt - (and restricting the upper limit to some maximum value). - """ - - def __init__( - self, - start: wait_unit_type = 0, - increment: wait_unit_type = 100, - max: wait_unit_type = _utils.MAX_WAIT, # noqa - ) -> None: - self.start = to_seconds(start) - self.increment = to_seconds(increment) - self.max = to_seconds(max) - - def __call__(self, retry_state: "RetryCallState") -> float: - result = self.start + (self.increment * (retry_state.attempt_number - 1)) - return max(0, min(result, self.max)) - - -class wait_exponential(wait_base): - """Wait strategy that applies exponential backoff. - - It allows for a customized multiplier and an ability to restrict the - upper and lower limits to some maximum and minimum value. - - The intervals are fixed (i.e. there is no jitter), so this strategy is - suitable for balancing retries against latency when a required resource is - unavailable for an unknown duration, but *not* suitable for resolving - contention between multiple processes for a shared resource. Use - wait_random_exponential for the latter case. - """ - - def __init__( - self, - multiplier: typing.Union[int, float] = 1, - max: wait_unit_type = _utils.MAX_WAIT, # noqa - exp_base: typing.Union[int, float] = 2, - min: wait_unit_type = 0, # noqa - ) -> None: - self.multiplier = multiplier - self.min = to_seconds(min) - self.max = to_seconds(max) - self.exp_base = exp_base - - def __call__(self, retry_state: "RetryCallState") -> float: - try: - exp = self.exp_base ** (retry_state.attempt_number - 1) - result = self.multiplier * exp - except OverflowError: - return self.max - return max(max(0, self.min), min(result, self.max)) - - -class wait_random_exponential(wait_exponential): - """Random wait with exponentially widening window. - - An exponential backoff strategy used to mediate contention between multiple - uncoordinated processes for a shared resource in distributed systems. This - is the sense in which "exponential backoff" is meant in e.g. Ethernet - networking, and corresponds to the "Full Jitter" algorithm described in - this blog post: - - https://aws.amazon.com/blogs/architecture/exponential-backoff-and-jitter/ - - Each retry occurs at a random time in a geometrically expanding interval. - It allows for a custom multiplier and an ability to restrict the upper - limit of the random interval to some maximum value. - - Example:: - - wait_random_exponential(multiplier=0.5, # initial window 0.5s - max=60) # max 60s timeout - - When waiting for an unavailable resource to become available again, as - opposed to trying to resolve contention for a shared resource, the - wait_exponential strategy (which uses a fixed interval) may be preferable. - - """ - - def __call__(self, retry_state: "RetryCallState") -> float: - high = super().__call__(retry_state=retry_state) - return random.uniform(0, high) - - -class wait_exponential_jitter(wait_base): - """Wait strategy that applies exponential backoff and jitter. - - It allows for a customized initial wait, maximum wait and jitter. - - This implements the strategy described here: - https://cloud.google.com/storage/docs/retry-strategy - - The wait time is min(initial * (2**n + random.uniform(0, jitter)), maximum) - where n is the retry count. - """ - - def __init__( - self, - initial: float = 1, - max: float = _utils.MAX_WAIT, # noqa - exp_base: float = 2, - jitter: float = 1, - ) -> None: - self.initial = initial - self.max = max - self.exp_base = exp_base - self.jitter = jitter - - def __call__(self, retry_state: "RetryCallState") -> float: - jitter = random.uniform(0, self.jitter) - try: - exp = self.exp_base ** (retry_state.attempt_number - 1) - result = self.initial * exp + jitter - except OverflowError: - result = self.max - return max(0, min(result, self.max)) diff --git a/gestao_raul/Lib/site-packages/pip/_vendor/tomli/__init__.py b/gestao_raul/Lib/site-packages/pip/_vendor/tomli/__init__.py index 4c6ec97..2b08d6e 100644 --- a/gestao_raul/Lib/site-packages/pip/_vendor/tomli/__init__.py +++ b/gestao_raul/Lib/site-packages/pip/_vendor/tomli/__init__.py @@ -3,9 +3,6 @@ # Licensed to PSF under a Contributor Agreement. __all__ = ("loads", "load", "TOMLDecodeError") -__version__ = "2.0.1" # DO NOT EDIT THIS LINE MANUALLY. LET bump2version UTILITY DO IT +__version__ = "2.2.1" # DO NOT EDIT THIS LINE MANUALLY. LET bump2version UTILITY DO IT from ._parser import TOMLDecodeError, load, loads - -# Pretend this exception was created here. -TOMLDecodeError.__module__ = __name__ diff --git a/gestao_raul/Lib/site-packages/pip/_vendor/tomli/__pycache__/__init__.cpython-310.pyc b/gestao_raul/Lib/site-packages/pip/_vendor/tomli/__pycache__/__init__.cpython-310.pyc index 967f47cfc17c03af9c8a050910980926a93bf18b..bf6aea0119bfafdc4261f8435fe0df73754e534a 100644 GIT binary patch delta 99 zcmaFNw4aGLpO=@50SFfPtxmU^$ScdJFi~56Vt^K-(Zp&gMz)F5^mJA-6mbAmfQesG w&Q>v@#i>QbG3BW_CHXNf`N^fZsd**EF+o92uFjKr7`?gJfT~$oSQsUk043!ag8%>k delta 136 zcmdnb^q7e^pO=@50SKypgr@gQfS)GE#0h#Tw>aYC^AdAYNOGsA7MCRE Z#}_4*=1hF$&BFndWnp1q6k+0G1_16wA`<`r diff --git a/gestao_raul/Lib/site-packages/pip/_vendor/tomli/__pycache__/_parser.cpython-310.pyc b/gestao_raul/Lib/site-packages/pip/_vendor/tomli/__pycache__/_parser.cpython-310.pyc index a0472c348b807a4b6ff5ca3a4c428d7811e9b0ea..1d26c9aaf344358e192727a93045d6e8342fbc72 100644 GIT binary patch literal 18593 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 literal 17069 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 diff --git a/gestao_raul/Lib/site-packages/pip/_vendor/tomli/__pycache__/_re.cpython-310.pyc b/gestao_raul/Lib/site-packages/pip/_vendor/tomli/__pycache__/_re.cpython-310.pyc index 9db4b289b07f64a62162626fa514c07defefc46e..db5336a225c678a957688667e2eee72044d0605b 100644 GIT binary patch delta 975 zcmZuwJ#W)M7|uD4ojA7RCT)_Y70^<(gbz_b?SN85TY@O`1Gx{~5&DHf-rgU*-es&R5Q6>3C&Qi;z*|jVK|^I!L8L}$oL#rFB(Tjpj&FrTiN-VSE^ChK<(v6W?A(5AZ^ON96ZcPG3CT!B z0oz;5VoaMGMmP zZtn^SX1KX-2ZTvr`f<)QEzk2qEA04QV4AVm^4;~0W5?o+x<0qES|=KW>I29Fz;$3p z$i~H5J1}ZCbU5WWU2}cB;n)}82&aNciYkAElTjLJNai>}+T(c+@tXQMU*PE-;CSH& QpH{z0N_t#IlB5d109@Y9!T2OCQaI;t&Li%mK47cDr$v(1gy4J(netoEZfYOMs~AdW`kA_ zIas_EEPE6|j~+brAl^Lq7rg905Co4(5p~`zmWpP{!}HGjHSaU;+v2B!>8I1WBz{l6 z*P6Z5wmF*kC`sFAZ}yNx6r#Fm&$LXzH7i5)2U(I7*iZB=*~(GOqhHQNl@?!jqbMFDrkpPK@*vW#S;ix2vo? delta 39 tcmdnbbd-rZpO=@50SKypgiho>z!*32j3jq@YH>+oetc14Y0kt~p#bN64Uqr< diff --git a/gestao_raul/Lib/site-packages/pip/_vendor/tomli/_parser.py b/gestao_raul/Lib/site-packages/pip/_vendor/tomli/_parser.py index f1bb0aa..b548e8b 100644 --- a/gestao_raul/Lib/site-packages/pip/_vendor/tomli/_parser.py +++ b/gestao_raul/Lib/site-packages/pip/_vendor/tomli/_parser.py @@ -6,8 +6,10 @@ from __future__ import annotations from collections.abc import Iterable import string +import sys from types import MappingProxyType -from typing import Any, BinaryIO, NamedTuple +from typing import IO, Any, Final, NamedTuple +import warnings from ._re import ( RE_DATETIME, @@ -19,25 +21,36 @@ from ._re import ( ) from ._types import Key, ParseFloat, Pos -ASCII_CTRL = frozenset(chr(i) for i in range(32)) | frozenset(chr(127)) +# Inline tables/arrays are implemented using recursion. Pathologically +# nested documents cause pure Python to raise RecursionError (which is OK), +# but mypyc binary wheels will crash unrecoverably (not OK). According to +# mypyc docs this will be fixed in the future: +# https://mypyc.readthedocs.io/en/latest/differences_from_python.html#stack-overflows +# Before mypyc's fix is in, recursion needs to be limited by this library. +# Choosing `sys.getrecursionlimit()` as maximum inline table/array nesting +# level, as it allows more nesting than pure Python, but still seems a far +# lower number than where mypyc binaries crash. +MAX_INLINE_NESTING: Final = sys.getrecursionlimit() + +ASCII_CTRL: Final = frozenset(chr(i) for i in range(32)) | frozenset(chr(127)) # Neither of these sets include quotation mark or backslash. They are # currently handled as separate cases in the parser functions. -ILLEGAL_BASIC_STR_CHARS = ASCII_CTRL - frozenset("\t") -ILLEGAL_MULTILINE_BASIC_STR_CHARS = ASCII_CTRL - frozenset("\t\n") +ILLEGAL_BASIC_STR_CHARS: Final = ASCII_CTRL - frozenset("\t") +ILLEGAL_MULTILINE_BASIC_STR_CHARS: Final = ASCII_CTRL - frozenset("\t\n") -ILLEGAL_LITERAL_STR_CHARS = ILLEGAL_BASIC_STR_CHARS -ILLEGAL_MULTILINE_LITERAL_STR_CHARS = ILLEGAL_MULTILINE_BASIC_STR_CHARS +ILLEGAL_LITERAL_STR_CHARS: Final = ILLEGAL_BASIC_STR_CHARS +ILLEGAL_MULTILINE_LITERAL_STR_CHARS: Final = ILLEGAL_MULTILINE_BASIC_STR_CHARS -ILLEGAL_COMMENT_CHARS = ILLEGAL_BASIC_STR_CHARS +ILLEGAL_COMMENT_CHARS: Final = ILLEGAL_BASIC_STR_CHARS -TOML_WS = frozenset(" \t") -TOML_WS_AND_NEWLINE = TOML_WS | frozenset("\n") -BARE_KEY_CHARS = frozenset(string.ascii_letters + string.digits + "-_") -KEY_INITIAL_CHARS = BARE_KEY_CHARS | frozenset("\"'") -HEXDIGIT_CHARS = frozenset(string.hexdigits) +TOML_WS: Final = frozenset(" \t") +TOML_WS_AND_NEWLINE: Final = TOML_WS | frozenset("\n") +BARE_KEY_CHARS: Final = frozenset(string.ascii_letters + string.digits + "-_") +KEY_INITIAL_CHARS: Final = BARE_KEY_CHARS | frozenset("\"'") +HEXDIGIT_CHARS: Final = frozenset(string.hexdigits) -BASIC_STR_ESCAPE_REPLACEMENTS = MappingProxyType( +BASIC_STR_ESCAPE_REPLACEMENTS: Final = MappingProxyType( { "\\b": "\u0008", # backspace "\\t": "\u0009", # tab @@ -50,11 +63,71 @@ BASIC_STR_ESCAPE_REPLACEMENTS = MappingProxyType( ) +class DEPRECATED_DEFAULT: + """Sentinel to be used as default arg during deprecation + period of TOMLDecodeError's free-form arguments.""" + + class TOMLDecodeError(ValueError): - """An error raised if a document is not valid TOML.""" + """An error raised if a document is not valid TOML. + + Adds the following attributes to ValueError: + msg: The unformatted error message + doc: The TOML document being parsed + pos: The index of doc where parsing failed + lineno: The line corresponding to pos + colno: The column corresponding to pos + """ + + def __init__( + self, + msg: str | type[DEPRECATED_DEFAULT] = DEPRECATED_DEFAULT, + doc: str | type[DEPRECATED_DEFAULT] = DEPRECATED_DEFAULT, + pos: Pos | type[DEPRECATED_DEFAULT] = DEPRECATED_DEFAULT, + *args: Any, + ): + if ( + args + or not isinstance(msg, str) + or not isinstance(doc, str) + or not isinstance(pos, int) + ): + warnings.warn( + "Free-form arguments for TOMLDecodeError are deprecated. " + "Please set 'msg' (str), 'doc' (str) and 'pos' (int) arguments only.", + DeprecationWarning, + stacklevel=2, + ) + if pos is not DEPRECATED_DEFAULT: + args = pos, *args + if doc is not DEPRECATED_DEFAULT: + args = doc, *args + if msg is not DEPRECATED_DEFAULT: + args = msg, *args + ValueError.__init__(self, *args) + return + + lineno = doc.count("\n", 0, pos) + 1 + if lineno == 1: + colno = pos + 1 + else: + colno = pos - doc.rindex("\n", 0, pos) + + if pos >= len(doc): + coord_repr = "end of document" + else: + coord_repr = f"line {lineno}, column {colno}" + errmsg = f"{msg} (at {coord_repr})" + ValueError.__init__(self, errmsg) + + self.msg = msg + self.doc = doc + self.pos = pos + self.lineno = lineno + self.colno = colno -def load(__fp: BinaryIO, *, parse_float: ParseFloat = float) -> dict[str, Any]: +def load(__fp: IO[bytes], *, parse_float: ParseFloat = float) -> dict[str, Any]: """Parse TOML from a binary file object.""" b = __fp.read() try: @@ -71,7 +144,12 @@ def loads(__s: str, *, parse_float: ParseFloat = float) -> dict[str, Any]: # no # The spec allows converting "\r\n" to "\n", even in string # literals. Let's do so to simplify parsing. - src = __s.replace("\r\n", "\n") + try: + src = __s.replace("\r\n", "\n") + except (AttributeError, TypeError): + raise TypeError( + f"Expected str object, not '{type(__s).__qualname__}'" + ) from None pos = 0 out = Output(NestedDict(), Flags()) header: Key = () @@ -113,7 +191,7 @@ def loads(__s: str, *, parse_float: ParseFloat = float) -> dict[str, Any]: # no pos, header = create_dict_rule(src, pos, out) pos = skip_chars(src, pos, TOML_WS) elif char != "#": - raise suffixed_err(src, pos, "Invalid statement") + raise TOMLDecodeError("Invalid statement", src, pos) # 3. Skip comment pos = skip_comment(src, pos) @@ -124,8 +202,8 @@ def loads(__s: str, *, parse_float: ParseFloat = float) -> dict[str, Any]: # no except IndexError: break if char != "\n": - raise suffixed_err( - src, pos, "Expected newline or end of document after a statement" + raise TOMLDecodeError( + "Expected newline or end of document after a statement", src, pos ) pos += 1 @@ -136,10 +214,10 @@ class Flags: """Flags that map to parsed keys/namespaces.""" # Marks an immutable namespace (inline array or inline table). - FROZEN = 0 + FROZEN: Final = 0 # Marks a nest that has been explicitly created and can no longer # be opened using the "[table]" syntax. - EXPLICIT_NEST = 1 + EXPLICIT_NEST: Final = 1 def __init__(self) -> None: self._flags: dict[str, dict] = {} @@ -185,8 +263,8 @@ class Flags: cont = inner_cont["nested"] key_stem = key[-1] if key_stem in cont: - cont = cont[key_stem] - return flag in cont["flags"] or flag in cont["recursive_flags"] + inner_cont = cont[key_stem] + return flag in inner_cont["flags"] or flag in inner_cont["recursive_flags"] return False @@ -251,12 +329,12 @@ def skip_until( except ValueError: new_pos = len(src) if error_on_eof: - raise suffixed_err(src, new_pos, f"Expected {expect!r}") from None + raise TOMLDecodeError(f"Expected {expect!r}", src, new_pos) from None if not error_on.isdisjoint(src[pos:new_pos]): while src[pos] not in error_on: pos += 1 - raise suffixed_err(src, pos, f"Found invalid character {src[pos]!r}") + raise TOMLDecodeError(f"Found invalid character {src[pos]!r}", src, pos) return new_pos @@ -287,15 +365,17 @@ def create_dict_rule(src: str, pos: Pos, out: Output) -> tuple[Pos, Key]: pos, key = parse_key(src, pos) if out.flags.is_(key, Flags.EXPLICIT_NEST) or out.flags.is_(key, Flags.FROZEN): - raise suffixed_err(src, pos, f"Cannot declare {key} twice") + raise TOMLDecodeError(f"Cannot declare {key} twice", src, pos) out.flags.set(key, Flags.EXPLICIT_NEST, recursive=False) try: out.data.get_or_create_nest(key) except KeyError: - raise suffixed_err(src, pos, "Cannot overwrite a value") from None + raise TOMLDecodeError("Cannot overwrite a value", src, pos) from None if not src.startswith("]", pos): - raise suffixed_err(src, pos, "Expected ']' at the end of a table declaration") + raise TOMLDecodeError( + "Expected ']' at the end of a table declaration", src, pos + ) return pos + 1, key @@ -305,7 +385,7 @@ def create_list_rule(src: str, pos: Pos, out: Output) -> tuple[Pos, Key]: pos, key = parse_key(src, pos) if out.flags.is_(key, Flags.FROZEN): - raise suffixed_err(src, pos, f"Cannot mutate immutable namespace {key}") + raise TOMLDecodeError(f"Cannot mutate immutable namespace {key}", src, pos) # Free the namespace now that it points to another empty list item... out.flags.unset_all(key) # ...but this key precisely is still prohibited from table declaration @@ -313,17 +393,19 @@ def create_list_rule(src: str, pos: Pos, out: Output) -> tuple[Pos, Key]: try: out.data.append_nest_to_list(key) except KeyError: - raise suffixed_err(src, pos, "Cannot overwrite a value") from None + raise TOMLDecodeError("Cannot overwrite a value", src, pos) from None if not src.startswith("]]", pos): - raise suffixed_err(src, pos, "Expected ']]' at the end of an array declaration") + raise TOMLDecodeError( + "Expected ']]' at the end of an array declaration", src, pos + ) return pos + 2, key def key_value_rule( src: str, pos: Pos, out: Output, header: Key, parse_float: ParseFloat ) -> Pos: - pos, key, value = parse_key_value_pair(src, pos, parse_float) + pos, key, value = parse_key_value_pair(src, pos, parse_float, nest_lvl=0) key_parent, key_stem = key[:-1], key[-1] abs_key_parent = header + key_parent @@ -331,22 +413,22 @@ def key_value_rule( for cont_key in relative_path_cont_keys: # Check that dotted key syntax does not redefine an existing table if out.flags.is_(cont_key, Flags.EXPLICIT_NEST): - raise suffixed_err(src, pos, f"Cannot redefine namespace {cont_key}") + raise TOMLDecodeError(f"Cannot redefine namespace {cont_key}", src, pos) # Containers in the relative path can't be opened with the table syntax or # dotted key/value syntax in following table sections. out.flags.add_pending(cont_key, Flags.EXPLICIT_NEST) if out.flags.is_(abs_key_parent, Flags.FROZEN): - raise suffixed_err( - src, pos, f"Cannot mutate immutable namespace {abs_key_parent}" + raise TOMLDecodeError( + f"Cannot mutate immutable namespace {abs_key_parent}", src, pos ) try: nest = out.data.get_or_create_nest(abs_key_parent) except KeyError: - raise suffixed_err(src, pos, "Cannot overwrite a value") from None + raise TOMLDecodeError("Cannot overwrite a value", src, pos) from None if key_stem in nest: - raise suffixed_err(src, pos, "Cannot overwrite a value") + raise TOMLDecodeError("Cannot overwrite a value", src, pos) # Mark inline table and array namespaces recursively immutable if isinstance(value, (dict, list)): out.flags.set(header + key, Flags.FROZEN, recursive=True) @@ -355,7 +437,7 @@ def key_value_rule( def parse_key_value_pair( - src: str, pos: Pos, parse_float: ParseFloat + src: str, pos: Pos, parse_float: ParseFloat, nest_lvl: int ) -> tuple[Pos, Key, Any]: pos, key = parse_key(src, pos) try: @@ -363,10 +445,10 @@ def parse_key_value_pair( except IndexError: char = None if char != "=": - raise suffixed_err(src, pos, "Expected '=' after a key in a key/value pair") + raise TOMLDecodeError("Expected '=' after a key in a key/value pair", src, pos) pos += 1 pos = skip_chars(src, pos, TOML_WS) - pos, value = parse_value(src, pos, parse_float) + pos, value = parse_value(src, pos, parse_float, nest_lvl) return pos, key, value @@ -401,7 +483,7 @@ def parse_key_part(src: str, pos: Pos) -> tuple[Pos, str]: return parse_literal_str(src, pos) if char == '"': return parse_one_line_basic_str(src, pos) - raise suffixed_err(src, pos, "Invalid initial character for a key part") + raise TOMLDecodeError("Invalid initial character for a key part", src, pos) def parse_one_line_basic_str(src: str, pos: Pos) -> tuple[Pos, str]: @@ -409,7 +491,9 @@ def parse_one_line_basic_str(src: str, pos: Pos) -> tuple[Pos, str]: return parse_basic_str(src, pos, multiline=False) -def parse_array(src: str, pos: Pos, parse_float: ParseFloat) -> tuple[Pos, list]: +def parse_array( + src: str, pos: Pos, parse_float: ParseFloat, nest_lvl: int +) -> tuple[Pos, list]: pos += 1 array: list = [] @@ -417,7 +501,7 @@ def parse_array(src: str, pos: Pos, parse_float: ParseFloat) -> tuple[Pos, list] if src.startswith("]", pos): return pos + 1, array while True: - pos, val = parse_value(src, pos, parse_float) + pos, val = parse_value(src, pos, parse_float, nest_lvl) array.append(val) pos = skip_comments_and_array_ws(src, pos) @@ -425,7 +509,7 @@ def parse_array(src: str, pos: Pos, parse_float: ParseFloat) -> tuple[Pos, list] if c == "]": return pos + 1, array if c != ",": - raise suffixed_err(src, pos, "Unclosed array") + raise TOMLDecodeError("Unclosed array", src, pos) pos += 1 pos = skip_comments_and_array_ws(src, pos) @@ -433,7 +517,9 @@ def parse_array(src: str, pos: Pos, parse_float: ParseFloat) -> tuple[Pos, list] return pos + 1, array -def parse_inline_table(src: str, pos: Pos, parse_float: ParseFloat) -> tuple[Pos, dict]: +def parse_inline_table( + src: str, pos: Pos, parse_float: ParseFloat, nest_lvl: int +) -> tuple[Pos, dict]: pos += 1 nested_dict = NestedDict() flags = Flags() @@ -442,23 +528,23 @@ def parse_inline_table(src: str, pos: Pos, parse_float: ParseFloat) -> tuple[Pos if src.startswith("}", pos): return pos + 1, nested_dict.dict while True: - pos, key, value = parse_key_value_pair(src, pos, parse_float) + pos, key, value = parse_key_value_pair(src, pos, parse_float, nest_lvl) key_parent, key_stem = key[:-1], key[-1] if flags.is_(key, Flags.FROZEN): - raise suffixed_err(src, pos, f"Cannot mutate immutable namespace {key}") + raise TOMLDecodeError(f"Cannot mutate immutable namespace {key}", src, pos) try: nest = nested_dict.get_or_create_nest(key_parent, access_lists=False) except KeyError: - raise suffixed_err(src, pos, "Cannot overwrite a value") from None + raise TOMLDecodeError("Cannot overwrite a value", src, pos) from None if key_stem in nest: - raise suffixed_err(src, pos, f"Duplicate inline table key {key_stem!r}") + raise TOMLDecodeError(f"Duplicate inline table key {key_stem!r}", src, pos) nest[key_stem] = value pos = skip_chars(src, pos, TOML_WS) c = src[pos : pos + 1] if c == "}": return pos + 1, nested_dict.dict if c != ",": - raise suffixed_err(src, pos, "Unclosed inline table") + raise TOMLDecodeError("Unclosed inline table", src, pos) if isinstance(value, (dict, list)): flags.set(key, Flags.FROZEN, recursive=True) pos += 1 @@ -480,7 +566,7 @@ def parse_basic_str_escape( except IndexError: return pos, "" if char != "\n": - raise suffixed_err(src, pos, "Unescaped '\\' in a string") + raise TOMLDecodeError("Unescaped '\\' in a string", src, pos) pos += 1 pos = skip_chars(src, pos, TOML_WS_AND_NEWLINE) return pos, "" @@ -491,7 +577,7 @@ def parse_basic_str_escape( try: return pos, BASIC_STR_ESCAPE_REPLACEMENTS[escape_id] except KeyError: - raise suffixed_err(src, pos, "Unescaped '\\' in a string") from None + raise TOMLDecodeError("Unescaped '\\' in a string", src, pos) from None def parse_basic_str_escape_multiline(src: str, pos: Pos) -> tuple[Pos, str]: @@ -501,11 +587,13 @@ def parse_basic_str_escape_multiline(src: str, pos: Pos) -> tuple[Pos, str]: def parse_hex_char(src: str, pos: Pos, hex_len: int) -> tuple[Pos, str]: hex_str = src[pos : pos + hex_len] if len(hex_str) != hex_len or not HEXDIGIT_CHARS.issuperset(hex_str): - raise suffixed_err(src, pos, "Invalid hex value") + raise TOMLDecodeError("Invalid hex value", src, pos) pos += hex_len hex_int = int(hex_str, 16) if not is_unicode_scalar_value(hex_int): - raise suffixed_err(src, pos, "Escaped character is not a Unicode scalar value") + raise TOMLDecodeError( + "Escaped character is not a Unicode scalar value", src, pos + ) return pos, chr(hex_int) @@ -562,7 +650,7 @@ def parse_basic_str(src: str, pos: Pos, *, multiline: bool) -> tuple[Pos, str]: try: char = src[pos] except IndexError: - raise suffixed_err(src, pos, "Unterminated string") from None + raise TOMLDecodeError("Unterminated string", src, pos) from None if char == '"': if not multiline: return pos + 1, result + src[start_pos:pos] @@ -577,13 +665,21 @@ def parse_basic_str(src: str, pos: Pos, *, multiline: bool) -> tuple[Pos, str]: start_pos = pos continue if char in error_on: - raise suffixed_err(src, pos, f"Illegal character {char!r}") + raise TOMLDecodeError(f"Illegal character {char!r}", src, pos) pos += 1 def parse_value( # noqa: C901 - src: str, pos: Pos, parse_float: ParseFloat + src: str, pos: Pos, parse_float: ParseFloat, nest_lvl: int ) -> tuple[Pos, Any]: + if nest_lvl > MAX_INLINE_NESTING: + # Pure Python should have raised RecursionError already. + # This ensures mypyc binaries eventually do the same. + raise RecursionError( # pragma: no cover + "TOML inline arrays/tables are nested more than the allowed" + f" {MAX_INLINE_NESTING} levels" + ) + try: char: str | None = src[pos] except IndexError: @@ -613,11 +709,11 @@ def parse_value( # noqa: C901 # Arrays if char == "[": - return parse_array(src, pos, parse_float) + return parse_array(src, pos, parse_float, nest_lvl + 1) # Inline tables if char == "{": - return parse_inline_table(src, pos, parse_float) + return parse_inline_table(src, pos, parse_float, nest_lvl + 1) # Dates and times datetime_match = RE_DATETIME.match(src, pos) @@ -625,7 +721,7 @@ def parse_value( # noqa: C901 try: datetime_obj = match_to_datetime(datetime_match) except ValueError as e: - raise suffixed_err(src, pos, "Invalid date or datetime") from e + raise TOMLDecodeError("Invalid date or datetime", src, pos) from e return datetime_match.end(), datetime_obj localtime_match = RE_LOCALTIME.match(src, pos) if localtime_match: @@ -646,24 +742,7 @@ def parse_value( # noqa: C901 if first_four in {"-inf", "+inf", "-nan", "+nan"}: return pos + 4, parse_float(first_four) - raise suffixed_err(src, pos, "Invalid value") - - -def suffixed_err(src: str, pos: Pos, msg: str) -> TOMLDecodeError: - """Return a `TOMLDecodeError` where error message is suffixed with - coordinates in source.""" - - def coord_repr(src: str, pos: Pos) -> str: - if pos >= len(src): - return "end of document" - line = src.count("\n", 0, pos) + 1 - if line == 1: - column = pos + 1 - else: - column = pos - src.rindex("\n", 0, pos) - return f"line {line}, column {column}" - - return TOMLDecodeError(f"{msg} (at {coord_repr(src, pos)})") + raise TOMLDecodeError("Invalid value", src, pos) def is_unicode_scalar_value(codepoint: int) -> bool: @@ -679,7 +758,7 @@ def make_safe_parse_float(parse_float: ParseFloat) -> ParseFloat: instead of returning illegal types. """ # The default `float` callable never returns illegal types. Optimize it. - if parse_float is float: # type: ignore[comparison-overlap] + if parse_float is float: return float def safe_parse_float(float_str: str) -> Any: diff --git a/gestao_raul/Lib/site-packages/pip/_vendor/tomli/_re.py b/gestao_raul/Lib/site-packages/pip/_vendor/tomli/_re.py index 994bb74..5134866 100644 --- a/gestao_raul/Lib/site-packages/pip/_vendor/tomli/_re.py +++ b/gestao_raul/Lib/site-packages/pip/_vendor/tomli/_re.py @@ -7,16 +7,18 @@ from __future__ import annotations from datetime import date, datetime, time, timedelta, timezone, tzinfo from functools import lru_cache import re -from typing import Any +from typing import Any, Final from ._types import ParseFloat # E.g. # - 00:32:00.999999 # - 00:32:00 -_TIME_RE_STR = r"([01][0-9]|2[0-3]):([0-5][0-9]):([0-5][0-9])(?:\.([0-9]{1,6})[0-9]*)?" +_TIME_RE_STR: Final = ( + r"([01][0-9]|2[0-3]):([0-5][0-9]):([0-5][0-9])(?:\.([0-9]{1,6})[0-9]*)?" +) -RE_NUMBER = re.compile( +RE_NUMBER: Final = re.compile( r""" 0 (?: @@ -35,8 +37,8 @@ RE_NUMBER = re.compile( """, flags=re.VERBOSE, ) -RE_LOCALTIME = re.compile(_TIME_RE_STR) -RE_DATETIME = re.compile( +RE_LOCALTIME: Final = re.compile(_TIME_RE_STR) +RE_DATETIME: Final = re.compile( rf""" ([0-9]{{4}})-(0[1-9]|1[0-2])-(0[1-9]|[12][0-9]|3[01]) # date, e.g. 1988-10-27 (?: @@ -84,6 +86,9 @@ def match_to_datetime(match: re.Match) -> datetime | date: return datetime(year, month, day, hour, minute, sec, micros, tzinfo=tz) +# No need to limit cache size. This is only ever called on input +# that matched RE_DATETIME, so there is an implicit bound of +# 24 (hours) * 60 (minutes) * 2 (offset direction) = 2880. @lru_cache(maxsize=None) def cached_tz(hour_str: str, minute_str: str, sign_str: str) -> timezone: sign = 1 if sign_str == "+" else -1 diff --git a/gestao_raul/Lib/site-packages/pip/_vendor/tomli/py.typed b/gestao_raul/Lib/site-packages/pip/_vendor/tomli/py.typed new file mode 100644 index 0000000..7632ecf --- /dev/null +++ b/gestao_raul/Lib/site-packages/pip/_vendor/tomli/py.typed @@ -0,0 +1 @@ +# Marker file for PEP 561 diff --git a/gestao_raul/Lib/site-packages/pip/_vendor/truststore/__init__.py b/gestao_raul/Lib/site-packages/pip/_vendor/truststore/__init__.py new file mode 100644 index 0000000..e468bf8 --- /dev/null +++ b/gestao_raul/Lib/site-packages/pip/_vendor/truststore/__init__.py @@ -0,0 +1,36 @@ +"""Verify certificates using native system trust stores""" + +import sys as _sys + +if _sys.version_info < (3, 10): + raise ImportError("truststore requires Python 3.10 or later") + +# Detect Python runtimes which don't implement SSLObject.get_unverified_chain() API +# This API only became public in Python 3.13 but was available in CPython and PyPy since 3.10. +if _sys.version_info < (3, 13): + try: + import ssl as _ssl + except ImportError: + raise ImportError("truststore requires the 'ssl' module") + else: + _sslmem = _ssl.MemoryBIO() + _sslobj = _ssl.create_default_context().wrap_bio( + _sslmem, + _sslmem, + ) + try: + while not hasattr(_sslobj, "get_unverified_chain"): + _sslobj = _sslobj._sslobj # type: ignore[attr-defined] + except AttributeError: + raise ImportError( + "truststore requires peer certificate chain APIs to be available" + ) from None + + del _ssl, _sslobj, _sslmem # noqa: F821 + +from ._api import SSLContext, extract_from_ssl, inject_into_ssl # noqa: E402 + +del _api, _sys # type: ignore[name-defined] # noqa: F821 + +__all__ = ["SSLContext", "inject_into_ssl", "extract_from_ssl"] +__version__ = "0.10.0" diff --git a/gestao_raul/Lib/site-packages/pip/_vendor/truststore/__pycache__/__init__.cpython-310.pyc b/gestao_raul/Lib/site-packages/pip/_vendor/truststore/__pycache__/__init__.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..1f737b59eecf190646646af9b6e28d75a94c2f8d GIT binary patch literal 963 zcmZuvO>Yx15cN9SWSdQz7AhoeK7dLNv_)`02thySp;B8)D?r*rvNpSu#Odxj*iK7w zLhT=Edqeyae!^Zk<;Iyq!#JhT1Ge^Ao_X{9JYHF?mI;o_y>FeLE+Iec=JxP#vxcAk zju4Z8#7;~TC!j!kg}87;R1MtNJ#$W-X=DZ???%NbYbGduB$@9LaEA{aVkdHomU}{= zcwV|7frsnt1vxK+2i^q@{80@m;K!vis@K5p`GJ44SI<$cf@;;_?q4za6VfO) z{Dv3L#^q!#tp&AoKA2Azf(3^(<{Gp^V*k?6wunLl znhmtbIxGu~I0mMN+Ca*T8fe3`kqYz}yFm8pbX>r7Y+E;aG|f-bOu?stKpNX0ny$>) z)8!|tOe&V3xT;e{ZB^A)J@{Xh=>l8QI$2_=j0Xwiiybh0kR4m60%9I@Ly?VM|F5B$>$MN7#ZGHGUezYuZgS& z7!a9}Hc&6964t3%3--4d6<6_k%d7Rpyu^7dBhK>z_AGa~#R|ICLS`t?mbt&3_N6jg zN=bz*)JGQL>@K8I4L7#m1|=IvA(sTi872wZ^f|wA$G;MF-!d%x;+rp;?=>24o^C8 KEK-+xSoa$gxgQ1q literal 0 HcmV?d00001 diff --git a/gestao_raul/Lib/site-packages/pip/_vendor/truststore/__pycache__/_api.cpython-310.pyc b/gestao_raul/Lib/site-packages/pip/_vendor/truststore/__pycache__/_api.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..c67cd94a29a71d0307fc2049474eacc4939cab92 GIT binary patch literal 10396 zcmbtaOK=oPdalZc?f2hVOR!OK#0c<2o{N9rbn|ysk2(@rn;*q zt9n4P6#EeN9vmARJ~+a!b-=D4LD&(#IKmN*@WBTkeDJ{sA6yq7_Qb&_4&GsAk-tBy zs$Xg?V0TAlXJ`KT=l`nz|MTGv3}h61elh(w3m+B~q9%X!qAq_E#f1D#7L%ND%}LdaqESm1)3r=7Q_B{!s$#1TbB`3R z-(}(iU=q$iZLm048!8T|N_~6On?&y=**o0PYsi)@?G`&x9TA^k#+0+QHd-77_HFjq zdBs+$+wE;Tl&CgFwchQ_|0&&oaEzt2gV-a>Wos@^@MaY{RFyD3VJYVx}vgBsauXYGjny)t^4+U zKiJuB^_mS^boL!IebMxM&v%90(Qfi)oddGuSe_Rg*aRrV7Q&=%SL)oo=M`8mVwT)` zxw6m%O4K9`W9FB(sFat?hHZ8mF011Y+6lc zimKESvP{Y{wTc#BS%DFUu(uVi%_zF!8%wXN=u?$XWy?KCclnDe^{QR+y}Z9@=TAzu zPu^*ZZ=x;oJNZi8cO~4NJD%sIza(U!YTG zpv&Ium0H6U{*(}|c&rw)5sZn>$BNhi{Lem{JUMsEvxPTz&vtxw?t)ut*6h0P&E33t zerj@V!S;O1HHFo5=B`%e=e&w;j*K@>TiX?xWXmQ#}|TNk^~w7J%=qPI)y+g_k`wxXCuOW*0GLmTvc_9ocEd(o|M zP}r%cytIQnv|WK^#IIi-^6+h`oJemOF$@aD7AiC@K-5rJV+FcbUK~EH<3>8@AIskuBLg;&hP;|gLsDQ zEKk5s4cocufUGgp2Frtd3m?JwA&jT7Cf|zoVLmEL!q9)@mU517<6{^(LgO&<4t!zO z-U`n>THR)6r4OgtR;tMv$6wID!ybe8&%$db%GwS^@@Mc}d^ctpmvdNrkG+HM#Y4R8 zLrkDwl7qqXd_UlJf$rVaJ!O?2pjsrOgZwr0?d69s!#<)dYCp`s1%I9AulKYU_#0^7 z&))Y^G%;2^2whC@Bl!Os{vQHYDT+d9J<8uf>*1c(clj~2ev8lZ_xSs$ z(QJkEabDsdp!Nn&6Fv5ugjq(Q6a3o`643Ko1lNMfL{N|?w0?2}OeUgD=O4y>oMQ%R zk8tBxY6Ig>5e#M^+sc6Q)BKFIt+(yBs}uY?G)h|6*;acDd5)i#kVotzU67Nlc7n_T z=LJ3`A&=TeC1fnii>-Eo%vIk3>?M9#!oF+2D`C+ZQE;Wz(}w;o|42d~vyb&aUv2e- z(C-2FH9jq&-?!h7px=vdUvKpgG|Axx|DJ?BZXcJhu^eu;+C#h_0CtAYO4t)pim(BG zi+?OzzAamF)stwu%|DTCAKD*Av!9G+|FqQ;;yeZDBL7T6pSDj&(5E8kxwwZXkX?ih zZ25FM2<6Y+xPq`|`T3>?zvwM_zFo^xJg<~1CAd7ez!6XeQE6ujaO z)#;JZn!>iPG&CRS%wu)Bz(fKq(g{9R5ut3S-0K3426+c9&J-O(E^wb zjD~Q1x8yn{f{Q=of#Cr|5?)6INr1YhA|$BD;#AI%#W9~%wKZ*(tsqoXRTDWZWTH)P zaH@oeKHgpwEvK6Ji2?^f?lf1_euCMGI)*2gk9N^nsaJf{oH*sUCCl;7Ow6{jF@Rm4 zr+h;SaJox^#0t$y;lm?G?<;G{L-moeiacfo`Ak*g>Q9*prZ6X)h9rj&zLA2Ni>~L_ zt(uK&F(LD}Aje&E(W-NA(Yk8~TQ($W;vgn~UiRT9(2#vSRz)85c2E+B@RtIxN2`O3 zI;iSur`13oFTv+TCmoMj$aWzS7^X=Cn`V$P%`k;RJ!hIR0;_hq66J5`S)eW4$>`kK$4#0O3j4R6*MUtv7ct4 z;TD>m6fVxf=-txYAR8&nt8hEm-YFZ?ty5lIhiwF-&|w29 ziihNDVZr96?Up^MG0GD?uj1BADNGxG=ygluk?&p|70Q0AF#Vrlc|^4;TTx-~i4|={ zUrEA>lB+3XNia8Ep=`QtyaSWFr^eY5^6Rv(t)x~GoRP)dR#s9ngVvXhhcGLthlxjc z;eV_ki`J$g-1jiAq*1(2wc}KLK*a$Rg`^-N1?4qC_MWgBCdtG0#bIhmPu(xs4Ig|3 ziIU@bcEJe6e~bo6%x$D(xe{|=Kxq$``e20?zq7Dp-d6Ku(U3*DZj7GFf-IOzNUeZh&n?g;H83=MeF&{&6GD2;Z7A-7` zBM!QudpWoa48KpP$iFP_?4`YpE=V<+qJej&D;82P(eOyw=TITpKZNWbA$W*AXo$%h zk>qi^jCCF;q*Xk+C@zRARCF&@#7AiRLp(A<=d|TLy_9uf3I;8wQ8(jo?QKe<_%6-W zMHg1YX7}irE{aOMbX`N+pWt~)oafXox;A182I~JuvbGSiuE8-?*ZWX)18qO2_GuK$ zyE|mH0Zp*IbF0QIRT_)7a4Mev3Nk}@fePiwmJ+|$hb-Dnc}VS&tWNLOfuJinq128f zEA5Fk6GMA?1UK8Iwd_Kh0zs)$ubyVn_DeicPZ_n#^>&QibaFv{y=%&WC?uM+Jooxe z`Z31*6^*-vVtKqv4KkdDV>e7nTuYA0jZixFV^vO#)NAXs>tm0_v1!Z1=5nK@-`v5l zd{x7}I7#7S;F8=Y)#Y6sr1ZjVpeB~T+!%=EuOf{1=wO_b7{7+`4jnvof7#4|oWI2* zU+6(~`Ctc0n<1JAvh&!G6iX(p1~wRIOKcPkTI5MfcpSNw&(YIk8bMC#-wJ)u-^C>9 z+Vb`ek~(2FomhOI(33X_=P+9}>CGsC6L(PjJsznFUHyOK`UgU4q1YVLZ32;0eL}U( zsQO3h{ERS>Amb0!TY{xjAdIGw?jcthGzUwIcIj?wLD0`41;^lj!Xr61*z%4J@pcan z5?@+Qb7N$QE%B+0ELdSxvBqjEx&-90qRXiFC|VNm&oKcxwkexpo(7Y^V)k~$D;76gsAk=-)S5L) z+Gvr|S0l7O`42+AfrXyY8(1K3BE9h_Dn2sFhqQ**kkep^(y~6JR|F_%9&D1EGJYu}eM z0{Inneu3f@cuKi)CDuP$c)<09kV@^1bi7Z|s8`^DaJ_&B0{L$Odr2N*Kd}`FvESYR zF|DS**w-4HK>m~_ko@fJ;HM9U4ZQX73qB$1_fpYJ|3jUx_ELpA5dAW#{Xq6LA(W(d zZac*3_A4lT5bKAgsQ62!V}EHoeP#6}CR=Y!*cmmt2fxC!xhOp;JJv#fgS&?bHN?G; z%g#)obLa-m#J*zVn?nd+V08qNqB&pE>SAw@jYz_NR{v;pABYE9%yj169V1_X7sB@f zUI=7M%uDD(5*KG@r?FnWNX0Y?Ha#s0fGemI1@&U#jCh0azDdPfD9DR)w}kyU+IPiS zv%eJRK8|fgo_aN$@rie-mJIiF0)5_f9h_wPBHU-A1J9Xo-%9Se&4gP&CumIinq70n z()lab#Zmkhv@sDR=INj~V6GP!bX#K2!v88ux%{AL!bb0uq(>oSqF&4+_7v)Pq#u#M6mTP2KQt9oaqn*(X0rDgs58)8o zQo736usWJ#Bk}H+{*}(ybEdK1Fr9tF671__l07q0>?_^K{F>znPJc!)dIXaMi~$%u zmHCQ|%KmTmqJJ;?2PKZo*K7czzF}xhqBR+{CbRlFC|GAK^L#upu8nBJ+8DkW4Y--U zj-9u4gXNyftTc!yCe z0K?})*t5qtUtMD&yQ0<;D@ay+t*Sp#|A2kLkhGK9un(T8c$GSqg>|g{*3cB>8qIm9 zQZmCgK&QjtAU8EVdHuqb=}YE?shf{kz$T6cIxQD_a?c=hN^TgqwZ@r!umR5i#-zg7 z_p^sMd3Ay$-Av+< zS6fz;Rkl0?lfk+D8uNx%SXEtR@qd9U4fQlGu&||_@fLkuy{BM{o~@~?ny(`drp`xIa>AFinU;Z6=-9&nhN_5|WF6wlj?9q*byj7>o(a45a7r6st7P7HZRQ0xEuw{*sv#2Z?4no1xbf8%!GYkOsp;%_M5@ zEb`D4$6C1eL^r0w&3a;}m^5ov$@PkciP%}E_jzFU(;HLfi4WcAh^B1|aw&N}?r8qDGQ!84^WG){nJZTNVY8HrEm*lag(X<&1~u200)w zfO`g#iGV4u&Z$anxl9gwNGcUoCAn>q+OoxbuY15B*|iB! z(=+|L`*lzEd*Az+*5F`K!|%@*{%YlwyPEdTRN4Kb*6X<9FLIj3G^RH+Pu+D-mvzH4 z<#1D zV!6ghbDy_Q*SN7c`V6gyHE%yZzz^~htXm3ew?}2g&z1{=m zIG>cgu4lCCpq25r`Q@kjiiut`+4vdB)8-XS2B7<(vSI<`4xW5ze4Ns z&$9jAO?JSWOTQJFYk(jD>-}!>N!w91mAOVrdy!6pxoM~+y-S3l-qJ{o0p&J=y5@E zT|nCu+7@IRQE6RwKs_(-)40>QjMwjG?{pVEr{qi@Wix$56z>ij9{?@#gxloOw5(Lqb&pZ;85 z|E;ch4|J{TKzm-{51=p5DW*R$nC?CJ?7?IGvBqEhxgm~qhagKfpUBSG!wT{^YtNtF z=4PxP{lB@fL;Nf|%&q!o>{VHosH{2c2s;X0e8?Y4$@*O0-}Tk~T6VvY-7Eg*?`!NB z8~;XQi3Rtq|No1K&GliBzw#hI0uj<-3_ zE_{>o!mQ6*>P^vNvy1E!W~l!_%Vl;2Eo)3)(#lt#6ZS5Y3#nDPdFxi1zk6qX;oj_G zYFGW`R;!UZRlm9#2)~`?t9}?I7vG|$Mk`vOrjDYZsnaJtYK6>im-Vz%3nS(?!etSN z_2)XK0r99G^TdzihF@((3I8hbA8`@Z*8OIS@l>BI8_&rAJaA{3 z{NzVf^SG<6tJC?xetmTB$(>ILBO7x!g6i+=P9!ZQRdSdnrW-#+- z#wXg6W@(AB{)Vp6Ke3qABdd`6l?my#pBRs|a=tr#s}-==4P4q`cX{2V#Z9=ipwS4U z6?ZwPuDMCeU5i?eBbV0cwjz4r3s=teUup#Fx`*v6bYkvvA);2dbZ?cr+3vdCVXzAu zoDri2rdufI(tSSOpY}HnTM^E#))E8YljiR%%?i;Hg0>+Ym~YZHN=n%jqo9fX)L_w4 zeyxcksQm8p%JjqgF<3o(%o|DT;muaH)8tVSKU`eAFqqCIfXe%%%cN2Zn=;8SpYKggN^{C7xW*v?VXjYQnbb3}&s25So^>WPU zXyRS;8DQo!eZxk3sb}?UX39R+24;z;lR+jOo}OJF+Q@yP^-PS@#rxy^G?ylZ!rjC4%LZV2z^VqVa-h- z_IH++k|62C?xUd5;cgfM0ittVE?Sdvm>{%Scn;;%es@}JaJAK5r@gJXaU$rUCR$Cm zGPfjai@cU<-K$b$_&pIsG3kWcYI7k4#8ton{R+0H+Fr%9TOLhKAfXt?wCQ1RsbDra z?`w z{=K=Y>4B=?LBf471j%3S)M{L$qu*yH4$&+*xn*ggGPlSZJcxN}0*#?kOSj~L%Xx8% zmh>7GucPqBaCLqmcLsDBUN+O9Wj?z*_{8b=&gZr%* z;DO`(4XE*T6eSBvZy8W}%fhu~nKnvipa>{1Wez6t)ClzBmNEZ1cf)`*{WtCUgem0!vyH2QOX7HjvRv>=E+&^z!2ufhImF->Zb$ZQFkd(Waw5D-qPMY(vO zMfEh`o1Pe(W@6N>o}T1@i6$9(9J}5PC6v4$!fv^Ndv`rqg;`z>BbXVNCZ2GW=Ap5F za0-3MFe@E#o7h=*nWICdZH(+cL0AxsssR@jZMM*5+Gu>;9!Y1hos~Lfwx-VBhxsN)X@Kf48+<=hbA=g{#6`xF?Wwc#v>> zl>Jb~ffKgl)zs!c;PHeTCa^J4Ydv5Tos@Y?>So% zKr%=bT=6ea^mUiP>)o`V#W2rM5u8pun%IPzI6>{E_W9cz@Q61|Tvqo)lJB7f?uN5j zkeW}Dfzg}Ap5C*b8M;OegSZ3=oCIwYC6i4ZfbYHz61p%F^u2_e$l@;c61oTTT0+j8)%bmi&9l>2dX@B8ln2%#+b1#+Wi+HJVw zACvneE@EssCw_vP=Rl|e@=(13?TkcNFApLio>z)F!a<_bDqa%EBR=Cow)Wv!_LST{ zBC))J2`pH4gM<)J<7Cdg0kO0ooYvNmX&Fjjjjyfm=!tB)WeOw;VHT>%S9`?O1eHAC zDz2Ei{1m=vU4wXPbpQ{;-A8yvhNo^lh1hk6nD#O3HN6pjm_OexCMDoCnQD2n=A}#110)NihJFpBX(HYMjU3+2V~P z2T(@@0Y85j^{JgYsi*4CH0s~WZy+eH=M$%1xUPv+^en>CBDzRQn}c{7dPb09fj*2l zBTw)kx#fvFIE^IxlF=JvtDUTmv)#v$D=23C_k+Jk4yee4-m!ZmIoP8&pqOXu8QvE6 zS9&Jm9n4L!#xpYmqd$>zs>r1P`1!?7T>_3)Kg0}{`} zy<86wl;lf_nP`MC#vW$~6@`Czv4 zp?_<3W=`f%LUJ%EtOqcX(L{WHX9;PC0p<4ipf%^p<4UfjqhKo>RnRjE=(*c!gw=J0 zI*2Kh4J3p~OPSWx8o^4eG-m93OR0P?Gru4{ME@Ps6St^Jm?!QKBMPu~PqX6-r>EA? zwo`{2FcYoMJVI)Ofb=$p569Bi_jX$3F!+MsZ6Rj?XD@?)o*w+(;%J}J{qUHPGU@M= zf?tVG1DIR-(y%${c)zj(z?EI5CM~TX4^|BnUZ%(Ty_a}06IEARVo&E2zqgsPWU1?i zvC5}xXM8B}b;(DF)_|!I>B)YotB=z*ZKL`KOV1a@GuO2A+%zcb#- z8AOr1otJrAR<48~6mv;qhMBjl7ky(Unpj*q7{idteUkn)MW+4Vp0v)NfeOz@2Xv7i zZ6HVi6!+j)KLc2F^GOc=vrPbp?D!yZk$~Bnv3^43BN^xqvkm-nTMz{O<<%V=I+Tw`0Ri+<=4rnC=Cm%?zXB(Q6kRn z9-V{d)W{a{z1H)0@RnJ0vONZo<*qrK!8(PIq%mupm2HXQ&q-v2OD{}L`*R9@pOffx z$L>celf3)Yr`?6}$PP%~qoo4quql+1Oh;ZmGZm&t+%1EticpHuU6h-j7HFKpKIz|F zLa%gCIzWrFAKjl{oV}TvfVlJ!i~wPolo3imV8a!Qq0AoivqXKbN=89>1u_w_J-Az0 zXw5zyq<8cO$$kJ>ixSWM;Z{UR{rLv@?)+71qWTiZh&4?AkAx`ndX9|@G`z79V1lt# zLh{M54IqTPbo+m-qI6_m6m#UgA)5X-L|VjQ&*ugTueN=$e??_my^)82dLwLB>P=y? z%;g?H9@m1Gh2RS6dxTl2If=cAG!+!pfTAJ@L*SL`S@AV+L+%&8QckM8T`#Vg;#x14 z4Ae_&M*NO^8U&wf#1$jHWH$W0*D-ELjq1$c>BudK}#MWov`SMbLx! zN8ziHHT4bK`D=^P^?&)lX41UzLVGe zVYa)pg#<-hMuATZYCL6g5oxM0V4a#}GT=RWx<(zxvW}E9zRBaN2-~D2GDsI4*`xnL z;I&J2#UB!n9u*r@ke7w5gS5`1I5L=%LhkKSAr4@K(IGwZitrf{g=HS4e3V9z0($$m zt2;RcZ)BU8DUtXin)quf_C`3O4w?>-ipe`56AA;k&qs`ZCEi6> z&sOrcluvb#7}8H z^rTDywG8y9qzd#w&O*=o_D)PBB(G)j_LnVhurhZ?O7a{z{N6qY@h;V)F(r_cBafP3 zv^ym4-u}M4?;0-_(2_d%3Wh_4mzjqM(~~#0m#@?!tY4fVb}Lk@QsGnakP1%4A5-y& ziZ7@Ls385JcP1^9yC!ZDStjsgvTlYt46FS?r&~N)Nml92X~RIcfz&iU+0dJ-y-+!A z8O>1SLStnE`d0AqG4Y`LeS$QuGl@F+r!?_5C{jC&e0&vE(GbNz>CjAqPd&>Wr1Hst zr8*Z+h;Aa(ksm%%2YM`177}VGX@r!yOp43wu1fz|lnqmfm7z?Jnn8qbRU$2t%~q)X@S^2^LN5)JjFNGHY^Xj) zkYJ6O#y(ifEyE=L+j^lqcTjfyDM19#0Boo~wW*ry1#m!S6Ro9PSHDht0XyG0IRl@O zoEHF??5^@G6a`RUy3`t|FL6>eSoLomdnoIndf~GZ{zTt9qCaP!AMsXkg1u!+C@bnC z20Vzb4b;hZpcR#@5%MZPb1mm`{~d?S(ScEWY-sEiYy7Bg3?pR*2!zY=!ZwZX46FF9 S@qj3F8AkDiF|kt{dhx#stj>P` literal 0 HcmV?d00001 diff --git a/gestao_raul/Lib/site-packages/pip/_vendor/truststore/__pycache__/_openssl.cpython-310.pyc b/gestao_raul/Lib/site-packages/pip/_vendor/truststore/__pycache__/_openssl.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..de9b39c785ae95a5bd95d96f899079b0aa49d1e6 GIT binary patch literal 1476 zcmZ`(O>f&a7$zx7mOt~+Iv-sR#xP*>!SM#{urCZt9S04N`4DG2XwC#hq-{B}q>}WS zWDc;Qx$eHB(_68B#OqG`3&Yy(rJNw^VKn&g>m~W{c^^5gR!a!V%ibTOhed?`G=u*Z zm_y${mA?Zp#BhwfWs5zWkBLX}*7B^pr5+t2MqXmi=49b8>jrxTjwUXn+?o`b&FQ4X z@HQG!=CHyweSy6)b9n_;sxVh%rEBWdikPjka=xR&SNQ5SVpWL2PY|;i9=fc?R<3Pt zjp06OuKfkh=nBvAgveDuOVkxL?F%gGbF{E;5Jt%Zt69&U5=FPIUKn=Y$;>u@y7|dej|HMT!yzsL? zjioTGOtcy44S(73!!%Jrlt|xbBK4O1pY8gA-`Vx|4-UJ~_Vy0;c8|M#O;V|8exMUc zLqpf&G+=iZ$0f|%>wTV_i(uaH=U*}whH7lZF47jp2N$0{A{rQvMK6D0>n zM^Cz)!H7#0q`rVR4GyEzfs7PyWkGlrz{((tvNl|puvD~_m`Np7DtOyZGoFAVJK2R^ zH_seKqnY6OgZa7IfQ#ir0P>4l*}x_2+7(>E6q7e4D%N2^6ae1It$Bh`u>)0p3ZT#g zFUTC-VCfovLZ&S;g{($dI2~AJaG+s(Vjq=() zy?}p}C6RmndCw@T-LIx8o5lQVql5eiz(p>;{aK|lwI1X3N2E$$gBRaAguHPq@|w`v GKmP(j_=nK| literal 0 HcmV?d00001 diff --git a/gestao_raul/Lib/site-packages/pip/_vendor/truststore/__pycache__/_ssl_constants.cpython-310.pyc b/gestao_raul/Lib/site-packages/pip/_vendor/truststore/__pycache__/_ssl_constants.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..f416dee6f83ac16316ce542eaa3b5137c5e1fa32 GIT binary patch literal 790 zcmZ`$O>fjN5Vaj|HqCw%DlVX&Ktfs}*n3qW#KNr<5oED3>?eTeQ8*puv-K!iR(Ps_L*NPfl46X3~E(qyDKjFTZo zBiU=a$PjT~_9eXxWhD1L^W=`Cb25p4Ap>&i9|>m~>#WlT#C(1-)5^g|CuE}}7?D?* zwf^CMF4?BOz0=R@m3yz1A6Q$7eAC7cuE7+SE3woPd}zQmM&+!1`sTFXI4Lqivj+%{ zl=KT*lQsRyC{6~s($h)c9|&!VMWM1vY@XecHSJh^UkD3MhzT=2jJxD_V%mlLhS^bi zZo$~}15{3@uXNrlK{=bAoxOZLOBY~WriICxDm^JKQd>B9T4(uHhJVt!sHfr@l+xBl z^}SBLiLir@-qx!!8?gYLCs++tI~bBd9Dj1ZHEMl|Fx9rvSP$T$rtM`Quo-_{r#|M>?$ C)8a<} literal 0 HcmV?d00001 diff --git a/gestao_raul/Lib/site-packages/pip/_vendor/truststore/__pycache__/_windows.cpython-310.pyc b/gestao_raul/Lib/site-packages/pip/_vendor/truststore/__pycache__/_windows.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..7edf3472b3f70e14a3c0407ede2181ef70a0c5d8 GIT binary patch literal 10570 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 VA^Y==eS=Te{XY9im~W-^{|76*8ngfa literal 0 HcmV?d00001 diff --git a/gestao_raul/Lib/site-packages/pip/_vendor/truststore/_api.py b/gestao_raul/Lib/site-packages/pip/_vendor/truststore/_api.py new file mode 100644 index 0000000..aeb023a --- /dev/null +++ b/gestao_raul/Lib/site-packages/pip/_vendor/truststore/_api.py @@ -0,0 +1,316 @@ +import os +import platform +import socket +import ssl +import sys +import typing + +import _ssl # type: ignore[import-not-found] + +from ._ssl_constants import ( + _original_SSLContext, + _original_super_SSLContext, + _truststore_SSLContext_dunder_class, + _truststore_SSLContext_super_class, +) + +if platform.system() == "Windows": + from ._windows import _configure_context, _verify_peercerts_impl +elif platform.system() == "Darwin": + from ._macos import _configure_context, _verify_peercerts_impl +else: + from ._openssl import _configure_context, _verify_peercerts_impl + +if typing.TYPE_CHECKING: + from pip._vendor.typing_extensions import Buffer + +# From typeshed/stdlib/ssl.pyi +_StrOrBytesPath: typing.TypeAlias = str | bytes | os.PathLike[str] | os.PathLike[bytes] +_PasswordType: typing.TypeAlias = str | bytes | typing.Callable[[], str | bytes] + + +def inject_into_ssl() -> None: + """Injects the :class:`truststore.SSLContext` into the ``ssl`` + module by replacing :class:`ssl.SSLContext`. + """ + setattr(ssl, "SSLContext", SSLContext) + # urllib3 holds on to its own reference of ssl.SSLContext + # so we need to replace that reference too. + try: + import pip._vendor.urllib3.util.ssl_ as urllib3_ssl + + setattr(urllib3_ssl, "SSLContext", SSLContext) + except ImportError: + pass + + +def extract_from_ssl() -> None: + """Restores the :class:`ssl.SSLContext` class to its original state""" + setattr(ssl, "SSLContext", _original_SSLContext) + try: + import pip._vendor.urllib3.util.ssl_ as urllib3_ssl + + urllib3_ssl.SSLContext = _original_SSLContext # type: ignore[assignment] + except ImportError: + pass + + +class SSLContext(_truststore_SSLContext_super_class): # type: ignore[misc] + """SSLContext API that uses system certificates on all platforms""" + + @property # type: ignore[misc] + def __class__(self) -> type: + # Dirty hack to get around isinstance() checks + # for ssl.SSLContext instances in aiohttp/trustme + # when using non-CPython implementations. + return _truststore_SSLContext_dunder_class or SSLContext + + def __init__(self, protocol: int = None) -> None: # type: ignore[assignment] + self._ctx = _original_SSLContext(protocol) + + class TruststoreSSLObject(ssl.SSLObject): + # This object exists because wrap_bio() doesn't + # immediately do the handshake so we need to do + # certificate verifications after SSLObject.do_handshake() + + def do_handshake(self) -> None: + ret = super().do_handshake() + _verify_peercerts(self, server_hostname=self.server_hostname) + return ret + + self._ctx.sslobject_class = TruststoreSSLObject + + def wrap_socket( + self, + sock: socket.socket, + server_side: bool = False, + do_handshake_on_connect: bool = True, + suppress_ragged_eofs: bool = True, + server_hostname: str | None = None, + session: ssl.SSLSession | None = None, + ) -> ssl.SSLSocket: + # Use a context manager here because the + # inner SSLContext holds on to our state + # but also does the actual handshake. + with _configure_context(self._ctx): + ssl_sock = self._ctx.wrap_socket( + sock, + server_side=server_side, + server_hostname=server_hostname, + do_handshake_on_connect=do_handshake_on_connect, + suppress_ragged_eofs=suppress_ragged_eofs, + session=session, + ) + try: + _verify_peercerts(ssl_sock, server_hostname=server_hostname) + except Exception: + ssl_sock.close() + raise + return ssl_sock + + def wrap_bio( + self, + incoming: ssl.MemoryBIO, + outgoing: ssl.MemoryBIO, + server_side: bool = False, + server_hostname: str | None = None, + session: ssl.SSLSession | None = None, + ) -> ssl.SSLObject: + with _configure_context(self._ctx): + ssl_obj = self._ctx.wrap_bio( + incoming, + outgoing, + server_hostname=server_hostname, + server_side=server_side, + session=session, + ) + return ssl_obj + + def load_verify_locations( + self, + cafile: str | bytes | os.PathLike[str] | os.PathLike[bytes] | None = None, + capath: str | bytes | os.PathLike[str] | os.PathLike[bytes] | None = None, + cadata: typing.Union[str, "Buffer", None] = None, + ) -> None: + return self._ctx.load_verify_locations( + cafile=cafile, capath=capath, cadata=cadata + ) + + def load_cert_chain( + self, + certfile: _StrOrBytesPath, + keyfile: _StrOrBytesPath | None = None, + password: _PasswordType | None = None, + ) -> None: + return self._ctx.load_cert_chain( + certfile=certfile, keyfile=keyfile, password=password + ) + + def load_default_certs( + self, purpose: ssl.Purpose = ssl.Purpose.SERVER_AUTH + ) -> None: + return self._ctx.load_default_certs(purpose) + + def set_alpn_protocols(self, alpn_protocols: typing.Iterable[str]) -> None: + return self._ctx.set_alpn_protocols(alpn_protocols) + + def set_npn_protocols(self, npn_protocols: typing.Iterable[str]) -> None: + return self._ctx.set_npn_protocols(npn_protocols) + + def set_ciphers(self, __cipherlist: str) -> None: + return self._ctx.set_ciphers(__cipherlist) + + def get_ciphers(self) -> typing.Any: + return self._ctx.get_ciphers() + + def session_stats(self) -> dict[str, int]: + return self._ctx.session_stats() + + def cert_store_stats(self) -> dict[str, int]: + raise NotImplementedError() + + def set_default_verify_paths(self) -> None: + self._ctx.set_default_verify_paths() + + @typing.overload + def get_ca_certs( + self, binary_form: typing.Literal[False] = ... + ) -> list[typing.Any]: ... + + @typing.overload + def get_ca_certs(self, binary_form: typing.Literal[True] = ...) -> list[bytes]: ... + + @typing.overload + def get_ca_certs(self, binary_form: bool = ...) -> typing.Any: ... + + def get_ca_certs(self, binary_form: bool = False) -> list[typing.Any] | list[bytes]: + raise NotImplementedError() + + @property + def check_hostname(self) -> bool: + return self._ctx.check_hostname + + @check_hostname.setter + def check_hostname(self, value: bool) -> None: + self._ctx.check_hostname = value + + @property + def hostname_checks_common_name(self) -> bool: + return self._ctx.hostname_checks_common_name + + @hostname_checks_common_name.setter + def hostname_checks_common_name(self, value: bool) -> None: + self._ctx.hostname_checks_common_name = value + + @property + def keylog_filename(self) -> str: + return self._ctx.keylog_filename + + @keylog_filename.setter + def keylog_filename(self, value: str) -> None: + self._ctx.keylog_filename = value + + @property + def maximum_version(self) -> ssl.TLSVersion: + return self._ctx.maximum_version + + @maximum_version.setter + def maximum_version(self, value: ssl.TLSVersion) -> None: + _original_super_SSLContext.maximum_version.__set__( # type: ignore[attr-defined] + self._ctx, value + ) + + @property + def minimum_version(self) -> ssl.TLSVersion: + return self._ctx.minimum_version + + @minimum_version.setter + def minimum_version(self, value: ssl.TLSVersion) -> None: + _original_super_SSLContext.minimum_version.__set__( # type: ignore[attr-defined] + self._ctx, value + ) + + @property + def options(self) -> ssl.Options: + return self._ctx.options + + @options.setter + def options(self, value: ssl.Options) -> None: + _original_super_SSLContext.options.__set__( # type: ignore[attr-defined] + self._ctx, value + ) + + @property + def post_handshake_auth(self) -> bool: + return self._ctx.post_handshake_auth + + @post_handshake_auth.setter + def post_handshake_auth(self, value: bool) -> None: + self._ctx.post_handshake_auth = value + + @property + def protocol(self) -> ssl._SSLMethod: + return self._ctx.protocol + + @property + def security_level(self) -> int: + return self._ctx.security_level + + @property + def verify_flags(self) -> ssl.VerifyFlags: + return self._ctx.verify_flags + + @verify_flags.setter + def verify_flags(self, value: ssl.VerifyFlags) -> None: + _original_super_SSLContext.verify_flags.__set__( # type: ignore[attr-defined] + self._ctx, value + ) + + @property + def verify_mode(self) -> ssl.VerifyMode: + return self._ctx.verify_mode + + @verify_mode.setter + def verify_mode(self, value: ssl.VerifyMode) -> None: + _original_super_SSLContext.verify_mode.__set__( # type: ignore[attr-defined] + self._ctx, value + ) + + +# Python 3.13+ makes get_unverified_chain() a public API that only returns DER +# encoded certificates. We detect whether we need to call public_bytes() for 3.10->3.12 +# Pre-3.13 returned None instead of an empty list from get_unverified_chain() +if sys.version_info >= (3, 13): + + def _get_unverified_chain_bytes(sslobj: ssl.SSLObject) -> list[bytes]: + unverified_chain = sslobj.get_unverified_chain() or () # type: ignore[attr-defined] + return [ + cert if isinstance(cert, bytes) else cert.public_bytes(_ssl.ENCODING_DER) + for cert in unverified_chain + ] + +else: + + def _get_unverified_chain_bytes(sslobj: ssl.SSLObject) -> list[bytes]: + unverified_chain = sslobj.get_unverified_chain() or () # type: ignore[attr-defined] + return [cert.public_bytes(_ssl.ENCODING_DER) for cert in unverified_chain] + + +def _verify_peercerts( + sock_or_sslobj: ssl.SSLSocket | ssl.SSLObject, server_hostname: str | None +) -> None: + """ + Verifies the peer certificates from an SSLSocket or SSLObject + against the certificates in the OS trust store. + """ + sslobj: ssl.SSLObject = sock_or_sslobj # type: ignore[assignment] + try: + while not hasattr(sslobj, "get_unverified_chain"): + sslobj = sslobj._sslobj # type: ignore[attr-defined] + except AttributeError: + pass + + cert_bytes = _get_unverified_chain_bytes(sslobj) + _verify_peercerts_impl( + sock_or_sslobj.context, cert_bytes, server_hostname=server_hostname + ) diff --git a/gestao_raul/Lib/site-packages/pip/_vendor/truststore/_macos.py b/gestao_raul/Lib/site-packages/pip/_vendor/truststore/_macos.py new file mode 100644 index 0000000..3450307 --- /dev/null +++ b/gestao_raul/Lib/site-packages/pip/_vendor/truststore/_macos.py @@ -0,0 +1,571 @@ +import contextlib +import ctypes +import platform +import ssl +import typing +from ctypes import ( + CDLL, + POINTER, + c_bool, + c_char_p, + c_int32, + c_long, + c_uint32, + c_ulong, + c_void_p, +) +from ctypes.util import find_library + +from ._ssl_constants import _set_ssl_context_verify_mode + +_mac_version = platform.mac_ver()[0] +_mac_version_info = tuple(map(int, _mac_version.split("."))) +if _mac_version_info < (10, 8): + raise ImportError( + f"Only OS X 10.8 and newer are supported, not {_mac_version_info[0]}.{_mac_version_info[1]}" + ) + +_is_macos_version_10_14_or_later = _mac_version_info >= (10, 14) + + +def _load_cdll(name: str, macos10_16_path: str) -> CDLL: + """Loads a CDLL by name, falling back to known path on 10.16+""" + try: + # Big Sur is technically 11 but we use 10.16 due to the Big Sur + # beta being labeled as 10.16. + path: str | None + if _mac_version_info >= (10, 16): + path = macos10_16_path + else: + path = find_library(name) + if not path: + raise OSError # Caught and reraised as 'ImportError' + return CDLL(path, use_errno=True) + except OSError: + raise ImportError(f"The library {name} failed to load") from None + + +Security = _load_cdll( + "Security", "/System/Library/Frameworks/Security.framework/Security" +) +CoreFoundation = _load_cdll( + "CoreFoundation", + "/System/Library/Frameworks/CoreFoundation.framework/CoreFoundation", +) + +Boolean = c_bool +CFIndex = c_long +CFStringEncoding = c_uint32 +CFData = c_void_p +CFString = c_void_p +CFArray = c_void_p +CFMutableArray = c_void_p +CFError = c_void_p +CFType = c_void_p +CFTypeID = c_ulong +CFTypeRef = POINTER(CFType) +CFAllocatorRef = c_void_p + +OSStatus = c_int32 + +CFErrorRef = POINTER(CFError) +CFDataRef = POINTER(CFData) +CFStringRef = POINTER(CFString) +CFArrayRef = POINTER(CFArray) +CFMutableArrayRef = POINTER(CFMutableArray) +CFArrayCallBacks = c_void_p +CFOptionFlags = c_uint32 + +SecCertificateRef = POINTER(c_void_p) +SecPolicyRef = POINTER(c_void_p) +SecTrustRef = POINTER(c_void_p) +SecTrustResultType = c_uint32 +SecTrustOptionFlags = c_uint32 + +try: + Security.SecCertificateCreateWithData.argtypes = [CFAllocatorRef, CFDataRef] + Security.SecCertificateCreateWithData.restype = SecCertificateRef + + Security.SecCertificateCopyData.argtypes = [SecCertificateRef] + Security.SecCertificateCopyData.restype = CFDataRef + + Security.SecCopyErrorMessageString.argtypes = [OSStatus, c_void_p] + Security.SecCopyErrorMessageString.restype = CFStringRef + + Security.SecTrustSetAnchorCertificates.argtypes = [SecTrustRef, CFArrayRef] + Security.SecTrustSetAnchorCertificates.restype = OSStatus + + Security.SecTrustSetAnchorCertificatesOnly.argtypes = [SecTrustRef, Boolean] + Security.SecTrustSetAnchorCertificatesOnly.restype = OSStatus + + Security.SecPolicyCreateRevocation.argtypes = [CFOptionFlags] + Security.SecPolicyCreateRevocation.restype = SecPolicyRef + + Security.SecPolicyCreateSSL.argtypes = [Boolean, CFStringRef] + Security.SecPolicyCreateSSL.restype = SecPolicyRef + + Security.SecTrustCreateWithCertificates.argtypes = [ + CFTypeRef, + CFTypeRef, + POINTER(SecTrustRef), + ] + Security.SecTrustCreateWithCertificates.restype = OSStatus + + Security.SecTrustGetTrustResult.argtypes = [ + SecTrustRef, + POINTER(SecTrustResultType), + ] + Security.SecTrustGetTrustResult.restype = OSStatus + + Security.SecTrustEvaluate.argtypes = [ + SecTrustRef, + POINTER(SecTrustResultType), + ] + Security.SecTrustEvaluate.restype = OSStatus + + Security.SecTrustRef = SecTrustRef # type: ignore[attr-defined] + Security.SecTrustResultType = SecTrustResultType # type: ignore[attr-defined] + Security.OSStatus = OSStatus # type: ignore[attr-defined] + + kSecRevocationUseAnyAvailableMethod = 3 + kSecRevocationRequirePositiveResponse = 8 + + CoreFoundation.CFRelease.argtypes = [CFTypeRef] + CoreFoundation.CFRelease.restype = None + + CoreFoundation.CFGetTypeID.argtypes = [CFTypeRef] + CoreFoundation.CFGetTypeID.restype = CFTypeID + + CoreFoundation.CFStringCreateWithCString.argtypes = [ + CFAllocatorRef, + c_char_p, + CFStringEncoding, + ] + CoreFoundation.CFStringCreateWithCString.restype = CFStringRef + + CoreFoundation.CFStringGetCStringPtr.argtypes = [CFStringRef, CFStringEncoding] + CoreFoundation.CFStringGetCStringPtr.restype = c_char_p + + CoreFoundation.CFStringGetCString.argtypes = [ + CFStringRef, + c_char_p, + CFIndex, + CFStringEncoding, + ] + CoreFoundation.CFStringGetCString.restype = c_bool + + CoreFoundation.CFDataCreate.argtypes = [CFAllocatorRef, c_char_p, CFIndex] + CoreFoundation.CFDataCreate.restype = CFDataRef + + CoreFoundation.CFDataGetLength.argtypes = [CFDataRef] + CoreFoundation.CFDataGetLength.restype = CFIndex + + CoreFoundation.CFDataGetBytePtr.argtypes = [CFDataRef] + CoreFoundation.CFDataGetBytePtr.restype = c_void_p + + CoreFoundation.CFArrayCreate.argtypes = [ + CFAllocatorRef, + POINTER(CFTypeRef), + CFIndex, + CFArrayCallBacks, + ] + CoreFoundation.CFArrayCreate.restype = CFArrayRef + + CoreFoundation.CFArrayCreateMutable.argtypes = [ + CFAllocatorRef, + CFIndex, + CFArrayCallBacks, + ] + CoreFoundation.CFArrayCreateMutable.restype = CFMutableArrayRef + + CoreFoundation.CFArrayAppendValue.argtypes = [CFMutableArrayRef, c_void_p] + CoreFoundation.CFArrayAppendValue.restype = None + + CoreFoundation.CFArrayGetCount.argtypes = [CFArrayRef] + CoreFoundation.CFArrayGetCount.restype = CFIndex + + CoreFoundation.CFArrayGetValueAtIndex.argtypes = [CFArrayRef, CFIndex] + CoreFoundation.CFArrayGetValueAtIndex.restype = c_void_p + + CoreFoundation.CFErrorGetCode.argtypes = [CFErrorRef] + CoreFoundation.CFErrorGetCode.restype = CFIndex + + CoreFoundation.CFErrorCopyDescription.argtypes = [CFErrorRef] + CoreFoundation.CFErrorCopyDescription.restype = CFStringRef + + CoreFoundation.kCFAllocatorDefault = CFAllocatorRef.in_dll( # type: ignore[attr-defined] + CoreFoundation, "kCFAllocatorDefault" + ) + CoreFoundation.kCFTypeArrayCallBacks = c_void_p.in_dll( # type: ignore[attr-defined] + CoreFoundation, "kCFTypeArrayCallBacks" + ) + + CoreFoundation.CFTypeRef = CFTypeRef # type: ignore[attr-defined] + CoreFoundation.CFArrayRef = CFArrayRef # type: ignore[attr-defined] + CoreFoundation.CFStringRef = CFStringRef # type: ignore[attr-defined] + CoreFoundation.CFErrorRef = CFErrorRef # type: ignore[attr-defined] + +except AttributeError as e: + raise ImportError(f"Error initializing ctypes: {e}") from None + +# SecTrustEvaluateWithError is macOS 10.14+ +if _is_macos_version_10_14_or_later: + try: + Security.SecTrustEvaluateWithError.argtypes = [ + SecTrustRef, + POINTER(CFErrorRef), + ] + Security.SecTrustEvaluateWithError.restype = c_bool + except AttributeError as e: + raise ImportError(f"Error initializing ctypes: {e}") from None + + +def _handle_osstatus(result: OSStatus, _: typing.Any, args: typing.Any) -> typing.Any: + """ + Raises an error if the OSStatus value is non-zero. + """ + if int(result) == 0: + return args + + # Returns a CFString which we need to transform + # into a UTF-8 Python string. + error_message_cfstring = None + try: + error_message_cfstring = Security.SecCopyErrorMessageString(result, None) + + # First step is convert the CFString into a C string pointer. + # We try the fast no-copy way first. + error_message_cfstring_c_void_p = ctypes.cast( + error_message_cfstring, ctypes.POINTER(ctypes.c_void_p) + ) + message = CoreFoundation.CFStringGetCStringPtr( + error_message_cfstring_c_void_p, CFConst.kCFStringEncodingUTF8 + ) + + # Quoting the Apple dev docs: + # + # "A pointer to a C string or NULL if the internal + # storage of theString does not allow this to be + # returned efficiently." + # + # So we need to get our hands dirty. + if message is None: + buffer = ctypes.create_string_buffer(1024) + result = CoreFoundation.CFStringGetCString( + error_message_cfstring_c_void_p, + buffer, + 1024, + CFConst.kCFStringEncodingUTF8, + ) + if not result: + raise OSError("Error copying C string from CFStringRef") + message = buffer.value + + finally: + if error_message_cfstring is not None: + CoreFoundation.CFRelease(error_message_cfstring) + + # If no message can be found for this status we come + # up with a generic one that forwards the status code. + if message is None or message == "": + message = f"SecureTransport operation returned a non-zero OSStatus: {result}" + + raise ssl.SSLError(message) + + +Security.SecTrustCreateWithCertificates.errcheck = _handle_osstatus # type: ignore[assignment] +Security.SecTrustSetAnchorCertificates.errcheck = _handle_osstatus # type: ignore[assignment] +Security.SecTrustSetAnchorCertificatesOnly.errcheck = _handle_osstatus # type: ignore[assignment] +Security.SecTrustGetTrustResult.errcheck = _handle_osstatus # type: ignore[assignment] +Security.SecTrustEvaluate.errcheck = _handle_osstatus # type: ignore[assignment] + + +class CFConst: + """CoreFoundation constants""" + + kCFStringEncodingUTF8 = CFStringEncoding(0x08000100) + + errSecIncompleteCertRevocationCheck = -67635 + errSecHostNameMismatch = -67602 + errSecCertificateExpired = -67818 + errSecNotTrusted = -67843 + + +def _bytes_to_cf_data_ref(value: bytes) -> CFDataRef: # type: ignore[valid-type] + return CoreFoundation.CFDataCreate( # type: ignore[no-any-return] + CoreFoundation.kCFAllocatorDefault, value, len(value) + ) + + +def _bytes_to_cf_string(value: bytes) -> CFString: + """ + Given a Python binary data, create a CFString. + The string must be CFReleased by the caller. + """ + c_str = ctypes.c_char_p(value) + cf_str = CoreFoundation.CFStringCreateWithCString( + CoreFoundation.kCFAllocatorDefault, + c_str, + CFConst.kCFStringEncodingUTF8, + ) + return cf_str # type: ignore[no-any-return] + + +def _cf_string_ref_to_str(cf_string_ref: CFStringRef) -> str | None: # type: ignore[valid-type] + """ + Creates a Unicode string from a CFString object. Used entirely for error + reporting. + Yes, it annoys me quite a lot that this function is this complex. + """ + + string = CoreFoundation.CFStringGetCStringPtr( + cf_string_ref, CFConst.kCFStringEncodingUTF8 + ) + if string is None: + buffer = ctypes.create_string_buffer(1024) + result = CoreFoundation.CFStringGetCString( + cf_string_ref, buffer, 1024, CFConst.kCFStringEncodingUTF8 + ) + if not result: + raise OSError("Error copying C string from CFStringRef") + string = buffer.value + if string is not None: + string = string.decode("utf-8") + return string # type: ignore[no-any-return] + + +def _der_certs_to_cf_cert_array(certs: list[bytes]) -> CFMutableArrayRef: # type: ignore[valid-type] + """Builds a CFArray of SecCertificateRefs from a list of DER-encoded certificates. + Responsibility of the caller to call CoreFoundation.CFRelease on the CFArray. + """ + cf_array = CoreFoundation.CFArrayCreateMutable( + CoreFoundation.kCFAllocatorDefault, + 0, + ctypes.byref(CoreFoundation.kCFTypeArrayCallBacks), + ) + if not cf_array: + raise MemoryError("Unable to allocate memory!") + + for cert_data in certs: + cf_data = None + sec_cert_ref = None + try: + cf_data = _bytes_to_cf_data_ref(cert_data) + sec_cert_ref = Security.SecCertificateCreateWithData( + CoreFoundation.kCFAllocatorDefault, cf_data + ) + CoreFoundation.CFArrayAppendValue(cf_array, sec_cert_ref) + finally: + if cf_data: + CoreFoundation.CFRelease(cf_data) + if sec_cert_ref: + CoreFoundation.CFRelease(sec_cert_ref) + + return cf_array # type: ignore[no-any-return] + + +@contextlib.contextmanager +def _configure_context(ctx: ssl.SSLContext) -> typing.Iterator[None]: + check_hostname = ctx.check_hostname + verify_mode = ctx.verify_mode + ctx.check_hostname = False + _set_ssl_context_verify_mode(ctx, ssl.CERT_NONE) + try: + yield + finally: + ctx.check_hostname = check_hostname + _set_ssl_context_verify_mode(ctx, verify_mode) + + +def _verify_peercerts_impl( + ssl_context: ssl.SSLContext, + cert_chain: list[bytes], + server_hostname: str | None = None, +) -> None: + certs = None + policies = None + trust = None + try: + # Only set a hostname on the policy if we're verifying the hostname + # on the leaf certificate. + if server_hostname is not None and ssl_context.check_hostname: + cf_str_hostname = None + try: + cf_str_hostname = _bytes_to_cf_string(server_hostname.encode("ascii")) + ssl_policy = Security.SecPolicyCreateSSL(True, cf_str_hostname) + finally: + if cf_str_hostname: + CoreFoundation.CFRelease(cf_str_hostname) + else: + ssl_policy = Security.SecPolicyCreateSSL(True, None) + + policies = ssl_policy + if ssl_context.verify_flags & ssl.VERIFY_CRL_CHECK_CHAIN: + # Add explicit policy requiring positive revocation checks + policies = CoreFoundation.CFArrayCreateMutable( + CoreFoundation.kCFAllocatorDefault, + 0, + ctypes.byref(CoreFoundation.kCFTypeArrayCallBacks), + ) + CoreFoundation.CFArrayAppendValue(policies, ssl_policy) + CoreFoundation.CFRelease(ssl_policy) + revocation_policy = Security.SecPolicyCreateRevocation( + kSecRevocationUseAnyAvailableMethod + | kSecRevocationRequirePositiveResponse + ) + CoreFoundation.CFArrayAppendValue(policies, revocation_policy) + CoreFoundation.CFRelease(revocation_policy) + elif ssl_context.verify_flags & ssl.VERIFY_CRL_CHECK_LEAF: + raise NotImplementedError("VERIFY_CRL_CHECK_LEAF not implemented for macOS") + + certs = None + try: + certs = _der_certs_to_cf_cert_array(cert_chain) + + # Now that we have certificates loaded and a SecPolicy + # we can finally create a SecTrust object! + trust = Security.SecTrustRef() + Security.SecTrustCreateWithCertificates( + certs, policies, ctypes.byref(trust) + ) + + finally: + # The certs are now being held by SecTrust so we can + # release our handles for the array. + if certs: + CoreFoundation.CFRelease(certs) + + # If there are additional trust anchors to load we need to transform + # the list of DER-encoded certificates into a CFArray. + ctx_ca_certs_der: list[bytes] | None = ssl_context.get_ca_certs( + binary_form=True + ) + if ctx_ca_certs_der: + ctx_ca_certs = None + try: + ctx_ca_certs = _der_certs_to_cf_cert_array(ctx_ca_certs_der) + Security.SecTrustSetAnchorCertificates(trust, ctx_ca_certs) + finally: + if ctx_ca_certs: + CoreFoundation.CFRelease(ctx_ca_certs) + + # We always want system certificates. + Security.SecTrustSetAnchorCertificatesOnly(trust, False) + + # macOS 10.13 and earlier don't support SecTrustEvaluateWithError() + # so we use SecTrustEvaluate() which means we need to construct error + # messages ourselves. + if _is_macos_version_10_14_or_later: + _verify_peercerts_impl_macos_10_14(ssl_context, trust) + else: + _verify_peercerts_impl_macos_10_13(ssl_context, trust) + finally: + if policies: + CoreFoundation.CFRelease(policies) + if trust: + CoreFoundation.CFRelease(trust) + + +def _verify_peercerts_impl_macos_10_13( + ssl_context: ssl.SSLContext, sec_trust_ref: typing.Any +) -> None: + """Verify using 'SecTrustEvaluate' API for macOS 10.13 and earlier. + macOS 10.14 added the 'SecTrustEvaluateWithError' API. + """ + sec_trust_result_type = Security.SecTrustResultType() + Security.SecTrustEvaluate(sec_trust_ref, ctypes.byref(sec_trust_result_type)) + + try: + sec_trust_result_type_as_int = int(sec_trust_result_type.value) + except (ValueError, TypeError): + sec_trust_result_type_as_int = -1 + + # Apple doesn't document these values in their own API docs. + # See: https://github.com/xybp888/iOS-SDKs/blob/master/iPhoneOS13.0.sdk/System/Library/Frameworks/Security.framework/Headers/SecTrust.h#L84 + if ( + ssl_context.verify_mode == ssl.CERT_REQUIRED + and sec_trust_result_type_as_int not in (1, 4) + ): + # Note that we're not able to ignore only hostname errors + # for macOS 10.13 and earlier, so check_hostname=False will + # still return an error. + sec_trust_result_type_to_message = { + 0: "Invalid trust result type", + # 1: "Trust evaluation succeeded", + 2: "User confirmation required", + 3: "User specified that certificate is not trusted", + # 4: "Trust result is unspecified", + 5: "Recoverable trust failure occurred", + 6: "Fatal trust failure occurred", + 7: "Other error occurred, certificate may be revoked", + } + error_message = sec_trust_result_type_to_message.get( + sec_trust_result_type_as_int, + f"Unknown trust result: {sec_trust_result_type_as_int}", + ) + + err = ssl.SSLCertVerificationError(error_message) + err.verify_message = error_message + err.verify_code = sec_trust_result_type_as_int + raise err + + +def _verify_peercerts_impl_macos_10_14( + ssl_context: ssl.SSLContext, sec_trust_ref: typing.Any +) -> None: + """Verify using 'SecTrustEvaluateWithError' API for macOS 10.14+.""" + cf_error = CoreFoundation.CFErrorRef() + sec_trust_eval_result = Security.SecTrustEvaluateWithError( + sec_trust_ref, ctypes.byref(cf_error) + ) + # sec_trust_eval_result is a bool (0 or 1) + # where 1 means that the certs are trusted. + if sec_trust_eval_result == 1: + is_trusted = True + elif sec_trust_eval_result == 0: + is_trusted = False + else: + raise ssl.SSLError( + f"Unknown result from Security.SecTrustEvaluateWithError: {sec_trust_eval_result!r}" + ) + + cf_error_code = 0 + if not is_trusted: + cf_error_code = CoreFoundation.CFErrorGetCode(cf_error) + + # If the error is a known failure that we're + # explicitly okay with from SSLContext configuration + # we can set is_trusted accordingly. + if ssl_context.verify_mode != ssl.CERT_REQUIRED and ( + cf_error_code == CFConst.errSecNotTrusted + or cf_error_code == CFConst.errSecCertificateExpired + ): + is_trusted = True + + # If we're still not trusted then we start to + # construct and raise the SSLCertVerificationError. + if not is_trusted: + cf_error_string_ref = None + try: + cf_error_string_ref = CoreFoundation.CFErrorCopyDescription(cf_error) + + # Can this ever return 'None' if there's a CFError? + cf_error_message = ( + _cf_string_ref_to_str(cf_error_string_ref) + or "Certificate verification failed" + ) + + # TODO: Not sure if we need the SecTrustResultType for anything? + # We only care whether or not it's a success or failure for now. + sec_trust_result_type = Security.SecTrustResultType() + Security.SecTrustGetTrustResult( + sec_trust_ref, ctypes.byref(sec_trust_result_type) + ) + + err = ssl.SSLCertVerificationError(cf_error_message) + err.verify_message = cf_error_message + err.verify_code = cf_error_code + raise err + finally: + if cf_error_string_ref: + CoreFoundation.CFRelease(cf_error_string_ref) diff --git a/gestao_raul/Lib/site-packages/pip/_vendor/truststore/_openssl.py b/gestao_raul/Lib/site-packages/pip/_vendor/truststore/_openssl.py new file mode 100644 index 0000000..9951cf7 --- /dev/null +++ b/gestao_raul/Lib/site-packages/pip/_vendor/truststore/_openssl.py @@ -0,0 +1,66 @@ +import contextlib +import os +import re +import ssl +import typing + +# candidates based on https://github.com/tiran/certifi-system-store by Christian Heimes +_CA_FILE_CANDIDATES = [ + # Alpine, Arch, Fedora 34+, OpenWRT, RHEL 9+, BSD + "/etc/ssl/cert.pem", + # Fedora <= 34, RHEL <= 9, CentOS <= 9 + "/etc/pki/tls/cert.pem", + # Debian, Ubuntu (requires ca-certificates) + "/etc/ssl/certs/ca-certificates.crt", + # SUSE + "/etc/ssl/ca-bundle.pem", +] + +_HASHED_CERT_FILENAME_RE = re.compile(r"^[0-9a-fA-F]{8}\.[0-9]$") + + +@contextlib.contextmanager +def _configure_context(ctx: ssl.SSLContext) -> typing.Iterator[None]: + # First, check whether the default locations from OpenSSL + # seem like they will give us a usable set of CA certs. + # ssl.get_default_verify_paths already takes care of: + # - getting cafile from either the SSL_CERT_FILE env var + # or the path configured when OpenSSL was compiled, + # and verifying that that path exists + # - getting capath from either the SSL_CERT_DIR env var + # or the path configured when OpenSSL was compiled, + # and verifying that that path exists + # In addition we'll check whether capath appears to contain certs. + defaults = ssl.get_default_verify_paths() + if defaults.cafile or (defaults.capath and _capath_contains_certs(defaults.capath)): + ctx.set_default_verify_paths() + else: + # cafile from OpenSSL doesn't exist + # and capath from OpenSSL doesn't contain certs. + # Let's search other common locations instead. + for cafile in _CA_FILE_CANDIDATES: + if os.path.isfile(cafile): + ctx.load_verify_locations(cafile=cafile) + break + + yield + + +def _capath_contains_certs(capath: str) -> bool: + """Check whether capath exists and contains certs in the expected format.""" + if not os.path.isdir(capath): + return False + for name in os.listdir(capath): + if _HASHED_CERT_FILENAME_RE.match(name): + return True + return False + + +def _verify_peercerts_impl( + ssl_context: ssl.SSLContext, + cert_chain: list[bytes], + server_hostname: str | None = None, +) -> None: + # This is a no-op because we've enabled SSLContext's built-in + # verification via verify_mode=CERT_REQUIRED, and don't need to repeat it. + pass diff --git a/gestao_raul/Lib/site-packages/pip/_vendor/truststore/_ssl_constants.py b/gestao_raul/Lib/site-packages/pip/_vendor/truststore/_ssl_constants.py new file mode 100644 index 0000000..b1ee7a3 --- /dev/null +++ b/gestao_raul/Lib/site-packages/pip/_vendor/truststore/_ssl_constants.py @@ -0,0 +1,31 @@ +import ssl +import sys +import typing + +# Hold on to the original class so we can create it consistently +# even if we inject our own SSLContext into the ssl module. +_original_SSLContext = ssl.SSLContext +_original_super_SSLContext = super(_original_SSLContext, _original_SSLContext) + +# CPython is known to be good, but non-CPython implementations +# may implement SSLContext differently so to be safe we don't +# subclass the SSLContext. + +# This is returned by truststore.SSLContext.__class__() +_truststore_SSLContext_dunder_class: typing.Optional[type] + +# This value is the superclass of truststore.SSLContext. +_truststore_SSLContext_super_class: type + +if sys.implementation.name == "cpython": + _truststore_SSLContext_super_class = _original_SSLContext + _truststore_SSLContext_dunder_class = None +else: + _truststore_SSLContext_super_class = object + _truststore_SSLContext_dunder_class = _original_SSLContext + + +def _set_ssl_context_verify_mode( + ssl_context: ssl.SSLContext, verify_mode: ssl.VerifyMode +) -> None: + _original_super_SSLContext.verify_mode.__set__(ssl_context, verify_mode) # type: ignore[attr-defined] diff --git a/gestao_raul/Lib/site-packages/pip/_vendor/truststore/_windows.py b/gestao_raul/Lib/site-packages/pip/_vendor/truststore/_windows.py new file mode 100644 index 0000000..a9bf9ab --- /dev/null +++ b/gestao_raul/Lib/site-packages/pip/_vendor/truststore/_windows.py @@ -0,0 +1,567 @@ +import contextlib +import ssl +import typing +from ctypes import WinDLL # type: ignore +from ctypes import WinError # type: ignore +from ctypes import ( + POINTER, + Structure, + c_char_p, + c_ulong, + c_void_p, + c_wchar_p, + cast, + create_unicode_buffer, + pointer, + sizeof, +) +from ctypes.wintypes import ( + BOOL, + DWORD, + HANDLE, + LONG, + LPCSTR, + LPCVOID, + LPCWSTR, + LPFILETIME, + LPSTR, + LPWSTR, +) +from typing import TYPE_CHECKING, Any + +from ._ssl_constants import _set_ssl_context_verify_mode + +HCERTCHAINENGINE = HANDLE +HCERTSTORE = HANDLE +HCRYPTPROV_LEGACY = HANDLE + + +class CERT_CONTEXT(Structure): + _fields_ = ( + ("dwCertEncodingType", DWORD), + ("pbCertEncoded", c_void_p), + ("cbCertEncoded", DWORD), + ("pCertInfo", c_void_p), + ("hCertStore", HCERTSTORE), + ) + + +PCERT_CONTEXT = POINTER(CERT_CONTEXT) +PCCERT_CONTEXT = POINTER(PCERT_CONTEXT) + + +class CERT_ENHKEY_USAGE(Structure): + _fields_ = ( + ("cUsageIdentifier", DWORD), + ("rgpszUsageIdentifier", POINTER(LPSTR)), + ) + + +PCERT_ENHKEY_USAGE = POINTER(CERT_ENHKEY_USAGE) + + +class CERT_USAGE_MATCH(Structure): + _fields_ = ( + ("dwType", DWORD), + ("Usage", CERT_ENHKEY_USAGE), + ) + + +class CERT_CHAIN_PARA(Structure): + _fields_ = ( + ("cbSize", DWORD), + ("RequestedUsage", CERT_USAGE_MATCH), + ("RequestedIssuancePolicy", CERT_USAGE_MATCH), + ("dwUrlRetrievalTimeout", DWORD), + ("fCheckRevocationFreshnessTime", BOOL), + ("dwRevocationFreshnessTime", DWORD), + ("pftCacheResync", LPFILETIME), + ("pStrongSignPara", c_void_p), + ("dwStrongSignFlags", DWORD), + ) + + +if TYPE_CHECKING: + PCERT_CHAIN_PARA = pointer[CERT_CHAIN_PARA] # type: ignore[misc] +else: + PCERT_CHAIN_PARA = POINTER(CERT_CHAIN_PARA) + + +class CERT_TRUST_STATUS(Structure): + _fields_ = ( + ("dwErrorStatus", DWORD), + ("dwInfoStatus", DWORD), + ) + + +class CERT_CHAIN_ELEMENT(Structure): + _fields_ = ( + ("cbSize", DWORD), + ("pCertContext", PCERT_CONTEXT), + ("TrustStatus", CERT_TRUST_STATUS), + ("pRevocationInfo", c_void_p), + ("pIssuanceUsage", PCERT_ENHKEY_USAGE), + ("pApplicationUsage", PCERT_ENHKEY_USAGE), + ("pwszExtendedErrorInfo", LPCWSTR), + ) + + +PCERT_CHAIN_ELEMENT = POINTER(CERT_CHAIN_ELEMENT) + + +class CERT_SIMPLE_CHAIN(Structure): + _fields_ = ( + ("cbSize", DWORD), + ("TrustStatus", CERT_TRUST_STATUS), + ("cElement", DWORD), + ("rgpElement", POINTER(PCERT_CHAIN_ELEMENT)), + ("pTrustListInfo", c_void_p), + ("fHasRevocationFreshnessTime", BOOL), + ("dwRevocationFreshnessTime", DWORD), + ) + + +PCERT_SIMPLE_CHAIN = POINTER(CERT_SIMPLE_CHAIN) + + +class CERT_CHAIN_CONTEXT(Structure): + _fields_ = ( + ("cbSize", DWORD), + ("TrustStatus", CERT_TRUST_STATUS), + ("cChain", DWORD), + ("rgpChain", POINTER(PCERT_SIMPLE_CHAIN)), + ("cLowerQualityChainContext", DWORD), + ("rgpLowerQualityChainContext", c_void_p), + ("fHasRevocationFreshnessTime", BOOL), + ("dwRevocationFreshnessTime", DWORD), + ) + + +PCERT_CHAIN_CONTEXT = POINTER(CERT_CHAIN_CONTEXT) +PCCERT_CHAIN_CONTEXT = POINTER(PCERT_CHAIN_CONTEXT) + + +class SSL_EXTRA_CERT_CHAIN_POLICY_PARA(Structure): + _fields_ = ( + ("cbSize", DWORD), + ("dwAuthType", DWORD), + ("fdwChecks", DWORD), + ("pwszServerName", LPCWSTR), + ) + + +class CERT_CHAIN_POLICY_PARA(Structure): + _fields_ = ( + ("cbSize", DWORD), + ("dwFlags", DWORD), + ("pvExtraPolicyPara", c_void_p), + ) + + +PCERT_CHAIN_POLICY_PARA = POINTER(CERT_CHAIN_POLICY_PARA) + + +class CERT_CHAIN_POLICY_STATUS(Structure): + _fields_ = ( + ("cbSize", DWORD), + ("dwError", DWORD), + ("lChainIndex", LONG), + ("lElementIndex", LONG), + ("pvExtraPolicyStatus", c_void_p), + ) + + +PCERT_CHAIN_POLICY_STATUS = POINTER(CERT_CHAIN_POLICY_STATUS) + + +class CERT_CHAIN_ENGINE_CONFIG(Structure): + _fields_ = ( + ("cbSize", DWORD), + ("hRestrictedRoot", HCERTSTORE), + ("hRestrictedTrust", HCERTSTORE), + ("hRestrictedOther", HCERTSTORE), + ("cAdditionalStore", DWORD), + ("rghAdditionalStore", c_void_p), + ("dwFlags", DWORD), + ("dwUrlRetrievalTimeout", DWORD), + ("MaximumCachedCertificates", DWORD), + ("CycleDetectionModulus", DWORD), + ("hExclusiveRoot", HCERTSTORE), + ("hExclusiveTrustedPeople", HCERTSTORE), + ("dwExclusiveFlags", DWORD), + ) + + +PCERT_CHAIN_ENGINE_CONFIG = POINTER(CERT_CHAIN_ENGINE_CONFIG) +PHCERTCHAINENGINE = POINTER(HCERTCHAINENGINE) + +X509_ASN_ENCODING = 0x00000001 +PKCS_7_ASN_ENCODING = 0x00010000 +CERT_STORE_PROV_MEMORY = b"Memory" +CERT_STORE_ADD_USE_EXISTING = 2 +USAGE_MATCH_TYPE_OR = 1 +OID_PKIX_KP_SERVER_AUTH = c_char_p(b"1.3.6.1.5.5.7.3.1") +CERT_CHAIN_REVOCATION_CHECK_END_CERT = 0x10000000 +CERT_CHAIN_REVOCATION_CHECK_CHAIN = 0x20000000 +CERT_CHAIN_POLICY_IGNORE_ALL_NOT_TIME_VALID_FLAGS = 0x00000007 +CERT_CHAIN_POLICY_IGNORE_INVALID_BASIC_CONSTRAINTS_FLAG = 0x00000008 +CERT_CHAIN_POLICY_ALLOW_UNKNOWN_CA_FLAG = 0x00000010 +CERT_CHAIN_POLICY_IGNORE_INVALID_NAME_FLAG = 0x00000040 +CERT_CHAIN_POLICY_IGNORE_WRONG_USAGE_FLAG = 0x00000020 +CERT_CHAIN_POLICY_IGNORE_INVALID_POLICY_FLAG = 0x00000080 +CERT_CHAIN_POLICY_IGNORE_ALL_REV_UNKNOWN_FLAGS = 0x00000F00 +CERT_CHAIN_POLICY_ALLOW_TESTROOT_FLAG = 0x00008000 +CERT_CHAIN_POLICY_TRUST_TESTROOT_FLAG = 0x00004000 +SECURITY_FLAG_IGNORE_CERT_CN_INVALID = 0x00001000 +AUTHTYPE_SERVER = 2 +CERT_CHAIN_POLICY_SSL = 4 +FORMAT_MESSAGE_FROM_SYSTEM = 0x00001000 +FORMAT_MESSAGE_IGNORE_INSERTS = 0x00000200 + +# Flags to set for SSLContext.verify_mode=CERT_NONE +CERT_CHAIN_POLICY_VERIFY_MODE_NONE_FLAGS = ( + CERT_CHAIN_POLICY_IGNORE_ALL_NOT_TIME_VALID_FLAGS + | CERT_CHAIN_POLICY_IGNORE_INVALID_BASIC_CONSTRAINTS_FLAG + | CERT_CHAIN_POLICY_ALLOW_UNKNOWN_CA_FLAG + | CERT_CHAIN_POLICY_IGNORE_INVALID_NAME_FLAG + | CERT_CHAIN_POLICY_IGNORE_WRONG_USAGE_FLAG + | CERT_CHAIN_POLICY_IGNORE_INVALID_POLICY_FLAG + | CERT_CHAIN_POLICY_IGNORE_ALL_REV_UNKNOWN_FLAGS + | CERT_CHAIN_POLICY_ALLOW_TESTROOT_FLAG + | CERT_CHAIN_POLICY_TRUST_TESTROOT_FLAG +) + +wincrypt = WinDLL("crypt32.dll") +kernel32 = WinDLL("kernel32.dll") + + +def _handle_win_error(result: bool, _: Any, args: Any) -> Any: + if not result: + # Note, actually raises OSError after calling GetLastError and FormatMessage + raise WinError() + return args + + +CertCreateCertificateChainEngine = wincrypt.CertCreateCertificateChainEngine +CertCreateCertificateChainEngine.argtypes = ( + PCERT_CHAIN_ENGINE_CONFIG, + PHCERTCHAINENGINE, +) +CertCreateCertificateChainEngine.errcheck = _handle_win_error + +CertOpenStore = wincrypt.CertOpenStore +CertOpenStore.argtypes = (LPCSTR, DWORD, HCRYPTPROV_LEGACY, DWORD, c_void_p) +CertOpenStore.restype = HCERTSTORE +CertOpenStore.errcheck = _handle_win_error + +CertAddEncodedCertificateToStore = wincrypt.CertAddEncodedCertificateToStore +CertAddEncodedCertificateToStore.argtypes = ( + HCERTSTORE, + DWORD, + c_char_p, + DWORD, + DWORD, + PCCERT_CONTEXT, +) +CertAddEncodedCertificateToStore.restype = BOOL + +CertCreateCertificateContext = wincrypt.CertCreateCertificateContext +CertCreateCertificateContext.argtypes = (DWORD, c_char_p, DWORD) +CertCreateCertificateContext.restype = PCERT_CONTEXT +CertCreateCertificateContext.errcheck = _handle_win_error + +CertGetCertificateChain = wincrypt.CertGetCertificateChain +CertGetCertificateChain.argtypes = ( + HCERTCHAINENGINE, + PCERT_CONTEXT, + LPFILETIME, + HCERTSTORE, + PCERT_CHAIN_PARA, + DWORD, + c_void_p, + PCCERT_CHAIN_CONTEXT, +) +CertGetCertificateChain.restype = BOOL +CertGetCertificateChain.errcheck = _handle_win_error + +CertVerifyCertificateChainPolicy = wincrypt.CertVerifyCertificateChainPolicy +CertVerifyCertificateChainPolicy.argtypes = ( + c_ulong, + PCERT_CHAIN_CONTEXT, + PCERT_CHAIN_POLICY_PARA, + PCERT_CHAIN_POLICY_STATUS, +) +CertVerifyCertificateChainPolicy.restype = BOOL + +CertCloseStore = wincrypt.CertCloseStore +CertCloseStore.argtypes = (HCERTSTORE, DWORD) +CertCloseStore.restype = BOOL +CertCloseStore.errcheck = _handle_win_error + +CertFreeCertificateChain = wincrypt.CertFreeCertificateChain +CertFreeCertificateChain.argtypes = (PCERT_CHAIN_CONTEXT,) + +CertFreeCertificateContext = wincrypt.CertFreeCertificateContext +CertFreeCertificateContext.argtypes = (PCERT_CONTEXT,) + +CertFreeCertificateChainEngine = wincrypt.CertFreeCertificateChainEngine +CertFreeCertificateChainEngine.argtypes = (HCERTCHAINENGINE,) + +FormatMessageW = kernel32.FormatMessageW +FormatMessageW.argtypes = ( + DWORD, + LPCVOID, + DWORD, + DWORD, + LPWSTR, + DWORD, + c_void_p, +) +FormatMessageW.restype = DWORD + + +def _verify_peercerts_impl( + ssl_context: ssl.SSLContext, + cert_chain: list[bytes], + server_hostname: str | None = None, +) -> None: + """Verify the cert_chain from the server using Windows APIs.""" + + # If the peer didn't send any certificates then + # we can't do verification. Raise an error. + if not cert_chain: + raise ssl.SSLCertVerificationError("Peer sent no certificates to verify") + + pCertContext = None + hIntermediateCertStore = CertOpenStore(CERT_STORE_PROV_MEMORY, 0, None, 0, None) + try: + # Add intermediate certs to an in-memory cert store + for cert_bytes in cert_chain[1:]: + CertAddEncodedCertificateToStore( + hIntermediateCertStore, + X509_ASN_ENCODING | PKCS_7_ASN_ENCODING, + cert_bytes, + len(cert_bytes), + CERT_STORE_ADD_USE_EXISTING, + None, + ) + + # Cert context for leaf cert + leaf_cert = cert_chain[0] + pCertContext = CertCreateCertificateContext( + X509_ASN_ENCODING | PKCS_7_ASN_ENCODING, leaf_cert, len(leaf_cert) + ) + + # Chain params to match certs for serverAuth extended usage + cert_enhkey_usage = CERT_ENHKEY_USAGE() + cert_enhkey_usage.cUsageIdentifier = 1 + cert_enhkey_usage.rgpszUsageIdentifier = (c_char_p * 1)(OID_PKIX_KP_SERVER_AUTH) + cert_usage_match = CERT_USAGE_MATCH() + cert_usage_match.Usage = cert_enhkey_usage + chain_params = CERT_CHAIN_PARA() + chain_params.RequestedUsage = cert_usage_match + chain_params.cbSize = sizeof(chain_params) + pChainPara = pointer(chain_params) + + if ssl_context.verify_flags & ssl.VERIFY_CRL_CHECK_CHAIN: + chain_flags = CERT_CHAIN_REVOCATION_CHECK_CHAIN + elif ssl_context.verify_flags & ssl.VERIFY_CRL_CHECK_LEAF: + chain_flags = CERT_CHAIN_REVOCATION_CHECK_END_CERT + else: + chain_flags = 0 + + try: + # First attempt to verify using the default Windows system trust roots + # (default chain engine). + _get_and_verify_cert_chain( + ssl_context, + None, + hIntermediateCertStore, + pCertContext, + pChainPara, + server_hostname, + chain_flags=chain_flags, + ) + except ssl.SSLCertVerificationError as e: + # If that fails but custom CA certs have been added + # to the SSLContext using load_verify_locations, + # try verifying using a custom chain engine + # that trusts the custom CA certs. + custom_ca_certs: list[bytes] | None = ssl_context.get_ca_certs( + binary_form=True + ) + if custom_ca_certs: + try: + _verify_using_custom_ca_certs( + ssl_context, + custom_ca_certs, + hIntermediateCertStore, + pCertContext, + pChainPara, + server_hostname, + chain_flags=chain_flags, + ) + # Raise the original error, not the new error. + except ssl.SSLCertVerificationError: + raise e from None + else: + raise + finally: + CertCloseStore(hIntermediateCertStore, 0) + if pCertContext: + CertFreeCertificateContext(pCertContext) + + +def _get_and_verify_cert_chain( + ssl_context: ssl.SSLContext, + hChainEngine: HCERTCHAINENGINE | None, + hIntermediateCertStore: HCERTSTORE, + pPeerCertContext: c_void_p, + pChainPara: PCERT_CHAIN_PARA, # type: ignore[valid-type] + server_hostname: str | None, + chain_flags: int, +) -> None: + ppChainContext = None + try: + # Get cert chain + ppChainContext = pointer(PCERT_CHAIN_CONTEXT()) + CertGetCertificateChain( + hChainEngine, # chain engine + pPeerCertContext, # leaf cert context + None, # current system time + hIntermediateCertStore, # additional in-memory cert store + pChainPara, # chain-building parameters + chain_flags, + None, # reserved + ppChainContext, # the resulting chain context + ) + pChainContext = ppChainContext.contents + + # Verify cert chain + ssl_extra_cert_chain_policy_para = SSL_EXTRA_CERT_CHAIN_POLICY_PARA() + ssl_extra_cert_chain_policy_para.cbSize = sizeof( + ssl_extra_cert_chain_policy_para + ) + ssl_extra_cert_chain_policy_para.dwAuthType = AUTHTYPE_SERVER + ssl_extra_cert_chain_policy_para.fdwChecks = 0 + if ssl_context.check_hostname is False: + ssl_extra_cert_chain_policy_para.fdwChecks = ( + SECURITY_FLAG_IGNORE_CERT_CN_INVALID + ) + if server_hostname: + ssl_extra_cert_chain_policy_para.pwszServerName = c_wchar_p(server_hostname) + + chain_policy = CERT_CHAIN_POLICY_PARA() + chain_policy.pvExtraPolicyPara = cast( + pointer(ssl_extra_cert_chain_policy_para), c_void_p + ) + if ssl_context.verify_mode == ssl.CERT_NONE: + chain_policy.dwFlags |= CERT_CHAIN_POLICY_VERIFY_MODE_NONE_FLAGS + chain_policy.cbSize = sizeof(chain_policy) + + pPolicyPara = pointer(chain_policy) + policy_status = CERT_CHAIN_POLICY_STATUS() + policy_status.cbSize = sizeof(policy_status) + pPolicyStatus = pointer(policy_status) + CertVerifyCertificateChainPolicy( + CERT_CHAIN_POLICY_SSL, + pChainContext, + pPolicyPara, + pPolicyStatus, + ) + + # Check status + error_code = policy_status.dwError + if error_code: + # Try getting a human readable message for an error code. + error_message_buf = create_unicode_buffer(1024) + error_message_chars = FormatMessageW( + FORMAT_MESSAGE_FROM_SYSTEM | FORMAT_MESSAGE_IGNORE_INSERTS, + None, + error_code, + 0, + error_message_buf, + sizeof(error_message_buf), + None, + ) + + # See if we received a message for the error, + # otherwise we use a generic error with the + # error code and hope that it's search-able. + if error_message_chars <= 0: + error_message = f"Certificate chain policy error {error_code:#x} [{policy_status.lElementIndex}]" + else: + error_message = error_message_buf.value.strip() + + err = ssl.SSLCertVerificationError(error_message) + err.verify_message = error_message + err.verify_code = error_code + raise err from None + finally: + if ppChainContext: + CertFreeCertificateChain(ppChainContext.contents) + + +def _verify_using_custom_ca_certs( + ssl_context: ssl.SSLContext, + custom_ca_certs: list[bytes], + hIntermediateCertStore: HCERTSTORE, + pPeerCertContext: c_void_p, + pChainPara: PCERT_CHAIN_PARA, # type: ignore[valid-type] + server_hostname: str | None, + chain_flags: int, +) -> None: + hChainEngine = None + hRootCertStore = CertOpenStore(CERT_STORE_PROV_MEMORY, 0, None, 0, None) + try: + # Add custom CA certs to an in-memory cert store + for cert_bytes in custom_ca_certs: + CertAddEncodedCertificateToStore( + hRootCertStore, + X509_ASN_ENCODING | PKCS_7_ASN_ENCODING, + cert_bytes, + len(cert_bytes), + CERT_STORE_ADD_USE_EXISTING, + None, + ) + + # Create a custom cert chain engine which exclusively trusts + # certs from our hRootCertStore + cert_chain_engine_config = CERT_CHAIN_ENGINE_CONFIG() + cert_chain_engine_config.cbSize = sizeof(cert_chain_engine_config) + cert_chain_engine_config.hExclusiveRoot = hRootCertStore + pConfig = pointer(cert_chain_engine_config) + phChainEngine = pointer(HCERTCHAINENGINE()) + CertCreateCertificateChainEngine( + pConfig, + phChainEngine, + ) + hChainEngine = phChainEngine.contents + + # Get and verify a cert chain using the custom chain engine + _get_and_verify_cert_chain( + ssl_context, + hChainEngine, + hIntermediateCertStore, + pPeerCertContext, + pChainPara, + server_hostname, + chain_flags, + ) + finally: + if hChainEngine: + CertFreeCertificateChainEngine(hChainEngine) + CertCloseStore(hRootCertStore, 0) + + +@contextlib.contextmanager +def _configure_context(ctx: ssl.SSLContext) -> typing.Iterator[None]: + check_hostname = ctx.check_hostname + verify_mode = ctx.verify_mode + ctx.check_hostname = False + _set_ssl_context_verify_mode(ctx, ssl.CERT_NONE) + try: + yield + finally: + ctx.check_hostname = check_hostname + _set_ssl_context_verify_mode(ctx, verify_mode) diff --git a/gestao_raul/Lib/site-packages/pip/_vendor/truststore/py.typed b/gestao_raul/Lib/site-packages/pip/_vendor/truststore/py.typed new file mode 100644 index 0000000..e69de29 diff --git a/gestao_raul/Lib/site-packages/pip/_vendor/typing_extensions.py b/gestao_raul/Lib/site-packages/pip/_vendor/typing_extensions.py index 34199c2..e429384 100644 --- a/gestao_raul/Lib/site-packages/pip/_vendor/typing_extensions.py +++ b/gestao_raul/Lib/site-packages/pip/_vendor/typing_extensions.py @@ -1,12 +1,14 @@ import abc import collections import collections.abc +import contextlib import functools +import inspect import operator import sys import types as _types import typing - +import warnings __all__ = [ # Super-special typing primitives. @@ -31,6 +33,7 @@ __all__ = [ 'Coroutine', 'AsyncGenerator', 'AsyncContextManager', + 'Buffer', 'ChainMap', # Concrete collection types. @@ -43,7 +46,13 @@ __all__ = [ 'TypedDict', # Structural checks, a.k.a. protocols. + 'SupportsAbs', + 'SupportsBytes', + 'SupportsComplex', + 'SupportsFloat', 'SupportsIndex', + 'SupportsInt', + 'SupportsRound', # One-off things. 'Annotated', @@ -51,12 +60,17 @@ __all__ = [ 'assert_type', 'clear_overloads', 'dataclass_transform', + 'deprecated', + 'Doc', 'get_overloads', 'final', 'get_args', 'get_origin', + 'get_original_bases', + 'get_protocol_members', 'get_type_hints', 'IntVar', + 'is_protocol', 'is_typeddict', 'Literal', 'NewType', @@ -68,43 +82,72 @@ __all__ = [ 'runtime_checkable', 'Text', 'TypeAlias', + 'TypeAliasType', 'TypeGuard', + 'TypeIs', 'TYPE_CHECKING', 'Never', 'NoReturn', + 'ReadOnly', 'Required', 'NotRequired', + + # Pure aliases, have always been in typing + 'AbstractSet', + 'AnyStr', + 'BinaryIO', + 'Callable', + 'Collection', + 'Container', + 'Dict', + 'ForwardRef', + 'FrozenSet', + 'Generator', + 'Generic', + 'Hashable', + 'IO', + 'ItemsView', + 'Iterable', + 'Iterator', + 'KeysView', + 'List', + 'Mapping', + 'MappingView', + 'Match', + 'MutableMapping', + 'MutableSequence', + 'MutableSet', + 'NoDefault', + 'Optional', + 'Pattern', + 'Reversible', + 'Sequence', + 'Set', + 'Sized', + 'TextIO', + 'Tuple', + 'Union', + 'ValuesView', + 'cast', + 'no_type_check', + 'no_type_check_decorator', ] # for backward compatibility PEP_560 = True GenericMeta = type +_PEP_696_IMPLEMENTED = sys.version_info >= (3, 13, 0, "beta") # The functions below are modified copies of typing internal helpers. # They are needed by _ProtocolMeta and they provide support for PEP 646. -_marker = object() + +class _Sentinel: + def __repr__(self): + return "" -def _check_generic(cls, parameters, elen=_marker): - """Check correct count for parameters of a generic cls (internal helper). - This gives a nice error message in case of count mismatch. - """ - if not elen: - raise TypeError(f"{cls} is not a generic class") - if elen is _marker: - if not hasattr(cls, "__parameters__") or not cls.__parameters__: - raise TypeError(f"{cls} is not a generic class") - elen = len(cls.__parameters__) - alen = len(parameters) - if alen != elen: - if hasattr(cls, "__parameters__"): - parameters = [p for p in cls.__parameters__ if not _is_unpack(p)] - num_tv_tuples = sum(isinstance(p, TypeVarTuple) for p in parameters) - if (num_tv_tuples > 0) and (alen >= elen - num_tv_tuples): - return - raise TypeError(f"Too {'many' if alen > elen else 'few'} parameters for {cls};" - f" actual {alen}, expected {elen}") +_marker = _Sentinel() if sys.version_info >= (3, 10): @@ -120,27 +163,6 @@ else: return isinstance(t, typing._GenericAlias) and not t._special -def _collect_type_vars(types, typevar_types=None): - """Collect all type variable contained in types in order of - first appearance (lexicographic order). For example:: - - _collect_type_vars((T, List[S, T])) == (T, S) - """ - if typevar_types is None: - typevar_types = typing.TypeVar - tvars = [] - for t in types: - if ( - isinstance(t, typevar_types) and - t not in tvars and - not _is_unpack(t) - ): - tvars.append(t) - if _should_collect_from_parameters(t): - tvars.extend([t for t in t.__parameters__ if t not in tvars]) - return tuple(tvars) - - NoReturn = typing.NoReturn # Some unconstrained type variables. These are used by the container types. @@ -184,36 +206,13 @@ else: ClassVar = typing.ClassVar -# On older versions of typing there is an internal class named "Final". -# 3.8+ -if hasattr(typing, 'Final') and sys.version_info[:2] >= (3, 7): - Final = typing.Final -# 3.7 -else: - class _FinalForm(typing._SpecialForm, _root=True): - def __repr__(self): - return 'typing_extensions.' + self._name +class _ExtensionsSpecialForm(typing._SpecialForm, _root=True): + def __repr__(self): + return 'typing_extensions.' + self._name - def __getitem__(self, parameters): - item = typing._type_check(parameters, - f'{self._name} accepts only a single type.') - return typing._GenericAlias(self, (item,)) - Final = _FinalForm('Final', - doc="""A special typing construct to indicate that a name - cannot be re-assigned or overridden in a subclass. - For example: - - MAX_SIZE: Final = 9000 - MAX_SIZE += 1 # Error reported by type checker - - class Connection: - TIMEOUT: Final[int] = 10 - class FastConnector(Connection): - TIMEOUT = 1 # Error reported by type checker - - There is no runtime checking of these properties.""") +Final = typing.Final if sys.version_info >= (3, 11): final = typing.final @@ -257,21 +256,67 @@ def IntVar(name): return typing.TypeVar(name) -# 3.8+: -if hasattr(typing, 'Literal'): +# A Literal bug was fixed in 3.11.0, 3.10.1 and 3.9.8 +if sys.version_info >= (3, 10, 1): Literal = typing.Literal -# 3.7: else: - class _LiteralForm(typing._SpecialForm, _root=True): + def _flatten_literal_params(parameters): + """An internal helper for Literal creation: flatten Literals among parameters""" + params = [] + for p in parameters: + if isinstance(p, _LiteralGenericAlias): + params.extend(p.__args__) + else: + params.append(p) + return tuple(params) - def __repr__(self): - return 'typing_extensions.' + self._name + def _value_and_type_iter(params): + for p in params: + yield p, type(p) + + class _LiteralGenericAlias(typing._GenericAlias, _root=True): + def __eq__(self, other): + if not isinstance(other, _LiteralGenericAlias): + return NotImplemented + these_args_deduped = set(_value_and_type_iter(self.__args__)) + other_args_deduped = set(_value_and_type_iter(other.__args__)) + return these_args_deduped == other_args_deduped + + def __hash__(self): + return hash(frozenset(_value_and_type_iter(self.__args__))) + + class _LiteralForm(_ExtensionsSpecialForm, _root=True): + def __init__(self, doc: str): + self._name = 'Literal' + self._doc = self.__doc__ = doc def __getitem__(self, parameters): - return typing._GenericAlias(self, parameters) + if not isinstance(parameters, tuple): + parameters = (parameters,) - Literal = _LiteralForm('Literal', - doc="""A type that can be used to indicate to type checkers + parameters = _flatten_literal_params(parameters) + + val_type_pairs = list(_value_and_type_iter(parameters)) + try: + deduped_pairs = set(val_type_pairs) + except TypeError: + # unhashable parameters + pass + else: + # similar logic to typing._deduplicate on Python 3.9+ + if len(deduped_pairs) < len(val_type_pairs): + new_parameters = [] + for pair in val_type_pairs: + if pair in deduped_pairs: + new_parameters.append(pair[0]) + deduped_pairs.remove(pair) + assert not deduped_pairs, deduped_pairs + parameters = tuple(new_parameters) + + return _LiteralGenericAlias(self, parameters) + + Literal = _LiteralForm(doc="""\ + A type that can be used to indicate to type checkers that the corresponding value has a value literally equivalent to the provided parameter. For example: @@ -285,7 +330,7 @@ else: instead of a type.""") -_overload_dummy = typing._overload_dummy # noqa +_overload_dummy = typing._overload_dummy if hasattr(typing, "get_overloads"): # 3.11+ @@ -359,288 +404,423 @@ Type = typing.Type # Various ABCs mimicking those in collections.abc. # A few are simply re-exported for completeness. - - Awaitable = typing.Awaitable Coroutine = typing.Coroutine AsyncIterable = typing.AsyncIterable AsyncIterator = typing.AsyncIterator Deque = typing.Deque -ContextManager = typing.ContextManager -AsyncContextManager = typing.AsyncContextManager DefaultDict = typing.DefaultDict - -# 3.7.2+ -if hasattr(typing, 'OrderedDict'): - OrderedDict = typing.OrderedDict -# 3.7.0-3.7.2 -else: - OrderedDict = typing._alias(collections.OrderedDict, (KT, VT)) - +OrderedDict = typing.OrderedDict Counter = typing.Counter ChainMap = typing.ChainMap -AsyncGenerator = typing.AsyncGenerator -NewType = typing.NewType Text = typing.Text TYPE_CHECKING = typing.TYPE_CHECKING -_PROTO_WHITELIST = ['Callable', 'Awaitable', - 'Iterable', 'Iterator', 'AsyncIterable', 'AsyncIterator', - 'Hashable', 'Sized', 'Container', 'Collection', 'Reversible', - 'ContextManager', 'AsyncContextManager'] +if sys.version_info >= (3, 13, 0, "beta"): + from typing import AsyncContextManager, AsyncGenerator, ContextManager, Generator +else: + def _is_dunder(attr): + return attr.startswith('__') and attr.endswith('__') + + # Python <3.9 doesn't have typing._SpecialGenericAlias + _special_generic_alias_base = getattr( + typing, "_SpecialGenericAlias", typing._GenericAlias + ) + + class _SpecialGenericAlias(_special_generic_alias_base, _root=True): + def __init__(self, origin, nparams, *, inst=True, name=None, defaults=()): + if _special_generic_alias_base is typing._GenericAlias: + # Python <3.9 + self.__origin__ = origin + self._nparams = nparams + super().__init__(origin, nparams, special=True, inst=inst, name=name) + else: + # Python >= 3.9 + super().__init__(origin, nparams, inst=inst, name=name) + self._defaults = defaults + + def __setattr__(self, attr, val): + allowed_attrs = {'_name', '_inst', '_nparams', '_defaults'} + if _special_generic_alias_base is typing._GenericAlias: + # Python <3.9 + allowed_attrs.add("__origin__") + if _is_dunder(attr) or attr in allowed_attrs: + object.__setattr__(self, attr, val) + else: + setattr(self.__origin__, attr, val) + + @typing._tp_cache + def __getitem__(self, params): + if not isinstance(params, tuple): + params = (params,) + msg = "Parameters to generic types must be types." + params = tuple(typing._type_check(p, msg) for p in params) + if ( + self._defaults + and len(params) < self._nparams + and len(params) + len(self._defaults) >= self._nparams + ): + params = (*params, *self._defaults[len(params) - self._nparams:]) + actual_len = len(params) + + if actual_len != self._nparams: + if self._defaults: + expected = f"at least {self._nparams - len(self._defaults)}" + else: + expected = str(self._nparams) + if not self._nparams: + raise TypeError(f"{self} is not a generic class") + raise TypeError( + f"Too {'many' if actual_len > self._nparams else 'few'}" + f" arguments for {self};" + f" actual {actual_len}, expected {expected}" + ) + return self.copy_with(params) + + _NoneType = type(None) + Generator = _SpecialGenericAlias( + collections.abc.Generator, 3, defaults=(_NoneType, _NoneType) + ) + AsyncGenerator = _SpecialGenericAlias( + collections.abc.AsyncGenerator, 2, defaults=(_NoneType,) + ) + ContextManager = _SpecialGenericAlias( + contextlib.AbstractContextManager, + 2, + name="ContextManager", + defaults=(typing.Optional[bool],) + ) + AsyncContextManager = _SpecialGenericAlias( + contextlib.AbstractAsyncContextManager, + 2, + name="AsyncContextManager", + defaults=(typing.Optional[bool],) + ) + + +_PROTO_ALLOWLIST = { + 'collections.abc': [ + 'Callable', 'Awaitable', 'Iterable', 'Iterator', 'AsyncIterable', + 'Hashable', 'Sized', 'Container', 'Collection', 'Reversible', 'Buffer', + ], + 'contextlib': ['AbstractContextManager', 'AbstractAsyncContextManager'], + 'typing_extensions': ['Buffer'], +} + + +_EXCLUDED_ATTRS = frozenset(typing.EXCLUDED_ATTRIBUTES) | { + "__match_args__", "__protocol_attrs__", "__non_callable_proto_members__", + "__final__", +} def _get_protocol_attrs(cls): attrs = set() for base in cls.__mro__[:-1]: # without object - if base.__name__ in ('Protocol', 'Generic'): + if base.__name__ in {'Protocol', 'Generic'}: continue annotations = getattr(base, '__annotations__', {}) - for attr in list(base.__dict__.keys()) + list(annotations.keys()): - if (not attr.startswith('_abc_') and attr not in ( - '__abstractmethods__', '__annotations__', '__weakref__', - '_is_protocol', '_is_runtime_protocol', '__dict__', - '__args__', '__slots__', - '__next_in_mro__', '__parameters__', '__origin__', - '__orig_bases__', '__extra__', '__tree_hash__', - '__doc__', '__subclasshook__', '__init__', '__new__', - '__module__', '_MutableMapping__marker', '_gorg')): + for attr in (*base.__dict__, *annotations): + if (not attr.startswith('_abc_') and attr not in _EXCLUDED_ATTRS): attrs.add(attr) return attrs -def _is_callable_members_only(cls): - return all(callable(getattr(cls, attr, None)) for attr in _get_protocol_attrs(cls)) +def _caller(depth=2): + try: + return sys._getframe(depth).f_globals.get('__name__', '__main__') + except (AttributeError, ValueError): # For platforms without _getframe() + return None -def _maybe_adjust_parameters(cls): - """Helper function used in Protocol.__init_subclass__ and _TypedDictMeta.__new__. - - The contents of this function are very similar - to logic found in typing.Generic.__init_subclass__ - on the CPython main branch. - """ - tvars = [] - if '__orig_bases__' in cls.__dict__: - tvars = typing._collect_type_vars(cls.__orig_bases__) - # Look for Generic[T1, ..., Tn] or Protocol[T1, ..., Tn]. - # If found, tvars must be a subset of it. - # If not found, tvars is it. - # Also check for and reject plain Generic, - # and reject multiple Generic[...] and/or Protocol[...]. - gvars = None - for base in cls.__orig_bases__: - if (isinstance(base, typing._GenericAlias) and - base.__origin__ in (typing.Generic, Protocol)): - # for error messages - the_base = base.__origin__.__name__ - if gvars is not None: - raise TypeError( - "Cannot inherit from Generic[...]" - " and/or Protocol[...] multiple types.") - gvars = base.__parameters__ - if gvars is None: - gvars = tvars - else: - tvarset = set(tvars) - gvarset = set(gvars) - if not tvarset <= gvarset: - s_vars = ', '.join(str(t) for t in tvars if t not in gvarset) - s_args = ', '.join(str(g) for g in gvars) - raise TypeError(f"Some type variables ({s_vars}) are" - f" not listed in {the_base}[{s_args}]") - tvars = gvars - cls.__parameters__ = tuple(tvars) - - -# 3.8+ -if hasattr(typing, 'Protocol'): +# `__match_args__` attribute was removed from protocol members in 3.13, +# we want to backport this change to older Python versions. +if sys.version_info >= (3, 13): Protocol = typing.Protocol -# 3.7 else: + def _allow_reckless_class_checks(depth=3): + """Allow instance and class checks for special stdlib modules. + The abc and functools modules indiscriminately call isinstance() and + issubclass() on the whole MRO of a user class, which may contain protocols. + """ + return _caller(depth) in {'abc', 'functools', None} def _no_init(self, *args, **kwargs): if type(self)._is_protocol: raise TypeError('Protocols cannot be instantiated') - class _ProtocolMeta(abc.ABCMeta): # noqa: B024 - # This metaclass is a bit unfortunate and exists only because of the lack - # of __instancehook__. + def _type_check_issubclass_arg_1(arg): + """Raise TypeError if `arg` is not an instance of `type` + in `issubclass(arg, )`. + + In most cases, this is verified by type.__subclasscheck__. + Checking it again unnecessarily would slow down issubclass() checks, + so, we don't perform this check unless we absolutely have to. + + For various error paths, however, + we want to ensure that *this* error message is shown to the user + where relevant, rather than a typing.py-specific error message. + """ + if not isinstance(arg, type): + # Same error message as for issubclass(1, int). + raise TypeError('issubclass() arg 1 must be a class') + + # Inheriting from typing._ProtocolMeta isn't actually desirable, + # but is necessary to allow typing.Protocol and typing_extensions.Protocol + # to mix without getting TypeErrors about "metaclass conflict" + class _ProtocolMeta(type(typing.Protocol)): + # This metaclass is somewhat unfortunate, + # but is necessary for several reasons... + # + # NOTE: DO NOT call super() in any methods in this class + # That would call the methods on typing._ProtocolMeta on Python 3.8-3.11 + # and those are slow + def __new__(mcls, name, bases, namespace, **kwargs): + if name == "Protocol" and len(bases) < 2: + pass + elif {Protocol, typing.Protocol} & set(bases): + for base in bases: + if not ( + base in {object, typing.Generic, Protocol, typing.Protocol} + or base.__name__ in _PROTO_ALLOWLIST.get(base.__module__, []) + or is_protocol(base) + ): + raise TypeError( + f"Protocols can only inherit from other protocols, " + f"got {base!r}" + ) + return abc.ABCMeta.__new__(mcls, name, bases, namespace, **kwargs) + + def __init__(cls, *args, **kwargs): + abc.ABCMeta.__init__(cls, *args, **kwargs) + if getattr(cls, "_is_protocol", False): + cls.__protocol_attrs__ = _get_protocol_attrs(cls) + + def __subclasscheck__(cls, other): + if cls is Protocol: + return type.__subclasscheck__(cls, other) + if ( + getattr(cls, '_is_protocol', False) + and not _allow_reckless_class_checks() + ): + if not getattr(cls, '_is_runtime_protocol', False): + _type_check_issubclass_arg_1(other) + raise TypeError( + "Instance and class checks can only be used with " + "@runtime_checkable protocols" + ) + if ( + # this attribute is set by @runtime_checkable: + cls.__non_callable_proto_members__ + and cls.__dict__.get("__subclasshook__") is _proto_hook + ): + _type_check_issubclass_arg_1(other) + non_method_attrs = sorted(cls.__non_callable_proto_members__) + raise TypeError( + "Protocols with non-method members don't support issubclass()." + f" Non-method members: {str(non_method_attrs)[1:-1]}." + ) + return abc.ABCMeta.__subclasscheck__(cls, other) + def __instancecheck__(cls, instance): # We need this method for situations where attributes are # assigned in __init__. - if ((not getattr(cls, '_is_protocol', False) or - _is_callable_members_only(cls)) and - issubclass(instance.__class__, cls)): + if cls is Protocol: + return type.__instancecheck__(cls, instance) + if not getattr(cls, "_is_protocol", False): + # i.e., it's a concrete subclass of a protocol + return abc.ABCMeta.__instancecheck__(cls, instance) + + if ( + not getattr(cls, '_is_runtime_protocol', False) and + not _allow_reckless_class_checks() + ): + raise TypeError("Instance and class checks can only be used with" + " @runtime_checkable protocols") + + if abc.ABCMeta.__instancecheck__(cls, instance): return True - if cls._is_protocol: - if all(hasattr(instance, attr) and - (not callable(getattr(cls, attr, None)) or - getattr(instance, attr) is not None) - for attr in _get_protocol_attrs(cls)): - return True - return super().__instancecheck__(instance) - class Protocol(metaclass=_ProtocolMeta): - # There is quite a lot of overlapping code with typing.Generic. - # Unfortunately it is hard to avoid this while these live in two different - # modules. The duplicated code will be removed when Protocol is moved to typing. - """Base class for protocol classes. Protocol classes are defined as:: + for attr in cls.__protocol_attrs__: + try: + val = inspect.getattr_static(instance, attr) + except AttributeError: + break + # this attribute is set by @runtime_checkable: + if val is None and attr not in cls.__non_callable_proto_members__: + break + else: + return True - class Proto(Protocol): - def meth(self) -> int: - ... + return False - Such classes are primarily used with static type checkers that recognize - structural subtyping (static duck-typing), for example:: + def __eq__(cls, other): + # Hack so that typing.Generic.__class_getitem__ + # treats typing_extensions.Protocol + # as equivalent to typing.Protocol + if abc.ABCMeta.__eq__(cls, other) is True: + return True + return cls is Protocol and other is typing.Protocol - class C: - def meth(self) -> int: - return 0 + # This has to be defined, or the abc-module cache + # complains about classes with this metaclass being unhashable, + # if we define only __eq__! + def __hash__(cls) -> int: + return type.__hash__(cls) - def func(x: Proto) -> int: - return x.meth() + @classmethod + def _proto_hook(cls, other): + if not cls.__dict__.get('_is_protocol', False): + return NotImplemented - func(C()) # Passes static type check + for attr in cls.__protocol_attrs__: + for base in other.__mro__: + # Check if the members appears in the class dictionary... + if attr in base.__dict__: + if base.__dict__[attr] is None: + return NotImplemented + break - See PEP 544 for details. Protocol classes decorated with - @typing_extensions.runtime act as simple-minded runtime protocol that checks - only the presence of given attributes, ignoring their type signatures. + # ...or in annotations, if it is a sub-protocol. + annotations = getattr(base, '__annotations__', {}) + if ( + isinstance(annotations, collections.abc.Mapping) + and attr in annotations + and is_protocol(other) + ): + break + else: + return NotImplemented + return True - Protocol classes can be generic, they are defined as:: - - class GenProto(Protocol[T]): - def meth(self) -> T: - ... - """ + class Protocol(typing.Generic, metaclass=_ProtocolMeta): + __doc__ = typing.Protocol.__doc__ __slots__ = () _is_protocol = True - - def __new__(cls, *args, **kwds): - if cls is Protocol: - raise TypeError("Type Protocol cannot be instantiated; " - "it can only be used as a base class") - return super().__new__(cls) - - @typing._tp_cache - def __class_getitem__(cls, params): - if not isinstance(params, tuple): - params = (params,) - if not params and cls is not typing.Tuple: - raise TypeError( - f"Parameter list to {cls.__qualname__}[...] cannot be empty") - msg = "Parameters to generic types must be types." - params = tuple(typing._type_check(p, msg) for p in params) # noqa - if cls is Protocol: - # Generic can only be subscripted with unique type variables. - if not all(isinstance(p, typing.TypeVar) for p in params): - i = 0 - while isinstance(params[i], typing.TypeVar): - i += 1 - raise TypeError( - "Parameters to Protocol[...] must all be type variables." - f" Parameter {i + 1} is {params[i]}") - if len(set(params)) != len(params): - raise TypeError( - "Parameters to Protocol[...] must all be unique") - else: - # Subscripting a regular Generic subclass. - _check_generic(cls, params, len(cls.__parameters__)) - return typing._GenericAlias(cls, params) + _is_runtime_protocol = False def __init_subclass__(cls, *args, **kwargs): - if '__orig_bases__' in cls.__dict__: - error = typing.Generic in cls.__orig_bases__ - else: - error = typing.Generic in cls.__bases__ - if error: - raise TypeError("Cannot inherit from plain Generic") - _maybe_adjust_parameters(cls) + super().__init_subclass__(*args, **kwargs) # Determine if this is a protocol or a concrete subclass. - if not cls.__dict__.get('_is_protocol', None): + if not cls.__dict__.get('_is_protocol', False): cls._is_protocol = any(b is Protocol for b in cls.__bases__) # Set (or override) the protocol subclass hook. - def _proto_hook(other): - if not cls.__dict__.get('_is_protocol', None): - return NotImplemented - if not getattr(cls, '_is_runtime_protocol', False): - if sys._getframe(2).f_globals['__name__'] in ['abc', 'functools']: - return NotImplemented - raise TypeError("Instance and class checks can only be used with" - " @runtime protocols") - if not _is_callable_members_only(cls): - if sys._getframe(2).f_globals['__name__'] in ['abc', 'functools']: - return NotImplemented - raise TypeError("Protocols with non-method members" - " don't support issubclass()") - if not isinstance(other, type): - # Same error as for issubclass(1, int) - raise TypeError('issubclass() arg 1 must be a class') - for attr in _get_protocol_attrs(cls): - for base in other.__mro__: - if attr in base.__dict__: - if base.__dict__[attr] is None: - return NotImplemented - break - annotations = getattr(base, '__annotations__', {}) - if (isinstance(annotations, typing.Mapping) and - attr in annotations and - isinstance(other, _ProtocolMeta) and - other._is_protocol): - break - else: - return NotImplemented - return True if '__subclasshook__' not in cls.__dict__: cls.__subclasshook__ = _proto_hook - # We have nothing more to do for non-protocols. - if not cls._is_protocol: - return - - # Check consistency of bases. - for base in cls.__bases__: - if not (base in (object, typing.Generic) or - base.__module__ == 'collections.abc' and - base.__name__ in _PROTO_WHITELIST or - isinstance(base, _ProtocolMeta) and base._is_protocol): - raise TypeError('Protocols can only inherit from other' - f' protocols, got {repr(base)}') - cls.__init__ = _no_init + # Prohibit instantiation for protocol classes + if cls._is_protocol and cls.__init__ is Protocol.__init__: + cls.__init__ = _no_init -# 3.8+ -if hasattr(typing, 'runtime_checkable'): +if sys.version_info >= (3, 13): runtime_checkable = typing.runtime_checkable -# 3.7 else: def runtime_checkable(cls): - """Mark a protocol class as a runtime protocol, so that it - can be used with isinstance() and issubclass(). Raise TypeError - if applied to a non-protocol class. + """Mark a protocol class as a runtime protocol. - This allows a simple-minded structural check very similar to the - one-offs in collections.abc such as Hashable. + Such protocol can be used with isinstance() and issubclass(). + Raise TypeError if applied to a non-protocol class. + This allows a simple-minded structural check very similar to + one trick ponies in collections.abc such as Iterable. + + For example:: + + @runtime_checkable + class Closable(Protocol): + def close(self): ... + + assert isinstance(open('/some/file'), Closable) + + Warning: this will check only the presence of the required methods, + not their type signatures! """ - if not isinstance(cls, _ProtocolMeta) or not cls._is_protocol: - raise TypeError('@runtime_checkable can be only applied to protocol classes,' + if not issubclass(cls, typing.Generic) or not getattr(cls, '_is_protocol', False): + raise TypeError(f'@runtime_checkable can be only applied to protocol classes,' f' got {cls!r}') cls._is_runtime_protocol = True + + # typing.Protocol classes on <=3.11 break if we execute this block, + # because typing.Protocol classes on <=3.11 don't have a + # `__protocol_attrs__` attribute, and this block relies on the + # `__protocol_attrs__` attribute. Meanwhile, typing.Protocol classes on 3.12.2+ + # break if we *don't* execute this block, because *they* assume that all + # protocol classes have a `__non_callable_proto_members__` attribute + # (which this block sets) + if isinstance(cls, _ProtocolMeta) or sys.version_info >= (3, 12, 2): + # PEP 544 prohibits using issubclass() + # with protocols that have non-method members. + # See gh-113320 for why we compute this attribute here, + # rather than in `_ProtocolMeta.__init__` + cls.__non_callable_proto_members__ = set() + for attr in cls.__protocol_attrs__: + try: + is_callable = callable(getattr(cls, attr, None)) + except Exception as e: + raise TypeError( + f"Failed to determine whether protocol member {attr!r} " + "is a method member" + ) from e + else: + if not is_callable: + cls.__non_callable_proto_members__.add(attr) + return cls -# Exists for backwards compatibility. +# The "runtime" alias exists for backwards compatibility. runtime = runtime_checkable -# 3.8+ -if hasattr(typing, 'SupportsIndex'): +# Our version of runtime-checkable protocols is faster on Python 3.8-3.11 +if sys.version_info >= (3, 12): + SupportsInt = typing.SupportsInt + SupportsFloat = typing.SupportsFloat + SupportsComplex = typing.SupportsComplex + SupportsBytes = typing.SupportsBytes SupportsIndex = typing.SupportsIndex -# 3.7 + SupportsAbs = typing.SupportsAbs + SupportsRound = typing.SupportsRound else: + @runtime_checkable + class SupportsInt(Protocol): + """An ABC with one abstract method __int__.""" + __slots__ = () + + @abc.abstractmethod + def __int__(self) -> int: + pass + + @runtime_checkable + class SupportsFloat(Protocol): + """An ABC with one abstract method __float__.""" + __slots__ = () + + @abc.abstractmethod + def __float__(self) -> float: + pass + + @runtime_checkable + class SupportsComplex(Protocol): + """An ABC with one abstract method __complex__.""" + __slots__ = () + + @abc.abstractmethod + def __complex__(self) -> complex: + pass + + @runtime_checkable + class SupportsBytes(Protocol): + """An ABC with one abstract method __bytes__.""" + __slots__ = () + + @abc.abstractmethod + def __bytes__(self) -> bytes: + pass + @runtime_checkable class SupportsIndex(Protocol): __slots__ = () @@ -649,8 +829,49 @@ else: def __index__(self) -> int: pass + @runtime_checkable + class SupportsAbs(Protocol[T_co]): + """ + An ABC with one abstract method __abs__ that is covariant in its return type. + """ + __slots__ = () -if hasattr(typing, "Required"): + @abc.abstractmethod + def __abs__(self) -> T_co: + pass + + @runtime_checkable + class SupportsRound(Protocol[T_co]): + """ + An ABC with one abstract method __round__ that is covariant in its return type. + """ + __slots__ = () + + @abc.abstractmethod + def __round__(self, ndigits: int = 0) -> T_co: + pass + + +def _ensure_subclassable(mro_entries): + def inner(func): + if sys.implementation.name == "pypy" and sys.version_info < (3, 9): + cls_dict = { + "__call__": staticmethod(func), + "__mro_entries__": staticmethod(mro_entries) + } + t = type(func.__name__, (), cls_dict) + return functools.update_wrapper(t(), func) + else: + func.__mro_entries__ = mro_entries + return func + return inner + + +# Update this to something like >=3.13.0b1 if and when +# PEP 728 is implemented in CPython +_PEP_728_IMPLEMENTED = False + +if _PEP_728_IMPLEMENTED: # The standard library TypedDict in Python 3.8 does not store runtime information # about which (if any) keys are optional. See https://bugs.python.org/issue38834 # The standard library TypedDict in Python 3.9.0/1 does not honour the "total" @@ -658,148 +879,171 @@ if hasattr(typing, "Required"): # The standard library TypedDict below Python 3.11 does not store runtime # information about optional and required keys when using Required or NotRequired. # Generic TypedDicts are also impossible using typing.TypedDict on Python <3.11. + # Aaaand on 3.12 we add __orig_bases__ to TypedDict + # to enable better runtime introspection. + # On 3.13 we deprecate some odd ways of creating TypedDicts. + # Also on 3.13, PEP 705 adds the ReadOnly[] qualifier. + # PEP 728 (still pending) makes more changes. TypedDict = typing.TypedDict _TypedDictMeta = typing._TypedDictMeta is_typeddict = typing.is_typeddict else: - def _check_fails(cls, other): - try: - if sys._getframe(1).f_globals['__name__'] not in ['abc', - 'functools', - 'typing']: - # Typed dicts are only for static structural subtyping. - raise TypeError('TypedDict does not support instance and class checks') - except (AttributeError, ValueError): - pass - return False + # 3.10.0 and later + _TAKES_MODULE = "module" in inspect.signature(typing._type_check).parameters - def _dict_new(*args, **kwargs): - if not args: - raise TypeError('TypedDict.__new__(): not enough arguments') - _, args = args[0], args[1:] # allow the "cls" keyword be passed - return dict(*args, **kwargs) - - _dict_new.__text_signature__ = '($cls, _typename, _fields=None, /, **kwargs)' - - def _typeddict_new(*args, total=True, **kwargs): - if not args: - raise TypeError('TypedDict.__new__(): not enough arguments') - _, args = args[0], args[1:] # allow the "cls" keyword be passed - if args: - typename, args = args[0], args[1:] # allow the "_typename" keyword be passed - elif '_typename' in kwargs: - typename = kwargs.pop('_typename') - import warnings - warnings.warn("Passing '_typename' as keyword argument is deprecated", - DeprecationWarning, stacklevel=2) - else: - raise TypeError("TypedDict.__new__() missing 1 required positional " - "argument: '_typename'") - if args: - try: - fields, = args # allow the "_fields" keyword be passed - except ValueError: - raise TypeError('TypedDict.__new__() takes from 2 to 3 ' - f'positional arguments but {len(args) + 2} ' - 'were given') - elif '_fields' in kwargs and len(kwargs) == 1: - fields = kwargs.pop('_fields') - import warnings - warnings.warn("Passing '_fields' as keyword argument is deprecated", - DeprecationWarning, stacklevel=2) - else: - fields = None - - if fields is None: - fields = kwargs - elif kwargs: - raise TypeError("TypedDict takes either a dict or keyword arguments," - " but not both") - - ns = {'__annotations__': dict(fields)} - try: - # Setting correct module is necessary to make typed dict classes pickleable. - ns['__module__'] = sys._getframe(1).f_globals.get('__name__', '__main__') - except (AttributeError, ValueError): - pass - - return _TypedDictMeta(typename, (), ns, total=total) - - _typeddict_new.__text_signature__ = ('($cls, _typename, _fields=None,' - ' /, *, total=True, **kwargs)') + def _get_typeddict_qualifiers(annotation_type): + while True: + annotation_origin = get_origin(annotation_type) + if annotation_origin is Annotated: + annotation_args = get_args(annotation_type) + if annotation_args: + annotation_type = annotation_args[0] + else: + break + elif annotation_origin is Required: + yield Required + annotation_type, = get_args(annotation_type) + elif annotation_origin is NotRequired: + yield NotRequired + annotation_type, = get_args(annotation_type) + elif annotation_origin is ReadOnly: + yield ReadOnly + annotation_type, = get_args(annotation_type) + else: + break class _TypedDictMeta(type): - def __init__(cls, name, bases, ns, total=True): - super().__init__(name, bases, ns) + def __new__(cls, name, bases, ns, *, total=True, closed=False): + """Create new typed dict class object. - def __new__(cls, name, bases, ns, total=True): - # Create new typed dict class object. - # This method is called directly when TypedDict is subclassed, - # or via _typeddict_new when TypedDict is instantiated. This way - # TypedDict supports all three syntaxes described in its docstring. - # Subclasses and instances of TypedDict return actual dictionaries - # via _dict_new. - ns['__new__'] = _typeddict_new if name == 'TypedDict' else _dict_new - # Don't insert typing.Generic into __bases__ here, - # or Generic.__init_subclass__ will raise TypeError - # in the super().__new__() call. - # Instead, monkey-patch __bases__ onto the class after it's been created. - tp_dict = super().__new__(cls, name, (dict,), ns) + This method is called when TypedDict is subclassed, + or when TypedDict is instantiated. This way + TypedDict supports all three syntax forms described in its docstring. + Subclasses and instances of TypedDict return actual dictionaries. + """ + for base in bases: + if type(base) is not _TypedDictMeta and base is not typing.Generic: + raise TypeError('cannot inherit from both a TypedDict type ' + 'and a non-TypedDict base class') - if any(issubclass(base, typing.Generic) for base in bases): - tp_dict.__bases__ = (typing.Generic, dict) - _maybe_adjust_parameters(tp_dict) + if any(issubclass(b, typing.Generic) for b in bases): + generic_base = (typing.Generic,) + else: + generic_base = () + + # typing.py generally doesn't let you inherit from plain Generic, unless + # the name of the class happens to be "Protocol" + tp_dict = type.__new__(_TypedDictMeta, "Protocol", (*generic_base, dict), ns) + tp_dict.__name__ = name + if tp_dict.__qualname__ == "Protocol": + tp_dict.__qualname__ = name + + if not hasattr(tp_dict, '__orig_bases__'): + tp_dict.__orig_bases__ = bases annotations = {} - own_annotations = ns.get('__annotations__', {}) + if "__annotations__" in ns: + own_annotations = ns["__annotations__"] + elif "__annotate__" in ns: + # TODO: Use inspect.VALUE here, and make the annotations lazily evaluated + own_annotations = ns["__annotate__"](1) + else: + own_annotations = {} msg = "TypedDict('Name', {f0: t0, f1: t1, ...}); each t must be a type" - own_annotations = { - n: typing._type_check(tp, msg) for n, tp in own_annotations.items() - } + if _TAKES_MODULE: + own_annotations = { + n: typing._type_check(tp, msg, module=tp_dict.__module__) + for n, tp in own_annotations.items() + } + else: + own_annotations = { + n: typing._type_check(tp, msg) + for n, tp in own_annotations.items() + } required_keys = set() optional_keys = set() + readonly_keys = set() + mutable_keys = set() + extra_items_type = None for base in bases: - annotations.update(base.__dict__.get('__annotations__', {})) - required_keys.update(base.__dict__.get('__required_keys__', ())) - optional_keys.update(base.__dict__.get('__optional_keys__', ())) + base_dict = base.__dict__ + + annotations.update(base_dict.get('__annotations__', {})) + required_keys.update(base_dict.get('__required_keys__', ())) + optional_keys.update(base_dict.get('__optional_keys__', ())) + readonly_keys.update(base_dict.get('__readonly_keys__', ())) + mutable_keys.update(base_dict.get('__mutable_keys__', ())) + base_extra_items_type = base_dict.get('__extra_items__', None) + if base_extra_items_type is not None: + extra_items_type = base_extra_items_type + + if closed and extra_items_type is None: + extra_items_type = Never + if closed and "__extra_items__" in own_annotations: + annotation_type = own_annotations.pop("__extra_items__") + qualifiers = set(_get_typeddict_qualifiers(annotation_type)) + if Required in qualifiers: + raise TypeError( + "Special key __extra_items__ does not support " + "Required" + ) + if NotRequired in qualifiers: + raise TypeError( + "Special key __extra_items__ does not support " + "NotRequired" + ) + extra_items_type = annotation_type annotations.update(own_annotations) for annotation_key, annotation_type in own_annotations.items(): - annotation_origin = get_origin(annotation_type) - if annotation_origin is Annotated: - annotation_args = get_args(annotation_type) - if annotation_args: - annotation_type = annotation_args[0] - annotation_origin = get_origin(annotation_type) + qualifiers = set(_get_typeddict_qualifiers(annotation_type)) - if annotation_origin is Required: + if Required in qualifiers: required_keys.add(annotation_key) - elif annotation_origin is NotRequired: + elif NotRequired in qualifiers: optional_keys.add(annotation_key) elif total: required_keys.add(annotation_key) else: optional_keys.add(annotation_key) + if ReadOnly in qualifiers: + mutable_keys.discard(annotation_key) + readonly_keys.add(annotation_key) + else: + mutable_keys.add(annotation_key) + readonly_keys.discard(annotation_key) tp_dict.__annotations__ = annotations tp_dict.__required_keys__ = frozenset(required_keys) tp_dict.__optional_keys__ = frozenset(optional_keys) + tp_dict.__readonly_keys__ = frozenset(readonly_keys) + tp_dict.__mutable_keys__ = frozenset(mutable_keys) if not hasattr(tp_dict, '__total__'): tp_dict.__total__ = total + tp_dict.__closed__ = closed + tp_dict.__extra_items__ = extra_items_type return tp_dict - __instancecheck__ = __subclasscheck__ = _check_fails + __call__ = dict # static method - TypedDict = _TypedDictMeta('TypedDict', (dict,), {}) - TypedDict.__module__ = __name__ - TypedDict.__doc__ = \ - """A simple typed name space. At runtime it is equivalent to a plain dict. + def __subclasscheck__(cls, other): + # Typed dicts are only for static structural subtyping. + raise TypeError('TypedDict does not support instance and class checks') - TypedDict creates a dictionary type that expects all of its - instances to have a certain set of keys, with each key + __instancecheck__ = __subclasscheck__ + + _TypedDict = type.__new__(_TypedDictMeta, 'TypedDict', (), {}) + + @_ensure_subclassable(lambda bases: (_TypedDict,)) + def TypedDict(typename, fields=_marker, /, *, total=True, closed=False, **kwargs): + """A simple typed namespace. At runtime it is equivalent to a plain dict. + + TypedDict creates a dictionary type such that a type checker will expect all + instances to have a certain set of keys, where each key is associated with a value of a consistent type. This expectation - is not checked at runtime but is only enforced by type checkers. + is not checked at runtime. + Usage:: class Point2D(TypedDict): @@ -814,14 +1058,71 @@ else: The type info can be accessed via the Point2D.__annotations__ dict, and the Point2D.__required_keys__ and Point2D.__optional_keys__ frozensets. - TypedDict supports two additional equivalent forms:: + TypedDict supports an additional equivalent form:: - Point2D = TypedDict('Point2D', x=int, y=int, label=str) Point2D = TypedDict('Point2D', {'x': int, 'y': int, 'label': str}) - The class syntax is only supported in Python 3.6+, while two other - syntax forms work for Python 2.7 and 3.2+ + By default, all keys must be present in a TypedDict. It is possible + to override this by specifying totality:: + + class Point2D(TypedDict, total=False): + x: int + y: int + + This means that a Point2D TypedDict can have any of the keys omitted. A type + checker is only expected to support a literal False or True as the value of + the total argument. True is the default, and makes all items defined in the + class body be required. + + The Required and NotRequired special forms can also be used to mark + individual keys as being required or not required:: + + class Point2D(TypedDict): + x: int # the "x" key must always be present (Required is the default) + y: NotRequired[int] # the "y" key can be omitted + + See PEP 655 for more details on Required and NotRequired. """ + if fields is _marker or fields is None: + if fields is _marker: + deprecated_thing = "Failing to pass a value for the 'fields' parameter" + else: + deprecated_thing = "Passing `None` as the 'fields' parameter" + + example = f"`{typename} = TypedDict({typename!r}, {{}})`" + deprecation_msg = ( + f"{deprecated_thing} is deprecated and will be disallowed in " + "Python 3.15. To create a TypedDict class with 0 fields " + "using the functional syntax, pass an empty dictionary, e.g. " + ) + example + "." + warnings.warn(deprecation_msg, DeprecationWarning, stacklevel=2) + if closed is not False and closed is not True: + kwargs["closed"] = closed + closed = False + fields = kwargs + elif kwargs: + raise TypeError("TypedDict takes either a dict or keyword arguments," + " but not both") + if kwargs: + if sys.version_info >= (3, 13): + raise TypeError("TypedDict takes no keyword arguments") + warnings.warn( + "The kwargs-based syntax for TypedDict definitions is deprecated " + "in Python 3.11, will be removed in Python 3.13, and may not be " + "understood by third-party type checkers.", + DeprecationWarning, + stacklevel=2, + ) + + ns = {'__annotations__': dict(fields)} + module = _caller() + if module is not None: + # Setting correct module is necessary to make typed dict classes pickleable. + ns['__module__'] = module + + td = _TypedDictMeta(typename, (), ns, total=total, closed=closed) + td.__orig_bases__ = (TypedDict,) + return td if hasattr(typing, "_TypedDictMeta"): _TYPEDDICT_TYPES = (typing._TypedDictMeta, _TypedDictMeta) @@ -839,14 +1140,17 @@ else: is_typeddict(Film) # => True is_typeddict(Union[list, str]) # => False """ - return isinstance(tp, tuple(_TYPEDDICT_TYPES)) + # On 3.8, this would otherwise return True + if hasattr(typing, "TypedDict") and tp is typing.TypedDict: + return False + return isinstance(tp, _TYPEDDICT_TYPES) if hasattr(typing, "assert_type"): assert_type = typing.assert_type else: - def assert_type(__val, __typ): + def assert_type(val, typ, /): """Assert (to the type checker) that the value is of the given type. When the type checker encounters a call to assert_type(), it @@ -859,33 +1163,30 @@ else: At runtime this returns the first argument unchanged and otherwise does nothing. """ - return __val + return val -if hasattr(typing, "Required"): +if hasattr(typing, "ReadOnly"): # 3.13+ get_type_hints = typing.get_type_hints -else: - import functools - import types - +else: # <=3.13 # replaces _strip_annotations() def _strip_extras(t): """Strips Annotated, Required and NotRequired from a given type.""" if isinstance(t, _AnnotatedAlias): return _strip_extras(t.__origin__) - if hasattr(t, "__origin__") and t.__origin__ in (Required, NotRequired): + if hasattr(t, "__origin__") and t.__origin__ in (Required, NotRequired, ReadOnly): return _strip_extras(t.__args__[0]) if isinstance(t, typing._GenericAlias): stripped_args = tuple(_strip_extras(a) for a in t.__args__) if stripped_args == t.__args__: return t return t.copy_with(stripped_args) - if hasattr(types, "GenericAlias") and isinstance(t, types.GenericAlias): + if hasattr(_types, "GenericAlias") and isinstance(t, _types.GenericAlias): stripped_args = tuple(_strip_extras(a) for a in t.__args__) if stripped_args == t.__args__: return t - return types.GenericAlias(t.__origin__, stripped_args) - if hasattr(types, "UnionType") and isinstance(t, types.UnionType): + return _types.GenericAlias(t.__origin__, stripped_args) + if hasattr(_types, "UnionType") and isinstance(t, _types.UnionType): stripped_args = tuple(_strip_extras(a) for a in t.__args__) if stripped_args == t.__args__: return t @@ -925,11 +1226,11 @@ else: - If two dict arguments are passed, they specify globals and locals, respectively. """ - if hasattr(typing, "Annotated"): + if hasattr(typing, "Annotated"): # 3.9+ hint = typing.get_type_hints( obj, globalns=globalns, localns=localns, include_extras=True ) - else: + else: # 3.8 hint = typing.get_type_hints(obj, globalns=globalns, localns=localns) if include_extras: return hint @@ -942,7 +1243,7 @@ if hasattr(typing, 'Annotated'): # Not exported and not a public API, but needed for get_origin() and get_args() # to work. _AnnotatedAlias = typing._AnnotatedAlias -# 3.7-3.8 +# 3.8 else: class _AnnotatedAlias(typing._GenericAlias, _root=True): """Runtime representation of an annotated type. @@ -970,7 +1271,7 @@ else: def __reduce__(self): return operator.getitem, ( - Annotated, (self.__origin__,) + self.__metadata__ + Annotated, (self.__origin__, *self.__metadata__) ) def __eq__(self, other): @@ -1047,7 +1348,7 @@ else: if sys.version_info[:2] >= (3, 10): get_origin = typing.get_origin get_args = typing.get_args -# 3.7-3.9 +# 3.8-3.9 else: try: # 3.9+ @@ -1096,7 +1397,7 @@ else: get_args(Callable[[], T][int]) == ([], int) """ if isinstance(tp, _AnnotatedAlias): - return (tp.__origin__,) + tp.__metadata__ + return (tp.__origin__, *tp.__metadata__) if isinstance(tp, (typing._GenericAlias, _typing_GenericAlias)): if getattr(tp, "_special", False): return () @@ -1112,11 +1413,7 @@ if hasattr(typing, 'TypeAlias'): TypeAlias = typing.TypeAlias # 3.9 elif sys.version_info[:2] >= (3, 9): - class _TypeAliasForm(typing._SpecialForm, _root=True): - def __repr__(self): - return 'typing_extensions.' + self._name - - @_TypeAliasForm + @_ExtensionsSpecialForm def TypeAlias(self, parameters): """Special marker indicating that an assignment should be recognized as a proper type alias definition by type @@ -1129,68 +1426,123 @@ elif sys.version_info[:2] >= (3, 9): It's invalid when used anywhere except as in the example above. """ raise TypeError(f"{self} is not subscriptable") -# 3.7-3.8 +# 3.8 else: - class _TypeAliasForm(typing._SpecialForm, _root=True): + TypeAlias = _ExtensionsSpecialForm( + 'TypeAlias', + doc="""Special marker indicating that an assignment should + be recognized as a proper type alias definition by type + checkers. + + For example:: + + Predicate: TypeAlias = Callable[..., bool] + + It's invalid when used anywhere except as in the example + above.""" + ) + + +if hasattr(typing, "NoDefault"): + NoDefault = typing.NoDefault +else: + class NoDefaultTypeMeta(type): + def __setattr__(cls, attr, value): + # TypeError is consistent with the behavior of NoneType + raise TypeError( + f"cannot set {attr!r} attribute of immutable type {cls.__name__!r}" + ) + + class NoDefaultType(metaclass=NoDefaultTypeMeta): + """The type of the NoDefault singleton.""" + + __slots__ = () + + def __new__(cls): + return globals().get("NoDefault") or object.__new__(cls) + def __repr__(self): - return 'typing_extensions.' + self._name + return "typing_extensions.NoDefault" - TypeAlias = _TypeAliasForm('TypeAlias', - doc="""Special marker indicating that an assignment should - be recognized as a proper type alias definition by type - checkers. + def __reduce__(self): + return "NoDefault" - For example:: + NoDefault = NoDefaultType() + del NoDefaultType, NoDefaultTypeMeta - Predicate: TypeAlias = Callable[..., bool] - It's invalid when used anywhere except as in the example - above.""") +def _set_default(type_param, default): + type_param.has_default = lambda: default is not NoDefault + type_param.__default__ = default + + +def _set_module(typevarlike): + # for pickling: + def_mod = _caller(depth=3) + if def_mod != 'typing_extensions': + typevarlike.__module__ = def_mod class _DefaultMixin: """Mixin for TypeVarLike defaults.""" __slots__ = () - - def __init__(self, default): - if isinstance(default, (tuple, list)): - self.__default__ = tuple((typing._type_check(d, "Default must be a type") - for d in default)) - elif default: - self.__default__ = typing._type_check(default, "Default must be a type") - else: - self.__default__ = None + __init__ = _set_default -# Add default and infer_variance parameters from PEP 696 and 695 -class TypeVar(typing.TypeVar, _DefaultMixin, _root=True): - """Type variable.""" +# Classes using this metaclass must provide a _backported_typevarlike ClassVar +class _TypeVarLikeMeta(type): + def __instancecheck__(cls, __instance: Any) -> bool: + return isinstance(__instance, cls._backported_typevarlike) - __module__ = 'typing' - def __init__(self, name, *constraints, bound=None, - covariant=False, contravariant=False, - default=None, infer_variance=False): - super().__init__(name, *constraints, bound=bound, covariant=covariant, - contravariant=contravariant) - _DefaultMixin.__init__(self, default) - self.__infer_variance__ = infer_variance +if _PEP_696_IMPLEMENTED: + from typing import TypeVar +else: + # Add default and infer_variance parameters from PEP 696 and 695 + class TypeVar(metaclass=_TypeVarLikeMeta): + """Type variable.""" - # for pickling: - try: - def_mod = sys._getframe(1).f_globals.get('__name__', '__main__') - except (AttributeError, ValueError): - def_mod = None - if def_mod != 'typing_extensions': - self.__module__ = def_mod + _backported_typevarlike = typing.TypeVar + + def __new__(cls, name, *constraints, bound=None, + covariant=False, contravariant=False, + default=NoDefault, infer_variance=False): + if hasattr(typing, "TypeAliasType"): + # PEP 695 implemented (3.12+), can pass infer_variance to typing.TypeVar + typevar = typing.TypeVar(name, *constraints, bound=bound, + covariant=covariant, contravariant=contravariant, + infer_variance=infer_variance) + else: + typevar = typing.TypeVar(name, *constraints, bound=bound, + covariant=covariant, contravariant=contravariant) + if infer_variance and (covariant or contravariant): + raise ValueError("Variance cannot be specified with infer_variance.") + typevar.__infer_variance__ = infer_variance + + _set_default(typevar, default) + _set_module(typevar) + + def _tvar_prepare_subst(alias, args): + if ( + typevar.has_default() + and alias.__parameters__.index(typevar) == len(args) + ): + args += (typevar.__default__,) + return args + + typevar.__typing_prepare_subst__ = _tvar_prepare_subst + return typevar + + def __init_subclass__(cls) -> None: + raise TypeError(f"type '{__name__}.TypeVar' is not an acceptable base type") # Python 3.10+ has PEP 612 if hasattr(typing, 'ParamSpecArgs'): ParamSpecArgs = typing.ParamSpecArgs ParamSpecKwargs = typing.ParamSpecKwargs -# 3.7-3.9 +# 3.8-3.9 else: class _Immutable: """Mixin to indicate that object should not be copied.""" @@ -1248,30 +1600,60 @@ else: return NotImplemented return self.__origin__ == other.__origin__ + +if _PEP_696_IMPLEMENTED: + from typing import ParamSpec + # 3.10+ -if hasattr(typing, 'ParamSpec'): +elif hasattr(typing, 'ParamSpec'): - # Add default Parameter - PEP 696 - class ParamSpec(typing.ParamSpec, _DefaultMixin, _root=True): - """Parameter specification variable.""" + # Add default parameter - PEP 696 + class ParamSpec(metaclass=_TypeVarLikeMeta): + """Parameter specification.""" - __module__ = 'typing' + _backported_typevarlike = typing.ParamSpec - def __init__(self, name, *, bound=None, covariant=False, contravariant=False, - default=None): - super().__init__(name, bound=bound, covariant=covariant, - contravariant=contravariant) - _DefaultMixin.__init__(self, default) + def __new__(cls, name, *, bound=None, + covariant=False, contravariant=False, + infer_variance=False, default=NoDefault): + if hasattr(typing, "TypeAliasType"): + # PEP 695 implemented, can pass infer_variance to typing.TypeVar + paramspec = typing.ParamSpec(name, bound=bound, + covariant=covariant, + contravariant=contravariant, + infer_variance=infer_variance) + else: + paramspec = typing.ParamSpec(name, bound=bound, + covariant=covariant, + contravariant=contravariant) + paramspec.__infer_variance__ = infer_variance - # for pickling: - try: - def_mod = sys._getframe(1).f_globals.get('__name__', '__main__') - except (AttributeError, ValueError): - def_mod = None - if def_mod != 'typing_extensions': - self.__module__ = def_mod + _set_default(paramspec, default) + _set_module(paramspec) -# 3.7-3.9 + def _paramspec_prepare_subst(alias, args): + params = alias.__parameters__ + i = params.index(paramspec) + if i == len(args) and paramspec.has_default(): + args = [*args, paramspec.__default__] + if i >= len(args): + raise TypeError(f"Too few arguments for {alias}") + # Special case where Z[[int, str, bool]] == Z[int, str, bool] in PEP 612. + if len(params) == 1 and not typing._is_param_expr(args[0]): + assert i == 0 + args = (args,) + # Convert lists to tuples to help other libraries cache the results. + elif isinstance(args[i], list): + args = (*args[:i], tuple(args[i]), *args[i + 1:]) + return args + + paramspec.__typing_prepare_subst__ = _paramspec_prepare_subst + return paramspec + + def __init_subclass__(cls) -> None: + raise TypeError(f"type '{__name__}.ParamSpec' is not an acceptable base type") + +# 3.8-3.9 else: # Inherits from list as a workaround for Callable checks in Python < 3.9.2. @@ -1334,11 +1716,12 @@ else: return ParamSpecKwargs(self) def __init__(self, name, *, bound=None, covariant=False, contravariant=False, - default=None): - super().__init__([self]) + infer_variance=False, default=NoDefault): + list.__init__(self, [self]) self.__name__ = name self.__covariant__ = bool(covariant) self.__contravariant__ = bool(contravariant) + self.__infer_variance__ = bool(infer_variance) if bound: self.__bound__ = typing._type_check(bound, 'Bound must be a type.') else: @@ -1346,15 +1729,14 @@ else: _DefaultMixin.__init__(self, default) # for pickling: - try: - def_mod = sys._getframe(1).f_globals.get('__name__', '__main__') - except (AttributeError, ValueError): - def_mod = None + def_mod = _caller() if def_mod != 'typing_extensions': self.__module__ = def_mod def __repr__(self): - if self.__covariant__: + if self.__infer_variance__: + prefix = '' + elif self.__covariant__: prefix = '+' elif self.__contravariant__: prefix = '-' @@ -1376,7 +1758,7 @@ else: pass -# 3.7-3.9 +# 3.8-3.9 if not hasattr(typing, 'Concatenate'): # Inherits from list as a workaround for Callable checks in Python < 3.9.2. class _ConcatenateGenericAlias(list): @@ -1411,7 +1793,7 @@ if not hasattr(typing, 'Concatenate'): ) -# 3.7-3.9 +# 3.8-3.9 @typing._tp_cache def _concatenate_getitem(self, parameters): if parameters == (): @@ -1429,10 +1811,10 @@ def _concatenate_getitem(self, parameters): # 3.10+ if hasattr(typing, 'Concatenate'): Concatenate = typing.Concatenate - _ConcatenateGenericAlias = typing._ConcatenateGenericAlias # noqa + _ConcatenateGenericAlias = typing._ConcatenateGenericAlias # 3.9 elif sys.version_info[:2] >= (3, 9): - @_TypeAliasForm + @_ExtensionsSpecialForm def Concatenate(self, parameters): """Used in conjunction with ``ParamSpec`` and ``Callable`` to represent a higher order function which adds, removes or transforms parameters of a @@ -1445,12 +1827,9 @@ elif sys.version_info[:2] >= (3, 9): See PEP 612 for detailed information. """ return _concatenate_getitem(self, parameters) -# 3.7-8 +# 3.8 else: - class _ConcatenateForm(typing._SpecialForm, _root=True): - def __repr__(self): - return 'typing_extensions.' + self._name - + class _ConcatenateForm(_ExtensionsSpecialForm, _root=True): def __getitem__(self, parameters): return _concatenate_getitem(self, parameters) @@ -1472,11 +1851,7 @@ if hasattr(typing, 'TypeGuard'): TypeGuard = typing.TypeGuard # 3.9 elif sys.version_info[:2] >= (3, 9): - class _TypeGuardForm(typing._SpecialForm, _root=True): - def __repr__(self): - return 'typing_extensions.' + self._name - - @_TypeGuardForm + @_ExtensionsSpecialForm def TypeGuard(self, parameters): """Special typing form used to annotate the return type of a user-defined type guard function. ``TypeGuard`` only accepts a single type argument. @@ -1522,13 +1897,9 @@ elif sys.version_info[:2] >= (3, 9): """ item = typing._type_check(parameters, f'{self} accepts only a single type.') return typing._GenericAlias(self, (item,)) -# 3.7-3.8 +# 3.8 else: - class _TypeGuardForm(typing._SpecialForm, _root=True): - - def __repr__(self): - return 'typing_extensions.' + self._name - + class _TypeGuardForm(_ExtensionsSpecialForm, _root=True): def __getitem__(self, parameters): item = typing._type_check(parameters, f'{self._name} accepts only a single type') @@ -1579,6 +1950,98 @@ else: PEP 647 (User-Defined Type Guards). """) +# 3.13+ +if hasattr(typing, 'TypeIs'): + TypeIs = typing.TypeIs +# 3.9 +elif sys.version_info[:2] >= (3, 9): + @_ExtensionsSpecialForm + def TypeIs(self, parameters): + """Special typing form used to annotate the return type of a user-defined + type narrower function. ``TypeIs`` only accepts a single type argument. + At runtime, functions marked this way should return a boolean. + + ``TypeIs`` aims to benefit *type narrowing* -- a technique used by static + type checkers to determine a more precise type of an expression within a + program's code flow. Usually type narrowing is done by analyzing + conditional code flow and applying the narrowing to a block of code. The + conditional expression here is sometimes referred to as a "type guard". + + Sometimes it would be convenient to use a user-defined boolean function + as a type guard. Such a function should use ``TypeIs[...]`` as its + return type to alert static type checkers to this intention. + + Using ``-> TypeIs`` tells the static type checker that for a given + function: + + 1. The return value is a boolean. + 2. If the return value is ``True``, the type of its argument + is the intersection of the type inside ``TypeGuard`` and the argument's + previously known type. + + For example:: + + def is_awaitable(val: object) -> TypeIs[Awaitable[Any]]: + return hasattr(val, '__await__') + + def f(val: Union[int, Awaitable[int]]) -> int: + if is_awaitable(val): + assert_type(val, Awaitable[int]) + else: + assert_type(val, int) + + ``TypeIs`` also works with type variables. For more information, see + PEP 742 (Narrowing types with TypeIs). + """ + item = typing._type_check(parameters, f'{self} accepts only a single type.') + return typing._GenericAlias(self, (item,)) +# 3.8 +else: + class _TypeIsForm(_ExtensionsSpecialForm, _root=True): + def __getitem__(self, parameters): + item = typing._type_check(parameters, + f'{self._name} accepts only a single type') + return typing._GenericAlias(self, (item,)) + + TypeIs = _TypeIsForm( + 'TypeIs', + doc="""Special typing form used to annotate the return type of a user-defined + type narrower function. ``TypeIs`` only accepts a single type argument. + At runtime, functions marked this way should return a boolean. + + ``TypeIs`` aims to benefit *type narrowing* -- a technique used by static + type checkers to determine a more precise type of an expression within a + program's code flow. Usually type narrowing is done by analyzing + conditional code flow and applying the narrowing to a block of code. The + conditional expression here is sometimes referred to as a "type guard". + + Sometimes it would be convenient to use a user-defined boolean function + as a type guard. Such a function should use ``TypeIs[...]`` as its + return type to alert static type checkers to this intention. + + Using ``-> TypeIs`` tells the static type checker that for a given + function: + + 1. The return value is a boolean. + 2. If the return value is ``True``, the type of its argument + is the intersection of the type inside ``TypeGuard`` and the argument's + previously known type. + + For example:: + + def is_awaitable(val: object) -> TypeIs[Awaitable[Any]]: + return hasattr(val, '__await__') + + def f(val: Union[int, Awaitable[int]]) -> int: + if is_awaitable(val): + assert_type(val, Awaitable[int]) + else: + assert_type(val, int) + + ``TypeIs`` also works with type variables. For more information, see + PEP 742 (Narrowing types with TypeIs). + """) + # Vendored from cpython typing._SpecialFrom class _SpecialForm(typing._Final, _root=True): @@ -1624,7 +2087,7 @@ class _SpecialForm(typing._Final, _root=True): return self._getitem(self, parameters) -if hasattr(typing, "LiteralString"): +if hasattr(typing, "LiteralString"): # 3.11+ LiteralString = typing.LiteralString else: @_SpecialForm @@ -1647,7 +2110,7 @@ else: raise TypeError(f"{self} is not subscriptable") -if hasattr(typing, "Self"): +if hasattr(typing, "Self"): # 3.11+ Self = typing.Self else: @_SpecialForm @@ -1668,7 +2131,7 @@ else: raise TypeError(f"{self} is not subscriptable") -if hasattr(typing, "Never"): +if hasattr(typing, "Never"): # 3.11+ Never = typing.Never else: @_SpecialForm @@ -1698,14 +2161,10 @@ else: raise TypeError(f"{self} is not subscriptable") -if hasattr(typing, 'Required'): +if hasattr(typing, 'Required'): # 3.11+ Required = typing.Required NotRequired = typing.NotRequired -elif sys.version_info[:2] >= (3, 9): - class _ExtensionsSpecialForm(typing._SpecialForm, _root=True): - def __repr__(self): - return 'typing_extensions.' + self._name - +elif sys.version_info[:2] >= (3, 9): # 3.9-3.10 @_ExtensionsSpecialForm def Required(self, parameters): """A special typing construct to mark a key of a total=False TypedDict @@ -1743,11 +2202,8 @@ elif sys.version_info[:2] >= (3, 9): item = typing._type_check(parameters, f'{self._name} accepts only a single type.') return typing._GenericAlias(self, (item,)) -else: - class _RequiredForm(typing._SpecialForm, _root=True): - def __repr__(self): - return 'typing_extensions.' + self._name - +else: # 3.8 + class _RequiredForm(_ExtensionsSpecialForm, _root=True): def __getitem__(self, parameters): item = typing._type_check(parameters, f'{self._name} accepts only a single type.') @@ -1786,83 +2242,223 @@ else: """) -if hasattr(typing, "Unpack"): # 3.11+ +if hasattr(typing, 'ReadOnly'): + ReadOnly = typing.ReadOnly +elif sys.version_info[:2] >= (3, 9): # 3.9-3.12 + @_ExtensionsSpecialForm + def ReadOnly(self, parameters): + """A special typing construct to mark an item of a TypedDict as read-only. + + For example: + + class Movie(TypedDict): + title: ReadOnly[str] + year: int + + def mutate_movie(m: Movie) -> None: + m["year"] = 1992 # allowed + m["title"] = "The Matrix" # typechecker error + + There is no runtime checking for this property. + """ + item = typing._type_check(parameters, f'{self._name} accepts only a single type.') + return typing._GenericAlias(self, (item,)) + +else: # 3.8 + class _ReadOnlyForm(_ExtensionsSpecialForm, _root=True): + def __getitem__(self, parameters): + item = typing._type_check(parameters, + f'{self._name} accepts only a single type.') + return typing._GenericAlias(self, (item,)) + + ReadOnly = _ReadOnlyForm( + 'ReadOnly', + doc="""A special typing construct to mark a key of a TypedDict as read-only. + + For example: + + class Movie(TypedDict): + title: ReadOnly[str] + year: int + + def mutate_movie(m: Movie) -> None: + m["year"] = 1992 # allowed + m["title"] = "The Matrix" # typechecker error + + There is no runtime checking for this propery. + """) + + +_UNPACK_DOC = """\ +Type unpack operator. + +The type unpack operator takes the child types from some container type, +such as `tuple[int, str]` or a `TypeVarTuple`, and 'pulls them out'. For +example: + + # For some generic class `Foo`: + Foo[Unpack[tuple[int, str]]] # Equivalent to Foo[int, str] + + Ts = TypeVarTuple('Ts') + # Specifies that `Bar` is generic in an arbitrary number of types. + # (Think of `Ts` as a tuple of an arbitrary number of individual + # `TypeVar`s, which the `Unpack` is 'pulling out' directly into the + # `Generic[]`.) + class Bar(Generic[Unpack[Ts]]): ... + Bar[int] # Valid + Bar[int, str] # Also valid + +From Python 3.11, this can also be done using the `*` operator: + + Foo[*tuple[int, str]] + class Bar(Generic[*Ts]): ... + +The operator can also be used along with a `TypedDict` to annotate +`**kwargs` in a function signature. For instance: + + class Movie(TypedDict): + name: str + year: int + + # This function expects two keyword arguments - *name* of type `str` and + # *year* of type `int`. + def foo(**kwargs: Unpack[Movie]): ... + +Note that there is only some runtime checking of this operator. Not +everything the runtime allows may be accepted by static type checkers. + +For more information, see PEP 646 and PEP 692. +""" + + +if sys.version_info >= (3, 12): # PEP 692 changed the repr of Unpack[] Unpack = typing.Unpack -elif sys.version_info[:2] >= (3, 9): - class _UnpackSpecialForm(typing._SpecialForm, _root=True): - def __repr__(self): - return 'typing_extensions.' + self._name + + def _is_unpack(obj): + return get_origin(obj) is Unpack + +elif sys.version_info[:2] >= (3, 9): # 3.9+ + class _UnpackSpecialForm(_ExtensionsSpecialForm, _root=True): + def __init__(self, getitem): + super().__init__(getitem) + self.__doc__ = _UNPACK_DOC class _UnpackAlias(typing._GenericAlias, _root=True): __class__ = typing.TypeVar + @property + def __typing_unpacked_tuple_args__(self): + assert self.__origin__ is Unpack + assert len(self.__args__) == 1 + arg, = self.__args__ + if isinstance(arg, (typing._GenericAlias, _types.GenericAlias)): + if arg.__origin__ is not tuple: + raise TypeError("Unpack[...] must be used with a tuple type") + return arg.__args__ + return None + @_UnpackSpecialForm def Unpack(self, parameters): - """A special typing construct to unpack a variadic type. For example: - - Shape = TypeVarTuple('Shape') - Batch = NewType('Batch', int) - - def add_batch_axis( - x: Array[Unpack[Shape]] - ) -> Array[Batch, Unpack[Shape]]: ... - - """ item = typing._type_check(parameters, f'{self._name} accepts only a single type.') return _UnpackAlias(self, (item,)) def _is_unpack(obj): return isinstance(obj, _UnpackAlias) -else: +else: # 3.8 class _UnpackAlias(typing._GenericAlias, _root=True): __class__ = typing.TypeVar - class _UnpackForm(typing._SpecialForm, _root=True): - def __repr__(self): - return 'typing_extensions.' + self._name - + class _UnpackForm(_ExtensionsSpecialForm, _root=True): def __getitem__(self, parameters): item = typing._type_check(parameters, f'{self._name} accepts only a single type.') return _UnpackAlias(self, (item,)) - Unpack = _UnpackForm( - 'Unpack', - doc="""A special typing construct to unpack a variadic type. For example: - - Shape = TypeVarTuple('Shape') - Batch = NewType('Batch', int) - - def add_batch_axis( - x: Array[Unpack[Shape]] - ) -> Array[Batch, Unpack[Shape]]: ... - - """) + Unpack = _UnpackForm('Unpack', doc=_UNPACK_DOC) def _is_unpack(obj): return isinstance(obj, _UnpackAlias) -if hasattr(typing, "TypeVarTuple"): # 3.11+ +if _PEP_696_IMPLEMENTED: + from typing import TypeVarTuple - # Add default Parameter - PEP 696 - class TypeVarTuple(typing.TypeVarTuple, _DefaultMixin, _root=True): +elif hasattr(typing, "TypeVarTuple"): # 3.11+ + + def _unpack_args(*args): + newargs = [] + for arg in args: + subargs = getattr(arg, '__typing_unpacked_tuple_args__', None) + if subargs is not None and not (subargs and subargs[-1] is ...): + newargs.extend(subargs) + else: + newargs.append(arg) + return newargs + + # Add default parameter - PEP 696 + class TypeVarTuple(metaclass=_TypeVarLikeMeta): """Type variable tuple.""" - def __init__(self, name, *, default=None): - super().__init__(name) - _DefaultMixin.__init__(self, default) + _backported_typevarlike = typing.TypeVarTuple - # for pickling: - try: - def_mod = sys._getframe(1).f_globals.get('__name__', '__main__') - except (AttributeError, ValueError): - def_mod = None - if def_mod != 'typing_extensions': - self.__module__ = def_mod + def __new__(cls, name, *, default=NoDefault): + tvt = typing.TypeVarTuple(name) + _set_default(tvt, default) + _set_module(tvt) -else: + def _typevartuple_prepare_subst(alias, args): + params = alias.__parameters__ + typevartuple_index = params.index(tvt) + for param in params[typevartuple_index + 1:]: + if isinstance(param, TypeVarTuple): + raise TypeError( + f"More than one TypeVarTuple parameter in {alias}" + ) + + alen = len(args) + plen = len(params) + left = typevartuple_index + right = plen - typevartuple_index - 1 + var_tuple_index = None + fillarg = None + for k, arg in enumerate(args): + if not isinstance(arg, type): + subargs = getattr(arg, '__typing_unpacked_tuple_args__', None) + if subargs and len(subargs) == 2 and subargs[-1] is ...: + if var_tuple_index is not None: + raise TypeError( + "More than one unpacked " + "arbitrary-length tuple argument" + ) + var_tuple_index = k + fillarg = subargs[0] + if var_tuple_index is not None: + left = min(left, var_tuple_index) + right = min(right, alen - var_tuple_index - 1) + elif left + right > alen: + raise TypeError(f"Too few arguments for {alias};" + f" actual {alen}, expected at least {plen - 1}") + if left == alen - right and tvt.has_default(): + replacement = _unpack_args(tvt.__default__) + else: + replacement = args[left: alen - right] + + return ( + *args[:left], + *([fillarg] * (typevartuple_index - left)), + replacement, + *([fillarg] * (plen - right - left - typevartuple_index - 1)), + *args[alen - right:], + ) + + tvt.__typing_prepare_subst__ = _typevartuple_prepare_subst + return tvt + + def __init_subclass__(self, *args, **kwds): + raise TypeError("Cannot subclass special typing classes") + +else: # <=3.10 class TypeVarTuple(_DefaultMixin): """Type variable tuple. @@ -1913,15 +2509,12 @@ else: def __iter__(self): yield self.__unpacked__ - def __init__(self, name, *, default=None): + def __init__(self, name, *, default=NoDefault): self.__name__ = name _DefaultMixin.__init__(self, default) # for pickling: - try: - def_mod = sys._getframe(1).f_globals.get('__name__', '__main__') - except (AttributeError, ValueError): - def_mod = None + def_mod = _caller() if def_mod != 'typing_extensions': self.__module__ = def_mod @@ -1944,10 +2537,10 @@ else: raise TypeError("Cannot subclass special typing classes") -if hasattr(typing, "reveal_type"): +if hasattr(typing, "reveal_type"): # 3.11+ reveal_type = typing.reveal_type -else: - def reveal_type(__obj: T) -> T: +else: # <=3.10 + def reveal_type(obj: T, /) -> T: """Reveal the inferred type of a variable. When a static type checker encounters a call to ``reveal_type()``, @@ -1963,14 +2556,20 @@ else: argument and returns it unchanged. """ - print(f"Runtime type is {type(__obj).__name__!r}", file=sys.stderr) - return __obj + print(f"Runtime type is {type(obj).__name__!r}", file=sys.stderr) + return obj -if hasattr(typing, "assert_never"): +if hasattr(typing, "_ASSERT_NEVER_REPR_MAX_LENGTH"): # 3.11+ + _ASSERT_NEVER_REPR_MAX_LENGTH = typing._ASSERT_NEVER_REPR_MAX_LENGTH +else: # <=3.10 + _ASSERT_NEVER_REPR_MAX_LENGTH = 100 + + +if hasattr(typing, "assert_never"): # 3.11+ assert_never = typing.assert_never -else: - def assert_never(__arg: Never) -> Never: +else: # <=3.10 + def assert_never(arg: Never, /) -> Never: """Assert to the type checker that a line of code is unreachable. Example:: @@ -1990,17 +2589,22 @@ else: At runtime, this throws an exception when called. """ - raise AssertionError("Expected code to be unreachable") + value = repr(arg) + if len(value) > _ASSERT_NEVER_REPR_MAX_LENGTH: + value = value[:_ASSERT_NEVER_REPR_MAX_LENGTH] + '...' + raise AssertionError(f"Expected code to be unreachable, but got: {value}") -if hasattr(typing, 'dataclass_transform'): +if sys.version_info >= (3, 12): # 3.12+ + # dataclass_transform exists in 3.11 but lacks the frozen_default parameter dataclass_transform = typing.dataclass_transform -else: +else: # <=3.11 def dataclass_transform( *, eq_default: bool = True, order_default: bool = False, kw_only_default: bool = False, + frozen_default: bool = False, field_specifiers: typing.Tuple[ typing.Union[typing.Type[typing.Any], typing.Callable[..., typing.Any]], ... @@ -2057,6 +2661,8 @@ else: assumed to be True or False if it is omitted by the caller. - ``kw_only_default`` indicates whether the ``kw_only`` parameter is assumed to be True or False if it is omitted by the caller. + - ``frozen_default`` indicates whether the ``frozen`` parameter is + assumed to be True or False if it is omitted by the caller. - ``field_specifiers`` specifies a static list of supported classes or functions that describe fields, similar to ``dataclasses.field()``. @@ -2071,6 +2677,7 @@ else: "eq_default": eq_default, "order_default": order_default, "kw_only_default": kw_only_default, + "frozen_default": frozen_default, "field_specifiers": field_specifiers, "kwargs": kwargs, } @@ -2078,18 +2685,18 @@ else: return decorator -if hasattr(typing, "override"): +if hasattr(typing, "override"): # 3.12+ override = typing.override -else: +else: # <=3.11 _F = typing.TypeVar("_F", bound=typing.Callable[..., typing.Any]) - def override(__arg: _F) -> _F: + def override(arg: _F, /) -> _F: """Indicate that a method is intended to override a method in a base class. Usage: class Base: - def method(self) -> None: ... + def method(self) -> None: pass class Child(Base): @@ -2102,10 +2709,156 @@ else: This helps prevent bugs that may occur when a base class is changed without an equivalent change to a child class. + There is no runtime checking of these properties. The decorator + sets the ``__override__`` attribute to ``True`` on the decorated object + to allow runtime introspection. + See PEP 698 for details. """ - return __arg + try: + arg.__override__ = True + except (AttributeError, TypeError): + # Skip the attribute silently if it is not writable. + # AttributeError happens if the object has __slots__ or a + # read-only property, TypeError if it's a builtin class. + pass + return arg + + +if hasattr(warnings, "deprecated"): + deprecated = warnings.deprecated +else: + _T = typing.TypeVar("_T") + + class deprecated: + """Indicate that a class, function or overload is deprecated. + + When this decorator is applied to an object, the type checker + will generate a diagnostic on usage of the deprecated object. + + Usage: + + @deprecated("Use B instead") + class A: + pass + + @deprecated("Use g instead") + def f(): + pass + + @overload + @deprecated("int support is deprecated") + def g(x: int) -> int: ... + @overload + def g(x: str) -> int: ... + + The warning specified by *category* will be emitted at runtime + on use of deprecated objects. For functions, that happens on calls; + for classes, on instantiation and on creation of subclasses. + If the *category* is ``None``, no warning is emitted at runtime. + The *stacklevel* determines where the + warning is emitted. If it is ``1`` (the default), the warning + is emitted at the direct caller of the deprecated object; if it + is higher, it is emitted further up the stack. + Static type checker behavior is not affected by the *category* + and *stacklevel* arguments. + + The deprecation message passed to the decorator is saved in the + ``__deprecated__`` attribute on the decorated object. + If applied to an overload, the decorator + must be after the ``@overload`` decorator for the attribute to + exist on the overload as returned by ``get_overloads()``. + + See PEP 702 for details. + + """ + def __init__( + self, + message: str, + /, + *, + category: typing.Optional[typing.Type[Warning]] = DeprecationWarning, + stacklevel: int = 1, + ) -> None: + if not isinstance(message, str): + raise TypeError( + "Expected an object of type str for 'message', not " + f"{type(message).__name__!r}" + ) + self.message = message + self.category = category + self.stacklevel = stacklevel + + def __call__(self, arg: _T, /) -> _T: + # Make sure the inner functions created below don't + # retain a reference to self. + msg = self.message + category = self.category + stacklevel = self.stacklevel + if category is None: + arg.__deprecated__ = msg + return arg + elif isinstance(arg, type): + import functools + from types import MethodType + + original_new = arg.__new__ + + @functools.wraps(original_new) + def __new__(cls, *args, **kwargs): + if cls is arg: + warnings.warn(msg, category=category, stacklevel=stacklevel + 1) + if original_new is not object.__new__: + return original_new(cls, *args, **kwargs) + # Mirrors a similar check in object.__new__. + elif cls.__init__ is object.__init__ and (args or kwargs): + raise TypeError(f"{cls.__name__}() takes no arguments") + else: + return original_new(cls) + + arg.__new__ = staticmethod(__new__) + + original_init_subclass = arg.__init_subclass__ + # We need slightly different behavior if __init_subclass__ + # is a bound method (likely if it was implemented in Python) + if isinstance(original_init_subclass, MethodType): + original_init_subclass = original_init_subclass.__func__ + + @functools.wraps(original_init_subclass) + def __init_subclass__(*args, **kwargs): + warnings.warn(msg, category=category, stacklevel=stacklevel + 1) + return original_init_subclass(*args, **kwargs) + + arg.__init_subclass__ = classmethod(__init_subclass__) + # Or otherwise, which likely means it's a builtin such as + # object's implementation of __init_subclass__. + else: + @functools.wraps(original_init_subclass) + def __init_subclass__(*args, **kwargs): + warnings.warn(msg, category=category, stacklevel=stacklevel + 1) + return original_init_subclass(*args, **kwargs) + + arg.__init_subclass__ = __init_subclass__ + + arg.__deprecated__ = __new__.__deprecated__ = msg + __init_subclass__.__deprecated__ = msg + return arg + elif callable(arg): + import functools + + @functools.wraps(arg) + def wrapper(*args, **kwargs): + warnings.warn(msg, category=category, stacklevel=stacklevel + 1) + return arg(*args, **kwargs) + + arg.__deprecated__ = wrapper.__deprecated__ = msg + return wrapper + else: + raise TypeError( + "@deprecated decorator with non-None category must be applied to " + f"a class or callable, not {arg!r}" + ) # We have to do some monkey patching to deal with the dual nature of @@ -2116,22 +2869,230 @@ else: # counting generic parameters, so that when we subscript a generic, # the runtime doesn't try to substitute the Unpack with the subscripted type. if not hasattr(typing, "TypeVarTuple"): - typing._collect_type_vars = _collect_type_vars + def _check_generic(cls, parameters, elen=_marker): + """Check correct count for parameters of a generic cls (internal helper). + + This gives a nice error message in case of count mismatch. + """ + if not elen: + raise TypeError(f"{cls} is not a generic class") + if elen is _marker: + if not hasattr(cls, "__parameters__") or not cls.__parameters__: + raise TypeError(f"{cls} is not a generic class") + elen = len(cls.__parameters__) + alen = len(parameters) + if alen != elen: + expect_val = elen + if hasattr(cls, "__parameters__"): + parameters = [p for p in cls.__parameters__ if not _is_unpack(p)] + num_tv_tuples = sum(isinstance(p, TypeVarTuple) for p in parameters) + if (num_tv_tuples > 0) and (alen >= elen - num_tv_tuples): + return + + # deal with TypeVarLike defaults + # required TypeVarLikes cannot appear after a defaulted one. + if alen < elen: + # since we validate TypeVarLike default in _collect_type_vars + # or _collect_parameters we can safely check parameters[alen] + if ( + getattr(parameters[alen], '__default__', NoDefault) + is not NoDefault + ): + return + + num_default_tv = sum(getattr(p, '__default__', NoDefault) + is not NoDefault for p in parameters) + + elen -= num_default_tv + + expect_val = f"at least {elen}" + + things = "arguments" if sys.version_info >= (3, 10) else "parameters" + raise TypeError(f"Too {'many' if alen > elen else 'few'} {things}" + f" for {cls}; actual {alen}, expected {expect_val}") +else: + # Python 3.11+ + + def _check_generic(cls, parameters, elen): + """Check correct count for parameters of a generic cls (internal helper). + + This gives a nice error message in case of count mismatch. + """ + if not elen: + raise TypeError(f"{cls} is not a generic class") + alen = len(parameters) + if alen != elen: + expect_val = elen + if hasattr(cls, "__parameters__"): + parameters = [p for p in cls.__parameters__ if not _is_unpack(p)] + + # deal with TypeVarLike defaults + # required TypeVarLikes cannot appear after a defaulted one. + if alen < elen: + # since we validate TypeVarLike default in _collect_type_vars + # or _collect_parameters we can safely check parameters[alen] + if ( + getattr(parameters[alen], '__default__', NoDefault) + is not NoDefault + ): + return + + num_default_tv = sum(getattr(p, '__default__', NoDefault) + is not NoDefault for p in parameters) + + elen -= num_default_tv + + expect_val = f"at least {elen}" + + raise TypeError(f"Too {'many' if alen > elen else 'few'} arguments" + f" for {cls}; actual {alen}, expected {expect_val}") + +if not _PEP_696_IMPLEMENTED: typing._check_generic = _check_generic -# Backport typing.NamedTuple as it exists in Python 3.11. +def _has_generic_or_protocol_as_origin() -> bool: + try: + frame = sys._getframe(2) + # - Catch AttributeError: not all Python implementations have sys._getframe() + # - Catch ValueError: maybe we're called from an unexpected module + # and the call stack isn't deep enough + except (AttributeError, ValueError): + return False # err on the side of leniency + else: + # If we somehow get invoked from outside typing.py, + # also err on the side of leniency + if frame.f_globals.get("__name__") != "typing": + return False + origin = frame.f_locals.get("origin") + # Cannot use "in" because origin may be an object with a buggy __eq__ that + # throws an error. + return origin is typing.Generic or origin is Protocol or origin is typing.Protocol + + +_TYPEVARTUPLE_TYPES = {TypeVarTuple, getattr(typing, "TypeVarTuple", None)} + + +def _is_unpacked_typevartuple(x) -> bool: + if get_origin(x) is not Unpack: + return False + args = get_args(x) + return ( + bool(args) + and len(args) == 1 + and type(args[0]) in _TYPEVARTUPLE_TYPES + ) + + +# Python 3.11+ _collect_type_vars was renamed to _collect_parameters +if hasattr(typing, '_collect_type_vars'): + def _collect_type_vars(types, typevar_types=None): + """Collect all type variable contained in types in order of + first appearance (lexicographic order). For example:: + + _collect_type_vars((T, List[S, T])) == (T, S) + """ + if typevar_types is None: + typevar_types = typing.TypeVar + tvars = [] + + # A required TypeVarLike cannot appear after a TypeVarLike with a default + # if it was a direct call to `Generic[]` or `Protocol[]` + enforce_default_ordering = _has_generic_or_protocol_as_origin() + default_encountered = False + + # Also, a TypeVarLike with a default cannot appear after a TypeVarTuple + type_var_tuple_encountered = False + + for t in types: + if _is_unpacked_typevartuple(t): + type_var_tuple_encountered = True + elif isinstance(t, typevar_types) and t not in tvars: + if enforce_default_ordering: + has_default = getattr(t, '__default__', NoDefault) is not NoDefault + if has_default: + if type_var_tuple_encountered: + raise TypeError('Type parameter with a default' + ' follows TypeVarTuple') + default_encountered = True + elif default_encountered: + raise TypeError(f'Type parameter {t!r} without a default' + ' follows type parameter with a default') + + tvars.append(t) + if _should_collect_from_parameters(t): + tvars.extend([t for t in t.__parameters__ if t not in tvars]) + return tuple(tvars) + + typing._collect_type_vars = _collect_type_vars +else: + def _collect_parameters(args): + """Collect all type variables and parameter specifications in args + in order of first appearance (lexicographic order). + + For example:: + + assert _collect_parameters((T, Callable[P, T])) == (T, P) + """ + parameters = [] + + # A required TypeVarLike cannot appear after a TypeVarLike with default + # if it was a direct call to `Generic[]` or `Protocol[]` + enforce_default_ordering = _has_generic_or_protocol_as_origin() + default_encountered = False + + # Also, a TypeVarLike with a default cannot appear after a TypeVarTuple + type_var_tuple_encountered = False + + for t in args: + if isinstance(t, type): + # We don't want __parameters__ descriptor of a bare Python class. + pass + elif isinstance(t, tuple): + # `t` might be a tuple, when `ParamSpec` is substituted with + # `[T, int]`, or `[int, *Ts]`, etc. + for x in t: + for collected in _collect_parameters([x]): + if collected not in parameters: + parameters.append(collected) + elif hasattr(t, '__typing_subst__'): + if t not in parameters: + if enforce_default_ordering: + has_default = ( + getattr(t, '__default__', NoDefault) is not NoDefault + ) + + if type_var_tuple_encountered and has_default: + raise TypeError('Type parameter with a default' + ' follows TypeVarTuple') + + if has_default: + default_encountered = True + elif default_encountered: + raise TypeError(f'Type parameter {t!r} without a default' + ' follows type parameter with a default') + + parameters.append(t) + else: + if _is_unpacked_typevartuple(t): + type_var_tuple_encountered = True + for x in getattr(t, '__parameters__', ()): + if x not in parameters: + parameters.append(x) + + return tuple(parameters) + + if not _PEP_696_IMPLEMENTED: + typing._collect_parameters = _collect_parameters + +# Backport typing.NamedTuple as it exists in Python 3.13. # In 3.11, the ability to define generic `NamedTuple`s was supported. # This was explicitly disallowed in 3.9-3.10, and only half-worked in <=3.8. -if sys.version_info >= (3, 11): +# On 3.12, we added __orig_bases__ to call-based NamedTuples +# On 3.13, we deprecated kwargs-based NamedTuples +if sys.version_info >= (3, 13): NamedTuple = typing.NamedTuple else: - def _caller(): - try: - return sys._getframe(2).f_globals.get('__name__', '__main__') - except (AttributeError, ValueError): # For platforms without _getframe() - return None - def _make_nmtuple(name, types, module, defaults=()): fields = [n for n, t in types] annotations = {n: typing._type_check(t, f"field {n} annotation must be a type") @@ -2156,7 +3117,13 @@ else: raise TypeError( 'can only inherit from a NamedTuple type and Generic') bases = tuple(tuple if base is _NamedTuple else base for base in bases) - types = ns.get('__annotations__', {}) + if "__annotations__" in ns: + types = ns["__annotations__"] + elif "__annotate__" in ns: + # TODO: Use inspect.VALUE here, and make the annotations lazily evaluated + types = ns["__annotate__"](1) + else: + types = {} default_names = [] for field_name in types: if field_name in ns: @@ -2173,37 +3140,502 @@ else: ) nm_tpl.__bases__ = bases if typing.Generic in bases: - class_getitem = typing.Generic.__class_getitem__.__func__ - nm_tpl.__class_getitem__ = classmethod(class_getitem) + if hasattr(typing, '_generic_class_getitem'): # 3.12+ + nm_tpl.__class_getitem__ = classmethod(typing._generic_class_getitem) + else: + class_getitem = typing.Generic.__class_getitem__.__func__ + nm_tpl.__class_getitem__ = classmethod(class_getitem) # update from user namespace without overriding special namedtuple attributes - for key in ns: + for key, val in ns.items(): if key in _prohibited_namedtuple_fields: raise AttributeError("Cannot overwrite NamedTuple attribute " + key) - elif key not in _special_namedtuple_fields and key not in nm_tpl._fields: - setattr(nm_tpl, key, ns[key]) + elif key not in _special_namedtuple_fields: + if key not in nm_tpl._fields: + setattr(nm_tpl, key, ns[key]) + try: + set_name = type(val).__set_name__ + except AttributeError: + pass + else: + try: + set_name(val, nm_tpl, key) + except BaseException as e: + msg = ( + f"Error calling __set_name__ on {type(val).__name__!r} " + f"instance {key!r} in {typename!r}" + ) + # BaseException.add_note() existed on py311, + # but the __set_name__ machinery didn't start + # using add_note() until py312. + # Making sure exceptions are raised in the same way + # as in "normal" classes seems most important here. + if sys.version_info >= (3, 12): + e.add_note(msg) + raise + else: + raise RuntimeError(msg) from e + if typing.Generic in bases: nm_tpl.__init_subclass__() return nm_tpl - def NamedTuple(__typename, __fields=None, **kwargs): - if __fields is None: - __fields = kwargs.items() - elif kwargs: - raise TypeError("Either list of fields or keywords" - " can be provided to NamedTuple, not both") - return _make_nmtuple(__typename, __fields, module=_caller()) - - NamedTuple.__doc__ = typing.NamedTuple.__doc__ _NamedTuple = type.__new__(_NamedTupleMeta, 'NamedTuple', (), {}) - # On 3.8+, alter the signature so that it matches typing.NamedTuple. - # The signature of typing.NamedTuple on >=3.8 is invalid syntax in Python 3.7, - # so just leave the signature as it is on 3.7. - if sys.version_info >= (3, 8): - NamedTuple.__text_signature__ = '(typename, fields=None, /, **kwargs)' - def _namedtuple_mro_entries(bases): assert NamedTuple in bases return (_NamedTuple,) - NamedTuple.__mro_entries__ = _namedtuple_mro_entries + @_ensure_subclassable(_namedtuple_mro_entries) + def NamedTuple(typename, fields=_marker, /, **kwargs): + """Typed version of namedtuple. + + Usage:: + + class Employee(NamedTuple): + name: str + id: int + + This is equivalent to:: + + Employee = collections.namedtuple('Employee', ['name', 'id']) + + The resulting class has an extra __annotations__ attribute, giving a + dict that maps field names to types. (The field names are also in + the _fields attribute, which is part of the namedtuple API.) + An alternative equivalent functional syntax is also accepted:: + + Employee = NamedTuple('Employee', [('name', str), ('id', int)]) + """ + if fields is _marker: + if kwargs: + deprecated_thing = "Creating NamedTuple classes using keyword arguments" + deprecation_msg = ( + "{name} is deprecated and will be disallowed in Python {remove}. " + "Use the class-based or functional syntax instead." + ) + else: + deprecated_thing = "Failing to pass a value for the 'fields' parameter" + example = f"`{typename} = NamedTuple({typename!r}, [])`" + deprecation_msg = ( + "{name} is deprecated and will be disallowed in Python {remove}. " + "To create a NamedTuple class with 0 fields " + "using the functional syntax, " + "pass an empty list, e.g. " + ) + example + "." + elif fields is None: + if kwargs: + raise TypeError( + "Cannot pass `None` as the 'fields' parameter " + "and also specify fields using keyword arguments" + ) + else: + deprecated_thing = "Passing `None` as the 'fields' parameter" + example = f"`{typename} = NamedTuple({typename!r}, [])`" + deprecation_msg = ( + "{name} is deprecated and will be disallowed in Python {remove}. " + "To create a NamedTuple class with 0 fields " + "using the functional syntax, " + "pass an empty list, e.g. " + ) + example + "." + elif kwargs: + raise TypeError("Either list of fields or keywords" + " can be provided to NamedTuple, not both") + if fields is _marker or fields is None: + warnings.warn( + deprecation_msg.format(name=deprecated_thing, remove="3.15"), + DeprecationWarning, + stacklevel=2, + ) + fields = kwargs.items() + nt = _make_nmtuple(typename, fields, module=_caller()) + nt.__orig_bases__ = (NamedTuple,) + return nt + + +if hasattr(collections.abc, "Buffer"): + Buffer = collections.abc.Buffer +else: + class Buffer(abc.ABC): # noqa: B024 + """Base class for classes that implement the buffer protocol. + + The buffer protocol allows Python objects to expose a low-level + memory buffer interface. Before Python 3.12, it is not possible + to implement the buffer protocol in pure Python code, or even + to check whether a class implements the buffer protocol. In + Python 3.12 and higher, the ``__buffer__`` method allows access + to the buffer protocol from Python code, and the + ``collections.abc.Buffer`` ABC allows checking whether a class + implements the buffer protocol. + + To indicate support for the buffer protocol in earlier versions, + inherit from this ABC, either in a stub file or at runtime, + or use ABC registration. This ABC provides no methods, because + there is no Python-accessible methods shared by pre-3.12 buffer + classes. It is useful primarily for static checks. + + """ + + # As a courtesy, register the most common stdlib buffer classes. + Buffer.register(memoryview) + Buffer.register(bytearray) + Buffer.register(bytes) + + +# Backport of types.get_original_bases, available on 3.12+ in CPython +if hasattr(_types, "get_original_bases"): + get_original_bases = _types.get_original_bases +else: + def get_original_bases(cls, /): + """Return the class's "original" bases prior to modification by `__mro_entries__`. + + Examples:: + + from typing import TypeVar, Generic + from pip._vendor.typing_extensions import NamedTuple, TypedDict + + T = TypeVar("T") + class Foo(Generic[T]): ... + class Bar(Foo[int], float): ... + class Baz(list[str]): ... + Eggs = NamedTuple("Eggs", [("a", int), ("b", str)]) + Spam = TypedDict("Spam", {"a": int, "b": str}) + + assert get_original_bases(Bar) == (Foo[int], float) + assert get_original_bases(Baz) == (list[str],) + assert get_original_bases(Eggs) == (NamedTuple,) + assert get_original_bases(Spam) == (TypedDict,) + assert get_original_bases(int) == (object,) + """ + try: + return cls.__dict__.get("__orig_bases__", cls.__bases__) + except AttributeError: + raise TypeError( + f'Expected an instance of type, not {type(cls).__name__!r}' + ) from None + + +# NewType is a class on Python 3.10+, making it pickleable +# The error message for subclassing instances of NewType was improved on 3.11+ +if sys.version_info >= (3, 11): + NewType = typing.NewType +else: + class NewType: + """NewType creates simple unique types with almost zero + runtime overhead. NewType(name, tp) is considered a subtype of tp + by static type checkers. At runtime, NewType(name, tp) returns + a dummy callable that simply returns its argument. Usage:: + UserId = NewType('UserId', int) + def name_by_id(user_id: UserId) -> str: + ... + UserId('user') # Fails type check + name_by_id(42) # Fails type check + name_by_id(UserId(42)) # OK + num = UserId(5) + 1 # type: int + """ + + def __call__(self, obj, /): + return obj + + def __init__(self, name, tp): + self.__qualname__ = name + if '.' in name: + name = name.rpartition('.')[-1] + self.__name__ = name + self.__supertype__ = tp + def_mod = _caller() + if def_mod != 'typing_extensions': + self.__module__ = def_mod + + def __mro_entries__(self, bases): + # We defined __mro_entries__ to get a better error message + # if a user attempts to subclass a NewType instance. bpo-46170 + supercls_name = self.__name__ + + class Dummy: + def __init_subclass__(cls): + subcls_name = cls.__name__ + raise TypeError( + f"Cannot subclass an instance of NewType. " + f"Perhaps you were looking for: " + f"`{subcls_name} = NewType({subcls_name!r}, {supercls_name})`" + ) + + return (Dummy,) + + def __repr__(self): + return f'{self.__module__}.{self.__qualname__}' + + def __reduce__(self): + return self.__qualname__ + + if sys.version_info >= (3, 10): + # PEP 604 methods + # It doesn't make sense to have these methods on Python <3.10 + + def __or__(self, other): + return typing.Union[self, other] + + def __ror__(self, other): + return typing.Union[other, self] + + +if hasattr(typing, "TypeAliasType"): + TypeAliasType = typing.TypeAliasType +else: + def _is_unionable(obj): + """Corresponds to is_unionable() in unionobject.c in CPython.""" + return obj is None or isinstance(obj, ( + type, + _types.GenericAlias, + _types.UnionType, + TypeAliasType, + )) + + class TypeAliasType: + """Create named, parameterized type aliases. + + This provides a backport of the new `type` statement in Python 3.12: + + type ListOrSet[T] = list[T] | set[T] + + is equivalent to: + + T = TypeVar("T") + ListOrSet = TypeAliasType("ListOrSet", list[T] | set[T], type_params=(T,)) + + The name ListOrSet can then be used as an alias for the type it refers to. + + The type_params argument should contain all the type parameters used + in the value of the type alias. If the alias is not generic, this + argument is omitted. + + Static type checkers should only support type aliases declared using + TypeAliasType that follow these rules: + + - The first argument (the name) must be a string literal. + - The TypeAliasType instance must be immediately assigned to a variable + of the same name. (For example, 'X = TypeAliasType("Y", int)' is invalid, + as is 'X, Y = TypeAliasType("X", int), TypeAliasType("Y", int)'). + + """ + + def __init__(self, name: str, value, *, type_params=()): + if not isinstance(name, str): + raise TypeError("TypeAliasType name must be a string") + self.__value__ = value + self.__type_params__ = type_params + + parameters = [] + for type_param in type_params: + if isinstance(type_param, TypeVarTuple): + parameters.extend(type_param) + else: + parameters.append(type_param) + self.__parameters__ = tuple(parameters) + def_mod = _caller() + if def_mod != 'typing_extensions': + self.__module__ = def_mod + # Setting this attribute closes the TypeAliasType from further modification + self.__name__ = name + + def __setattr__(self, name: str, value: object, /) -> None: + if hasattr(self, "__name__"): + self._raise_attribute_error(name) + super().__setattr__(name, value) + + def __delattr__(self, name: str, /) -> Never: + self._raise_attribute_error(name) + + def _raise_attribute_error(self, name: str) -> Never: + # Match the Python 3.12 error messages exactly + if name == "__name__": + raise AttributeError("readonly attribute") + elif name in {"__value__", "__type_params__", "__parameters__", "__module__"}: + raise AttributeError( + f"attribute '{name}' of 'typing.TypeAliasType' objects " + "is not writable" + ) + else: + raise AttributeError( + f"'typing.TypeAliasType' object has no attribute '{name}'" + ) + + def __repr__(self) -> str: + return self.__name__ + + def __getitem__(self, parameters): + if not isinstance(parameters, tuple): + parameters = (parameters,) + parameters = [ + typing._type_check( + item, f'Subscripting {self.__name__} requires a type.' + ) + for item in parameters + ] + return typing._GenericAlias(self, tuple(parameters)) + + def __reduce__(self): + return self.__name__ + + def __init_subclass__(cls, *args, **kwargs): + raise TypeError( + "type 'typing_extensions.TypeAliasType' is not an acceptable base type" + ) + + # The presence of this method convinces typing._type_check + # that TypeAliasTypes are types. + def __call__(self): + raise TypeError("Type alias is not callable") + + if sys.version_info >= (3, 10): + def __or__(self, right): + # For forward compatibility with 3.12, reject Unions + # that are not accepted by the built-in Union. + if not _is_unionable(right): + return NotImplemented + return typing.Union[self, right] + + def __ror__(self, left): + if not _is_unionable(left): + return NotImplemented + return typing.Union[left, self] + + +if hasattr(typing, "is_protocol"): + is_protocol = typing.is_protocol + get_protocol_members = typing.get_protocol_members +else: + def is_protocol(tp: type, /) -> bool: + """Return True if the given type is a Protocol. + + Example:: + + >>> from typing_extensions import Protocol, is_protocol + >>> class P(Protocol): + ... def a(self) -> str: ... + ... b: int + >>> is_protocol(P) + True + >>> is_protocol(int) + False + """ + return ( + isinstance(tp, type) + and getattr(tp, '_is_protocol', False) + and tp is not Protocol + and tp is not typing.Protocol + ) + + def get_protocol_members(tp: type, /) -> typing.FrozenSet[str]: + """Return the set of members defined in a Protocol. + + Example:: + + >>> from typing_extensions import Protocol, get_protocol_members + >>> class P(Protocol): + ... def a(self) -> str: ... + ... b: int + >>> get_protocol_members(P) + frozenset({'a', 'b'}) + + Raise a TypeError for arguments that are not Protocols. + """ + if not is_protocol(tp): + raise TypeError(f'{tp!r} is not a Protocol') + if hasattr(tp, '__protocol_attrs__'): + return frozenset(tp.__protocol_attrs__) + return frozenset(_get_protocol_attrs(tp)) + + +if hasattr(typing, "Doc"): + Doc = typing.Doc +else: + class Doc: + """Define the documentation of a type annotation using ``Annotated``, to be + used in class attributes, function and method parameters, return values, + and variables. + + The value should be a positional-only string literal to allow static tools + like editors and documentation generators to use it. + + This complements docstrings. + + The string value passed is available in the attribute ``documentation``. + + Example:: + + >>> from typing_extensions import Annotated, Doc + >>> def hi(to: Annotated[str, Doc("Who to say hi to")]) -> None: ... + """ + def __init__(self, documentation: str, /) -> None: + self.documentation = documentation + + def __repr__(self) -> str: + return f"Doc({self.documentation!r})" + + def __hash__(self) -> int: + return hash(self.documentation) + + def __eq__(self, other: object) -> bool: + if not isinstance(other, Doc): + return NotImplemented + return self.documentation == other.documentation + + +_CapsuleType = getattr(_types, "CapsuleType", None) + +if _CapsuleType is None: + try: + import _socket + except ImportError: + pass + else: + _CAPI = getattr(_socket, "CAPI", None) + if _CAPI is not None: + _CapsuleType = type(_CAPI) + +if _CapsuleType is not None: + CapsuleType = _CapsuleType + __all__.append("CapsuleType") + + +# Aliases for items that have always been in typing. +# Explicitly assign these (rather than using `from typing import *` at the top), +# so that we get a CI error if one of these is deleted from typing.py +# in a future version of Python +AbstractSet = typing.AbstractSet +AnyStr = typing.AnyStr +BinaryIO = typing.BinaryIO +Callable = typing.Callable +Collection = typing.Collection +Container = typing.Container +Dict = typing.Dict +ForwardRef = typing.ForwardRef +FrozenSet = typing.FrozenSet +Generic = typing.Generic +Hashable = typing.Hashable +IO = typing.IO +ItemsView = typing.ItemsView +Iterable = typing.Iterable +Iterator = typing.Iterator +KeysView = typing.KeysView +List = typing.List +Mapping = typing.Mapping +MappingView = typing.MappingView +Match = typing.Match +MutableMapping = typing.MutableMapping +MutableSequence = typing.MutableSequence +MutableSet = typing.MutableSet +Optional = typing.Optional +Pattern = typing.Pattern +Reversible = typing.Reversible +Sequence = typing.Sequence +Set = typing.Set +Sized = typing.Sized +TextIO = typing.TextIO +Tuple = typing.Tuple +Union = typing.Union +ValuesView = typing.ValuesView +cast = typing.cast +no_type_check = typing.no_type_check +no_type_check_decorator = typing.no_type_check_decorator diff --git a/gestao_raul/Lib/site-packages/pip/_vendor/urllib3/__pycache__/__init__.cpython-310.pyc b/gestao_raul/Lib/site-packages/pip/_vendor/urllib3/__pycache__/__init__.cpython-310.pyc index 45b7c6f652c14cfbdbc4e3c59ebdb9884cc11390..f6487259106755f73d13ff5aa81e4cad65814dad 100644 GIT binary patch delta 37 rcmX>rd|a42pO=@50SFfPt=`COz{VIe*@jJ$H7Ll*)p>IQTP`yIuH*?V delta 43 xcmX>ud{&q{pO=@50SKypgl^# diff --git a/gestao_raul/Lib/site-packages/pip/_vendor/urllib3/__pycache__/_collections.cpython-310.pyc b/gestao_raul/Lib/site-packages/pip/_vendor/urllib3/__pycache__/_collections.cpython-310.pyc index 38ad1a5752e6fe30ebfd00c543993e2bb8a38a39..14cc810f03500c312d6047267784a94fa1db5630 100644 GIT binary patch delta 709 zcmZuu&rcIU6rNXVsX!}=F^EJ)`PGF|X@Vvgj6z$e2^v#sf}4_c-Fa+R=}y^QB-9c# zl6deqgvbrKnwS{Wzrc%kPW=nKdC`-Jakd5Y;3V(m&71Fg^WOKq=MUziJQ8Uk^6cGx zXD-D*L_a~#!_@V{eHR_Ku!>6_FQmD#QbOBv3%T4>CbjDx}Fm^Ln64c1bnx7Jw{=szhP~mF*UKcyd_cPmvnj_GE`6ZW#@0 z(K2Web%qXIv~Y>J^bsy{N1}?lZCbWTy&_TvmsimBjw_YWD{@A?4Nhk=dCDD{%}l1L zZW!EQbrPq!=@cDLCP(9R4h_%ZHcehlj3th1D9x4j)L|Plg-1 zU#8M_#LBO2l(7;$y3V3)dPOyqwoKV;B{HkK-pCzUR}RJ$a2DhilqSdDpxSvTf_5Z= z))2w1g&Khqmav9vl~JurD?3=$9n_>cT4R3AnDj-$Q$UF8uy=#D)PIFH3n>{{y+ztbDOD~Vc+!kYLM8-*zmSB8V(wqS>NpnQgBqJ2pF16Ebo Aod5s; delta 248 zcmcZ-@jiqvpO=@50SKypgr-|-ZRFd^sG8<%6%$&VT2vfUo|;pVALEjrT$-DjS5h34 zo?2Xzm>*x1Semo>5#ttap>IH)sSHt!DGX6eDU4CfDY}za@J&un`iM^3Qu0IoW&?USxV(3qtxUl zDl-|CCfBKcWmKPBqV|PRZ*r!3BcsXY*Xo9hj5(8KHK#C|Pu`^I&Zsu|muAD{dM#t_ qOrT?mY(Yf!X&Ep&Oy<|tW@6!;Y^S}Av2yZP?RWtA7EGl8 diff --git a/gestao_raul/Lib/site-packages/pip/_vendor/urllib3/__pycache__/_version.cpython-310.pyc b/gestao_raul/Lib/site-packages/pip/_vendor/urllib3/__pycache__/_version.cpython-310.pyc index affbc2e9507dadcf74a1796ff3dfa3067f473d0f..05ecedd5552b07122cf64f120da7be08f61a0eb0 100644 GIT binary patch delta 39 tcmcb{c!7~SpO=@50SFfPt)9qj!enGH(NUH$W@5Y~YfzArtMkO>U;x2m3Pk__ delta 45 zcmcb>c#V-epO=@50SKypgiho(VKOwC=qSsWG%;S1J3Y0yBr!j}D6uqWVr?)06&Veq diff --git a/gestao_raul/Lib/site-packages/pip/_vendor/urllib3/__pycache__/connection.cpython-310.pyc b/gestao_raul/Lib/site-packages/pip/_vendor/urllib3/__pycache__/connection.cpython-310.pyc index 6af4d2dacf760a66b8c56fd9a41629899c3ba512..2cf143abee0c9538ef89abee859087a3b17c0c1f 100644 GIT binary patch delta 1245 zcmZ9LO>7fK6vt7nvp4Rvy|6<^I&G?Ai>ajda@C2LC6D-H6D$mlqph@bpoU^l%3*l;W~cn^FhI;u$Al zQv=EtI~B`@Z1Un{f8)|galA3MeNmzUD%DAUAesg0fK$L}00Wn>Tt-Dp-cB41clezj zUDJ3$JZ*}Gms%`sRA#6BPn!2=d`28y-!q_Qs7Jqbz@LEfT0rzWplmGmC^xL$TJW7FTr&4^2_J9z5Ch6O%e za)%A3diM8DE?u=Ud|no9rweGH?!w2W5Jiws1zL$ z0bB;I09S!9a1*!%{36j3ERFR)5}56+^N(S98+iAvXkO+Xi2IS_os&?H0zU%<;601V zyL$VJP>+eZ_J(C=5bg%%#ohK*fhif*iYM*8d`fg}T;R7wYsaSnSY0Ku9ZmeE{2`08 z9X-oQrXt##zlOz$PDFp?ljzZRPfAfprVK1*a6=>HTDptn@%X`+SuG|8{~dpcL}&390(2E2smU$t+@$$Xs}v1u<>rgI=|4|#+U bN|y_dbWcooO;zn<;=m%LX z{)FP>!S+6LH_hX-WViDK`mPT-%a997@Fj|5jv$00K}88kk%%B*8wdte^1fs*%GPbA z^{jIg($@fEfGPkF7zZSXP`(Yhb*js8Nje{9U{XvW9WS%R_{lXWV*Vx^a|D8S$G#* z^HLf+9Pv zg@mz^;VTP{#!ALE|8z5!TYxLC0By`M%9jv&0P}!nfad@QU=i>dKq%an)Lu)FfaU&} zKMcoZ;^7NSb2Lm6N8RPd0Z0x4h5-LFWw>>Msso0}$GWl&w;((Mm?Lkwt)>wg7Lv;P zHZ(#`*RP{xB763kz+3^j>)C-8$ve-<{5U9pmCrqMhf(`)Uq+HJhq%p)uJ8~7m*+yDRo diff --git a/gestao_raul/Lib/site-packages/pip/_vendor/urllib3/__pycache__/connectionpool.cpython-310.pyc b/gestao_raul/Lib/site-packages/pip/_vendor/urllib3/__pycache__/connectionpool.cpython-310.pyc index 422692b6602d777cf2751b9595a5dcb08cc901e4..45bb93a4a77f1c1e24e3ab9823cb34cca96a062c 100644 GIT binary patch delta 5800 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 delta 5432 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 delta 43 xcmexp|J|NDpO=@50SKypgl^>aXJSm49L*%jot|1;l9(S~lvtXxxss_u762j|4X6MB diff --git a/gestao_raul/Lib/site-packages/pip/_vendor/urllib3/__pycache__/filepost.cpython-310.pyc b/gestao_raul/Lib/site-packages/pip/_vendor/urllib3/__pycache__/filepost.cpython-310.pyc index e15bd8c326823bb06bed06362493178e533864c9..68b88b007a15c013f5d0415069c7759c3d821afa 100644 GIT binary patch delta 57 zcmdldxIQ=Xbrk{{!epIn-onpaXBlb%{! Rl9(S~lvtXxS%7H;2LO@_78n2k diff --git a/gestao_raul/Lib/site-packages/pip/_vendor/urllib3/__pycache__/poolmanager.cpython-310.pyc b/gestao_raul/Lib/site-packages/pip/_vendor/urllib3/__pycache__/poolmanager.cpython-310.pyc index 00c5b4cc526bf88d4ae0ea27e380c9d8a0a7e798..2364cfc28aac1ebae5011cb6f9d1824131287eec 100644 GIT binary patch delta 3141 zcmZuz+fN+V8J{yd?C#967hqwz8n8{mf*aeZFEQAO6GLpvF0~A{VTwDfcaC9UW*5%P zf=LIhYOGXI>n7HbB2|ssT_>&TrmiZlsy_4~e?VXIR%x0(^rcdir>IIF{L+5k84Q?~ z6~8^_JLkJ!&i-rl>1v`Bk82YAJ(~D*zHQ<`qMM977(QCDBYK2LX2@)?qPD85wx(-# zOpgg#*lM)ndfZOv2|KAL?UbIfoAf4e7O|S`7QIERqgL8()mz0{wc6~Ao)K%!YPUP| z4zZ3|opzVrCDx5rx80-n5NW<5nej(N-$#{dFYT)lz28je`^}_&fXdZ_W{MuD$@+lV zq`xHg&GaSMzihUc>3fnsNJG^u9i#&_d1qy|ekAKdRHd3&4WF0HHZyZiGBY%@8PX5I zzTNDAeFr_X8PfD`nVn`A2z!Okk%1=JPh6Oqx^jW$Ov=UzdAI&9(Lgg;5NM;?=jY?P(Ak=#!j_}%33bK}60ReZ&v)@@%cmThCX zRI(iQ23m0wVcQ;d4Y#uZpTfU`iEboeqVZ?R*So)mXL$87VY%n)fcF}oN-dHc|18xT z+a;|2W$Hb-at80d4&W=xCFZheSY{iTfn=c`4P@WJ3yqVLmyJu~GdI3_b!-yc5Nfvh z*&<%Nf)}Icf{_O=uHsf+THE7Q1zRQe^V3Y4Px*)UW2FEj0_D3UKCyba)Ic&;;Z3QmQ!cr)NZ5q?Y-v+fqTC;p7*n{eoFM zGVp*r?M-YO*Hb`ZQoQWok9Dp}I|;>Nao6&KXNSm}U>XaJAKo)`;`aZF4i#_CQh%#=?f?X=BpOrj3{vt9F1~xW6i~ zkMKsNL#lRqF*Ay@WaY>2#Ne>YBcALP(OL-jwm3X#Q3Var+j0RoluyV{$)uD` z)Q`P*M;RgV|0!3M5_xa(W%I=(?9F^0Y4_!>^ za5BMgR6h<)uxb9)(8)PbucAP4vNIE*fPfPq7>XidE4VEqcnHe~_Yg#6QRgl@M3aaH zOY^(Khe?`09bP4^_3WYZVWRVuSHG&=$zX`YeZ{JQ-P9q!o?l(B)WtbnWNWeH` zwV?CWfE6467M_V}`7N&S4Gel(j3yCA^y4vs*99J*oZ}eAu1SMZKgX;L!a|G5L?L|P z*a(^CA0I2s%>WSsAx33{{SJ14Eh6+n_KwFGfUU8&XOs$l_Iu>s$pDJ@rfwZSN=OU; z#fi3T4$noEi7JY2#l>Jxw;2O&{`V6Z@*n=qiLWcdZ!F4eEa)ekm?FBta1%+nh%|BY zkGR_L0;}WsWAYG>{!fhujC*WH#)J%=OkW$Ui0Yk~c$?Kwg!sYn2nDO`VyqLM=7A(@B|Z#<=uR-QR^@~tN* z8yO*G$N&>vcqAHD2oxX$qMR;p!GV9NnK0aE5AzRBjbCF8u=W$!+cfVMN=5OyiXxA| zi704aqj&Oj8BZOiB2_~W1&@yjivz$fo?Lz@H%}dw-~%HA`6Loy8m^S7u+DL-NuISiAp&QtetX&$Cs5a^%7DO=)CMtaBy|I0|{ rY0*a41rLl#w~({g9NsYy(g+wN;rai}2;M)skEHn7(IcUKjn01ojn>-^ delta 3236 zcmZuzU2Gd!6`ngD+cUP~{Qsv-Hrr(582Yoj?WQ5Lf+m#hPg+Pzno+9B)N|uFnX%nF z}_BGK-yShlUIyYPVcv0)2D>>n6`!~=*Y9uN=kz{7|KBoGqfiA5`+6%w3tCrQ%? zNBMN_x#ygF{_eT+lhuE%rb`VC2?>5*{P*?zh0Bl9edN@m?1?QRSrIF0#~oEy9ZlDq zgq{$*n4NS|ddg|g8=SPBb{h3Yr%7)TdvUwjY0+B*t=g?lo8Bg9&2D!(^bSEM>`tdk z?-F#@q7PVU{TZuKAEa{iS*wW-)@1#N z)vOPRbqgJW^{~}ywcV5S=V+ulLZ72YYVs4xYX7FJXQ)awL5-f5tPZR5o@8~>j=K>( z3+pbc8`j-43+sUw6$U}nYUO5#;=oqsj)E7DrOn7kC(8UtNVsuExF<(f<+KjKS< z>_vQH5laRqBKKwBC|(pW>cy(@ngmqLl4higGMyu!zxzX4hW{D(cU1sis!BCjZjD;o+Gw-4<8d0T<;j5*Rec3FUdCHC&Mxj{n4CCm8 zUCNoZdj^P51uUklf?EdT#$u(I%c!i8{~WO3o|UMmfkkZbF8pP$q{UET{OD?t!GREVL*1M)#4X1Ce<3 zce_6#=7F58p+SXV5&{JpYbCUJ8`<$N%Nux($SqW$ByTMQ+4d z6*LuPEofyG;pyPvaCAI~RG7_BHXxO!!vE#rKasu#RGdUOk0R8O zPZT=}-BzLdwNb;Ze=smbPBo!os?17v){R`LxLC-GNHTJGexhtLms$q8u`i^$GkBAb z8~nG=7C&_lt%;Z#&{pK?-1F=e7ZS_IUedx7$?bQxnv7+5l zjoc-h2|qC@-E7`W`pIf1OeTdTTJk4bYdzt&&}OsW$&9u-TOki0|H!&VB6skI2` z?P&PYvIa+}i*iBomAA+P0zO8|iatyN?Xk!)tvDlnS!3>?^Ap;TlKP!8P;VoTJtDBIs1xc3OageV-uOVurYA>?}Y2Li^a)a65`{VETxmfUnGxF&U@^qh;HK3f<$IFAQ&e0=F@y zAnI1ikg_&pV0@WGcy+b#Qsd2~xF`DHZKU2o5VvyyDUlxZZ=1j?0FQ*}x`q*kDgs2S zzr*y80Fg+_L?L|e#c?vrZ@ySqxB*NEPzG=UAw-U7&I>@m{cNB9B44-v2=;kzN6K}$iyPVI8kws-3%f)~e% zN@9~d=06_mCvE)qV=sOBJv4(dP(a*+NiCc&@ACH*qaAo%;H~%!YatBRnWOx|=_&r^ z>E^RhREZ(P0fGd4-Ow^#Z&!Q;Fb%gvQ{$7sQYfUB&D;un#<{G4|Mm1xPK+iPa*GBW;tE{{ZV-o8&MTO9`0*e diff --git a/gestao_raul/Lib/site-packages/pip/_vendor/urllib3/__pycache__/request.cpython-310.pyc b/gestao_raul/Lib/site-packages/pip/_vendor/urllib3/__pycache__/request.cpython-310.pyc index a911aed67e81d6ae4911a9edaa23cf2f60a59213..59bb6965490a9379ad666b1fd821d4ebbb8b2252 100644 GIT binary patch delta 1492 zcmZ`&&u<$=6yDiguh*M(<3b!#RF$DLN=%4N!vU!xrLm^z5($lAf9dDD==-of|Zk@DyRa>-n(g1jFzF%6%?Pj6h=xG%Yo z8@oJI$;O9CCyjWlt9$b2DKB zQO$m~nsW$Q;EEd7l_8(>dE6X5wZ73wHG5RKy^088216agc?_s1caEyPo!v1;fi?yb z{IirxwK}Rf_lSq(hvfZ+Io@cceda4JEQErK(Hdp(A{OyFQrUb@3ID%D;x)+LAN@Y{ zW7$FyF`LPkzaAFyD)$C`ep84<2oqBU+a(+olv6LJdacRNX};IKUf z(Es{pL7{>}my6lwGk1ua{V}up?gdy7XE7kDxQGEY7u6F8&yP-&A?s$>>x;t?f79xRWFbbPC?c!79|MW)>@cq53rm>AmS7{<@{;kzUkKy3mk;-hM*l&BICQzb+S3(9~%2*Q%ZTxvIb+{NKNpJ>Iv z0AlGBEdB_XkTS5aFv6eUm4%f731!0X1)&P4B|m5Def)dg^WC>g^UblW*Q<^l&wkz; zC8r$cD{c-C-)^qinQvR+4kxLTkpUqNce$6knK$stwV(P~FbM2A7?A<(Ih^v~rQM0} zg*S+Jc-QGf)Az0E=Z)!)H-yd($OXS1Tj*N{j@idN(I11A+DPOokqnX|)h6hXwqB!M zlI#0)Z>4T+hGs%Nklc6$q{bggz7MhfPA|3)Qj*{}`a)Zm6EWVLZH2F066-IOn_VQp z63Q~lX%y_iRDZkKa(I7o{LPn3WFQ7tQ-5ROWL z^B5J0Jq5|XL2%Yq@65vZT}Uwm8v4WX!Sk}cN`HSMt^-H_{2+_8HC&aEwWA}OXgZ04 z;joUb8Smd{QBlk>Z`50%bn9$b8sQwYUk$WbyYLc^6OlWaxQE^OpYEDUhj7xrUX>Mv>NpVbi TYH>+oetc14Y0l=u%+etM=g}9! diff --git a/gestao_raul/Lib/site-packages/pip/_vendor/urllib3/_collections.py b/gestao_raul/Lib/site-packages/pip/_vendor/urllib3/_collections.py index da9857e..bceb845 100644 --- a/gestao_raul/Lib/site-packages/pip/_vendor/urllib3/_collections.py +++ b/gestao_raul/Lib/site-packages/pip/_vendor/urllib3/_collections.py @@ -268,6 +268,24 @@ class HTTPHeaderDict(MutableMapping): else: return vals[1:] + def _prepare_for_method_change(self): + """ + Remove content-specific header fields before changing the request + method to GET or HEAD according to RFC 9110, Section 15.4. + """ + content_specific_headers = [ + "Content-Encoding", + "Content-Language", + "Content-Location", + "Content-Type", + "Content-Length", + "Digest", + "Last-Modified", + ] + for header in content_specific_headers: + self.discard(header) + return self + # Backwards compatibility for httplib getheaders = getlist getallmatchingheaders = getlist diff --git a/gestao_raul/Lib/site-packages/pip/_vendor/urllib3/_version.py b/gestao_raul/Lib/site-packages/pip/_vendor/urllib3/_version.py index 7c03166..d49df2a 100644 --- a/gestao_raul/Lib/site-packages/pip/_vendor/urllib3/_version.py +++ b/gestao_raul/Lib/site-packages/pip/_vendor/urllib3/_version.py @@ -1,2 +1,2 @@ # This file is protected via CODEOWNERS -__version__ = "1.26.14" +__version__ = "1.26.20" diff --git a/gestao_raul/Lib/site-packages/pip/_vendor/urllib3/connection.py b/gestao_raul/Lib/site-packages/pip/_vendor/urllib3/connection.py index 10fb36c..de35b63 100644 --- a/gestao_raul/Lib/site-packages/pip/_vendor/urllib3/connection.py +++ b/gestao_raul/Lib/site-packages/pip/_vendor/urllib3/connection.py @@ -68,7 +68,7 @@ port_by_scheme = {"http": 80, "https": 443} # When it comes time to update this value as a part of regular maintenance # (ie test_recent_date is failing) update it to ~6 months before the current date. -RECENT_DATE = datetime.date(2022, 1, 1) +RECENT_DATE = datetime.date(2024, 1, 1) _CONTAINS_CONTROL_CHAR_RE = re.compile(r"[^-!#$%&'*+.^_`|~0-9a-zA-Z]") @@ -229,6 +229,11 @@ class HTTPConnection(_HTTPConnection, object): ) def request(self, method, url, body=None, headers=None): + # Update the inner socket's timeout value to send the request. + # This only triggers if the connection is re-used. + if getattr(self, "sock", None) is not None: + self.sock.settimeout(self.timeout) + if headers is None: headers = {} else: @@ -432,7 +437,7 @@ class HTTPSConnection(HTTPConnection): and self.ssl_version is None and hasattr(self.sock, "version") and self.sock.version() in {"TLSv1", "TLSv1.1"} - ): + ): # Defensive: warnings.warn( "Negotiating TLSv1/TLSv1.1 by default is deprecated " "and will be disabled in urllib3 v2.0.0. Connecting to " diff --git a/gestao_raul/Lib/site-packages/pip/_vendor/urllib3/connectionpool.py b/gestao_raul/Lib/site-packages/pip/_vendor/urllib3/connectionpool.py index 7087392..0872ed7 100644 --- a/gestao_raul/Lib/site-packages/pip/_vendor/urllib3/connectionpool.py +++ b/gestao_raul/Lib/site-packages/pip/_vendor/urllib3/connectionpool.py @@ -9,6 +9,7 @@ import warnings from socket import error as SocketError from socket import timeout as SocketTimeout +from ._collections import HTTPHeaderDict from .connection import ( BaseSSLError, BrokenPipeError, @@ -50,6 +51,13 @@ from .util.url import Url, _encode_target from .util.url import _normalize_host as normalize_host from .util.url import get_host, parse_url +try: # Platform-specific: Python 3 + import weakref + + weakref_finalize = weakref.finalize +except AttributeError: # Platform-specific: Python 2 + from .packages.backports.weakref_finalize import weakref_finalize + xrange = six.moves.xrange log = logging.getLogger(__name__) @@ -220,6 +228,16 @@ class HTTPConnectionPool(ConnectionPool, RequestMethods): self.conn_kw["proxy"] = self.proxy self.conn_kw["proxy_config"] = self.proxy_config + # Do not pass 'self' as callback to 'finalize'. + # Then the 'finalize' would keep an endless living (leak) to self. + # By just passing a reference to the pool allows the garbage collector + # to free self if nobody else has a reference to it. + pool = self.pool + + # Close all the HTTPConnections in the pool before the + # HTTPConnectionPool object is garbage collected. + weakref_finalize(self, _close_pool_connections, pool) + def _new_conn(self): """ Return a fresh :class:`HTTPConnection`. @@ -379,7 +397,7 @@ class HTTPConnectionPool(ConnectionPool, RequestMethods): timeout_obj = self._get_timeout(timeout) timeout_obj.start_connect() - conn.timeout = timeout_obj.connect_timeout + conn.timeout = Timeout.resolve_default_timeout(timeout_obj.connect_timeout) # Trigger any extra validation we need to do. try: @@ -405,12 +423,13 @@ class HTTPConnectionPool(ConnectionPool, RequestMethods): pass except IOError as e: # Python 2 and macOS/Linux - # EPIPE and ESHUTDOWN are BrokenPipeError on Python 2, and EPROTOTYPE is needed on macOS + # EPIPE and ESHUTDOWN are BrokenPipeError on Python 2, and EPROTOTYPE/ECONNRESET are needed on macOS # https://erickt.github.io/blog/2014/11/19/adventures-in-debugging-a-potential-osx-kernel-bug/ if e.errno not in { errno.EPIPE, errno.ESHUTDOWN, errno.EPROTOTYPE, + errno.ECONNRESET, }: raise @@ -489,14 +508,8 @@ class HTTPConnectionPool(ConnectionPool, RequestMethods): # Disable access to the pool old_pool, self.pool = self.pool, None - try: - while True: - conn = old_pool.get(block=False) - if conn: - conn.close() - - except queue.Empty: - pass # Done. + # Close all the HTTPConnections in the pool. + _close_pool_connections(old_pool) def is_same_host(self, url): """ @@ -756,7 +769,9 @@ class HTTPConnectionPool(ConnectionPool, RequestMethods): # so we try to cover our bases here! message = " ".join(re.split("[^a-z]", str(ssl_error).lower())) return ( - "wrong version number" in message or "unknown protocol" in message + "wrong version number" in message + or "unknown protocol" in message + or "record layer failure" in message ) # Try to detect a common user error with proxies which is to @@ -832,7 +847,11 @@ class HTTPConnectionPool(ConnectionPool, RequestMethods): redirect_location = redirect and response.get_redirect_location() if redirect_location: if response.status == 303: + # Change the method according to RFC 9110, Section 15.4.4. method = "GET" + # And lose the body not to transfer anything sensitive. + body = None + headers = HTTPHeaderDict(headers)._prepare_for_method_change() try: retries = retries.increment(method, url, response=response, _pool=self) @@ -1108,3 +1127,14 @@ def _normalize_host(host, scheme): if host.startswith("[") and host.endswith("]"): host = host[1:-1] return host + + +def _close_pool_connections(pool): + """Drains a queue of connections and closes each one.""" + try: + while True: + conn = pool.get(block=False) + if conn: + conn.close() + except queue.Empty: + pass # Done. diff --git a/gestao_raul/Lib/site-packages/pip/_vendor/urllib3/contrib/__pycache__/__init__.cpython-310.pyc b/gestao_raul/Lib/site-packages/pip/_vendor/urllib3/contrib/__pycache__/__init__.cpython-310.pyc index e058d6f772b6ac4b38263e5773dcb7554c4d630a..cebb6874f35ce4bee316dfcd5e9aee56a69b9fc2 100644 GIT binary patch delta 54 zcmX@kc#x4hpO=@50SFfPt)9qjBcI}I6%$&VT2vfUo|;pVALEjrT$-DjS5h1k6y)UU IJTWI40Jk#{!2kdN delta 60 zcmX@ec$|?tpO=@50SKypgihqPQO$C;iU}=FEh>&FPt7UGk8#OQF3nBND=CgiPc1G< O%#SZhEX|pi77YM9p%oke diff --git a/gestao_raul/Lib/site-packages/pip/_vendor/urllib3/contrib/__pycache__/_appengine_environ.cpython-310.pyc b/gestao_raul/Lib/site-packages/pip/_vendor/urllib3/contrib/__pycache__/_appengine_environ.cpython-310.pyc index 81e05d5805018218b1bf622fea719d2326fc508b..3f1f779aee59e817577326aeb9419042e7d57542 100644 GIT binary patch delta 57 zcmaFNb(f1fpO=@50SFfPt=`DZ#VDWWY!wq)oLW>IQ=Xbrk{{!epIn-onpaXB6BOj+ L>b%*CQIiD#?WqyR delta 63 zcmcc1^_Yu0pO=@50SKypgl^>KVpJ`0wu%WYPAw{qDNoHQ$&Yc#PcF?(%_}L6Nlz^< RNz9KgN-WLUY{IC?0swl96(Rrt diff --git a/gestao_raul/Lib/site-packages/pip/_vendor/urllib3/contrib/__pycache__/appengine.cpython-310.pyc b/gestao_raul/Lib/site-packages/pip/_vendor/urllib3/contrib/__pycache__/appengine.cpython-310.pyc index b3c27d05975d74cd4e307b4836e6fefa28fd4ebc..8fcf61f1610946063ae5047027f186b2affca391 100644 GIT binary patch delta 57 zcmZp1_-D_Z&&$ij00fKtR&V5f$swQWY!wq)oLW>IQ=Xbrk{{!epIn-onpaXB6BOj+ L>bzN!^R*ZN8IKc; delta 63 zcmexo-{QcX&&$ij00h-PLN{{1IQ=Xbrk{{!epIn-onpaXB6BOj+ L>byCZbr%N!IQ=Xbrk{{!epIn-onpaXBlb%{! Rl9(S~lvtXxnS*PyF#yHJ7byS$ diff --git a/gestao_raul/Lib/site-packages/pip/_vendor/urllib3/contrib/__pycache__/securetransport.cpython-310.pyc b/gestao_raul/Lib/site-packages/pip/_vendor/urllib3/contrib/__pycache__/securetransport.cpython-310.pyc index f6e16f71e88bb25a31408e5c7084800cbd593339..fa2f068385da4bebd7cf3a3654d46eb0df6ddfc8 100644 GIT binary patch delta 483 zcmWlVUr1AN6vyxP?rxducJE49A}a*VBxY>YpfV@ByVu3sglPsNkkOV+H)>tOCQ(=r zy(H)%!j}rIu&n|)1ku0s6a~FRLFG$P7}T?2kNtLD&Vh5jpYJ*6Nfi&PP*1CBqa

zSsk63RWCOyS!ZE$QA=x(vP#xf(2Jh5r(Vx4WuQgc}wsd<=qb}Tp#%~aGH~p3c zqZ2F2xruy1WQUzU&zsbMEF?Wz7~^zNYj&nm5!0XrErl2KS9>XXtQ&aC>v~xXa%rm# zeB#xnM|Bx_pTf=k+qO86;E@);j1j)>Gh|HghaJPfH1BGic3_4pZSQ3)^JK@o6JN>W z|A7##`Im8!?st7bFJIcT3Rsj2ETTjkgLwh4gK=PzYJ30S8ddhy1Z8ah5HQEJ(03X4 z_|AbT8Q-X-`xe&dS@#^)DRKB8OtO03K_Wd&aPi&n0~uaUM!Y~Poir|>lYSZlYQP~$ zcKso)hN1GNV2GYuOXA*apM_&w?b{6;r_Zrp zIK{7yTmhUEiHF3p<@h3s?CT!{%2Y~xgidDiu`ZoegwsmHnaqjt%xKPL*MQ;z$bGc( EAEld@`v3p{ delta 492 zcmWlVQAks96vpp&@20SMySr&k39-b8iY;7aMAKz+cgku(wWvYO!5y-;Io({$6;TF7 z4^eigScC*wSY}WsK?8|i0;!jXAO?{H1@%z$5bP!Bzw`7x{C*#N=gBPQXQ5_Q)h3BM zQ;iH=pHwGWU|Q0vGFnuFWLnL-v?HTO^;({siNi`ZwASmVI-(mBI=OKhI=_L(-n1DN zC7&$*kVTcqmcm#v%?)a&ER-J2hfzAGwb+Le`LTF5mWvnCbXPlsCHk!`31ZIS$1?wM zj0>Dojd|cBe`%Vl$yc2VXkepxwSq7oU+0oB$d_CFG79{*?I~R?_@mZ z(M@G5Dr9$k#V-2gdWJo8&;1F#JihH45Tsb=edI{-Bt=2S69S5~xcw)t(DaU1qQ%^K z1R!4QT9NUP@9ZwgSfMrEDg31u-W#Y=u)7L__Vz3b%;qE1^OWzAjAriN=LFhm(0>+N z=(GPIJml(2!As@7OX#KbfieR0GGJnW+Kiis(7Z7t_MHqGIK~fxTY(ewzW+OtyfAPP zP{C!>O9?Y!wq)oLW>IQ=Xbrk{{!epIn-onpaXBlb%{! Rl9(S~lvtXx`5EU|ZUC%R7n%S7 diff --git a/gestao_raul/Lib/site-packages/pip/_vendor/urllib3/contrib/_securetransport/__pycache__/__init__.cpython-310.pyc b/gestao_raul/Lib/site-packages/pip/_vendor/urllib3/contrib/_securetransport/__pycache__/__init__.cpython-310.pyc index de05c661c6b62bdfc79fe961f019d94e71d44df4..9a8bd8d0dd254525aed04e781c67caf8a408b035 100644 GIT binary patch delta 54 zcmcb?c!`lapO=@50SFfPt)9qjBVX!l6%$&VT2vfUo|;pVALEjrT$-DjS5h1k6y)UU IJTWH+0KkwE1poj5 delta 60 zcmcb_c!QBUpO=@50SKypgihqPQLT2iiU}=FEh>&FPt7UGk8#OQF3nBND=CgiPc1G< O%#SZhEX|pimIDArFcn|` diff --git a/gestao_raul/Lib/site-packages/pip/_vendor/urllib3/contrib/_securetransport/__pycache__/bindings.cpython-310.pyc b/gestao_raul/Lib/site-packages/pip/_vendor/urllib3/contrib/_securetransport/__pycache__/bindings.cpython-310.pyc index 2c56d2db13e9d0fbbc5fcae6859404ec51a0e691..35ecffd12ee6781492460055a6ba1f1194bb54ad 100644 GIT binary patch delta 37 scmcZ+d?}bapO=@50SFfPt=`DJQGl^@@?HT+)}SCKSLe+S1-?rF0NO4L8~^|S delta 43 xcmcZCD8N`fd9Q#ZcY11ZNn(C{QDSM%=Gy|_B>*<(4|f0n diff --git a/gestao_raul/Lib/site-packages/pip/_vendor/urllib3/contrib/_securetransport/__pycache__/low_level.cpython-310.pyc b/gestao_raul/Lib/site-packages/pip/_vendor/urllib3/contrib/_securetransport/__pycache__/low_level.cpython-310.pyc index 37e248c95749c4b378f6754afd19afe1c9e3fdd0..b3af3ba4cfb5035d5749094243e138fae0e8356f 100644 GIT binary patch delta 37 rcmeBnZ*}L+=jG*M0D?t+t2c6svM`oSR%DT64GMB{b>8gC;wBFOr_Tt< delta 43 xcmZp5?{??T=jG*M0D|ftp&PkHSr}_3E3!y(r>7Q|B<9B#C6?xFwr6pZ2LSkU3?u*m diff --git a/gestao_raul/Lib/site-packages/pip/_vendor/urllib3/contrib/securetransport.py b/gestao_raul/Lib/site-packages/pip/_vendor/urllib3/contrib/securetransport.py index 4a06bc6..722ee4e 100644 --- a/gestao_raul/Lib/site-packages/pip/_vendor/urllib3/contrib/securetransport.py +++ b/gestao_raul/Lib/site-packages/pip/_vendor/urllib3/contrib/securetransport.py @@ -64,9 +64,8 @@ import struct import threading import weakref -from pip._vendor import six - from .. import util +from ..packages import six from ..util.ssl_ import PROTOCOL_TLS_CLIENT from ._securetransport.bindings import CoreFoundation, Security, SecurityConst from ._securetransport.low_level import ( diff --git a/gestao_raul/Lib/site-packages/pip/_vendor/urllib3/packages/__pycache__/__init__.cpython-310.pyc b/gestao_raul/Lib/site-packages/pip/_vendor/urllib3/packages/__pycache__/__init__.cpython-310.pyc index e1397cc9cb13e20362f7b47ff8b4c54eb1111f78..9fff1ee23add622326ae50f328ebbbbb32e8cba3 100644 GIT binary patch delta 54 zcmX@Xc!-fZpO=@50SFfPt)9qjBcJMQ6%$&VT2vfUo|;pVALEjrT$-DjS5h1k6y)UU IJTWH*0Jp#q#Q*>R delta 60 zcmX@ac!H5TpO=@50SKypgihqPQO$O?iU}=FEh>&FPt7UGk8#OQF3nBND=CgiPc1G< O%#SZhEX|pi76Sl0KouYW diff --git a/gestao_raul/Lib/site-packages/pip/_vendor/urllib3/packages/__pycache__/six.cpython-310.pyc b/gestao_raul/Lib/site-packages/pip/_vendor/urllib3/packages/__pycache__/six.cpython-310.pyc index 796054db546e1599c54f59427b4fa04a14f60afe..7e18ce94acb174b4c7928faa5f5d6846d8c1d938 100644 GIT binary patch delta 59 zcmZp>!PszvkvpH4mx}=i7Wu8-$Q>&vpWtj26Iz^FR2);Dnp2V=?%22`x@7Dvl{n%_+%`ami0E%}vcKDUL}` TEiOsSk1t9r&Dq>8SQ!NX#k3b> diff --git a/gestao_raul/Lib/site-packages/pip/_vendor/urllib3/packages/backports/__pycache__/__init__.cpython-310.pyc b/gestao_raul/Lib/site-packages/pip/_vendor/urllib3/packages/backports/__pycache__/__init__.cpython-310.pyc index 8fc93c9f95f5bc2cdb2b0fa1494da4f18594e9a6..de53ab66bfb484a20cb7293866198acb46a93616 100644 GIT binary patch delta 54 zcmcb_c!rTXpO=@50SFfPt)9qjBcJbV6%$&VT2vfUo|;pVALEjrT$-DjS5h1k6y)UU IJTWH?0KGyH?EnA( delta 60 zcmX@Zc!`lapO=@50SKypgihqPQ7v`0iU}=FEh>&FPt7UGk8#OQF3nBND=CgiPc1G< O%#SZhEX|pimIeSqb`?kf diff --git a/gestao_raul/Lib/site-packages/pip/_vendor/urllib3/packages/backports/__pycache__/makefile.cpython-310.pyc b/gestao_raul/Lib/site-packages/pip/_vendor/urllib3/packages/backports/__pycache__/makefile.cpython-310.pyc index 9a43ff932544f493df59df26a50b25a5c1c502b8..831ecd24eae9cf122de02f4634f1a2d08316c3c9 100644 GIT binary patch delta 71 zcmbQoHG_*gpO=@50SFfPt=`C8z{F9+4CLHmEZ^MBl*TBZ?`#zlTAW%`98;c}Q<5L! YlAm0fo0?Zr91|4eejww&gDans< e$xklLP0cGQj!91~E=kOfFG?)U+04Nrzz6_c+ZZVT diff --git a/gestao_raul/Lib/site-packages/pip/_vendor/urllib3/packages/backports/__pycache__/weakref_finalize.cpython-310.pyc b/gestao_raul/Lib/site-packages/pip/_vendor/urllib3/packages/backports/__pycache__/weakref_finalize.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..dde5d5cbac1f49e171bb6578a775f30867e0bd59 GIT binary patch literal 4902 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 KpsNR;Gye_y{+<#5 literal 0 HcmV?d00001 diff --git a/gestao_raul/Lib/site-packages/pip/_vendor/urllib3/packages/backports/weakref_finalize.py b/gestao_raul/Lib/site-packages/pip/_vendor/urllib3/packages/backports/weakref_finalize.py new file mode 100644 index 0000000..a2f2966 --- /dev/null +++ b/gestao_raul/Lib/site-packages/pip/_vendor/urllib3/packages/backports/weakref_finalize.py @@ -0,0 +1,155 @@ +# -*- coding: utf-8 -*- +""" +backports.weakref_finalize +~~~~~~~~~~~~~~~~~~ + +Backports the Python 3 ``weakref.finalize`` method. +""" +from __future__ import absolute_import + +import itertools +import sys +from weakref import ref + +__all__ = ["weakref_finalize"] + + +class weakref_finalize(object): + """Class for finalization of weakrefable objects + finalize(obj, func, *args, **kwargs) returns a callable finalizer + object which will be called when obj is garbage collected. The + first time the finalizer is called it evaluates func(*arg, **kwargs) + and returns the result. After this the finalizer is dead, and + calling it just returns None. + When the program exits any remaining finalizers for which the + atexit attribute is true will be run in reverse order of creation. + By default atexit is true. + """ + + # Finalizer objects don't have any state of their own. They are + # just used as keys to lookup _Info objects in the registry. This + # ensures that they cannot be part of a ref-cycle. + + __slots__ = () + _registry = {} + _shutdown = False + _index_iter = itertools.count() + _dirty = False + _registered_with_atexit = False + + class _Info(object): + __slots__ = ("weakref", "func", "args", "kwargs", "atexit", "index") + + def __init__(self, obj, func, *args, **kwargs): + if not self._registered_with_atexit: + # We may register the exit function more than once because + # of a thread race, but that is harmless + import atexit + + atexit.register(self._exitfunc) + weakref_finalize._registered_with_atexit = True + info = self._Info() + info.weakref = ref(obj, self) + info.func = func + info.args = args + info.kwargs = kwargs or None + info.atexit = True + info.index = next(self._index_iter) + self._registry[self] = info + weakref_finalize._dirty = True + + def __call__(self, _=None): + """If alive then mark as dead and return func(*args, **kwargs); + otherwise return None""" + info = self._registry.pop(self, None) + if info and not self._shutdown: + return info.func(*info.args, **(info.kwargs or {})) + + def detach(self): + """If alive then mark as dead and return (obj, func, args, kwargs); + otherwise return None""" + info = self._registry.get(self) + obj = info and info.weakref() + if obj is not None and self._registry.pop(self, None): + return (obj, info.func, info.args, info.kwargs or {}) + + def peek(self): + """If alive then return (obj, func, args, kwargs); + otherwise return None""" + info = self._registry.get(self) + obj = info and info.weakref() + if obj is not None: + return (obj, info.func, info.args, info.kwargs or {}) + + @property + def alive(self): + """Whether finalizer is alive""" + return self in self._registry + + @property + def atexit(self): + """Whether finalizer should be called at exit""" + info = self._registry.get(self) + return bool(info) and info.atexit + + @atexit.setter + def atexit(self, value): + info = self._registry.get(self) + if info: + info.atexit = bool(value) + + def __repr__(self): + info = self._registry.get(self) + obj = info and info.weakref() + if obj is None: + return "<%s object at %#x; dead>" % (type(self).__name__, id(self)) + else: + return "<%s object at %#x; for %r at %#x>" % ( + type(self).__name__, + id(self), + type(obj).__name__, + id(obj), + ) + + @classmethod + def _select_for_exit(cls): + # Return live finalizers marked for exit, oldest first + L = [(f, i) for (f, i) in cls._registry.items() if i.atexit] + L.sort(key=lambda item: item[1].index) + return [f for (f, i) in L] + + @classmethod + def _exitfunc(cls): + # At shutdown invoke finalizers for which atexit is true. + # This is called once all other non-daemonic threads have been + # joined. + reenable_gc = False + try: + if cls._registry: + import gc + + if gc.isenabled(): + reenable_gc = True + gc.disable() + pending = None + while True: + if pending is None or weakref_finalize._dirty: + pending = cls._select_for_exit() + weakref_finalize._dirty = False + if not pending: + break + f = pending.pop() + try: + # gc is disabled, so (assuming no daemonic + # threads) the following is the only line in + # this function which might trigger creation + # of a new finalizer + f() + except Exception: + sys.excepthook(*sys.exc_info()) + assert f not in cls._registry + finally: + # prevent any more finalizers from executing during shutdown + weakref_finalize._shutdown = True + if reenable_gc: + gc.enable() diff --git a/gestao_raul/Lib/site-packages/pip/_vendor/urllib3/poolmanager.py b/gestao_raul/Lib/site-packages/pip/_vendor/urllib3/poolmanager.py index ca4ec34..fb51bf7 100644 --- a/gestao_raul/Lib/site-packages/pip/_vendor/urllib3/poolmanager.py +++ b/gestao_raul/Lib/site-packages/pip/_vendor/urllib3/poolmanager.py @@ -4,7 +4,7 @@ import collections import functools import logging -from ._collections import RecentlyUsedContainer +from ._collections import HTTPHeaderDict, RecentlyUsedContainer from .connectionpool import HTTPConnectionPool, HTTPSConnectionPool, port_by_scheme from .exceptions import ( LocationValueError, @@ -171,7 +171,7 @@ class PoolManager(RequestMethods): def __init__(self, num_pools=10, headers=None, **connection_pool_kw): RequestMethods.__init__(self, headers) self.connection_pool_kw = connection_pool_kw - self.pools = RecentlyUsedContainer(num_pools, dispose_func=lambda p: p.close()) + self.pools = RecentlyUsedContainer(num_pools) # Locally set the pool classes and keys so other PoolManagers can # override them. @@ -382,9 +382,12 @@ class PoolManager(RequestMethods): # Support relative URLs for redirecting. redirect_location = urljoin(url, redirect_location) - # RFC 7231, Section 6.4.4 if response.status == 303: + # Change the method according to RFC 9110, Section 15.4.4. method = "GET" + # And lose the body not to transfer anything sensitive. + kw["body"] = None + kw["headers"] = HTTPHeaderDict(kw["headers"])._prepare_for_method_change() retries = kw.get("retries") if not isinstance(retries, Retry): diff --git a/gestao_raul/Lib/site-packages/pip/_vendor/urllib3/request.py b/gestao_raul/Lib/site-packages/pip/_vendor/urllib3/request.py index 398386a..3b4cf99 100644 --- a/gestao_raul/Lib/site-packages/pip/_vendor/urllib3/request.py +++ b/gestao_raul/Lib/site-packages/pip/_vendor/urllib3/request.py @@ -1,6 +1,9 @@ from __future__ import absolute_import +import sys + from .filepost import encode_multipart_formdata +from .packages import six from .packages.six.moves.urllib.parse import urlencode __all__ = ["RequestMethods"] @@ -168,3 +171,21 @@ class RequestMethods(object): extra_kw.update(urlopen_kw) return self.urlopen(method, url, **extra_kw) + + +if not six.PY2: + + class RequestModule(sys.modules[__name__].__class__): + def __call__(self, *args, **kwargs): + """ + If user tries to call this module directly urllib3 v2.x style raise an error to the user + suggesting they may need urllib3 v2 + """ + raise TypeError( + "'module' object is not callable\n" + "urllib3.request() method is not supported in this release, " + "upgrade to urllib3 v2 to use it\n" + "see https://urllib3.readthedocs.io/en/stable/v2-migration-guide.html" + ) + + sys.modules[__name__].__class__ = RequestModule diff --git a/gestao_raul/Lib/site-packages/pip/_vendor/urllib3/util/__pycache__/__init__.cpython-310.pyc b/gestao_raul/Lib/site-packages/pip/_vendor/urllib3/util/__pycache__/__init__.cpython-310.pyc index 065a9cda83f009e6300ffec53de11fdb98a5d457..e43df8e97d9b6eb688a36660212d651e7db2cc31 100644 GIT binary patch delta 56 zcmcc0ah`)apO=@50SFfPt=`DJn^`{5*(xTqIJKxaraU#LBtOO_Ke;qFHLs*NCMd|s K)p_!3<}3j3rxP6j delta 62 zcmX@lag~ERpO=@50SKypgl^>C&8(X4Y!wq)oLW>IQ=Xbrk{{!epIn-onpaXBlb%{! Ql9(S~lvtWG`6+W20DMyxcmMzZ diff --git a/gestao_raul/Lib/site-packages/pip/_vendor/urllib3/util/__pycache__/connection.cpython-310.pyc b/gestao_raul/Lib/site-packages/pip/_vendor/urllib3/util/__pycache__/connection.cpython-310.pyc index d797fd73c24947db0b48cf1e81af5b108348b308..2c7b6cd316f4a25414c4505726238b963fbd8c6b 100644 GIT binary patch delta 37 rcmaDW^<0WOpO=@50SFfPt=`DZ%FLKNS&&(hH7Ll*)p@fivjrCbvpxvQ delta 43 xcmaDZ^;U{IpO=@50SKypgl^n diff --git a/gestao_raul/Lib/site-packages/pip/_vendor/urllib3/util/__pycache__/proxy.cpython-310.pyc b/gestao_raul/Lib/site-packages/pip/_vendor/urllib3/util/__pycache__/proxy.cpython-310.pyc index 5acf485207fb064619c5f34c44f5f5803c298e60..d3b359a7b929dc493f90bcbd0e1795ec822955d8 100644 GIT binary patch delta 37 rcmdnTwS$X0pO=@50SFfPt=`DJfQd0~@){;d)}SCKSLe+anDUqaxBm)5 delta 43 xcmdnNwU3KCpO=@50SKypgl^IQ=Xbrk{{!epIn-onpaXB6BOj+ L>byCJaSsy!+D8&H delta 63 zcmZ3)v4Vp;pO=@50SKypgl^=vVN^|Vwu%WYPAw{qDNoHQ$&Yc#PcF?(%_}L6Nlz^< RNz9KgN-WLUoW{6^2>@jp6^#G@ diff --git a/gestao_raul/Lib/site-packages/pip/_vendor/urllib3/util/__pycache__/request.cpython-310.pyc b/gestao_raul/Lib/site-packages/pip/_vendor/urllib3/util/__pycache__/request.cpython-310.pyc index db69048e106f1d6ffbe4fa48b8caf7d0b1d5fdf7..f5ee3cef0e870d9042c4e15fa514fddd0d65012f 100644 GIT binary patch delta 37 rcmZ22wN#2bpO=@50SFfPt=`D3$j+EBS(jasH7Ll*)p>Iu`z=-grcnt% delta 43 xcmZ1~wOWchpO=@50SKypgl^IQ=Xbrk{{!epIn-onpaXB6BOj+ L>b$v+X*nAJ>Sz*} delta 63 zcmZ24v{i^ZpO=@50SKypgl^=HV^U3bwu%WYPAw{qDNoHQ$&Yc#PcF?(%_}L6Nlz^< RNz9KgN-WLU+`+V*4FGpD74rZ9 diff --git a/gestao_raul/Lib/site-packages/pip/_vendor/urllib3/util/__pycache__/retry.cpython-310.pyc b/gestao_raul/Lib/site-packages/pip/_vendor/urllib3/util/__pycache__/retry.cpython-310.pyc index 7f8cb2e0abbaf4d46fa106c60f9559853a5fffa3..5614b8c01d5dfc67d6609b8c91e7229199c296fa 100644 GIT binary patch delta 1485 zcmai!U2GIp6vumaXFs6bT1!6_l(Ky6wCt9!gp{~lE5%}g7F?l%5{GeiT&7HSCU<5{ zTad;?(GU^RW19FNXd@a!G?DQ^6CaFGV~p{^2SO(JY+`)yg~aeu@BcPz4B=yw{mr>^ z&iwDa=bU@#^wrbNPAavsLHriSuT<7eeA#SA*-LaX+8ryEc0N5ET#BAkScI}kHCAaT zD~rLA3ms>g=im+?k%q20yNuim?75zjm1I91-$- zH}DLw2WSOGfiYkoFb?bo4ge+KIp7d|-IHTCgFk!P*xdcq?kRMruJ$}EIcpKtV*+Y> zsFW?k=MNSizw0vV>S0pTprmQM3+mm#BLHR$<2ARe`(~*4Gp?yd`2_u(PP47_clsZ; zhyGY^3J!1B$|izWH>ix+^x?*1oiY(fP8glCs(iDst8`&PR$k;;IMenZeQdC9kZY2LCyGCd7U*zxK166z% zf5ozWlXF)LWNs?ka_p~QVcXTHsM+X1dgFWWBp%RDC7K`DT#)mnAe-PO*DX<|qhfUL z6LTKk3&1?x8rVH2`=c3S4R{|&0tQePP+MgqaG8}ByhW|}!vbMUa~;PH8#T|@jT1iC z4fAfx4x5DEuX&o`)T+Kbx?#-FYo6J(e3(~3u|&V_$go?%%^kZ~8+uP<=Mo&)k;+7# zzbm$_5Qjswo2DJ6$tTXPt`}KN-dWu-YAN)IW+@c1;#Qh0Y-bjIR8Z#*Lh@07fDC|R z!FK_N0i+^qG;H1Trc7}|mHBbJ_5hp>F5AD}!?Hv9|1yh^1wf|rGOSO4&jm)ql%`2( z!?bO&8{8qwxB^SId|p^Diob^fBpZ}S!(3!#oGD99u}Bn8B^FWW!eBRjI{0kcvbF#OYUZ)Cf^&47R&p1i{ zNQ1|%asF({dnn@UTi!+6c1R7e6W9gp0qTI=KsT@#_yX7m^Z>oUexQ#ZuZYqc$Fs7Y z#y_m~UZK7@wS%zKs|i?3C5#4FPiKd1@p17b?+kNRo$m!(8lmiZOT~1`HeKC5Rx}Mw zB>8zTNbA|R>NV}*nN_Cbk<}Zh&zW3p5RLFJYX+NC!YG2P<+Gz=Eds;U4Xt}=$Qf&G zB#QH;P!A>fMd&bD+-dyUbV7RFlwP>z7p7G#j9R8R&VQ|6$dR@Ho#l?UeBFdR7G?NU zS~=4!ic`wrcj@p0KWnq=#9Ie(Mp}kPKAQ=L>8iuw`?N`Q;aj+Thtt{T#A#_Oy`rtE zIE!U)gUAg&8F@;B+#g*oBR(FD&@|tQ{t+02Lp3lDIHw}Hxo!dd%=g#LY*p<+XLj}( zK5-Z>i-5&IGceacx3W|$n&NFd3vk#iZ0dcxOZ zcVi#!cV1q1ywkbqGE>vAkZj90^XKLfLMqhJ!b8rpg#P^Ze>E%0{*T&U*HIVfQ zQ>3!8RsC}H{;%T#PA>wJ+|a)3Gc_Z%SRVl{1Abr#7?v>V)G!EDjR1B}^JIHV@ExhT z^W}GJm#l%|LTS_%yZKRj1NHLD_7KfDfzP*7J;q8VeGM`Q)F3$+7_IV_d32B`ww(QB zu3v`#|BdSAa6ByQeJCEGFL@%qiH`DvxG{bJa!Y{kfe?Uc7hS+10NJ_K!?~1Yom73LxZzW@LL diff --git a/gestao_raul/Lib/site-packages/pip/_vendor/urllib3/util/__pycache__/ssl_.cpython-310.pyc b/gestao_raul/Lib/site-packages/pip/_vendor/urllib3/util/__pycache__/ssl_.cpython-310.pyc index 5b13e3ce6d6558c41333ece51c4d64116b26ffb3..23bf43b20b82092a59ce9baf59e4abe0668adc7c 100644 GIT binary patch delta 2938 zcmZ8iT}&L;6`ngY%+AjKu)u<``8U4<24jqE#jzb@z{bVF6igeBNw>q^VRy~U?)uIE z0YRyQl{$T>65TectE#f2zF1YODoB-DMNRwA*Gi3)mr<%dq%TchTIH<|rRUs5HD*`$ zn{)2{&OK-DIrq#j-*{prONoRb!SBPFU*tw7-cL4@-@HFCvLm~irBR70Zp70q-HTdL zB2krAxrP_BVqV;edkHJyC9R~G*W79^Wu-ulP~ENZYOPwY&Z+}lw$d=_Y1C?faSTQy zHFCr{PGdCwNTP`eX_r_hXp&YxlB_1D*->a}$7$MCtd`9rgdn@ERx3Pf+*Ys6YV+Ey zb|QUKDn?bw>DYKcB>dl%iez2d)PYwEyaub`5NG!YCqnDolU}`5e~9y=mpD5HY?OwL zI;~D3Ih|G)IP4G(|5zbzBBLG{U56M6!T5cJK~+_8|j0Hsi4UF(CF>JzlTX>-AZE!k}6h{QJN~_~5?WKK>h&9ZAE!Pjq(I_3EChdorGjxES0@er}q(ksL zOV85NbQo4fsXQ;4qx@g;X+EmFx05AUng>4xo)H-1F#J}4g0v;Q8C#UM$+o;j0x2L{ zGL?1}E6o|73<4kI}yu!Dewk-Y8a-NKTog!0gEsJTut7v#gJ?dD3X5ahk*5=+CT z|9Nx#;^KnuFn@79?YKc{aiWx6^_*hhFV4+fn;hq_S6!VpF400Z$dgAghnJqL0h%Br8Y&wz3j6%CY;bLaOyQ>ICc@Lhp=Tx{iMQuWQ5 zB|E!PF0r5k=7f`Uj(V?lOE%499TsG=dAm^jAs>nUIdKtfqG+$O*LcEcP95=E&&x(V z`7yt3WGEdozMEia9@2QDPd>4slU^1>qcmi6AViAn2AvOUKt>Ce&8IHs>FSLa=|%?w(x}+05W~h2JsjyKVOSX{5+)OqNZ^?nOM%b}H zrOMN)Ex32P^fMrwoq4#_L^OA?IqV~UoNrsWjH^F zm06(}@SjyroHyfPggIr`&N^Y0TUvJ*!y6XHr^e=|t}o1tXI>wh6}b;Ju=ngBRB{eK zo_e_O;ygs**4jQ?o*;9`!*B6qu>Mm9oD7t&0Vop{hP= zSBWaK`!M-Zdy!#6g@NsbW%*y~&YP!DbP$#iDvnXgAslkfhtrKsU%_O>mwLpPyO&LW zp!J;x!gaU|Vjon*7SBl-$(D+N^HxyVvYvM|HIW&9xv8)$A{as{mYAr*uzF(h`q;v) zJDKsDvs06E^XvjH;aRa^gfj@I5k?SR1%QLw@Wc2TbTudrXbzA=5k(mpukd*DiHSE* z3;;}x-9&i`0jyjCK==;NbTw<@uI=!LT^G9gVK%J2IiH!I9AB85 zyfZg8Ge3KK?hczq`Yi;Vf8N#E_TtuyU`2yMPn8$A!dttq6ULqH!S+MR!p*DUJu>Ue zE@%8wcEt%?{!#Zm!uOIrH%QDthBAA1ggN}%y~oEAs8>PFXY&j%xJg1iU-E;Z?Hz4n z>>XJD6uw$McBNFrkQ)hmhySkk)AY*`uw7XH8-Lo@Mt1oh`ko}d3p(`G0eG+oUpD(s zW4D2scX8(X2tPm&uXkjx$FT4v|HQ;b^H;NRC<(fGE;KTk<<(%7IhhQ@>SlNmLN)K% zS+Iz>?Qh&MoVT)08GD6aX{h+6WjX>TD%8vHC9-pl&nl<0%3N_43=gMLoFa6Q zx;Uh6_U`T3$(i~2TkLztc!cl`gdPM@eD_eQ6z>j-_`+fAriUNANybVnj6<3NW*2>& zV&XCkB6A2ql=zE^$6^oF`=vsWt)ZxumhL;*fGr{SK7xxNDv+ausS;^mkEO4J_~KB7 zBr00Js*19O8&i4i{U>-8s)f_f_4HeMf^3QDYC5nSJ(KH0WaFAACqg0 UeR+k~oJt!qF}~85^+YoEKlSd3bpQYW delta 2680 zcmZuzTWlOx8J;tHo86sVukBr5;$1to|JZNQcfX$XGMSVDzgPaTTJ4;Flr54EAC)KfB2L^*(1fc|jVMfE zQ77r9Xv$5~w5wAc`eH2ZWZW#xx=pmn&C#6OOq*qY!fA0^X)D+oOFDVCKnrdgZG*N- z+u`kCDcT9|DR{eBx=Lu#PT6T&XZrUdw8SzjyZ2C`-FAFIci!F6etCOS|QLN9VCi9NQXeMR|@{T5$rB9^1v86#>hy97<}OOLSOu?IrKheRF1w*k?hhC4z>+%hdohbHOp_d|*HHIOR? zuOt6WvXegaI7LSrOxE>etg5i$_sLU2$K}rLmB6u`woAvBL&vd(k^isSBbId9&Gwe0&;``Qu@P zivR~7MZZMG_7z@&#;29}XV+GJoBM0qwi9@3&v}(C*RBWtTGjRg%QLyP<%pT+MbRDa zY3&9VUjxV|PLV9p2=6&qj)#PdiL&;mPK+qSawLYDY1Znsz%;)phLYDu_sNo>@+st8 z05Bqa2JQcLG(2UDZt-3+PacV%C4ZGUk0c!(qI^a?NfmP^WD4Tfy#?|e@yC?;`DcN* zPxv&_RT-b^mD=XI%}sx+7TCu%fD@*DJ1`pr|M9`S^amu3b8AfMyjaK>WLkKcwsI1C zj}2jS5@8&n4?&8?V2_+@kL5xM7#CM5E zG!1o4K`V-_AiW!VK%S}($ZLefAc^AQa?_v5s2I-~;&ENVIgC{8KpssPzvXe)5_J&%YQZK+XyR&d-AH zz8WSgR-M(D71&{f+b6d!6OxX3?HSX2SX<6+{;iZo3fw8JE(|v z2d|Si4w6I9lXM2cg|umg)!F(D(k!nY=eZ_y5|RV%RPD5@cS_S3j(PT z2P2nAsU3vh7e5;QP5ysp!0*BM@5DPs54k6PYP^+s1p`O<8Tjy&utr8E@Q#3SF7`v(TsaHU$QF!Uqc5Qp^6~W^9{7{*yNFL+`(h@FL%1} zhwgK($F>~%3vjxM;r|3sS2PuFXn1lYPdZdRo`ZV^?i%^T;lk4*;`LFNl*Hdg2mcL} Cj!yRg diff --git a/gestao_raul/Lib/site-packages/pip/_vendor/urllib3/util/__pycache__/ssl_match_hostname.cpython-310.pyc b/gestao_raul/Lib/site-packages/pip/_vendor/urllib3/util/__pycache__/ssl_match_hostname.cpython-310.pyc index a903994e57d3c399827edd7074231054c2d249e2..fbf7f032455c22c148e215978d6c5da54e330178 100644 GIT binary patch delta 37 rcmdlhxm}VwpO=@50SFfPt=`C;!pN9CxqwlUH7Ll*)p_$2Mon%2vr-9p delta 43 xcmdlkxmS`qpO=@50SKypgl^IQ=Xbrk{{!epIn-onpaXB6BOj+ Y>b%*4^$!KU{%d_wu%WYPAw{qDNoHQ$&Yc#PcF?(%_}L6Nlz^< eNz9KgN-WLUY{dG9i{ln!d65-R>t-{7)jR;{ml_fP diff --git a/gestao_raul/Lib/site-packages/pip/_vendor/urllib3/util/__pycache__/timeout.cpython-310.pyc b/gestao_raul/Lib/site-packages/pip/_vendor/urllib3/util/__pycache__/timeout.cpython-310.pyc index ee80d0bf6df63a107dd3debe0c183ee9b5fb7a3f..123b5cfa7dd1300035c1d5dd2fd6a4fe6d6f0fc3 100644 GIT binary patch delta 1102 zcmZuwL1+^}6rI`KB-x@j!HbBsHHKnsp{7vcVclk?B{j*0$)?m& z6-jP_5>~w`o{XMk1q+@;@Ze262z&A5(StYfc>-?A@qilHce z#GhviFV}b5N(!&EC(>sso`MG>A`ws7Tk#cq7*V;23Vqa11>&W`hR_rXfgB<}BDWBc z`CG9NY~MbNh4zzV)QPN9lh8H2Q8vv|g&GaBy?Y+F+COtM)K3B=*g{QQP>4d*7AmMD zM8bRykqGJMbC^a*l*C+3Kj(2W;PNODuA)rBZs5;B9I)opkwk!(&iVl0D>{fp`1I?# zwWB6IOG`7^S?j4fkE!)teRNU*nF;_=9n8YOA)pKWoH??lF7^l;Djz_FI`xk&ujU)E7`^6Jd?P*BRFEQTz7nX zmh`4hFj_atn^fC#PBTkWu6LV|5HiPv?L+ylpOgE=uGan%+7>-*kgKiL=&5lw#F^vS z)XNR(NL9T;d(yHX7i`;aqYs5C@X&QLgP9CG3DDz^e~lRxZLMtR=5zbr0K?ON{dbMc zNZr`~?Pdc99OWsNjVj%>&kbJ2XG0+Ha&Ush24l2paszm|2L&p1Q)i}DG^$lvG(Xty zlW%Z*91iGJTMvel_>^v+}e5H|FBllr^OhHTldpbffU3<0TR~7^bj2Z3KzhR02~F#0Knmn zTw_L!GV>-o0eh1G|1QI2(6g@HaA+OkWh7x~F)YYlsZS96SP-r0(YP0`Gox77M#pk) zGdg~{RirhuWK`>2*S*H-1~-#IjgF81z`AKNc8ssO_t~4-dN(@c4~s#;E2&aU{0*jW B@)!UB delta 1009 zcmZuvy>HV%6!+PV<0Sq_T9=ekDv=gS)S&_-Bt!+YB1DLk4x~$jWZc}PO6A1Siw!NP z18V<)VvyLFKq{+2Oib)$V6#{mSeO_P6Zc$NM3fA_dph6mL?9`2rRuLG*p&hB2}2UA?`?xY*nCXs_qI@>vY(F7Ua0#qiEZDE-qlkByE{Mn%89! zrqC|!w>!)W`~hm5ZGqRZTdwE$ucM_RkQ>LXCh5y^A_M>T1Y>A3&{3-CdR_KD`Z<1w zTs81P3Z1oP0KmGwjR}Slbv{J!?WWi5vZntjdOY!g%+H{}FdJ)~9ly0{0FK}Gx(CsN z$#>*Rva2NOI9f}cc6X?T`PVDS#HaE#TAtdLDhVB#hugy*xQ4R{=kab9VOSy!m_v`G zeuQS}k~9idSSek|6_GQ7a3XwKnz)aff)c_s!Z`%gjny7_JqG?3l<{s3;op3d3ja3A zGAv&7QA8DFBCq5{Rgp8I_-uMiNmj0fr>19Gah7d1Sr4bvKiq`kt!?lD1BQyze2k9o i1DrjQ9p)FS3muOJF1tq16epqys;J4DsK|zFNq+!f=iway diff --git a/gestao_raul/Lib/site-packages/pip/_vendor/urllib3/util/__pycache__/url.cpython-310.pyc b/gestao_raul/Lib/site-packages/pip/_vendor/urllib3/util/__pycache__/url.cpython-310.pyc index fa32015edee354e1d70b4e2636721c29ed985a54..402e99f4db602af9738ab2924ff25ed9c4a553c5 100644 GIT binary patch delta 331 zcmX>Xd^wmmpO=@50SFfPtxmtOk@r6fqx0m4Yz~wCSYsGtCa-3dWDN>(a&_K(o^^#- z8Z%H~F$l{5iAIJRhFH#8#uA1a#%9J8hHTa_21bTLrWD3t22G}-K%f#oO~#@qAYCK| zB1GVXB#?EB(3)Z&uF{P?28(wxmFSXYQm{vgSzECDnqouP&ymZO%jgrSD9nK6YS zn`I(XAyY7eCSy?`Ph=7P0lU>xh8COldpjHbc{nVWq*G!(IUL-ynD0z!L)X&q|-^KM7 zn~Q&lqmNI~oXOG}t&EcIQ=Xbrk{{!epIn-onpaXB6BOj+ L>b&^{qb?T!>~RvD delta 63 zcmeB|m@2`Y&&$ij00h-PLN{{nU{p 128 for x in name]): + if name and any(ord(x) >= 128 for x in name): try: from pip._vendor import idna except ImportError: diff --git a/gestao_raul/Lib/site-packages/pip/_vendor/vendor.txt b/gestao_raul/Lib/site-packages/pip/_vendor/vendor.txt index 67452d8..f04a9c1 100644 --- a/gestao_raul/Lib/site-packages/pip/_vendor/vendor.txt +++ b/gestao_raul/Lib/site-packages/pip/_vendor/vendor.txt @@ -1,23 +1,18 @@ -CacheControl==0.12.11 # Make sure to update the license in pyproject.toml for this. -colorama==0.4.6 -distlib==0.3.6 -distro==1.8.0 -msgpack==1.0.4 -packaging==21.3 -platformdirs==2.6.2 -pyparsing==3.0.9 -pyproject-hooks==1.0.0 -requests==2.28.2 - certifi==2022.12.7 - chardet==5.1.0 - idna==3.4 - urllib3==1.26.14 -rich==12.6.0 - pygments==2.13.0 - typing_extensions==4.4.0 -resolvelib==0.8.1 -setuptools==44.0.0 -six==1.16.0 -tenacity==8.1.0 -tomli==2.0.1 -webencodings==0.5.1 +CacheControl==0.14.1 +distlib==0.3.9 +distro==1.9.0 +msgpack==1.1.0 +packaging==24.2 +platformdirs==4.3.6 +pyproject-hooks==1.2.0 +requests==2.32.3 + certifi==2024.8.30 + idna==3.10 + urllib3==1.26.20 +rich==13.9.4 + pygments==2.18.0 + typing_extensions==4.12.2 +resolvelib==1.0.1 +setuptools==70.3.0 +tomli==2.2.1 +truststore==0.10.0 diff --git a/gestao_raul/Lib/site-packages/pip/_vendor/webencodings/__init__.py b/gestao_raul/Lib/site-packages/pip/_vendor/webencodings/__init__.py deleted file mode 100644 index d21d697..0000000 --- a/gestao_raul/Lib/site-packages/pip/_vendor/webencodings/__init__.py +++ /dev/null @@ -1,342 +0,0 @@ -# coding: utf-8 -""" - - webencodings - ~~~~~~~~~~~~ - - This is a Python implementation of the `WHATWG Encoding standard - `. See README for details. - - :copyright: Copyright 2012 by Simon Sapin - :license: BSD, see LICENSE for details. - -""" - -from __future__ import unicode_literals - -import codecs - -from .labels import LABELS - - -VERSION = '0.5.1' - - -# Some names in Encoding are not valid Python aliases. Remap these. -PYTHON_NAMES = { - 'iso-8859-8-i': 'iso-8859-8', - 'x-mac-cyrillic': 'mac-cyrillic', - 'macintosh': 'mac-roman', - 'windows-874': 'cp874'} - -CACHE = {} - - -def ascii_lower(string): - r"""Transform (only) ASCII letters to lower case: A-Z is mapped to a-z. - - :param string: An Unicode string. - :returns: A new Unicode string. - - This is used for `ASCII case-insensitive - `_ - matching of encoding labels. - The same matching is also used, among other things, - for `CSS keywords `_. - - This is different from the :meth:`~py:str.lower` method of Unicode strings - which also affect non-ASCII characters, - sometimes mapping them into the ASCII range: - - >>> keyword = u'Bac\N{KELVIN SIGN}ground' - >>> assert keyword.lower() == u'background' - >>> assert ascii_lower(keyword) != keyword.lower() - >>> assert ascii_lower(keyword) == u'bac\N{KELVIN SIGN}ground' - - """ - # This turns out to be faster than unicode.translate() - return string.encode('utf8').lower().decode('utf8') - - -def lookup(label): - """ - Look for an encoding by its label. - This is the spec’s `get an encoding - `_ algorithm. - Supported labels are listed there. - - :param label: A string. - :returns: - An :class:`Encoding` object, or :obj:`None` for an unknown label. - - """ - # Only strip ASCII whitespace: U+0009, U+000A, U+000C, U+000D, and U+0020. - label = ascii_lower(label.strip('\t\n\f\r ')) - name = LABELS.get(label) - if name is None: - return None - encoding = CACHE.get(name) - if encoding is None: - if name == 'x-user-defined': - from .x_user_defined import codec_info - else: - python_name = PYTHON_NAMES.get(name, name) - # Any python_name value that gets to here should be valid. - codec_info = codecs.lookup(python_name) - encoding = Encoding(name, codec_info) - CACHE[name] = encoding - return encoding - - -def _get_encoding(encoding_or_label): - """ - Accept either an encoding object or label. - - :param encoding: An :class:`Encoding` object or a label string. - :returns: An :class:`Encoding` object. - :raises: :exc:`~exceptions.LookupError` for an unknown label. - - """ - if hasattr(encoding_or_label, 'codec_info'): - return encoding_or_label - - encoding = lookup(encoding_or_label) - if encoding is None: - raise LookupError('Unknown encoding label: %r' % encoding_or_label) - return encoding - - -class Encoding(object): - """Reresents a character encoding such as UTF-8, - that can be used for decoding or encoding. - - .. attribute:: name - - Canonical name of the encoding - - .. attribute:: codec_info - - The actual implementation of the encoding, - a stdlib :class:`~codecs.CodecInfo` object. - See :func:`codecs.register`. - - """ - def __init__(self, name, codec_info): - self.name = name - self.codec_info = codec_info - - def __repr__(self): - return '' % self.name - - -#: The UTF-8 encoding. Should be used for new content and formats. -UTF8 = lookup('utf-8') - -_UTF16LE = lookup('utf-16le') -_UTF16BE = lookup('utf-16be') - - -def decode(input, fallback_encoding, errors='replace'): - """ - Decode a single string. - - :param input: A byte string - :param fallback_encoding: - An :class:`Encoding` object or a label string. - The encoding to use if :obj:`input` does note have a BOM. - :param errors: Type of error handling. See :func:`codecs.register`. - :raises: :exc:`~exceptions.LookupError` for an unknown encoding label. - :return: - A ``(output, encoding)`` tuple of an Unicode string - and an :obj:`Encoding`. - - """ - # Fail early if `encoding` is an invalid label. - fallback_encoding = _get_encoding(fallback_encoding) - bom_encoding, input = _detect_bom(input) - encoding = bom_encoding or fallback_encoding - return encoding.codec_info.decode(input, errors)[0], encoding - - -def _detect_bom(input): - """Return (bom_encoding, input), with any BOM removed from the input.""" - if input.startswith(b'\xFF\xFE'): - return _UTF16LE, input[2:] - if input.startswith(b'\xFE\xFF'): - return _UTF16BE, input[2:] - if input.startswith(b'\xEF\xBB\xBF'): - return UTF8, input[3:] - return None, input - - -def encode(input, encoding=UTF8, errors='strict'): - """ - Encode a single string. - - :param input: An Unicode string. - :param encoding: An :class:`Encoding` object or a label string. - :param errors: Type of error handling. See :func:`codecs.register`. - :raises: :exc:`~exceptions.LookupError` for an unknown encoding label. - :return: A byte string. - - """ - return _get_encoding(encoding).codec_info.encode(input, errors)[0] - - -def iter_decode(input, fallback_encoding, errors='replace'): - """ - "Pull"-based decoder. - - :param input: - An iterable of byte strings. - - The input is first consumed just enough to determine the encoding - based on the precense of a BOM, - then consumed on demand when the return value is. - :param fallback_encoding: - An :class:`Encoding` object or a label string. - The encoding to use if :obj:`input` does note have a BOM. - :param errors: Type of error handling. See :func:`codecs.register`. - :raises: :exc:`~exceptions.LookupError` for an unknown encoding label. - :returns: - An ``(output, encoding)`` tuple. - :obj:`output` is an iterable of Unicode strings, - :obj:`encoding` is the :obj:`Encoding` that is being used. - - """ - - decoder = IncrementalDecoder(fallback_encoding, errors) - generator = _iter_decode_generator(input, decoder) - encoding = next(generator) - return generator, encoding - - -def _iter_decode_generator(input, decoder): - """Return a generator that first yields the :obj:`Encoding`, - then yields output chukns as Unicode strings. - - """ - decode = decoder.decode - input = iter(input) - for chunck in input: - output = decode(chunck) - if output: - assert decoder.encoding is not None - yield decoder.encoding - yield output - break - else: - # Input exhausted without determining the encoding - output = decode(b'', final=True) - assert decoder.encoding is not None - yield decoder.encoding - if output: - yield output - return - - for chunck in input: - output = decode(chunck) - if output: - yield output - output = decode(b'', final=True) - if output: - yield output - - -def iter_encode(input, encoding=UTF8, errors='strict'): - """ - “Pull”-based encoder. - - :param input: An iterable of Unicode strings. - :param encoding: An :class:`Encoding` object or a label string. - :param errors: Type of error handling. See :func:`codecs.register`. - :raises: :exc:`~exceptions.LookupError` for an unknown encoding label. - :returns: An iterable of byte strings. - - """ - # Fail early if `encoding` is an invalid label. - encode = IncrementalEncoder(encoding, errors).encode - return _iter_encode_generator(input, encode) - - -def _iter_encode_generator(input, encode): - for chunck in input: - output = encode(chunck) - if output: - yield output - output = encode('', final=True) - if output: - yield output - - -class IncrementalDecoder(object): - """ - “Push”-based decoder. - - :param fallback_encoding: - An :class:`Encoding` object or a label string. - The encoding to use if :obj:`input` does note have a BOM. - :param errors: Type of error handling. See :func:`codecs.register`. - :raises: :exc:`~exceptions.LookupError` for an unknown encoding label. - - """ - def __init__(self, fallback_encoding, errors='replace'): - # Fail early if `encoding` is an invalid label. - self._fallback_encoding = _get_encoding(fallback_encoding) - self._errors = errors - self._buffer = b'' - self._decoder = None - #: The actual :class:`Encoding` that is being used, - #: or :obj:`None` if that is not determined yet. - #: (Ie. if there is not enough input yet to determine - #: if there is a BOM.) - self.encoding = None # Not known yet. - - def decode(self, input, final=False): - """Decode one chunk of the input. - - :param input: A byte string. - :param final: - Indicate that no more input is available. - Must be :obj:`True` if this is the last call. - :returns: An Unicode string. - - """ - decoder = self._decoder - if decoder is not None: - return decoder(input, final) - - input = self._buffer + input - encoding, input = _detect_bom(input) - if encoding is None: - if len(input) < 3 and not final: # Not enough data yet. - self._buffer = input - return '' - else: # No BOM - encoding = self._fallback_encoding - decoder = encoding.codec_info.incrementaldecoder(self._errors).decode - self._decoder = decoder - self.encoding = encoding - return decoder(input, final) - - -class IncrementalEncoder(object): - """ - “Push”-based encoder. - - :param encoding: An :class:`Encoding` object or a label string. - :param errors: Type of error handling. See :func:`codecs.register`. - :raises: :exc:`~exceptions.LookupError` for an unknown encoding label. - - .. method:: encode(input, final=False) - - :param input: An Unicode string. - :param final: - Indicate that no more input is available. - Must be :obj:`True` if this is the last call. - :returns: A byte string. - - """ - def __init__(self, encoding=UTF8, errors='strict'): - encoding = _get_encoding(encoding) - self.encode = encoding.codec_info.incrementalencoder(errors).encode diff --git a/gestao_raul/Lib/site-packages/pip/_vendor/webencodings/__pycache__/__init__.cpython-310.pyc b/gestao_raul/Lib/site-packages/pip/_vendor/webencodings/__pycache__/__init__.cpython-310.pyc deleted file mode 100644 index 3ec4ed5a9a8da5d140a9cc626921fb06928f9968..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9746 zcmeHN-)|e&m7W<6DT<<0S#cEGNz)s854eEn=|nH`S0%RR11djAM`T%OXKA_uIN9JNTX&*Q(C^+vTBw| z&nZ7uOG#U%eY=&erIDAZW#p91%4wOCGrzEFQ=U=F%DkNY+^9{`a-4k;@7E_T4QvXok`Yb|TLBY~-h_Z0>rIz<)=4auDx^f$&;w-)*@;?8F{k z!)+1ox}x#Z4_7yT`hi&QcPFCQ38bSWcY9?wj@#vxm1M9|)OMSt{aq*C-zkM^XXRR> zB&x0}K3!kE`O&)A4waB@?09}u($gq6!}fvlc6Q^kSW6zo+izWZTWlSOs@K9)s!rPr zc)YUjHQgX`%i>1$=CX*;^X-kb^-6WJ>#wlyM#1dOcLEP`aO=JoyUOvS%2yB)m1J(O z-dMj~JxsqK@$%(&-!EQ1%(t9ov58sv818VI-c;Cff?B%SzWk#f7VN|P zuy)ZqoO@IpZPB9^UJ!@T?%~Y77szlwDxzJJMoxb8oWiw+D>{v&Ydi%qpP5h1XU0>D zp0KBu^FAtVDkq2_x|Uc91OK2PR;z0p8^U*EtSJ(4DEx5WRif#TWLAqc+SiuTZo85S zo#J64?6#wv7Pe3U7^oSDJ6b&btdbV8a^sE)B2*B8yML?>S4!a1i7*IlYeP?p=1}yo zMM31n-b44>!Q_GyH9fC5+4x$c&h1-H+}y>K36u%cgzs#*1S7)xCXgCAEf=fq*Cb^7 zQ7CAB%fbPS&>DbNKs9N_GPmQ2uT`t!zI(7ADjA6c(b9cb+JA>J+>E0AofV|ThmPNI zqm>IuZOpGP*+d-D+un8+lt^p?GOR)6mK*Pu8=tig$`E{sx2hp1GnBNT@h#Bmy1(l+ zcl81sbl8kV5C+A*gm6PEx`$TY><{LA_@HvMqry%gFS4AH7ETnoDoz^ewJa6HRqA2OY2N>a zHoU`iUj0&Eeg*N`)yck28t%lV$(YZXHTToAJMs4ALaLWx)VRGgkKfBkmq>wFK$-2>9yVjIhMQ0rdX zYp>KFx=?$yGRng%^|}{$alKw@AM|EM)^vd=z(R8RB{hrN7*CKTvvDy`JiJ7Ge=~m__Wg5XuJVo_T z(>k)_?9=J4jW($`hrHAii(1Ea*SunM(PtskxkC1Zpl~}3@3Yc7!B8JT*IpcHwM?{9 zn;5bqWEj4D{LhhS?6|QQX~!KVT9+vIF*|ah83s+a9T$@tMRWu8gO2Qk%8PefddO<0 z-40a@PSW%s9OVk%iztV*-yLT{u0%YiVKBje11y3l%S|8PFE`fvcCaDBtvx8_vH27<0D-}4NOj3?O*#t_q!@>+h zp_itKwG|9y6h57%pRkLuJzJ?UYND&#-;+2)5ISL&73kJhWb4EGlGGCp>z z)9z)HsTb1F10v6!9e^`?*+iy_da2E{*&nD=8Eb`3@+ebesIKCQ&LNqb&6!!#HYv@T zb7tPkSvrU7jlr1UO{-)Wm+(L^mgW;nO?3?b*6bR9a{}TQV@m?oi^%(XT zJydlThB^a@PwZuHwhlbile&L{8WHVrZrV1pR@Tg8XVuHdXyO|C(OzE16$vD+Q8T4c zgTn%c8oLH})h3d`JuNfXxheG`syQEnJ3fW}!7%_yIHH+Yu_1v(9kO|mxU+eycv;)F z7@j2Dnm}y1Y{~l$B#_PCfEqOJZ+EFANG#q~Cw9waK@c9Ayfp_#)N49E=O+$sA^=@) zqJyDA4!hX|o5B8e(9g*(bJC+;0`a8-JW1c%8ldMht(&DaQuqz%dqO7~M%0G9=JIwY z0F3&TmAgYkrW*alHd7F6@}pdx+Dh5K-CXVt@jzQl$4JtI{CGOdC(zEVjg=?W%6b#hqG6b=Hm6}TEXPu zar-W6o-hIBwpG3U7=>&gCx+Lhl|rV6xzb+O>%CmP-U?;Mr{{dV{s7z5FPW;>W!S9O z)vGkt_r?b#>#vyN2(2w#Q5H$ofHKVGZN~6n8r}qs2U)sZde3*0r!BWPg}L}n(;eHB zG28t%x&!Hv)iyQV-LsBTM@Bc*p6!}PcGuoxTi&&vL7C1PU3;6XuI2nXvAQ?eX(2EH z{60)7yYb^h=LPK!PExBlJjF>3CeE^U{kI+8Cr53d_vLS6(GYP5CuW*12x{Dm9|#pIpi=E1B+yS3 zSdp?6Y-ZWs3~YG}hoZg}wpc^eG?l_uvk-fyj%^*hS{7R^k0yf+J&EhNtA9jy8r1W7 z*y}};bB`(Sz}dWu`pKbG%@SmZ-~YinYY;HG1n#0b7lUGsm84N}F@_D7nPD5U=?v|PE|yNV;~4jci)a_PO>>&erN^`4Ea%b=e(P&*)3^f(F5*S2{GRy~Qc6^t)%wSYS~Dt0DZYhTPvUG`iTcF+r#U%) zzKS@`W_`ZXx|3qv(dse&^TjR1K_p^bWV_W#96g{2IF%fm z+R|JyLflD=j97_imT^z9oo!D=@QdJ9;&dv-UI%Y(5O#KUiGhhnR0{_SKK>^ZHyBUP z3}H36(4wte4yZAUk+uz;78D1=F;HK+h=ED5Px;hVhlvCSMKG%|EFL4P5juUo6a9bD z&O~F9`6f#<^bNH+(I%;-yLCpZpSctBH*0S4jR2s=H?#S^d)`Y}QTVZ_ga1 z;1s8zzHqtJdDMWr)iI;9e{IlNbI-bKm~g%*MTq3=gB*oWBt91W6M`gz+HZ~5R`2T; z5@%H&WoB%Y4|VB-t7CoH>h7==wJf9$AN1{_BL{rt8 zz(K2XKfs9#=c=(-Z$d7W-;n$^zc71g1S1?D6iSXq&nDsXwiMEO1K&ZmF3X_Ppn1QS z(PK=K>?KtEHLmD~NUX=1G{pxfQZR=!gS+*I{1iRg{6?ouda@qVnKNhFUn}ZijF!o! z4rn>Ct3=Ct6tE)Oihva)Xm);<*wrr||AMIa%g6uHCu4^F$z)6?`%w};CMs5*zKQ(H zG_&x&Cxmc`m^cz~LdV$UF6NtPOb=%&c%F!OItknWJb~Z=rrn{Jp8VKB?hht3w}% za0Kb^oMzaR4uA|ySV95SF<$wmLG7v_f7TMRX`C zLmENGPvyJx9RPGn=4%gT@FfFL3h2`l6Hy8qfms{%4D|yX>5wO_`!MBQD_Y_x6TU5Q zJDZ~z>8Ba=G4;&c%ToW47R)Kq>ERd%=l=etj%FZcP9`e2pTy(z;cggi>jy44dm^wg z;t=(t8)U$S{uGh+Mj#RLL*#*dnjjRd5MKlap0x82-=ZD3-ow7A)kow}Bj%_bqfOO8 zU>`vZd^+TB=45~IIelayO36eg#+hSh%(0g#m(BDE0bg!&kwEkcs%3InnA)60p@4Zd!x;piGqk7H`Xgqf4*Y@X(jMAve;xjd6x z6D4E66yC1mim1m?wsdW2;cqB3W2R*qJeg5s2s*z<&nNSwwk#6|v4j}@5)RC~Y(%g1 zcV)!B^@^7m>B~4VLNl)3!Y6UJ@Lb(G4qDO$`X$lBKO6lTjc+CqffYbtjPnRVbgkiH z&?oU%xbYN_vA|KpPvG>bp-3zG!MNkf*T)ZgI`EKL<%S;31jq@nn*?%lQ?ll1bBw3g z$$x|!nuO00zdlis=qs7lreXK|#EL|CU!yT7U_oK(g?ZKibqnu>bF7OL4BzhHZ#fVQ zS7h4M3rO%mkpFT*e^i{hyZ&i)3c&^KuQu%r!IMt|t!5V+z=EmMUeC9LN} zTr3zqlCkg3UYjB(h;>`f?1W|XvR8Dp{u-8IL}W*8Ge4WP@|K;l(w0g8GJmi$*;Mvi f_SN}?>=`;OGyesd;E diff --git a/gestao_raul/Lib/site-packages/pip/_vendor/webencodings/__pycache__/labels.cpython-310.pyc b/gestao_raul/Lib/site-packages/pip/_vendor/webencodings/__pycache__/labels.cpython-310.pyc deleted file mode 100644 index 11bfeb6bc1e3c5279773cde6bc2b90501e4bb9b8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5236 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 diff --git a/gestao_raul/Lib/site-packages/pip/_vendor/webencodings/__pycache__/mklabels.cpython-310.pyc b/gestao_raul/Lib/site-packages/pip/_vendor/webencodings/__pycache__/mklabels.cpython-310.pyc deleted file mode 100644 index ab7592cb8d21ae97976659e9baa8a46099e29968..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1941 zcmcIlUvC>l5Z~Q9pU+2{Mxm6XEohsn5|)Bf!kZN$Xp)DbkOxdlh+Lg6-i>qQe0$kl zlP0xMA(enfzJc?YuffN-SDyF=s1(A?U0f1T@y1#^xBq7LH#5H-t1DLm0`2MV54*D! zLVm@`#pc80W9ViVgdkf)P{9(qMUQ+KISK1ITMi{(lJu%eqHRrpq=FZ?~G7iCRWMeUd#Q_y0qqSu3?UxI)`JCNHl?I;naUDN38CDFD_ zOtJIr>sqPwx$Md`(vg+i?#jzHN(;QFL_d*@@_e(SvO^trcWslejE8*j-Uo|(`;fQd zo=SNu%Hp)RxS7NqnHt&T_gky;+(^mSAFQlxwAT2J(p*Rz#fbsazd^*vMxEx>zD`sI zeo$OFZ#Z_KuRu4~Kn&nFA}3^z8UIuAJspr1Ii;vyNz{SVFz}4k5Q$TwJy3YjU1_!- z8mUeDKqgkTS5>Fqlc_cBt~54Mp^o~=rSW>a-8Qk6?`KhGFM?C;EY23fZ)7TzUbqkSO*(PJSUcnsAU6kOh?WM z8M(qep(k_|=0j#Hq9VNKWWaEKOn)K+I`V!XJ5*F*-7nWqfF`hB6+VtcZR8KYLW|Uc zjp$8?>D=7hYnb!jyeSnvi!wgu8b7CrRmh-N^EB%H&ul4x-{G5^n|xLAR9P-XY;Om5 z_!qme;X836IeeqORlUf@ohV5TIq+N}&jk|oLdJq%{geA^>n;8fe;Qm$4<-(C*246x zgXjY79?uQwfC@58R>|X=LpET77UOF}#}Z2i4kl#81UsP?5+s~iOkpwKVL!Y3ll%TY zyxqE+*Tx|fcE&>3#yl* z3UKpaDT$5ks9v@_k3P(R@Cb7}>b_(y$Uj(R>g5z=XTjOgt#N=FONoMznPnJ^)$>YZ zI&pj{JjmLDxoG+pi0?2wwKf|fLxFk6^bwS|eI_7+8c&|m+(~45>gcO5)6*y>P~aoD zfV;MYSe|5hc@Z{>2gIJ;AV)V}195!vU(hfDAEJ5#L;-EOgeCx*pg+O`Lx?lv8f0n5 zxlYc(Vs4zHNvx=MP4lh+IUl^Bd_%tlhVjJ#dJ=*!|De_w-Qq(0mtfCa;;|VB zY)*$csn>G%Yok)EPmwU1!4b@GByvwkDB3c2z+&#nCl(4!?nN0CK>s9`eMX&mfE_MqEPy8CLwG!T3}$g5!}R3{AeyJ*P+R7t#Ddh^DEUZ%8N(^~0# zvfOECx!;HSTG05_?MU!21b3i7+Y7lbSWvpNRQ~BKW92Vs>k@y0(J49sot^ovU-554 HQ9b(`(TMpL diff --git a/gestao_raul/Lib/site-packages/pip/_vendor/webencodings/__pycache__/tests.cpython-310.pyc b/gestao_raul/Lib/site-packages/pip/_vendor/webencodings/__pycache__/tests.cpython-310.pyc deleted file mode 100644 index 1f2ab286afc5397eaec83b15c3cb404a9bd25a70..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5043 zcmZ`-TWlOx8J;scyE}Waz40xnlST{Swh+5@XoDN7wu$4SwAL2Mi3%&1WxQwXOtKeq zW;RaTH7a!_pcNnlFT6A<^dS~VAjAVwgeo=g06ZY^#)v0)+86u~RYG})`Tl>-?vCxU zqd8~J_y6ZI|9!SKG?X>)d;Pyx)_(DrVf>p0@t=vo3%LF7p^-+#kV2Yu(J(8fFl0hn z^+dy}SdC;Q*+^AVjdUg5uq$>WQ^_>4m24wd$u;toJb05b^_Ec?l4)t9AC?)JML!~Q zGLOC>hvYE&BXUF*(2vR^auofT9Fybd$K`~aL_Z;qE*Yg`o4?Iwi}-E0D{iyal3sJo zp9x$)@EQL0prKQT|tCQn5ws0*W2r1YVrJqg~g>XC0*hRQ~Zi+7(BC1b+~UufYTASX`UtWXuoK{si?fSmwMQ>%Bk64+jke)`MUQPgenpQnJR^(KeN7{| zKH_L3-$$-#WT=n$8X4B>zOKh3db~|zGK^B8yqRnVtJ8Cv$t$|M{NnUnXaNL9ZE@2s z4rS>n6PoS0b{b;DXnO9$JDc{ErRnoa^Or7d<~Ka(ZNs0QJ@fRL&8+9Qrsw9Ker9?W ze&PgPbG8CMxqPWSyP4+k^eis~?2o@G&z4L@rX5;Mr{S_e#hNjq=HCk3AGFwYIPgH-te3{URD$Ou-gx=)E9Lq8}BL+#VAJ zb6i+^>a$=v6c^})*cvY5A%GnO&@^I!C8ALRNpmo=)+kQ&Xvuve=y^M#XQiWOmaJ8N zK%4B|`{4dgnD&|whbKRxcyxcKWOK9%bBmlxIO;~??MwE6Ok?7pu&dZNMp-6$=}0d8 zPNcqJ5nXwRMV$t4NCf0~%zjsgMjYOh3AhAInH^z>jSoRH!VXYRXex{qloWUn0(oAk zM+s=fIHeaFEtv+z#vFu1o-?oKWSA14^HojB_9+O8Jm)n{$@eJ;g-q#%#$l$6V4vQc z4LzsOr}XB$r75Ur^r?Gueyk~|aWthj=iNSK;sE8BeG07>Kf&+&`_O7c>8i(q1Ro`Mrk^)6FCMLpV+LVXFGhisYTz_z@O2TJpiEhE_V z(maAHWSRuhOY;Mym*#~`fhP@~UYZxu)<`eS3z-2zDVlAWb&@Ny&{-v{oo=Lw864(e zDw4H2i-DrjO`W0UX*4AfMN;L>(g%!&}A{ z@)ROg0>`#+Yw9|7mf8Y{&1xe{SG;gO$5C!*cI*+)k;ItKK5A03bJ-q5Q~=vC=0-_Y2k#*PAe zTVuy!yZ=;UkHs){YL?klY?qyg6X!e*^aS4hajf|}LfHsTmJe0zq>Lrf9p%6PYUqew z!63yQ)bH;JlwxLC9S0qyP?S-xwY(-u@TAwI1bJi?Id27(a+PfXUr_24xWmj~e86%h zV&5OtpjAbF#;iJ>gIs%9WW^>|*3}r}%(L}Y4Ieqr&BVaLY&LB^rkcVUYK|HTG(P3H zt8TsCswBDdDHL6GAJDr4T8e$i6o5{hy+N2F4M`H&--e4pDLM2`#L;DMv&@z|z= zJG&qJp_JnNnY0@nh0f#CZb-E1B6^<8$Jo8c6Yu}}!+UC$C|^VqUt%w|1fBa)msh4@ zh?nJe>8ck%dN_P@x{dFgY3ZUUawS)>S9fpk;3YY_!I_^2Uo6tG9~Yt=J@_QN4kn+% z9ZHqNILelB6fBe6+rq@Bj4A9r+dTXs!(912^%54W;okS_7dig~42wgV!=+2F zgv_(?GAGc8#$fE+CvK0{9*7n37)HXKqf zb5|0irgC-7fDBgGa<(Jcf@^cFrw5LKxD>QIf=tG^~lE-3j4!AA@vb+Rw1RM{_JoinHN zxv5wFaq6!lf4&#|?e1UN^jQ^wySIOKYWMa#BfGc1zx(dJVE6WqcHh0bd;4v6DaWap zj>DqZm*lB#Et$O%UiON5dC(ok*d1?V>@i#!dlL7FeExrOn|&Mr diff --git a/gestao_raul/Lib/site-packages/pip/_vendor/webencodings/__pycache__/x_user_defined.cpython-310.pyc b/gestao_raul/Lib/site-packages/pip/_vendor/webencodings/__pycache__/x_user_defined.cpython-310.pyc deleted file mode 100644 index 7c5bc4858f1b33407d2343ec3a34f2aa0098b404..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2592 zcmaJ?*MHnZ5LUb5^WDWUri3aw2Z=*3rkOYi1cE6hl*1t8)7nwc6;?Wum_PuBP($x! zCZ@*p-pe1sj~Bi2#M33?IvB|^l4Ydebu!W^EXHyZRyD_1(JL`lO0Ya*d7kU=%EFq^wiFWCDKa7}@*?Lg z+movny{>9Wn0w2jG^tmYdFGH-Sw8+-p-3*7W?wSlGMGX@^2Oo*4BT!b|4w zTe_tNE^F9+y%mVMXhd%0Hyd_y)Q&a_d)q2yY}Jf0dv=%J^s~NNv$b9NW1FKsdtg?z z&piE%GwqS>_K;s^Lql%MZzQMa3;ddBgrd)0GqiT49SUJ@+%T|iaA=)9+LX2@BG(T> zHvI<&L96I-SG(b}SHcPWNJuvb2Wx6(VKaHq&potR2(7Af@C+~K8J@XIubQl>km*&+ z%Q9j4I5WWZYH>DhsyA^bGd_?$c!!k+xUgq3kvI z*_Cy-SbKa$XOLff>A5*bR zeUnYs92^q;=JQD+`4d_xZpVTrq>RXUUZzh+HR1}NWQ(A>`_87 zxj?9`q>ACe+(UKdyjC#EW`fmtxTvXx{oJPyVKJ9CnYp~NI9sxD_l8DIrk5gEmvAW8 zFG<$4I@L_hXj_cPoHRXsg~pj<3`(8nDptaw%(E^_N~p3kWy(&a7g@v^zO!zyzgNoV zW4I^5>(R$o9C)mmNDfZv>vp52d@ zwMicQ4=pl@`w{BP8UMRkPyIhgX-6tCf4U@&ipmodu1>ee-0p6-m^>d$A5t&O3ofE={i$jqVZv7^y3eq5lZa=2y-AJ^=7q#6f%3eyc zrAvh@xve~oXXm%NUbr4_B@;IO%lt{ad?j~zq7rH}US3?aE4kQGw`czD#NGaUVy87g zF2YiFWnAPs$^LTZL(Go0Cf>I-RZ4Wjv@+RTzN64tER~maE$=?4=ioyQJ#59{M;v+7 z(Z|@w9(Vi+C!TcjDV0-CTe+%tHNOmJoqf)^=be8+--Q=le95K#m#rCCyKepES8TZQ zs*P6BgIGzNLEW@NKs{ceo=petX6?`&;e|>WyaWE*VDcySHxJK7P-R zd+*yxa6iEV1P>BS5bPp&h+sFt!vv2IJWB8w!Q%u^5bPm%lHe(VrwN`Rc$VNfg69cd zAb64BC4!d;ULkmu;5CBR3Em(80wmZ=FiG$x!CM4x6TCz4F2Q>Q`v|58-Y58g;6s9s z2tFqGgy2(x&j>yz_=4a|g0Bd^CisTnTY~Qhz9;yB;75X=2!1B`h46mD2M8Y|oFLpq z_z>Z4!iNbTA$*kZF~Y|QpCH^r_$1*|gijMbL-;J=bA-+_)DcL&N+_Ptfe)3v>ml2*KDa$BQ18O(o|JR zE?biNNs`7L$qTfh!B78OO|KTzqf&Exg{tBZmuBDDk+vUrNx@uDE9Nd)oWCf2FD_BH qH&pk*(u>8s(Vgk;=+5+HdMqnz=vn?5Gr#O#MwjuAwo}_#&i)IQR|a_i diff --git a/gestao_raul/Lib/site-packages/pip/_vendor/webencodings/labels.py b/gestao_raul/Lib/site-packages/pip/_vendor/webencodings/labels.py deleted file mode 100644 index 29cbf91..0000000 --- a/gestao_raul/Lib/site-packages/pip/_vendor/webencodings/labels.py +++ /dev/null @@ -1,231 +0,0 @@ -""" - - webencodings.labels - ~~~~~~~~~~~~~~~~~~~ - - Map encoding labels to their name. - - :copyright: Copyright 2012 by Simon Sapin - :license: BSD, see LICENSE for details. - -""" - -# XXX Do not edit! -# This file is automatically generated by mklabels.py - -LABELS = { - 'unicode-1-1-utf-8': 'utf-8', - 'utf-8': 'utf-8', - 'utf8': 'utf-8', - '866': 'ibm866', - 'cp866': 'ibm866', - 'csibm866': 'ibm866', - 'ibm866': 'ibm866', - 'csisolatin2': 'iso-8859-2', - 'iso-8859-2': 'iso-8859-2', - 'iso-ir-101': 'iso-8859-2', - 'iso8859-2': 'iso-8859-2', - 'iso88592': 'iso-8859-2', - 'iso_8859-2': 'iso-8859-2', - 'iso_8859-2:1987': 'iso-8859-2', - 'l2': 'iso-8859-2', - 'latin2': 'iso-8859-2', - 'csisolatin3': 'iso-8859-3', - 'iso-8859-3': 'iso-8859-3', - 'iso-ir-109': 'iso-8859-3', - 'iso8859-3': 'iso-8859-3', - 'iso88593': 'iso-8859-3', - 'iso_8859-3': 'iso-8859-3', - 'iso_8859-3:1988': 'iso-8859-3', - 'l3': 'iso-8859-3', - 'latin3': 'iso-8859-3', - 'csisolatin4': 'iso-8859-4', - 'iso-8859-4': 'iso-8859-4', - 'iso-ir-110': 'iso-8859-4', - 'iso8859-4': 'iso-8859-4', - 'iso88594': 'iso-8859-4', - 'iso_8859-4': 'iso-8859-4', - 'iso_8859-4:1988': 'iso-8859-4', - 'l4': 'iso-8859-4', - 'latin4': 'iso-8859-4', - 'csisolatincyrillic': 'iso-8859-5', - 'cyrillic': 'iso-8859-5', - 'iso-8859-5': 'iso-8859-5', - 'iso-ir-144': 'iso-8859-5', - 'iso8859-5': 'iso-8859-5', - 'iso88595': 'iso-8859-5', - 'iso_8859-5': 'iso-8859-5', - 'iso_8859-5:1988': 'iso-8859-5', - 'arabic': 'iso-8859-6', - 'asmo-708': 'iso-8859-6', - 'csiso88596e': 'iso-8859-6', - 'csiso88596i': 'iso-8859-6', - 'csisolatinarabic': 'iso-8859-6', - 'ecma-114': 'iso-8859-6', - 'iso-8859-6': 'iso-8859-6', - 'iso-8859-6-e': 'iso-8859-6', - 'iso-8859-6-i': 'iso-8859-6', - 'iso-ir-127': 'iso-8859-6', - 'iso8859-6': 'iso-8859-6', - 'iso88596': 'iso-8859-6', - 'iso_8859-6': 'iso-8859-6', - 'iso_8859-6:1987': 'iso-8859-6', - 'csisolatingreek': 'iso-8859-7', - 'ecma-118': 'iso-8859-7', - 'elot_928': 'iso-8859-7', - 'greek': 'iso-8859-7', - 'greek8': 'iso-8859-7', - 'iso-8859-7': 'iso-8859-7', - 'iso-ir-126': 'iso-8859-7', - 'iso8859-7': 'iso-8859-7', - 'iso88597': 'iso-8859-7', - 'iso_8859-7': 'iso-8859-7', - 'iso_8859-7:1987': 'iso-8859-7', - 'sun_eu_greek': 'iso-8859-7', - 'csiso88598e': 'iso-8859-8', - 'csisolatinhebrew': 'iso-8859-8', - 'hebrew': 'iso-8859-8', - 'iso-8859-8': 'iso-8859-8', - 'iso-8859-8-e': 'iso-8859-8', - 'iso-ir-138': 'iso-8859-8', - 'iso8859-8': 'iso-8859-8', - 'iso88598': 'iso-8859-8', - 'iso_8859-8': 'iso-8859-8', - 'iso_8859-8:1988': 'iso-8859-8', - 'visual': 'iso-8859-8', - 'csiso88598i': 'iso-8859-8-i', - 'iso-8859-8-i': 'iso-8859-8-i', - 'logical': 'iso-8859-8-i', - 'csisolatin6': 'iso-8859-10', - 'iso-8859-10': 'iso-8859-10', - 'iso-ir-157': 'iso-8859-10', - 'iso8859-10': 'iso-8859-10', - 'iso885910': 'iso-8859-10', - 'l6': 'iso-8859-10', - 'latin6': 'iso-8859-10', - 'iso-8859-13': 'iso-8859-13', - 'iso8859-13': 'iso-8859-13', - 'iso885913': 'iso-8859-13', - 'iso-8859-14': 'iso-8859-14', - 'iso8859-14': 'iso-8859-14', - 'iso885914': 'iso-8859-14', - 'csisolatin9': 'iso-8859-15', - 'iso-8859-15': 'iso-8859-15', - 'iso8859-15': 'iso-8859-15', - 'iso885915': 'iso-8859-15', - 'iso_8859-15': 'iso-8859-15', - 'l9': 'iso-8859-15', - 'iso-8859-16': 'iso-8859-16', - 'cskoi8r': 'koi8-r', - 'koi': 'koi8-r', - 'koi8': 'koi8-r', - 'koi8-r': 'koi8-r', - 'koi8_r': 'koi8-r', - 'koi8-u': 'koi8-u', - 'csmacintosh': 'macintosh', - 'mac': 'macintosh', - 'macintosh': 'macintosh', - 'x-mac-roman': 'macintosh', - 'dos-874': 'windows-874', - 'iso-8859-11': 'windows-874', - 'iso8859-11': 'windows-874', - 'iso885911': 'windows-874', - 'tis-620': 'windows-874', - 'windows-874': 'windows-874', - 'cp1250': 'windows-1250', - 'windows-1250': 'windows-1250', - 'x-cp1250': 'windows-1250', - 'cp1251': 'windows-1251', - 'windows-1251': 'windows-1251', - 'x-cp1251': 'windows-1251', - 'ansi_x3.4-1968': 'windows-1252', - 'ascii': 'windows-1252', - 'cp1252': 'windows-1252', - 'cp819': 'windows-1252', - 'csisolatin1': 'windows-1252', - 'ibm819': 'windows-1252', - 'iso-8859-1': 'windows-1252', - 'iso-ir-100': 'windows-1252', - 'iso8859-1': 'windows-1252', - 'iso88591': 'windows-1252', - 'iso_8859-1': 'windows-1252', - 'iso_8859-1:1987': 'windows-1252', - 'l1': 'windows-1252', - 'latin1': 'windows-1252', - 'us-ascii': 'windows-1252', - 'windows-1252': 'windows-1252', - 'x-cp1252': 'windows-1252', - 'cp1253': 'windows-1253', - 'windows-1253': 'windows-1253', - 'x-cp1253': 'windows-1253', - 'cp1254': 'windows-1254', - 'csisolatin5': 'windows-1254', - 'iso-8859-9': 'windows-1254', - 'iso-ir-148': 'windows-1254', - 'iso8859-9': 'windows-1254', - 'iso88599': 'windows-1254', - 'iso_8859-9': 'windows-1254', - 'iso_8859-9:1989': 'windows-1254', - 'l5': 'windows-1254', - 'latin5': 'windows-1254', - 'windows-1254': 'windows-1254', - 'x-cp1254': 'windows-1254', - 'cp1255': 'windows-1255', - 'windows-1255': 'windows-1255', - 'x-cp1255': 'windows-1255', - 'cp1256': 'windows-1256', - 'windows-1256': 'windows-1256', - 'x-cp1256': 'windows-1256', - 'cp1257': 'windows-1257', - 'windows-1257': 'windows-1257', - 'x-cp1257': 'windows-1257', - 'cp1258': 'windows-1258', - 'windows-1258': 'windows-1258', - 'x-cp1258': 'windows-1258', - 'x-mac-cyrillic': 'x-mac-cyrillic', - 'x-mac-ukrainian': 'x-mac-cyrillic', - 'chinese': 'gbk', - 'csgb2312': 'gbk', - 'csiso58gb231280': 'gbk', - 'gb2312': 'gbk', - 'gb_2312': 'gbk', - 'gb_2312-80': 'gbk', - 'gbk': 'gbk', - 'iso-ir-58': 'gbk', - 'x-gbk': 'gbk', - 'gb18030': 'gb18030', - 'hz-gb-2312': 'hz-gb-2312', - 'big5': 'big5', - 'big5-hkscs': 'big5', - 'cn-big5': 'big5', - 'csbig5': 'big5', - 'x-x-big5': 'big5', - 'cseucpkdfmtjapanese': 'euc-jp', - 'euc-jp': 'euc-jp', - 'x-euc-jp': 'euc-jp', - 'csiso2022jp': 'iso-2022-jp', - 'iso-2022-jp': 'iso-2022-jp', - 'csshiftjis': 'shift_jis', - 'ms_kanji': 'shift_jis', - 'shift-jis': 'shift_jis', - 'shift_jis': 'shift_jis', - 'sjis': 'shift_jis', - 'windows-31j': 'shift_jis', - 'x-sjis': 'shift_jis', - 'cseuckr': 'euc-kr', - 'csksc56011987': 'euc-kr', - 'euc-kr': 'euc-kr', - 'iso-ir-149': 'euc-kr', - 'korean': 'euc-kr', - 'ks_c_5601-1987': 'euc-kr', - 'ks_c_5601-1989': 'euc-kr', - 'ksc5601': 'euc-kr', - 'ksc_5601': 'euc-kr', - 'windows-949': 'euc-kr', - 'csiso2022kr': 'iso-2022-kr', - 'iso-2022-kr': 'iso-2022-kr', - 'utf-16be': 'utf-16be', - 'utf-16': 'utf-16le', - 'utf-16le': 'utf-16le', - 'x-user-defined': 'x-user-defined', -} diff --git a/gestao_raul/Lib/site-packages/pip/_vendor/webencodings/mklabels.py b/gestao_raul/Lib/site-packages/pip/_vendor/webencodings/mklabels.py deleted file mode 100644 index 295dc92..0000000 --- a/gestao_raul/Lib/site-packages/pip/_vendor/webencodings/mklabels.py +++ /dev/null @@ -1,59 +0,0 @@ -""" - - webencodings.mklabels - ~~~~~~~~~~~~~~~~~~~~~ - - Regenarate the webencodings.labels module. - - :copyright: Copyright 2012 by Simon Sapin - :license: BSD, see LICENSE for details. - -""" - -import json -try: - from urllib import urlopen -except ImportError: - from urllib.request import urlopen - - -def assert_lower(string): - assert string == string.lower() - return string - - -def generate(url): - parts = ['''\ -""" - - webencodings.labels - ~~~~~~~~~~~~~~~~~~~ - - Map encoding labels to their name. - - :copyright: Copyright 2012 by Simon Sapin - :license: BSD, see LICENSE for details. - -""" - -# XXX Do not edit! -# This file is automatically generated by mklabels.py - -LABELS = { -'''] - labels = [ - (repr(assert_lower(label)).lstrip('u'), - repr(encoding['name']).lstrip('u')) - for category in json.loads(urlopen(url).read().decode('ascii')) - for encoding in category['encodings'] - for label in encoding['labels']] - max_len = max(len(label) for label, name in labels) - parts.extend( - ' %s:%s %s,\n' % (label, ' ' * (max_len - len(label)), name) - for label, name in labels) - parts.append('}') - return ''.join(parts) - - -if __name__ == '__main__': - print(generate('http://encoding.spec.whatwg.org/encodings.json')) diff --git a/gestao_raul/Lib/site-packages/pip/_vendor/webencodings/tests.py b/gestao_raul/Lib/site-packages/pip/_vendor/webencodings/tests.py deleted file mode 100644 index e12c10d..0000000 --- a/gestao_raul/Lib/site-packages/pip/_vendor/webencodings/tests.py +++ /dev/null @@ -1,153 +0,0 @@ -# coding: utf-8 -""" - - webencodings.tests - ~~~~~~~~~~~~~~~~~~ - - A basic test suite for Encoding. - - :copyright: Copyright 2012 by Simon Sapin - :license: BSD, see LICENSE for details. - -""" - -from __future__ import unicode_literals - -from . import (lookup, LABELS, decode, encode, iter_decode, iter_encode, - IncrementalDecoder, IncrementalEncoder, UTF8) - - -def assert_raises(exception, function, *args, **kwargs): - try: - function(*args, **kwargs) - except exception: - return - else: # pragma: no cover - raise AssertionError('Did not raise %s.' % exception) - - -def test_labels(): - assert lookup('utf-8').name == 'utf-8' - assert lookup('Utf-8').name == 'utf-8' - assert lookup('UTF-8').name == 'utf-8' - assert lookup('utf8').name == 'utf-8' - assert lookup('utf8').name == 'utf-8' - assert lookup('utf8 ').name == 'utf-8' - assert lookup(' \r\nutf8\t').name == 'utf-8' - assert lookup('u8') is None # Python label. - assert lookup('utf-8 ') is None # Non-ASCII white space. - - assert lookup('US-ASCII').name == 'windows-1252' - assert lookup('iso-8859-1').name == 'windows-1252' - assert lookup('latin1').name == 'windows-1252' - assert lookup('LATIN1').name == 'windows-1252' - assert lookup('latin-1') is None - assert lookup('LATİN1') is None # ASCII-only case insensitivity. - - -def test_all_labels(): - for label in LABELS: - assert decode(b'', label) == ('', lookup(label)) - assert encode('', label) == b'' - for repeat in [0, 1, 12]: - output, _ = iter_decode([b''] * repeat, label) - assert list(output) == [] - assert list(iter_encode([''] * repeat, label)) == [] - decoder = IncrementalDecoder(label) - assert decoder.decode(b'') == '' - assert decoder.decode(b'', final=True) == '' - encoder = IncrementalEncoder(label) - assert encoder.encode('') == b'' - assert encoder.encode('', final=True) == b'' - # All encoding names are valid labels too: - for name in set(LABELS.values()): - assert lookup(name).name == name - - -def test_invalid_label(): - assert_raises(LookupError, decode, b'\xEF\xBB\xBF\xc3\xa9', 'invalid') - assert_raises(LookupError, encode, 'é', 'invalid') - assert_raises(LookupError, iter_decode, [], 'invalid') - assert_raises(LookupError, iter_encode, [], 'invalid') - assert_raises(LookupError, IncrementalDecoder, 'invalid') - assert_raises(LookupError, IncrementalEncoder, 'invalid') - - -def test_decode(): - assert decode(b'\x80', 'latin1') == ('€', lookup('latin1')) - assert decode(b'\x80', lookup('latin1')) == ('€', lookup('latin1')) - assert decode(b'\xc3\xa9', 'utf8') == ('é', lookup('utf8')) - assert decode(b'\xc3\xa9', UTF8) == ('é', lookup('utf8')) - assert decode(b'\xc3\xa9', 'ascii') == ('é', lookup('ascii')) - assert decode(b'\xEF\xBB\xBF\xc3\xa9', 'ascii') == ('é', lookup('utf8')) # UTF-8 with BOM - - assert decode(b'\xFE\xFF\x00\xe9', 'ascii') == ('é', lookup('utf-16be')) # UTF-16-BE with BOM - assert decode(b'\xFF\xFE\xe9\x00', 'ascii') == ('é', lookup('utf-16le')) # UTF-16-LE with BOM - assert decode(b'\xFE\xFF\xe9\x00', 'ascii') == ('\ue900', lookup('utf-16be')) - assert decode(b'\xFF\xFE\x00\xe9', 'ascii') == ('\ue900', lookup('utf-16le')) - - assert decode(b'\x00\xe9', 'UTF-16BE') == ('é', lookup('utf-16be')) - assert decode(b'\xe9\x00', 'UTF-16LE') == ('é', lookup('utf-16le')) - assert decode(b'\xe9\x00', 'UTF-16') == ('é', lookup('utf-16le')) - - assert decode(b'\xe9\x00', 'UTF-16BE') == ('\ue900', lookup('utf-16be')) - assert decode(b'\x00\xe9', 'UTF-16LE') == ('\ue900', lookup('utf-16le')) - assert decode(b'\x00\xe9', 'UTF-16') == ('\ue900', lookup('utf-16le')) - - -def test_encode(): - assert encode('é', 'latin1') == b'\xe9' - assert encode('é', 'utf8') == b'\xc3\xa9' - assert encode('é', 'utf8') == b'\xc3\xa9' - assert encode('é', 'utf-16') == b'\xe9\x00' - assert encode('é', 'utf-16le') == b'\xe9\x00' - assert encode('é', 'utf-16be') == b'\x00\xe9' - - -def test_iter_decode(): - def iter_decode_to_string(input, fallback_encoding): - output, _encoding = iter_decode(input, fallback_encoding) - return ''.join(output) - assert iter_decode_to_string([], 'latin1') == '' - assert iter_decode_to_string([b''], 'latin1') == '' - assert iter_decode_to_string([b'\xe9'], 'latin1') == 'é' - assert iter_decode_to_string([b'hello'], 'latin1') == 'hello' - assert iter_decode_to_string([b'he', b'llo'], 'latin1') == 'hello' - assert iter_decode_to_string([b'hell', b'o'], 'latin1') == 'hello' - assert iter_decode_to_string([b'\xc3\xa9'], 'latin1') == 'é' - assert iter_decode_to_string([b'\xEF\xBB\xBF\xc3\xa9'], 'latin1') == 'é' - assert iter_decode_to_string([ - b'\xEF\xBB\xBF', b'\xc3', b'\xa9'], 'latin1') == 'é' - assert iter_decode_to_string([ - b'\xEF\xBB\xBF', b'a', b'\xc3'], 'latin1') == 'a\uFFFD' - assert iter_decode_to_string([ - b'', b'\xEF', b'', b'', b'\xBB\xBF\xc3', b'\xa9'], 'latin1') == 'é' - assert iter_decode_to_string([b'\xEF\xBB\xBF'], 'latin1') == '' - assert iter_decode_to_string([b'\xEF\xBB'], 'latin1') == 'ï»' - assert iter_decode_to_string([b'\xFE\xFF\x00\xe9'], 'latin1') == 'é' - assert iter_decode_to_string([b'\xFF\xFE\xe9\x00'], 'latin1') == 'é' - assert iter_decode_to_string([ - b'', b'\xFF', b'', b'', b'\xFE\xe9', b'\x00'], 'latin1') == 'é' - assert iter_decode_to_string([ - b'', b'h\xe9', b'llo'], 'x-user-defined') == 'h\uF7E9llo' - - -def test_iter_encode(): - assert b''.join(iter_encode([], 'latin1')) == b'' - assert b''.join(iter_encode([''], 'latin1')) == b'' - assert b''.join(iter_encode(['é'], 'latin1')) == b'\xe9' - assert b''.join(iter_encode(['', 'é', '', ''], 'latin1')) == b'\xe9' - assert b''.join(iter_encode(['', 'é', '', ''], 'utf-16')) == b'\xe9\x00' - assert b''.join(iter_encode(['', 'é', '', ''], 'utf-16le')) == b'\xe9\x00' - assert b''.join(iter_encode(['', 'é', '', ''], 'utf-16be')) == b'\x00\xe9' - assert b''.join(iter_encode([ - '', 'h\uF7E9', '', 'llo'], 'x-user-defined')) == b'h\xe9llo' - - -def test_x_user_defined(): - encoded = b'2,\x0c\x0b\x1aO\xd9#\xcb\x0f\xc9\xbbt\xcf\xa8\xca' - decoded = '2,\x0c\x0b\x1aO\uf7d9#\uf7cb\x0f\uf7c9\uf7bbt\uf7cf\uf7a8\uf7ca' - encoded = b'aa' - decoded = 'aa' - assert decode(encoded, 'x-user-defined') == (decoded, lookup('x-user-defined')) - assert encode(decoded, 'x-user-defined') == encoded diff --git a/gestao_raul/Lib/site-packages/pip/_vendor/webencodings/x_user_defined.py b/gestao_raul/Lib/site-packages/pip/_vendor/webencodings/x_user_defined.py deleted file mode 100644 index d16e326..0000000 --- a/gestao_raul/Lib/site-packages/pip/_vendor/webencodings/x_user_defined.py +++ /dev/null @@ -1,325 +0,0 @@ -# coding: utf-8 -""" - - webencodings.x_user_defined - ~~~~~~~~~~~~~~~~~~~~~~~~~~~ - - An implementation of the x-user-defined encoding. - - :copyright: Copyright 2012 by Simon Sapin - :license: BSD, see LICENSE for details. - -""" - -from __future__ import unicode_literals - -import codecs - - -### Codec APIs - -class Codec(codecs.Codec): - - def encode(self, input, errors='strict'): - return codecs.charmap_encode(input, errors, encoding_table) - - def decode(self, input, errors='strict'): - return codecs.charmap_decode(input, errors, decoding_table) - - -class IncrementalEncoder(codecs.IncrementalEncoder): - def encode(self, input, final=False): - return codecs.charmap_encode(input, self.errors, encoding_table)[0] - - -class IncrementalDecoder(codecs.IncrementalDecoder): - def decode(self, input, final=False): - return codecs.charmap_decode(input, self.errors, decoding_table)[0] - - -class StreamWriter(Codec, codecs.StreamWriter): - pass - - -class StreamReader(Codec, codecs.StreamReader): - pass - - -### encodings module API - -codec_info = codecs.CodecInfo( - name='x-user-defined', - encode=Codec().encode, - decode=Codec().decode, - incrementalencoder=IncrementalEncoder, - incrementaldecoder=IncrementalDecoder, - streamreader=StreamReader, - streamwriter=StreamWriter, -) - - -### Decoding Table - -# Python 3: -# for c in range(256): print(' %r' % chr(c if c < 128 else c + 0xF700)) -decoding_table = ( - '\x00' - '\x01' - '\x02' - '\x03' - '\x04' - '\x05' - '\x06' - '\x07' - '\x08' - '\t' - '\n' - '\x0b' - '\x0c' - '\r' - '\x0e' - '\x0f' - '\x10' - '\x11' - '\x12' - '\x13' - '\x14' - '\x15' - '\x16' - '\x17' - '\x18' - '\x19' - '\x1a' - '\x1b' - '\x1c' - '\x1d' - '\x1e' - '\x1f' - ' ' - '!' - '"' - '#' - '$' - '%' - '&' - "'" - '(' - ')' - '*' - '+' - ',' - '-' - '.' - '/' - '0' - '1' - '2' - '3' - '4' - '5' - '6' - '7' - '8' - '9' - ':' - ';' - '<' - '=' - '>' - '?' - '@' - 'A' - 'B' - 'C' - 'D' - 'E' - 'F' - 'G' - 'H' - 'I' - 'J' - 'K' - 'L' - 'M' - 'N' - 'O' - 'P' - 'Q' - 'R' - 'S' - 'T' - 'U' - 'V' - 'W' - 'X' - 'Y' - 'Z' - '[' - '\\' - ']' - '^' - '_' - '`' - 'a' - 'b' - 'c' - 'd' - 'e' - 'f' - 'g' - 'h' - 'i' - 'j' - 'k' - 'l' - 'm' - 'n' - 'o' - 'p' - 'q' - 'r' - 's' - 't' - 'u' - 'v' - 'w' - 'x' - 'y' - 'z' - '{' - '|' - '}' - '~' - '\x7f' - '\uf780' - '\uf781' - '\uf782' - '\uf783' - '\uf784' - '\uf785' - '\uf786' - '\uf787' - '\uf788' - '\uf789' - '\uf78a' - '\uf78b' - '\uf78c' - '\uf78d' - '\uf78e' - '\uf78f' - '\uf790' - '\uf791' - '\uf792' - '\uf793' - '\uf794' - '\uf795' - '\uf796' - '\uf797' - '\uf798' - '\uf799' - '\uf79a' - '\uf79b' - '\uf79c' - '\uf79d' - '\uf79e' - '\uf79f' - '\uf7a0' - '\uf7a1' - '\uf7a2' - '\uf7a3' - '\uf7a4' - '\uf7a5' - '\uf7a6' - '\uf7a7' - '\uf7a8' - '\uf7a9' - '\uf7aa' - '\uf7ab' - '\uf7ac' - '\uf7ad' - '\uf7ae' - '\uf7af' - '\uf7b0' - '\uf7b1' - '\uf7b2' - '\uf7b3' - '\uf7b4' - '\uf7b5' - '\uf7b6' - '\uf7b7' - '\uf7b8' - '\uf7b9' - '\uf7ba' - '\uf7bb' - '\uf7bc' - '\uf7bd' - '\uf7be' - '\uf7bf' - '\uf7c0' - '\uf7c1' - '\uf7c2' - '\uf7c3' - '\uf7c4' - '\uf7c5' - '\uf7c6' - '\uf7c7' - '\uf7c8' - '\uf7c9' - '\uf7ca' - '\uf7cb' - '\uf7cc' - '\uf7cd' - '\uf7ce' - '\uf7cf' - '\uf7d0' - '\uf7d1' - '\uf7d2' - '\uf7d3' - '\uf7d4' - '\uf7d5' - '\uf7d6' - '\uf7d7' - '\uf7d8' - '\uf7d9' - '\uf7da' - '\uf7db' - '\uf7dc' - '\uf7dd' - '\uf7de' - '\uf7df' - '\uf7e0' - '\uf7e1' - '\uf7e2' - '\uf7e3' - '\uf7e4' - '\uf7e5' - '\uf7e6' - '\uf7e7' - '\uf7e8' - '\uf7e9' - '\uf7ea' - '\uf7eb' - '\uf7ec' - '\uf7ed' - '\uf7ee' - '\uf7ef' - '\uf7f0' - '\uf7f1' - '\uf7f2' - '\uf7f3' - '\uf7f4' - '\uf7f5' - '\uf7f6' - '\uf7f7' - '\uf7f8' - '\uf7f9' - '\uf7fa' - '\uf7fb' - '\uf7fc' - '\uf7fd' - '\uf7fe' - '\uf7ff' -) - -### Encoding table -encoding_table = codecs.charmap_build(decoding_table) diff --git a/gestao_raul/Lib/site-packages/pwa/__init__.py b/gestao_raul/Lib/site-packages/pwa/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/gestao_raul/Lib/site-packages/pwa/__pycache__/__init__.cpython-310.pyc b/gestao_raul/Lib/site-packages/pwa/__pycache__/__init__.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..cc96d70f9434ef7039a19225edead880b0d1a5bb GIT binary patch literal 169 zcmd1j<>g`kf=&Lb(?RrO5P=LBfgA@QE@lA|DGb33nv8xc8Hzx{2;!HIvsFxJacWU< zOnGWfNq&q=esXDUYF+oetc14X-QRXW=X1UL1J=tB2Xr# lpgd7OK0Y%qvm`!Vub}c4hfQvNN@-529mtkqCLqDW004|*Dq8>m literal 0 HcmV?d00001 diff --git a/gestao_raul/Lib/site-packages/pwa/__pycache__/app_settings.cpython-310.pyc b/gestao_raul/Lib/site-packages/pwa/__pycache__/app_settings.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..60486783adcbac00e504dd526c6b2fe40659f5ff GIT binary patch literal 3396 zcmb_fTXWh*6h;CJwy}-v#Lhh=PSVg8jKtM$+6IGS)7ZcWNLmdu8kt?N9D%4LVwqR} zjXX4uoxb(wsE>W>Kj?JYPIp%lxFo^u1xDw5XV2N)kF!V8L0wpw^PtaAzDR5AX;cKml5z1PW=dLU+A_m%?K{#n<%hjVAN;D>=Tk1!8I&6qCW*O zqT^r_>rN1@b(gG_=y(v05X=A;BtZ(Tn+6%8vmi(G7T6~GGw_7y&%qZ&e+ixvod-Ka z7eJ9{4m`uUGl$l`N7mj2dkEhrxCFjJc!S{QWd8>Q?-TqG&^1r=U>K=E!;pI&J)*&H z2eJl1Uby zRtV3^SF2(_q6MXpxhOVxU*QXZ}yoJOje+ChYL`8ABZgohCv9Cm~G zN~JC~`2F$p`W|<{iG|93g&+Dh5{ZO$%?;kk7oP9(l}5QZ^0(V4hr6txGf1=m?CRH~e{;+jQnr?D#@REk`Eymy5!apig*Q@6ZQ@6=j$!)x_CZxbC2 zJ>%+yJ;HrN5JlA+HE}1;+XSrufNg1@7-JfxLZw_AZfqiohTPheyHW@0n{rF-*)o=8 z%`6-5_d0@~z$k5bb**Ljb$N(RW6I2}jJcJuXA(Gk_~Bg`HfN%XLDrx%EQO+&83d+5&bBZNhM5%Ns{Cb>yH7%_e<Y?TvZ)Up$cIyqW7x|Qm|74ye0yc>dVc2!Qq1^QPGlgrmATaZ>_rJ6N07rf71ScC4WNe#4(#N^%pfz1JM8g literal 0 HcmV?d00001 diff --git a/gestao_raul/Lib/site-packages/pwa/__pycache__/apps.cpython-310.pyc b/gestao_raul/Lib/site-packages/pwa/__pycache__/apps.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..e19f778cb91619496e3ed12b3cd2d349933ff7d4 GIT binary patch literal 385 zcmYjN%}T^D5S}y@+I1H^_yAseaJ`GjY85@msw-YfAjBq?YTLx7rFeEG~P4O{UpxQkI36d00l7tYr0O?7(21ylpqlqW| zJBYTvu?r&7hbP9wx_ZpB)MYk>V6Z^7I|vFAA_1pKLZyccv=47OF^(qGbYdC#eZYAo zO2v6U;k?wcEu25){G}DeU&VL!9qIsC2l%;+581s{wPl?u8qLmh+Lo$nEL*Kk&tsM; z+X&5T(H86~e_%Fm)V>kvv%m_&)d#{DJ2$U2MNan!>mY!D44Gv_lWqAVs!Y#aXYIMw YuJ`|l(F-xx2S?-O$L;|G(-d~;FQ+D0*#H0l literal 0 HcmV?d00001 diff --git a/gestao_raul/Lib/site-packages/pwa/__pycache__/urls.cpython-310.pyc b/gestao_raul/Lib/site-packages/pwa/__pycache__/urls.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..53d9a9e908976ab3ba1f4fe3e61b0c9d57d47246 GIT binary patch literal 452 zcmY*V%}N6?5Ki{Lb}NEDLN9x;-bFs%dY}3YiJT8k0+I0(NT8v;g)8+}xeDijd_|bguX#1@9FPG6asDy&~#_exC zXVX>RgxF`EtZMI=2<3T}u&#U*RjvmUQ(EI;()b80oE9*%%STJAam!&{bm7nqn99Bq z({XkOpQlH={01knd3l_rC8FHz}7(2*$VVuf6XCp&#nU%>gm= z0!%1J5yc^ju!FH$laNH3qrqCEdZ}TqF46^Bg4v{tZDd;)kOkQ| zvo@tnTTG-$EZ8~D49;T8_ywMAdui$lCS?%!gs+0vL+LTW>R_SWP(3cjxyf$zy6iC6pHp(lJEq!LtF zeiBO-OIIGH%r0bllCqc^P}RA=v%BuL8?AR+^@h8<-Fnq%xjXA`Hn|d*>704gCRvfQ zg8>uLxh)t!416|B_&(!qHwf7|;uf6!wN-!Kc?;X3Gi0GmIva^Uh@hzGv|2A4^-d4o z_Y#+TgRt{D_}CGFWKUAh-}hjrlMcPr!+;G%H9g9fW>ws2nIfbYs)mILHo)}D$5(s_ z0&_?eUe!~M^dT%H8s`Y9b^>rEz}-L-Om$i~)d88&9F-$44!R($+80SYmreDrvbDj) zBX9v^`%pf{@M!?~8Rle+Rn{?{kk90RKt}B73a71QCFqq)F%0BhR_rn9Ny&5I0FzXo zI@at`xUmp8{9oL>&V36uMFkuI;)=UL^h;7Oe)4+|oMWZPYhXEf z^*@}FpC~4zIkJ*&Hw.btn-group,.btn-toolbar .btn,.btn-toolbar .btn-group,.btn-toolbar .input-group,.col-xs-1,.col-xs-10,.col-xs-11,.col-xs-12,.col-xs-2,.col-xs-3,.col-xs-4,.col-xs-5,.col-xs-6,.col-xs-7,.col-xs-8,.col-xs-9,.dropdown-menu{float:left}.img-responsive,.img-thumbnail,.table,label{max-width:100%}.navbar-fixed-bottom .navbar-collapse,.navbar-fixed-top .navbar-collapse,.pre-scrollable{max-height:340px}html{font-family:sans-serif;-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%}article,aside,details,figcaption,figure,footer,header,hgroup,main,menu,nav,section,summary{display:block}audio,canvas,progress,video{display:inline-block;vertical-align:baseline}audio:not([controls]){display:none;height:0}[hidden],template{display:none}a{background-color:transparent}a:active,a:hover{outline:0}b,optgroup,strong{font-weight:700}dfn{font-style:italic}h1{margin:.67em 0}mark{background:#ff0;color:#000}sub,sup{font-size:75%;line-height:0;position:relative}sup{top:-.5em}sub{bottom:-.25em}img{vertical-align:middle}svg:not(:root){overflow:hidden}hr{box-sizing:content-box;height:0}pre,textarea{overflow:auto}code,kbd,pre,samp{font-size:1em}button,input,optgroup,select,textarea{color:inherit;font:inherit;margin:0}button{overflow:visible}button,select{text-transform:none}button,html input[type=button],input[type=reset],input[type=submit]{-webkit-appearance:button;cursor:pointer}button[disabled],html input[disabled]{cursor:default}button::-moz-focus-inner,input::-moz-focus-inner{border:0;padding:0}input[type=checkbox],input[type=radio]{box-sizing:border-box;padding:0}input[type=number]::-webkit-inner-spin-button,input[type=number]::-webkit-outer-spin-button{height:auto}input[type=search]::-webkit-search-cancel-button,input[type=search]::-webkit-search-decoration{-webkit-appearance:none}table{border-collapse:collapse;border-spacing:0}td,th{padding:0}/*! Source: https://github.com/h5bp/html5-boilerplate/blob/master/src/css/main.css */@media print{blockquote,img,pre,tr{page-break-inside:avoid}*,:after,:before{background:0 0!important;color:#000!important;box-shadow:none!important;text-shadow:none!important}a,a:visited{text-decoration:underline}a[href]:after{content:" (" attr(href) ")"}abbr[title]:after{content:" (" attr(title) ")"}a[href^="javascript:"]:after,a[href^="#"]:after{content:""}blockquote,pre{border:1px solid #999}thead{display:table-header-group}img{max-width:100%!important}h2,h3,p{orphans:3;widows:3}h2,h3{page-break-after:avoid}.navbar{display:none}.btn>.caret,.dropup>.btn>.caret{border-top-color:#000!important}.label{border:1px solid #000}.table{border-collapse:collapse!important}.table td,.table th{background-color:#fff!important}.table-bordered td,.table-bordered th{border:1px solid #ddd!important}}.btn,.btn-danger.active,.btn-danger:active,.btn-default.active,.btn-default:active,.btn-info.active,.btn-info:active,.btn-primary.active,.btn-primary:active,.btn-warning.active,.btn-warning:active,.btn.active,.btn:active,.dropdown-menu>.disabled>a:focus,.dropdown-menu>.disabled>a:hover,.form-control,.navbar-toggle,.open>.btn-danger.dropdown-toggle,.open>.btn-default.dropdown-toggle,.open>.btn-info.dropdown-toggle,.open>.btn-primary.dropdown-toggle,.open>.btn-warning.dropdown-toggle{background-image:none}.img-thumbnail,body{background-color:#f5f8fa}@font-face{font-family:'Glyphicons Halflings';src:url(../fonts/bootstrap/glyphicons-halflings-regular.eot);src:url(../fonts/bootstrap/glyphicons-halflings-regular.eot?#iefix) format("embedded-opentype"),url(../fonts/bootstrap/glyphicons-halflings-regular.woff2) format("woff2"),url(../fonts/bootstrap/glyphicons-halflings-regular.woff) format("woff"),url(../fonts/bootstrap/glyphicons-halflings-regular.ttf) format("truetype"),url(../fonts/bootstrap/glyphicons-halflings-regular.svg#glyphicons_halflingsregular) format("svg")}.glyphicon{position:relative;top:1px;display:inline-block;font-family:'Glyphicons Halflings';font-style:normal;font-weight:400;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.glyphicon-asterisk:before{content:"\002a"}.glyphicon-plus:before{content:"\002b"}.glyphicon-eur:before,.glyphicon-euro:before{content:"\20ac"}.glyphicon-minus:before{content:"\2212"}.glyphicon-cloud:before{content:"\2601"}.glyphicon-envelope:before{content:"\2709"}.glyphicon-pencil:before{content:"\270f"}.glyphicon-glass:before{content:"\e001"}.glyphicon-music:before{content:"\e002"}.glyphicon-search:before{content:"\e003"}.glyphicon-heart:before{content:"\e005"}.glyphicon-star:before{content:"\e006"}.glyphicon-star-empty:before{content:"\e007"}.glyphicon-user:before{content:"\e008"}.glyphicon-film:before{content:"\e009"}.glyphicon-th-large:before{content:"\e010"}.glyphicon-th:before{content:"\e011"}.glyphicon-th-list:before{content:"\e012"}.glyphicon-ok:before{content:"\e013"}.glyphicon-remove:before{content:"\e014"}.glyphicon-zoom-in:before{content:"\e015"}.glyphicon-zoom-out:before{content:"\e016"}.glyphicon-off:before{content:"\e017"}.glyphicon-signal:before{content:"\e018"}.glyphicon-cog:before{content:"\e019"}.glyphicon-trash:before{content:"\e020"}.glyphicon-home:before{content:"\e021"}.glyphicon-file:before{content:"\e022"}.glyphicon-time:before{content:"\e023"}.glyphicon-road:before{content:"\e024"}.glyphicon-download-alt:before{content:"\e025"}.glyphicon-download:before{content:"\e026"}.glyphicon-upload:before{content:"\e027"}.glyphicon-inbox:before{content:"\e028"}.glyphicon-play-circle:before{content:"\e029"}.glyphicon-repeat:before{content:"\e030"}.glyphicon-refresh:before{content:"\e031"}.glyphicon-list-alt:before{content:"\e032"}.glyphicon-lock:before{content:"\e033"}.glyphicon-flag:before{content:"\e034"}.glyphicon-headphones:before{content:"\e035"}.glyphicon-volume-off:before{content:"\e036"}.glyphicon-volume-down:before{content:"\e037"}.glyphicon-volume-up:before{content:"\e038"}.glyphicon-qrcode:before{content:"\e039"}.glyphicon-barcode:before{content:"\e040"}.glyphicon-tag:before{content:"\e041"}.glyphicon-tags:before{content:"\e042"}.glyphicon-book:before{content:"\e043"}.glyphicon-bookmark:before{content:"\e044"}.glyphicon-print:before{content:"\e045"}.glyphicon-camera:before{content:"\e046"}.glyphicon-font:before{content:"\e047"}.glyphicon-bold:before{content:"\e048"}.glyphicon-italic:before{content:"\e049"}.glyphicon-text-height:before{content:"\e050"}.glyphicon-text-width:before{content:"\e051"}.glyphicon-align-left:before{content:"\e052"}.glyphicon-align-center:before{content:"\e053"}.glyphicon-align-right:before{content:"\e054"}.glyphicon-align-justify:before{content:"\e055"}.glyphicon-list:before{content:"\e056"}.glyphicon-indent-left:before{content:"\e057"}.glyphicon-indent-right:before{content:"\e058"}.glyphicon-facetime-video:before{content:"\e059"}.glyphicon-picture:before{content:"\e060"}.glyphicon-map-marker:before{content:"\e062"}.glyphicon-adjust:before{content:"\e063"}.glyphicon-tint:before{content:"\e064"}.glyphicon-edit:before{content:"\e065"}.glyphicon-share:before{content:"\e066"}.glyphicon-check:before{content:"\e067"}.glyphicon-move:before{content:"\e068"}.glyphicon-step-backward:before{content:"\e069"}.glyphicon-fast-backward:before{content:"\e070"}.glyphicon-backward:before{content:"\e071"}.glyphicon-play:before{content:"\e072"}.glyphicon-pause:before{content:"\e073"}.glyphicon-stop:before{content:"\e074"}.glyphicon-forward:before{content:"\e075"}.glyphicon-fast-forward:before{content:"\e076"}.glyphicon-step-forward:before{content:"\e077"}.glyphicon-eject:before{content:"\e078"}.glyphicon-chevron-left:before{content:"\e079"}.glyphicon-chevron-right:before{content:"\e080"}.glyphicon-plus-sign:before{content:"\e081"}.glyphicon-minus-sign:before{content:"\e082"}.glyphicon-remove-sign:before{content:"\e083"}.glyphicon-ok-sign:before{content:"\e084"}.glyphicon-question-sign:before{content:"\e085"}.glyphicon-info-sign:before{content:"\e086"}.glyphicon-screenshot:before{content:"\e087"}.glyphicon-remove-circle:before{content:"\e088"}.glyphicon-ok-circle:before{content:"\e089"}.glyphicon-ban-circle:before{content:"\e090"}.glyphicon-arrow-left:before{content:"\e091"}.glyphicon-arrow-right:before{content:"\e092"}.glyphicon-arrow-up:before{content:"\e093"}.glyphicon-arrow-down:before{content:"\e094"}.glyphicon-share-alt:before{content:"\e095"}.glyphicon-resize-full:before{content:"\e096"}.glyphicon-resize-small:before{content:"\e097"}.glyphicon-exclamation-sign:before{content:"\e101"}.glyphicon-gift:before{content:"\e102"}.glyphicon-leaf:before{content:"\e103"}.glyphicon-fire:before{content:"\e104"}.glyphicon-eye-open:before{content:"\e105"}.glyphicon-eye-close:before{content:"\e106"}.glyphicon-warning-sign:before{content:"\e107"}.glyphicon-plane:before{content:"\e108"}.glyphicon-calendar:before{content:"\e109"}.glyphicon-random:before{content:"\e110"}.glyphicon-comment:before{content:"\e111"}.glyphicon-magnet:before{content:"\e112"}.glyphicon-chevron-up:before{content:"\e113"}.glyphicon-chevron-down:before{content:"\e114"}.glyphicon-retweet:before{content:"\e115"}.glyphicon-shopping-cart:before{content:"\e116"}.glyphicon-folder-close:before{content:"\e117"}.glyphicon-folder-open:before{content:"\e118"}.glyphicon-resize-vertical:before{content:"\e119"}.glyphicon-resize-horizontal:before{content:"\e120"}.glyphicon-hdd:before{content:"\e121"}.glyphicon-bullhorn:before{content:"\e122"}.glyphicon-bell:before{content:"\e123"}.glyphicon-certificate:before{content:"\e124"}.glyphicon-thumbs-up:before{content:"\e125"}.glyphicon-thumbs-down:before{content:"\e126"}.glyphicon-hand-right:before{content:"\e127"}.glyphicon-hand-left:before{content:"\e128"}.glyphicon-hand-up:before{content:"\e129"}.glyphicon-hand-down:before{content:"\e130"}.glyphicon-circle-arrow-right:before{content:"\e131"}.glyphicon-circle-arrow-left:before{content:"\e132"}.glyphicon-circle-arrow-up:before{content:"\e133"}.glyphicon-circle-arrow-down:before{content:"\e134"}.glyphicon-globe:before{content:"\e135"}.glyphicon-wrench:before{content:"\e136"}.glyphicon-tasks:before{content:"\e137"}.glyphicon-filter:before{content:"\e138"}.glyphicon-briefcase:before{content:"\e139"}.glyphicon-fullscreen:before{content:"\e140"}.glyphicon-dashboard:before{content:"\e141"}.glyphicon-paperclip:before{content:"\e142"}.glyphicon-heart-empty:before{content:"\e143"}.glyphicon-link:before{content:"\e144"}.glyphicon-phone:before{content:"\e145"}.glyphicon-pushpin:before{content:"\e146"}.glyphicon-usd:before{content:"\e148"}.glyphicon-gbp:before{content:"\e149"}.glyphicon-sort:before{content:"\e150"}.glyphicon-sort-by-alphabet:before{content:"\e151"}.glyphicon-sort-by-alphabet-alt:before{content:"\e152"}.glyphicon-sort-by-order:before{content:"\e153"}.glyphicon-sort-by-order-alt:before{content:"\e154"}.glyphicon-sort-by-attributes:before{content:"\e155"}.glyphicon-sort-by-attributes-alt:before{content:"\e156"}.glyphicon-unchecked:before{content:"\e157"}.glyphicon-expand:before{content:"\e158"}.glyphicon-collapse-down:before{content:"\e159"}.glyphicon-collapse-up:before{content:"\e160"}.glyphicon-log-in:before{content:"\e161"}.glyphicon-flash:before{content:"\e162"}.glyphicon-log-out:before{content:"\e163"}.glyphicon-new-window:before{content:"\e164"}.glyphicon-record:before{content:"\e165"}.glyphicon-save:before{content:"\e166"}.glyphicon-open:before{content:"\e167"}.glyphicon-saved:before{content:"\e168"}.glyphicon-import:before{content:"\e169"}.glyphicon-export:before{content:"\e170"}.glyphicon-send:before{content:"\e171"}.glyphicon-floppy-disk:before{content:"\e172"}.glyphicon-floppy-saved:before{content:"\e173"}.glyphicon-floppy-remove:before{content:"\e174"}.glyphicon-floppy-save:before{content:"\e175"}.glyphicon-floppy-open:before{content:"\e176"}.glyphicon-credit-card:before{content:"\e177"}.glyphicon-transfer:before{content:"\e178"}.glyphicon-cutlery:before{content:"\e179"}.glyphicon-header:before{content:"\e180"}.glyphicon-compressed:before{content:"\e181"}.glyphicon-earphone:before{content:"\e182"}.glyphicon-phone-alt:before{content:"\e183"}.glyphicon-tower:before{content:"\e184"}.glyphicon-stats:before{content:"\e185"}.glyphicon-sd-video:before{content:"\e186"}.glyphicon-hd-video:before{content:"\e187"}.glyphicon-subtitles:before{content:"\e188"}.glyphicon-sound-stereo:before{content:"\e189"}.glyphicon-sound-dolby:before{content:"\e190"}.glyphicon-sound-5-1:before{content:"\e191"}.glyphicon-sound-6-1:before{content:"\e192"}.glyphicon-sound-7-1:before{content:"\e193"}.glyphicon-copyright-mark:before{content:"\e194"}.glyphicon-registration-mark:before{content:"\e195"}.glyphicon-cloud-download:before{content:"\e197"}.glyphicon-cloud-upload:before{content:"\e198"}.glyphicon-tree-conifer:before{content:"\e199"}.glyphicon-tree-deciduous:before{content:"\e200"}.glyphicon-cd:before{content:"\e201"}.glyphicon-save-file:before{content:"\e202"}.glyphicon-open-file:before{content:"\e203"}.glyphicon-level-up:before{content:"\e204"}.glyphicon-copy:before{content:"\e205"}.glyphicon-paste:before{content:"\e206"}.glyphicon-alert:before{content:"\e209"}.glyphicon-equalizer:before{content:"\e210"}.glyphicon-king:before{content:"\e211"}.glyphicon-queen:before{content:"\e212"}.glyphicon-pawn:before{content:"\e213"}.glyphicon-bishop:before{content:"\e214"}.glyphicon-knight:before{content:"\e215"}.glyphicon-baby-formula:before{content:"\e216"}.glyphicon-tent:before{content:"\26fa"}.glyphicon-blackboard:before{content:"\e218"}.glyphicon-bed:before{content:"\e219"}.glyphicon-apple:before{content:"\f8ff"}.glyphicon-erase:before{content:"\e221"}.glyphicon-hourglass:before{content:"\231b"}.glyphicon-lamp:before{content:"\e223"}.glyphicon-duplicate:before{content:"\e224"}.glyphicon-piggy-bank:before{content:"\e225"}.glyphicon-scissors:before{content:"\e226"}.glyphicon-bitcoin:before,.glyphicon-btc:before,.glyphicon-xbt:before{content:"\e227"}.glyphicon-jpy:before,.glyphicon-yen:before{content:"\00a5"}.glyphicon-rub:before,.glyphicon-ruble:before{content:"\20bd"}.glyphicon-scale:before{content:"\e230"}.glyphicon-ice-lolly:before{content:"\e231"}.glyphicon-ice-lolly-tasted:before{content:"\e232"}.glyphicon-education:before{content:"\e233"}.glyphicon-option-horizontal:before{content:"\e234"}.glyphicon-option-vertical:before{content:"\e235"}.glyphicon-menu-hamburger:before{content:"\e236"}.glyphicon-modal-window:before{content:"\e237"}.glyphicon-oil:before{content:"\e238"}.glyphicon-grain:before{content:"\e239"}.glyphicon-sunglasses:before{content:"\e240"}.glyphicon-text-size:before{content:"\e241"}.glyphicon-text-color:before{content:"\e242"}.glyphicon-text-background:before{content:"\e243"}.glyphicon-object-align-top:before{content:"\e244"}.glyphicon-object-align-bottom:before{content:"\e245"}.glyphicon-object-align-horizontal:before{content:"\e246"}.glyphicon-object-align-left:before{content:"\e247"}.glyphicon-object-align-vertical:before{content:"\e248"}.glyphicon-object-align-right:before{content:"\e249"}.glyphicon-triangle-right:before{content:"\e250"}.glyphicon-triangle-left:before{content:"\e251"}.glyphicon-triangle-bottom:before{content:"\e252"}.glyphicon-triangle-top:before{content:"\e253"}.glyphicon-console:before{content:"\e254"}.glyphicon-superscript:before{content:"\e255"}.glyphicon-subscript:before{content:"\e256"}.glyphicon-menu-left:before{content:"\e257"}.glyphicon-menu-right:before{content:"\e258"}.glyphicon-menu-down:before{content:"\e259"}.glyphicon-menu-up:before{content:"\e260"}*,:after,:before{box-sizing:border-box}html{font-size:10px;-webkit-tap-highlight-color:transparent}body{font-family:Raleway,sans-serif;font-size:14px;line-height:1.6;color:#636b6f}button,input,select,textarea{font-family:inherit;font-size:inherit;line-height:inherit}a{color:#3097D1;text-decoration:none}a:focus,a:hover{color:#216a94;text-decoration:underline}a:focus{outline:-webkit-focus-ring-color auto 5px;outline-offset:-2px}.img-responsive{display:block;height:auto}.img-rounded{border-radius:6px}.img-thumbnail{padding:4px;line-height:1.6;border:1px solid #ddd;border-radius:4px;-webkit-transition:all .2s ease-in-out;transition:all .2s ease-in-out;display:inline-block;height:auto}.img-circle{border-radius:50%}hr{margin-top:22px;margin-bottom:22px;border-top:1px solid #eee}.sr-only{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);border:0}.sr-only-focusable:active,.sr-only-focusable:focus{position:static;width:auto;height:auto;margin:0;overflow:visible;clip:auto}[role=button]{cursor:pointer}.h1,.h2,.h3,.h4,.h5,.h6,h1,h2,h3,h4,h5,h6{font-family:inherit;font-weight:500;line-height:1.1;color:inherit}.h1 .small,.h1 small,.h2 .small,.h2 small,.h3 .small,.h3 small,.h4 .small,.h4 small,.h5 .small,.h5 small,.h6 .small,.h6 small,h1 .small,h1 small,h2 .small,h2 small,h3 .small,h3 small,h4 .small,h4 small,h5 .small,h5 small,h6 .small,h6 small{font-weight:400;line-height:1;color:#777}.h1,.h2,.h3,h1,h2,h3{margin-top:22px;margin-bottom:11px}.h1 .small,.h1 small,.h2 .small,.h2 small,.h3 .small,.h3 small,h1 .small,h1 small,h2 .small,h2 small,h3 .small,h3 small{font-size:65%}.h4,.h5,.h6,h4,h5,h6{margin-top:11px;margin-bottom:11px}.h4 .small,.h4 small,.h5 .small,.h5 small,.h6 .small,.h6 small,h4 .small,h4 small,h5 .small,h5 small,h6 .small,h6 small{font-size:75%}.h1,h1{font-size:36px}.h2,h2{font-size:30px}.h3,h3{font-size:24px}.h4,h4{font-size:18px}.h5,h5{font-size:14px}.h6,h6{font-size:12px}p{margin:0 0 11px}.lead{margin-bottom:22px;font-size:16px;font-weight:300;line-height:1.4}dt,kbd kbd,label{font-weight:700}@media (min-width:768px){.lead{font-size:21px}}.small,small{font-size:85%}.mark,mark{background-color:#fcf8e3;padding:.2em}.list-inline,.list-unstyled{padding-left:0;list-style:none}.text-left{text-align:left}.text-right{text-align:right}.text-center{text-align:center}.text-justify{text-align:justify}.text-nowrap{white-space:nowrap}.text-lowercase{text-transform:lowercase}.initialism,.text-uppercase{text-transform:uppercase}.text-capitalize{text-transform:capitalize}.text-muted{color:#777}.text-primary{color:#3097D1}a.text-primary:focus,a.text-primary:hover{color:#2579a9}.text-success{color:#3c763d}a.text-success:focus,a.text-success:hover{color:#2b542c}.text-info{color:#31708f}a.text-info:focus,a.text-info:hover{color:#245269}.text-warning{color:#8a6d3b}a.text-warning:focus,a.text-warning:hover{color:#66512c}.text-danger{color:#a94442}a.text-danger:focus,a.text-danger:hover{color:#843534}.bg-primary{color:#fff;background-color:#3097D1}a.bg-primary:focus,a.bg-primary:hover{background-color:#2579a9}.bg-success{background-color:#dff0d8}a.bg-success:focus,a.bg-success:hover{background-color:#c1e2b3}.bg-info{background-color:#d9edf7}a.bg-info:focus,a.bg-info:hover{background-color:#afd9ee}.bg-warning{background-color:#fcf8e3}a.bg-warning:focus,a.bg-warning:hover{background-color:#f7ecb5}.bg-danger{background-color:#f2dede}a.bg-danger:focus,a.bg-danger:hover{background-color:#e4b9b9}pre code,table{background-color:transparent}.page-header{padding-bottom:10px;margin:44px 0 22px;border-bottom:1px solid #eee}dl,ol,ul{margin-top:0}blockquote ol:last-child,blockquote p:last-child,blockquote ul:last-child,ol ol,ol ul,ul ol,ul ul{margin-bottom:0}address,dl{margin-bottom:22px}ol,ul{margin-bottom:11px}.list-inline{margin-left:-5px}.list-inline>li{display:inline-block;padding-left:5px;padding-right:5px}dd,dt{line-height:1.6}dd{margin-left:0}.dl-horizontal dd:after,.dl-horizontal dd:before{content:" ";display:table}.dl-horizontal dd:after{clear:both}@media (min-width:768px){.dl-horizontal dt{float:left;width:160px;clear:left;text-align:right;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.dl-horizontal dd{margin-left:180px}.container{width:750px}}.btn-group-vertical>.btn-group:after,.btn-toolbar:after,.clearfix:after,.container-fluid:after,.container:after,.dropdown-menu>li>a,.form-horizontal .form-group:after,.modal-footer:after,.modal-header:after,.navbar-collapse:after,.navbar-header:after,.navbar:after,.pager:after,.panel-body:after,.row:after{clear:both}abbr[data-original-title],abbr[title]{cursor:help;border-bottom:1px dotted #777}.initialism{font-size:90%}blockquote{padding:11px 22px;margin:0 0 22px;font-size:17.5px;border-left:5px solid #eee}blockquote .small,blockquote footer,blockquote small{display:block;font-size:80%;line-height:1.6;color:#777}legend,pre{color:#333}blockquote .small:before,blockquote footer:before,blockquote small:before{content:'\2014 \00A0'}.blockquote-reverse,blockquote.pull-right{padding-right:15px;padding-left:0;border-right:5px solid #eee;border-left:0;text-align:right}code,kbd{padding:2px 4px;font-size:90%}caption,th{text-align:left}.blockquote-reverse .small:before,.blockquote-reverse footer:before,.blockquote-reverse small:before,blockquote.pull-right .small:before,blockquote.pull-right footer:before,blockquote.pull-right small:before{content:''}.blockquote-reverse .small:after,.blockquote-reverse footer:after,.blockquote-reverse small:after,blockquote.pull-right .small:after,blockquote.pull-right footer:after,blockquote.pull-right small:after{content:'\00A0 \2014'}address{font-style:normal;line-height:1.6}code,kbd,pre,samp{font-family:Menlo,Monaco,Consolas,"Courier New",monospace}code{color:#c7254e;background-color:#f9f2f4;border-radius:4px}kbd{color:#fff;background-color:#333;border-radius:3px;box-shadow:inset 0 -1px 0 rgba(0,0,0,.25)}kbd kbd{padding:0;font-size:100%;box-shadow:none}pre{display:block;padding:10.5px;margin:0 0 11px;font-size:13px;line-height:1.6;word-break:break-all;word-wrap:break-word;background-color:#f5f5f5;border:1px solid #ccc;border-radius:4px}.container-fluid:after,.container-fluid:before,.container:after,.container:before,.row:after,.row:before{display:table;content:" "}.container,.container-fluid{margin-right:auto;margin-left:auto}pre code{padding:0;font-size:inherit;color:inherit;white-space:pre-wrap;border-radius:0}.container,.container-fluid{padding-left:15px;padding-right:15px}.pre-scrollable{overflow-y:scroll}@media (min-width:992px){.container{width:970px}}@media (min-width:1200px){.container{width:1170px}}.row{margin-left:-15px;margin-right:-15px}.col-lg-1,.col-lg-10,.col-lg-11,.col-lg-12,.col-lg-2,.col-lg-3,.col-lg-4,.col-lg-5,.col-lg-6,.col-lg-7,.col-lg-8,.col-lg-9,.col-md-1,.col-md-10,.col-md-11,.col-md-12,.col-md-2,.col-md-3,.col-md-4,.col-md-5,.col-md-6,.col-md-7,.col-md-8,.col-md-9,.col-sm-1,.col-sm-10,.col-sm-11,.col-sm-12,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9,.col-xs-1,.col-xs-10,.col-xs-11,.col-xs-12,.col-xs-2,.col-xs-3,.col-xs-4,.col-xs-5,.col-xs-6,.col-xs-7,.col-xs-8,.col-xs-9{position:relative;min-height:1px;padding-left:15px;padding-right:15px}.col-xs-1{width:8.3333333333%}.col-xs-2{width:16.6666666667%}.col-xs-3{width:25%}.col-xs-4{width:33.3333333333%}.col-xs-5{width:41.6666666667%}.col-xs-6{width:50%}.col-xs-7{width:58.3333333333%}.col-xs-8{width:66.6666666667%}.col-xs-9{width:75%}.col-xs-10{width:83.3333333333%}.col-xs-11{width:91.6666666667%}.col-xs-12{width:100%}.col-xs-pull-0{right:auto}.col-xs-pull-1{right:8.3333333333%}.col-xs-pull-2{right:16.6666666667%}.col-xs-pull-3{right:25%}.col-xs-pull-4{right:33.3333333333%}.col-xs-pull-5{right:41.6666666667%}.col-xs-pull-6{right:50%}.col-xs-pull-7{right:58.3333333333%}.col-xs-pull-8{right:66.6666666667%}.col-xs-pull-9{right:75%}.col-xs-pull-10{right:83.3333333333%}.col-xs-pull-11{right:91.6666666667%}.col-xs-pull-12{right:100%}.col-xs-push-0{left:auto}.col-xs-push-1{left:8.3333333333%}.col-xs-push-2{left:16.6666666667%}.col-xs-push-3{left:25%}.col-xs-push-4{left:33.3333333333%}.col-xs-push-5{left:41.6666666667%}.col-xs-push-6{left:50%}.col-xs-push-7{left:58.3333333333%}.col-xs-push-8{left:66.6666666667%}.col-xs-push-9{left:75%}.col-xs-push-10{left:83.3333333333%}.col-xs-push-11{left:91.6666666667%}.col-xs-push-12{left:100%}.col-xs-offset-0{margin-left:0}.col-xs-offset-1{margin-left:8.3333333333%}.col-xs-offset-2{margin-left:16.6666666667%}.col-xs-offset-3{margin-left:25%}.col-xs-offset-4{margin-left:33.3333333333%}.col-xs-offset-5{margin-left:41.6666666667%}.col-xs-offset-6{margin-left:50%}.col-xs-offset-7{margin-left:58.3333333333%}.col-xs-offset-8{margin-left:66.6666666667%}.col-xs-offset-9{margin-left:75%}.col-xs-offset-10{margin-left:83.3333333333%}.col-xs-offset-11{margin-left:91.6666666667%}.col-xs-offset-12{margin-left:100%}@media (min-width:768px){.col-sm-1,.col-sm-10,.col-sm-11,.col-sm-12,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9{float:left}.col-sm-1{width:8.3333333333%}.col-sm-2{width:16.6666666667%}.col-sm-3{width:25%}.col-sm-4{width:33.3333333333%}.col-sm-5{width:41.6666666667%}.col-sm-6{width:50%}.col-sm-7{width:58.3333333333%}.col-sm-8{width:66.6666666667%}.col-sm-9{width:75%}.col-sm-10{width:83.3333333333%}.col-sm-11{width:91.6666666667%}.col-sm-12{width:100%}.col-sm-pull-0{right:auto}.col-sm-pull-1{right:8.3333333333%}.col-sm-pull-2{right:16.6666666667%}.col-sm-pull-3{right:25%}.col-sm-pull-4{right:33.3333333333%}.col-sm-pull-5{right:41.6666666667%}.col-sm-pull-6{right:50%}.col-sm-pull-7{right:58.3333333333%}.col-sm-pull-8{right:66.6666666667%}.col-sm-pull-9{right:75%}.col-sm-pull-10{right:83.3333333333%}.col-sm-pull-11{right:91.6666666667%}.col-sm-pull-12{right:100%}.col-sm-push-0{left:auto}.col-sm-push-1{left:8.3333333333%}.col-sm-push-2{left:16.6666666667%}.col-sm-push-3{left:25%}.col-sm-push-4{left:33.3333333333%}.col-sm-push-5{left:41.6666666667%}.col-sm-push-6{left:50%}.col-sm-push-7{left:58.3333333333%}.col-sm-push-8{left:66.6666666667%}.col-sm-push-9{left:75%}.col-sm-push-10{left:83.3333333333%}.col-sm-push-11{left:91.6666666667%}.col-sm-push-12{left:100%}.col-sm-offset-0{margin-left:0}.col-sm-offset-1{margin-left:8.3333333333%}.col-sm-offset-2{margin-left:16.6666666667%}.col-sm-offset-3{margin-left:25%}.col-sm-offset-4{margin-left:33.3333333333%}.col-sm-offset-5{margin-left:41.6666666667%}.col-sm-offset-6{margin-left:50%}.col-sm-offset-7{margin-left:58.3333333333%}.col-sm-offset-8{margin-left:66.6666666667%}.col-sm-offset-9{margin-left:75%}.col-sm-offset-10{margin-left:83.3333333333%}.col-sm-offset-11{margin-left:91.6666666667%}.col-sm-offset-12{margin-left:100%}}@media (min-width:992px){.col-md-1,.col-md-10,.col-md-11,.col-md-12,.col-md-2,.col-md-3,.col-md-4,.col-md-5,.col-md-6,.col-md-7,.col-md-8,.col-md-9{float:left}.col-md-1{width:8.3333333333%}.col-md-2{width:16.6666666667%}.col-md-3{width:25%}.col-md-4{width:33.3333333333%}.col-md-5{width:41.6666666667%}.col-md-6{width:50%}.col-md-7{width:58.3333333333%}.col-md-8{width:66.6666666667%}.col-md-9{width:75%}.col-md-10{width:83.3333333333%}.col-md-11{width:91.6666666667%}.col-md-12{width:100%}.col-md-pull-0{right:auto}.col-md-pull-1{right:8.3333333333%}.col-md-pull-2{right:16.6666666667%}.col-md-pull-3{right:25%}.col-md-pull-4{right:33.3333333333%}.col-md-pull-5{right:41.6666666667%}.col-md-pull-6{right:50%}.col-md-pull-7{right:58.3333333333%}.col-md-pull-8{right:66.6666666667%}.col-md-pull-9{right:75%}.col-md-pull-10{right:83.3333333333%}.col-md-pull-11{right:91.6666666667%}.col-md-pull-12{right:100%}.col-md-push-0{left:auto}.col-md-push-1{left:8.3333333333%}.col-md-push-2{left:16.6666666667%}.col-md-push-3{left:25%}.col-md-push-4{left:33.3333333333%}.col-md-push-5{left:41.6666666667%}.col-md-push-6{left:50%}.col-md-push-7{left:58.3333333333%}.col-md-push-8{left:66.6666666667%}.col-md-push-9{left:75%}.col-md-push-10{left:83.3333333333%}.col-md-push-11{left:91.6666666667%}.col-md-push-12{left:100%}.col-md-offset-0{margin-left:0}.col-md-offset-1{margin-left:8.3333333333%}.col-md-offset-2{margin-left:16.6666666667%}.col-md-offset-3{margin-left:25%}.col-md-offset-4{margin-left:33.3333333333%}.col-md-offset-5{margin-left:41.6666666667%}.col-md-offset-6{margin-left:50%}.col-md-offset-7{margin-left:58.3333333333%}.col-md-offset-8{margin-left:66.6666666667%}.col-md-offset-9{margin-left:75%}.col-md-offset-10{margin-left:83.3333333333%}.col-md-offset-11{margin-left:91.6666666667%}.col-md-offset-12{margin-left:100%}}@media (min-width:1200px){.col-lg-1,.col-lg-10,.col-lg-11,.col-lg-12,.col-lg-2,.col-lg-3,.col-lg-4,.col-lg-5,.col-lg-6,.col-lg-7,.col-lg-8,.col-lg-9{float:left}.col-lg-1{width:8.3333333333%}.col-lg-2{width:16.6666666667%}.col-lg-3{width:25%}.col-lg-4{width:33.3333333333%}.col-lg-5{width:41.6666666667%}.col-lg-6{width:50%}.col-lg-7{width:58.3333333333%}.col-lg-8{width:66.6666666667%}.col-lg-9{width:75%}.col-lg-10{width:83.3333333333%}.col-lg-11{width:91.6666666667%}.col-lg-12{width:100%}.col-lg-pull-0{right:auto}.col-lg-pull-1{right:8.3333333333%}.col-lg-pull-2{right:16.6666666667%}.col-lg-pull-3{right:25%}.col-lg-pull-4{right:33.3333333333%}.col-lg-pull-5{right:41.6666666667%}.col-lg-pull-6{right:50%}.col-lg-pull-7{right:58.3333333333%}.col-lg-pull-8{right:66.6666666667%}.col-lg-pull-9{right:75%}.col-lg-pull-10{right:83.3333333333%}.col-lg-pull-11{right:91.6666666667%}.col-lg-pull-12{right:100%}.col-lg-push-0{left:auto}.col-lg-push-1{left:8.3333333333%}.col-lg-push-2{left:16.6666666667%}.col-lg-push-3{left:25%}.col-lg-push-4{left:33.3333333333%}.col-lg-push-5{left:41.6666666667%}.col-lg-push-6{left:50%}.col-lg-push-7{left:58.3333333333%}.col-lg-push-8{left:66.6666666667%}.col-lg-push-9{left:75%}.col-lg-push-10{left:83.3333333333%}.col-lg-push-11{left:91.6666666667%}.col-lg-push-12{left:100%}.col-lg-offset-0{margin-left:0}.col-lg-offset-1{margin-left:8.3333333333%}.col-lg-offset-2{margin-left:16.6666666667%}.col-lg-offset-3{margin-left:25%}.col-lg-offset-4{margin-left:33.3333333333%}.col-lg-offset-5{margin-left:41.6666666667%}.col-lg-offset-6{margin-left:50%}.col-lg-offset-7{margin-left:58.3333333333%}.col-lg-offset-8{margin-left:66.6666666667%}.col-lg-offset-9{margin-left:75%}.col-lg-offset-10{margin-left:83.3333333333%}.col-lg-offset-11{margin-left:91.6666666667%}.col-lg-offset-12{margin-left:100%}}caption{padding-top:8px;padding-bottom:8px;color:#777}.table{width:100%;margin-bottom:22px}.table>tbody>tr>td,.table>tbody>tr>th,.table>tfoot>tr>td,.table>tfoot>tr>th,.table>thead>tr>td,.table>thead>tr>th{padding:8px;line-height:1.6;vertical-align:top;border-top:1px solid #ddd}.table>thead>tr>th{vertical-align:bottom;border-bottom:2px solid #ddd}.table>caption+thead>tr:first-child>td,.table>caption+thead>tr:first-child>th,.table>colgroup+thead>tr:first-child>td,.table>colgroup+thead>tr:first-child>th,.table>thead:first-child>tr:first-child>td,.table>thead:first-child>tr:first-child>th{border-top:0}.table>tbody+tbody{border-top:2px solid #ddd}.table .table{background-color:#f5f8fa}.table-condensed>tbody>tr>td,.table-condensed>tbody>tr>th,.table-condensed>tfoot>tr>td,.table-condensed>tfoot>tr>th,.table-condensed>thead>tr>td,.table-condensed>thead>tr>th{padding:5px}.table-bordered,.table-bordered>tbody>tr>td,.table-bordered>tbody>tr>th,.table-bordered>tfoot>tr>td,.table-bordered>tfoot>tr>th,.table-bordered>thead>tr>td,.table-bordered>thead>tr>th{border:1px solid #ddd}.table-bordered>thead>tr>td,.table-bordered>thead>tr>th{border-bottom-width:2px}.table-striped>tbody>tr:nth-of-type(odd){background-color:#f9f9f9}.table-hover>tbody>tr:hover,.table>tbody>tr.active>td,.table>tbody>tr.active>th,.table>tbody>tr>td.active,.table>tbody>tr>th.active,.table>tfoot>tr.active>td,.table>tfoot>tr.active>th,.table>tfoot>tr>td.active,.table>tfoot>tr>th.active,.table>thead>tr.active>td,.table>thead>tr.active>th,.table>thead>tr>td.active,.table>thead>tr>th.active{background-color:#f5f5f5}table col[class*=col-]{position:static;float:none;display:table-column}table td[class*=col-],table th[class*=col-]{position:static;float:none;display:table-cell}.table-hover>tbody>tr.active:hover>td,.table-hover>tbody>tr.active:hover>th,.table-hover>tbody>tr:hover>.active,.table-hover>tbody>tr>td.active:hover,.table-hover>tbody>tr>th.active:hover{background-color:#e8e8e8}.table>tbody>tr.success>td,.table>tbody>tr.success>th,.table>tbody>tr>td.success,.table>tbody>tr>th.success,.table>tfoot>tr.success>td,.table>tfoot>tr.success>th,.table>tfoot>tr>td.success,.table>tfoot>tr>th.success,.table>thead>tr.success>td,.table>thead>tr.success>th,.table>thead>tr>td.success,.table>thead>tr>th.success{background-color:#dff0d8}.table-hover>tbody>tr.success:hover>td,.table-hover>tbody>tr.success:hover>th,.table-hover>tbody>tr:hover>.success,.table-hover>tbody>tr>td.success:hover,.table-hover>tbody>tr>th.success:hover{background-color:#d0e9c6}.table>tbody>tr.info>td,.table>tbody>tr.info>th,.table>tbody>tr>td.info,.table>tbody>tr>th.info,.table>tfoot>tr.info>td,.table>tfoot>tr.info>th,.table>tfoot>tr>td.info,.table>tfoot>tr>th.info,.table>thead>tr.info>td,.table>thead>tr.info>th,.table>thead>tr>td.info,.table>thead>tr>th.info{background-color:#d9edf7}.table-hover>tbody>tr.info:hover>td,.table-hover>tbody>tr.info:hover>th,.table-hover>tbody>tr:hover>.info,.table-hover>tbody>tr>td.info:hover,.table-hover>tbody>tr>th.info:hover{background-color:#c4e3f3}.table>tbody>tr.warning>td,.table>tbody>tr.warning>th,.table>tbody>tr>td.warning,.table>tbody>tr>th.warning,.table>tfoot>tr.warning>td,.table>tfoot>tr.warning>th,.table>tfoot>tr>td.warning,.table>tfoot>tr>th.warning,.table>thead>tr.warning>td,.table>thead>tr.warning>th,.table>thead>tr>td.warning,.table>thead>tr>th.warning{background-color:#fcf8e3}.table-hover>tbody>tr.warning:hover>td,.table-hover>tbody>tr.warning:hover>th,.table-hover>tbody>tr:hover>.warning,.table-hover>tbody>tr>td.warning:hover,.table-hover>tbody>tr>th.warning:hover{background-color:#faf2cc}.table>tbody>tr.danger>td,.table>tbody>tr.danger>th,.table>tbody>tr>td.danger,.table>tbody>tr>th.danger,.table>tfoot>tr.danger>td,.table>tfoot>tr.danger>th,.table>tfoot>tr>td.danger,.table>tfoot>tr>th.danger,.table>thead>tr.danger>td,.table>thead>tr.danger>th,.table>thead>tr>td.danger,.table>thead>tr>th.danger{background-color:#f2dede}.table-hover>tbody>tr.danger:hover>td,.table-hover>tbody>tr.danger:hover>th,.table-hover>tbody>tr:hover>.danger,.table-hover>tbody>tr>td.danger:hover,.table-hover>tbody>tr>th.danger:hover{background-color:#ebcccc}.table-responsive{overflow-x:auto;min-height:.01%}@media screen and (max-width:767px){.table-responsive{width:100%;margin-bottom:16.5px;overflow-y:hidden;-ms-overflow-style:-ms-autohiding-scrollbar;border:1px solid #ddd}.table-responsive>.table{margin-bottom:0}.table-responsive>.table>tbody>tr>td,.table-responsive>.table>tbody>tr>th,.table-responsive>.table>tfoot>tr>td,.table-responsive>.table>tfoot>tr>th,.table-responsive>.table>thead>tr>td,.table-responsive>.table>thead>tr>th{white-space:nowrap}.table-responsive>.table-bordered{border:0}.table-responsive>.table-bordered>tbody>tr>td:first-child,.table-responsive>.table-bordered>tbody>tr>th:first-child,.table-responsive>.table-bordered>tfoot>tr>td:first-child,.table-responsive>.table-bordered>tfoot>tr>th:first-child,.table-responsive>.table-bordered>thead>tr>td:first-child,.table-responsive>.table-bordered>thead>tr>th:first-child{border-left:0}.table-responsive>.table-bordered>tbody>tr>td:last-child,.table-responsive>.table-bordered>tbody>tr>th:last-child,.table-responsive>.table-bordered>tfoot>tr>td:last-child,.table-responsive>.table-bordered>tfoot>tr>th:last-child,.table-responsive>.table-bordered>thead>tr>td:last-child,.table-responsive>.table-bordered>thead>tr>th:last-child{border-right:0}.table-responsive>.table-bordered>tbody>tr:last-child>td,.table-responsive>.table-bordered>tbody>tr:last-child>th,.table-responsive>.table-bordered>tfoot>tr:last-child>td,.table-responsive>.table-bordered>tfoot>tr:last-child>th{border-bottom:0}}fieldset,legend{padding:0;border:0}fieldset{margin:0;min-width:0}legend{display:block;width:100%;margin-bottom:22px;font-size:21px;line-height:inherit;border-bottom:1px solid #e5e5e5}label{display:inline-block;margin-bottom:5px}input[type=search]{box-sizing:border-box;-webkit-appearance:none}input[type=checkbox],input[type=radio]{margin:4px 0 0;margin-top:1px\9;line-height:normal}.form-control,output{font-size:14px;line-height:1.6;color:#555;display:block}input[type=file]{display:block}input[type=range]{display:block;width:100%}select[multiple],select[size]{height:auto}input[type=file]:focus,input[type=checkbox]:focus,input[type=radio]:focus{outline:-webkit-focus-ring-color auto 5px;outline-offset:-2px}output{padding-top:7px}.form-control{width:100%;height:36px;padding:6px 12px;background-color:#fff;border:1px solid #ccd0d2;border-radius:4px;box-shadow:inset 0 1px 1px rgba(0,0,0,.075);-webkit-transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s;transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s}.form-control:focus{border-color:#98cbe8;outline:0;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(152,203,232,.6)}.form-control::-moz-placeholder{color:#b1b7ba;opacity:1}.form-control:-ms-input-placeholder{color:#b1b7ba}.form-control::-webkit-input-placeholder{color:#b1b7ba}.has-success .checkbox,.has-success .checkbox-inline,.has-success .control-label,.has-success .form-control-feedback,.has-success .help-block,.has-success .radio,.has-success .radio-inline,.has-success.checkbox label,.has-success.checkbox-inline label,.has-success.radio label,.has-success.radio-inline label{color:#3c763d}.form-control::-ms-expand{border:0;background-color:transparent}.form-control[disabled],.form-control[readonly],fieldset[disabled] .form-control{background-color:#eee;opacity:1}.form-control[disabled],fieldset[disabled] .form-control{cursor:not-allowed}textarea.form-control{height:auto}@media screen and (-webkit-min-device-pixel-ratio:0){input[type=date].form-control,input[type=time].form-control,input[type=datetime-local].form-control,input[type=month].form-control{line-height:36px}.input-group-sm input[type=date],.input-group-sm input[type=time],.input-group-sm input[type=datetime-local],.input-group-sm input[type=month],.input-group-sm>.input-group-btn>input[type=date].btn,.input-group-sm>.input-group-btn>input[type=time].btn,.input-group-sm>.input-group-btn>input[type=datetime-local].btn,.input-group-sm>.input-group-btn>input[type=month].btn,.input-group-sm>input[type=date].form-control,.input-group-sm>input[type=date].input-group-addon,.input-group-sm>input[type=time].form-control,.input-group-sm>input[type=time].input-group-addon,.input-group-sm>input[type=datetime-local].form-control,.input-group-sm>input[type=datetime-local].input-group-addon,.input-group-sm>input[type=month].form-control,.input-group-sm>input[type=month].input-group-addon,input[type=date].input-sm,input[type=time].input-sm,input[type=datetime-local].input-sm,input[type=month].input-sm{line-height:30px}.input-group-lg input[type=date],.input-group-lg input[type=time],.input-group-lg input[type=datetime-local],.input-group-lg input[type=month],.input-group-lg>.input-group-btn>input[type=date].btn,.input-group-lg>.input-group-btn>input[type=time].btn,.input-group-lg>.input-group-btn>input[type=datetime-local].btn,.input-group-lg>.input-group-btn>input[type=month].btn,.input-group-lg>input[type=date].form-control,.input-group-lg>input[type=date].input-group-addon,.input-group-lg>input[type=time].form-control,.input-group-lg>input[type=time].input-group-addon,.input-group-lg>input[type=datetime-local].form-control,.input-group-lg>input[type=datetime-local].input-group-addon,.input-group-lg>input[type=month].form-control,.input-group-lg>input[type=month].input-group-addon,input[type=date].input-lg,input[type=time].input-lg,input[type=datetime-local].input-lg,input[type=month].input-lg{line-height:46px}}.form-group{margin-bottom:15px}.checkbox,.radio{position:relative;display:block;margin-top:10px;margin-bottom:10px}.checkbox label,.radio label{min-height:22px;padding-left:20px;margin-bottom:0;font-weight:400;cursor:pointer}.checkbox input[type=checkbox],.checkbox-inline input[type=checkbox],.radio input[type=radio],.radio-inline input[type=radio]{position:absolute;margin-left:-20px;margin-top:4px\9}.checkbox+.checkbox,.radio+.radio{margin-top:-5px}.checkbox-inline,.radio-inline{position:relative;display:inline-block;padding-left:20px;margin-bottom:0;vertical-align:middle;font-weight:400;cursor:pointer}.checkbox-inline+.checkbox-inline,.radio-inline+.radio-inline{margin-top:0;margin-left:10px}.checkbox-inline.disabled,.checkbox.disabled label,.radio-inline.disabled,.radio.disabled label,fieldset[disabled] .checkbox label,fieldset[disabled] .checkbox-inline,fieldset[disabled] .radio label,fieldset[disabled] .radio-inline,fieldset[disabled] input[type=checkbox],fieldset[disabled] input[type=radio],input[type=checkbox].disabled,input[type=checkbox][disabled],input[type=radio].disabled,input[type=radio][disabled]{cursor:not-allowed}.form-control-static{padding-top:7px;padding-bottom:7px;margin-bottom:0;min-height:36px}.form-control-static.input-lg,.form-control-static.input-sm,.input-group-lg>.form-control-static.form-control,.input-group-lg>.form-control-static.input-group-addon,.input-group-lg>.input-group-btn>.form-control-static.btn,.input-group-sm>.form-control-static.form-control,.input-group-sm>.form-control-static.input-group-addon,.input-group-sm>.input-group-btn>.form-control-static.btn{padding-left:0;padding-right:0}.input-group-sm>.form-control,.input-group-sm>.input-group-addon,.input-group-sm>.input-group-btn>.btn,.input-sm{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}.input-group-sm>.input-group-btn>select.btn,.input-group-sm>select.form-control,.input-group-sm>select.input-group-addon,select.input-sm{height:30px;line-height:30px}.input-group-sm>.input-group-btn>select[multiple].btn,.input-group-sm>.input-group-btn>textarea.btn,.input-group-sm>select[multiple].form-control,.input-group-sm>select[multiple].input-group-addon,.input-group-sm>textarea.form-control,.input-group-sm>textarea.input-group-addon,select[multiple].input-sm,textarea.input-sm{height:auto}.form-group-sm .form-control{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}.form-group-sm select.form-control{height:30px;line-height:30px}.form-group-sm select[multiple].form-control,.form-group-sm textarea.form-control{height:auto}.form-group-sm .form-control-static{height:30px;min-height:34px;padding:6px 10px;font-size:12px;line-height:1.5}.input-group-lg>.form-control,.input-group-lg>.input-group-addon,.input-group-lg>.input-group-btn>.btn,.input-lg{height:46px;padding:10px 16px;font-size:18px;line-height:1.3333333;border-radius:6px}.input-group-lg>.input-group-btn>select.btn,.input-group-lg>select.form-control,.input-group-lg>select.input-group-addon,select.input-lg{height:46px;line-height:46px}.input-group-lg>.input-group-btn>select[multiple].btn,.input-group-lg>.input-group-btn>textarea.btn,.input-group-lg>select[multiple].form-control,.input-group-lg>select[multiple].input-group-addon,.input-group-lg>textarea.form-control,.input-group-lg>textarea.input-group-addon,select[multiple].input-lg,textarea.input-lg{height:auto}.form-group-lg .form-control{height:46px;padding:10px 16px;font-size:18px;line-height:1.3333333;border-radius:6px}.form-group-lg select.form-control{height:46px;line-height:46px}.form-group-lg select[multiple].form-control,.form-group-lg textarea.form-control{height:auto}.form-group-lg .form-control-static{height:46px;min-height:40px;padding:11px 16px;font-size:18px;line-height:1.3333333}.has-feedback{position:relative}.has-feedback .form-control{padding-right:45px}.form-control-feedback{position:absolute;top:0;right:0;z-index:2;display:block;width:36px;height:36px;line-height:36px;text-align:center;pointer-events:none}.collapsing,.dropdown,.dropup{position:relative}.form-group-lg .form-control+.form-control-feedback,.input-group-lg+.form-control-feedback,.input-group-lg>.form-control+.form-control-feedback,.input-group-lg>.input-group-addon+.form-control-feedback,.input-group-lg>.input-group-btn>.btn+.form-control-feedback,.input-lg+.form-control-feedback{width:46px;height:46px;line-height:46px}.form-group-sm .form-control+.form-control-feedback,.input-group-sm+.form-control-feedback,.input-group-sm>.form-control+.form-control-feedback,.input-group-sm>.input-group-addon+.form-control-feedback,.input-group-sm>.input-group-btn>.btn+.form-control-feedback,.input-sm+.form-control-feedback{width:30px;height:30px;line-height:30px}.has-success .form-control{border-color:#3c763d;box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}.has-success .form-control:focus{border-color:#2b542c;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #67b168}.has-success .input-group-addon{color:#3c763d;border-color:#3c763d;background-color:#dff0d8}.has-warning .checkbox,.has-warning .checkbox-inline,.has-warning .control-label,.has-warning .form-control-feedback,.has-warning .help-block,.has-warning .radio,.has-warning .radio-inline,.has-warning.checkbox label,.has-warning.checkbox-inline label,.has-warning.radio label,.has-warning.radio-inline label{color:#8a6d3b}.has-warning .form-control{border-color:#8a6d3b;box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}.has-warning .form-control:focus{border-color:#66512c;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #c0a16b}.has-warning .input-group-addon{color:#8a6d3b;border-color:#8a6d3b;background-color:#fcf8e3}.has-error .checkbox,.has-error .checkbox-inline,.has-error .control-label,.has-error .form-control-feedback,.has-error .help-block,.has-error .radio,.has-error .radio-inline,.has-error.checkbox label,.has-error.checkbox-inline label,.has-error.radio label,.has-error.radio-inline label{color:#a94442}.has-error .form-control{border-color:#a94442;box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}.has-error .form-control:focus{border-color:#843534;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #ce8483}.has-error .input-group-addon{color:#a94442;border-color:#a94442;background-color:#f2dede}.has-feedback label~.form-control-feedback{top:27px}.has-feedback label.sr-only~.form-control-feedback{top:0}.help-block{display:block;margin-top:5px;margin-bottom:10px;color:#a4aaae}@media (min-width:768px){.form-inline .form-control-static,.form-inline .form-group{display:inline-block}.form-inline .control-label,.form-inline .form-group{margin-bottom:0;vertical-align:middle}.form-inline .form-control{display:inline-block;width:auto;vertical-align:middle}.form-inline .input-group{display:inline-table;vertical-align:middle}.form-inline .input-group .form-control,.form-inline .input-group .input-group-addon,.form-inline .input-group .input-group-btn{width:auto}.form-inline .input-group>.form-control{width:100%}.form-inline .checkbox,.form-inline .radio{display:inline-block;margin-top:0;margin-bottom:0;vertical-align:middle}.form-inline .checkbox label,.form-inline .radio label{padding-left:0}.form-inline .checkbox input[type=checkbox],.form-inline .radio input[type=radio]{position:relative;margin-left:0}.form-inline .has-feedback .form-control-feedback{top:0}.form-horizontal .control-label{text-align:right;margin-bottom:0;padding-top:7px}}.form-horizontal .checkbox,.form-horizontal .checkbox-inline,.form-horizontal .radio,.form-horizontal .radio-inline{margin-top:0;margin-bottom:0;padding-top:7px}.form-horizontal .checkbox,.form-horizontal .radio{min-height:29px}.form-horizontal .form-group{margin-left:-15px;margin-right:-15px}.form-horizontal .form-group:after,.form-horizontal .form-group:before{content:" ";display:table}.form-horizontal .has-feedback .form-control-feedback{right:15px}@media (min-width:768px){.form-horizontal .form-group-lg .control-label{padding-top:11px;font-size:18px}.form-horizontal .form-group-sm .control-label{padding-top:6px;font-size:12px}}.btn{display:inline-block;margin-bottom:0;font-weight:400;text-align:center;vertical-align:middle;touch-action:manipulation;cursor:pointer;border:1px solid transparent;white-space:nowrap;padding:6px 12px;font-size:14px;line-height:1.6;border-radius:4px;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.btn.active.focus,.btn.active:focus,.btn.focus,.btn:active.focus,.btn:active:focus,.btn:focus{outline:-webkit-focus-ring-color auto 5px;outline-offset:-2px}.btn.focus,.btn:focus,.btn:hover{color:#636b6f;text-decoration:none}.btn.active,.btn:active{outline:0;box-shadow:inset 0 3px 5px rgba(0,0,0,.125)}.btn.disabled,.btn[disabled],fieldset[disabled] .btn{cursor:not-allowed;opacity:.65;filter:alpha(opacity=65);box-shadow:none}a.btn.disabled,fieldset[disabled] a.btn{pointer-events:none}.btn-default{color:#636b6f;background-color:#fff;border-color:#ccc}.btn-default.focus,.btn-default:focus{color:#636b6f;background-color:#e6e6e6;border-color:#8c8c8c}.btn-default.active,.btn-default:active,.btn-default:hover,.open>.btn-default.dropdown-toggle{color:#636b6f;background-color:#e6e6e6;border-color:#adadad}.btn-default.active.focus,.btn-default.active:focus,.btn-default.active:hover,.btn-default:active.focus,.btn-default:active:focus,.btn-default:active:hover,.open>.btn-default.dropdown-toggle.focus,.open>.btn-default.dropdown-toggle:focus,.open>.btn-default.dropdown-toggle:hover{color:#636b6f;background-color:#d4d4d4;border-color:#8c8c8c}.btn-default.disabled.focus,.btn-default.disabled:focus,.btn-default.disabled:hover,.btn-default[disabled].focus,.btn-default[disabled]:focus,.btn-default[disabled]:hover,fieldset[disabled] .btn-default.focus,fieldset[disabled] .btn-default:focus,fieldset[disabled] .btn-default:hover{background-color:#fff;border-color:#ccc}.btn-default .badge{color:#fff;background-color:#636b6f}.btn-primary{color:#fff;background-color:#3097D1;border-color:#2a88bd}.btn-primary.focus,.btn-primary:focus{color:#fff;background-color:#2579a9;border-color:#133d55}.btn-primary.active,.btn-primary:active,.btn-primary:hover,.open>.btn-primary.dropdown-toggle{color:#fff;background-color:#2579a9;border-color:#1f648b}.btn-primary.active.focus,.btn-primary.active:focus,.btn-primary.active:hover,.btn-primary:active.focus,.btn-primary:active:focus,.btn-primary:active:hover,.open>.btn-primary.dropdown-toggle.focus,.open>.btn-primary.dropdown-toggle:focus,.open>.btn-primary.dropdown-toggle:hover{color:#fff;background-color:#1f648b;border-color:#133d55}.btn-primary.disabled.focus,.btn-primary.disabled:focus,.btn-primary.disabled:hover,.btn-primary[disabled].focus,.btn-primary[disabled]:focus,.btn-primary[disabled]:hover,fieldset[disabled] .btn-primary.focus,fieldset[disabled] .btn-primary:focus,fieldset[disabled] .btn-primary:hover{background-color:#3097D1;border-color:#2a88bd}.btn-primary .badge{color:#3097D1;background-color:#fff}.btn-success{color:#fff;background-color:#2ab27b;border-color:#259d6d}.btn-success.focus,.btn-success:focus{color:#fff;background-color:#20895e;border-color:#0d3625}.btn-success.active,.btn-success:active,.btn-success:hover,.open>.btn-success.dropdown-toggle{color:#fff;background-color:#20895e;border-color:#196c4b}.btn-success.active.focus,.btn-success.active:focus,.btn-success.active:hover,.btn-success:active.focus,.btn-success:active:focus,.btn-success:active:hover,.open>.btn-success.dropdown-toggle.focus,.open>.btn-success.dropdown-toggle:focus,.open>.btn-success.dropdown-toggle:hover{color:#fff;background-color:#196c4b;border-color:#0d3625}.btn-success.active,.btn-success:active,.open>.btn-success.dropdown-toggle{background-image:none}.btn-success.disabled.focus,.btn-success.disabled:focus,.btn-success.disabled:hover,.btn-success[disabled].focus,.btn-success[disabled]:focus,.btn-success[disabled]:hover,fieldset[disabled] .btn-success.focus,fieldset[disabled] .btn-success:focus,fieldset[disabled] .btn-success:hover{background-color:#2ab27b;border-color:#259d6d}.btn-success .badge{color:#2ab27b;background-color:#fff}.btn-info{color:#fff;background-color:#8eb4cb;border-color:#7da8c3}.btn-info.focus,.btn-info:focus{color:#fff;background-color:#6b9dbb;border-color:#3d6983}.btn-info.active,.btn-info:active,.btn-info:hover,.open>.btn-info.dropdown-toggle{color:#fff;background-color:#6b9dbb;border-color:#538db0}.btn-info.active.focus,.btn-info.active:focus,.btn-info.active:hover,.btn-info:active.focus,.btn-info:active:focus,.btn-info:active:hover,.open>.btn-info.dropdown-toggle.focus,.open>.btn-info.dropdown-toggle:focus,.open>.btn-info.dropdown-toggle:hover{color:#fff;background-color:#538db0;border-color:#3d6983}.btn-info.disabled.focus,.btn-info.disabled:focus,.btn-info.disabled:hover,.btn-info[disabled].focus,.btn-info[disabled]:focus,.btn-info[disabled]:hover,fieldset[disabled] .btn-info.focus,fieldset[disabled] .btn-info:focus,fieldset[disabled] .btn-info:hover{background-color:#8eb4cb;border-color:#7da8c3}.btn-info .badge{color:#8eb4cb;background-color:#fff}.btn-warning{color:#fff;background-color:#cbb956;border-color:#c5b143}.btn-warning.focus,.btn-warning:focus{color:#fff;background-color:#b6a338;border-color:#685d20}.btn-warning.active,.btn-warning:active,.btn-warning:hover,.open>.btn-warning.dropdown-toggle{color:#fff;background-color:#b6a338;border-color:#9b8a30}.btn-warning.active.focus,.btn-warning.active:focus,.btn-warning.active:hover,.btn-warning:active.focus,.btn-warning:active:focus,.btn-warning:active:hover,.open>.btn-warning.dropdown-toggle.focus,.open>.btn-warning.dropdown-toggle:focus,.open>.btn-warning.dropdown-toggle:hover{color:#fff;background-color:#9b8a30;border-color:#685d20}.btn-warning.disabled.focus,.btn-warning.disabled:focus,.btn-warning.disabled:hover,.btn-warning[disabled].focus,.btn-warning[disabled]:focus,.btn-warning[disabled]:hover,fieldset[disabled] .btn-warning.focus,fieldset[disabled] .btn-warning:focus,fieldset[disabled] .btn-warning:hover{background-color:#cbb956;border-color:#c5b143}.btn-warning .badge{color:#cbb956;background-color:#fff}.btn-danger{color:#fff;background-color:#bf5329;border-color:#aa4a24}.btn-danger.focus,.btn-danger:focus{color:#fff;background-color:#954120;border-color:#411c0e}.btn-danger.active,.btn-danger:active,.btn-danger:hover,.open>.btn-danger.dropdown-toggle{color:#fff;background-color:#954120;border-color:#78341a}.btn-danger.active.focus,.btn-danger.active:focus,.btn-danger.active:hover,.btn-danger:active.focus,.btn-danger:active:focus,.btn-danger:active:hover,.open>.btn-danger.dropdown-toggle.focus,.open>.btn-danger.dropdown-toggle:focus,.open>.btn-danger.dropdown-toggle:hover{color:#fff;background-color:#78341a;border-color:#411c0e}.btn-danger.disabled.focus,.btn-danger.disabled:focus,.btn-danger.disabled:hover,.btn-danger[disabled].focus,.btn-danger[disabled]:focus,.btn-danger[disabled]:hover,fieldset[disabled] .btn-danger.focus,fieldset[disabled] .btn-danger:focus,fieldset[disabled] .btn-danger:hover{background-color:#bf5329;border-color:#aa4a24}.btn-danger .badge{color:#bf5329;background-color:#fff}.btn-link{color:#3097D1;font-weight:400;border-radius:0}.btn-link,.btn-link.active,.btn-link:active,.btn-link[disabled],fieldset[disabled] .btn-link{background-color:transparent;box-shadow:none}.btn-link,.btn-link:active,.btn-link:focus,.btn-link:hover{border-color:transparent}.btn-link:focus,.btn-link:hover{color:#216a94;text-decoration:underline;background-color:transparent}.btn-link[disabled]:focus,.btn-link[disabled]:hover,fieldset[disabled] .btn-link:focus,fieldset[disabled] .btn-link:hover{color:#777;text-decoration:none}.btn-group-lg>.btn,.btn-lg{padding:10px 16px;font-size:18px;line-height:1.3333333;border-radius:6px}.btn-group-sm>.btn,.btn-sm{padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}.btn-group-xs>.btn,.btn-xs{padding:1px 5px;font-size:12px;line-height:1.5;border-radius:3px}.btn-block{display:block;width:100%}.btn-block+.btn-block{margin-top:5px}input[type=button].btn-block,input[type=reset].btn-block,input[type=submit].btn-block{width:100%}.fade{opacity:0;-webkit-transition:opacity .15s linear;transition:opacity .15s linear}.fade.in{opacity:1}.collapse{display:none}.collapse.in{display:block}tr.collapse.in{display:table-row}tbody.collapse.in{display:table-row-group}.collapsing{height:0;overflow:hidden;-webkit-transition-property:height,visibility;transition-property:height,visibility;-webkit-transition-duration:.35s;transition-duration:.35s;-webkit-transition-timing-function:ease;transition-timing-function:ease}.caret{display:inline-block;width:0;height:0;margin-left:2px;vertical-align:middle;border-top:4px dashed;border-top:4px solid\9;border-right:4px solid transparent;border-left:4px solid transparent}.dropdown-toggle:focus{outline:0}.dropdown-menu{position:absolute;top:100%;left:0;z-index:1000;display:none;min-width:160px;padding:5px 0;margin:2px 0 0;list-style:none;font-size:14px;text-align:left;background-color:#fff;border:1px solid #ccc;border:1px solid rgba(0,0,0,.15);border-radius:4px;box-shadow:0 6px 12px rgba(0,0,0,.175);background-clip:padding-box}.dropdown-menu-right,.dropdown-menu.pull-right{left:auto;right:0}.dropdown-header,.dropdown-menu>li>a{display:block;padding:3px 20px;line-height:1.6;white-space:nowrap}.btn-group>.btn-group:first-child:not(:last-child)>.btn:last-child,.btn-group>.btn-group:first-child:not(:last-child)>.dropdown-toggle,.btn-group>.btn:first-child:not(:last-child):not(.dropdown-toggle){border-bottom-right-radius:0;border-top-right-radius:0}.btn-group>.btn-group:last-child:not(:first-child)>.btn:first-child,.btn-group>.btn:last-child:not(:first-child),.btn-group>.dropdown-toggle:not(:first-child){border-bottom-left-radius:0;border-top-left-radius:0}.btn-group-vertical>.btn:not(:first-child):not(:last-child),.btn-group>.btn-group:not(:first-child):not(:last-child)>.btn,.btn-group>.btn:not(:first-child):not(:last-child):not(.dropdown-toggle){border-radius:0}.dropdown-menu .divider{height:1px;margin:10px 0;overflow:hidden;background-color:#e5e5e5}.dropdown-menu>li>a{font-weight:400;color:#333}.dropdown-menu>li>a:focus,.dropdown-menu>li>a:hover{text-decoration:none;color:#262626;background-color:#f5f5f5}.dropdown-menu>.active>a,.dropdown-menu>.active>a:focus,.dropdown-menu>.active>a:hover{color:#fff;text-decoration:none;outline:0;background-color:#3097D1}.dropdown-menu>.disabled>a,.dropdown-menu>.disabled>a:focus,.dropdown-menu>.disabled>a:hover{color:#777}.dropdown-menu>.disabled>a:focus,.dropdown-menu>.disabled>a:hover{text-decoration:none;background-color:transparent;filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);cursor:not-allowed}.open>.dropdown-menu{display:block}.open>a{outline:0}.dropdown-menu-left{left:0;right:auto}.dropdown-header{font-size:12px;color:#777}.dropdown-backdrop{position:fixed;left:0;right:0;bottom:0;top:0;z-index:990}.pull-right>.dropdown-menu{right:0;left:auto}.dropup .caret,.navbar-fixed-bottom .dropdown .caret{border-top:0;border-bottom:4px dashed;border-bottom:4px solid\9;content:""}.dropup .dropdown-menu,.navbar-fixed-bottom .dropdown .dropdown-menu{top:auto;bottom:100%;margin-bottom:2px}@media (min-width:768px){.navbar-right .dropdown-menu{right:0;left:auto}.navbar-right .dropdown-menu-left{left:0;right:auto}}.btn-group,.btn-group-vertical{position:relative;display:inline-block;vertical-align:middle}.btn-group-vertical>.btn,.btn-group>.btn{position:relative;float:left}.btn-group-vertical>.btn.active,.btn-group-vertical>.btn:active,.btn-group-vertical>.btn:focus,.btn-group-vertical>.btn:hover,.btn-group>.btn.active,.btn-group>.btn:active,.btn-group>.btn:focus,.btn-group>.btn:hover{z-index:2}.btn-group .btn+.btn,.btn-group .btn+.btn-group,.btn-group .btn-group+.btn,.btn-group .btn-group+.btn-group{margin-left:-1px}.btn-toolbar{margin-left:-5px}.btn-toolbar:after,.btn-toolbar:before{content:" ";display:table}.btn-toolbar>.btn,.btn-toolbar>.btn-group,.btn-toolbar>.input-group{margin-left:5px}.btn .caret,.btn-group>.btn:first-child{margin-left:0}.btn-group .dropdown-toggle:active,.btn-group.open .dropdown-toggle{outline:0}.btn-group>.btn+.dropdown-toggle{padding-left:8px;padding-right:8px}.btn-group-lg.btn-group>.btn+.dropdown-toggle,.btn-group>.btn-lg+.dropdown-toggle{padding-left:12px;padding-right:12px}.btn-group.open .dropdown-toggle{box-shadow:inset 0 3px 5px rgba(0,0,0,.125)}.btn-group.open .dropdown-toggle.btn-link{box-shadow:none}.btn-group-lg>.btn .caret,.btn-lg .caret{border-width:5px 5px 0}.dropup .btn-group-lg>.btn .caret,.dropup .btn-lg .caret{border-width:0 5px 5px}.btn-group-vertical>.btn,.btn-group-vertical>.btn-group,.btn-group-vertical>.btn-group>.btn{display:block;float:none;width:100%;max-width:100%}.btn-group-vertical>.btn-group:after,.btn-group-vertical>.btn-group:before{content:" ";display:table}.btn-group-vertical>.btn-group>.btn{float:none}.btn-group-vertical>.btn+.btn,.btn-group-vertical>.btn+.btn-group,.btn-group-vertical>.btn-group+.btn,.btn-group-vertical>.btn-group+.btn-group{margin-top:-1px;margin-left:0}.btn-group-vertical>.btn:first-child:not(:last-child){border-radius:4px 4px 0 0}.btn-group-vertical>.btn:last-child:not(:first-child){border-radius:0 0 4px 4px}.btn-group-vertical>.btn-group:not(:first-child):not(:last-child)>.btn,.input-group .form-control:not(:first-child):not(:last-child),.input-group-addon:not(:first-child):not(:last-child),.input-group-btn:not(:first-child):not(:last-child){border-radius:0}.btn-group-vertical>.btn-group:first-child:not(:last-child)>.btn:last-child,.btn-group-vertical>.btn-group:first-child:not(:last-child)>.dropdown-toggle{border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn-group:last-child:not(:first-child)>.btn:first-child{border-top-right-radius:0;border-top-left-radius:0}.btn-group-justified{display:table;width:100%;table-layout:fixed;border-collapse:separate}.btn-group-justified>.btn,.btn-group-justified>.btn-group{float:none;display:table-cell;width:1%}.btn-group-justified>.btn-group .btn{width:100%}.btn-group-justified>.btn-group .dropdown-menu{left:auto}[data-toggle=buttons]>.btn input[type=checkbox],[data-toggle=buttons]>.btn input[type=radio],[data-toggle=buttons]>.btn-group>.btn input[type=checkbox],[data-toggle=buttons]>.btn-group>.btn input[type=radio]{position:absolute;clip:rect(0,0,0,0);pointer-events:none}.input-group,.input-group-btn,.input-group-btn>.btn{position:relative}.input-group{display:table;border-collapse:separate}.input-group[class*=col-]{float:none;padding-left:0;padding-right:0}.input-group .form-control{position:relative;z-index:2;float:left;width:100%;margin-bottom:0}.input-group .form-control:focus{z-index:3}.input-group .form-control,.input-group-addon,.input-group-btn{display:table-cell}.input-group-addon,.input-group-btn{width:1%;white-space:nowrap;vertical-align:middle}.input-group-addon{padding:6px 12px;font-size:14px;font-weight:400;line-height:1;color:#555;text-align:center;background-color:#eee;border:1px solid #ccd0d2;border-radius:4px}.input-group-addon.input-sm,.input-group-sm>.input-group-addon,.input-group-sm>.input-group-btn>.input-group-addon.btn{padding:5px 10px;font-size:12px;border-radius:3px}.input-group-addon.input-lg,.input-group-lg>.input-group-addon,.input-group-lg>.input-group-btn>.input-group-addon.btn{padding:10px 16px;font-size:18px;border-radius:6px}.input-group-addon input[type=checkbox],.input-group-addon input[type=radio]{margin-top:0}.input-group .form-control:first-child,.input-group-addon:first-child,.input-group-btn:first-child>.btn,.input-group-btn:first-child>.btn-group>.btn,.input-group-btn:first-child>.dropdown-toggle,.input-group-btn:last-child>.btn-group:not(:last-child)>.btn,.input-group-btn:last-child>.btn:not(:last-child):not(.dropdown-toggle){border-bottom-right-radius:0;border-top-right-radius:0}.input-group-addon:first-child{border-right:0}.input-group .form-control:last-child,.input-group-addon:last-child,.input-group-btn:first-child>.btn-group:not(:first-child)>.btn,.input-group-btn:first-child>.btn:not(:first-child),.input-group-btn:last-child>.btn,.input-group-btn:last-child>.btn-group>.btn,.input-group-btn:last-child>.dropdown-toggle{border-bottom-left-radius:0;border-top-left-radius:0}.input-group-addon:last-child{border-left:0}.input-group-btn{font-size:0;white-space:nowrap}.input-group-btn>.btn+.btn{margin-left:-1px}.input-group-btn>.btn:active,.input-group-btn>.btn:focus,.input-group-btn>.btn:hover{z-index:2}.input-group-btn:first-child>.btn,.input-group-btn:first-child>.btn-group{margin-right:-1px}.input-group-btn:last-child>.btn,.input-group-btn:last-child>.btn-group{z-index:2;margin-left:-1px}.nav{margin-bottom:0;padding-left:0;list-style:none}.nav:after,.nav:before{content:" ";display:table}.nav>li,.nav>li>a{display:block;position:relative}.nav:after{clear:both}.nav>li>a{padding:10px 15px}.nav>li>a:focus,.nav>li>a:hover{text-decoration:none;background-color:#eee}.nav>li.disabled>a{color:#777}.nav>li.disabled>a:focus,.nav>li.disabled>a:hover{color:#777;text-decoration:none;background-color:transparent;cursor:not-allowed}.nav .open>a,.nav .open>a:focus,.nav .open>a:hover{background-color:#eee;border-color:#3097D1}.nav .nav-divider{height:1px;margin:10px 0;overflow:hidden;background-color:#e5e5e5}.nav>li>a>img{max-width:none}.nav-tabs{border-bottom:1px solid #ddd}.nav-tabs>li{float:left;margin-bottom:-1px}.nav-tabs>li>a{margin-right:2px;line-height:1.6;border:1px solid transparent;border-radius:4px 4px 0 0}.nav-tabs>li>a:hover{border-color:#eee #eee #ddd}.nav-tabs>li.active>a,.nav-tabs>li.active>a:focus,.nav-tabs>li.active>a:hover{color:#555;background-color:#f5f8fa;border:1px solid #ddd;border-bottom-color:transparent;cursor:default}.nav-pills>li{float:left}.nav-justified>li,.nav-stacked>li,.nav-tabs.nav-justified>li{float:none}.nav-pills>li>a{border-radius:4px}.nav-pills>li+li{margin-left:2px}.nav-pills>li.active>a,.nav-pills>li.active>a:focus,.nav-pills>li.active>a:hover{color:#fff;background-color:#3097D1}.nav-stacked>li+li{margin-top:2px;margin-left:0}.nav-justified,.nav-tabs.nav-justified{width:100%}.nav-justified>li>a,.nav-tabs.nav-justified>li>a{text-align:center;margin-bottom:5px}.nav-justified>.dropdown .dropdown-menu{top:auto;left:auto}.nav-tabs-justified,.nav-tabs.nav-justified{border-bottom:0}.nav-tabs-justified>li>a,.nav-tabs.nav-justified>li>a{margin-right:0;border-radius:4px}.nav-tabs-justified>.active>a,.nav-tabs-justified>.active>a:focus,.nav-tabs-justified>.active>a:hover,.nav-tabs.nav-justified>.active>a,.nav-tabs.nav-justified>.active>a:focus,.nav-tabs.nav-justified>.active>a:hover{border:1px solid #ddd}@media (min-width:768px){.nav-justified>li,.nav-tabs.nav-justified>li{display:table-cell;width:1%}.nav-justified>li>a,.nav-tabs.nav-justified>li>a{margin-bottom:0}.nav-tabs-justified>li>a,.nav-tabs.nav-justified>li>a{border-bottom:1px solid #ddd;border-radius:4px 4px 0 0}.nav-tabs-justified>.active>a,.nav-tabs-justified>.active>a:focus,.nav-tabs-justified>.active>a:hover,.nav-tabs.nav-justified>.active>a,.nav-tabs.nav-justified>.active>a:focus,.nav-tabs.nav-justified>.active>a:hover{border-bottom-color:#f5f8fa}}.tab-content>.tab-pane{display:none}.tab-content>.active{display:block}.nav-tabs .dropdown-menu{margin-top:-1px;border-top-right-radius:0;border-top-left-radius:0}.navbar{position:relative;min-height:50px;margin-bottom:22px;border:1px solid transparent}.navbar:after,.navbar:before{content:" ";display:table}.navbar-header:after,.navbar-header:before{content:" ";display:table}.navbar-collapse{overflow-x:visible;padding-right:15px;padding-left:15px;border-top:1px solid transparent;box-shadow:inset 0 1px 0 rgba(255,255,255,.1);-webkit-overflow-scrolling:touch}.navbar-collapse:after,.navbar-collapse:before{content:" ";display:table}.navbar-collapse.in{overflow-y:auto}@media (min-width:768px){.navbar{border-radius:4px}.navbar-header{float:left}.navbar-collapse{width:auto;border-top:0;box-shadow:none}.navbar-collapse.collapse{display:block!important;height:auto!important;padding-bottom:0;overflow:visible!important}.navbar-collapse.in{overflow-y:visible}.navbar-fixed-bottom .navbar-collapse,.navbar-fixed-top .navbar-collapse,.navbar-static-top .navbar-collapse{padding-left:0;padding-right:0}}.embed-responsive,.modal,.modal-open,.progress{overflow:hidden}@media (max-device-width:480px) and (orientation:landscape){.navbar-fixed-bottom .navbar-collapse,.navbar-fixed-top .navbar-collapse{max-height:200px}}.container-fluid>.navbar-collapse,.container-fluid>.navbar-header,.container>.navbar-collapse,.container>.navbar-header{margin-right:-15px;margin-left:-15px}.navbar-static-top{z-index:1000;border-width:0 0 1px}.navbar-fixed-bottom,.navbar-fixed-top{position:fixed;right:0;left:0;z-index:1030}.navbar-fixed-top{top:0;border-width:0 0 1px}.navbar-fixed-bottom{bottom:0;margin-bottom:0;border-width:1px 0 0}.navbar-brand{float:left;padding:14px 15px;font-size:18px;line-height:22px;height:50px}.navbar-brand:focus,.navbar-brand:hover{text-decoration:none}.navbar-brand>img{display:block}@media (min-width:768px){.container-fluid>.navbar-collapse,.container-fluid>.navbar-header,.container>.navbar-collapse,.container>.navbar-header{margin-right:0;margin-left:0}.navbar-fixed-bottom,.navbar-fixed-top,.navbar-static-top{border-radius:0}.navbar>.container .navbar-brand,.navbar>.container-fluid .navbar-brand{margin-left:-15px}}.navbar-toggle{position:relative;float:right;margin-right:15px;padding:9px 10px;margin-top:8px;margin-bottom:8px;background-color:transparent;border:1px solid transparent;border-radius:4px}.navbar-toggle:focus{outline:0}.navbar-toggle .icon-bar{display:block;width:22px;height:2px;border-radius:1px}.navbar-toggle .icon-bar+.icon-bar{margin-top:4px}.navbar-nav{margin:7px -15px}.navbar-nav>li>a{padding-top:10px;padding-bottom:10px;line-height:22px}@media (max-width:767px){.navbar-nav .open .dropdown-menu{position:static;float:none;width:auto;margin-top:0;background-color:transparent;border:0;box-shadow:none}.navbar-nav .open .dropdown-menu .dropdown-header,.navbar-nav .open .dropdown-menu>li>a{padding:5px 15px 5px 25px}.navbar-nav .open .dropdown-menu>li>a{line-height:22px}.navbar-nav .open .dropdown-menu>li>a:focus,.navbar-nav .open .dropdown-menu>li>a:hover{background-image:none}}.progress-bar-striped,.progress-striped .progress-bar,.progress-striped .progress-bar-success{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}@media (min-width:768px){.navbar-toggle{display:none}.navbar-nav{float:left;margin:0}.navbar-nav>li{float:left}.navbar-nav>li>a{padding-top:14px;padding-bottom:14px}}.navbar-form{padding:10px 15px;border-top:1px solid transparent;border-bottom:1px solid transparent;box-shadow:inset 0 1px 0 rgba(255,255,255,.1),0 1px 0 rgba(255,255,255,.1);margin:7px -15px}@media (min-width:768px){.navbar-form .form-control-static,.navbar-form .form-group{display:inline-block}.navbar-form .control-label,.navbar-form .form-group{margin-bottom:0;vertical-align:middle}.navbar-form .form-control{display:inline-block;width:auto;vertical-align:middle}.navbar-form .input-group{display:inline-table;vertical-align:middle}.navbar-form .input-group .form-control,.navbar-form .input-group .input-group-addon,.navbar-form .input-group .input-group-btn{width:auto}.navbar-form .input-group>.form-control{width:100%}.navbar-form .checkbox,.navbar-form .radio{display:inline-block;margin-top:0;margin-bottom:0;vertical-align:middle}.navbar-form .checkbox label,.navbar-form .radio label{padding-left:0}.navbar-form .checkbox input[type=checkbox],.navbar-form .radio input[type=radio]{position:relative;margin-left:0}.navbar-form .has-feedback .form-control-feedback{top:0}.navbar-form{width:auto;border:0;margin-left:0;margin-right:0;padding-top:0;padding-bottom:0;box-shadow:none}}.breadcrumb>li,.pagination{display:inline-block}.btn .badge,.btn .label{top:-1px;position:relative}@media (max-width:767px){.navbar-form .form-group{margin-bottom:5px}.navbar-form .form-group:last-child{margin-bottom:0}}.navbar-nav>li>.dropdown-menu{margin-top:0;border-top-right-radius:0;border-top-left-radius:0}.navbar-fixed-bottom .navbar-nav>li>.dropdown-menu{margin-bottom:0;border-radius:4px 4px 0 0}.navbar-btn{margin-top:7px;margin-bottom:7px}.btn-group-sm>.navbar-btn.btn,.navbar-btn.btn-sm{margin-top:10px;margin-bottom:10px}.btn-group-xs>.navbar-btn.btn,.navbar-btn.btn-xs,.navbar-text{margin-top:14px;margin-bottom:14px}@media (min-width:768px){.navbar-text{float:left;margin-left:15px;margin-right:15px}.navbar-left{float:left!important}.navbar-right{float:right!important;margin-right:-15px}.navbar-right~.navbar-right{margin-right:0}}.navbar-default{background-color:#fff;border-color:#d3e0e9}.navbar-default .navbar-brand{color:#777}.navbar-default .navbar-brand:focus,.navbar-default .navbar-brand:hover{color:#5e5e5e;background-color:transparent}.navbar-default .navbar-nav>li>a,.navbar-default .navbar-text{color:#777}.navbar-default .navbar-nav>li>a:focus,.navbar-default .navbar-nav>li>a:hover{color:#333;background-color:transparent}.navbar-default .navbar-nav>.active>a,.navbar-default .navbar-nav>.active>a:focus,.navbar-default .navbar-nav>.active>a:hover{color:#555;background-color:#eee}.navbar-default .navbar-nav>.disabled>a,.navbar-default .navbar-nav>.disabled>a:focus,.navbar-default .navbar-nav>.disabled>a:hover{color:#ccc;background-color:transparent}.navbar-default .navbar-toggle{border-color:#ddd}.navbar-default .navbar-toggle:focus,.navbar-default .navbar-toggle:hover{background-color:#ddd}.navbar-default .navbar-toggle .icon-bar{background-color:#888}.navbar-default .navbar-collapse,.navbar-default .navbar-form{border-color:#d3e0e9}.navbar-default .navbar-nav>.open>a,.navbar-default .navbar-nav>.open>a:focus,.navbar-default .navbar-nav>.open>a:hover{background-color:#eee;color:#555}@media (max-width:767px){.navbar-default .navbar-nav .open .dropdown-menu>li>a{color:#777}.navbar-default .navbar-nav .open .dropdown-menu>li>a:focus,.navbar-default .navbar-nav .open .dropdown-menu>li>a:hover{color:#333;background-color:transparent}.navbar-default .navbar-nav .open .dropdown-menu>.active>a,.navbar-default .navbar-nav .open .dropdown-menu>.active>a:focus,.navbar-default .navbar-nav .open .dropdown-menu>.active>a:hover{color:#555;background-color:#eee}.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a,.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a:focus,.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a:hover{color:#ccc;background-color:transparent}}.navbar-default .navbar-link{color:#777}.navbar-default .navbar-link:hover{color:#333}.navbar-default .btn-link{color:#777}.navbar-default .btn-link:focus,.navbar-default .btn-link:hover{color:#333}.navbar-default .btn-link[disabled]:focus,.navbar-default .btn-link[disabled]:hover,fieldset[disabled] .navbar-default .btn-link:focus,fieldset[disabled] .navbar-default .btn-link:hover{color:#ccc}.navbar-inverse{background-color:#222;border-color:#090909}.navbar-inverse .navbar-brand{color:#9d9d9d}.navbar-inverse .navbar-brand:focus,.navbar-inverse .navbar-brand:hover{color:#fff;background-color:transparent}.navbar-inverse .navbar-nav>li>a,.navbar-inverse .navbar-text{color:#9d9d9d}.navbar-inverse .navbar-nav>li>a:focus,.navbar-inverse .navbar-nav>li>a:hover{color:#fff;background-color:transparent}.navbar-inverse .navbar-nav>.active>a,.navbar-inverse .navbar-nav>.active>a:focus,.navbar-inverse .navbar-nav>.active>a:hover{color:#fff;background-color:#090909}.navbar-inverse .navbar-nav>.disabled>a,.navbar-inverse .navbar-nav>.disabled>a:focus,.navbar-inverse .navbar-nav>.disabled>a:hover{color:#444;background-color:transparent}.navbar-inverse .navbar-toggle{border-color:#333}.navbar-inverse .navbar-toggle:focus,.navbar-inverse .navbar-toggle:hover{background-color:#333}.navbar-inverse .navbar-toggle .icon-bar{background-color:#fff}.navbar-inverse .navbar-collapse,.navbar-inverse .navbar-form{border-color:#101010}.navbar-inverse .navbar-nav>.open>a,.navbar-inverse .navbar-nav>.open>a:focus,.navbar-inverse .navbar-nav>.open>a:hover{background-color:#090909;color:#fff}@media (max-width:767px){.navbar-inverse .navbar-nav .open .dropdown-menu>.dropdown-header{border-color:#090909}.navbar-inverse .navbar-nav .open .dropdown-menu .divider{background-color:#090909}.navbar-inverse .navbar-nav .open .dropdown-menu>li>a{color:#9d9d9d}.navbar-inverse .navbar-nav .open .dropdown-menu>li>a:focus,.navbar-inverse .navbar-nav .open .dropdown-menu>li>a:hover{color:#fff;background-color:transparent}.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a,.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:focus,.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:hover{color:#fff;background-color:#090909}.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a,.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a:focus,.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a:hover{color:#444;background-color:transparent}}.navbar-inverse .navbar-link{color:#9d9d9d}.navbar-inverse .navbar-link:hover{color:#fff}.navbar-inverse .btn-link{color:#9d9d9d}.navbar-inverse .btn-link:focus,.navbar-inverse .btn-link:hover{color:#fff}.navbar-inverse .btn-link[disabled]:focus,.navbar-inverse .btn-link[disabled]:hover,fieldset[disabled] .navbar-inverse .btn-link:focus,fieldset[disabled] .navbar-inverse .btn-link:hover{color:#444}.breadcrumb{padding:8px 15px;margin-bottom:22px;list-style:none;background-color:#f5f5f5;border-radius:4px}.breadcrumb>li+li:before{content:"/ ";padding:0 5px;color:#ccc}.breadcrumb>.active{color:#777}.pagination{padding-left:0;margin:22px 0;border-radius:4px}.pagination>li{display:inline}.pagination>li>a,.pagination>li>span{position:relative;float:left;padding:6px 12px;line-height:1.6;text-decoration:none;color:#3097D1;background-color:#fff;border:1px solid #ddd;margin-left:-1px}.pagination>li:first-child>a,.pagination>li:first-child>span{margin-left:0;border-bottom-left-radius:4px;border-top-left-radius:4px}.pagination>li:last-child>a,.pagination>li:last-child>span{border-bottom-right-radius:4px;border-top-right-radius:4px}.pagination>li>a:focus,.pagination>li>a:hover,.pagination>li>span:focus,.pagination>li>span:hover{z-index:2;color:#216a94;background-color:#eee;border-color:#ddd}.pagination>.active>a,.pagination>.active>a:focus,.pagination>.active>a:hover,.pagination>.active>span,.pagination>.active>span:focus,.pagination>.active>span:hover{z-index:3;color:#fff;background-color:#3097D1;border-color:#3097D1;cursor:default}.pagination>.disabled>a,.pagination>.disabled>a:focus,.pagination>.disabled>a:hover,.pagination>.disabled>span,.pagination>.disabled>span:focus,.pagination>.disabled>span:hover{color:#777;background-color:#fff;border-color:#ddd;cursor:not-allowed}.pagination-lg>li>a,.pagination-lg>li>span{padding:10px 16px;font-size:18px;line-height:1.3333333}.pagination-lg>li:first-child>a,.pagination-lg>li:first-child>span{border-bottom-left-radius:6px;border-top-left-radius:6px}.pagination-lg>li:last-child>a,.pagination-lg>li:last-child>span{border-bottom-right-radius:6px;border-top-right-radius:6px}.pagination-sm>li>a,.pagination-sm>li>span{padding:5px 10px;font-size:12px;line-height:1.5}.badge,.label{font-weight:700;line-height:1;white-space:nowrap;text-align:center}.pagination-sm>li:first-child>a,.pagination-sm>li:first-child>span{border-bottom-left-radius:3px;border-top-left-radius:3px}.pagination-sm>li:last-child>a,.pagination-sm>li:last-child>span{border-bottom-right-radius:3px;border-top-right-radius:3px}.pager{padding-left:0;margin:22px 0;list-style:none;text-align:center}.pager:after,.pager:before{content:" ";display:table}.pager li{display:inline}.pager li>a,.pager li>span{display:inline-block;padding:5px 14px;background-color:#fff;border:1px solid #ddd;border-radius:15px}.pager li>a:focus,.pager li>a:hover{text-decoration:none;background-color:#eee}.pager .next>a,.pager .next>span{float:right}.pager .previous>a,.pager .previous>span{float:left}.pager .disabled>a,.pager .disabled>a:focus,.pager .disabled>a:hover,.pager .disabled>span{color:#777;background-color:#fff;cursor:not-allowed}.label{display:inline;padding:.2em .6em .3em;font-size:75%;color:#fff;border-radius:.25em}.label:empty{display:none}a.label:focus,a.label:hover{color:#fff;text-decoration:none;cursor:pointer}.label-default{background-color:#777}.label-default[href]:focus,.label-default[href]:hover{background-color:#5e5e5e}.label-primary{background-color:#3097D1}.label-primary[href]:focus,.label-primary[href]:hover{background-color:#2579a9}.label-success{background-color:#2ab27b}.label-success[href]:focus,.label-success[href]:hover{background-color:#20895e}.label-info{background-color:#8eb4cb}.label-info[href]:focus,.label-info[href]:hover{background-color:#6b9dbb}.label-warning{background-color:#cbb956}.label-warning[href]:focus,.label-warning[href]:hover{background-color:#b6a338}.label-danger{background-color:#bf5329}.label-danger[href]:focus,.label-danger[href]:hover{background-color:#954120}.badge{display:inline-block;min-width:10px;padding:3px 7px;font-size:12px;color:#fff;vertical-align:middle;background-color:#777;border-radius:10px}.badge:empty{display:none}.media-object,.thumbnail{display:block}.btn-group-xs>.btn .badge,.btn-xs .badge{top:0;padding:1px 5px}.list-group-item.active>.badge,.nav-pills>.active>a>.badge{color:#3097D1;background-color:#fff}.list-group-item>.badge{float:right}.list-group-item>.badge+.badge{margin-right:5px}.nav-pills>li>a>.badge{margin-left:3px}a.badge:focus,a.badge:hover{color:#fff;text-decoration:none;cursor:pointer}.jumbotron,.jumbotron .h1,.jumbotron h1{color:inherit}.jumbotron{padding-top:30px;padding-bottom:30px;margin-bottom:30px;background-color:#eee}.jumbotron p{margin-bottom:15px;font-size:21px;font-weight:200}.alert,.thumbnail{margin-bottom:22px}.alert .alert-link,.close{font-weight:700}.jumbotron>hr{border-top-color:#d5d5d5}.container .jumbotron,.container-fluid .jumbotron{border-radius:6px;padding-left:15px;padding-right:15px}.jumbotron .container{max-width:100%}@media screen and (min-width:768px){.jumbotron{padding-top:48px;padding-bottom:48px}.container .jumbotron,.container-fluid .jumbotron{padding-left:60px;padding-right:60px}.jumbotron .h1,.jumbotron h1{font-size:63px}}.thumbnail{padding:4px;line-height:1.6;background-color:#f5f8fa;border:1px solid #ddd;border-radius:4px;-webkit-transition:border .2s ease-in-out;transition:border .2s ease-in-out}.thumbnail a>img,.thumbnail>img{display:block;max-width:100%;height:auto;margin-left:auto;margin-right:auto}.thumbnail .caption{padding:9px;color:#636b6f}a.thumbnail.active,a.thumbnail:focus,a.thumbnail:hover{border-color:#3097D1}.alert{padding:15px;border:1px solid transparent;border-radius:4px}.alert h4{margin-top:0;color:inherit}.alert>p,.alert>ul{margin-bottom:0}.alert>p+p{margin-top:5px}.alert-dismissable,.alert-dismissible{padding-right:35px}.alert-dismissable .close,.alert-dismissible .close{position:relative;top:-2px;right:-21px;color:inherit}.modal,.modal-backdrop{top:0;right:0;bottom:0;left:0}.alert-success{background-color:#dff0d8;border-color:#d6e9c6;color:#3c763d}.alert-success hr{border-top-color:#c9e2b3}.alert-success .alert-link{color:#2b542c}.alert-info{background-color:#d9edf7;border-color:#bce8f1;color:#31708f}.alert-info hr{border-top-color:#a6e1ec}.alert-info .alert-link{color:#245269}.alert-warning{background-color:#fcf8e3;border-color:#faebcc;color:#8a6d3b}.alert-warning hr{border-top-color:#f7e1b5}.alert-warning .alert-link{color:#66512c}.alert-danger{background-color:#f2dede;border-color:#ebccd1;color:#a94442}.alert-danger hr{border-top-color:#e4b9c0}.alert-danger .alert-link{color:#843534}@-webkit-keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}@keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}.progress{height:22px;margin-bottom:22px;background-color:#f5f5f5;border-radius:4px;box-shadow:inset 0 1px 2px rgba(0,0,0,.1)}.progress-bar{float:left;width:0;height:100%;font-size:12px;line-height:22px;color:#fff;text-align:center;background-color:#3097D1;box-shadow:inset 0 -1px 0 rgba(0,0,0,.15);-webkit-transition:width .6s ease;transition:width .6s ease}.progress-bar-striped,.progress-striped .progress-bar{background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-size:40px 40px}.progress-bar.active,.progress.active .progress-bar{-webkit-animation:progress-bar-stripes 2s linear infinite;animation:progress-bar-stripes 2s linear infinite}.progress-bar-success{background-color:#2ab27b}.progress-striped .progress-bar-success{background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.progress-striped .progress-bar-info,.progress-striped .progress-bar-warning{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.progress-bar-info{background-color:#8eb4cb}.progress-striped .progress-bar-info{background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.progress-bar-warning{background-color:#cbb956}.progress-striped .progress-bar-warning{background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.progress-bar-danger{background-color:#bf5329}.progress-striped .progress-bar-danger{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.media{margin-top:15px}.media:first-child{margin-top:0}.media,.media-body{zoom:1;overflow:hidden}.media-body{width:10000px}.media-object.img-thumbnail{max-width:none}.media-right,.media>.pull-right{padding-left:10px}.media-left,.media>.pull-left{padding-right:10px}.media-body,.media-left,.media-right{display:table-cell;vertical-align:top}.media-middle{vertical-align:middle}.media-bottom{vertical-align:bottom}.media-heading{margin-top:0;margin-bottom:5px}.media-list{padding-left:0;list-style:none}.list-group{margin-bottom:20px;padding-left:0}.list-group-item{position:relative;display:block;padding:10px 15px;margin-bottom:-1px;background-color:#fff;border:1px solid #d3e0e9}.list-group-item:first-child{border-top-right-radius:4px;border-top-left-radius:4px}.list-group-item:last-child{margin-bottom:0;border-bottom-right-radius:4px;border-bottom-left-radius:4px}a.list-group-item,button.list-group-item{color:#555}a.list-group-item .list-group-item-heading,button.list-group-item .list-group-item-heading{color:#333}a.list-group-item:focus,a.list-group-item:hover,button.list-group-item:focus,button.list-group-item:hover{text-decoration:none;color:#555;background-color:#f5f5f5}button.list-group-item{width:100%;text-align:left}.list-group-item.disabled,.list-group-item.disabled:focus,.list-group-item.disabled:hover{background-color:#eee;color:#777;cursor:not-allowed}.list-group-item.disabled .list-group-item-heading,.list-group-item.disabled:focus .list-group-item-heading,.list-group-item.disabled:hover .list-group-item-heading{color:inherit}.list-group-item.disabled .list-group-item-text,.list-group-item.disabled:focus .list-group-item-text,.list-group-item.disabled:hover .list-group-item-text{color:#777}.list-group-item.active,.list-group-item.active:focus,.list-group-item.active:hover{z-index:2;color:#fff;background-color:#3097D1;border-color:#3097D1}.list-group-item.active .list-group-item-heading,.list-group-item.active .list-group-item-heading>.small,.list-group-item.active .list-group-item-heading>small,.list-group-item.active:focus .list-group-item-heading,.list-group-item.active:focus .list-group-item-heading>.small,.list-group-item.active:focus .list-group-item-heading>small,.list-group-item.active:hover .list-group-item-heading,.list-group-item.active:hover .list-group-item-heading>.small,.list-group-item.active:hover .list-group-item-heading>small{color:inherit}.list-group-item.active .list-group-item-text,.list-group-item.active:focus .list-group-item-text,.list-group-item.active:hover .list-group-item-text{color:#d7ebf6}.list-group-item-success{color:#3c763d;background-color:#dff0d8}a.list-group-item-success,button.list-group-item-success{color:#3c763d}a.list-group-item-success .list-group-item-heading,button.list-group-item-success .list-group-item-heading{color:inherit}a.list-group-item-success:focus,a.list-group-item-success:hover,button.list-group-item-success:focus,button.list-group-item-success:hover{color:#3c763d;background-color:#d0e9c6}a.list-group-item-success.active,a.list-group-item-success.active:focus,a.list-group-item-success.active:hover,button.list-group-item-success.active,button.list-group-item-success.active:focus,button.list-group-item-success.active:hover{color:#fff;background-color:#3c763d;border-color:#3c763d}.list-group-item-info{color:#31708f;background-color:#d9edf7}a.list-group-item-info,button.list-group-item-info{color:#31708f}a.list-group-item-info .list-group-item-heading,button.list-group-item-info .list-group-item-heading{color:inherit}a.list-group-item-info:focus,a.list-group-item-info:hover,button.list-group-item-info:focus,button.list-group-item-info:hover{color:#31708f;background-color:#c4e3f3}a.list-group-item-info.active,a.list-group-item-info.active:focus,a.list-group-item-info.active:hover,button.list-group-item-info.active,button.list-group-item-info.active:focus,button.list-group-item-info.active:hover{color:#fff;background-color:#31708f;border-color:#31708f}.list-group-item-warning{color:#8a6d3b;background-color:#fcf8e3}a.list-group-item-warning,button.list-group-item-warning{color:#8a6d3b}a.list-group-item-warning .list-group-item-heading,button.list-group-item-warning .list-group-item-heading{color:inherit}a.list-group-item-warning:focus,a.list-group-item-warning:hover,button.list-group-item-warning:focus,button.list-group-item-warning:hover{color:#8a6d3b;background-color:#faf2cc}a.list-group-item-warning.active,a.list-group-item-warning.active:focus,a.list-group-item-warning.active:hover,button.list-group-item-warning.active,button.list-group-item-warning.active:focus,button.list-group-item-warning.active:hover{color:#fff;background-color:#8a6d3b;border-color:#8a6d3b}.list-group-item-danger{color:#a94442;background-color:#f2dede}a.list-group-item-danger,button.list-group-item-danger{color:#a94442}a.list-group-item-danger .list-group-item-heading,button.list-group-item-danger .list-group-item-heading{color:inherit}a.list-group-item-danger:focus,a.list-group-item-danger:hover,button.list-group-item-danger:focus,button.list-group-item-danger:hover{color:#a94442;background-color:#ebcccc}a.list-group-item-danger.active,a.list-group-item-danger.active:focus,a.list-group-item-danger.active:hover,button.list-group-item-danger.active,button.list-group-item-danger.active:focus,button.list-group-item-danger.active:hover{color:#fff;background-color:#a94442;border-color:#a94442}.panel-heading>.dropdown .dropdown-toggle,.panel-title,.panel-title>.small,.panel-title>.small>a,.panel-title>a,.panel-title>small,.panel-title>small>a{color:inherit}.list-group-item-heading{margin-top:0;margin-bottom:5px}.list-group-item-text{margin-bottom:0;line-height:1.3}.panel{margin-bottom:22px;background-color:#fff;border:1px solid transparent;border-radius:4px;box-shadow:0 1px 1px rgba(0,0,0,.05)}.panel-title,.panel>.list-group,.panel>.panel-collapse>.list-group,.panel>.panel-collapse>.table,.panel>.table,.panel>.table-responsive>.table{margin-bottom:0}.panel-body{padding:15px}.panel-body:after,.panel-body:before{content:" ";display:table}.panel-heading{padding:10px 15px;border-bottom:1px solid transparent;border-top-right-radius:3px;border-top-left-radius:3px}.panel-title{margin-top:0;font-size:16px}.panel-footer{padding:10px 15px;background-color:#f5f5f5;border-top:1px solid #d3e0e9;border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel>.list-group .list-group-item,.panel>.panel-collapse>.list-group .list-group-item{border-width:1px 0;border-radius:0}.panel-group .panel-heading,.panel>.table-bordered>tbody>tr:first-child>td,.panel>.table-bordered>tbody>tr:first-child>th,.panel>.table-bordered>tbody>tr:last-child>td,.panel>.table-bordered>tbody>tr:last-child>th,.panel>.table-bordered>tfoot>tr:last-child>td,.panel>.table-bordered>tfoot>tr:last-child>th,.panel>.table-bordered>thead>tr:first-child>td,.panel>.table-bordered>thead>tr:first-child>th,.panel>.table-responsive>.table-bordered>tbody>tr:first-child>td,.panel>.table-responsive>.table-bordered>tbody>tr:first-child>th,.panel>.table-responsive>.table-bordered>tbody>tr:last-child>td,.panel>.table-responsive>.table-bordered>tbody>tr:last-child>th,.panel>.table-responsive>.table-bordered>tfoot>tr:last-child>td,.panel>.table-responsive>.table-bordered>tfoot>tr:last-child>th,.panel>.table-responsive>.table-bordered>thead>tr:first-child>td,.panel>.table-responsive>.table-bordered>thead>tr:first-child>th{border-bottom:0}.panel>.table-responsive:last-child>.table:last-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child,.panel>.table:last-child,.panel>.table:last-child>tbody:last-child>tr:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child{border-bottom-left-radius:3px;border-bottom-right-radius:3px}.panel>.list-group:first-child .list-group-item:first-child,.panel>.panel-collapse>.list-group:first-child .list-group-item:first-child{border-top:0;border-top-right-radius:3px;border-top-left-radius:3px}.panel>.list-group:last-child .list-group-item:last-child,.panel>.panel-collapse>.list-group:last-child .list-group-item:last-child{border-bottom:0;border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel>.panel-heading+.panel-collapse>.list-group .list-group-item:first-child{border-top-right-radius:0;border-top-left-radius:0}.panel>.table-responsive:first-child>.table:first-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child,.panel>.table:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child,.panel>.table:first-child>thead:first-child>tr:first-child{border-top-right-radius:3px;border-top-left-radius:3px}.list-group+.panel-footer,.panel-heading+.list-group .list-group-item:first-child{border-top-width:0}.panel>.panel-collapse>.table caption,.panel>.table caption,.panel>.table-responsive>.table caption{padding-left:15px;padding-right:15px}.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child td:first-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child th:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child td:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child th:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child td:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child th:first-child,.panel>.table:first-child>thead:first-child>tr:first-child td:first-child,.panel>.table:first-child>thead:first-child>tr:first-child th:first-child{border-top-left-radius:3px}.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child td:last-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child th:last-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child td:last-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child th:last-child,.panel>.table:first-child>tbody:first-child>tr:first-child td:last-child,.panel>.table:first-child>tbody:first-child>tr:first-child th:last-child,.panel>.table:first-child>thead:first-child>tr:first-child td:last-child,.panel>.table:first-child>thead:first-child>tr:first-child th:last-child{border-top-right-radius:3px}.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child td:first-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child th:first-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child td:first-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child th:first-child,.panel>.table:last-child>tbody:last-child>tr:last-child td:first-child,.panel>.table:last-child>tbody:last-child>tr:last-child th:first-child,.panel>.table:last-child>tfoot:last-child>tr:last-child td:first-child,.panel>.table:last-child>tfoot:last-child>tr:last-child th:first-child{border-bottom-left-radius:3px}.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child td:last-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child th:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child td:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child th:last-child,.panel>.table:last-child>tbody:last-child>tr:last-child td:last-child,.panel>.table:last-child>tbody:last-child>tr:last-child th:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child td:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child th:last-child{border-bottom-right-radius:3px}.panel>.panel-body+.table,.panel>.panel-body+.table-responsive,.panel>.table+.panel-body,.panel>.table-responsive+.panel-body{border-top:1px solid #ddd}.panel>.table>tbody:first-child>tr:first-child td,.panel>.table>tbody:first-child>tr:first-child th{border-top:0}.panel>.table-bordered,.panel>.table-responsive>.table-bordered{border:0}.panel>.table-bordered>tbody>tr>td:first-child,.panel>.table-bordered>tbody>tr>th:first-child,.panel>.table-bordered>tfoot>tr>td:first-child,.panel>.table-bordered>tfoot>tr>th:first-child,.panel>.table-bordered>thead>tr>td:first-child,.panel>.table-bordered>thead>tr>th:first-child,.panel>.table-responsive>.table-bordered>tbody>tr>td:first-child,.panel>.table-responsive>.table-bordered>tbody>tr>th:first-child,.panel>.table-responsive>.table-bordered>tfoot>tr>td:first-child,.panel>.table-responsive>.table-bordered>tfoot>tr>th:first-child,.panel>.table-responsive>.table-bordered>thead>tr>td:first-child,.panel>.table-responsive>.table-bordered>thead>tr>th:first-child{border-left:0}.panel>.table-bordered>tbody>tr>td:last-child,.panel>.table-bordered>tbody>tr>th:last-child,.panel>.table-bordered>tfoot>tr>td:last-child,.panel>.table-bordered>tfoot>tr>th:last-child,.panel>.table-bordered>thead>tr>td:last-child,.panel>.table-bordered>thead>tr>th:last-child,.panel>.table-responsive>.table-bordered>tbody>tr>td:last-child,.panel>.table-responsive>.table-bordered>tbody>tr>th:last-child,.panel>.table-responsive>.table-bordered>tfoot>tr>td:last-child,.panel>.table-responsive>.table-bordered>tfoot>tr>th:last-child,.panel>.table-responsive>.table-bordered>thead>tr>td:last-child,.panel>.table-responsive>.table-bordered>thead>tr>th:last-child{border-right:0}.panel>.table-responsive{border:0;margin-bottom:0}.panel-group{margin-bottom:22px}.panel-group .panel{margin-bottom:0;border-radius:4px}.panel-group .panel+.panel{margin-top:5px}.panel-group .panel-heading+.panel-collapse>.list-group,.panel-group .panel-heading+.panel-collapse>.panel-body{border-top:1px solid #d3e0e9}.panel-group .panel-footer{border-top:0}.panel-group .panel-footer+.panel-collapse .panel-body{border-bottom:1px solid #d3e0e9}.panel-default{border-color:#d3e0e9}.panel-default>.panel-heading{color:#333;background-color:#fff;border-color:#d3e0e9}.panel-default>.panel-heading+.panel-collapse>.panel-body{border-top-color:#d3e0e9}.panel-default>.panel-heading .badge{color:#fff;background-color:#333}.panel-default>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#d3e0e9}.panel-primary{border-color:#3097D1}.panel-primary>.panel-heading{color:#fff;background-color:#3097D1;border-color:#3097D1}.panel-primary>.panel-heading+.panel-collapse>.panel-body{border-top-color:#3097D1}.panel-primary>.panel-heading .badge{color:#3097D1;background-color:#fff}.panel-primary>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#3097D1}.panel-success{border-color:#d6e9c6}.panel-success>.panel-heading{color:#3c763d;background-color:#dff0d8;border-color:#d6e9c6}.panel-success>.panel-heading+.panel-collapse>.panel-body{border-top-color:#d6e9c6}.panel-success>.panel-heading .badge{color:#dff0d8;background-color:#3c763d}.panel-success>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#d6e9c6}.panel-info{border-color:#bce8f1}.panel-info>.panel-heading{color:#31708f;background-color:#d9edf7;border-color:#bce8f1}.panel-info>.panel-heading+.panel-collapse>.panel-body{border-top-color:#bce8f1}.panel-info>.panel-heading .badge{color:#d9edf7;background-color:#31708f}.panel-info>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#bce8f1}.panel-warning{border-color:#faebcc}.panel-warning>.panel-heading{color:#8a6d3b;background-color:#fcf8e3;border-color:#faebcc}.panel-warning>.panel-heading+.panel-collapse>.panel-body{border-top-color:#faebcc}.panel-warning>.panel-heading .badge{color:#fcf8e3;background-color:#8a6d3b}.panel-warning>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#faebcc}.panel-danger{border-color:#ebccd1}.panel-danger>.panel-heading{color:#a94442;background-color:#f2dede;border-color:#ebccd1}.panel-danger>.panel-heading+.panel-collapse>.panel-body{border-top-color:#ebccd1}.panel-danger>.panel-heading .badge{color:#f2dede;background-color:#a94442}.panel-danger>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#ebccd1}.embed-responsive{position:relative;display:block;height:0;padding:0}.embed-responsive .embed-responsive-item,.embed-responsive embed,.embed-responsive iframe,.embed-responsive object,.embed-responsive video{position:absolute;top:0;left:0;bottom:0;height:100%;width:100%;border:0}.embed-responsive-16by9{padding-bottom:56.25%}.embed-responsive-4by3{padding-bottom:75%}.well{min-height:20px;padding:19px;margin-bottom:20px;background-color:#f5f5f5;border:1px solid #e3e3e3;border-radius:4px;box-shadow:inset 0 1px 1px rgba(0,0,0,.05)}.well blockquote{border-color:#ddd;border-color:rgba(0,0,0,.15)}.well-lg{padding:24px;border-radius:6px}.well-sm{padding:9px;border-radius:3px}.close{float:right;font-size:21px;line-height:1;color:#000;text-shadow:0 1px 0 #fff;opacity:.2;filter:alpha(opacity=20)}.popover,.tooltip{font-family:Raleway,sans-serif;font-style:normal;font-weight:400;letter-spacing:normal;line-break:auto;line-height:1.6;text-shadow:none;text-transform:none;white-space:normal;word-break:normal;word-spacing:normal;word-wrap:normal;text-decoration:none}.close:focus,.close:hover{color:#000;text-decoration:none;cursor:pointer;opacity:.5;filter:alpha(opacity=50)}button.close{padding:0;cursor:pointer;background:0 0;border:0;-webkit-appearance:none}.modal-content,.popover{background-clip:padding-box}.modal{display:none;position:fixed;z-index:1050;-webkit-overflow-scrolling:touch;outline:0}.modal-footer:after,.modal-footer:before,.modal-header:after,.modal-header:before{display:table;content:" "}.modal.fade .modal-dialog{-webkit-transform:translate(0,-25%);transform:translate(0,-25%);-webkit-transition:-webkit-transform .3s ease-out;transition:-webkit-transform .3s ease-out;transition:transform .3s ease-out;transition:transform .3s ease-out,-webkit-transform .3s ease-out}.modal.in .modal-dialog{-webkit-transform:translate(0,0);transform:translate(0,0)}.modal-open .modal{overflow-x:hidden;overflow-y:auto}.modal-dialog{position:relative;width:auto;margin:10px}.modal-content{position:relative;background-color:#fff;border:1px solid #999;border:1px solid rgba(0,0,0,.2);border-radius:6px;box-shadow:0 3px 9px rgba(0,0,0,.5);outline:0}.modal-backdrop{position:fixed;z-index:1040;background-color:#000}.modal-backdrop.fade{opacity:0;filter:alpha(opacity=0)}.modal-backdrop.in{opacity:.5;filter:alpha(opacity=50)}.modal-header{padding:15px;border-bottom:1px solid #e5e5e5}.modal-header .close{margin-top:-2px}.modal-title{margin:0;line-height:1.6}.modal-body{position:relative;padding:15px}.modal-footer{padding:15px;text-align:right;border-top:1px solid #e5e5e5}.modal-footer .btn+.btn{margin-left:5px;margin-bottom:0}.modal-footer .btn-group .btn+.btn{margin-left:-1px}.modal-footer .btn-block+.btn-block{margin-left:0}.modal-scrollbar-measure{position:absolute;top:-9999px;width:50px;height:50px;overflow:scroll}@media (min-width:768px){.modal-dialog{width:600px;margin:30px auto}.modal-content{box-shadow:0 5px 15px rgba(0,0,0,.5)}.modal-sm{width:300px}}.tooltip.top-left .tooltip-arrow,.tooltip.top-right .tooltip-arrow{bottom:0;margin-bottom:-5px;border-width:5px 5px 0;border-top-color:#000}@media (min-width:992px){.modal-lg{width:900px}}.tooltip{position:absolute;z-index:1070;display:block;text-align:left;text-align:start;font-size:12px;opacity:0;filter:alpha(opacity=0)}.tooltip.in{opacity:.9;filter:alpha(opacity=90)}.tooltip.top{margin-top:-3px;padding:5px 0}.tooltip.right{margin-left:3px;padding:0 5px}.tooltip.bottom{margin-top:3px;padding:5px 0}.tooltip.left{margin-left:-3px;padding:0 5px}.tooltip-inner{max-width:200px;padding:3px 8px;color:#fff;text-align:center;background-color:#000;border-radius:4px}.tooltip-arrow{position:absolute;width:0;height:0;border-color:transparent;border-style:solid}.tooltip.top .tooltip-arrow{bottom:0;left:50%;margin-left:-5px;border-width:5px 5px 0;border-top-color:#000}.tooltip.top-left .tooltip-arrow{right:5px}.tooltip.top-right .tooltip-arrow{left:5px}.tooltip.right .tooltip-arrow{top:50%;left:0;margin-top:-5px;border-width:5px 5px 5px 0;border-right-color:#000}.tooltip.left .tooltip-arrow{top:50%;right:0;margin-top:-5px;border-width:5px 0 5px 5px;border-left-color:#000}.tooltip.bottom .tooltip-arrow,.tooltip.bottom-left .tooltip-arrow,.tooltip.bottom-right .tooltip-arrow{border-width:0 5px 5px;border-bottom-color:#000;top:0}.tooltip.bottom .tooltip-arrow{left:50%;margin-left:-5px}.tooltip.bottom-left .tooltip-arrow{right:5px;margin-top:-5px}.tooltip.bottom-right .tooltip-arrow{left:5px;margin-top:-5px}.popover{position:absolute;top:0;left:0;z-index:1060;display:none;max-width:276px;padding:1px;text-align:left;text-align:start;font-size:14px;background-color:#fff;border:1px solid #ccc;border:1px solid rgba(0,0,0,.2);border-radius:6px;box-shadow:0 5px 10px rgba(0,0,0,.2)}.carousel-caption,.carousel-control{color:#fff;text-align:center;text-shadow:0 1px 2px rgba(0,0,0,.6)}.popover.top{margin-top:-10px}.popover.right{margin-left:10px}.popover.bottom{margin-top:10px}.popover.left{margin-left:-10px}.popover-title{margin:0;padding:8px 14px;font-size:14px;background-color:#f7f7f7;border-bottom:1px solid #ebebeb;border-radius:5px 5px 0 0}.popover-content{padding:9px 14px}.popover>.arrow,.popover>.arrow:after{position:absolute;display:block;width:0;height:0;border-color:transparent;border-style:solid}.carousel,.carousel-inner{position:relative}.popover>.arrow{border-width:11px}.popover>.arrow:after{border-width:10px;content:""}.popover.top>.arrow{left:50%;margin-left:-11px;border-bottom-width:0;border-top-color:#999;border-top-color:rgba(0,0,0,.25);bottom:-11px}.popover.top>.arrow:after{content:" ";bottom:1px;margin-left:-10px;border-bottom-width:0;border-top-color:#fff}.popover.left>.arrow:after,.popover.right>.arrow:after{content:" ";bottom:-10px}.popover.right>.arrow{top:50%;left:-11px;margin-top:-11px;border-left-width:0;border-right-color:#999;border-right-color:rgba(0,0,0,.25)}.popover.right>.arrow:after{left:1px;border-left-width:0;border-right-color:#fff}.popover.bottom>.arrow{left:50%;margin-left:-11px;border-top-width:0;border-bottom-color:#999;border-bottom-color:rgba(0,0,0,.25);top:-11px}.popover.bottom>.arrow:after{content:" ";top:1px;margin-left:-10px;border-top-width:0;border-bottom-color:#fff}.popover.left>.arrow{top:50%;right:-11px;margin-top:-11px;border-right-width:0;border-left-color:#999;border-left-color:rgba(0,0,0,.25)}.popover.left>.arrow:after{right:1px;border-right-width:0;border-left-color:#fff}.carousel-inner{overflow:hidden;width:100%}.carousel-inner>.item{display:none;position:relative;-webkit-transition:.6s ease-in-out left;transition:.6s ease-in-out left}.carousel-inner>.item>a>img,.carousel-inner>.item>img{display:block;max-width:100%;height:auto;line-height:1}@media all and (transform-3d),(-webkit-transform-3d){.carousel-inner>.item{-webkit-transition:-webkit-transform .6s ease-in-out;transition:-webkit-transform .6s ease-in-out;transition:transform .6s ease-in-out;transition:transform .6s ease-in-out,-webkit-transform .6s ease-in-out;-webkit-backface-visibility:hidden;backface-visibility:hidden;-webkit-perspective:1000px;perspective:1000px}.carousel-inner>.item.active.right,.carousel-inner>.item.next{-webkit-transform:translate3d(100%,0,0);transform:translate3d(100%,0,0);left:0}.carousel-inner>.item.active.left,.carousel-inner>.item.prev{-webkit-transform:translate3d(-100%,0,0);transform:translate3d(-100%,0,0);left:0}.carousel-inner>.item.active,.carousel-inner>.item.next.left,.carousel-inner>.item.prev.right{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0);left:0}}.carousel-inner>.active,.carousel-inner>.next,.carousel-inner>.prev{display:block}.carousel-inner>.active{left:0}.carousel-inner>.next,.carousel-inner>.prev{position:absolute;top:0;width:100%}.carousel-inner>.next{left:100%}.carousel-inner>.prev{left:-100%}.carousel-inner>.next.left,.carousel-inner>.prev.right{left:0}.carousel-inner>.active.left{left:-100%}.carousel-inner>.active.right{left:100%}.carousel-control{position:absolute;top:0;left:0;bottom:0;width:15%;opacity:.5;filter:alpha(opacity=50);font-size:20px;background-color:transparent}.carousel-control.left{background-image:-webkit-linear-gradient(left,rgba(0,0,0,.5) 0,rgba(0,0,0,.0001) 100%);background-image:linear-gradient(to right,rgba(0,0,0,.5) 0,rgba(0,0,0,.0001) 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#80000000', endColorstr='#00000000', GradientType=1)}.carousel-control.right{left:auto;right:0;background-image:-webkit-linear-gradient(left,rgba(0,0,0,.0001) 0,rgba(0,0,0,.5) 100%);background-image:linear-gradient(to right,rgba(0,0,0,.0001) 0,rgba(0,0,0,.5) 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#00000000', endColorstr='#80000000', GradientType=1)}.carousel-control:focus,.carousel-control:hover{outline:0;color:#fff;text-decoration:none;opacity:.9;filter:alpha(opacity=90)}.carousel-control .glyphicon-chevron-left,.carousel-control .glyphicon-chevron-right,.carousel-control .icon-next,.carousel-control .icon-prev{position:absolute;top:50%;margin-top:-10px;z-index:5;display:inline-block}.carousel-control .glyphicon-chevron-left,.carousel-control .icon-prev{left:50%;margin-left:-10px}.carousel-control .glyphicon-chevron-right,.carousel-control .icon-next{right:50%;margin-right:-10px}.carousel-control .icon-next,.carousel-control .icon-prev{width:20px;height:20px;line-height:1;font-family:serif}.carousel-control .icon-prev:before{content:'\2039'}.carousel-control .icon-next:before{content:'\203a'}.carousel-indicators{position:absolute;bottom:10px;left:50%;z-index:15;width:60%;margin-left:-30%;padding-left:0;list-style:none;text-align:center}.carousel-indicators li{display:inline-block;width:10px;height:10px;margin:1px;text-indent:-999px;border:1px solid #fff;border-radius:10px;cursor:pointer;background-color:#000\9;background-color:transparent}.carousel-indicators .active{margin:0;width:12px;height:12px;background-color:#fff}.carousel-caption{position:absolute;left:15%;right:15%;bottom:20px;z-index:10;padding-top:20px;padding-bottom:20px}.carousel-caption .btn,.text-hide{text-shadow:none}@media screen and (min-width:768px){.carousel-control .glyphicon-chevron-left,.carousel-control .glyphicon-chevron-right,.carousel-control .icon-next,.carousel-control .icon-prev{width:30px;height:30px;margin-top:-10px;font-size:30px}.carousel-control .glyphicon-chevron-left,.carousel-control .icon-prev{margin-left:-10px}.carousel-control .glyphicon-chevron-right,.carousel-control .icon-next{margin-right:-10px}.carousel-caption{left:20%;right:20%;padding-bottom:30px}.carousel-indicators{bottom:20px}}.clearfix:after,.clearfix:before{content:" ";display:table}.center-block{display:block;margin-left:auto;margin-right:auto}.pull-right{float:right!important}.pull-left{float:left!important}.hide{display:none!important}.show{display:block!important}.hidden,.visible-lg,.visible-lg-block,.visible-lg-inline,.visible-lg-inline-block,.visible-md,.visible-md-block,.visible-md-inline,.visible-md-inline-block,.visible-sm,.visible-sm-block,.visible-sm-inline,.visible-sm-inline-block,.visible-xs,.visible-xs-block,.visible-xs-inline,.visible-xs-inline-block{display:none!important}.invisible{visibility:hidden}.text-hide{font:0/0 a;color:transparent;background-color:transparent;border:0}.affix{position:fixed}@-ms-viewport{width:device-width}@media (max-width:767px){.visible-xs{display:block!important}table.visible-xs{display:table!important}tr.visible-xs{display:table-row!important}td.visible-xs,th.visible-xs{display:table-cell!important}.visible-xs-block{display:block!important}.visible-xs-inline{display:inline!important}.visible-xs-inline-block{display:inline-block!important}}@media (min-width:768px) and (max-width:991px){.visible-sm{display:block!important}table.visible-sm{display:table!important}tr.visible-sm{display:table-row!important}td.visible-sm,th.visible-sm{display:table-cell!important}.visible-sm-block{display:block!important}.visible-sm-inline{display:inline!important}.visible-sm-inline-block{display:inline-block!important}}@media (min-width:992px) and (max-width:1199px){.visible-md{display:block!important}table.visible-md{display:table!important}tr.visible-md{display:table-row!important}td.visible-md,th.visible-md{display:table-cell!important}.visible-md-block{display:block!important}.visible-md-inline{display:inline!important}.visible-md-inline-block{display:inline-block!important}}@media (min-width:1200px){.visible-lg{display:block!important}table.visible-lg{display:table!important}tr.visible-lg{display:table-row!important}td.visible-lg,th.visible-lg{display:table-cell!important}.visible-lg-block{display:block!important}.visible-lg-inline{display:inline!important}.visible-lg-inline-block{display:inline-block!important}.hidden-lg{display:none!important}}@media (max-width:767px){.hidden-xs{display:none!important}}@media (min-width:768px) and (max-width:991px){.hidden-sm{display:none!important}}@media (min-width:992px) and (max-width:1199px){.hidden-md{display:none!important}}.visible-print{display:none!important}@media print{.visible-print{display:block!important}table.visible-print{display:table!important}tr.visible-print{display:table-row!important}td.visible-print,th.visible-print{display:table-cell!important}}.visible-print-block{display:none!important}@media print{.visible-print-block{display:block!important}}.visible-print-inline{display:none!important}@media print{.visible-print-inline{display:inline!important}}.visible-print-inline-block{display:none!important}@media print{.visible-print-inline-block{display:inline-block!important}.hidden-print{display:none!important}} \ No newline at end of file diff --git a/gestao_raul/Lib/site-packages/pwa/static/fonts/bootstrap/glyphicons-halflings-regular.eot b/gestao_raul/Lib/site-packages/pwa/static/fonts/bootstrap/glyphicons-halflings-regular.eot new file mode 100644 index 0000000000000000000000000000000000000000..b93a4953fff68df523aa7656497ee339d6026d64 GIT binary patch literal 20127 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 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/gestao_raul/Lib/site-packages/pwa/static/fonts/bootstrap/glyphicons-halflings-regular.ttf b/gestao_raul/Lib/site-packages/pwa/static/fonts/bootstrap/glyphicons-halflings-regular.ttf new file mode 100644 index 0000000000000000000000000000000000000000..1413fc609ab6f21774de0cb7e01360095584f65b GIT binary patch literal 45404 zcmd?Sd0-pWwLh*qi$?oCk~i6sWlOeWJC3|4juU5JNSu9hSVACzERcmjLV&P^utNzg zIE4Kr1=5g!SxTX#Ern9_%4&01rlrW`Z!56xXTGQR4C z3vR~wXq>NDx$c~e?;ia3YjJ*$!C>69a?2$lLyhpI!CFfJsP=|`8@K0|bbMpWwVUEygg0=0x_)HeHpGSJagJNLA3c!$EuOV>j$wi! zbo{vZ(s8tl>@!?}dmNHXo)ABy7ohD7_1G-P@SdJWT8*oeyBVYVW9*vn}&VI4q++W;Z+uz=QTK}^C75!`aFYCX# zf7fC2;o`%!huaTNJAB&VWrx=szU=VLhwnbT`vc<#<`4WI6n_x@AofA~2d90o?1L3w z9!I|#P*NQ)$#9aASijuw>JRld^-t)Zhmy|i-`Iam|IWkguaMR%lhi4p~cX-9& zjfbx}yz}s`4-6>D^+6FzihR)Y!GsUy=_MWi_v7y#KmYi-{iZ+s@ekkq!@Wxz!~BQwiI&ti z>hC&iBe2m(dpNVvSbZe3DVgl(dxHt-k@{xv;&`^c8GJY%&^LpM;}7)B;5Qg5J^E${ z7z~k8eWOucjX6)7q1a%EVtmnND8cclz8R1=X4W@D8IDeUGXxEWe&p>Z*voO0u_2!! zj3dT(Ki+4E;uykKi*yr?w6!BW2FD55PD6SMj`OfBLwXL5EA-9KjpMo4*5Eqs^>4&> z8PezAcn!9jk-h-Oo!E9EjX8W6@EkTHeI<@AY{f|5fMW<-Ez-z)xCvW3()Z#x0oydB zzm4MzY^NdpIF9qMp-jU;99LjlgY@@s+=z`}_%V*xV7nRV*Kwrx-i`FzI0BZ#yOI8# z!SDeNA5b6u9!Imj89v0(g$;dT_y|Yz!3V`i{{_dez8U@##|X9A};s^7vEd!3AcdyVlhVk$v?$O442KIM1-wX^R{U7`JW&lPr3N(%kXfXT_`7w^? z=#ntx`tTF|N$UT?pELvw7T*2;=Q-x@KmDUIbLyXZ>f5=y7z1DT<7>Bp0k;eItHF?1 zErzhlD2B$Tm|^7DrxnTYm-tgg`Mt4Eivp5{r$o9e)8(fXBO4g|G^6Xy?y$SM*&V52 z6SR*%`%DZC^w(gOWQL?6DRoI*hBNT)xW9sxvmi@!vI^!mI$3kvAMmR_q#SGn3zRb_ zGe$=;Tv3dXN~9XuIHow*NEU4y&u}FcZEZoSlXb9IBOA}!@J3uovp}yerhPMaiI8|SDhvWVr z^BE&yx6e3&RYqIg;mYVZ*3#A-cDJ;#ms4txEmwm@g^s`BB}KmSr7K+ruIoKs=s|gOXP|2 zb1!)87h9?(+1^QRWb(Vo8+@G=o24gyuzF3ytfsKjTHZJ}o{YznGcTDm!s)DRnmOX} z3pPL4wExoN$kyc2>#J`k+<67sy-VsfbQ-1u+HkyFR?9G`9r6g4*8!(!c65Be-5hUg zZHY$M0k(Yd+DT1*8)G(q)1&tDl=g9H7!bZTOvEEFnBOk_K=DXF(d4JOaH zI}*A3jGmy{gR>s}EQzyJa_q_?TYPNXRU1O;fcV_&TQZhd{@*8Tgpraf~nT0BYktu*n{a~ub^UUqQPyr~yBY{k2O zgV)honv{B_CqY|*S~3up%Wn%7i*_>Lu|%5~j)}rQLT1ZN?5%QN`LTJ}vA!EE=1`So z!$$Mv?6T)xk)H8JTrZ~m)oNXxS}pwPd#);<*>zWsYoL6iK!gRSBB{JCgB28C#E{T? z5VOCMW^;h~eMke(w6vLlKvm!!TyIf;k*RtK)|Q>_@nY#J%=h%aVb)?Ni_By)XNxY)E3`|}_u}fn+Kp^3p4RbhFUBRtGsDyx9Eolg77iWN z2iH-}CiM!pfYDIn7;i#Ui1KG01{3D<{e}uWTdlX4Vr*nsb^>l0%{O?0L9tP|KGw8w z+T5F}md>3qDZQ_IVkQ|BzuN08uN?SsVt$~wcHO4pB9~ykFTJO3g<4X({-Tm1w{Ufo zI03<6KK`ZjqVyQ(>{_aMxu7Zm^ck&~)Q84MOsQ-XS~{6j>0lTl@lMtfWjj;PT{nlZ zIn0YL?kK7CYJa)(8?unZ)j8L(O}%$5S#lTcq{rr5_gqqtZ@*0Yw4}OdjL*kBv+>+@ z&*24U=y{Nl58qJyW1vTwqsvs=VRAzojm&V zEn6=WzdL1y+^}%Vg!ap>x%%nFi=V#wn# zUuheBR@*KS)5Mn0`f=3fMwR|#-rPMQJg(fW*5e`7xO&^UUH{L(U8D$JtI!ac!g(Ze89<`UiO@L+)^D zjPk2_Ie0p~4|LiI?-+pHXuRaZKG$%zVT0jn!yTvvM^jlcp`|VSHRt-G@_&~<4&qW@ z?b#zIN)G(}L|60jer*P7#KCu*Af;{mpWWvYK$@Squ|n-Vtfgr@ZOmR5Xpl;0q~VILmjk$$mgp+`<2jP z@+nW5Oap%fF4nFwnVwR7rpFaOdmnfB$-rkO6T3#w^|*rft~acgCP|ZkgA6PHD#Of| zY%E!3tXtsWS`udLsE7cSE8g@p$ceu*tI71V31uA7jwmXUCT7+Cu3uv|W>ZwD{&O4Nfjjvl43N#A$|FWxId! z%=X!HSiQ-#4nS&smww~iXRn<-`&zc)nR~js?|Ei-cei$^$KsqtxNDZvl1oavXK#Pz zT&%Wln^Y5M95w=vJxj0a-ko_iQt(LTX_5x#*QfQLtPil;kkR|kz}`*xHiLWr35ajx zHRL-QQv$|PK-$ges|NHw8k6v?&d;{A$*q15hz9{}-`e6ys1EQ1oNNKDFGQ0xA!x^( zkG*-ueZT(GukSnK&Bs=4+w|(kuWs5V_2#3`!;f}q?>xU5IgoMl^DNf+Xd<=sl2XvkqviJ>d?+G@Z5nxxd5Sqd$*ENUB_mb8Z+7CyyU zA6mDQ&e+S~w49csl*UePzY;^K)Fbs^%?7;+hFc(xz#mWoek4_&QvmT7Fe)*{h-9R4 zqyXuN5{)HdQ6yVi#tRUO#M%;pL>rQxN~6yoZ)*{{!?jU)RD*oOxDoTjVh6iNmhWNC zB5_{R=o{qvxEvi(khbRS`FOXmOO|&Dj$&~>*oo)bZz%lPhEA@ zQ;;w5eu5^%i;)w?T&*=UaK?*|U3~{0tC`rvfEsRPgR~16;~{_S2&=E{fE2=c>{+y} zx1*NTv-*zO^px5TA|B```#NetKg`19O!BK*-#~wDM@KEllk^nfQ2quy25G%)l72<> zzL$^{DDM#jKt?<>m;!?E2p0l12`j+QJjr{Lx*47Nq(v6i3M&*P{jkZB{xR?NOSPN% zU>I+~d_ny=pX??qjF*E78>}Mgts@_yn`)C`wN-He_!OyE+gRI?-a>Om>Vh~3OX5+& z6MX*d1`SkdXwvb7KH&=31RCC|&H!aA1g_=ZY0hP)-Wm6?A7SG0*|$mC7N^SSBh@MG z9?V0tv_sE>X==yV{)^LsygK2=$Mo_0N!JCOU?r}rmWdHD%$h~~G3;bt`lH& zAuOOZ=G1Mih**0>lB5x+r)X^8mz!0K{SScj4|a=s^VhUEp#2M=^#WRqe?T&H9GnWa zYOq{+gBn9Q0e0*Zu>C(BAX=I-Af9wIFhCW6_>TsIH$d>|{fIrs&BX?2G>GvFc=<8` zVJ`#^knMU~65dWGgXcht`Kb>{V2oo%<{NK|iH+R^|Gx%q+env#Js*(EBT3V0=w4F@W+oLFsA)l7Qy8mx_;6Vrk;F2RjKFvmeq} zro&>@b^(?f))OoQ#^#s)tRL>b0gzhRYRG}EU%wr9GjQ#~Rpo|RSkeik^p9x2+=rUr}vfnQoeFAlv=oX%YqbLpvyvcZ3l$B z5bo;hDd(fjT;9o7g9xUg3|#?wU2#BJ0G&W1#wn?mfNR{O7bq747tc~mM%m%t+7YN}^tMa24O4@w<|$lk@pGx!;%pKiq&mZB z?3h<&w>un8r?Xua6(@Txu~Za9tI@|C4#!dmHMzDF_-_~Jolztm=e)@vG11bZQAs!tFvd9{C;oxC7VfWq377Y(LR^X_TyX9bn$)I765l=rJ%9uXcjggX*r?u zk|0!db_*1$&i8>d&G3C}A`{Fun_1J;Vx0gk7P_}8KBZDowr*8$@X?W6v^LYmNWI)lN92yQ;tDpN zOUdS-W4JZUjwF-X#w0r;97;i(l}ZZT$DRd4u#?pf^e2yaFo zbm>I@5}#8FjsmigM8w_f#m4fEP~r~_?OWB%SGWcn$ThnJ@Y`ZI-O&Qs#Y14To( zWAl>9Gw7#}eT(!c%D0m>5D8**a@h;sLW=6_AsT5v1Sd_T-C4pgu_kvc?7+X&n_fct znkHy(_LExh=N%o3I-q#f$F4QJpy>jZBW zRF7?EhqTGk)w&Koi}QQY3sVh?@e-Z3C9)P!(hMhxmXLC zF_+ZSTQU`Gqx@o(~B$dbr zHlEUKoK&`2gl>zKXlEi8w6}`X3kh3as1~sX5@^`X_nYl}hlbpeeVlj#2sv)CIMe%b zBs7f|37f8qq}gA~Is9gj&=te^wN8ma?;vF)7gce;&sZ64!7LqpR!fy)?4cEZposQ8 zf;rZF7Q>YMF1~eQ|Z*!5j0DuA=`~VG$Gg6B?Om1 z6fM@`Ck-K*k(eJ)Kvysb8sccsFf@7~3vfnC=<$q+VNv)FyVh6ZsWw}*vs>%k3$)9| zR9ek-@pA23qswe1io)(Vz!vS1o*XEN*LhVYOq#T`;rDkgt86T@O`23xW~;W_#ZS|x zvwx-XMb7_!hIte-#JNpFxskMMpo2OYhHRr0Yn8d^(jh3-+!CNs0K2B!1dL$9UuAD= zQ%7Ae(Y@}%Cd~!`h|wAdm$2WoZ(iA1(a_-1?znZ%8h72o&Mm*4x8Ta<4++;Yr6|}u zW8$p&izhdqF=m8$)HyS2J6cKyo;Yvb>DTfx4`4R{ zPSODe9E|uflE<`xTO=r>u~u=NuyB&H!(2a8vwh!jP!yfE3N>IiO1jI>7e&3rR#RO3_}G23W?gwDHgSgekzQ^PU&G5z&}V5GO? zfg#*72*$DP1T8i`S7=P;bQ8lYF9_@8^C(|;9v8ZaK2GnWz4$Th2a0$)XTiaxNWfdq z;yNi9veH!j)ba$9pke8`y2^63BP zIyYKj^7;2don3se!P&%I2jzFf|LA&tQ=NDs{r9fIi-F{-yiG-}@2`VR^-LIFN8BC4 z&?*IvLiGHH5>NY(Z^CL_A;yISNdq58}=u~9!Ia7 zm7MkDiK~lsfLpvmPMo!0$keA$`%Tm`>Fx9JpG^EfEb(;}%5}B4Dw!O3BCkf$$W-dF z$BupUPgLpHvr<<+QcNX*w@+Rz&VQz)Uh!j4|DYeKm5IC05T$KqVV3Y|MSXom+Jn8c zgUEaFW1McGi^44xoG*b0JWE4T`vka7qTo#dcS4RauUpE{O!ZQ?r=-MlY#;VBzhHGU zS@kCaZ*H73XX6~HtHd*4qr2h}Pf0Re@!WOyvres_9l2!AhPiV$@O2sX>$21)-3i+_ z*sHO4Ika^!&2utZ@5%VbpH(m2wE3qOPn-I5Tbnt&yn9{k*eMr3^u6zG-~PSr(w$p> zw)x^a*8Ru$PE+{&)%VQUvAKKiWiwvc{`|GqK2K|ZMy^Tv3g|zENL86z7i<c zW`W>zV1u}X%P;Ajn+>A)2iXZbJ5YB_r>K-h5g^N=LkN^h0Y6dPFfSBh(L`G$D%7c` z&0RXDv$}c7#w*7!x^LUes_|V*=bd&aP+KFi((tG*gakSR+FA26%{QJdB5G1F=UuU&koU*^zQA=cEN9}Vd?OEh| zgzbFf1?@LlPkcXH$;YZe`WEJ3si6&R2MRb}LYK&zK9WRD=kY-JMPUurX-t4(Wy{%` zZ@0WM2+IqPa9D(^*+MXw2NWwSX-_WdF0nMWpEhAyotIgqu5Y$wA=zfuXJ0Y2lL3#ji26-P3Z?-&0^KBc*`T$+8+cqp`%g0WB zTH9L)FZ&t073H4?t=(U6{8B+uRW_J_n*vW|p`DugT^3xe8Tomh^d}0k^G7$3wLgP& zn)vTWiMA&=bR8lX9H=uh4G04R6>C&Zjnx_f@MMY!6HK5v$T%vaFm;E8q=`w2Y}ucJ zkz~dKGqv9$E80NTtnx|Rf_)|3wxpnY6nh3U9<)fv2-vhQ6v=WhKO@~@X57N-`7Ppc zF;I7)eL?RN23FmGh0s;Z#+p)}-TgTJE%&>{W+}C`^-sy{gTm<$>rR z-X7F%MB9Sf%6o7A%ZHReD4R;imU6<9h81{%avv}hqugeaf=~^3A=x(Om6Lku-Pn9i zC;LP%Q7Xw*0`Kg1)X~nAsUfdV%HWrpr8dZRpd-#%)c#Fu^mqo|^b{9Mam`^Zw_@j@ zR&ZdBr3?@<@%4Z-%LT&RLgDUFs4a(CTah_5x4X`xDRugi#vI-cw*^{ncwMtA4NKjByYBza)Y$hozZCpuxL{IP&=tw6ZO52WY3|iwGf&IJCn+u(>icK zZB1~bWXCmwAUz|^<&ysd#*!DSp8}DLNbl5lRFat4NkvItxy;9tpp9~|@ z;JctShv^Iq4(z+y7^j&I?GCdKMVg&jCwtCkc4*@O7HY*veGDBtAIn*JgD$QftP}8= zxFAdF=(S>Ra6(4slk#h%b?EOU-96TIX$Jbfl*_7IY-|R%H zF8u|~hYS-YwWt5+^!uGcnKL~jM;)ObZ#q68ZkA?}CzV-%6_vPIdzh_wHT_$mM%vws9lxUj;E@#1UX?WO2R^41(X!nk$+2oJGr!sgcbn1f^yl1 z#pbPB&Bf;1&2+?};Jg5qgD1{4_|%X#s48rOLE!vx3@ktstyBsDQWwDz4GYlcgu$UJ zp|z_32yN72T*oT$SF8<}>e;FN^X&vWNCz>b2W0rwK#<1#kbV)Cf`vN-F$&knLo5T& z8!sO-*^x4=kJ$L&*h%rQ@49l?7_9IG99~xJDDil00<${~D&;kiqRQqeW5*22A`8I2 z(^@`qZoF7_`CO_e;8#qF!&g>UY;wD5MxWU>azoo=E{kW(GU#pbOi%XAn%?W{b>-bTt&2?G=E&BnK9m0zs{qr$*&g8afR_x`B~o zd#dxPpaap;I=>1j8=9Oj)i}s@V}oXhP*{R|@DAQXzQJekJnmuQ;vL90_)H_nD1g6e zS1H#dzg)U&6$fz0g%|jxDdz|FQN{KJ&Yx0vfuzAFewJjv`pdMRpY-wU`-Y6WQnJ(@ zGVb!-8DRJZvHnRFiR3PG3Tu^nCn(CcZHh7hQvyd7i6Q3&ot86XI{jo%WZqCPcTR0< zMRg$ZE=PQx66ovJDvI_JChN~k@L^Pyxv#?X^<)-TS5gk`M~d<~j%!UOWG;ZMi1af< z+86U0=sm!qAVJAIqqU`Qs1uJhQJA&n@9F1PUrYuW!-~IT>l$I!#5dBaiAK}RUufjg{$#GdQBkxF1=KU2E@N=i^;xgG2Y4|{H>s` z$t`k8c-8`fS7Yfb1FM#)vPKVE4Uf(Pk&%HLe z%^4L>@Z^9Z{ZOX<^e)~adVRkKJDanJ6VBC_m@6qUq_WF@Epw>AYqf%r6qDzQ~AEJ!jtUvLp^CcqZ^G-;Kz3T;O4WG45Z zFhrluCxlY`M+OKr2SeI697btH7Kj`O>A!+2DTEQ=48cR>Gg2^5uqp(+y5Sl09MRl* zp|28!v*wvMd_~e2DdKDMMQ|({HMn3D%%ATEecGG8V9>`JeL)T0KG}=}6K8NiSN5W< z79-ZdYWRUb`T}(b{RjN8>?M~opnSRl$$^gT`B27kMym5LNHu-k;A;VF8R(HtDYJHS zU7;L{a@`>jd0svOYKbwzq+pWSC(C~SPgG~nWR3pBA8@OICK$Cy#U`kS$I;?|^-SBC zBFkoO8Z^%8Fc-@X!KebF2Ob3%`8zlVHj6H;^(m7J35(_bS;cZPd}TY~qixY{MhykQ zV&7u7s%E=?i`}Ax-7dB0ih47w*7!@GBt<*7ImM|_mYS|9_K7CH+i}?*#o~a&tF-?C zlynEu1DmiAbGurEX2Flfy$wEVk7AU;`k#=IQE*6DMWafTL|9-vT0qs{A3mmZGzOyN zcM9#Rgo7WgB_ujU+?Q@Ql?V-!E=jbypS+*chI&zA+C_3_@aJal}!Q54?qsL0In({Ly zjH;e+_SK8yi0NQB%TO+Dl77jp#2pMGtwsgaC>K!)NimXG3;m7y`W+&<(ZaV>N*K$j zLL~I+6ouPk6_(iO>61cIsinx`5}DcKSaHjYkkMuDoVl>mKO<4$F<>YJ5J9A2Vl}#BP7+u~L8C6~D zsk`pZ$9Bz3teQS1Wb|8&c2SZ;qo<#F&gS;j`!~!ADr(jJXMtcDJ9cVi>&p3~{bqaP zgo%s8i+8V{UrYTc9)HiUR_c?cfx{Yan2#%PqJ{%?Wux4J;T$#cumM0{Es3@$>}DJg zqe*c8##t;X(4$?A`ve)e@YU3d2Balcivot{1(ahlE5qg@S-h(mPNH&`pBX$_~HdG48~)$x5p z{>ghzqqn_t8~pY<5?-To>cy^6o~mifr;KWvx_oMtXOw$$d6jddXG)V@a#lL4o%N@A zNJlQAz6R8{7jax-kQsH6JU_u*En%k^NHlvBB!$JAK!cYmS)HkLAkm0*9G3!vwMIWv zo#)+EamIJHEUV|$d|<)2iJ`lqBQLx;HgD}c3mRu{iK23C>G{0Mp1K)bt6OU?xC4!_ zZLqpFzeu&+>O1F>%g-%U^~yRg(-wSp@vmD-PT#bCWy!%&H;qT7rfuRCEgw67V!Qob z&tvPU@*4*$YF#2_>M0(75QxqrJr3Tvh~iDeFhxl=MzV@(psx%G8|I{~9;tv#BBE`l z3)_98eZqFNwEF1h)uqhBmT~mSmT8k$7vSHdR97K~kM)P9PuZdS;|Op4A?O<*%!?h` zn`}r_j%xvffs46x2hCWuo0BfIQWCw9aKkH==#B(TJ%p}p-RuIVzsRlaPL_Co{&R0h zQrqn=g1PGjQg3&sc2IlKG0Io#v%@p>tFwF)RG0ahYs@Zng6}M*d}Xua)+h&?$`%rb z;>M=iMh5eIHuJ5c$aC`y@CYjbFsJnSPH&}LQz4}za9YjDuao>Z^EdL@%saRm&LGQWXs*;FzwN#pH&j~SLhDZ+QzhplV_ij(NyMl z;v|}amvxRddO81LJFa~2QFUs z+Lk zZck)}9uK^buJNMo4G(rSdX{57(7&n=Q6$QZ@lIO9#<3pA2ceDpO_340B*pHlh_y{>i&c1?vdpN1j>3UN-;;Yq?P+V5oY`4Z(|P8SwWq<)n`W@AwcQ?E9 zd5j8>FT^m=MHEWfN9jS}UHHsU`&SScib$qd0i=ky0>4dz5ADy70AeIuSzw#gHhQ_c zOp1!v6qU)@8MY+ zMNIID?(CysRc2uZQ$l*QZVY)$X?@4$VT^>djbugLQJdm^P>?51#lXBkdXglYm|4{L zL%Sr?2f`J+xrcN@=0tiJt(<-=+v>tHy{XaGj7^cA6felUn_KPa?V4ebfq7~4i~GKE zpm)e@1=E;PP%?`vK6KVPKXjUXyLS1^NbnQ&?z>epHCd+J$ktT1G&L~T)nQeExe;0Z zlei}<_ni ztFo}j7nBl$)s_3odmdafVieFxc)m!wM+U`2u%yhJ90giFcU1`dR6BBTKc2cQ*d zm-{?M&%(={xYHy?VCx!ogr|4g5;V{2q(L?QzJGsirn~kWHU`l`rHiIrc-Nan!hR7zaLsPr4uR zG{En&gaRK&B@lyWV@yfFpD_^&z>84~_0Rd!v(Nr%PJhFF_ci3D#ixf|(r@$igZiWw za*qbXIJ_Hm4)TaQ=zW^g)FC6uvyO~Hg-#Z5Vsrybz6uOTF>Rq1($JS`imyNB7myWWpxYL(t7`H8*voI3Qz6mvm z$JxtArLJ(1wlCO_te?L{>8YPzQ})xJlvc5wv8p7Z=HviPYB#^#_vGO#*`<0r%MR#u zN_mV4vaBb2RwtoOYCw)X^>r{2a0kK|WyEYoBjGxcObFl&P*??)WEWKU*V~zG5o=s@ z;rc~uuQQf9wf)MYWsWgPR!wKGt6q;^8!cD_vxrG8GMoFGOVV=(J3w6Xk;}i)9(7*U zwR4VkP_5Zx7wqn8%M8uDj4f1aP+vh1Wue&ry@h|wuN(D2W;v6b1^ z`)7XBZ385zg;}&Pt@?dunQ=RduGRJn^9HLU&HaeUE_cA1{+oSIjmj3z+1YiOGiu-H zf8u-oVnG%KfhB8H?cg%@#V5n+L$MO2F4>XoBjBeX>css^h}Omu#)ExTfUE^07KOQS znMfQY2wz?!7!{*C^)aZ^UhMZf=TJNDv8VrrW;JJ9`=|L0`w9DE8MS>+o{f#{7}B4P z{I34>342vLsP}o=ny1eZkEabr@niT5J2AhByUz&i3Ck0H*H`LRHz;>3C_ru!X+EhJ z6(+(lI#4c`2{`q0o9aZhI|jRjBZOV~IA_km7ItNtUa(Wsr*Hmb;b4=;R(gF@GmsRI`pF+0tmq0zy~wnoJD(LSEwHjTOt4xb0XB-+ z&4RO{Snw4G%gS9w#uSUK$Zbb#=jxEl;}6&!b-rSY$0M4pftat-$Q)*y!bpx)R%P>8 zrB&`YEX2%+s#lFCIV;cUFUTIR$Gn2%F(3yLeiG8eG8&)+cpBlzx4)sK?>uIlH+$?2 z9q9wk5zY-xr_fzFSGxYp^KSY0s%1BhsI>ai2VAc8&JiwQ>3RRk?ITx!t~r45qsMnj zkX4bl06ojFCMq<9l*4NHMAtIxDJOX)H=K*$NkkNG<^nl46 zHWH1GXb?Og1f0S+8-((5yaeegCT62&4N*pNQY;%asz9r9Lfr;@Bl${1@a4QAvMLbV6JDp>8SO^q1)#(o%k!QiRSd0eTmzC< zNIFWY5?)+JTl1Roi=nS4%@5iF+%XztpR^BSuM~DX9q`;Mv=+$M+GgE$_>o+~$#?*y zAcD4nd~L~EsAjXV-+li6Lua4;(EFdi|M2qV53`^4|7gR8AJI;0Xb6QGLaYl1zr&eu zH_vFUt+Ouf4SXA~ z&Hh8K@ms^`(hJfdicecj>J^Aqd00^ccqN!-f-!=N7C1?`4J+`_f^nV!B3Q^|fuU)7 z1NDNT04hd4QqE+qBP+>ZE7{v;n3OGN`->|lHjNL5w40pePJ?^Y6bFk@^k%^5CXZ<+4qbOplxpe)l7c6m%o-l1oWmCx%c6@rx85hi(F=v(2 zJ$jN>?yPgU#DnbDXPkHLeQwED5)W5sH#-eS z%#^4dxiVs{+q(Yd^ShMN3GH)!h!@W&N`$L!SbElXCuvnqh{U7lcCvHI#{ZjwnKvu~ zAeo7Pqot+Ohm{8|RJsTr3J4GjCy5UTo_u_~p)MS&Z5UrUc|+;Mc(YS+ju|m3Y_Dvt zonVtpBWlM718YwaN3a3wUNqX;7TqvAFnVUoD5v5WTh~}r)KoLUDw%8Rrqso~bJqd> z_T!&Rmr6ebpV^4|knJZ%qmzL;OvG3~A*loGY7?YS%hS{2R0%NQ@fRoEK52Aiu%gj( z_7~a}eQUh8PnyI^J!>pxB(x7FeINHHC4zLDT`&C*XUpp@s0_B^!k5Uu)^j_uuu^T> z8WW!QK0SgwFHTA%M!L`bl3hHjPp)|wL5Var_*A1-H8LV?uY5&ou{hRjj>#X@rxV>5%-9hbP+v?$4}3EfoRH;l_wSiz{&1<+`Y5%o%q~4rdpRF0jOsCoLnWY5x?V)0ga>CDo`NpqS) z@x`mh1QGkx;f)p-n^*g5M^zRTHz%b2IkLBY{F+HsjrFC9_H(=9Z5W&Eymh~A_FUJ} znhTc9KG((OnjFO=+q>JQZJbeOoUM77M{)$)qQMcxK9f;=L;IOv_J>*~w^YOW744QZ zoG;!b9VD3ww}OX<8sZ0F##8hvfDP{hpa3HjaLsKbLJ8 z0WpY2E!w?&cWi7&N%bOMZD~o7QT*$xCRJ@{t31~qx~+0yYrLXubXh2{_L699Nl_pn z6)9eu+uUTUdjHXYs#pX^L)AIb!FjjNsTp7C399w&B{Q4q%yKfmy}T2uQdU|1EpNcY zDk~(h#AdxybjfzB+mg6rdU9mDZ^V>|U13Dl$Gj+pAL}lR2a1u!SJXU_YqP9N{ose4 zk+$v}BIHX60WSGVWv;S%zvHOWdDP(-ceo(<8`y@Goy%4wDu>57QZNJc)f>Ls+}9h7 z^N=#3q3|l?aG8K#HwiW2^PJu{v|x5;awYfahC?>_af3$LmMc4%N~JwVlRZa4c+eW2 zE!zosAjOv&UeCeu;Bn5OQUC=jtZjF;NDk9$fGbxf3d29SUBekX1!a$Vmq_VK*MHQ4)eB!dQrHH)LVYNF%-t8!d`@!cb z2CsKs3|!}T^7fSZm?0dJ^JE`ZGxA&a!jC<>6_y67On0M)hd$m*RAzo_qM?aeqkm`* zXpDYcc_>TFZYaC3JV>{>mp(5H^efu!Waa7hGTAts29jjuVd1vI*fEeB?A&uG<8dLZ z(j6;-%vJ7R0U9}XkH)1g>&uptXPHBEA*7PSO2TZ+dbhVxspNW~ZQT3fApz}2 z_@0-lZODcd>dLrYp!mHn4k>>7kibI!Em+Vh*;z}l?0qro=aJt68joCr5Jo(Vk<@i) z5BCKb4p6Gdr9=JSf(2Mgr=_6}%4?SwhV+JZj3Ox^_^OrQk$B^v?eNz}d^xRaz&~ zKVnlLnK#8^y=If2f1zmb~^5lPLe?%l}>?~wN4IN((2~U{e9fKhLMtYFj)I$(y zgnKv?R+ZpxA$f)Q2l=aqE6EPTK=i0sY&MDFJp!vQayyvzh4wee<}kybNthRlX>SHh z7S}9he^EBOqzBCww^duHu!u+dnf9veG{HjW!}aT7aJqzze9K6-Z~8pZAgdm1n~aDs z8_s7?WXMPJ3EPJHi}NL&d;lZP8hDhAXf5Hd!x|^kEHu`6QukXrVdLnq5zbI~oPo?7 z2Cbu8U?$K!Z4_yNM1a(bL!GRe!@{Qom+DxjrJ!B99qu5b*Ma%^&-=6UEbC+S2zX&= zQ!%bgJTvmv^2}hhvNQg!l=kbapAgM^hruE3k@jTxsG(B6d=4thBC*4tzVpCYXFc$a zeqgVB^zua)y-YjpiibCCdU%txXYeNFnXcbNj*D?~)5AGjL+!!ij_4{5EWKGav0^={~M^q}baAFOPzxfUM>`KPf|G z&hsaR*7(M6KzTj8Z?;45zX@L#xU{4n$9Q_<-ac(y4g~S|Hyp^-<*d8+P4NHe?~vfm z@y309=`lGdvN8*jw-CL<;o#DKc-%lb0i9a3%{v&2X($|Qxv(_*()&=xD=5oBg=$B0 zU?41h9)JKvP0yR{KsHoC>&`(Uz>?_`tlLjw1&5tPH3FoB%}j;yffm$$s$C=RHi`I3*m@%CPqWnP@B~%DEe;7ZT{9!IMTo1hT3Q347HJ&!)BM2 z3~aClf>aFh0_9||4G}(Npu`9xYY1*SD|M~9!CCFn{-J$u2&Dg*=5$_nozpoD2nxqq zB!--eA8UWZlcEDp4r#vhZ6|vq^9sFvRnA9HpHch5Mq4*T)oGbruj!U8Lx_G%Lby}o zTQ-_4A7b)5A42vA0U}hUJq6&wQ0J%$`w#ph!EGmW96)@{AUx>q6E>-r^Emk!iCR+X zdIaNH`$}7%57D1FyTccs3}Aq0<0Ei{`=S7*>pyg=Kv3nrqblqZcpsCWSQl^uMSsdj zYzh73?6th$c~CI0>%5@!Ej`o)Xm38u0fp9=HE@Sa6l2oX9^^4|Aq%GA z3(AbFR9gA_2T2i%Ck5V2Q2WW-(a&(j#@l6wE4Z`xg#S za#-UWUpU2U!TmIo`CN0JwG^>{+V#9;zvx;ztc$}@NlcyJr?q(Y`UdW6qhq!aWyB5xV1#Jb{I-ghFNO0 zFU~+QgPs{FY1AbiU&S$QSix>*rqYVma<-~s%ALhFyVhAYepId1 zs!gOB&weC18yhE-v6ltKZMV|>JwTX+X)Y_EI(Ff^3$WTD|Ea-1HlP;6L~&40Q&5{0 z$e$2KhUgH8ucMJxJV#M%cs!d~#hR^nRwk|uuCSf6irJCkSyI<%CR==tftx6d%;?ef zYIcjZrP@APzbtOeUe>m-TW}c-ugh+U*RbL1eIY{?>@8aW9bb1NGRy@MTse@>= za%;5=U}X%K2tKTYe9gjMcBvX%qrC&uZ`d(t)g)X8snf?vBe3H%dG=bl^rv8Z@YN$gd9yveHY0@Wt0$s zh^7jCp(q+6XDoekb;=%y=Wr8%6;z0ANH5dDR_VudDG|&_lYykJaiR+(y{zpR=qL3|2e${8 z2V;?jgHj7}Kl(d8C9xWRjhpf_)KOXl+@c4wrHy zL3#9U(`=N59og2KqVh>nK~g9>fX*PI0`>i;;b6KF|8zg+k2hViCt}4dfMdvb1NJ-Rfa7vL2;lPK{Lq*u`JT>S zoM_bZ_?UY6oV6Ja14X^;LqJPl+w?vf*C!nGK;uU^0GRN|UeFF@;H(Hgp8x^|;ygh? zIZx3DuO(lD01ksanR@Mn#lti=p28RTNYY6yK={RMFiVd~k8!@a&^jicZ&rxD3CCI! zVb=fI?;c#f{K4Pp2lnb8iF2mig)|6JEmU86Y%l}m>(VnI*Bj`a6qk8QL&~PFDxI8b z2mcsQBe9$q`Q$LfG2wdvK`M1}7?SwLAV&)nO;kAk`SAz%x9CDVHVbUd$O(*aI@D|s zLxJW7W(QeGpQY<$dSD6U$ja(;Hb3{Zx@)*fIQaW{8<$KJ&fS0caI2Py^clOq9@Irt z7th7F?7W`j{&UmM==Lo~T&^R7A?G=K_e-zfTX|)i`pLitlNE(~tq*}sS1x2}Jlul6 z5+r#4SpQu8h{ntIv#qCVH`uG~+I8l+7ZG&d`Dm!+(rZQDV*1LS^WfH%-!5aTAxry~ z4xl&rot5ct{xQ$w$MtVTUi6tBFSJWq2Rj@?HAX1H$eL*fk{Hq;E`x|hghRkipYNyt zKCO=*KSziiVk|+)qQCGrTYH9X!Z0$k{Nde~0Wl`P{}ca%nv<6fnYw^~9dYxTnTZB&&962jX0DM&wy&8fdxX8xeHSe=UU&Mq zRTaUKnQO|A>E#|PUo+F=Q@dMdt`P*6e92za(TH{5C*2I2S~p?~O@hYiT>1(n^Lqqn zqewq3ctAA%0E)r53*P-a8Ak32mGtUG`L^WVcm`QovX`ecB4E9X60wrA(6NZ7z~*_DV_e z8$I*eZ8m=WtChE{#QzeyHpZ%7GwFHlwo2*tAuloI-j2exx3#x7EL^&D;Re|Kj-XT- zt908^soV2`7s+Hha!d^#J+B)0-`{qIF_x=B811SZlbUe%kvPce^xu7?LY|C z@f1gRPha1jq|=f}Se)}v-7MWH9)YAs*FJ&v3ZT9TSi?e#jarin0tjPNmxZNU_JFJG z+tZi!q)JP|4pQ)?l8$hRaPeoKf!3>MM-bp06RodLa*wD=g3)@pYJ^*YrwSIO!SaZo zDTb!G9d!hb%Y0QdYxqNSCT5o0I!GDD$Z@N!8J3eI@@0AiJmD7brkvF!pJGg_AiJ1I zO^^cKe`w$DsO|1#^_|`6XTfw6E3SJ(agG*G9qj?JiqFSL|6tSD6vUwK?Cwr~gg)Do zp@$D~7~66-=p4`!!UzJDKAymb!!R(}%O?Uel|rMH>OpRGINALtg%gpg`=}M^Q#V5( zMgJY&gF)+;`e38QHI*c%B}m94o&tOfae;og&!J2;6ENW}QeL73jatbI1*9X~y=$Dm%6FwDcnCyMRL}zo`0=y7=}*Uw zo3!qZncAL{HCgY!+}eKr{P8o27ye+;qJP;kOB%RpSesGoHLT6tcYp*6v~Z9NCyb6m zP#qds0jyqXX46qMNhXDn3pyIxw2f_z;L_X9EIB}AhyC`FYI}G3$WnW>#NMy{0aw}nB%1=Z4&*(FaCn5QG(zvdG^pQRU25;{wwG4h z@kuLO0F->{@g2!;NNd!PfqM-;@F0;&wK}0fT9UrH}(8A5I zt33(+&U;CLN|8+71@g z(s!f-kZZZILUG$QXm9iYiE*>2w;gpM>lgM{R9vT3q>qI{ELO2hJHVi`)*jzOk$r)9 zq}$VrE0$GUCm6A3H5J-=Z9i*biw8ng zi<1nM0lo^KqRY@Asucc#DMmWsnCS;5uPR)GL3pL=-IqSd>4&D&NKSGHH?pG;=Xo`w zw~VV9ddkwbp~m>9G0*b?j7-0fOwR?*U#BE#n7A=_fDS>`fwatxQ+`FzhBGQUAyIRZ??eJt46vHBlR>9m!vfb6I)8!v6TmtZ%G6&E|1e zOtx5xy%yOSu+<9Ul5w5N=&~4Oph?I=ZKLX5DXO(*&Po>5KjbY7s@tp$8(fO|`Xy}Y z;NmMypLoG7r#Xz4aHz7n)MYZ7Z1v;DFHLNV{)to;(;TJ=bbMgud96xRMME#0d$z-S z-r1ROBbW^&YdQWA>U|Y>{whex#~K!ZgEEk=LYG8Wqo28NFv)!t!~}quaAt}I^y-m| z8~E{9H2VnyVxb_wCZ7v%y(B@VrM6lzk~|ywCi3HeiSV`TF>j+Ijd|p*kyn;=mqtf8&DK^|*f+y$38+9!sis9N=S)nINm9=CJ<;Y z!t&C>MIeyou4XLM*ywT_JuOXR>VkpFwuT9j5>667A=CU*{TBrMTgb4HuW&!%Yt`;#md7-`R`ouOi$rEd!ErI zo#>qggAcx?C7`rQ2;)~PYCw%CkS(@EJHZ|!!lhi@Dp$*n^mgrrImsS~(ioGak>3)w zvop0lq@IISuA0Ou*#1JkG{U>xSQV1e}c)!d$L1plFX5XDXX5N7Ns{kT{y5|6MfhBD+esT)e7&CgSW8FxsXTAY=}?0A!j_V9 zJ;IJ~d%av<@=fNPJ9)T3qE78kaz64E>dJaYab5uaU`n~Zdp2h{8DV%SKE5G^$LfuOTRRjB;TnT(Jk$r{Pfe4CO!SM_7d)I zquW~FVCpSycJ~c*B*V8?Qqo=GwU8CkmmLFugfHQ7;A{yCy1OL-+X=twLYg9|H=~8H znnN@|tCs^ZLlCBl5wHvYF}2vo>a6%mUWpTds_mt*@wMN4-r`%NTA%+$(`m6{MNpi@ zMx)8f>U4hd!row@gM&PVo&Hx+lV@$j9yWTjTue zG9n0DP<*HUmJ7ZZWwI2x+{t3QEfr6?T}2iXl=6e0b~)J>X3`!fXd9+2wc1%cj&F@Z zgYR|r5Xd5jy9;YW&=4{-0rJ*L5CgDPj9^3%bp-`HkyBs`j1iTUGD4?WilZ6RO8mIE z+~Joc?GID6K96dyuv(dWREK9Os~%?$$FxswxQsoOi8M?RnL%B~Lyk&(-09D0M?^Jy zWjP)n(b)TF<-|CG%!Vz?8Fu&6iU<>oG#kGcrcrrBlfZMVl0wOJvsq%RL9To%iCW@)#& zZAJWhgzYAq)#NTNb~3GBcD%ZZOc43!YWSyA7TD6xkk)n^FaRAz73b}%9d&YisBic(?mv=Iq^r%Ug zzHq-rRrhfOOF+yR=AN!a9*Rd#sM9ONt5h~w)yMP7Dl9lfpi$H0%GPW^lS4~~?vI8Z z%^ToK#NOe0ExmUsb`lLO$W*}yXNOxPe@zD*90uTDULnH6C?InP3J=jYEO2d)&e|mP z1DSd0QOZeuLWo*NqZzopA+LXy9)fJC00NSX=_4Mi1Z)YyZVC>C!g}cY(Amaj%QN+bev|Xxd2OPD zk!dfkY6k!(sDBvsFC2r^?}hb81(WG5Lt9|riT`2?P;B%jaf5UX<~OJ;uAL$=Ien+V zC!V8u0v?CUa)4*Q+Q_u zkx{q;NjLcvyMuU*{+uDsCQ4U{JLowYby-tn@hatL zy}X>9y08#}oytdn^qfFesF)Tt(2!XGw#r%?7&zzFFh2U;#U9XBO8W--#gOpfbJ`Ey z|M8FCKlWQrOJwE;@Sm02l9OBr7N}go4V8ur)}M@m2uWjggb)DC4s`I4d7_8O&E(j; z?3$9~R$QDxNM^rNh9Y;6P7w+bo2q}NEd6f&_raor-v`UCaTM3TT8HK2-$|n{N@U>_ zL-`P7EXoEU5JRMa)?tNUEe8XFis+w8g9k(QQ)%?&Oac}S`2V$b?%`DwXBgja&&fR@ zH_XidF$p1wA)J|Wk1;?lCl?fgc)=TB3>Y8;BoMqHwJqhL)Tgydv9(?(TBX)fq%=~C zmLj!iX-kn7QA(9snzk0LRf<%SzO&~IhLor6A3f*U^UcoAygRe!H#@UCv$JUP&vPxs zeDj$1%#<2T1!e|!7xI+~_VXLl5|jHqvOhU7ZDUGee;HnkcPP=_k_FFxPjXg*9KyI+ zIh0@+s)1JDSuKMeaDZ3|<_*J8{TUFDLl|mXmY8B>Wj_?4mC#=XjsCKPEO=p0c&t&Z zd1%kHxR#o9S*C?du*}tEHfAC7WetnvS}`<%j=o7YVna)6pw(xzkUi7f#$|^y4WQ{7 zu@@lu=j6xr*11VEIY+`B{tgd(c3zO8%nGk0U^%ec6h)G_`ki|XQXr!?NsQkxzV6Bn1ea9L+@ z(Zr7CU_oXaW>VOdfzENm+FlFQ7Se0ROrNdw(QLvb6{f}HRQ{$Je>(c&rws#{dFI^r zZ4^(`J*G0~Pu_+p5AAh>RRpkcbaS2a?Fe&JqxDTp`dIW9;DL%0wxX5;`KxyA4F{(~_`93>NF@bj4LF!NC&D6Zm+Di$Q-tb2*Q z&csGmXyqA%Z9s(AxNO3@Ij=WGt=UG6J7F;r*uqdQa z?7j!nV{8eQE-cwY7L(3AEXF3&V*9{DpSYdyCjRhv#&2johwf{r+k`QB81%!aRVN<& z@b*N^xiw_lU>H~@4MWzgHxSOGVfnD|iC7=hf0%CPm_@@4^t-nj#GHMug&S|FJtr?i z^JVrobltd(-?Ll>)6>jwgX=dUy+^n_ifzM>3)an3iOzpG9Tu;+96TP<0Jm_PIqof3 zMn=~M!#Ky{CTN_2f7Y-i#|gW~32RCWKA4-J9sS&>kYpTOx#xVNLCo)A$LUme^fVNH z@^S7VU^UJ0YR8?Oy$^IYuG*bm|g;@aX~i60%`7XLy*AYpYvZ^F^U(!|RW z*C!rJ@+7TGdL=nNd1gv^%B+;Fcr$y)i0!GRsZXRHPs>QVGVR{9r_#&Qd(wL|5;H;> zD>HUw=4CF++&{7$<8G@j*nGjhEO%BQYfjeItp4mPvY*JYb1HKd!{HJ9*)(3%BR%{Pp?AM&*yHAJsW({ivOzj*qS!-7|XEn6@zo z3L*tBT%<4RxoAh>q{0n_JBmgW6&8hx?kL(_^k%VL>?xjAyrKBmSl`$=V|SK}ELl}@ zd|d0eo#RfG`bw9SK3%r4Y+rdvc}w}~ixV%tqawbdqvE-WcgE+BUpxMT%F@btm76MG zn=oQRWWuTm+a{dy)Oc2V4yX(@M{QAkx>(QB59*`dLT`Pz3Lsj9iB=HSHAiCq()ns|Cr)1*c605Cx}3V&x}Lg?b+6Q?)z7Kl zQh&1Hx`y6JY-Cwvd*ozeps}a1xAA0CR+Da;+O(i)P1C;SjOI}Dtmf6tPqo-Bl`U78 zv$kYgPntPp@G)n1an9tEoL*Vumu9`>_@I(;+5+fBa-*?fEx=mTEjZ7wq}#@Gd5_cW z!mP{N=yqEntDo)|>oy6{9cu+-3*GTnmb^`O0^FzRPO^&aG`f@F_R*aQ_e{F+_9%NW z4KG_B`@X3EVV9L>?_RNDMddA>w=e0KfAiw5?#i1NFT%Zz#nuv(&!yIU>lVxmzYKQ` zzJ*0w9<&L4aJ6A;0j|_~i>+y(q-=;2Xxhx2v%CYY^{} z^J@LO()eLo|7!{ghQ+(u$wxO*xY#)cL(|miH2_ck2yN{mu4O9=hBW*pM_()-_YdH#Ru{JtwJ^R2}3?!>>m1pohh zrn(!xCjE0Q&EH1QK?zA%sxVh&H99cObJUY$veZhQ)MLu-h%`!*G)s$2k;~+A z)Kk->Ri?`oGDEJEtI*wijm(s5f$W78FH{+qBxiU{~kq((J3uK{m z$|C8K#j-?hm8H@x%VfFqpnvu@xn1s%J7uNZC9C99a<_b1J|mx%)$%!6gPU|~<@2&m zz99GDp`|a%m*iggvfL;4%X;~WY>)@!tMWB@P`)k?$;0x9JSrRI8?s3rlgH(o@`OAo zn{f*gZ#t2u6K??hx|aElOM`Xd0t+SAIUEHvFw%?Wsm$s zUXq{6UU?a>Nc@@Xlb_2k9M1Ctr<#+O?yd}rv z_wu&=_t$!Yngd@N_AUj}T; z#*Ce|%XZr_sQcsWcsl{pCnnj+c8ZNIMmx<;w=-g$Q>BU;9k;w|zQ;4!W32Xg2Cd?{ zvmO3kuKQ^Hv;o>6ZHP8ZJ2`4~Bx?N;cf<0fi=!*G^^WzbTF3e$b&d^qqB{>nqLG81 zs94bBh%|Vj+hLu=!8(b9brJ>ZBns9^6s(gdSVyP9qnu2_I{Sg8j-rloG6{d`De5We zDe5WeY3ga}Y3ga}Y3ga}Y3ga}Y3ga}d8y~6o|k%F>UpW>rJk31Ug~+N=cS&HdOqs; zsOO`ek9t1p`Kafko{xGy>iMbXr=FjBxZMYc8a#gL`Kjlpo}YSt>iMY`pk9DF0qO*( z6QE9jIsxhgs1u-0kUBx8D@eT{^@7w3QZGooAoYUO3sNscy%6<6)C*BBM7L`dk$Xk%6}eZQXgo#!75P`>Uy*-B{uTLGUy*-B{uTLGUy*-B{uTLG))v8{5gt_uj9!t5)^yb-JtjRGrhi zYInOUNJxNyf_yKX01)K=WP|Si>HqEj|B{eUl?MR<)%<1&{(~)D+NPwKxWqT-@~snp zg9KCz1VTZDiS?UH`PRk1VPM{29cgT9=D?!Wc_@}qzggFv;gb@2cJQAYWWtpEZ7?y@jSVqjx${B5UV@SO|wH<<0; z{><1KdVI%Ki}>~<`46C0AggwUwx-|QcU;iiZ{NZu`ur>hd*|Hb(|6veERqxu=b@5Bab=rqptGxd{QJg!4*-i_$sES~)AB46}Fjg|ea#e@?J}z%CUJ zOsLWRQR1#ng^sD)A4FDuY!iUhzlgfJh(J@BRqd&P#v2B`+saBx>m+M&q7vk-75$NH%T5pi%m z5FX?`2-5l53=a&GkC9^NZCLpN5(DMKMwwab$FDIs?q>4!!xBS}75gX_5;(luk;3Vl zLCLd5a_8`Iyz}K}+#RMwu6DVk3O_-}n>aE!4NaD*sQn`GxY?cHe!Bl9n?u&g6?aKm z-P8z&;Q3gr;h`YIxX%z^o&GZZg1=>_+hP2$$-DnL_?7?3^!WAsY4I7|@K;aL<>OTK zByfjl2PA$T83*LM9(;espx-qB%wv7H2i6CFsfAg<9V>Pj*OpwX)l?^mQfr$*OPPS$ z=`mzTYs{*(UW^ij1U8UfXjNoY7GK*+YHht(2oKE&tfZuvAyoN(;_OF>-J6AMmS5fB z^sY6wea&&${+!}@R1f$5oC-2J>J-A${@r(dRzc`wnK>a7~8{Y-scc|ETOI8 zjtNY%Y2!PI;8-@a=O}+{ap1Ewk0@T`C`q!|=KceX9gK8wtOtIC96}-^7)v23Mu;MH zhKyLGOQMujfRG$p(s`(2*nP4EH7*J57^=|%t(#PwCcW7U%e=8Jb>p6~>RAlY4a*ts=pl}_J{->@kKzxH|8XQ5{t=E zV&o`$D#ZHdv&iZWFa)(~oBh-Osl{~CS0hfM7?PyWUWsr5oYlsyC1cwULoQ4|Y5RHA2*rN+EnFPnu z`Y_&Yz*#550YJwDy@brZU>0pWV^RxRjL221@2ABq)AtA%Cz?+FG(}Yh?^v)1Lnh%D zeM{{3&-4#F9rZhS@DT0E(WRkrG!jC#5?OFjZv*xQjUP~XsaxL2rqRKvPW$zHqHr8Urp2Z)L z+)EvQeoeJ8c6A#Iy9>3lxiH3=@86uiTbnnJJJoypZ7gco_*HvKOH97B? zWiwp>+r}*Zf9b3ImxwvjL~h~j<<3shN8$k-$V1p|96I!=N6VBqmb==Bec|*;HUg?) z4!5#R*(#Fe)w%+RH#y{8&%%!|fQ5JcFzUE;-yVYR^&Ek55AXb{^w|@j|&G z|6C-+*On%j;W|f8mj?;679?!qY86c{(s1-PI2Wahoclf%1*8%JAvRh1(0)5Vu37Iz z`JY?RW@qKr+FMmBC{TC7k@}fv-k8t6iO}4K-i3WkF!Lc=D`nuD)v#Na zA|R*no51fkUN3^rmI;tty#IK284*2Zu!kG13!$OlxJAt@zLU`kvsazO25TpJLbK&;M8kw*0)*14kpf*)3;GiDh;C(F}$- z1;!=OBkW#ctacN=je*Pr)lnGzX=OwgNZjTpVbFxqb;8kTc@X&L2XR0A7oc!Mf2?u9 zcctQLCCr+tYipa_k=;1ETIpHt!Jeo;iy^xqBES^Ct6-+wHi%2g&)?7N^Yy zUrMIu){Jk)luDa@7We5U!$$3XFNbyRT!YPIbMKj5$IEpTX1IOtVP~(UPO2-+9ZFi6 z-$3<|{Xb#@tABt0M0s1TVCWKwveDy^S!!@4$s|DAqhsEv--Z}Dl)t%0G>U#ycJ7cy z^8%;|pg32=7~MJmqlC-x07Sd!2YX^|2D`?y;-$a!rZ3R5ia{v1QI_^>gi(HSS_e%2 zUbdg^zjMBBiLr8eSI^BqXM6HKKg#@-w`a**w(}RMe%XWl3MipvBODo*hi?+ykYq)z ziqy4goZw0@VIUY65+L7DaM5q=KWFd$;W3S!Zi>sOzpEF#(*3V-27N;^pDRoMh~(ZD zJLZXIam0lM7U#)119Hm947W)p3$%V`0Tv+*n=&ybF&}h~FA}7hEpA&1Y!BiYIb~~D z$TSo9#3ee02e^%*@4|*+=Nq6&JG5>zX4k5f?)z*#pI-G(+j|jye%13CUdcSP;rNlY z#Q!X%zHf|V)GWIcEz-=fW6AahfxI~y7w7i|PK6H@@twdgH>D_R@>&OtKl}%MuAQ7I zcpFmV^~w~8$4@zzh~P~+?B~%L@EM3x(^KXJSgc6I=;)B6 zpRco2LKIlURPE*XUmZ^|1vb?w*ZfF}EXvY13I4af+()bAI5V?BRbFp`Sb{8GRJHd* z4S2s%4A)6Uc=PK%4@PbJ<{1R6+2THMk0c+kif**#ZGE)w6WsqH z`r^DL&r8|OEAumm^qyrryd(HQ9olv$ltnVGB{aY?_76Uk%6p;e)2DTvF(;t=Q+|8b zqfT(u5@BP);6;jmRAEV057E*2d^wx@*aL1GqWU|$6h5%O@cQtVtC^isd%gD7PZ_Io z_BDP5w(2*)Mu&JxS@X%%ByH_@+l>y07jIc~!@;Raw)q_;9oy@*U#mCnc7%t85qa4? z%_Vr5tkN^}(^>`EFhag;!MpRh!&bKnveQZAJ4)gEJo1@wHtT$Gs6IpznN$Lk-$NcM z3ReVC&qcXvfGX$I0nfkS$a|Pm%x+lq{WweNc;K>a1M@EAVWs2IBcQPiEJNt}+Ea8~WiapASoMvo(&PdUO}AfC~>ZGzqWjd)4no( ziLi#e3lOU~sI*XPH&n&J0cWfoh*}eWEEZW%vX?YK!$?w}htY|GALx3;YZoo=JCF4@ zdiaA-uq!*L5;Yg)z-_`MciiIwDAAR3-snC4V+KA>&V%Ak;p{1u>{Lw$NFj)Yn0Ms2*kxUZ)OTddbiJM}PK!DM}Ot zczn?EZXhx3wyu6i{QMz_Ht%b?K&-@5r;8b076YDir`KXF0&2i9NQ~#JYaq*}Ylb}^ z<{{6xy&;dQ;|@k_(31PDr!}}W$zF7Jv@f%um0M$#=8ygpu%j(VU-d5JtQwT714#f0z+Cm$F9JjGr_G!~NS@L9P;C1? z;Ij2YVYuv}tzU+HugU=f9b1Wbx3418+xj$RKD;$gf$0j_A&c;-OhoF*z@DhEW@d9o zbQBjqEQnn2aG?N9{bmD^A#Um6SDKsm0g{g_<4^dJjg_l_HXdDMk!p`oFv8+@_v_9> zq;#WkQ!GNGfLT7f8m60H@$tu?p;o_It#TApmE`xnZr|_|cb3XXE)N^buLE`9R=Qbg zXJu}6r07me2HU<)S7m?@GzrQDTE3UH?FXM7V+-lT#l}P(U>Fvnyw8T7RTeP`R579m zj=Y>qDw1h-;|mX-)cSXCc$?hr;43LQt)7z$1QG^pyclQ1Bd!jbzsVEgIg~u9b38;> zfsRa%U`l%did6HzPRd;TK{_EW;n^Ivp-%pu0%9G-z@Au{Ry+EqEcqW=z-#6;-!{WA z;l+xC6Zke>dl+(R1q7B^Hu~HmrG~Kt575mzve>x*cL-shl+zqp6yuGX)DDGm`cid! znlnZY=+a5*xQ=$qM}5$N+o!^(TqTFHDdyCcL8NM4VY@2gnNXF|D?5a558Lb*Yfm4) z_;0%2EF7k{)i(tTvS`l5he^KvW%l&-suPwpIlWB_Za1Hfa$@J!emrcyPpTKKM@NqL z?X_SqHt#DucWm<3Lp}W|&YyQE27zbGP55=HtZmB(k*WZA79f##?TweCt{%5yuc+Kx zgfSrIZI*Y57FOD9l@H0nzqOu|Bhrm&^m_RK6^Z<^N($=DDxyyPLA z+J)E(gs9AfaO`5qk$IGGY+_*tEk0n_wrM}n4G#So>8Dw6#K7tx@g;U`8hN_R;^Uw9JLRUgOQ?PTMr4YD5H7=ryv)bPtl=<&4&% z*w6k|D-%Tg*F~sh0Ns(h&mOQ_Qf{`#_XU44(VDY8b})RFpLykg10uxUztD>gswTH} z&&xgt>zc(+=GdM2gIQ%3V4AGxPFW0*l0YsbA|nFZpN~ih4u-P!{39d@_MN)DC%d1w z7>SaUs-g@Hp7xqZ3Tn)e z7x^sC`xJ{V<3YrmbB{h9i5rdancCEyL=9ZOJXoVHo@$$-%ZaNm-75Z-Ry9Z%!^+STWyv~To>{^T&MW0-;$3yc9L2mhq z;ZbQ5LGNM+aN628)Cs16>p55^T^*8$Dw&ss_~4G5Go63gW^CY+0+Z07f2WB4Dh0^q z-|6QgV8__5>~&z1gq0FxDWr`OzmR}3aJmCA^d_eufde7;d|OCrKdnaM>4(M%4V`PxpCJc~UhEuddx9)@)9qe_|i z)0EA%&P@_&9&o#9eqZCUCbh?`j!zgih5sJ%c4(7_#|Xt#r7MVL&Q+^PQEg3MBW;4T zG^4-*8L%s|A}R%*eGdx&i}B1He(mLygTmIAc^G(9Si zK7e{Ngoq>r-r-zhyygK)*9cj8_%g z)`>ANlipCdzw(raeqP-+ldhyUv_VOht+!w*>Sh+Z7(7(l=9~_Vk ztsM|g1xW`?)?|@m2jyAgC_IB`Mtz(O`mwgP15`lPb2V+VihV#29>y=H6ujE#rdnK` zH`EaHzABs~teIrh`ScxMz}FC**_Ii?^EbL(n90b(F0r0PMQ70UkL}tv;*4~bKCiYm zqngRuGy`^c_*M6{*_~%7FmOMquOEZXAg1^kM`)0ZrFqgC>C%RJvQSo_OAA(WF3{euE}GaeA?tu5kF@#62mM$a051I zNhE>u>!gFE8g#Jj95BqHQS%|>DOj71MZ?EYfM+MiJcX?>*}vKfGaBfQFZ3f^Q-R1# znhyK1*RvO@nHb|^i4Ep_0s{lZwCNa;Ix<{E5cUReguJf+72QRZIc%`9-Vy)D zWKhb?FbluyDTgT^naN%l2|rm}oO6D0=3kfXO2L{tqj(kDqjbl(pYz9DykeZlk4iW5 zER`)vqJxx(NOa;so@buE!389-YLbEi@6rZG0#GBsC+Z0fzT6+d7deYVU;dy!rPXiE zmu73@Jr&~K{-9MVQD}&`)e>yLNWr>Yh8CXae9XqfvVQ&eC_;#zpoaMxZ0GpZz7xjx z`t_Q-F?u=vrRPaj3r<9&t6K=+egimiJ8D4gh-rUYvaVy zG($v+3zk5sMuOhjxkH7bQ}(5{PD3Mg?!@8PkK&w>n7tO8FmAmoF30_#^B~c(Q_`4L zYWOoDVSnK|1=p{+@`Fk^Qb81Xf89_S`RSTzv(a4ID%71nll%{Wad$!CKfeTKkyC?n zCkMKHU#*nz_(tO$M)UP&ZfJ#*q(0Gr!E(l5(ce<3xut+_i8XrK8?Xr7_oeHz(bZ?~8q5q~$Rah{5@@7SMN zx9PnJ-5?^xeW2m?yC_7A#WK*B@oIy*Y@iC1n7lYKj&m7vV;KP4TVll=II)$39dOJ^czLRU>L> z68P*PFMN+WXxdAu=Hyt3g$l(GTeTVOZYw3KY|W0Fk-$S_`@9`K=60)bEy?Z%tT+Iq z7f>%M9P)FGg3EY$ood+v$pdsXvG? zd2q3abeu-}LfAQWY@=*+#`CX8RChoA`=1!hS1x5dOF)rGjX4KFg!iPHZE2E=rv|A} zro(8h38LLFljl^>?nJkc+wdY&MOOlVa@6>vBki#gKhNVv+%Add{g6#-@Z$k*ps}0Y zQ=8$)+Nm||)mVz^aa4b-Vpg=1daRaOU)8@BY4jS>=5n#6abG@(F2`=k-eQ9@u# zxfNFHv=z2w@{p1dzSOgHokX1AUGT0DY4jQI@YMw)EWQ~q5wmR$KQ}Y;(HPMSQCwzu zdli|G?bj(>++CP)yQ4s6YfpDc3KqPmquQSxg%*EnTWumWugbDW5ef%8j-rT#3rJu? z)5n;4b2c*;2LIW%LmvUu6t1~di~}0&Svy}QX#ER|hDFZwl!~zUP&}B1oKAxIzt~so zb!GaJYOb#&qRUjEI1xe_`@7qv_-LggQ$JE8+{ryT4%ldwC5ete+{G3C#g@^oxfY3#F zcLlj(l2G8>tC<5XWV|6_DZQZ7ow?MD8EZ9mM2oV~WoV-uoExmbwpzc6eMV}%J_{3l zW(4t2a-o}XRlU|NSiYn!*nR(Sc>*@TuU*(S77gfCi7+WR%2b;4#RiyxWR3(u5BIdf zo@#g4wQjtG3T$PqdX$2z8Zi|QP~I^*9iC+(!;?qkyk&Q7v>DLJGjS44q|%yBz}}>i z&Ve%^6>xY<=Pi9WlwpWB%K10Iz`*#gS^YqMeV9$4qFchMFO}(%y}xs2Hn_E}s4=*3 z+lAeCKtS}9E{l(P=PBI;rsYVG-gw}-_x;KwUefIB@V%RLA&}WU2XCL_?hZHoR<7ED zY}4#P_MmX(_G_lqfp=+iX|!*)RdLCr-1w`4rB_@bI&Uz# z!>9C3&LdoB$r+O#n);WTPi;V52OhNeKfW6_NLnw zpFTuLC^@aPy~ZGUPZr;)=-p|b$-R8htO)JXy{ecE5a|b{{&0O%H2rN&9(VHxmvNly zbY?sVk}@^{aw)%#J}|UW=ucLWs%%j)^n7S%8D1Woi$UT}VuU6@Sd6zc2+t_2IMBxd zb4R#ykMr8s5gKy=v+opw6;4R&&46$V+OOpDZwp3iR0Osqpjx))joB*iX+diVl?E~Q zc|$qmb#T#7Kcal042LUNAoPTPUxF-iGFw>ZFnUqU@y$&s8%h-HGD`EoNBbe#S>Y-4 zlkeAP>62k~-N zHQqXXyN67hGD6CxQIq_zoepU&j0 zYO&}<4cS^2sp!;5))(aAD!KmUED#QGr48DVlwbyft31WlS2yU<1>#VMp?>D1BCFfB z_JJ-kxTB{OLI}5XcPHXUo}x~->VP%of!G_N-(3Snvq`*gX3u0GR&}*fFwHo3-vIw0 zeiWskq3ZT9hTg^je{sC^@+z3FAd}KNhbpE5RO+lsLgv$;1igG7pRwI|;BO7o($2>mS(E z$CO@qYf5i=Zh6-xB=U8@mR7Yjk%OUp;_MMBfe_v1A(Hqk6!D})x%JNl838^ZA13Xu zz}LyD@X2;5o1P61Rc$%jcUnJ>`;6r{h5yrEbnbM$$ntA@P2IS1PyW^RyG0$S2tUlh z8?E(McS?7}X3nAAJs2u_n{^05)*D7 zW{Y>o99!I9&KQdzgtG(k@BT|J*;{Pt*b|?A_})e98pXCbMWbhBZ$t&YbNQOwN^=F) z_yIb_az2Pyya2530n@Y@s>s>n?L79;U-O9oPY$==~f1gXro5Y z*3~JaenSl_I}1*&dpYD?i8s<7w%~sEojqq~iFnaYyLgM#so%_ZZ^WTV0`R*H@{m2+ zja4MX^|#>xS9YQo{@F1I)!%RhM{4ZUapHTKgLZLcn$ehRq(emb8 z9<&Nx*RLcS#)SdTxcURrJhxPM2IBP%I zf1bWu&uRf{60-?Gclb5(IFI*!%tU*7d`i!l@>TaHzYQqH4_Y*6!Wy0d-B#Lz7Rg3l zqKsvXUk9@6iKV6#!bDy5n&j9MYpcKm!vG7z*2&4G*Yl}iccl*@WqKZWQSJCgQSj+d ze&}E1mAs^hP}>`{BJ6lv*>0-ft<;P@`u&VFI~P3qRtufE11+|#Y6|RJccqo27Wzr}Tp|DH z`G4^v)_8}R24X3}=6X&@Uqu;hKEQV^-)VKnBzI*|Iskecw~l?+R|WKO*~(1LrpdJ? z0!JKnCe<|m*WR>m+Qm+NKNH<_yefIml z+x32qzkNRrhR^IhT#yCiYU{3oq196nC3ePkB)f%7X1G^Ibog$ZnYu4(HyHUiFB`6x zo$ty-8pknmO|B9|(5TzoHG|%>s#7)CM(i=M7Nl=@GyDi-*ng6ahK(&-_4h(lyUN-oOa$` zo+P;C4d@m^p9J4c~rbi$rq9nhGxayFjhg+Rqa{l#`Y z!(P6K7fK3T;y!VZhGiC#)|pl$QX?a)a9$(4l(usVSH>2&5pIu5ALn*CqBt)9$yAl; z-{fOmgu><7YJ5k>*0Q~>lq72!XFX6P5Z{vW&zLsraKq5H%Z26}$OKDMv=sim;K?vsoVs(JNbgTU8-M%+ zN(+7Xl}`BDl=KDkUHM9fLlV)gN&PqbyX)$86!Wv!y+r*~kAyjFUKPDWL3A)m$@ir9 zjJ;uQV9#3$*`Dqo1Cy5*;^8DQcid^Td=CivAP+D;gl4b7*xa9IQ-R|lY5tIpiM~9- z%Hm9*vDV@_1FfiR|Kqh_5Ml0sm?abD>@peo(cnhiSWs$uy&$RYcd+m`6%X9FN%?w}s~Q=3!pJzbN~iJ}bbM*PPi@!E0eN zhKcuT=kAsz8TQo76CMO+FW#hr6da({mqpGK2K4T|xv9SNIXZ}a=4_K5pbz1HE6T}9 zbApW~m0C`q)S^F}B9Kw5!eT)Bj_h9vlCX8%VRvMOg8PJ*>PU>%yt-hyGOhjg!2pZR4{ z=VR_*?Hw|aai##~+^H>3p$W@6Zi`o4^iO2Iy=FPdEAI58Ebc~*%1#sh8KzUKOVHs( z<3$LMSCFP|!>fmF^oESZR|c|2JI3|gucuLq4R(||_!8L@gHU8hUQZKn2S#z@EVf3? zTroZd&}JK(mJLe>#x8xL)jfx$6`okcHP?8i%dW?F%nZh=VJ)32CmY;^y5C1^?V0;M z<3!e8GZcPej-h&-Osc>6PU2f4x=XhA*<_K*D6U6R)4xbEx~{3*ldB#N+7QEXD^v=I z+i^L+V7_2ld}O2b-(#bmv*PyZI4|U#Q5|22a(-VLOTZc3!9ns1RI-? zA<~h|tPH0y*bO1#EMrsWN>4yJM7vqFZr?uw$H8*PhiHRQg1U9YoscX-G|gck+SSRX!(e7@~eeUEw+POsT;=W9J&=EV`cUc{PIg_#TQVGnZsQbCs7#Q-)v#BicxLw#Fb?#)8TYbu zN)5R=MI1i7FHhF|X}xEl=sW~`-kf;fOR^h1yjthSw?%#F{HqrY2$q>7!nbw~nZ8q9 zh{vY! z%i=H!!P&wh z7_E%pB7l5)*VU>_O-S~d5Z!+;f{pQ4e86*&);?G<9*Q$JEJ!ZxY;Oj5&@^eg0Zs!iLCAR`2K?MSFzjX;kHD6)^`&=EZOIdW>L#O`J zf~$M4}JiV}v6B-e{NUBGFgj-*H%NG zfY0X(@|S8?V)drF;2OQcpDl2LV=~=%gGx?_$fbSsi@%J~taHcMTLLpjNF8FkjnjyM zW;4sSf6RHaa~LijL#EJ0W2m!BmQP(f=%Km_N@hsBFw%q#7{Er?y1V~UEPEih87B`~ zv$jE%>Ug9&=o+sZVZL7^+sp)PSrS;ZIJac4S-M>#V;T--4FXZ*>CI7w%583<{>tb6 zOZ8gZ#B0jplyTbzto2VOs)s9U%trre`m=RlKf{I_Nwdxn(xNG%zaVNurEYiMV3*g| z``3;{j7`UyfFrjlEbIJN{0db|r>|LA@=vX9CHFZYiexnkn$b%8Rvw0TZOQIXa;oTI zv@j;ZP+#~|!J(aBz9S{wL7W%Dr1H)G-XUNt9-lP?ijJ-XEj1e*CI~-Xz@4(Xg;UoG z{uzBf-U+(SHe}6oG%;A*93Zb=oE>uTb^%qsL>|bQf?7_6=KIiPU`I|r;YcZ!YG7y~ zQu@UldAwz$^|uoz3mz1;An-WVBtefSh-pv<`n&TU3oM!hrEI?l@v8A4#^$4t&~T32 zl*J=1q~h+60sNc43>0aVvhzyfjshgPYZoQ(OOh>LbUIoblb@1z~zp?))n?^)q6WGuDh}gMUaA9|X z3qq-XlcNldy5==T4rq*~g@XVY!9sYZjo#R7 zr{n)r5^S{9+$+8l7IVB*3_k5%-TBY@C%`P@&tZf>82sm#nfw7L%92>nN$663yW!yt zhS>EfLcE_Z)gv-Y^h1;xj(<4nD4GY{C-nWUgQc9cMmH{qpa!uEznrGF^?bbJHApScQ$j>$JZHAX80DdXu z--AMgrA0$Otdd#N9#!cg2Z~N8&lj1d+wDh+^ZObWJ$J)_h(&2#msu>q0B$DEERy{1 zCJN{7M@%#E@8pda`@u!v@{gcT3bA*>g*xYLXlbb&o@1vX*x+l}Voys6o~^_7>#GB| z*r!R%kA9k%J`?m>1tMHB9x$ZRe0$r~ui}X}jOC)9LH=Po*2SLdtf3^4?VKnu2ox&mV~0oDgi` z;9d}P$g~9%ThTK8s}5ow2V4?(-lU*ed8ro|}mU}pk% z;bqB0bx3AOk<0Joeh}Vl@_7Po&C`Cg>>gff>e7fu41U3Ic{JQu1W%+!Gvz3GDO2ixKd;KF6UEw8F_cDAh08gB>@ zaRH2Q96sBJ>`4aXvrF0xPtIWoA1pPsRQtU~xDtnEfTJnl{A9u5pR^K8=UdNq%T8F$)FbN> zgK+_(BF#D>R>kK!M#OT~=@@}3yAYqm33?{Bv?2iBr|-aRK0@uapzuXI)wE0=R@m^7 zQ`wLBn(M*wg!mgmQT1d!@3<2z>~rmDW)KG0*B4>_R6LjiI0^9QT8gtDDT|Lclxppm z+OeL6H3QpearJAB%1ellZ6d*)wBQ(hPbE=%?y6i^uf%`RXm*JW*WQ%>&J+=V(=qf{ zri~yItvTZbII+7S0>4Q0U9@>HnMP$X>8TqAfD(vAh};2P{QK)ik`a6$W$nG<{bR2Ufd!^iE z#1K58$gW!xpeYHeehuhQCXZ9p%N8m zB+l~T_u-Ycr!U>!?xu!!*6rNxq37{`DhMMfY6NpD3Jw zkYQDstvt30Hc_SaZuuMP2YrdW@HsPMbf^Y9lI<9$bnMil2X7`Ba-DGLbzgqP>mxwe zf1&JkDH54D3nLar2KjJ3z`*R+rUABq4;>>4Kjc2iQEj7pVLcZYZ~pteAG4rm1{>PQy=!QiV5G|tVk)53 zP?Azw+N)Yq3zZ`dW7Q9Bq@Y*jSK0<1f`HM;_>GH57pf_S%Ounz_yhTY8lplQSM`xx zU{r-Deqs+*I~sLI$Oq`>i`J1kJ(+yNOYy$_>R3Jfi680<|^u#J@aY%Q>O zqfI~sCbk#3--^zMkV&Yj0D(R^rK}+_npgPr_4^kYuG=pO%$C_7v{s@-{M-P@RL3^<`kO@b=YdKMuccfO1ZW# zeRYE%D~CMAgPlo?T!O6?b|pOZv{iMWb;sN=jF%=?$Iz_5zH?K;aFGU^8l7u%zHgiy z%)~y|k;Es-7YX69AMj^epGX#&^c@pp+lc}kKc`5CjPN4Z$$e58$Yn*J?81%`0~A)D zPg-db*pj-t4-G9>ImW4IMi*v#9z^9VD9h@9t;3jMAUVxt=oor+16yHf{lT|G4 zya6{4#BxFw!!~UTRwXXawKU4iz$$GMY6=Z8VM{2@0{=5A0+A#p6$aT3ubRyWMWPq9 zCEH5(Il0v4e4=Yxg(tDglfYAy!UpC>&^4=x7#6_S&Ktds)a8^`^tp6RnRd{KImB^o z2n=t#>iKx<*evmvoE{+fH#@WXGWs$)Uxrtf?r>AaxV0?kf0o@oDboJ6z0cgP@A$;k>SK1UqC?Q_ zk_I?j74;}uNXhOf_5ZxQSgB4otDEb9JJrX1kq`-o%T>g%M5~xXf!2_4P~K64tKgXq z&KHZ0@!cPvUJG4kw-0;tPo$zJrU-Nop>Uo65Pm|yaNvKjhi7V1g98;^N1~V3% zTR>yWa+X2FJ_wpPwz3i^6AGwOa_VMS-&`*KoKgF2&oR10Jn6{!pvVG@n=Jk@vjNuY zL~P7aDGhg~O9G^!bHi$8?G9v9Gp0cmekYkK;(q=47;~gI>h-kx-ceM{ml$#8KI$4ltyjaqP zki^cyDERloAb)dcDBU4na9C(pfD{P@eBGA}0|Rb)p{ISqi60=^FUEdF!ok{Gs;vb) zfj9(#1QA64w*ud^YsN5&PeiI>c`VioE8h)e}W%S9NMA55Gs zrWL6l+@3CKd@8(UQLTwe12SGWMqRn+j)QZRj*g)Xua)%ayzpqs{pD(WWESJYL3{M$ z%qkpM`jFoqLYVv6{IbCkL?fEiJj$VG=$taup&RL9e{s(Sgse2xVJlw0h74EXJKt2eX|dxz{->0)3W`JN7Bv!rLvRZc z0tAOZ2yVe4g9iq826qXAg`f!*+}(o1;1FDb>kKexumFS40KvK0yH1_@Z=LgWZ+}(Y zwYsa;OLz6tTA%gS=>8$=Z7pLh>|K2QElL)E=Q*(n*H`8R`8={-@4mTD-SWBOYRxV? zmF(-rJB8^Wlp?319rTrh^?QEP?|Msxrv?WbJ-+id+V#F2Y4(JPJ6U9bv+U1cIIH^W z)lg$_=g^Ma>2~Pyd_YOAv29Cb-U6DJO?NxnW7~QP*SmYi*vdUVuW#LWQ_u0`hymZi zaQS3Nb^4`ro$>0G%zbXmr5|D|iq0R<;S@?kr0j5Ruq87-Z1>crx%EzVZ9#U;{?}ti zW2W%*9MQg3Nbh%Ti6LhDd|-aFSgXoPG`mHlUU1iCHr>ru>DX?W_#13(`u*!Plu2OP z6jk=2>BC0l)aw;HCmxoYD1i4b%m$1`DYC_^L~ zIEAnFcHvad=-aO3(_MI=9#`z6-9*_!&$?<%meb5;jGd5Qp=MGf z6BD{%`L#TAOq%z%@*ib95Ey7NbUF=BlszVk3Iu3imD&*91N-ij%hW?W@~2TtdHTfP z#n0@Xd7X8Dyu36n{k#PwQ~T~X7mAO^cNV+z<HO@3X-# z_@rAn$k~(l@kciCC;&Qd*fWRI>=;fL{UPlciNDWyj$bX<#r^(r;EE8wwUVQm&7~QY zCXRj!**r^xybAEPq>h3W$uvI1j=yNIyzkE_D7fpGw)OV{U*Uwm{xB;mEg2(|y|ICd zMdQVqzMb-=XM6|E-a9kNh)^9lY`-DjhhHD1w5lufRcy+QLgJ47!fFne86#F; zX{ufroVBEZJOY?rDo!;Te6aOZ^1SO!dYRxQ*2njyA~dCWawn)>!*k7~>8Ikt&e*0>>V5ZbO|*1+2LFOqVe zXHb!aMk03^h%&9L8GMy7UDI2Kev>V@(R}*Iu6x+!Hn4~D@wj`P%#Hdbf(lK{+DD7f zJ&(v*mhn_e(R$^5L#bM^^Q@-!*b!l|+Xrb(q*MRFJYnrE7*xko!SJOy9LngR2|q5k zY`Ioiu+YBfzF{Labszk-E#*BYQk>$()=xWEGZRKwY)*UxP}0dGuPLZOkNJDI9Hy zFjfwiK6RjhH#rHW#B0(MW}i%V`943<6@Z*Nd^JEP5uZonXm=u%AM>{H^U@&Jy*i0s za_Da^xI6pMtXzHc{e~_ZcnKP*;=YL2Z^RmzDl{dJTk7*}E_h*NvgnhnxVKB59Duh~ zqouS_WoOR*{UvUw_K#OWz;gMracr%8>QQ&V*jv!8)ho;U8}9~8EU{N<=Z_gR%IpMT zbkePUG_afm=#|iIfFmdqkpLMGxY5D$`?I}&T7>TexU@v zkBx09kG)O;09ckj#(_Uov6vv{{HOcr-%H#DUQ@*GzF8Zh{iSM13%fuB%>wjdU@3Nf zlnYE!GTyNrqes|;nLFXfWU*Wg-9wmr=NBd$nCk+H?iwNvcd0Wab^3CT9a`>3V~oWI z9=_H+N-Q=MQ(io4u4mpdQ;k&5FXnKV5M7R`@WJ9h(GrAirO#XXOU{qQpk^B^Vd=Dt{wiqT zg-#j9J~@o%H2;W9mg)o6@*Vo;BSs2*4HAHpDk02mndAsov08R_48zJZ@J)s7+hyCo zy*0L#y)?AqZt-wX%+_Vx`8*A95OLHvs1$k~{h-_N_vov_gHJE=`X>L?5K+ zD?u59=mjtImMvd1GsDytuYp{IyUkW&?h zF>$#`n$~bZ)KN0B$XGeMYh&`;g8 zo_2-koaO6+8O!+L>SpIQbG(i;QW9UJi{Ecewlo?s&D!^>i$|#jaW}#HJuxt|W48=? zb^Y&O$a1s5ddr8DIt!sD!t=y1g(d4GR(s;s-HfV$GXl&m;+sAAxB^rk(3_NjE$p#L z*t4em?tA0d+XwRxN^OQwzbDZMuSE0J1)Ky{mq)^t4bnSl*)s>zNM@mMdtd78&ebHN z`!(|lE5q-p+TsRaNnMXwALaN5QIZ2IUi^Z22tsN5>nvIO+YU}Q*xh6}ee6@rR~<&1 z(PB4z>9ZBUMXZwSMmd9-aKKsmJeJq^G|#JclOh*xf0?^e0(`40nsg1z)(48;4}B_( zGwPI)yo|{oX{dVDL-5-aMGr;~vU1cPtJP5JM(sswz&Q`e<@0?y{YhsO9YK8EYJA;L z>7oG_Mts+(wCBC*Md82#XdKw&J*IizR?9k^rf1r{Ot-&>V^ke{9nI9zavlcNkIJtN z7T>?o|4rENk-?|lewZ(EfdR;%BUrzKJ^UkCpsM)EA9QHBVV8trT&*O(9?FO{MLTFL z=5P0H+T6C^jAuX0k4U;~GM!x`!X2N~3_n?qXY$HI>x@(DHEy&Q3ucT1R6fj28wX!I zC=&d$@bJ_v^%?W2Ngl}e8ww`b%BrN-PzGH;$@B2Ky1?%GMkm#~Okj(-Admyy;qya| zOi73kr_pwt?5Nj3p=&H>81!w#>Agj z(QXx{j0r=pTl>micAI_5vUw<3`Sht?Z}-j2Wx~F8DKCUQrsXl2?W8hur42(F_ zsSJ)_36&x6A|YkY6c<2a94SXbv~d>4CC4nkDPvf9Z5Fys^6^5r0j5=E>Cgy_Dk@tS z%?c}9!qB?t6t8(XMH%le8UeNWp@Nsma~Ql+^3Bo%_npMryeQJz4V=BAqE~T?dejng z3ge{fjCHoNAfYBvsfq;G%VL|j7t z`X0sy1EEgpyD;)tS1x+fnv-?C@glP0{RCW}Ma?3qpoq_&IJAYOy3G#s`rsh5=3>`K zkj``=;|*x5HSjZC zXNvPLh372q;=+6ja|SC!R-`JcL}}wwskajjTUGTpL(1zkN-p?BA2lmf+J3WsB7!k`0Brx8^cLTF9h)r+LZ$vsZo}`OpOs)?c6$hclR!R#MAeh|_DY|9r zy+_3c%IO9h9X?ksp?an&>Lw;QeQ`T-Ku6HaK~H?E9-Z5$cZu{YU;1+-6B$|JD;%!^ zt(4l>F8}a-UkC4YtOxFHckhl4VKr6P$P_O*U!)IDory%}Wz`YeFx6TO{y2Y${SBm?H9cTWV=WWJ z`_*CGso!ZN>l@~_jkeXtV}fczfA{TUkyeD>)i3|NFGcCsBmK3HXp&ol_@GVs7PIpfULy!hi zs+%KYgS%(n7_z_}6)hblk~W#LZ@&2)fwm6xkFP%&Ju|MFWbNiTwy{{g-pV1RK`L&=RE2D z4|g;~vd8xd|teYS%w!IlT4W$&FTrk-hcTADX!P?*f1YWEIRwq$Ys%^(Z9w&HT$>} zsMD#6Df=uJrX!JHP7<>Or;e_Cf=}`!`qR=i8fBj)$6Lxx{HRzd8Tnzd0p>kSps{OG zKJkml>bUj8$u|F=``l(-aMxWBC@CGZ#FXClQZ<4|&%jN}Tkg#q8z)=>Ly{$i0`rjU zvt|QddO&i=91e?h3>s~i;+6{ z8X4i6a1wDLrSuE#W(zhan+U*Zq+8p3a))JFVF4ffaV51K^YgTso~3;Y*NmM; zx8T?y-N0uyWY(8=me-HUC9xtABvX5~%yg+Cp&XF$Bq=OcK6T*D7eZ2EmIoCFWm{$S z1PNw8HDpe5hHeCusN8kdeb&f2#=3M^A~7YwJ7FRrhq*)PG9x?JIAaC{MV}5}g#7R$-Ly%)4=IUkRCGOR|XTMjn&okRmFjaO^YF5^* z@)#MCBOBezD)*xQNxydlUyN?dW{fS(s-T`gv*0BEnk}`BdmrbmPO8q8y(X$AA}*RH%I7Av!~84pudHb&%Q5-j zt?=6x(iR?<^_7X0v6Ys#VAL}dKk^hcjI=|EY;kPcZ_w<*H`_*|N7SacaM1ERD@6ab zg`!iTm7$URV+lpW_{V$ruR&A>jrX68k4x2wo$45}&wf7o<|o(@B!u-L@bKyQBAGwy z4#}UrRAu>^>Vb6k2-th^>WjvP;Nl|i3WrjWv3ISkj{m{eAcQIW^_ndxSX@|8T(ASJ z?_$fcP2u*6uOBk-{d>^ z0vWlfGQMvysI%R=iE|A+!!Nw?C917EU*_$`;;)px?s83CRd3i_jBN)k#nR5t$dJ(+ z_sP;wG@Ad)^(3LRj7q}0b2O(b`|i0~5SYb%Sjk^*5ISZ-Ab+}DGu$-X1n^TF1Ndw_ zF|e*1)cI2%`TR&AW~XpqpFb!=3cHbS>np9hYD_Mr5}y5Y`SY^r7isA2Q4(z zazRQEqWDKT2zIEbjSYdCPi1ZOGz80Nsl}gxO^DWMY0AV<2K&OL{&^6#@L1?lXu#6xSMh%3^5c*}oM6DQGY#(a^@z<&D zF(43I9e&5`h|A$5!+UFuOH0>F3$shBV4`0#M4RSB8=6F0ZgIbq<2LQ$Hh^(kAJu=! zt8ZGXTacD{(3W{V1$j_{Jc)Ka7t6u}ho`4kF+4@t_0!mCBn z)}o%eA}L)_L?=jw6BIfll7tb3n}?*yLt&XADa=rW>qz=_6s9ziOd5sXjil>FVFx3r zf>Feewk0v#W9>Gp4GacTRr>Sd2T6dWi-{YX`v!D)kCWzG5xQB=?es5ON(%nkwUhNl zV>@xkWWWv*N+{e$(SrExvN6BXzU(Hxlx27{VYHf+LpIbTO+Yu(ltMk<;)3A(LU@ytVYFkYvTa79idMtUFhfxx?P!)2F`prNWW#Fub#l>N2s@nh&n_ zA4{#}|AIs9|A4P0ZF%fy=hDN!t#ifH<)4u2kirK~JUpjQ-J+~cXOZI&dIts;P}UeXslP6zKvpEKSN-$y>kJ^nw2tC9bv zo(|lT@?vZ!{_l|d^8Yh)eEBh*5ABh+Lzjw+?V)o z#P-W7361>E(Y4;@`sv;VKn G`u_lkUM?>H literal 0 HcmV?d00001 diff --git a/gestao_raul/Lib/site-packages/pwa/static/fonts/bootstrap/glyphicons-halflings-regular.woff2 b/gestao_raul/Lib/site-packages/pwa/static/fonts/bootstrap/glyphicons-halflings-regular.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..64539b54c3751a6d9adb44c8e3a45ba5a73b77f0 GIT binary patch literal 18028 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 literal 0 HcmV?d00001 diff --git a/gestao_raul/Lib/site-packages/pwa/static/images/icons/Thumbs.db b/gestao_raul/Lib/site-packages/pwa/static/images/icons/Thumbs.db new file mode 100644 index 0000000000000000000000000000000000000000..335f6db14d20f248b9800224dd085c5aefd66d55 GIT binary patch literal 76288 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 literal 0 HcmV?d00001 diff --git a/gestao_raul/Lib/site-packages/pwa/static/images/icons/icon-128x128.png b/gestao_raul/Lib/site-packages/pwa/static/images/icons/icon-128x128.png new file mode 100644 index 0000000000000000000000000000000000000000..cf4f4aaa255ee14cbf375850783b948a2cd910eb GIT binary patch literal 6754 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 literal 0 HcmV?d00001 diff --git a/gestao_raul/Lib/site-packages/pwa/static/images/icons/icon-144x144.png b/gestao_raul/Lib/site-packages/pwa/static/images/icons/icon-144x144.png new file mode 100644 index 0000000000000000000000000000000000000000..ce871ea122e69d5d38c4c463e6e0f948b5c88a40 GIT binary patch literal 7672 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 literal 0 HcmV?d00001 diff --git a/gestao_raul/Lib/site-packages/pwa/static/images/icons/icon-192x192.png b/gestao_raul/Lib/site-packages/pwa/static/images/icons/icon-192x192.png new file mode 100644 index 0000000000000000000000000000000000000000..536a8d208f046a022dc91390cdbf3f285a1abe80 GIT binary patch literal 10580 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�QsHkD$R&^n9VEe5Ao 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 literal 0 HcmV?d00001 diff --git a/gestao_raul/Lib/site-packages/pwa/static/images/icons/icon-72x72.png b/gestao_raul/Lib/site-packages/pwa/static/images/icons/icon-72x72.png new file mode 100644 index 0000000000000000000000000000000000000000..8d40cd59481969fb4789b2212218a5dfe128a4a3 GIT binary patch literal 3252 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 mL-`Y)BXH|y0{%JWMx*4(KOR&lVz5l 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 literal 0 HcmV?d00001 diff --git a/gestao_raul/Lib/site-packages/pwa/static/images/icons/splash-1125x2436.png b/gestao_raul/Lib/site-packages/pwa/static/images/icons/splash-1125x2436.png new file mode 100644 index 0000000000000000000000000000000000000000..05b019adeea807a26e58e8a5d4a86e030f799fe7 GIT binary patch literal 36047 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⪼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 Wa;F|omleXKv+6phb5C8m`M&^qeU*;@ literal 0 HcmV?d00001 diff --git a/gestao_raul/Lib/site-packages/pwa/static/images/icons/splash-1242x2688.png b/gestao_raul/Lib/site-packages/pwa/static/images/icons/splash-1242x2688.png new file mode 100644 index 0000000000000000000000000000000000000000..dec52b6a8ef6716b70d19ed88a5d21e636caa66a GIT binary patch literal 33765 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 rJ+JK!OAkAVBs$0l(kx>_2<`?;U{xfdqz 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

#dk;nZwRj&d=4et1>N-({{ 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 literal 0 HcmV?d00001 diff --git a/gestao_raul/Lib/site-packages/pwa/static/images/icons/splash-1668x2388.png b/gestao_raul/Lib/site-packages/pwa/static/images/icons/splash-1668x2388.png new file mode 100644 index 0000000000000000000000000000000000000000..f39d2cebe6b87ad55076d3c01b95af9b92ed8d60 GIT binary patch literal 35903 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 literal 0 HcmV?d00001 diff --git a/gestao_raul/Lib/site-packages/pwa/static/images/icons/splash-640x1136.png b/gestao_raul/Lib/site-packages/pwa/static/images/icons/splash-640x1136.png new file mode 100644 index 0000000000000000000000000000000000000000..73a34ad0df0dc77befb3cdda199951a004e3c37f GIT binary patch literal 19254 zcmeIaXH=7E^e-ChU92c|?0^CSB2uF$qM{-K(m_(Q6t_5ob!<(n<@+&*OxN%)$>n8q9C=_bz`u7U_yuC`(LQb7tZN=#ZL5MgLK-kG8IdMG-b=G0y zS=7TX8~%Lza|VCn;7=O-DFuHj;h#$QrxN~OS_#whaU6Coc6mP6n@-8~V=d)+Om^jB z=EigH)C5fb(3Esd^86%Bsgj@~jkIjOF-6*V4@ zI{buJ&Dz>}VPPorys@#d*KmY>b)tG;bq-42tg?8k9Jib`)4^ku>+{`S|$cyz7aa z%qr;<$6Ud87uoB#${AN;+(|n1y#afUCuWiTMf?mHZZh7qN@k)TZd+fmL-#EP^4`~%CP|X*?HwKanpKx4rjtZi zqRKO0c3FIWw)I^>LBVKpRu?sgAncB9MsrpYQ^L!K8zMDK3+T;CIiq63=>-L{r{v_+ zjdOfxl_jHMma{Ax4qd`(dAwcKfV+U)<}9;HMHAnd8f4?*%6+q4s&KCUV=XEE$(oVR zgp@pXSN_80`!J_Y+I)X&V^4ymz)k2e3SHd09ZJ+$>{F*swa%rjhfQdc?f(*y?!~)W zXA^G6x;87QYwZv}ilX-XNY>oEz0k<<@%ruC!j4|sq!}qGbP~-MDj+X8&R;Q8E1<3= zrfGQ-ZbC8k8Y@fXI3b}0(^OypT`*erFeG`oh^5)D|9!UsdOi76ZR?0D!d zS%gw%h-4T$RmxQ``+U@KTP%wT3opbmE4=9e@i!gWb2+%-SyNkETQQ6sezA{P#pe*0 zjig3i+dD>~lG-%9v62qbXj+C(-PQEBvPa>h;@pt7Mt1O#7o7hkc~sqIq2F&zfh# zZHy~Abmk|Iis?Cg`{#&UH?ab4Q(cP>a|A_=MJf9VoU*x5%9`(9ZmZeJXX>WisxVJZ ziZgWc@Obv>kOpPGa^F`zdB(lI3U5;TNQODfj@0t)Fhy&y(qYc`3eVhmRJ#IC2mQ2F zW0arkr!QD$FQ2<(sPgP3l1_jlgcaUTMA&QKQDVxz-i4W=q%2~bXP+U%EgfRE_=3N)zy`x^UQ4HN5x|(pZ=+;<*90%43^#`pVU0oWuGJArt0kldvs+9oA@mbt7}Q8 zo0fa1SJr&5k2oF}f3t0`gpn?tbwx$^X-d@w_|i9DWDAw#BpoF4qVnX~;-6cQme_O6Z6bx+{6$myGUbXv;wr}Vg!P1Uso>UTbL zzmB?975AWa|6o$6s`x}f8B~X)=9Ks;jbgaElfDbnJ%rVBZmkqP!h(9Cd$f$@6;exD zS9_N6dHB=BJa)G>X#aODu|zg^lgq`y{Bq*=J96K>B#xI5SPrfD6NdTkUwZ$tXo``O zTU-(GTNq4C;cvo^#0xl>?v*rwbWbmK9;~jOKW5*aDTZ14eu&3lWX?UyMa2NKb!QI3 zQfD`Ol)hX0L`>(y69rewllJ!Z=@B$X0f|pIhXeN^LbaG=CFg;&9cAwJ1_VE>7i*6E z`EIDnUdQsuV&}2s$Y(_Cl8X_^KSD5ng(Q0icPZ^Ji zj+h`NEpyHi*?wvJyjV)?O-8uvi^az7Z(+xf6&Dp3Tg7vpY}}QYIRvdGz--%@AXKL7 z9REX8)uqv-lkVfKJxRBJyuU2>rse(Ru*6`W?{CjpFsFLqB<_pgRvt_xOuj09CXV?fsc=zC-Um7{IYf&y0~TZSlW$*HMiq5kD$&kFa$qQv&$t*L>I>O2}WVA z-tF0@0`5Ho)})iGh^v`n+1Q63RiaCGV>HApM(_0f4qk_?$Xz1gvX4(k1@?a63Gaui z(K{_w%)N&r{?=bxwhJ0WGHT0U%b~xZIXF35OgG9Bf2sOI?3}#w<+;t>s+HLW;91Bs8*b${f!=?_*DRovz^)K8x%vJL)V7 zIdXIJN69?g#mTN_6=qLN&t6J;Ms~ny%HU`J?O!u^(QpJNs-LfvJo4IJ6V?Al-yB;6 z&$Aq=4UQgBb@}y`$Zqb3@@s?hUp*IKHy#ETnYQlsh66pWL>2s#a}tgdOVgjXYY5TH z+^H@iuJ@6*PLHRJr6dSnR~&nP)qcKuv()a&HQ1e0-=dpoyPs_n;)lS}VT7m4IQ3OD z(h~r&l#m7G>~zE3O{;vp&t@H&Kc z`0A5Sc#EC-g(nGp<;8$chW+d#;Hba1w(fRll<#pqpFI?um6UV{sabl&lA zbo&Ifx8s=oONS{s_tyQy!Bc1lqnh5xd;0VmER&2Tl-}M%+OzP(15c(`=tK?U$Jvum zW*e|QWE0nGg)<>gnVB=Sj8NRlp%!2LOoJVM%<_IqOz^X3&vGGA6C)GvM4Dl23uz6@ zG=e!q`;Q+#{_&nlN$^{;$SJpMcx_|9JW)Vw_p=z-00Ft{VM6_q>%co>31Pmy^nhkK zSk;y3&pma54S<@WY_pO2YyhW8k@J}>A_tfS1Wa@m9P83~04+lY9^c;66YI@ZQ7LBz z$u>XFuhRK&HEkyS<120_K^FmpO_g@9-gxYnpWO7)95pFqQ46=E1E({V-yoTRi8l>( z34AbTrKzd;>9}?@0zlazKl|S6J zsfr#)+g-kIPk?ugPgcCwuI^sX{y6Wc;NakQm6fdLIh@%BDGlSHM+}j>|GkyUe8*i< zd!nxR(_;y~GEC`y=g(V7wLVZ2D5`z?*h^%BRm=#|+=yn!se9g?f3{^mZ^`*@OFi9> zN6GvSIe7nwuvSKKB zQut7Xj7*IJ=#jIX_BEwq)2p{D-x#oCNY>U!ni|{N+XHB*@4>q!HR4!HbC&%h(Aq+a z+XMGXq?5+~z43AYf6Iwkbr0%??= zlxQ;~1OSv!m1+So8BJk+Kfm4Gr?R=Z89`Nz)M6k9f8Tmvf#WRqld1$(4~x&7@AX@r z)TWq^xngjO4dxe(=}$NFQ7RO_%W@%+ClUi4xfZ1MUqGSYPz2;1f8TN+6o{TWldMen zS?uy;$#$P6n(v5GG2>-|sUpShduabI~}=s8?2^R^hs-F|IPzf=+3QrpN)a$@Qf5eKwP?-Reu= zuxNa_2P>CnLUDq_O49I`!ZaK?p>mP(Mw^0b)6>^miO*|RI1!J)c>?b<%G<NBXbF+t^0`DPO?a84pK?&K_EKFi)d=q~&@m%M2Nj$a||3k?b*l5^{~ z32wM{?OOCm-}mpls_ca!)k@Ds4b6Gx=7LmnE^GPB8d#5hUVOA@)5oZi1ks2qg9)4! z>ua^9Y5PJeedar@Ll?S$5eB=go@RUW7e~o&q&fBbU&%DcJ6PY7;oW1N>AJnVI8=2> zl)dVl)bEuC?te%`b9|d>Sv69A(p{y1MrLAy%Xd=AIYi}@Yi~}^Ei56xN0z{5jJ4R8 z9;_^%@3K$w<+~Wn-zJ6Yn`)9M>Dg(?ZtGi7Y$p;8Yf*;W3bEZ2_&jp0rfYVpZIJJE z(Lu@{kV4qW2JVCYI z+L-MC0VHSiYW7YX*+9H)Uex16PQ~n%aJ;p5?A?ikNAiw6`yM=f>-qasAjB{)QZ5_Q$pF!%PkPUiEu!skY&bG>f>a*NV!@892|8VeARP>1}$v4kXGYbx8 z@#ik-t|WIUZ(g`9Yuy}ldLBr3(TBUVZ$PzWnv#C_Fye6RMMzD+Sec&! z!b_a`t8BCi#&YD>N?9+?4r^0{hr|RS)3v3VyK*hgKiTtlJ@@*`eIR0!vg)4iIAo{F zwvP8c+O ziC#?U>}%#wXBjP88ioal3DG_P$<(9kUL1=*GvLU{wzb>Rjm-w*631Yf4^hN* zj*gBYGDlONASa(&Zl8@m+J#ve)j*5i+Xk=#Q>ah@(DG^Hy9PMsSnq9>aU3!N`?T99 zLX@Vydh69gi8BfJhQ^ol-CK7E;7p(lbK|a~7libITNe_(6&Dw$-hKRU3(No&r#>mE ztQaJb)R*30DtIQLIh%eJECU`W6kXdNY0dEP@VJPF);|&#Nl#~-sNK<$JsE8sFLqzJ zt&F`yO=?t`*D*CRG8(5i{p0q#vmU45bwK3GG{NV?LlrmO6t^tjZnVXGxr;0lO!z_P zl=;$p`Wq^&00UTzG{-4qUGkO=iF$n{fxX6vLF8bIpah8W5w`H3620GDEHU1J;POc) z7ueS7sTA*ZM}H%dUZ~;#6QHw9^i`I>^!8nusUuMk#RI9iYLq;<%EqA_#tK1_u-N33 znAr{K^|~cJTps9^=n!YVgkbu0p#YKH!tq)$r^F&>;@sN}No+}Sw&|OOeS^2T*`+lJ zD9m@tH6gHg@7=l(5Fw;Fd4?dv9dLa!g2QohMJUV2*~Ps#!a&zYyQY9$tM9R ztJNmdgp27UHex|=!3WXU%e2sWc?Ij{Sd-cf>$wfq&u*|90Kz*+yXC3!obQWYd{=!! zRJ5;xezRc-_xPC*z-mxi68c;rytLczuPn?cWL+WN5ng01_jAnXGuC;4MiHjkNEcT2 za(2{Gec}E}8(1zh_j%cq_}}ld^y{I{b%i5cis4skI2Y&u^)9~AG(*3bJ4&_w(M`ws z>>L`k-GPon17_7$rR}U&bIM*l-SLsX(w*x(}7g`$rMagT=A51KIm z=bLG`*!M#87f0I!FE@;{nEgcMDM;=7bY{rhsR$#^YHWi<$%Xw)r2Z;S?K^rcX1C=O zqPn@q=Eajt#3QN!>ADIXhxm!apd7mj#RRbo5~=;I?l`){_PM*NL0T)*bu2$%CTs;@ zNIHgQApayD*!V9!F&fAe!7@{zDYm=y82%@h(JTD73B@e8b&Fsb+7S03U~MZsRJ7#; ztQ!F7D(uzGJ{WGA| zsxkTIOlUqeqb86~Bbo`4kbc-qZJD+wq9;_$T)b9$H3q7KrUL4&YEprHAZyK|6K0sP zQEFh)tyUqKx;*x|-r z93kJUkiHgm@<4r0g3lB_CW!e;L-@tKr#BpD>%GSJmw_MYu0Gk0j`DZRA+Rwdo#jT* zG1Ne63ipn4sTY$I@C>p}vBEy-MQC|uHv$qaW!&s*P18vVDjCfnFWYq&JG_Gwf&<$s zaI0Y1!x2zgSHGo>j!p*whr3pL4TEe-8kGPVwkXF&uq;?esdzdNy=@OY{WH)h^1Vj- z2$6WI8Nt3F$64~9&+J~M0?Y=sfxz&=FT1pYWco__Fvk%(1^;&;+EXIb*`K!>G$_GI z+H8crS=v~~Wq*XHt{niS=e6ca#1$6ZH#Q3GN*?dbMQGNC2WBqcjzrfX@{Fi`J6VIY zN1+|Gs%$H?VcpK-?_W!qo3%Ws+k}8hN05GFLgJ8m6nO#Tk z`1!?V`K^)2r^8zzcH3N0Q=ka1Ojx5gKVG*r;B?&~2M(|ieTHrWzmmuOLOf+IDpS(4 zAM5#H1`9+k)Z>dp`_^hc38USX${H@9l^|_LbZCW$V~2I0q4QEb#MR@@m)!gI52SXH zs{gA~aBBLYJf%?UrUxExfA-FD{zUpxO1*M)@0zs37qEY4hFsa4{15w7t8?`5y%FDBajIs zd`{xnE6xBmHQs0(>DJZ|+5@VPam(T@d(g8;e(OZQlW`pKh4hmRm6|6;q>QTHlF znz&pJpJ`jd*BF{YV&GLH$xqZjqz(KMAAWeyNxdNi2Qgw?KS_nbQ zqv)&^kU2LZg~AJB11C1OZTH<+_!8WYgy6M$d1UxxXIPnedS;(i$wiXuN-VKWKa5vlhx zsA8WHmq8xdr!zo;Va4XE`?!@MkwA9G(u6)?Nw07*2Y6njbi7BGZFKEip!v$drKme5 z5lBgg-%bjhoFkiu$`l**WSsoK#hvkT_P0nn8xK5jhMuXh+-(Bgm(=nu1W8p-RC_m9 zP-VT+vmCCEAhi!L2^=hA#sL&idg<(ff>b+k1fZN1Baby3NeG(trg%rV2y>BjG!tZR zLx!%}h6mTNqg_X};!PNCsfW0Is=oLDhy1#IW{4QoHL<)Hh|q|-R`MG#$TYgmB|r@u9lLRi3pXn{s~3SM?_o)+O9QH~q3(3O zrl_R!8L(uOt@3si#*M-m!Ew+lLh`M+a8>c0B8z}UU>I)K$8#iRtEMIdOH3*(ogGUt?M9&9Ii@8 zNNB6pMI6_^D4^4aU^2^QL_c6HHe!namWvYOB_mWTHP217Y`uhtj;p4p9a>YhwQ<>0 zsXM(LrGRk+oGO5#2}5_kdUwBq%e^Vi+XNsl(EGpaO=8 z46;5#SlW#Mr3jkc&maqw*7@EcB8JHSezsQ0%ut;_ zpyfn#NKY@0!y>hxsJ%PAP4LXi#Z6z89rJxt4NAtn06WNr9=RoY!ld+Mb$#naaDl@W zLifvl=x42T4?`1y#Z053^wHrQJZqWh57v}oy<#7N;p@WYp8rD3BMUuo*V_Ho_sj~Q9N$x2wP$FB zpzL@xE`>s&i1v4~{lalza+Bs=rKJ=PUPDmQZf+G@0IO37u>cYyD{n-a`+0}Y2|}Nt z;9=}#%}76lgVA^5IpZ}waMEvO!I{Hi z`XdxAk+$KEkhWMvzKWKdedE7&iu}*|aK0h$8mI|Z6I3h5rN5lv%WkK>RtGGwPuA+{ z;Bv&HGNjzA2 zcG&l`raTX2U$I1N04uWsDbT3&2)H0R2Wpex1NGTG^u%P{lI^MsZ%0F4@mv8Q5yi6* zmauXdF?XhxxGhi8gzI-gMHD%NW766grYvbs+4cOmivYC%V>11(t z_4(~8y8#CYx96Bk&C4La6;50UIG&w~*#h0XiP4AHv0wJ2H3sdMP0Tcw)3QTKUpSp3 z44R4Ht)n8)BgB;7u3LINjQ(-y&F?ny;f-VZsEX%g*PgEK?$6MBKU13Cpt})C9)2Jj zr+?AX$k;f^mvSuDSxpaJKm&j4)alb!7#cM8U%4{F63|%c%fN@##QM>Y>fud$Yu z$Y+qSO4;;7{?TrQkyssu#y1o=(Iz{1F3o^n$~Wnnb5sesszt=Iw#(n z5-oV^y$oVDP~?;-QFp5!tzIwgNBqxGrY~15jb|uiUsVQTK@twM67Z5|f53sybshDA z3Zi1jES@=MD=6K}$)FqzFhGtQ`V2skfPPmndZYWDM!&yXO{q>p`tDN=ok|B5OH7o3 z{=J+mbAoF9NMA=sN6KbTgi>6kF`JzHWb5?COf%hm;Bb!n5%`(Ml|##*Wt<0CA5N^20`{cj>G*+JHWKgSViM8k4lG{*H+u}dc)5nQ z*h}-1r!OPkmqPXxWl;5=&sP?*JeB5Jb$a(DsKS5*Yzq-kUd(oKK#R;+P(i5SRa(UG z*rB{HXK?vH==pbgOP3KQ=&kqj`CO?|_h5Hdk$oWBYyVkpPqQ@!Q7W9s24^dMl=ZK) zp6-``)UF8t>?6qDmPH-=t18LNfSJ)MDeRc0oI%7H1lw1iPctilcPtnUjpVt2bl|9B z2(}B069}EsXZXRbzk%p)K7KRWfT-gKb_xcYvyYFe>zeGb1A&i|^B0Ogmw@iQygw>{ ztFpGVgU5&r28bqbV63Ktx@@V!$sxqnc_98GOdVL86|5KbdP`<50YFMv#HM@CUfN*> zKq58IwdI=p)&+_7ers~ERZ~nN+G^bf5r?SpF-!e>>mOp;p>WUq^XBt@U6pdDt(w2 z@g2$b8Ig4fMMXvGTR#FXMnvAklp2^;hbfR>kX(VYi=iUus)^+a5T>KeIFvU|*`xs7 zqwNKD=*3@Q!u>;tuS6j`IXGkurt3O^3P+k(M_fEo%Zqe8Ucqk7y#MjBF%I{lpYT@0 z?0^i84FL5x7zdg1vf00mQH;9EJ)QQ++`B|^H_p4G9!h%vRn*Fl^~mM$#Cr6?xk4-n zmSW6sOAKJiPILX)ovR-rpyDO(&p02wsTnI6_(@-K7vSfw7Zy8Sug+&0?%gEpJN-%6 zoP$iKd?2e1hwIpt^0#$Y`gra;eczxEt6ixwe`22a5mag{X0Mzrcc25*T`*PxW`ztY zyk>Toqp2;jlBENGgTQS$1#4)u_vm#e3(XXHPISClELvaxDju>%vdb?OkH?RW{W=KG z`%S(R6Sz{#PPN#;t)O+5&b1qdE-V?+9r7y`?RvoKo)_@ol`k)L?N4j-50F? zUJapHo&y5?3$;7Um8d&v^)ha? zdC7?vfa3-8Gg02XkVOwV?5$brabV7ayH@#7Z|qH+lIJrZ6&Jg=w^4_h@AMW{+6zeE zxj^tr-^PmMo~NX&RpZwcp?%=KKsz8>l21Mhkd5!yPZVl zyHesjjM{P#U43sZe?&QqAIau)zALeNG4uWvGNrOM>r%godmF%zb93y>ZWz#m5VdXj zut(*{lJxKAop$KjJ?!H=I@DF{*c&r8Ck%63U<=6@CO9Fa1B8w8N(#8nG6XC9@%-gL zm@|6<%7jMu`nKh}&38CklmU?-`e0&;I+{E9^y@Z26FUm+Q>Y&!$uTE-ZXE&fHO^&d zM}w6ISr6G;-fgc6p&xDL1bBA!&y?>58gZZ#B(RitDY1H>$0PDgV#w@Wgjo z7GGU5!uy0H+Rc4gRC8jX72uk24>dMqP|IQV-hv*1+3ybA8Jv`(usB~JMSQSXG45v9 z2hLz^KpqAh#Ga5lc0JZ$&b}8MS1==o5#hR#>M^ZVZ1{L~aU?;?86p9Q%T?ktRX1vm zen4F@%(JEPoPnX5T&^doj)rL$$ne|Xg%A>b`N|~MAVw~vg1eB+fiL)1GYDB#+h74T zCE8JPr zp=h?(h67JvI3stQj4Zvo#7PQbG;B^S5_FjZ-Da z0Ru3iKjf?GFMoFc>W)PIB_#5{zJn>A=*4npfQSCP`9k}b+e@nSrmrxrwL4Fh^)^Ar zh#7N7M$7)zPxM5jbeGkW*$%)TVYcrBa^oP49_kBPR#sZfG2ip&nKr2ifVh2?0tTZllwkTv>hxT~}CX--(3g3ZVjf^ae zijjz1Dy7hhfXv4Jr`Z`s$AEm!*;hdRt4paT++!Kr0b&D^vKbjggm**K$mhoIkm*R$ zywd7nwRauJI&FWvM`Gv@_nI!<>9GgL)E$uq^;k}!2o%ovvkP(?w9zYBGfXUus6pm_e3$frg5Lsn$BKd;vN&&3|n*E&~ z3ld>;`+dZ3WiyG&^s6Mz?-__M*rjUy<@t`@sf4JQ&61^m*{zW@Doll~hW_5_Kl@7L z6o!Ii)7kx!CZ)NfM^fuS+Lg`f1e@A?j^pvxL{0@bj?Ho`@V&gzvEAt~m0^cMpbK)X z+>ZVA6{6Q`b1cTF^Pkp>z_^Lt3vZ|LDo4a&)?qMwiXi<{UHza~z^2|I6eN`jM2Z*k z-Uv4Jn;J6?Q(HvSdtsziYLCiXI+Salr)vkeW14A9>I&@#R{(Nl zcI~_s%n_(-DHI?h8gkn|f+tiqYReR-gdNW&u$RDt&G}MMbRFKC&&2s0NheW+3m9%T z16Hu-msvfi_N))G_z6(JR<~Znp-oINy)|J?Rt0ha*<#+AZ>h^2mBL?%zdz>E~8ta1rpD5!zZ+BZXylEhqLU58?bgE<)}*_(jv z#-iTGLJ7Wry|0gVfRI`}HRGi60&8i7p9F2|I6NX?#^zJD!&}uON1gI;>r|n*Kv`M) z`>@}1F!xh!5xW-V7f<0p=(F4Vki|+Jd$v^|vDp(=i!8c+$a(-K?)IukY~oh9_wvYy zh5b$$E#;XDB%NR@81qFm$7XC3xMZb%xK_q*?P?p)QJBUn7!{i{?q6*7O!Om+55}6L zALFiD9?>{~3HM!BBuwNtxR@6RIF`N}wVg*GPM0reDfP&KO91sBXM(NS3`5$xxfSb@ z6C(Ta3kbMwjc&QFlr?I5k=fnPKFvh=j;Eyr#9J96<2EDZpt&ZdwB|T~;=ZI%POG3_ zC$%L0g<$@(;xm&@I3@DSXyC;pouH{E`Tj-~R0$ILry3B{p4j9Liit&Ch!7k>e>uz~ zCi&HY4~HBc7ogvK0qEc4{0CtXY7t^Kf-Tn5J^>oF1SY@|@cuKH!o2W?2E%*-@jo8& zE?WbC1^z@01y;3zfoP@ZacP$Hv<-0^`jL!AZ0(#GeMu6M7X) z*zz0#^n@^Y2v*eZokx&KnJ`dA7)=|d6p_suESprBc;Xzjn}AFr17z2DLxVv@hTWLM93P`}p{f_mU-X?7rK#O}+vU-~0l;pw8LMEFGI9fcAPYO~AZwxi2Rc;x&wHYJ4-l)hNR? z5am8!6g**?gbA6`i5aYTFWl}PK!~j=OhqfSIz!N#||Tl3eAjXrDNzNuK13*8CSTFY&O$0b#Q5rK+ogo+?gB^tg&g(Pi~0F^Q4K+#fTAkltrHR`&E%Uf z>cy9CIL`Ywy!}!M_)4Yl zx!5xg?$q#^=(@0PAJI5mZkF*QDX`6i_aN%gl@2)8ds{z(_L;98HoPj}3Vif|foaXj z>4L2Xf9wmn^6YyFDwFazFV6@O_*g$I^zcA9f$;N{qvQYhY1=_mL#0NV z+rrud|3$4FPe%*huBc+edy~V%M{+VAZr7Xo`{nu7`lwYAx%#NGw4*4U%B@%BnCQ%- zD4+7behnOZvf;nGSTg|JZCOw)FJkk@igbyq>;HL3pw|{- z(p?)TryS9*;zHI=Jp0rZ2PP&Bt5NFM=J4qPAho(!^b>ezkj_iD$+x(+LMPo@ieO8 z>E*1DRj-x!q$!iPG39ca_`vJ=5I>vMVq#)2TXcSxBVB=qmFn8bkHTs;OI6(P*pe4= zVSbL%xW0k^;jmd!&pK-@ehLb;X&Cu;0h~`F)#n6{{?wHoWxr=C|HMoFJ*ueodhYef z${I2<=CIVylzZ8ro{Cz7LCQ(k5tNV8rjFLuaGy2v9=n}k?oUqxR)7{)SmINwKutJg z!DWUZso$R9+|VnC@9G%Ka2Z+Up?=#*V|-g%_bbAcP|4a&A9?E&JjGCtT##e9bHVrs zTI;mDd}O83{3V25gPMCD3UKE`dnYHUWgTbzTs;}?936jn^37qiQ{9%2eep=Ch(}7r zmkl40YDClqD{@nTRnsP@x)wmb5}x+L9;zYfKL4xHPd{)9G=h%M>WZmzM+>mJ{0JcNU-PBX73hrZ7 z0`@DR&Wqv(p)!YjL2A$~lt&un^^pk2h*;MWsE8(NgXUF&FGe8;#ZA*kn}wb0!qE?_XR)DGMOWu&n(>svd*nab{QDAL>^dg=fJ((XRwC^U>g>uydS9AOitv0q=ywUM z{_Ry~4?jZ+Ih1eaLLYR3t;jLW{H)RL_k{2GEGKfo!_Yz=!KDzGJ|2nFoVH7_h)?1_xC*4_5Abv@%-1hE=Os+Kkw~+-LKc{zGog>G0^4Nc5oXP z7Z=aP3+IiwxPGH?as7U3%VzjVbFTt?`-AJ^`LkC8Q>TX9qD{M3HP`4~Pc9xgd^mik z!~GNc6<*)IaMHu|MwrEDVA*RwH*F%1qG)P45LuF#Qd#D#Z;X}hR+R_2Bomh{}{|7 z%{Fg*D|~m~L)^gi$A&wqTwI6GcyV+6y=e&3rzZ30ES8C`enslSW<^!svIp zMrlvePTI_M_>xyni<^tfR_jU+o&xg{UQgVr|1%{|+bZ@NtMSK|r;Sy&M&FAk+3arD zU`=_=eUXS1Q4bC`&Wj%$?6^4#m}G(S^E}b z4q$zpQbfH}eIX7qPCe>X?`q z!m=N{XdlY>2yXGCoOg|e`to>|b`tldhO}@Q*w7uK8fvL9xrj(w?WfB6g`(rPzJGZ0 zSHqn*4o$I{*29O;jH#_WJUoP8BRe}$|CwQwuO+s6p~pI_K5TMwvU+}ZQFnp4?zDL` z?#k3ag;cNI4!k;(n5n<%&NqYi`=l+d1imRIBb&KjJ=hmHG5HqPd%VI2E4XKH>`;RE z*d&_7vYltPsm|1zz}P|GA4p^_OjM1=Zs+C|I$HfIO2($@IMc18+K(C~yT>*Co55RG znJQ5cc@OMZ;?FM<8GBdd;}w0#t+{^q=ZXd6PrT`{1(Z44WM!WlgzPagMUx#=t`Q@s zR6Oo2kNqAc<&C5Hj^Q*fL?A;cSA}7s4=5lv?Cp5c=>6d^_G)g0t$)8GY-x&sUC4^$+(LsvZk1Ql=J`MalAW=C_Hd)%5Iy z!}})DFq`=n@B4LVrcRym;xmWXt=xPf($$4FE0gB9<}nNb{^fe2ncs)Gv6d``3!U7C z47x<8m`|(F3A&>EDA}%)4Qbc6(nvyZ2qTO^&zY-Aw`{$?h#R?072;&C6TW`ky}Uq8 z8f5)BmLeN>qo>f4uuNZ_3B$o+A7HQN77-GXY|n1n6!1j6N))r>;K|%h;^(D*Hu9Y> zn$F8fm#ls@-cyW9p|VCE>xvw!{xFW*_ae=J;UFi%*wveGU0>GM*Sq#6Hr(YFK*|4S zI_`038aC%=wzz(hY>ZXs;_T@5A_+c2%~jvxnY%4=xZ3gESp#+GfUY8)Bxy@y-;4Yy z5Ov)pQm9#TInKs!VlrZOiRpw-4^|2=RHjKd&H1T*1uJz7iy>2(SZfnBmVmA24rbC& zi`-SuhJz?+&UMO+K8MD&Rn|k}+k3g;0# zwU=QPv;V}OuIeZk&54cNyy3%jXv&(%xE|@r+6Z6R{hp*!ho*ffgOBfS_V0#!oFA%w z;H2}FuZDj2;wC@gjgxR;7B&9vhf2D&_|*4SB*L)>80(6d6^hR7>?m##eJ?0G=QJS_3iPZ2b=KE-=gfsEmJsx!nJ;&`o-1l0UZ4zLJ5{)Mc zFa-s5y{xe$JCTZeMb?#OerrMZ>s0luv&z(86zqN~VHn#Jr%J2J8uylDbeS0P2lE_D z(7QJAHT&P`*l%VQ6jw`5^_6D1`gnSH@VfOBZuOzG^B@yc51!9m4)ZOkp;hOHZd3(? z%B6>m#wg{VV%B~j3TLa20szQW|7bN(oi2A?MJ5_0n`5sP$y>CnIQsL1-(*+jAeW-9 zmxSesyQ~x8T3;v)#QhM~&Q-ew4!RT{HymcqsVfA8`CvvV$cICZ9 zGig|MWM#n2u<78Dxo-`3jVjfJ1v@7T2pLP58&u#6b)GsSb^sEK@)@LWQ zlT1oqzkc1i5GSN8uO})XXKUlD`r`E#+TntN%}g`FQ#ZHt+J#|g*F5IO38n=u@P7h% zsH0;iW2)bz0^9V?kJ>}D8x)I)4=_qTe(hYjh8kkI1T`{ z8~40A1N(teud1|qchho_7Jy4}dxoaBDHRy&M|*C=X&8rIU4_U_rMd-|mqLQb)GxW9 zudhGeTVhwPQD}#&AAce_*YA|!SiBk~RlEg&Zby@FfDPGUVWLxFLIQuz752nbszE)x zq~{+ypEgBo1a>Bj%`&wtsP-Of&ZUQrzl`+G@Uiu%o&7|##d|x<{rIAtWc#?ntyhQI z;F6ODd6fU*t*6XRLrvjxTdu+7Fj`&$NE9IQ=L+9Z{gR*kP2{~f>GUvqrVjgib&_4E zGV|c`loYKD4NPX+5`-BZ(;l?MsKliWx>j_^9wTDuyCRmX|AQAtIIaF zjf~j6%zxsR>H)3-;LiO??I~)pLE}PK*XRLjvrVG9EY(YXks=pjkkq4C6}j_0 zzTJT@nx7hK9Pn!|Fe_@tw3n{V#)TDD4Z~8^k@TD#%vh$D2n^lfeNZ7%b5$||p(${F zkl3|>m?U7=9_*12@ooih)SaMaYCqgIxvgs-WR7lcFHc|s<~FyqySQv5O(_yHrUho& zX+G58q4;P~&HC@bVM{G`_W*XBCi}}>I-@+!Mt%s{e5Sdjpk0Mp*t&qv&}2VyFnE6Q zn4Vop9b@25^=}p0a8)XVh+12&u^7{YdKow2y5NOo%)^glGP$F#Z@+tcFDd|4OphtT zVwF<^zdzvb9qj7b>rp-N`jWaTdxiecLkpfV=@BJ5f9`&O5AF5k6kcVILaMW3vGCtO z99-3ry>Tn4+gHS0G}>)$*M=DefP8q01S_Oyke;nA;lpm^2h4u|I8xdq(&8IkU0wYK zm{F!R!9z?Z`aUCcX};6&Asm5%Q+uloYa%COEoRhXxK`Q9(++aWq|#>BXgGvT%#!P< zQ@0kML444BVzF8m@~&>nz%VS~FJo{E+OAUJ9v#>xV-=5enyF`b5Q?0WkbI7g`uXDQ zT?AL|a`Uy@u)Fe1;sU1>+E0t=g*C+rTaOi=ncjsYrL}~ymLy%C28lFZV_HoM!e%E^ z*((%HiVEqOY|Yf$C@QeszqTA|_xJa2Z9_hiP)4w8ofH5uTUJsnu2Ts6oX1MO96F!~4 zHwY3z zjrN@xR)65WORo0k`=c|DfzL(`)dUEj3?eJa%frv!-RxM*exfg{JgNLP^u@|D!Vmdt zHdY|8e1{e04(y+<^u|sUvPCqOwL{@59^YZkpHB2zW0R>Q!jD8og zH1}H#;T=NA;3^!QiDR#l*fNmu5KW-BTIPh8MW<)Lz8kf7LP~lAJVVlt+cl1}gIXwG zf;M6KgztC-T)uJf~MS3IX{_xfw52~}Pt0WA6 zDMLeDZxzzhF?2d`{Zm#Yl(rP}Y}$WLKQxzHB=8R_O@q@T;Y7;d*RM~Ow!W|vMQ96* zZV%y;T(7P%7H`67v65Q8n+zy;Tacv&DDpKmLc$^v2CQoay)I zz;4b{7d}50E9g3us}8WYo5;uS!;CS`yPB}@&z>Wf?w=xMtj*`Zi9A#q4iq!N^xF8e z9cr@1g<{C*3$!6sA+^9aFJjB5ff7W|4Lc9TNGM8~72Y>y&xA5-{L|#ja8xR_F;T|a zo5tI9ghM|gqn7?ifZf+v`tg)VQS%(Gb*8&JJCAoMSsNtFi<@8!)n-2&YC@zI1V=lu zGC|6GU)STg`o-@Loo8aM`U|TN0bxb5*FdCHP(uPpn1J$he445fg?7fBL*7Dj6B83V zKo2>qFMYeq=bb?Z#-G_%31FA4pG4N6=s9BkZjTfVU5s(C4VnFzjAs0JYPhc>=H15? zmd3!^Sem7ej}MZL$OAwL4nPv@EcW?Sz3Ux}0Psd39?HGU*)H4!i^L8sPrvGhr|x$P zwAOX1>-PrMlRW9_?7Rhzg!So`gW73|0B%uxgRsk>XDB`8=*)wA_wHrU?1qzNP}L{( zR?SgQ+*(-+e%n#W~wpPB!_>)!qT;rG7^EsM+ zzRsm`De$Uh2x9_{^*lwvc-P?4lNmu~#U4i^e?C0P;G}!Ra z52M9a6_R=+jkU#5$$(e2K+#VQpuYoVN>!)wssf*LzIn6N28}|Y`l|ihBHQaAkeusg zrj(+!qBsOLtP`|$i?e#3nO7W^2L-DIA&SeFpJ5;p6T+zNYNu35t@j6qnZZiA=DU?D zgY|=XuQWWE4WGV5+}-)KJK7FPO<7H19XI` z4%7nj_UE_NsDq4oihT{5O=Mw_lImkX9yLroT^a?40a7EYR$!SqLpqkUp<;}j;u&ik zmd%$IRdGq8Md)v_JsixvY;GIm2q#P>ckMh^1<;w*#)1S|GEh4>3jDeGDjxW|4P)^H zZP)lER;rScQsf>(wbC2xVi;Hy3D%fYF!yz-w~766q5pM zg?(%9+)s(oQ7;A(bkynx$KXx`N!yBPZ*)^uf7mj=K~ z6lEtG+X^@PPya2hDIDiv0R6M+5{rvg!%q|l|i%<0#`6>(hH}WW*&(oyF%9e_(U6o9DKh<9*=EuEreH$># z^ACESE>L^T{b;0BT0mA?U0Ha?epO#cL$9Zl!N(9B+uZ%-sf2l+)EFvsY0PMNqX5d+ zh>-2uSC3(3uJAPVX{q;czlYdI=)eVGsOln0auTRubWa@o81V$UmkiU@ln02OAj$LF zSDg_`k{8RMm4-I_E^wXJpX`)w84(*_32MdJkUd?U=EEo2#HXqaZO;YmX7Yk;l(-ITDypvZ5%R{0bo*jr2|22+cSmU{^5 zI0tJWt>w&r@=Xi26=mx?T zA4c5ezLsr#3=F5bNyU(%VpNU1+%*?B47wo6Hu#txemHP6CbhvKxCw&fs}c1G=q6M@aMOqK6k7nIACxEp)Eaeh*CD-Z=RS-Y7} zL}=R6dttJh^tbu(e|rIpD4Q!TtS3!KtmlKy2UCG@No>m#Bj2?{a{4(}XFnMF`tvY! zZ)N1qZmOum3>`$HCZ$*i6>WFastLB(#zHuunla#()g{6@Rs}?4NoMU18bzWA|rfOp_n7%S6 z!$W>IhpH8=gn=~h0Vqqoij}c`cRd|hL}f6LjI8FK~`OuZcsCL28-l#tl_t(ueOBvbDJT*|sYZMKPVtjun zr;~>P>4a^kuh8*vi~!3nxoiJ9XTA}TC~-Y^jq`knYWwJ0-z0?iq;=R=L*iI_lG&);fP|2fkoLDOI;UpyO&!}TFkmO?IXOOJs zH*7iGS1RU9?UC^r0?PXtqx1q{Kdh7~$nxH}=rc}`a0{(?X<%er>w9yJFzG2w?Jbe3 zF5h{Mq27Umq}QZr=0~#>4flh{GY_FzjJS5?8tqawPE&?0eFFkHzfJX?fNkI*y&<4U zmrcon)D4z^1+`!hn{}=>UG0K8zYn3`?e}@sFWo4wJ_0^KMG%rXG%(B8 zpU(g@Pjul0lJ=Qc2G|e@vOou}Pw9K=?*cYg5|%!l^#1YrXa#P0vcNQX#>7yae|lyP z(pPbF>dOL93T8!{nHFa$KWE|g@uLR9;Ecq&y1TXW5MRJFg$Z|90nY^JXg(RabW{&vDi&1yr|od+`y>Sq_-+y z!x?a;ij`upLgQcx!HRXG_dj+?2Xu8IDn4-FEN6sAd6Gl!CZqpZWH z=m%db<22V!H;2TM5ppJvNBra7pihjcGQ3V6`s=HU5v^fx0SU!tyVpK)8AFOFEEXaL zO!e(TSbrqoqqCxj%L<9TYDdUUM0lce1$p80q8aS7;p-&~)tVH=;0Y+?_GwE|l7r{` z04M1sSP(|!B`{M|D}%^~dfr887wyW>3=4&mcP$}Ac7dZ=Ahnr^Xd_)w%*m6dPU#d( zJ3IXN{5Wmx&{2gOt@q7lz{h+_wF#Tg67_q|Rc8M&>Zp1P{o*U2+t=ci(_tU5Z729Z z3B?)*fSvLlWcc>HLp^u1kc|UNJpY{(ukY^=ER%W-nCXFvYXjvjg!adL))vFGKD);T z-LEKSzfSRxERO}pR);lM*rPGefh(!8Z^IyVfhq2}fln7k3OLSw^Azps|f|)Da zWJ2P0fDGx%pnAw{$rJ%JR<{tPKR2L9|Eez+BaZ`Z4r!tmp#nyewzYw`UiwJ`k_{-j ztSrt(^!#=ViOkk-8W28SkVC@}LJ$H*Cn4<48WYDBM#=?0L5JMCHTuca@mT9)9mrll z7nCx45-TmJx6uIPgJ16y)~x-wMW5mj2v0;9%wwmAYLpO#Oee;I75eJkZQ`42TJgQF zz_tBZ4JRs$c#G4XKE1`Lh@Opk$hB|%7W(Q|^Rb-pms*kcsKqt1mwf9THQf1~^95xJYW!#EK2`OQcm|Da7iXFL~5=aT28f}@-_i#2?et({B#|2_@R8I>y)CX3H%pd zopUMK*!S3>@SVlr4mpRVY!{G~t`@og^`EzMyfl=%8n_eMxa<6uz#hs))F8?TluDP* z*RAwshkmU>M;)j1pd0hpAy|izEnY34?n@(I*ka>RKRHx&`MB}9Ew>WySHzxh__PB>ZKH~6!i5Tl@6`QyNMI#e2>Pvy7*Hgfi(J$jj*NSNm0iw?(`Z)9P;~1#pMoC&`tmp^Yzb&PLNeVAfagWesmNNsJv@*) z_YRoHQAIv58;aG=n(u6jI4EC7ss zukv*F{SC?cY;H)zbF7vwK>lW6@P1n(r4EEP4MPn zP&W(<@|>9OYZd!$HOLp4`p4X$I6zp_$Ov7Y$ZWZ7ppQ_d{Y2{INa;-*U(TIGG{{VU`&z-k zTgR466vcjc2M>zlIv=az6FPmI2)K0(w77O<-4!r6gW^MZ56B;;+sM|mB=N#d?+* z%we>gz0;f@Bx(Lo;fsDJ6&3kc=g#JU0a;kQkBG1mq(CVWx;XMPE^I~1Li3IV>90iK za=sH^qbQFR!x@v^Qd8hW*gG{3mb;k5r(Xu=;Jfk%3o2^5-Vv#nZss|7b^80q58tr53%KVBs}Jeo=8}O->THS%s@QJ$o3x& zkdGs{NnN^$e7zl}a6~X8#8MvgYX^OW7{2$QOc{AO<`Io5T`sMa;W%} z3d_Xd<#Udu(p!vRbkGoZud2RUvmmjOCqgur331+2dV}^0)8M#!GL;?FPEwIVR;kpj zp%8jo1UC$FqdnDfzGYk5JwT#O%zu(3?DFOR-y) z0?ab*-Q~R5wiD~}8DjC0R|&EaFFi^1Mz(Cc2CJ}*?ua4{TlTn!ss$bw@@YK*-tuR$ zxbmQ4yOr+($#|15PpuyQgi50>Paat64s&8XBqypxsl7HqPGPSBa{j6(7~*n3L=wzx zUFbHNYqN0*X`=vvUvP(}eV4|PoM`=k=R@S6w=^d}Pv#q_2TS@Mu0fPsjfh`DByU@) zvVyA@Zu;F|lqF5AT1D#53^n)#XaV8j7iEX7QNr@O9y5Y|Jl2(G-t2gB z))9}?A6qF^Q*T?~Uv5H4T43x5v8NO=dZvDqJ(9xiB4x;PV389X&%Wf`I68Qs=Yv)w zc?8WEYS75h=DUJ)DCh~hWFRH0i9sYWbos16sjWR^1uD^!{@LE3$)fyazzT$J7m0jm z3en}6NxSBBl=0Qlq!wUs ziK~xzP>8@oW_k_SG5DQGeQH-+#)3;0_yE@uRKIG#JUq$iNMT7=jS(xXDlZDKW@ZN@ z!@2h*rw_(J)?O|th|^fGbsL8lrS1Gq+++!KNT!nL{bAH;NN%m3MJw>u9gz5Bq5}Z|2ExPtI zQdiBt$8$aj_`sM)IUc}W3(^(29t@IE!KU_uT?Y>yeBYj?x_w-)3F*TEz9BZ?=M2sl zv@t!j;L~>#2F#q;Yk271pB$=~(+!zI9>a{!J)HGs2eowO7@8rM zQce|(d*}bj@J@z`_d7WL$@Td3J2A|M5MoF^Y-Mt;QI@1ePn#0S<}amznI3D;HezLo zocovMv)?LuZKd7_PM3ky>45%^>E%w#0Ffwn#8tkFF0rk95BKGv?Dl*;4piAO0mgNM z8c_n z9qrNev)*gueWw1Md`|JMeZ)X>b-r~b0-+n>JKw`Mv)K~>_3r_Sw$pT2*XuSQmAnHA zH^O(GTLgPwL70;HP*$=^a9RO;G3Va&Jd+$~$TDpM_sP{uRMr0`LHsO2RP?DZM5@)h!sE9U|Qtx<%u}V))bBh zf?@PN--f%z>+6q110XBl1d!e>SS=V0xr_Vx)PA06NE?4vs1%P#Uy!q*3k7zLD(y%~ z0fr^FrwLA1cS3Um=miVki>6>Dv_duSq3qUt9nQ8!vVaWB;{>b%F2XV|eQbiJP`)S+ z?a1q^*7?Be5R(IG(2~^90VICXxBJ%O&k;hgY98?)A?v9z`7GTy+3Lf&2RZj$=wftT zCgLk?-m(7*0jEx@8hygrr}$}OVWON}`UJ`F`N_QTQ{@v-!`}i|1crGiASYY>>Kt_9 zXt;Wn!1Fkrrqa3Vrnk@+Xi!kViM|aHLmI-MlO$>f$N&@k>r2T`CP+B&W3($@Tt--A zxtjqvJiPtv`W}ug(#Wa}qC-x~KgU_7?rsNkBlJ0BeGgL&pb;~zuRMm{lN*!$4751xm$5wFy26A;uX00Hog;% zA8mUcFS8CO_F-h8m5tNM`8#$!HV7eb-%R;lfR0{oOiup-HNE`dO4zr3DE}0Dnri4& zY12KJ2|vm>XBYh*(&&&576HVU4JQP0QlVah%ijPM#Fx+`){k3TD9Pt$f*X}L{&sLL z{bEM1E!v$h<|}!kvQHX#$ouVb($$AQBjR*ZKy$JNCfIbN^EM@mciGU91Dr4?A2SGN zKyXZ|fGR`oLOln;y7F#9hs-h>*>vrs-?1E~Y@m!7-liMJqxhwwWR;^p<6JFr60q?) zOBj1M0lkdTW}XPfq^qN&Wb-;7)Y*_Z<>kYl5xogd?=N-G?P}^w5`+x2-T?dKsQt{m zk%!vPe>Q3-4ZcRIG*)$a8m3B~5Ur`;3BXnP&%>?lXZB#qPe4s0Q$L0b9w)l{4%&&G zU=Jpv5fxSCb&VkIrxzrh1a<=oP+gV-ot=pw)M_L*%tQH03feSzg--88N)SY}|NE^H zzRPyU*1awUq)AAZ&^4@51fg_#l2sr@^!ZH}`n{wZ(%#iVLIMmzP2Z?$k*$$trlY`* z(N5}rjqsiVCX&*sQw`jq?bC>4honKktbZqfs_{pxc$8~ ze2Z0GuwPd&1+j%LrVW73&m=vai#FL!Y>Dr9m}?Ag)sh0+)D~1+R>f zEh_|sIbTo#ZSB{f*+@I7Yk~(FxhK&#$*sw-cZBszqYla-*^O&DDz1bCj`%p_c@K2} zJ&5MgLMXc)hYaq#5G$fyJ^thgQkMq319+Cnsi7O7k!Jf!t^vp>j-IEZF=gL+o1j}Q zO17jBh`LTu0H+5!K3pxaWd&?p>1yfw>-aidim)5rlxJv?Nq%WY85T~A>3 z^!K6-Q%=cP6#?3&g)&pyoe>X^cjx!*h_!LW_oCx8sC?JDik~81S`hk^TcT|~^e$mQ?ElZ( zw{s6<8&BNN0!Lvo$e%_$U>ml&&;f0MIxz?NkuNB3uf)(1A1eBwq9k;`iG%wSfgFf3 z8_HR1AKD?UdqSn;9-k&PPq3bg)inl6H@HSfiCj?trx|$sx&4Z+T}JrM;S-L{@o&JA z=S@SyTR~ptF0Nh4$maqGG^dBbf~U8AGkJYU`MVMk%Bwe-!HcosOvWarp61aA zc-vXk_YI0-I*)D|I&;>fS|JVoFMPead1V-RM+>Ph?x14+kkXxZPM8pM=muwXGc>NP zPBo&faleIklzy}Q5|jVm zja95lV!f^@EjDCmm}G4oTZ*V7J|6lP4~~VW@;=<^Q{8c+Z1-#MfFa z^p=-Xyz;R2FCic(@} zF&W+MH2p;BV>Nd#qcwfE(9RV3Ag7nzP)8hKNb~KTyuZJpvaT6(;V6?Q2>Z>J)@X?K zyvqOIVc}7pFA5gi(byDYheCHv8*Bw_tUaLo+wcI%TU2A9%q`~MC0^Z4Y>DWLEyTBH z5-(>2wY?;IC&#vzRp8+H%9AGseg0=Rke5!U*nZJUlr-{~(6jY9T6wpP(B5z6n_ z$86d4zd!#)|Kp+^Wk>CK$Lh!MyNQDX59^7+n19bM_i&Zy^rtSk*3f809QauqUz0rV zyy|M`#rJYWZp&Ct$M%00E#9!|%zj;``tpbJj2h*Nhk9_&H`|H&#ea|WP*tT}I&2KP za-la`OlHIG|IA`XL)|I_O{cq2^VxrQU%a8ttnzN*b@sB}9kjJle(36h|K2V5bvSFPs?c8!QUXLf zz!aNyOOMqhf`&A*YpXTDr4VGvU}yXv8{hmceg1%c1?3I&3Hkp%!Dufl`X+L2iEmpG zG%2zAH+F49LJt{Y=!~W8hfi0hmE+NiUl-sKc7-w76#)SiF;W}2bXp`%{+20}c!ypTQkXgACmH$VlCR@*-y3t6s^sdLsI!kqtCS6Y z$wdeLnju2kDM*Rv}|Kjm5m4>LO^KeBOTP;lGdb;rMNsF`)HB1QFATw9KYIe|m7e=VQG1pQ1 zODP>S`F1}0e4Nf?U1CqQ-RNph>tcpSTX{)Z8%Yvbj@@l9ZbtKc?x|1vO6zVMXqpYQ zQNxURzIJ&YdF@%`HH#fHEn{!1u0vy#+i>T}%SxV`hKGCPHV()WJuzAN@VlQmzdI6& zwJ|Gc&=BIKQz#U*9gQIx8DYOKoxDt63Q2Fem1>yN874B*lOzc$wkT>~boO+HLC#W$ z2K)I5_VV)crdu}rQ=XnJO`2;iEnarPY9qW;3CNxlB~}vm%*5Hi5|!*42Li*$)lA%G z>qwTGoabkL+CRhlXa64RlO&diC|7$;SKPP^kCemS4)o2MmU@qA(=lB?fKtCIJRLV1 zg4b!T=v5zq`Q0d+X*{kLBHsotOZW8r{CnSaxs3Ig_W-P>9saBHHD?qeN|SMmu3Xb zE0169REr(0#IMfIp5SXd9yeMwL603>e2Wj*f6tR0%7s3Jd=|?YB*p)Yd~OTZ2z)@x zhWGHXEx(1s`_eaUflqDOvJ*bbW#=EiUifQ!eqD-Rq3{bSe&OSkTWg&65mYBMSk7! z*I$4Abbi%7ne%&BFMWzxeNxNz#^&gcyH3a-S*2LN;`bFMH#ZhC96s!7d)i>tbpDR& zQ%g+F->mGc-sIfc4Szge_H~6r=V%^flilgBeMtk=MGLb*52oZRs;2^7`&}8; z)w%^srKEnc%o<(>uM%}+9R7dqM-;q|+FNNUslT=prKGODS}F&hiRoS#|Z(%T2$3_4v-xeqsJ;^D=n?KU_GVx$%pUkk%GEue8JZ>7Jb^>3@x1R4+7C-E-O$_|(ytpto zlvUViQWd+$9Qjys(Bz5vFL(B&qgG2j{`tD>uBL{D2Q=@F_?ApeWM{CDrx`diGCkWH zk^1rDM@`c7pfA7KCUxbWlD+)V4t>IK)6V9L1r6bAw&*<{3l z?<@&$=MOih6%`c?XH^d0*~2(+eiN!{qBC&J3VmkCZ?rv*z_QM?JTSw=6Blq7f&)WD0%e`eJS1 z@f+109uipU#Ur`t$97qnnwk#RKRX7mz^76i`NwazU#Z%iA|jLe<8c4J!PyVDH@JVg z_e+}pSZ8#(38vhiF_owpyfCZjKib~Z)MUwzQI2#h_Dh-Jad4bFAt538J_EJs<-3|i zg05u#Tw}IlaUC|rAi%2iYXe}ql`B+-=DJ*Fy#VTTX{^jekCVOG2${WviJk)A(%--It3qZkRN`V;*-(@2>O2EviN)|sIw3$qiD z30b7)){k`XPD7L%EmSO)|L~yV4&vjbDt6;RqMFuHLFXgG`N3!D${}U(`&~?0ic-xI z?cf0BM)FuD0oi}X?N1r5H}NT3t#g5s3K6kEoBguwSh$*K%&W}Z_ZufQt8GTsJDE{GZ^kG65b@ZC~A7yIM&hMq^}@)}24 z^D$v?y?fQ!z*K^YfoOm6D=oN)9AZ?uxx$m?g%0QPk;! zPt(hH{x)DE4EOzG@%C@0?!tDLC*h6e;YeMByT$L*d;ny%FkO$K(BO|guy!&BXKZgvLgeI`;F{HTF3hS0ltTR|Jdjl1Z-{Yz@*K_o@C z62nI~>G`^~G01@~5sgXcz%v82iFq}Rc{o<3>&~h$ole_fpT__M(V=*=v63k>TB+{b z*GS}(=@9?y(wR28_+*?xz?EiaX|H>dEj}}Oa$QU>va=mK#7WaUjt){|Xv4aX%OyuiduE<& z=nfHzHn28F^DSF2{nc?66-q9)MOR!LQR0E5!0h4Ec?x^a9;A`uv^=bvd-K~eF?qX$ zfw@=uD$~nl+cv$G-u{z8dGIuB|G{7dc|}k0C_Q6TBdV`LB{{RonNqd8&=P%dV=`qi zpoKg)-Dr*^SI8=bGp$_@PDJjo`sZy9MZaw<4HPuNf4*(*sVQURu|U}^vWr>i1zUy& z8&l2aA@hglZTlFWF zw@{-yn0@hHFAq&^ZC6f2D2nuQ__7_6j?s&&)0!{3x8}P1=Y49si-ul2 zI%8pB(b2-7h!>G3YI?L}B5&A~W|2x~ViffKJRQa5l(u|#44ZlO?R9!qshTcJ+fTE+ zY7f(a|LJC8;Am0njPt~o4^|P47jMX{P8W9Fr7EviG0P+=Ue*3%{NRsQWLSVhm?1TN zzmenkl8K}A#d$7wKBN!eH=T2Lj42LoDKJ_XFC*9oVo<@eJ#@p)-j87!q_2myz1pI@ z_RxKY9{7!Q0_bKv@KL_4l$sn&dfAvL{Q-&U^X|Fy2&2UVCle0rBaD2`nbuJQgw5g% zr3-kRSpIaCwCtM9DteV~#rD`H{_0^2F3}3!yE;xoh2wO0)4r!jfaa%%ZVo7Gd)mg3 z9iY!NbC%?&wn`(G16wvfdzQcAQ?L3IF%xdUr9%Z3P}S9W6W|1b_Z81VXRoA>rY4cnr?q1HYW2s|coPQg^`Af6@&~hWy*uchftN;$2CM<7 z`VP#M1NtPNF>!Btc^We_#VhQ}CfZ!39fY$rd)|Fws7lH4_R&_uvuBuwh1(+%&YDDbzPDM5kr zjmeAo4d^9pGEm?L>aP!6ZO5+EzqD%8-pA^xX$;8O+^ix1ukt?3Q*F=Brz)L^`Q;PD z)z1=GkNi6WQsF>dpiAGxjWuVmjj#jC!L#RR?4AkINBynJ$dadTsH8-p0!MPrbS`K2 z9=^^(3mjUss7|HyX{~`7VV9WEJe341A#MET%m_s+pk#DjcYeSX>?p9?jZhjb9UWi@ z8Gk0~6^t+RmPZ&3Y73`_B3-cZ>JGN`*-~CNzjeVz;7UismEyFNE*8uOX}Q4pVc0?4 zg5~9r`K?&UxIEcer$@XKtW6&Zo}H?BU*D zsu-Pq9Ip+$6?N8-_HS<~8SG5SCktmh#rlEWgAFOBL#d=rCWRs)DOwR*^l44}ej1cD zf@uY$&Y{NCR0JREk{tb70R+nSRZJL*q{}BZecIWl?_T!e=wO&BE-^m@%jz!ecIt|J5QH;)n#hF6phIs#q2iu1VnIf+z95;ab zHsCDH_LrMN)@+IA%}q{}D+5EwKxo7G$N&I=j<^3*e@*L*AJ8;@*QUocKN+0*;q6q) zQ!IXdexG;y>jrkh)LnasGsbsMO-&!fUzrVjJ z$GKdM6$u4^_c@KHtNb{c^96=~n;LGcd?NG$4I1R??Lz0X;Y6b9qOytWEbY7p@F>pa8LHd?-NX zG{1j5mbs8pmtbx<_tglWF{n@sB$()skTiE&HT%<~($MD|=e8mrTyw8dUQA3(6LhC{ zQ&=*;xr?NH#CRd29OxzYwf;f-Ux6N8AHdS^T~4!<1ttl)OAMnQljrJUkB297XkM!1 znj;%T`RD7O9ub#h+2czK#*?72J$=`4Aos{#H&@lhcP_9v zm6z96b^*WIF#7R+-vQmSYtDe=(1>=)87*9jnS*Q${45LrFwW!g5t8&jtD754{6P~9 zLi~rgUheKEp!?U-`YR$;Vj2CvB0C*yysc4tp!YGS>axisEqHA$cHxVBYmzcF+YC~I za|@Jqt-)0FyS(Ip{n-dDRqX3d+r* zzP2$$Gypw#;4kau@r^L54J=#gQD6t0J;DS#1>4NaDg8ta9~!@w=NVBZe1I0blQX z1{wk{_@75+B5MsbZ097E2s#5(r~!bttu6K$%?&_WO|U*58%i&I1=1o8y{tdHcR+j zmoKy|7fvL}G4Ho>{LgEYy!gjvLC5aWw1K*59PKD(UM|*E-xPqby;s|g%_NKGk}*l^ zd7MIV3zvn&YIoIs@kyNy-zIp1jxju;z=J*dIMP#U;##g|nTf9K;Hn+OXt-R-^prOOZqk>1#+9`eFOd27;orih2nKn*;EZSCO?);}8` zful6FFZ4#g5IW_YKSC?Tb5+(Ynf&KbMspSBxx5pl*Hs3FE+NT*TQ7m#k5lC!|Be9F$d-ry-S|$ulI>%mUumo zU=F@g!2r*gbM0t>yu#t^1)$q)3kk|$5Y~-JLx8QK77p|41Je~E+9O>STbw+#*zBR(nM)2VN>stz3q^d%K2A~-_xZA&DZbDxT7mBF>c+addmwYu;Y2$wmv6!J?;(Zc zJIJH6fTIK1j`NdstCCcAkVT<)M=q}-WVPZjea5F&SB2BYseB|*!j;$+`|-|=Ju52G zt-7^xv!Wt5Up3Sp5d;Bi90K~Hts<^e18Yv~(@N;we4yws-8v&>rTXiwjcb;8#YqnG z26=IApmpXM{6nI?e+xkr78cgp5rT*0Ba*?*wTJ3@Qs*(gZ8D%c|B?lulH7s7>BIdSprQYCR1fSrqJ6l1fsrQ5_Q=?u}F}|I|ln0 zW-J0hM04i%l#IWlQ^lvUA;}K=+(n`1Uycqe3ddNv_;ONBOglo2dAhGi{9zNEd)QO9 zhu)>?crDc`(hl>a1l|M@Y9cT5N4Mf{0O$$Qv2~^wn%Ya@ym(Q-#Mx7jwp56x3RhtZ zoXf-CVYT!d#{Ab1c?Im;k=EnL|U)W1_1CBPUIzvG9M@ab1w1JP_xT_`9NWfZNA&-9)<8} zVWKn`E6FY_6lw6u1OL8pnbn)4T*7}`zr#}Rm`BOPM@5V)A~sqGkV|_w9#_D$!mwrX zcS|0yC?WcT_1ieXh;I{JeShkDDEM7&+clKN>x|_#*oo^GgH=-YD2tWY*+nC{Rj?O) zZ14IU>2fZW>C~!}Mc{Z9y2Oz|2VmG*E|pPxsV5#gd|Q0`0ABfGfgK4tgKFG1w)hJB z;)iVG2W21Ru?}vcV?ua$@7Fyc?*dyOL;XfRpKb_Oatb$pf3aW>v%!kbR)}bZUY?tf z`2<>wJ9K^w8_YnuC$$177|I{3wKP2G8#5{5W)}l9F*Y_vbkcSo&knj4M`??`-=D?) zW7!wNciYo`c0#r?a8)HaXnz$$G{>T-yW6Z8>j_n^&0SO$4IYcmWd0p6)en1_9q&oW z9J{_!{nHHH0qDa{kEQ7<5?W#k2RGDYVO~R%N2H!_QUX33@eC_g>2|(B@!-^LONf_a z(2u~(I#GOu80&E5L=4{?sQUxH{65gSYI&?UjnpVUS~T6*>J%Bd<>wAI zXY0%pC=rz;;?stJD^5M4I9yWNg^*2A!aT=l6x4Z*~I8rj{46Su4GX z-~{Bp)hX7BJh>vu6a?B*a}%bpV=R|YF zY?l=iqwZ)It0m3fh8Uk$#{Wz*(B+KChPT_e?fC-kccnJ__2u4S+9(jQR7md)c4N|V z2B+LsgA{T7FI9U1dvd_f1M{AwXX>P$D+_Un6M;^8Sw+HCKfKQ)1c0<`a;Z5el1R4A z21T7)gGER>Ha`=A?_z=2V=+awdfZHURv>t#H`&EN@eg}!0v92MEaY@8#vlbT!@;w1 zJJVU}#7ywJW5B{*!Rkmcjio#4cmTbDgF%y~k0aJ@75&;g=&9@L_YwP9$;o{u8`u%o zq-CvxbFWjY0<2%2e5Bp%Qq%b2q-uUGl8k`+8|{p<8>5T_?LKjSeVl*zfh%S#aIDm3 zp5z18b8K$4Bg=fRg$bfm;bC~D$j_0zMv`A<`Q3;FF}am!m*o|lY&gK4LC%1l88BG) zH=II26Z~7r;N;1ZL-NeoBNxFpqAAD`76cTr zfAcd`%bRP`c{Ob?8yL1z2Dx{bE3EZrMDo^0JIFszLr zN_z~tmBp|fWwuP27N--eYLi`^iv#}y$$;w#;o_Xzle`whaa16WR zeqk@O02YbZ^uvBJx{_w{(@r87U$Hw*#z*leB@w>BYgD{ib5k1PB0fIYZkk(T0G+3y zWeyNWe(~f-<;C$(Pi`wh9$;e8gI1l2>O_p+m~uY6o2pls%O`$u3gS>S=pGH*9L+1h zP`S&O^a0Jf-m6OlCEWm7)R^zyC>h^)g+J3pj?6mC&Wasi4~^TgmC>R@9Pfrl_CLaJ zbi$5OUHbG^+G0|t8U67dxtVyF&ZJ~g)odItABic7Rl}SaQUWKUYDUMs`r*Fl+8@6D z0%)LnV<0oH)T_Ti2^4r7nb-VoI&A+F>uvcL*$ zVzM)Z<6XR)tPBscy z^GZJ9&7w$%!*aGo7(D2kP@7V_;xhYIF8H3yC@3|_$}AgQIi+n!@4h4{J>DvzkjMOe zM?O!yE;g&M>6@Ro0B)z#Npzm!Z$KZx!(_w4$H!-e0A@-=@boh^AwVQ8lUqrkPt-ip z!8zK*Nyu0~Omhn2@>EAVOZ7Roto3{cPtB+GUb`Y`y}Fb2(8s3{yJR>t{Z$5)p;r|= zjg(M<_ZkF@pJ=UC)K=q?7`xaiJ1O8$=4QD=%3;)hw~x3}(XZ*%mai7^0qGI^-(?ky zf`e#G8=wB_G}waFw=D!4&($+p@bVX!YvVtxUronwL^}t*Lya!OuawJ`ETn6xNUvc~^n(rodKR z;_{%WV4RW+?zt5vwx2e2Lv5#8H3Wjbs)bK&)}HuPUQ+k%r5r~qjsYxs|;(GRsl$W7ezh;w4vT+8|=wMJwoM-&R8DHFk`+)I{ZGQ43I-` z)>6R}c>!fz&^k8Cw$Hw!1HPIe_!b$>T(^G!F+T+Qt805)8Neh+GyD4*Zha7`FCXq` zjQ&{!a?fF|>wYi)p&^;nET??wE&_~p=yKOhjL_Q0`o8yWpN5n{6#*nJp?;^ zL5`&Y-A-L1E%O`#r`-5x1dKk(I5Jo?pK|DiObQGPBy&JCh(hEP&M<3;mMxnI z{&~*)$3YZN$is;=RA(<6nPmI{deLyq4>q+v;EMtk`_`=%dF!*4bh#C>u+YzQ7ws&m&>quM+ZONCsj$=;|{A z+?Z}0y2gqLQza}30Oh5ft*x6ccKMAVKIw?z6dV4**ioDK_0#=}K|v+;3^}C(b?>U1 zIN)X94*-9Hbz6Ye*SEjW<U zO&%>qj)005ty`U=NJq< z+lWl;d_%0=!~1?wLCXh76vP5@q$Iq#`fW8V!cgwBAUk=go&JqNe-yF%+D6w4dy{A1 zt88YqA|p&76Q12<6q=Mzf(r#5L?%L5?r2!lPV|=F`74DjX0){3a6N}!Z&3Hc+q_^h zd}#M%5f;o;)i(Ssp?^rx5HkuYhkK--2SQMpm<&1#U%~`@B-f}-Pux&mcszCdcp!*t zf+*()>7Tx>gI=8NJz^-Bn3&kGTQdj8N;)bOMjFjUZp5W9&rHpP;e(vJ$uUIRkx-+B z9{6G=lIe-Ehub_zBsw=@!zP$XZd{(k_qcpHC;s8X-zQtCUza@B=?e0BM&<$c`G6V1 z!#{lznNvh;3VPg7{AJJL(}~4VxcC6eC4iT+LFhyhiP?}S+(Xr`WR|1cu61L&5GU!^ zWRVSHGWwce4k&b9J;QpPjn~f0;>O1Ut0>Z`kv+i^cVciUcR_vlp=8sj$CSzW+z9zW zw57%rB4??iCt zWK3b^yUeJ|;JOh|GHFzM@1m6dT@o-AUP^i4t@5gTCZq)7r0r&XI&1RBCuGzLH(6k+ zbnC-#O*O0VeB$5S<(*c^P ziGFtcb{|&OyStkHfYlrIQ7HzVK5(pV;|sj5MK8AT4;Lke(SyvoCg-}K4HgIyahM*a zsI#V2WVBFbsASu@>pU#SzE|dcx3f`iWdt!(GiOxM;Q!lW=Z`0FlcMwS3>+ z?oi*Y3y7BiGQ}UQc2?oKtld^35uCf*L5s?>Z)7hDrhwkQs-H0u6tQ59Rj#10AgPgw zv!8O;d`sbGJd@4M`jWW{5B~6n@FPgeWS8x{c;!m2+w|RcCZTWAengV!NqYM5Nj%A- zmnBBrVYo#^8!?PGH1N4++Hc*6Kxd*~n|s&*bokP$(cTb6Z?_Ur!Ic-ik;w}ea-8eI zH)!Kuy1k2x;m9+_Z)S%sRgD2qNdRNKKV((`?l654N14He4UAwH z`>-(`i~5}t;YT@!&_b*)YljG6RBnSyxO^0rhA^;=cco9ec&%T*zCe6niSIEaX<=n6 z7@w$3Zh06Nr`tCJP^Y+CCkS*ab@J}2en2lT1037Ir)Fm%VxWEGIH`&sh@qoz)L(Pb z%*+p+U>(KCs-jewN@~na3463@H(!3Dn4B4TLw?Q0axs5vjvv8FA@xU@kBCEk&2cOLp z*+rNF&PH*(NiswCkD)Mqt(&Tm=}=figicanS*RTIJm(~(8wSBS0Q-Yyt*!gvibFG8 z=yMu5FbzX4KlF3!DAMuq1`lZK&2R&)7`5@zx^It|8^IZIX7yjeux%J_`4Kh>*2&a2O#S z&(akyOx-!kvJ2R{J5xmxA=@ipk#C$sEr2Er{y<}as(w-^sE-KFztOs>eRpAd1F_c3 zNpBuBTQhitt!|GHt<_e4H?w+!jl=1YO};Rz@`d0dxPRovK${1ZM>_uIgarLxT?h_l zd=hkL7mt!!{p3&vpWOnn!Zx;E{Qb8e@KPrdpri9#I6=_4HskZWKa`xl3}-uRMI~9~ zIM;!=Dn^~jFu}IW#Is9YkRTV3@cbYNPr@J+u-5{5wi;(RmFuNVe*6^y#c)^Wy#Q+$ z4RCmhkb|Yw;DdS9onphGrs^@6@U?|wXgpLvNWWSANsfMrIK(QsOPh> zU9*9gCM`xEsdbb9;R|;?@1p*?`}$EI8k|II$H7G%%9IZG3-iMcmaE}ne{XwC5`(7jO8aBXtZ(0{G)8r4Q zxd!LFmt`>ZX8}Cqe0lO|#|mmbc*(hLcw|J7A7xIN3Rhprc~#0%#4$KEx( zTXyHpo#yxN|Cp8&r0<&Qu12;ErPK_!R_ol-xX|6Sa+C;Zp&j8+1_-eu0Cmg`&A+G) zbBm|-K9D2+uzm42xVwNSbL|x=@(iFWHn0q$qC-1B!o&t)F$4p}8}9VIWk>{}d!+-& zAe8YL4{<}eL~R+LR+rcf`ZMjs-Y`cwoRtXNN}u}fxzFW>E&O}`zI-IPXC>Bc!Ev^I zz!091r=g6%wSLmAX!p&xO{?%-1h!)s%?BoCeg^ABTMUS=K1tihI_2f%Im)?PMMIIp z^*5uwGW@k>aLpkak?8R^(qYV%@{Ycz;hm9Jds28=$Sd?WSg+dX`{deGtv(fAc78h5 zsKZSk(JSQ|^<7BmkG$5{x9>C%kWB6`S@ee3f(~HEaD*=*e-Dpe%0&k9u(D}JIQi=~ zWd)L=(R_UbJqfPH&UZD;&JqbAtcShuft)(d0YG;4`-W=7lh5g`wZnXVnhy&)0!sdO z!Cl*v_!FOgyjCg1H3D zQzyair47oZMKh8}!)e*6XMf+GygRRf9oRXQlpWf|M(Em8=S3KBb@A`%0izS84+eR| ze)WjsXW3=f2`44%R26k!U#U0OvlvrYlEQr=$AgwWs74$G77MG`RA{WD2Gn@8@cTSX zp_XaZtn9-pB=FFxpzI|jh58fuy#Q(hrr7y2Dn{*imla@L_m0o@lHxHG|yG z;`RuvCd=mv*iIb&rK5+3s@hsAZ+QF?Es1W-ROuL*8mT-Alb%u1U>I~DtqemP^8VlY z__STh9;O|)EAos9i;FNJ$WG|)wuRpyFafE#X3Fb`hzOgND_1(omEJENV+1x2@GO$& zE!kzG8DD*z5!ZYe##VsQ+n#+r{1eF4W*g>wGxS|WZ_G zc#dU*CNf}_?vEZ}Ak}=nR|F{D341W9NMV$J{Fn}n{x$cPxAg6jI?)4eI+eb73A<9K zQ{V$Ia1okLh8|epJbW?AFAIU2K_VC~Z?i)+&m_Uj<4ac>Ry1tmD7Uf&{0$&*O<;Pm zV2Li6R80FFrr3ov%^|Xrz>lSPEkTcpA&M)nQgqgUj^<6q%UK=Ox~b>srz94L?=Zof`|WBa2dman}x0XS7$rc zBCOxoh$8T(6z(!=7xx-1KI1;wI91#w%0`%{eR3X~F;lROVm(6Rc&lo60?3r=UHN*P zZM+#XMiC3|1T)u-rrjtwD%pj|V7ksYW1WG!&I!t(vGPT7t>MHib6<2dV~2{$oiM>O zWsw`ZOu-#y5$5${Z0G@y=>K^O(70(I%ggOWJ;9v;0|a#Sm&FNXaSp$G4lY=?^7ndx zR@txxT5~6dfA44;4C3x|`3SniqAuhtHb~B5)faQ|v^lZ_+-LJczyA_E3tl+NKvoVl zLV8$$3_LwEsifwNbRZ)B=;!zS;o9iWqVSXEke|QV+DP(q@83g1L)MhnfHB3~Up5Nh zhOQ+-k3D?+;I0Y*{oW4gFEP9AZ-)sctM-hMj(Z>l0((S2LsbGAo8E)Ww-@#>pmlv# ztT*lYBlwF4`~ZWa9JS?HgrS{p2@pF-ZI8o>u>~SvHC&SID{o1|IrkIGNF0RpJnP`s zlx}I|K@u^`eX9C1j0xx{rz}K-e6}qwFV8?O&H+X%r0nq!!qx0{B$yH*SN6C~&wc_4 zg`-@S7IIli)n^9bZre(g_#iisUVpx~6lTkGR6~3&Tv>VARR{xHOV}6^%x{El)i4aE z@O|Y%^We$I?9i5Yn)T~qxb8zo*=51tOn!^xwi85As}E?<&c#wizHIwHShMP)pC4^j zPJpCOGicUglwAfCg#U)*!qd#;z88OL8yTw$!=sASo1cV@P>QR@HIAZeiOiV-DgoXZ*+ z85XkxL^}feWo+}B14hDnntWtKE%vf{3vIqHvbCI z45`$5fLP=uU57sAe06P|-*|O(wIvX=s!?1W8*y&u=H@o=0?(a$GR!BXuF5zBqx48* zJ+N~^P!z}UyJ2Bj#6MNm8%RB?s^4^WY5oR-QYR|70B%ZpDh%r@Eh%3YRd(zMNs0)5 zs{wD=>R5X^4!0e59l5pebWq_pB9vt) z!_#bB>aIGnu~WN|!EF8cz+88EuTH`+~xzR4x z_@t1U;i2F}|%d*)bBq~fBi78>0l$gDL1Xyb<^1>+La zFS@+dsQy9by6jnB-ObW>ufBL|;qU5l{`}MUM~^)CBEib+bLR)%d$EtOfZ%qSa;(=G zI6JFi-yHmRgLS_V=S2_k`hLLf9PfL9bsSd6g!r}Xn|YKPEyLQnmhdZtk&cA%%`2m? z!rklYW?Ve2_{^27Gml<^PjeS>#=LYf)GOSa_}LQTLKfj^Q7rww?WaHqHL! zW9-tXT=1`~)m`*4%vb5ftGtT3;}R3I9M^i++5RU3Rw)_~1f!Y(_xequmWLc_{$SOi z5J&G$yYumo{NA7b&68E@4G1^`Ywn0y$N6R3M>}*e9i;{Yp}jgWroT|VO$M{J0lrbOoU>pt?+tI&u<);6nRLGA>^nuP*Q1&Bk%@UkJ#;-aeVAq2+_CL9qSVpYXZzkP-?W1mBYbqoW~0Xxxo{3O zJX+|!*`Umjef;0k*-DgQyTT?Yv9(Ew!)MU{p2XE|1qaSs3oAZLN3Xfea@oJxavgUm zV=Y8ulVV`s|769v>$sx8lh!`<*Xh5znc8RMCuVvtxeI7JRE2E%_xUpB%;lS=Wy$Li zJS5Ad)M{o;pL?uwakBw|^D=PBKM?nu?Xb0pM{jPf1!nYxC`DuI$=H{p@`_VaQ^q2Z z$&FX)bSPT4Z$*1OwF{GU>(;H7XUHD_KGtkO6IO0mb;U0=y>gj3vuGovb2$Qgnx(&G zjh;&=TYQa8qX!1WJWcJ2dl<>r&(j!eeRc*pV!_ED0rz?(xc5ip)>wN8bxXFZ-!6DE z0;mAsUatU5nw;8bKmUH?t~)pe_=90#tAmT2D!S9`CAE%{;Lxu`KwlX~`2_$7`;!uIW(0HlEb3vOfm;`( z2JeP7?=dFlK7g7>vXUf$*|e%U>via|5#;$da>uI{=%^$wQYq z;RmBT+mM0m|8sm^OIZ(6j>yI*T#idf$V6sJO|8*4Z{B<&Fw)g+{oOYPItzrV z;E?P=fds|iM=y6`RZDGBlHpT8JZ4g?*f1rYxlJ}RH)l>WlV3kR^do#nGeCT~b5`6Cr zQs0x{dlGz4g6|v=eizesPVk)*d{2V!?ch5S{D0gI<|*f;f9^T4N5FvJ@-B7ah}j?6 IhtFRBKh(z@TL1t6 literal 0 HcmV?d00001 diff --git a/gestao_raul/Lib/site-packages/pwa/templates/manifest.json b/gestao_raul/Lib/site-packages/pwa/templates/manifest.json new file mode 100644 index 0000000..4cb3f34 --- /dev/null +++ b/gestao_raul/Lib/site-packages/pwa/templates/manifest.json @@ -0,0 +1,18 @@ +{% load pwa %} +{ + "name": {{ PWA_APP_NAME|js }}, + "short_name": {{ PWA_APP_NAME|js }}, + "description": {{ PWA_APP_DESCRIPTION|js }}, + "start_url": {{ PWA_APP_START_URL|js }}, + "display": {{ PWA_APP_DISPLAY|js }}, + "scope": {{ PWA_APP_SCOPE|js }}, + "orientation": {{ PWA_APP_ORIENTATION|js }}, + "background_color": {{ PWA_APP_BACKGROUND_COLOR|js }}, + "theme_color": {{ PWA_APP_THEME_COLOR|js }}, + "status_bar": {{ PWA_APP_STATUS_BAR_COLOR|js }}, + "icons": {{ PWA_APP_ICONS|js }}, + "dir": {{ PWA_APP_DIR|js }}, + "lang": {{ PWA_APP_LANG|js }}, + "screenshots" : {{PWA_APP_SCREENSHOTS|js }}, + "shortcuts" : {{PWA_APP_SHORTCUTS|js }} +} diff --git a/gestao_raul/Lib/site-packages/pwa/templates/offline.html b/gestao_raul/Lib/site-packages/pwa/templates/offline.html new file mode 100644 index 0000000..2f8e00d --- /dev/null +++ b/gestao_raul/Lib/site-packages/pwa/templates/offline.html @@ -0,0 +1,11 @@ +{% load static %} + + + + Default offline template + + + +

You are currently not connected to any networks.

+ + diff --git a/gestao_raul/Lib/site-packages/pwa/templates/pwa.html b/gestao_raul/Lib/site-packages/pwa/templates/pwa.html new file mode 100644 index 0000000..90c1ccf --- /dev/null +++ b/gestao_raul/Lib/site-packages/pwa/templates/pwa.html @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + +{% if PWA_APP_ICONS_APPLE %} + {% for icon in PWA_APP_ICONS_APPLE %} + + {% endfor %} +{% else %} + {% for icon in PWA_APP_ICONS %} + + {% endfor %} +{% endif %} + + +{% for splash in PWA_APP_SPLASH_SCREEN %} + +{% endfor %} + + + + +{% with PWA_APP_ICONS|last as icon %} + + + + +{% endwith %} + + diff --git a/gestao_raul/Lib/site-packages/pwa/templates/serviceworker.js b/gestao_raul/Lib/site-packages/pwa/templates/serviceworker.js new file mode 100644 index 0000000..1893262 --- /dev/null +++ b/gestao_raul/Lib/site-packages/pwa/templates/serviceworker.js @@ -0,0 +1,63 @@ +// Base Service Worker implementation. To use your own Service Worker, set the PWA_SERVICE_WORKER_PATH variable in settings.py + +var staticCacheName = "django-pwa-v" + new Date().getTime(); +var filesToCache = [ + '/offline/', + '/static/css/django-pwa-app.css', + '/static/images/icons/icon-72x72.png', + '/static/images/icons/icon-96x96.png', + '/static/images/icons/icon-128x128.png', + '/static/images/icons/icon-144x144.png', + '/static/images/icons/icon-152x152.png', + '/static/images/icons/icon-192x192.png', + '/static/images/icons/icon-384x384.png', + '/static/images/icons/icon-512x512.png', + '/static/images/icons/splash-640x1136.png', + '/static/images/icons/splash-750x1334.png', + '/static/images/icons/splash-1242x2208.png', + '/static/images/icons/splash-1125x2436.png', + '/static/images/icons/splash-828x1792.png', + '/static/images/icons/splash-1242x2688.png', + '/static/images/icons/splash-1536x2048.png', + '/static/images/icons/splash-1668x2224.png', + '/static/images/icons/splash-1668x2388.png', + '/static/images/icons/splash-2048x2732.png' +]; + +// Cache on install +self.addEventListener("install", event => { + this.skipWaiting(); + event.waitUntil( + caches.open(staticCacheName) + .then(cache => { + return cache.addAll(filesToCache); + }) + ) +}); + +// Clear cache on activate +self.addEventListener('activate', event => { + event.waitUntil( + caches.keys().then(cacheNames => { + return Promise.all( + cacheNames + .filter(cacheName => (cacheName.startsWith("django-pwa-"))) + .filter(cacheName => (cacheName !== staticCacheName)) + .map(cacheName => caches.delete(cacheName)) + ); + }) + ); +}); + +// Serve from Cache +self.addEventListener("fetch", event => { + event.respondWith( + caches.match(event.request) + .then(response => { + return response || fetch(event.request); + }) + .catch(() => { + return caches.match('/offline/'); + }) + ) +}); diff --git a/gestao_raul/Lib/site-packages/pwa/templatetags/__init__.py b/gestao_raul/Lib/site-packages/pwa/templatetags/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/gestao_raul/Lib/site-packages/pwa/templatetags/__pycache__/__init__.cpython-310.pyc b/gestao_raul/Lib/site-packages/pwa/templatetags/__pycache__/__init__.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..d1f12ce397e8460d4d686ed4549407704f7d3511 GIT binary patch literal 182 zcmd1j<>g`kf=&Lb(?RrO5P=LBfgA@QE@lA|DGb33nv8xc8Hzx{2;x_yvsFxJacWU< zOnGWfNq&q=esXDUYF+oetc14X-QRXW=X1UL1J=tB2Xr# ypgd8(BsI4nC$S{8Br&~MKR!M)FS8^*Uaz3?7Kcr4eoARhsvXG6VkRKL!TMx=I literal 0 HcmV?d00001 diff --git a/gestao_raul/Lib/site-packages/pwa/templatetags/__pycache__/pwa.cpython-310.pyc b/gestao_raul/Lib/site-packages/pwa/templatetags/__pycache__/pwa.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..34c7848c8751bb2cd8cbdfd7f86a4ba44a014043 GIT binary patch literal 1094 zcmZ`&&2H2%5VoD&Y?|&CQGwvVA>y_Yq?}Pz0WBO5Du@;#MT;UgcDLR-aqxIsT9s3| z_QVUcN5qZC$q9)QuYknQI4u9d(TvA4$;|khFJ>@^39fe!-;UoiLO%Gz@2i7{TPRSW z5=2lU#*=vwirxtok(hf$ zj%n6M-$2CZoj+lsF9xl5LC_5{T=J7T)$ftMo5d! zxsu!69Qd|>qtEL)2kD%u#;}Qwo`N=3P@izNyxm1vMS(?BjyO7DN5ln!p0H!z0Xw|6 zX?X?P#+C_B>I1i9s>EzfWZ@DpiE>H7t7JW zT&agN8#ulzAumkjpXgTJ0Av3j2E;H_LbXddSmIhbJqHC4Ozp|8(Dug z-@M|bY(e|3`~{nMS*XGlrmR;k`s&^p62>CRKF2itdU&n2W^5&Z+LQUd+{!&;O01GD zYg2FyE9tKkSTPW4RvpPS!{_g!m;aa3a|=8YVGy$Li@kv6@SKfsYeLbI*?O?DE8h=k zVXRDX`ig6Hh$KioTUwfAmu9a_ozjqc(t)!`^OjawfWvG-YI?{D%k4oESvgkVq;0}& zrEzb^o()u0=qV^u<;ak>rQh!3IcQrXqvg_wsg^7LZvo$VMEa~x@nI2*gP8Wa3-lWq CfEir? literal 0 HcmV?d00001 diff --git a/gestao_raul/Lib/site-packages/pwa/templatetags/pwa.py b/gestao_raul/Lib/site-packages/pwa/templatetags/pwa.py new file mode 100644 index 0000000..5300c5e --- /dev/null +++ b/gestao_raul/Lib/site-packages/pwa/templatetags/pwa.py @@ -0,0 +1,25 @@ +import json + +from django import template +from django.core.serializers.json import DjangoJSONEncoder +from django.utils.safestring import mark_safe + +from pwa import app_settings + +register = template.Library() + + +@register.filter(is_safe=True) +def js(obj): + """Transform a python object so it can be safely used in javascript/JSON.""" + return mark_safe(json.dumps(obj, cls=DjangoJSONEncoder)) # noqa: S308 + + +@register.inclusion_tag("pwa.html", takes_context=True) +def progressive_web_app_meta(context): # noqa: ARG001 + # Pass all PWA_* settings into the template + return { + setting_name: getattr(app_settings, setting_name) + for setting_name in dir(app_settings) + if setting_name.startswith("PWA_") + } diff --git a/gestao_raul/Lib/site-packages/pwa/urls.py b/gestao_raul/Lib/site-packages/pwa/urls.py new file mode 100644 index 0000000..2881a8e --- /dev/null +++ b/gestao_raul/Lib/site-packages/pwa/urls.py @@ -0,0 +1,10 @@ +from django.urls import path, re_path + +from .views import manifest, offline, service_worker + +# Serve up serviceworker.js and manifest.json at the root +urlpatterns = [ + re_path(r"^serviceworker\.js$", service_worker, name="serviceworker"), + re_path(r"^manifest\.json$", manifest, name="manifest"), + path("offline/", offline, name="offline"), +] diff --git a/gestao_raul/Lib/site-packages/pwa/views.py b/gestao_raul/Lib/site-packages/pwa/views.py new file mode 100644 index 0000000..3a0c274 --- /dev/null +++ b/gestao_raul/Lib/site-packages/pwa/views.py @@ -0,0 +1,29 @@ +from django.http import HttpResponse +from django.shortcuts import render + +from . import app_settings + + +def service_worker(request): # noqa: ARG001 + with open(app_settings.PWA_SERVICE_WORKER_PATH) as serviceworker_file: + return HttpResponse( + serviceworker_file.read(), + content_type="application/javascript", + ) + + +def manifest(request): + return render( + request, + "manifest.json", + { + setting_name: getattr(app_settings, setting_name) + for setting_name in dir(app_settings) + if setting_name.startswith("PWA_") + }, + content_type="application/json", + ) + + +def offline(request): + return render(request, "offline.html") diff --git a/gestao_raul/Lib/site-packages/pyOpenSSL-24.3.0.dist-info/INSTALLER b/gestao_raul/Lib/site-packages/pyOpenSSL-24.3.0.dist-info/INSTALLER new file mode 100644 index 0000000..a1b589e --- /dev/null +++ b/gestao_raul/Lib/site-packages/pyOpenSSL-24.3.0.dist-info/INSTALLER @@ -0,0 +1 @@ +pip diff --git a/gestao_raul/Lib/site-packages/pyOpenSSL-24.3.0.dist-info/LICENSE b/gestao_raul/Lib/site-packages/pyOpenSSL-24.3.0.dist-info/LICENSE new file mode 100644 index 0000000..d645695 --- /dev/null +++ b/gestao_raul/Lib/site-packages/pyOpenSSL-24.3.0.dist-info/LICENSE @@ -0,0 +1,202 @@ + + 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/gestao_raul/Lib/site-packages/pyOpenSSL-24.3.0.dist-info/METADATA b/gestao_raul/Lib/site-packages/pyOpenSSL-24.3.0.dist-info/METADATA new file mode 100644 index 0000000..dde8756 --- /dev/null +++ b/gestao_raul/Lib/site-packages/pyOpenSSL-24.3.0.dist-info/METADATA @@ -0,0 +1,432 @@ +Metadata-Version: 2.1 +Name: pyOpenSSL +Version: 24.3.0 +Summary: Python wrapper module around the OpenSSL library +Home-page: https://pyopenssl.org/ +Author: The pyOpenSSL developers +Author-email: cryptography-dev@python.org +License: Apache License, Version 2.0 +Project-URL: Source, https://github.com/pyca/pyopenssl +Classifier: Development Status :: 6 - Mature +Classifier: Intended Audience :: Developers +Classifier: License :: OSI Approved :: Apache Software License +Classifier: Operating System :: MacOS :: MacOS X +Classifier: Operating System :: Microsoft :: Windows +Classifier: Operating System :: POSIX +Classifier: Programming Language :: Python :: 3 +Classifier: Programming Language :: Python :: 3.7 +Classifier: Programming Language :: Python :: 3.8 +Classifier: Programming Language :: Python :: 3.9 +Classifier: Programming Language :: Python :: 3.10 +Classifier: Programming Language :: Python :: 3.11 +Classifier: Programming Language :: Python :: 3.12 +Classifier: Programming Language :: Python :: 3.13 +Classifier: Programming Language :: Python :: Implementation :: CPython +Classifier: Programming Language :: Python :: Implementation :: PyPy +Classifier: Topic :: Security :: Cryptography +Classifier: Topic :: Software Development :: Libraries :: Python Modules +Classifier: Topic :: System :: Networking +Requires-Python: >=3.7 +License-File: LICENSE +Requires-Dist: cryptography<45,>=41.0.5 +Provides-Extra: test +Requires-Dist: pytest-rerunfailures; extra == "test" +Requires-Dist: pretend; extra == "test" +Requires-Dist: pytest>=3.0.1; extra == "test" +Provides-Extra: docs +Requires-Dist: sphinx!=5.2.0,!=5.2.0.post0,!=7.2.5; extra == "docs" +Requires-Dist: sphinx_rtd_theme; extra == "docs" + +======================================================== +pyOpenSSL -- A Python wrapper around the OpenSSL library +======================================================== + +.. image:: https://readthedocs.org/projects/pyopenssl/badge/?version=stable + :target: https://pyopenssl.org/en/stable/ + :alt: Stable Docs + +.. image:: https://github.com/pyca/pyopenssl/workflows/CI/badge.svg?branch=main + :target: https://github.com/pyca/pyopenssl/actions?query=workflow%3ACI+branch%3Amain + +**Note:** The Python Cryptographic Authority **strongly suggests** the use of `pyca/cryptography`_ +where possible. If you are using pyOpenSSL for anything other than making a TLS connection +**you should move to cryptography and drop your pyOpenSSL dependency**. + +High-level wrapper around a subset of the OpenSSL library. Includes + +* ``SSL.Connection`` objects, wrapping the methods of Python's portable sockets +* Callbacks written in Python +* Extensive error-handling mechanism, mirroring OpenSSL's error codes + +... and much more. + +You can find more information in the documentation_. +Development takes place on GitHub_. + + +Discussion +========== + +If you run into bugs, you can file them in our `issue tracker`_. + +We maintain a cryptography-dev_ mailing list for both user and development discussions. + +You can also join ``#pyca`` on ``irc.libera.chat`` to ask questions or get involved. + + +.. _documentation: https://pyopenssl.org/ +.. _`issue tracker`: https://github.com/pyca/pyopenssl/issues +.. _cryptography-dev: https://mail.python.org/mailman/listinfo/cryptography-dev +.. _GitHub: https://github.com/pyca/pyopenssl +.. _`pyca/cryptography`: https://github.com/pyca/cryptography + + +Release Information +=================== + +24.3.0 (2024-11-27) +------------------- + +Backward-incompatible changes: +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +- Removed the deprecated ``OpenSSL.crypto.CRL``, ``OpenSSL.crypto.Revoked``, ``OpenSSL.crypto.dump_crl``, and ``OpenSSL.crypto.load_crl``. ``cryptography.x509``'s CRL functionality should be used instead. +- Removed the deprecated ``OpenSSL.crypto.sign`` and ``OpenSSL.crypto.verify``. ``cryptography.hazmat.primitives.asymmetric``'s signature APIs should be used instead. + +Deprecations: +^^^^^^^^^^^^^ + +- Deprecated ``OpenSSL.rand`` - callers should use ``os.urandom()`` instead. +- Deprecated ``add_extensions`` and ``get_extensions`` on ``OpenSSL.crypto.X509Req`` and ``OpenSSL.crypto.X509``. These should have been deprecated at the same time ``X509Extension`` was. Users should use pyca/cryptography's X.509 APIs instead. +- Deprecated ``OpenSSL.crypto.get_elliptic_curves`` and ``OpenSSL.crypto.get_elliptic_curve``, as well as passing the reult of them to ``OpenSSL.SSL.Context.set_tmp_ecdh``, users should instead pass curves from ``cryptography``. +- Deprecated passing ``X509`` objects to ``OpenSSL.SSL.Context.use_certificate``, ``OpenSSL.SSL.Connection.use_certificate``, ``OpenSSL.SSL.Context.add_extra_chain_cert``, and ``OpenSSL.SSL.Context.add_client_ca``, users should instead pass ``cryptography.x509.Certificate`` instances. This is in preparation for deprecating pyOpenSSL's ``X509`` entirely. +- Deprecated passing ``PKey`` objects to ``OpenSSL.SSL.Context.use_privatekey`` and ``OpenSSL.SSL.Connection.use_privatekey``, users should instead pass ``cryptography`` priate key instances. This is in preparation for deprecating pyOpenSSL's ``PKey`` entirely. + +Changes: +^^^^^^^^ + +* ``cryptography`` maximum version has been increased to 44.0.x. +* ``OpenSSL.SSL.Connection.get_certificate``, ``OpenSSL.SSL.Connection.get_peer_certificate``, ``OpenSSL.SSL.Connection.get_peer_cert_chain``, and ``OpenSSL.SSL.Connection.get_verified_chain`` now take an ``as_cryptography`` keyword-argument. When ``True`` is passed then ``cryptography.x509.Certificate`` are returned, instead of ``OpenSSL.crypto.X509``. In the future, passing ``False`` (the default) will be deprecated. + + +24.2.1 (2024-07-20) +------------------- + +Backward-incompatible changes: +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Deprecations: +^^^^^^^^^^^^^ + +Changes: +^^^^^^^^ + +- Fixed changelog to remove sphinx specific restructured text strings. + + +24.2.0 (2024-07-20) +------------------- + +Backward-incompatible changes: +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Deprecations: +^^^^^^^^^^^^^ + +- Deprecated ``OpenSSL.crypto.X509Req``, ``OpenSSL.crypto.load_certificate_request``, ``OpenSSL.crypto.dump_certificate_request``. Instead, ``cryptography.x509.CertificateSigningRequest``, ``cryptography.x509.CertificateSigningRequestBuilder``, ``cryptography.x509.load_der_x509_csr``, or ``cryptography.x509.load_pem_x509_csr`` should be used. + +Changes: +^^^^^^^^ + +- Added type hints for the ``SSL`` module. + `#1308 `_. +- Changed ``OpenSSL.crypto.PKey.from_cryptography_key`` to accept public and private EC, ED25519, ED448 keys. + `#1310 `_. + +24.1.0 (2024-03-09) +------------------- + +Backward-incompatible changes: +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +* Removed the deprecated ``OpenSSL.crypto.PKCS12`` and + ``OpenSSL.crypto.NetscapeSPKI``. ``OpenSSL.crypto.PKCS12`` may be replaced + by the PKCS#12 APIs in the ``cryptography`` package. + +Deprecations: +^^^^^^^^^^^^^ + +Changes: +^^^^^^^^ + +24.0.0 (2024-01-22) +------------------- + +Backward-incompatible changes: +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Deprecations: +^^^^^^^^^^^^^ + +Changes: +^^^^^^^^ + +- Added ``OpenSSL.SSL.Connection.get_selected_srtp_profile`` to determine which SRTP profile was negotiated. + `#1279 `_. + +23.3.0 (2023-10-25) +------------------- + +Backward-incompatible changes: +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +- Dropped support for Python 3.6. +- The minimum ``cryptography`` version is now 41.0.5. +- Removed ``OpenSSL.crypto.load_pkcs7`` and ``OpenSSL.crypto.load_pkcs12`` which had been deprecated for 3 years. +- Added ``OpenSSL.SSL.OP_LEGACY_SERVER_CONNECT`` to allow legacy insecure renegotiation between OpenSSL and unpatched servers. + `#1234 `_. + +Deprecations: +^^^^^^^^^^^^^ + +- Deprecated ``OpenSSL.crypto.PKCS12`` (which was intended to have been deprecated at the same time as ``OpenSSL.crypto.load_pkcs12``). +- Deprecated ``OpenSSL.crypto.NetscapeSPKI``. +- Deprecated ``OpenSSL.crypto.CRL`` +- Deprecated ``OpenSSL.crypto.Revoked`` +- Deprecated ``OpenSSL.crypto.load_crl`` and ``OpenSSL.crypto.dump_crl`` +- Deprecated ``OpenSSL.crypto.sign`` and ``OpenSSL.crypto.verify`` +- Deprecated ``OpenSSL.crypto.X509Extension`` + +Changes: +^^^^^^^^ + +- Changed ``OpenSSL.crypto.X509Store.add_crl`` to also accept + ``cryptography``'s ``x509.CertificateRevocationList`` arguments in addition + to the now deprecated ``OpenSSL.crypto.CRL`` arguments. +- Fixed ``test_set_default_verify_paths`` test so that it is skipped if no + network connection is available. + +23.2.0 (2023-05-30) +------------------- + +Backward-incompatible changes: +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +- Removed ``X509StoreFlags.NOTIFY_POLICY``. + `#1213 `_. + +Deprecations: +^^^^^^^^^^^^^ + +Changes: +^^^^^^^^ + +- ``cryptography`` maximum version has been increased to 41.0.x. +- Invalid versions are now rejected in ``OpenSSL.crypto.X509Req.set_version``. +- Added ``X509VerificationCodes`` to ``OpenSSL.SSL``. + `#1202 `_. + +23.1.1 (2023-03-28) +------------------- + +Backward-incompatible changes: +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Deprecations: +^^^^^^^^^^^^^ + +Changes: +^^^^^^^^ + +- Worked around an issue in OpenSSL 3.1.0 which caused `X509Extension.get_short_name` to raise an exception when no short name was known to OpenSSL. + `#1204 `_. + +23.1.0 (2023-03-24) +------------------- + +Backward-incompatible changes: +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Deprecations: +^^^^^^^^^^^^^ + +Changes: +^^^^^^^^ + +- ``cryptography`` maximum version has been increased to 40.0.x. +- Add ``OpenSSL.SSL.Connection.DTLSv1_get_timeout`` and ``OpenSSL.SSL.Connection.DTLSv1_handle_timeout`` + to support DTLS timeouts `#1180 `_. + +23.0.0 (2023-01-01) +------------------- + +Backward-incompatible changes: +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Deprecations: +^^^^^^^^^^^^^ + +Changes: +^^^^^^^^ + +- Add ``OpenSSL.SSL.X509StoreFlags.PARTIAL_CHAIN`` constant to allow for users + to perform certificate verification on partial certificate chains. + `#1166 `_ +- ``cryptography`` maximum version has been increased to 39.0.x. + +22.1.0 (2022-09-25) +------------------- + +Backward-incompatible changes: +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +- Remove support for SSLv2 and SSLv3. +- The minimum ``cryptography`` version is now 38.0.x (and we now pin releases + against ``cryptography`` major versions to prevent future breakage) +- The ``OpenSSL.crypto.X509StoreContextError`` exception has been refactored, + changing its internal attributes. + `#1133 `_ + +Deprecations: +^^^^^^^^^^^^^ + +- ``OpenSSL.SSL.SSLeay_version`` is deprecated in favor of + ``OpenSSL.SSL.OpenSSL_version``. The constants ``OpenSSL.SSL.SSLEAY_*`` are + deprecated in favor of ``OpenSSL.SSL.OPENSSL_*``. + +Changes: +^^^^^^^^ + +- Add ``OpenSSL.SSL.Connection.set_verify`` and ``OpenSSL.SSL.Connection.get_verify_mode`` + to override the context object's verification flags. + `#1073 `_ +- Add ``OpenSSL.SSL.Connection.use_certificate`` and ``OpenSSL.SSL.Connection.use_privatekey`` + to set a certificate per connection (and not just per context) `#1121 `_. + +22.0.0 (2022-01-29) +------------------- + +Backward-incompatible changes: +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +- Drop support for Python 2.7. + `#1047 `_ +- The minimum ``cryptography`` version is now 35.0. + +Deprecations: +^^^^^^^^^^^^^ + +Changes: +^^^^^^^^ + +- Expose wrappers for some `DTLS + `_ + primitives. `#1026 `_ + +21.0.0 (2021-09-28) +------------------- + +Backward-incompatible changes: +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +- The minimum ``cryptography`` version is now 3.3. +- Drop support for Python 3.5 + +Deprecations: +^^^^^^^^^^^^^ + +Changes: +^^^^^^^^ + +- Raise an error when an invalid ALPN value is set. + `#993 `_ +- Added ``OpenSSL.SSL.Context.set_min_proto_version`` and ``OpenSSL.SSL.Context.set_max_proto_version`` + to set the minimum and maximum supported TLS version `#985 `_. +- Updated ``to_cryptography`` and ``from_cryptography`` methods to support an upcoming release of ``cryptography`` without raising deprecation warnings. + `#1030 `_ + +20.0.1 (2020-12-15) +------------------- + +Backward-incompatible changes: +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Deprecations: +^^^^^^^^^^^^^ + +Changes: +^^^^^^^^ + +- Fixed compatibility with OpenSSL 1.1.0. + +20.0.0 (2020-11-27) +------------------- + + +Backward-incompatible changes: +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +- The minimum ``cryptography`` version is now 3.2. +- Remove deprecated ``OpenSSL.tsafe`` module. +- Removed deprecated ``OpenSSL.SSL.Context.set_npn_advertise_callback``, ``OpenSSL.SSL.Context.set_npn_select_callback``, and ``OpenSSL.SSL.Connection.get_next_proto_negotiated``. +- Drop support for Python 3.4 +- Drop support for OpenSSL 1.0.1 and 1.0.2 + +Deprecations: +^^^^^^^^^^^^^ + +- Deprecated ``OpenSSL.crypto.load_pkcs7`` and ``OpenSSL.crypto.load_pkcs12``. + +Changes: +^^^^^^^^ + +- Added a new optional ``chain`` parameter to ``OpenSSL.crypto.X509StoreContext()`` + where additional untrusted certificates can be specified to help chain building. + `#948 `_ +- Added ``OpenSSL.crypto.X509Store.load_locations`` to set trusted + certificate file bundles and/or directories for verification. + `#943 `_ +- Added ``Context.set_keylog_callback`` to log key material. + `#910 `_ +- Added ``OpenSSL.SSL.Connection.get_verified_chain`` to retrieve the + verified certificate chain of the peer. + `#894 `_. +- Make verification callback optional in ``Context.set_verify``. + If omitted, OpenSSL's default verification is used. + `#933 `_ +- Fixed a bug that could truncate or cause a zero-length key error due to a + null byte in private key passphrase in ``OpenSSL.crypto.load_privatekey`` + and ``OpenSSL.crypto.dump_privatekey``. + `#947 `_ + +19.1.0 (2019-11-18) +------------------- + + +Backward-incompatible changes: +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +- Removed deprecated ``ContextType``, ``ConnectionType``, ``PKeyType``, ``X509NameType``, ``X509ReqType``, ``X509Type``, ``X509StoreType``, ``CRLType``, ``PKCS7Type``, ``PKCS12Type``, and ``NetscapeSPKIType`` aliases. + Use the classes without the ``Type`` suffix instead. + `#814 `_ +- The minimum ``cryptography`` version is now 2.8 due to issues on macOS with a transitive dependency. + `#875 `_ + +Deprecations: +^^^^^^^^^^^^^ + +- Deprecated ``OpenSSL.SSL.Context.set_npn_advertise_callback``, ``OpenSSL.SSL.Context.set_npn_select_callback``, and ``OpenSSL.SSL.Connection.get_next_proto_negotiated``. + ALPN should be used instead. + `#820 `_ + + +Changes: +^^^^^^^^ + +- Support ``bytearray`` in ``SSL.Connection.send()`` by using cffi's from_buffer. + `#852 `_ +- The ``OpenSSL.SSL.Context.set_alpn_select_callback`` can return a new ``NO_OVERLAPPING_PROTOCOLS`` sentinel value + to allow a TLS handshake to complete without an application protocol. + +`Full changelog `_. + diff --git a/gestao_raul/Lib/site-packages/pyOpenSSL-24.3.0.dist-info/RECORD b/gestao_raul/Lib/site-packages/pyOpenSSL-24.3.0.dist-info/RECORD new file mode 100644 index 0000000..2a09579 --- /dev/null +++ b/gestao_raul/Lib/site-packages/pyOpenSSL-24.3.0.dist-info/RECORD @@ -0,0 +1,22 @@ +OpenSSL/SSL.py,sha256=-KBGozRj26T0im3VpHv2xjrNtMq6XCkmmtb-KvmyFb8,113011 +OpenSSL/__init__.py,sha256=46ENrQmALeGbnIoOeFaa3xEiaGcmoYPa16Dfdp6hMio,497 +OpenSSL/__pycache__/SSL.cpython-310.pyc,, +OpenSSL/__pycache__/__init__.cpython-310.pyc,, +OpenSSL/__pycache__/_util.cpython-310.pyc,, +OpenSSL/__pycache__/crypto.cpython-310.pyc,, +OpenSSL/__pycache__/debug.cpython-310.pyc,, +OpenSSL/__pycache__/rand.cpython-310.pyc,, +OpenSSL/__pycache__/version.cpython-310.pyc,, +OpenSSL/_util.py,sha256=17CIOtOv99JLoq09sOTSMfOK7BHnkjjeRKQu8PFEMk4,3569 +OpenSSL/crypto.py,sha256=fNkvXPLFRTgk_7Ac6UYsUPb_coMUAamjgkd9sk-9u-E,80048 +OpenSSL/debug.py,sha256=vCl77f2MslUoTRSu9fqP5DL_9DK_RSC7Jpu07Ip9gQM,1008 +OpenSSL/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +OpenSSL/rand.py,sha256=sdQ0W71S1xTMP_tbY6XjRV9hteph6lMmP9d_70BZfF4,1216 +OpenSSL/version.py,sha256=0HTkmxq8NBUHM_6eKFxoYPQhz5fHeY0lpxwPnLmnkuQ,641 +pyOpenSSL-24.3.0.dist-info/INSTALLER,sha256=zuuue4knoyJ-UwPPXg8fezS7VCrXJQrAP7zeNuwvFQg,4 +pyOpenSSL-24.3.0.dist-info/LICENSE,sha256=z8d0m5b2O9McPEK1xHG_dWgUBT6EfBDz6wA0F7xSPTA,11358 +pyOpenSSL-24.3.0.dist-info/METADATA,sha256=B67S_Wgu15zUp6RwOhGyFIdrzsDrXEiZ_36zyBZRiJc,15775 +pyOpenSSL-24.3.0.dist-info/RECORD,, +pyOpenSSL-24.3.0.dist-info/REQUESTED,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +pyOpenSSL-24.3.0.dist-info/WHEEL,sha256=PZUExdf71Ui_so67QXpySuHtCi3-J3wvF4ORK6k_S8U,91 +pyOpenSSL-24.3.0.dist-info/top_level.txt,sha256=NNxWqS8hKNJh2cUXa1RZOMX62VJfyd8URo1TsYnR_MU,8 diff --git a/gestao_raul/Lib/site-packages/pyOpenSSL-24.3.0.dist-info/REQUESTED b/gestao_raul/Lib/site-packages/pyOpenSSL-24.3.0.dist-info/REQUESTED new file mode 100644 index 0000000..e69de29 diff --git a/gestao_raul/Lib/site-packages/pyOpenSSL-24.3.0.dist-info/WHEEL b/gestao_raul/Lib/site-packages/pyOpenSSL-24.3.0.dist-info/WHEEL new file mode 100644 index 0000000..ae527e7 --- /dev/null +++ b/gestao_raul/Lib/site-packages/pyOpenSSL-24.3.0.dist-info/WHEEL @@ -0,0 +1,5 @@ +Wheel-Version: 1.0 +Generator: setuptools (75.6.0) +Root-Is-Purelib: true +Tag: py3-none-any + diff --git a/gestao_raul/Lib/site-packages/pyOpenSSL-24.3.0.dist-info/top_level.txt b/gestao_raul/Lib/site-packages/pyOpenSSL-24.3.0.dist-info/top_level.txt new file mode 100644 index 0000000..effce34 --- /dev/null +++ b/gestao_raul/Lib/site-packages/pyOpenSSL-24.3.0.dist-info/top_level.txt @@ -0,0 +1 @@ +OpenSSL diff --git a/gestao_raul/Lib/site-packages/pycparser-2.22.dist-info/INSTALLER b/gestao_raul/Lib/site-packages/pycparser-2.22.dist-info/INSTALLER new file mode 100644 index 0000000..a1b589e --- /dev/null +++ b/gestao_raul/Lib/site-packages/pycparser-2.22.dist-info/INSTALLER @@ -0,0 +1 @@ +pip diff --git a/gestao_raul/Lib/site-packages/pycparser-2.22.dist-info/LICENSE b/gestao_raul/Lib/site-packages/pycparser-2.22.dist-info/LICENSE new file mode 100644 index 0000000..bee14a4 --- /dev/null +++ b/gestao_raul/Lib/site-packages/pycparser-2.22.dist-info/LICENSE @@ -0,0 +1,27 @@ +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. diff --git a/gestao_raul/Lib/site-packages/pycparser-2.22.dist-info/METADATA b/gestao_raul/Lib/site-packages/pycparser-2.22.dist-info/METADATA new file mode 100644 index 0000000..2c8038a --- /dev/null +++ b/gestao_raul/Lib/site-packages/pycparser-2.22.dist-info/METADATA @@ -0,0 +1,28 @@ +Metadata-Version: 2.1 +Name: pycparser +Version: 2.22 +Summary: C parser in Python +Home-page: https://github.com/eliben/pycparser +Author: Eli Bendersky +Author-email: eliben@gmail.com +Maintainer: Eli Bendersky +License: BSD-3-Clause +Platform: Cross Platform +Classifier: Development Status :: 5 - Production/Stable +Classifier: License :: OSI Approved :: BSD License +Classifier: Programming Language :: Python :: 3 +Classifier: Programming Language :: Python :: 3.8 +Classifier: Programming Language :: Python :: 3.9 +Classifier: Programming Language :: Python :: 3.10 +Classifier: Programming Language :: Python :: 3.11 +Classifier: Programming Language :: Python :: 3.12 +Requires-Python: >=3.8 +License-File: LICENSE + + + pycparser is a complete parser of the C language, written in + pure Python using the PLY parsing library. + It parses C code into an AST and can serve as a front-end for + C compilers or analysis tools. + + diff --git a/gestao_raul/Lib/site-packages/pycparser-2.22.dist-info/RECORD b/gestao_raul/Lib/site-packages/pycparser-2.22.dist-info/RECORD new file mode 100644 index 0000000..5a92ac8 --- /dev/null +++ b/gestao_raul/Lib/site-packages/pycparser-2.22.dist-info/RECORD @@ -0,0 +1,42 @@ +pycparser-2.22.dist-info/INSTALLER,sha256=zuuue4knoyJ-UwPPXg8fezS7VCrXJQrAP7zeNuwvFQg,4 +pycparser-2.22.dist-info/LICENSE,sha256=DIRjmTaep23de1xE_m0WSXQV_PAV9cu1CMJL-YuBxbE,1543 +pycparser-2.22.dist-info/METADATA,sha256=3XOB8nggH4ijl17DCjUhk7g6qioMJLprUlEkwYgZvW8,943 +pycparser-2.22.dist-info/RECORD,, +pycparser-2.22.dist-info/REQUESTED,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +pycparser-2.22.dist-info/WHEEL,sha256=G16H4A3IeoQmnOrYV4ueZGKSjhipXx8zc8nu9FGlvMA,92 +pycparser-2.22.dist-info/top_level.txt,sha256=c-lPcS74L_8KoH7IE6PQF5ofyirRQNV4VhkbSFIPeWM,10 +pycparser/__init__.py,sha256=hrf-AyuVYNHQGTD0Nv2bywxoTN3N1ZCs03m-9-QDS14,2918 +pycparser/__pycache__/__init__.cpython-310.pyc,, +pycparser/__pycache__/_ast_gen.cpython-310.pyc,, +pycparser/__pycache__/_build_tables.cpython-310.pyc,, +pycparser/__pycache__/ast_transforms.cpython-310.pyc,, +pycparser/__pycache__/c_ast.cpython-310.pyc,, +pycparser/__pycache__/c_generator.cpython-310.pyc,, +pycparser/__pycache__/c_lexer.cpython-310.pyc,, +pycparser/__pycache__/c_parser.cpython-310.pyc,, +pycparser/__pycache__/lextab.cpython-310.pyc,, +pycparser/__pycache__/plyparser.cpython-310.pyc,, +pycparser/__pycache__/yacctab.cpython-310.pyc,, +pycparser/_ast_gen.py,sha256=0JRVnDW-Jw-3IjVlo8je9rbAcp6Ko7toHAnB5zi7h0Q,10555 +pycparser/_build_tables.py,sha256=4d_UkIxJ4YfHTVn6xBzBA52wDo7qxg1B6aZAJYJas9Q,1087 +pycparser/_c_ast.cfg,sha256=ld5ezE9yzIJFIVAUfw7ezJSlMi4nXKNCzfmqjOyQTNo,4255 +pycparser/ast_transforms.py,sha256=GTMYlUgWmXd5wJVyovXY1qzzAqjxzCpVVg0664dKGBs,5691 +pycparser/c_ast.py,sha256=HWeOrfYdCY0u5XaYhE1i60uVyE3yMWdcxzECUX-DqJw,31445 +pycparser/c_generator.py,sha256=yi6Mcqxv88J5ue8k5-mVGxh3iJ37iD4QyF-sWcGjC-8,17772 +pycparser/c_lexer.py,sha256=RSUjq0SRH8dkvwrQslBIZY2AXOrpQpe-oO1udJXotZk,17186 +pycparser/c_parser.py,sha256=WUnIHNydl32QBuRUqrqk-F2lyB6WRP4BUYFELqVETyw,74282 +pycparser/lextab.py,sha256=Nc3I0_D8Xlf-BOpfOKkEvFw-rPuFPPwAjkcLubwTCU4,8554 +pycparser/ply/__init__.py,sha256=q4s86QwRsYRa20L9ueSxfh-hPihpftBjDOvYa2_SS2Y,102 +pycparser/ply/__pycache__/__init__.cpython-310.pyc,, +pycparser/ply/__pycache__/cpp.cpython-310.pyc,, +pycparser/ply/__pycache__/ctokens.cpython-310.pyc,, +pycparser/ply/__pycache__/lex.cpython-310.pyc,, +pycparser/ply/__pycache__/yacc.cpython-310.pyc,, +pycparser/ply/__pycache__/ygen.cpython-310.pyc,, +pycparser/ply/cpp.py,sha256=UtC3ylTWp5_1MKA-PLCuwKQR8zSOnlGuGGIdzj8xS98,33282 +pycparser/ply/ctokens.py,sha256=MKksnN40TehPhgVfxCJhjj_BjL943apreABKYz-bl0Y,3177 +pycparser/ply/lex.py,sha256=rCMi0yjlZmjH5SNXj_Yds1VxSDkaG2thS7351YvfN-I,42926 +pycparser/ply/yacc.py,sha256=eatSDkRLgRr6X3-hoDk_SQQv065R0BdL2K7fQ54CgVM,137323 +pycparser/ply/ygen.py,sha256=2JYNeYtrPz1JzLSLO3d4GsS8zJU8jY_I_CR1VI9gWrA,2251 +pycparser/plyparser.py,sha256=8tLOoEytcapvWrr1JfCf7Dog-wulBtS1YrDs8S7JfMo,4875 +pycparser/yacctab.py,sha256=B6ck8QEPnRi04VSxKEL6xHaP8sEEsTbWtwsjfKHABgM,209738 diff --git a/gestao_raul/Lib/site-packages/pycparser-2.22.dist-info/REQUESTED b/gestao_raul/Lib/site-packages/pycparser-2.22.dist-info/REQUESTED new file mode 100644 index 0000000..e69de29 diff --git a/gestao_raul/Lib/site-packages/pycparser-2.22.dist-info/WHEEL b/gestao_raul/Lib/site-packages/pycparser-2.22.dist-info/WHEEL new file mode 100644 index 0000000..becc9a6 --- /dev/null +++ b/gestao_raul/Lib/site-packages/pycparser-2.22.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/gestao_raul/Lib/site-packages/pycparser-2.22.dist-info/top_level.txt b/gestao_raul/Lib/site-packages/pycparser-2.22.dist-info/top_level.txt new file mode 100644 index 0000000..dc1c9e1 --- /dev/null +++ b/gestao_raul/Lib/site-packages/pycparser-2.22.dist-info/top_level.txt @@ -0,0 +1 @@ +pycparser diff --git a/gestao_raul/Lib/site-packages/pycparser/__init__.py b/gestao_raul/Lib/site-packages/pycparser/__init__.py new file mode 100644 index 0000000..bf4b0d4 --- /dev/null +++ b/gestao_raul/Lib/site-packages/pycparser/__init__.py @@ -0,0 +1,93 @@ +#----------------------------------------------------------------- +# pycparser: __init__.py +# +# This package file exports some convenience functions for +# interacting with pycparser +# +# Eli Bendersky [https://eli.thegreenplace.net/] +# License: BSD +#----------------------------------------------------------------- +__all__ = ['c_lexer', 'c_parser', 'c_ast'] +__version__ = '2.22' + +import io +from subprocess import check_output +from .c_parser import CParser + + +def preprocess_file(filename, cpp_path='cpp', cpp_args=''): + """ Preprocess a file using cpp. + + filename: + Name of the file you want to preprocess. + + cpp_path: + cpp_args: + Refer to the documentation of parse_file for the meaning of these + arguments. + + When successful, returns the preprocessed file's contents. + Errors from cpp will be printed out. + """ + path_list = [cpp_path] + if isinstance(cpp_args, list): + path_list += cpp_args + elif cpp_args != '': + path_list += [cpp_args] + path_list += [filename] + + try: + # Note the use of universal_newlines to treat all newlines + # as \n for Python's purpose + text = check_output(path_list, universal_newlines=True) + except OSError as e: + raise RuntimeError("Unable to invoke 'cpp'. " + + 'Make sure its path was passed correctly\n' + + ('Original error: %s' % e)) + + return text + + +def parse_file(filename, use_cpp=False, cpp_path='cpp', cpp_args='', + parser=None, encoding=None): + """ Parse a C file using pycparser. + + filename: + Name of the file you want to parse. + + use_cpp: + Set to True if you want to execute the C pre-processor + on the file prior to parsing it. + + cpp_path: + If use_cpp is True, this is the path to 'cpp' on your + system. If no path is provided, it attempts to just + execute 'cpp', so it must be in your PATH. + + cpp_args: + If use_cpp is True, set this to the command line arguments strings + to cpp. Be careful with quotes - it's best to pass a raw string + (r'') here. For example: + r'-I../utils/fake_libc_include' + If several arguments are required, pass a list of strings. + + encoding: + Encoding to use for the file to parse + + parser: + Optional parser object to be used instead of the default CParser + + When successful, an AST is returned. ParseError can be + thrown if the file doesn't parse successfully. + + Errors from cpp will be printed out. + """ + if use_cpp: + text = preprocess_file(filename, cpp_path, cpp_args) + else: + with io.open(filename, encoding=encoding) as f: + text = f.read() + + if parser is None: + parser = CParser() + return parser.parse(text, filename) diff --git a/gestao_raul/Lib/site-packages/pycparser/__pycache__/__init__.cpython-310.pyc b/gestao_raul/Lib/site-packages/pycparser/__pycache__/__init__.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..fc47e08ed658452bc8e5a9c5b80a26505bcbfabb GIT binary patch literal 2605 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 s=i;EGzipC#M3kkN^Mx literal 0 HcmV?d00001 diff --git a/gestao_raul/Lib/site-packages/pycparser/__pycache__/_build_tables.cpython-310.pyc b/gestao_raul/Lib/site-packages/pycparser/__pycache__/_build_tables.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..ccb5dbb8a023dc665e65a4b3c63931cf9c924c00 GIT binary patch literal 581 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 literal 0 HcmV?d00001 diff --git a/gestao_raul/Lib/site-packages/pycparser/__pycache__/plyparser.cpython-310.pyc b/gestao_raul/Lib/site-packages/pycparser/__pycache__/plyparser.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..25f92beeb5b8c3d6dda8cf3b527821a2ecf6caf9 GIT binary patch literal 4687 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 literal 0 HcmV?d00001 diff --git a/gestao_raul/Lib/site-packages/pycparser/__pycache__/yacctab.cpython-310.pyc b/gestao_raul/Lib/site-packages/pycparser/__pycache__/yacctab.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..9f64b6574b18d20c55a7686c8c4f2459627d4d3c GIT binary patch literal 179999 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 s(W6F>96j>ck: ') + else: + buf.write(lead + self.__class__.__name__+ ': ') + + if self.attr_names: + if attrnames: + nvlist = [(n, getattr(self,n)) for n in self.attr_names] + attrstr = ', '.join('%s=%s' % nv for nv in nvlist) + else: + vlist = [getattr(self, n) for n in self.attr_names] + attrstr = ', '.join('%s' % v for v in vlist) + buf.write(attrstr) + + if showcoord: + buf.write(' (at %s)' % self.coord) + buf.write('\n') + + for (child_name, child) in self.children(): + child.show( + buf, + offset=offset + 2, + attrnames=attrnames, + nodenames=nodenames, + showcoord=showcoord, + _my_node_name=child_name) + + +class NodeVisitor(object): + """ A base NodeVisitor class for visiting c_ast nodes. + Subclass it and define your own visit_XXX methods, where + XXX is the class name you want to visit with these + methods. + + For example: + + class ConstantVisitor(NodeVisitor): + def __init__(self): + self.values = [] + + def visit_Constant(self, node): + self.values.append(node.value) + + Creates a list of values of all the constant nodes + encountered below the given node. To use it: + + cv = ConstantVisitor() + cv.visit(node) + + Notes: + + * generic_visit() will be called for AST nodes for which + no visit_XXX method was defined. + * The children of nodes for which a visit_XXX was + defined will not be visited - if you need this, call + generic_visit() on the node. + You can use: + NodeVisitor.generic_visit(self, node) + * Modeled after Python's own AST visiting facilities + (the ast module of Python 3.0) + """ + + _method_cache = None + + def visit(self, node): + """ Visit a node. + """ + + if self._method_cache is None: + self._method_cache = {} + + visitor = self._method_cache.get(node.__class__.__name__, None) + if visitor is None: + method = 'visit_' + node.__class__.__name__ + visitor = getattr(self, method, self.generic_visit) + self._method_cache[node.__class__.__name__] = visitor + + return visitor(node) + + def generic_visit(self, node): + """ Called if no explicit visitor function exists for a + node. Implements preorder visiting of the node. + """ + for c in node: + self.visit(c) + +''' diff --git a/gestao_raul/Lib/site-packages/pycparser/_build_tables.py b/gestao_raul/Lib/site-packages/pycparser/_build_tables.py new file mode 100644 index 0000000..4f37107 --- /dev/null +++ b/gestao_raul/Lib/site-packages/pycparser/_build_tables.py @@ -0,0 +1,40 @@ +#----------------------------------------------------------------- +# pycparser: _build_tables.py +# +# A dummy for generating the lexing/parsing tables and and +# compiling them into .pyc for faster execution in optimized mode. +# Also generates AST code from the configuration file. +# Should be called from the pycparser directory. +# +# Eli Bendersky [https://eli.thegreenplace.net/] +# License: BSD +#----------------------------------------------------------------- + +# Insert '.' and '..' as first entries to the search path for modules. +# Restricted environments like embeddable python do not include the +# current working directory on startup. +import importlib +import sys +sys.path[0:0] = ['.', '..'] + +# Generate c_ast.py +from _ast_gen import ASTCodeGenerator +ast_gen = ASTCodeGenerator('_c_ast.cfg') +ast_gen.generate(open('c_ast.py', 'w')) + +from pycparser import c_parser + +# Generates the tables +# +c_parser.CParser( + lex_optimize=True, + yacc_debug=False, + yacc_optimize=True) + +# Load to compile into .pyc +# +importlib.invalidate_caches() + +import lextab +import yacctab +import c_ast diff --git a/gestao_raul/Lib/site-packages/pycparser/_c_ast.cfg b/gestao_raul/Lib/site-packages/pycparser/_c_ast.cfg new file mode 100644 index 0000000..0626533 --- /dev/null +++ b/gestao_raul/Lib/site-packages/pycparser/_c_ast.cfg @@ -0,0 +1,195 @@ +#----------------------------------------------------------------- +# pycparser: _c_ast.cfg +# +# Defines the AST Node classes used in pycparser. +# +# Each entry is a Node sub-class name, listing the attributes +# and child nodes of the class: +# * - a child node +# ** - a sequence of child nodes +# - an attribute +# +# Eli Bendersky [https://eli.thegreenplace.net/] +# License: BSD +#----------------------------------------------------------------- + +# ArrayDecl is a nested declaration of an array with the given type. +# dim: the dimension (for example, constant 42) +# dim_quals: list of dimension qualifiers, to support C99's allowing 'const' +# and 'static' within the array dimension in function declarations. +ArrayDecl: [type*, dim*, dim_quals] + +ArrayRef: [name*, subscript*] + +# op: =, +=, /= etc. +# +Assignment: [op, lvalue*, rvalue*] + +Alignas: [alignment*] + +BinaryOp: [op, left*, right*] + +Break: [] + +Case: [expr*, stmts**] + +Cast: [to_type*, expr*] + +# Compound statement in C99 is a list of block items (declarations or +# statements). +# +Compound: [block_items**] + +# Compound literal (anonymous aggregate) for C99. +# (type-name) {initializer_list} +# type: the typename +# init: InitList for the initializer list +# +CompoundLiteral: [type*, init*] + +# type: int, char, float, string, etc. +# +Constant: [type, value] + +Continue: [] + +# name: the variable being declared +# quals: list of qualifiers (const, volatile) +# funcspec: list function specifiers (i.e. inline in C99) +# storage: list of storage specifiers (extern, register, etc.) +# type: declaration type (probably nested with all the modifiers) +# init: initialization value, or None +# bitsize: bit field size, or None +# +Decl: [name, quals, align, storage, funcspec, type*, init*, bitsize*] + +DeclList: [decls**] + +Default: [stmts**] + +DoWhile: [cond*, stmt*] + +# Represents the ellipsis (...) parameter in a function +# declaration +# +EllipsisParam: [] + +# An empty statement (a semicolon ';' on its own) +# +EmptyStatement: [] + +# Enumeration type specifier +# name: an optional ID +# values: an EnumeratorList +# +Enum: [name, values*] + +# A name/value pair for enumeration values +# +Enumerator: [name, value*] + +# A list of enumerators +# +EnumeratorList: [enumerators**] + +# A list of expressions separated by the comma operator. +# +ExprList: [exprs**] + +# This is the top of the AST, representing a single C file (a +# translation unit in K&R jargon). It contains a list of +# "external-declaration"s, which is either declarations (Decl), +# Typedef or function definitions (FuncDef). +# +FileAST: [ext**] + +# for (init; cond; next) stmt +# +For: [init*, cond*, next*, stmt*] + +# name: Id +# args: ExprList +# +FuncCall: [name*, args*] + +# type (args) +# +FuncDecl: [args*, type*] + +# Function definition: a declarator for the function name and +# a body, which is a compound statement. +# There's an optional list of parameter declarations for old +# K&R-style definitions +# +FuncDef: [decl*, param_decls**, body*] + +Goto: [name] + +ID: [name] + +# Holder for types that are a simple identifier (e.g. the built +# ins void, char etc. and typedef-defined types) +# +IdentifierType: [names] + +If: [cond*, iftrue*, iffalse*] + +# An initialization list used for compound literals. +# +InitList: [exprs**] + +Label: [name, stmt*] + +# A named initializer for C99. +# The name of a NamedInitializer is a sequence of Nodes, because +# names can be hierarchical and contain constant expressions. +# +NamedInitializer: [name**, expr*] + +# a list of comma separated function parameter declarations +# +ParamList: [params**] + +PtrDecl: [quals, type*] + +Return: [expr*] + +StaticAssert: [cond*, message*] + +# name: struct tag name +# decls: declaration of members +# +Struct: [name, decls**] + +# type: . or -> +# name.field or name->field +# +StructRef: [name*, type, field*] + +Switch: [cond*, stmt*] + +# cond ? iftrue : iffalse +# +TernaryOp: [cond*, iftrue*, iffalse*] + +# A base type declaration +# +TypeDecl: [declname, quals, align, type*] + +# A typedef declaration. +# Very similar to Decl, but without some attributes +# +Typedef: [name, quals, storage, type*] + +Typename: [name, quals, align, type*] + +UnaryOp: [op, expr*] + +# name: union tag name +# decls: declaration of members +# +Union: [name, decls**] + +While: [cond*, stmt*] + +Pragma: [string] diff --git a/gestao_raul/Lib/site-packages/pycparser/ast_transforms.py b/gestao_raul/Lib/site-packages/pycparser/ast_transforms.py new file mode 100644 index 0000000..367dcf5 --- /dev/null +++ b/gestao_raul/Lib/site-packages/pycparser/ast_transforms.py @@ -0,0 +1,164 @@ +#------------------------------------------------------------------------------ +# pycparser: ast_transforms.py +# +# Some utilities used by the parser to create a friendlier AST. +# +# Eli Bendersky [https://eli.thegreenplace.net/] +# License: BSD +#------------------------------------------------------------------------------ + +from . import c_ast + + +def fix_switch_cases(switch_node): + """ The 'case' statements in a 'switch' come out of parsing with one + child node, so subsequent statements are just tucked to the parent + Compound. Additionally, consecutive (fall-through) case statements + come out messy. This is a peculiarity of the C grammar. The following: + + switch (myvar) { + case 10: + k = 10; + p = k + 1; + return 10; + case 20: + case 30: + return 20; + default: + break; + } + + Creates this tree (pseudo-dump): + + Switch + ID: myvar + Compound: + Case 10: + k = 10 + p = k + 1 + return 10 + Case 20: + Case 30: + return 20 + Default: + break + + The goal of this transform is to fix this mess, turning it into the + following: + + Switch + ID: myvar + Compound: + Case 10: + k = 10 + p = k + 1 + return 10 + Case 20: + Case 30: + return 20 + Default: + break + + A fixed AST node is returned. The argument may be modified. + """ + assert isinstance(switch_node, c_ast.Switch) + if not isinstance(switch_node.stmt, c_ast.Compound): + return switch_node + + # The new Compound child for the Switch, which will collect children in the + # correct order + new_compound = c_ast.Compound([], switch_node.stmt.coord) + + # The last Case/Default node + last_case = None + + # Goes over the children of the Compound below the Switch, adding them + # either directly below new_compound or below the last Case as appropriate + # (for `switch(cond) {}`, block_items would have been None) + for child in (switch_node.stmt.block_items or []): + if isinstance(child, (c_ast.Case, c_ast.Default)): + # If it's a Case/Default: + # 1. Add it to the Compound and mark as "last case" + # 2. If its immediate child is also a Case or Default, promote it + # to a sibling. + new_compound.block_items.append(child) + _extract_nested_case(child, new_compound.block_items) + last_case = new_compound.block_items[-1] + else: + # Other statements are added as children to the last case, if it + # exists. + if last_case is None: + new_compound.block_items.append(child) + else: + last_case.stmts.append(child) + + switch_node.stmt = new_compound + return switch_node + + +def _extract_nested_case(case_node, stmts_list): + """ Recursively extract consecutive Case statements that are made nested + by the parser and add them to the stmts_list. + """ + if isinstance(case_node.stmts[0], (c_ast.Case, c_ast.Default)): + stmts_list.append(case_node.stmts.pop()) + _extract_nested_case(stmts_list[-1], stmts_list) + + +def fix_atomic_specifiers(decl): + """ Atomic specifiers like _Atomic(type) are unusually structured, + conferring a qualifier upon the contained type. + + This function fixes a decl with atomic specifiers to have a sane AST + structure, by removing spurious Typename->TypeDecl pairs and attaching + the _Atomic qualifier in the right place. + """ + # There can be multiple levels of _Atomic in a decl; fix them until a + # fixed point is reached. + while True: + decl, found = _fix_atomic_specifiers_once(decl) + if not found: + break + + # Make sure to add an _Atomic qual on the topmost decl if needed. Also + # restore the declname on the innermost TypeDecl (it gets placed in the + # wrong place during construction). + typ = decl + while not isinstance(typ, c_ast.TypeDecl): + try: + typ = typ.type + except AttributeError: + return decl + if '_Atomic' in typ.quals and '_Atomic' not in decl.quals: + decl.quals.append('_Atomic') + if typ.declname is None: + typ.declname = decl.name + + return decl + + +def _fix_atomic_specifiers_once(decl): + """ Performs one 'fix' round of atomic specifiers. + Returns (modified_decl, found) where found is True iff a fix was made. + """ + parent = decl + grandparent = None + node = decl.type + while node is not None: + if isinstance(node, c_ast.Typename) and '_Atomic' in node.quals: + break + try: + grandparent = parent + parent = node + node = node.type + except AttributeError: + # If we've reached a node without a `type` field, it means we won't + # find what we're looking for at this point; give up the search + # and return the original decl unmodified. + return decl, False + + assert isinstance(parent, c_ast.TypeDecl) + grandparent.type = node.type + if '_Atomic' not in node.type.quals: + node.type.quals.append('_Atomic') + return decl, True diff --git a/gestao_raul/Lib/site-packages/pycparser/c_ast.py b/gestao_raul/Lib/site-packages/pycparser/c_ast.py new file mode 100644 index 0000000..6575a2a --- /dev/null +++ b/gestao_raul/Lib/site-packages/pycparser/c_ast.py @@ -0,0 +1,1125 @@ +#----------------------------------------------------------------- +# ** ATTENTION ** +# This code was automatically generated from the file: +# _c_ast.cfg +# +# Do not modify it directly. Modify the configuration file and +# run the generator again. +# ** ** *** ** ** +# +# pycparser: c_ast.py +# +# AST Node classes. +# +# Eli Bendersky [https://eli.thegreenplace.net/] +# License: BSD +#----------------------------------------------------------------- + + +import sys + +def _repr(obj): + """ + Get the representation of an object, with dedicated pprint-like format for lists. + """ + if isinstance(obj, list): + return '[' + (',\n '.join((_repr(e).replace('\n', '\n ') for e in obj))) + '\n]' + else: + return repr(obj) + +class Node(object): + __slots__ = () + """ Abstract base class for AST nodes. + """ + def __repr__(self): + """ Generates a python representation of the current node + """ + result = self.__class__.__name__ + '(' + + indent = '' + separator = '' + for name in self.__slots__[:-2]: + result += separator + result += indent + result += name + '=' + (_repr(getattr(self, name)).replace('\n', '\n ' + (' ' * (len(name) + len(self.__class__.__name__))))) + + separator = ',' + indent = '\n ' + (' ' * len(self.__class__.__name__)) + + result += indent + ')' + + return result + + def children(self): + """ A sequence of all children that are Nodes + """ + pass + + def show(self, buf=sys.stdout, offset=0, attrnames=False, nodenames=False, showcoord=False, _my_node_name=None): + """ Pretty print the Node and all its attributes and + children (recursively) to a buffer. + + buf: + Open IO buffer into which the Node is printed. + + offset: + Initial offset (amount of leading spaces) + + attrnames: + True if you want to see the attribute names in + name=value pairs. False to only see the values. + + nodenames: + True if you want to see the actual node names + within their parents. + + showcoord: + Do you want the coordinates of each Node to be + displayed. + """ + lead = ' ' * offset + if nodenames and _my_node_name is not None: + buf.write(lead + self.__class__.__name__+ ' <' + _my_node_name + '>: ') + else: + buf.write(lead + self.__class__.__name__+ ': ') + + if self.attr_names: + if attrnames: + nvlist = [(n, getattr(self,n)) for n in self.attr_names] + attrstr = ', '.join('%s=%s' % nv for nv in nvlist) + else: + vlist = [getattr(self, n) for n in self.attr_names] + attrstr = ', '.join('%s' % v for v in vlist) + buf.write(attrstr) + + if showcoord: + buf.write(' (at %s)' % self.coord) + buf.write('\n') + + for (child_name, child) in self.children(): + child.show( + buf, + offset=offset + 2, + attrnames=attrnames, + nodenames=nodenames, + showcoord=showcoord, + _my_node_name=child_name) + + +class NodeVisitor(object): + """ A base NodeVisitor class for visiting c_ast nodes. + Subclass it and define your own visit_XXX methods, where + XXX is the class name you want to visit with these + methods. + + For example: + + class ConstantVisitor(NodeVisitor): + def __init__(self): + self.values = [] + + def visit_Constant(self, node): + self.values.append(node.value) + + Creates a list of values of all the constant nodes + encountered below the given node. To use it: + + cv = ConstantVisitor() + cv.visit(node) + + Notes: + + * generic_visit() will be called for AST nodes for which + no visit_XXX method was defined. + * The children of nodes for which a visit_XXX was + defined will not be visited - if you need this, call + generic_visit() on the node. + You can use: + NodeVisitor.generic_visit(self, node) + * Modeled after Python's own AST visiting facilities + (the ast module of Python 3.0) + """ + + _method_cache = None + + def visit(self, node): + """ Visit a node. + """ + + if self._method_cache is None: + self._method_cache = {} + + visitor = self._method_cache.get(node.__class__.__name__, None) + if visitor is None: + method = 'visit_' + node.__class__.__name__ + visitor = getattr(self, method, self.generic_visit) + self._method_cache[node.__class__.__name__] = visitor + + return visitor(node) + + def generic_visit(self, node): + """ Called if no explicit visitor function exists for a + node. Implements preorder visiting of the node. + """ + for c in node: + self.visit(c) + +class ArrayDecl(Node): + __slots__ = ('type', 'dim', 'dim_quals', 'coord', '__weakref__') + def __init__(self, type, dim, dim_quals, coord=None): + self.type = type + self.dim = dim + self.dim_quals = dim_quals + self.coord = coord + + def children(self): + nodelist = [] + if self.type is not None: nodelist.append(("type", self.type)) + if self.dim is not None: nodelist.append(("dim", self.dim)) + return tuple(nodelist) + + def __iter__(self): + if self.type is not None: + yield self.type + if self.dim is not None: + yield self.dim + + attr_names = ('dim_quals', ) + +class ArrayRef(Node): + __slots__ = ('name', 'subscript', 'coord', '__weakref__') + def __init__(self, name, subscript, coord=None): + self.name = name + self.subscript = subscript + self.coord = coord + + def children(self): + nodelist = [] + if self.name is not None: nodelist.append(("name", self.name)) + if self.subscript is not None: nodelist.append(("subscript", self.subscript)) + return tuple(nodelist) + + def __iter__(self): + if self.name is not None: + yield self.name + if self.subscript is not None: + yield self.subscript + + attr_names = () + +class Assignment(Node): + __slots__ = ('op', 'lvalue', 'rvalue', 'coord', '__weakref__') + def __init__(self, op, lvalue, rvalue, coord=None): + self.op = op + self.lvalue = lvalue + self.rvalue = rvalue + self.coord = coord + + def children(self): + nodelist = [] + if self.lvalue is not None: nodelist.append(("lvalue", self.lvalue)) + if self.rvalue is not None: nodelist.append(("rvalue", self.rvalue)) + return tuple(nodelist) + + def __iter__(self): + if self.lvalue is not None: + yield self.lvalue + if self.rvalue is not None: + yield self.rvalue + + attr_names = ('op', ) + +class Alignas(Node): + __slots__ = ('alignment', 'coord', '__weakref__') + def __init__(self, alignment, coord=None): + self.alignment = alignment + self.coord = coord + + def children(self): + nodelist = [] + if self.alignment is not None: nodelist.append(("alignment", self.alignment)) + return tuple(nodelist) + + def __iter__(self): + if self.alignment is not None: + yield self.alignment + + attr_names = () + +class BinaryOp(Node): + __slots__ = ('op', 'left', 'right', 'coord', '__weakref__') + def __init__(self, op, left, right, coord=None): + self.op = op + self.left = left + self.right = right + self.coord = coord + + def children(self): + nodelist = [] + if self.left is not None: nodelist.append(("left", self.left)) + if self.right is not None: nodelist.append(("right", self.right)) + return tuple(nodelist) + + def __iter__(self): + if self.left is not None: + yield self.left + if self.right is not None: + yield self.right + + attr_names = ('op', ) + +class Break(Node): + __slots__ = ('coord', '__weakref__') + def __init__(self, coord=None): + self.coord = coord + + def children(self): + return () + + def __iter__(self): + return + yield + + attr_names = () + +class Case(Node): + __slots__ = ('expr', 'stmts', 'coord', '__weakref__') + def __init__(self, expr, stmts, coord=None): + self.expr = expr + self.stmts = stmts + self.coord = coord + + def children(self): + nodelist = [] + if self.expr is not None: nodelist.append(("expr", self.expr)) + for i, child in enumerate(self.stmts or []): + nodelist.append(("stmts[%d]" % i, child)) + return tuple(nodelist) + + def __iter__(self): + if self.expr is not None: + yield self.expr + for child in (self.stmts or []): + yield child + + attr_names = () + +class Cast(Node): + __slots__ = ('to_type', 'expr', 'coord', '__weakref__') + def __init__(self, to_type, expr, coord=None): + self.to_type = to_type + self.expr = expr + self.coord = coord + + def children(self): + nodelist = [] + if self.to_type is not None: nodelist.append(("to_type", self.to_type)) + if self.expr is not None: nodelist.append(("expr", self.expr)) + return tuple(nodelist) + + def __iter__(self): + if self.to_type is not None: + yield self.to_type + if self.expr is not None: + yield self.expr + + attr_names = () + +class Compound(Node): + __slots__ = ('block_items', 'coord', '__weakref__') + def __init__(self, block_items, coord=None): + self.block_items = block_items + self.coord = coord + + def children(self): + nodelist = [] + for i, child in enumerate(self.block_items or []): + nodelist.append(("block_items[%d]" % i, child)) + return tuple(nodelist) + + def __iter__(self): + for child in (self.block_items or []): + yield child + + attr_names = () + +class CompoundLiteral(Node): + __slots__ = ('type', 'init', 'coord', '__weakref__') + def __init__(self, type, init, coord=None): + self.type = type + self.init = init + self.coord = coord + + def children(self): + nodelist = [] + if self.type is not None: nodelist.append(("type", self.type)) + if self.init is not None: nodelist.append(("init", self.init)) + return tuple(nodelist) + + def __iter__(self): + if self.type is not None: + yield self.type + if self.init is not None: + yield self.init + + attr_names = () + +class Constant(Node): + __slots__ = ('type', 'value', 'coord', '__weakref__') + def __init__(self, type, value, coord=None): + self.type = type + self.value = value + self.coord = coord + + def children(self): + nodelist = [] + return tuple(nodelist) + + def __iter__(self): + return + yield + + attr_names = ('type', 'value', ) + +class Continue(Node): + __slots__ = ('coord', '__weakref__') + def __init__(self, coord=None): + self.coord = coord + + def children(self): + return () + + def __iter__(self): + return + yield + + attr_names = () + +class Decl(Node): + __slots__ = ('name', 'quals', 'align', 'storage', 'funcspec', 'type', 'init', 'bitsize', 'coord', '__weakref__') + def __init__(self, name, quals, align, storage, funcspec, type, init, bitsize, coord=None): + self.name = name + self.quals = quals + self.align = align + self.storage = storage + self.funcspec = funcspec + self.type = type + self.init = init + self.bitsize = bitsize + self.coord = coord + + def children(self): + nodelist = [] + if self.type is not None: nodelist.append(("type", self.type)) + if self.init is not None: nodelist.append(("init", self.init)) + if self.bitsize is not None: nodelist.append(("bitsize", self.bitsize)) + return tuple(nodelist) + + def __iter__(self): + if self.type is not None: + yield self.type + if self.init is not None: + yield self.init + if self.bitsize is not None: + yield self.bitsize + + attr_names = ('name', 'quals', 'align', 'storage', 'funcspec', ) + +class DeclList(Node): + __slots__ = ('decls', 'coord', '__weakref__') + def __init__(self, decls, coord=None): + self.decls = decls + self.coord = coord + + def children(self): + nodelist = [] + for i, child in enumerate(self.decls or []): + nodelist.append(("decls[%d]" % i, child)) + return tuple(nodelist) + + def __iter__(self): + for child in (self.decls or []): + yield child + + attr_names = () + +class Default(Node): + __slots__ = ('stmts', 'coord', '__weakref__') + def __init__(self, stmts, coord=None): + self.stmts = stmts + self.coord = coord + + def children(self): + nodelist = [] + for i, child in enumerate(self.stmts or []): + nodelist.append(("stmts[%d]" % i, child)) + return tuple(nodelist) + + def __iter__(self): + for child in (self.stmts or []): + yield child + + attr_names = () + +class DoWhile(Node): + __slots__ = ('cond', 'stmt', 'coord', '__weakref__') + def __init__(self, cond, stmt, coord=None): + self.cond = cond + self.stmt = stmt + self.coord = coord + + def children(self): + nodelist = [] + if self.cond is not None: nodelist.append(("cond", self.cond)) + if self.stmt is not None: nodelist.append(("stmt", self.stmt)) + return tuple(nodelist) + + def __iter__(self): + if self.cond is not None: + yield self.cond + if self.stmt is not None: + yield self.stmt + + attr_names = () + +class EllipsisParam(Node): + __slots__ = ('coord', '__weakref__') + def __init__(self, coord=None): + self.coord = coord + + def children(self): + return () + + def __iter__(self): + return + yield + + attr_names = () + +class EmptyStatement(Node): + __slots__ = ('coord', '__weakref__') + def __init__(self, coord=None): + self.coord = coord + + def children(self): + return () + + def __iter__(self): + return + yield + + attr_names = () + +class Enum(Node): + __slots__ = ('name', 'values', 'coord', '__weakref__') + def __init__(self, name, values, coord=None): + self.name = name + self.values = values + self.coord = coord + + def children(self): + nodelist = [] + if self.values is not None: nodelist.append(("values", self.values)) + return tuple(nodelist) + + def __iter__(self): + if self.values is not None: + yield self.values + + attr_names = ('name', ) + +class Enumerator(Node): + __slots__ = ('name', 'value', 'coord', '__weakref__') + def __init__(self, name, value, coord=None): + self.name = name + self.value = value + self.coord = coord + + def children(self): + nodelist = [] + if self.value is not None: nodelist.append(("value", self.value)) + return tuple(nodelist) + + def __iter__(self): + if self.value is not None: + yield self.value + + attr_names = ('name', ) + +class EnumeratorList(Node): + __slots__ = ('enumerators', 'coord', '__weakref__') + def __init__(self, enumerators, coord=None): + self.enumerators = enumerators + self.coord = coord + + def children(self): + nodelist = [] + for i, child in enumerate(self.enumerators or []): + nodelist.append(("enumerators[%d]" % i, child)) + return tuple(nodelist) + + def __iter__(self): + for child in (self.enumerators or []): + yield child + + attr_names = () + +class ExprList(Node): + __slots__ = ('exprs', 'coord', '__weakref__') + def __init__(self, exprs, coord=None): + self.exprs = exprs + self.coord = coord + + def children(self): + nodelist = [] + for i, child in enumerate(self.exprs or []): + nodelist.append(("exprs[%d]" % i, child)) + return tuple(nodelist) + + def __iter__(self): + for child in (self.exprs or []): + yield child + + attr_names = () + +class FileAST(Node): + __slots__ = ('ext', 'coord', '__weakref__') + def __init__(self, ext, coord=None): + self.ext = ext + self.coord = coord + + def children(self): + nodelist = [] + for i, child in enumerate(self.ext or []): + nodelist.append(("ext[%d]" % i, child)) + return tuple(nodelist) + + def __iter__(self): + for child in (self.ext or []): + yield child + + attr_names = () + +class For(Node): + __slots__ = ('init', 'cond', 'next', 'stmt', 'coord', '__weakref__') + def __init__(self, init, cond, next, stmt, coord=None): + self.init = init + self.cond = cond + self.next = next + self.stmt = stmt + self.coord = coord + + def children(self): + nodelist = [] + if self.init is not None: nodelist.append(("init", self.init)) + if self.cond is not None: nodelist.append(("cond", self.cond)) + if self.next is not None: nodelist.append(("next", self.next)) + if self.stmt is not None: nodelist.append(("stmt", self.stmt)) + return tuple(nodelist) + + def __iter__(self): + if self.init is not None: + yield self.init + if self.cond is not None: + yield self.cond + if self.next is not None: + yield self.next + if self.stmt is not None: + yield self.stmt + + attr_names = () + +class FuncCall(Node): + __slots__ = ('name', 'args', 'coord', '__weakref__') + def __init__(self, name, args, coord=None): + self.name = name + self.args = args + self.coord = coord + + def children(self): + nodelist = [] + if self.name is not None: nodelist.append(("name", self.name)) + if self.args is not None: nodelist.append(("args", self.args)) + return tuple(nodelist) + + def __iter__(self): + if self.name is not None: + yield self.name + if self.args is not None: + yield self.args + + attr_names = () + +class FuncDecl(Node): + __slots__ = ('args', 'type', 'coord', '__weakref__') + def __init__(self, args, type, coord=None): + self.args = args + self.type = type + self.coord = coord + + def children(self): + nodelist = [] + if self.args is not None: nodelist.append(("args", self.args)) + if self.type is not None: nodelist.append(("type", self.type)) + return tuple(nodelist) + + def __iter__(self): + if self.args is not None: + yield self.args + if self.type is not None: + yield self.type + + attr_names = () + +class FuncDef(Node): + __slots__ = ('decl', 'param_decls', 'body', 'coord', '__weakref__') + def __init__(self, decl, param_decls, body, coord=None): + self.decl = decl + self.param_decls = param_decls + self.body = body + self.coord = coord + + def children(self): + nodelist = [] + if self.decl is not None: nodelist.append(("decl", self.decl)) + if self.body is not None: nodelist.append(("body", self.body)) + for i, child in enumerate(self.param_decls or []): + nodelist.append(("param_decls[%d]" % i, child)) + return tuple(nodelist) + + def __iter__(self): + if self.decl is not None: + yield self.decl + if self.body is not None: + yield self.body + for child in (self.param_decls or []): + yield child + + attr_names = () + +class Goto(Node): + __slots__ = ('name', 'coord', '__weakref__') + def __init__(self, name, coord=None): + self.name = name + self.coord = coord + + def children(self): + nodelist = [] + return tuple(nodelist) + + def __iter__(self): + return + yield + + attr_names = ('name', ) + +class ID(Node): + __slots__ = ('name', 'coord', '__weakref__') + def __init__(self, name, coord=None): + self.name = name + self.coord = coord + + def children(self): + nodelist = [] + return tuple(nodelist) + + def __iter__(self): + return + yield + + attr_names = ('name', ) + +class IdentifierType(Node): + __slots__ = ('names', 'coord', '__weakref__') + def __init__(self, names, coord=None): + self.names = names + self.coord = coord + + def children(self): + nodelist = [] + return tuple(nodelist) + + def __iter__(self): + return + yield + + attr_names = ('names', ) + +class If(Node): + __slots__ = ('cond', 'iftrue', 'iffalse', 'coord', '__weakref__') + def __init__(self, cond, iftrue, iffalse, coord=None): + self.cond = cond + self.iftrue = iftrue + self.iffalse = iffalse + self.coord = coord + + def children(self): + nodelist = [] + if self.cond is not None: nodelist.append(("cond", self.cond)) + if self.iftrue is not None: nodelist.append(("iftrue", self.iftrue)) + if self.iffalse is not None: nodelist.append(("iffalse", self.iffalse)) + return tuple(nodelist) + + def __iter__(self): + if self.cond is not None: + yield self.cond + if self.iftrue is not None: + yield self.iftrue + if self.iffalse is not None: + yield self.iffalse + + attr_names = () + +class InitList(Node): + __slots__ = ('exprs', 'coord', '__weakref__') + def __init__(self, exprs, coord=None): + self.exprs = exprs + self.coord = coord + + def children(self): + nodelist = [] + for i, child in enumerate(self.exprs or []): + nodelist.append(("exprs[%d]" % i, child)) + return tuple(nodelist) + + def __iter__(self): + for child in (self.exprs or []): + yield child + + attr_names = () + +class Label(Node): + __slots__ = ('name', 'stmt', 'coord', '__weakref__') + def __init__(self, name, stmt, coord=None): + self.name = name + self.stmt = stmt + self.coord = coord + + def children(self): + nodelist = [] + if self.stmt is not None: nodelist.append(("stmt", self.stmt)) + return tuple(nodelist) + + def __iter__(self): + if self.stmt is not None: + yield self.stmt + + attr_names = ('name', ) + +class NamedInitializer(Node): + __slots__ = ('name', 'expr', 'coord', '__weakref__') + def __init__(self, name, expr, coord=None): + self.name = name + self.expr = expr + self.coord = coord + + def children(self): + nodelist = [] + if self.expr is not None: nodelist.append(("expr", self.expr)) + for i, child in enumerate(self.name or []): + nodelist.append(("name[%d]" % i, child)) + return tuple(nodelist) + + def __iter__(self): + if self.expr is not None: + yield self.expr + for child in (self.name or []): + yield child + + attr_names = () + +class ParamList(Node): + __slots__ = ('params', 'coord', '__weakref__') + def __init__(self, params, coord=None): + self.params = params + self.coord = coord + + def children(self): + nodelist = [] + for i, child in enumerate(self.params or []): + nodelist.append(("params[%d]" % i, child)) + return tuple(nodelist) + + def __iter__(self): + for child in (self.params or []): + yield child + + attr_names = () + +class PtrDecl(Node): + __slots__ = ('quals', 'type', 'coord', '__weakref__') + def __init__(self, quals, type, coord=None): + self.quals = quals + self.type = type + self.coord = coord + + def children(self): + nodelist = [] + if self.type is not None: nodelist.append(("type", self.type)) + return tuple(nodelist) + + def __iter__(self): + if self.type is not None: + yield self.type + + attr_names = ('quals', ) + +class Return(Node): + __slots__ = ('expr', 'coord', '__weakref__') + def __init__(self, expr, coord=None): + self.expr = expr + self.coord = coord + + def children(self): + nodelist = [] + if self.expr is not None: nodelist.append(("expr", self.expr)) + return tuple(nodelist) + + def __iter__(self): + if self.expr is not None: + yield self.expr + + attr_names = () + +class StaticAssert(Node): + __slots__ = ('cond', 'message', 'coord', '__weakref__') + def __init__(self, cond, message, coord=None): + self.cond = cond + self.message = message + self.coord = coord + + def children(self): + nodelist = [] + if self.cond is not None: nodelist.append(("cond", self.cond)) + if self.message is not None: nodelist.append(("message", self.message)) + return tuple(nodelist) + + def __iter__(self): + if self.cond is not None: + yield self.cond + if self.message is not None: + yield self.message + + attr_names = () + +class Struct(Node): + __slots__ = ('name', 'decls', 'coord', '__weakref__') + def __init__(self, name, decls, coord=None): + self.name = name + self.decls = decls + self.coord = coord + + def children(self): + nodelist = [] + for i, child in enumerate(self.decls or []): + nodelist.append(("decls[%d]" % i, child)) + return tuple(nodelist) + + def __iter__(self): + for child in (self.decls or []): + yield child + + attr_names = ('name', ) + +class StructRef(Node): + __slots__ = ('name', 'type', 'field', 'coord', '__weakref__') + def __init__(self, name, type, field, coord=None): + self.name = name + self.type = type + self.field = field + self.coord = coord + + def children(self): + nodelist = [] + if self.name is not None: nodelist.append(("name", self.name)) + if self.field is not None: nodelist.append(("field", self.field)) + return tuple(nodelist) + + def __iter__(self): + if self.name is not None: + yield self.name + if self.field is not None: + yield self.field + + attr_names = ('type', ) + +class Switch(Node): + __slots__ = ('cond', 'stmt', 'coord', '__weakref__') + def __init__(self, cond, stmt, coord=None): + self.cond = cond + self.stmt = stmt + self.coord = coord + + def children(self): + nodelist = [] + if self.cond is not None: nodelist.append(("cond", self.cond)) + if self.stmt is not None: nodelist.append(("stmt", self.stmt)) + return tuple(nodelist) + + def __iter__(self): + if self.cond is not None: + yield self.cond + if self.stmt is not None: + yield self.stmt + + attr_names = () + +class TernaryOp(Node): + __slots__ = ('cond', 'iftrue', 'iffalse', 'coord', '__weakref__') + def __init__(self, cond, iftrue, iffalse, coord=None): + self.cond = cond + self.iftrue = iftrue + self.iffalse = iffalse + self.coord = coord + + def children(self): + nodelist = [] + if self.cond is not None: nodelist.append(("cond", self.cond)) + if self.iftrue is not None: nodelist.append(("iftrue", self.iftrue)) + if self.iffalse is not None: nodelist.append(("iffalse", self.iffalse)) + return tuple(nodelist) + + def __iter__(self): + if self.cond is not None: + yield self.cond + if self.iftrue is not None: + yield self.iftrue + if self.iffalse is not None: + yield self.iffalse + + attr_names = () + +class TypeDecl(Node): + __slots__ = ('declname', 'quals', 'align', 'type', 'coord', '__weakref__') + def __init__(self, declname, quals, align, type, coord=None): + self.declname = declname + self.quals = quals + self.align = align + self.type = type + self.coord = coord + + def children(self): + nodelist = [] + if self.type is not None: nodelist.append(("type", self.type)) + return tuple(nodelist) + + def __iter__(self): + if self.type is not None: + yield self.type + + attr_names = ('declname', 'quals', 'align', ) + +class Typedef(Node): + __slots__ = ('name', 'quals', 'storage', 'type', 'coord', '__weakref__') + def __init__(self, name, quals, storage, type, coord=None): + self.name = name + self.quals = quals + self.storage = storage + self.type = type + self.coord = coord + + def children(self): + nodelist = [] + if self.type is not None: nodelist.append(("type", self.type)) + return tuple(nodelist) + + def __iter__(self): + if self.type is not None: + yield self.type + + attr_names = ('name', 'quals', 'storage', ) + +class Typename(Node): + __slots__ = ('name', 'quals', 'align', 'type', 'coord', '__weakref__') + def __init__(self, name, quals, align, type, coord=None): + self.name = name + self.quals = quals + self.align = align + self.type = type + self.coord = coord + + def children(self): + nodelist = [] + if self.type is not None: nodelist.append(("type", self.type)) + return tuple(nodelist) + + def __iter__(self): + if self.type is not None: + yield self.type + + attr_names = ('name', 'quals', 'align', ) + +class UnaryOp(Node): + __slots__ = ('op', 'expr', 'coord', '__weakref__') + def __init__(self, op, expr, coord=None): + self.op = op + self.expr = expr + self.coord = coord + + def children(self): + nodelist = [] + if self.expr is not None: nodelist.append(("expr", self.expr)) + return tuple(nodelist) + + def __iter__(self): + if self.expr is not None: + yield self.expr + + attr_names = ('op', ) + +class Union(Node): + __slots__ = ('name', 'decls', 'coord', '__weakref__') + def __init__(self, name, decls, coord=None): + self.name = name + self.decls = decls + self.coord = coord + + def children(self): + nodelist = [] + for i, child in enumerate(self.decls or []): + nodelist.append(("decls[%d]" % i, child)) + return tuple(nodelist) + + def __iter__(self): + for child in (self.decls or []): + yield child + + attr_names = ('name', ) + +class While(Node): + __slots__ = ('cond', 'stmt', 'coord', '__weakref__') + def __init__(self, cond, stmt, coord=None): + self.cond = cond + self.stmt = stmt + self.coord = coord + + def children(self): + nodelist = [] + if self.cond is not None: nodelist.append(("cond", self.cond)) + if self.stmt is not None: nodelist.append(("stmt", self.stmt)) + return tuple(nodelist) + + def __iter__(self): + if self.cond is not None: + yield self.cond + if self.stmt is not None: + yield self.stmt + + attr_names = () + +class Pragma(Node): + __slots__ = ('string', 'coord', '__weakref__') + def __init__(self, string, coord=None): + self.string = string + self.coord = coord + + def children(self): + nodelist = [] + return tuple(nodelist) + + def __iter__(self): + return + yield + + attr_names = ('string', ) + diff --git a/gestao_raul/Lib/site-packages/pycparser/c_generator.py b/gestao_raul/Lib/site-packages/pycparser/c_generator.py new file mode 100644 index 0000000..1057b2c --- /dev/null +++ b/gestao_raul/Lib/site-packages/pycparser/c_generator.py @@ -0,0 +1,502 @@ +#------------------------------------------------------------------------------ +# pycparser: c_generator.py +# +# C code generator from pycparser AST nodes. +# +# Eli Bendersky [https://eli.thegreenplace.net/] +# License: BSD +#------------------------------------------------------------------------------ +from . import c_ast + + +class CGenerator(object): + """ Uses the same visitor pattern as c_ast.NodeVisitor, but modified to + return a value from each visit method, using string accumulation in + generic_visit. + """ + def __init__(self, reduce_parentheses=False): + """ Constructs C-code generator + + reduce_parentheses: + if True, eliminates needless parentheses on binary operators + """ + # Statements start with indentation of self.indent_level spaces, using + # the _make_indent method. + self.indent_level = 0 + self.reduce_parentheses = reduce_parentheses + + def _make_indent(self): + return ' ' * self.indent_level + + def visit(self, node): + method = 'visit_' + node.__class__.__name__ + return getattr(self, method, self.generic_visit)(node) + + def generic_visit(self, node): + if node is None: + return '' + else: + return ''.join(self.visit(c) for c_name, c in node.children()) + + def visit_Constant(self, n): + return n.value + + def visit_ID(self, n): + return n.name + + def visit_Pragma(self, n): + ret = '#pragma' + if n.string: + ret += ' ' + n.string + return ret + + def visit_ArrayRef(self, n): + arrref = self._parenthesize_unless_simple(n.name) + return arrref + '[' + self.visit(n.subscript) + ']' + + def visit_StructRef(self, n): + sref = self._parenthesize_unless_simple(n.name) + return sref + n.type + self.visit(n.field) + + def visit_FuncCall(self, n): + fref = self._parenthesize_unless_simple(n.name) + return fref + '(' + self.visit(n.args) + ')' + + def visit_UnaryOp(self, n): + if n.op == 'sizeof': + # Always parenthesize the argument of sizeof since it can be + # a name. + return 'sizeof(%s)' % self.visit(n.expr) + else: + operand = self._parenthesize_unless_simple(n.expr) + if n.op == 'p++': + return '%s++' % operand + elif n.op == 'p--': + return '%s--' % operand + else: + return '%s%s' % (n.op, operand) + + # Precedence map of binary operators: + precedence_map = { + # Should be in sync with c_parser.CParser.precedence + # Higher numbers are stronger binding + '||': 0, # weakest binding + '&&': 1, + '|': 2, + '^': 3, + '&': 4, + '==': 5, '!=': 5, + '>': 6, '>=': 6, '<': 6, '<=': 6, + '>>': 7, '<<': 7, + '+': 8, '-': 8, + '*': 9, '/': 9, '%': 9 # strongest binding + } + + def visit_BinaryOp(self, n): + # Note: all binary operators are left-to-right associative + # + # If `n.left.op` has a stronger or equally binding precedence in + # comparison to `n.op`, no parenthesis are needed for the left: + # e.g., `(a*b) + c` is equivalent to `a*b + c`, as well as + # `(a+b) - c` is equivalent to `a+b - c` (same precedence). + # If the left operator is weaker binding than the current, then + # parentheses are necessary: + # e.g., `(a+b) * c` is NOT equivalent to `a+b * c`. + lval_str = self._parenthesize_if( + n.left, + lambda d: not (self._is_simple_node(d) or + self.reduce_parentheses and isinstance(d, c_ast.BinaryOp) and + self.precedence_map[d.op] >= self.precedence_map[n.op])) + # If `n.right.op` has a stronger -but not equal- binding precedence, + # parenthesis can be omitted on the right: + # e.g., `a + (b*c)` is equivalent to `a + b*c`. + # If the right operator is weaker or equally binding, then parentheses + # are necessary: + # e.g., `a * (b+c)` is NOT equivalent to `a * b+c` and + # `a - (b+c)` is NOT equivalent to `a - b+c` (same precedence). + rval_str = self._parenthesize_if( + n.right, + lambda d: not (self._is_simple_node(d) or + self.reduce_parentheses and isinstance(d, c_ast.BinaryOp) and + self.precedence_map[d.op] > self.precedence_map[n.op])) + return '%s %s %s' % (lval_str, n.op, rval_str) + + def visit_Assignment(self, n): + rval_str = self._parenthesize_if( + n.rvalue, + lambda n: isinstance(n, c_ast.Assignment)) + return '%s %s %s' % (self.visit(n.lvalue), n.op, rval_str) + + def visit_IdentifierType(self, n): + return ' '.join(n.names) + + def _visit_expr(self, n): + if isinstance(n, c_ast.InitList): + return '{' + self.visit(n) + '}' + elif isinstance(n, c_ast.ExprList): + return '(' + self.visit(n) + ')' + else: + return self.visit(n) + + def visit_Decl(self, n, no_type=False): + # no_type is used when a Decl is part of a DeclList, where the type is + # explicitly only for the first declaration in a list. + # + s = n.name if no_type else self._generate_decl(n) + if n.bitsize: s += ' : ' + self.visit(n.bitsize) + if n.init: + s += ' = ' + self._visit_expr(n.init) + return s + + def visit_DeclList(self, n): + s = self.visit(n.decls[0]) + if len(n.decls) > 1: + s += ', ' + ', '.join(self.visit_Decl(decl, no_type=True) + for decl in n.decls[1:]) + return s + + def visit_Typedef(self, n): + s = '' + if n.storage: s += ' '.join(n.storage) + ' ' + s += self._generate_type(n.type) + return s + + def visit_Cast(self, n): + s = '(' + self._generate_type(n.to_type, emit_declname=False) + ')' + return s + ' ' + self._parenthesize_unless_simple(n.expr) + + def visit_ExprList(self, n): + visited_subexprs = [] + for expr in n.exprs: + visited_subexprs.append(self._visit_expr(expr)) + return ', '.join(visited_subexprs) + + def visit_InitList(self, n): + visited_subexprs = [] + for expr in n.exprs: + visited_subexprs.append(self._visit_expr(expr)) + return ', '.join(visited_subexprs) + + def visit_Enum(self, n): + return self._generate_struct_union_enum(n, name='enum') + + def visit_Alignas(self, n): + return '_Alignas({})'.format(self.visit(n.alignment)) + + def visit_Enumerator(self, n): + if not n.value: + return '{indent}{name},\n'.format( + indent=self._make_indent(), + name=n.name, + ) + else: + return '{indent}{name} = {value},\n'.format( + indent=self._make_indent(), + name=n.name, + value=self.visit(n.value), + ) + + def visit_FuncDef(self, n): + decl = self.visit(n.decl) + self.indent_level = 0 + body = self.visit(n.body) + if n.param_decls: + knrdecls = ';\n'.join(self.visit(p) for p in n.param_decls) + return decl + '\n' + knrdecls + ';\n' + body + '\n' + else: + return decl + '\n' + body + '\n' + + def visit_FileAST(self, n): + s = '' + for ext in n.ext: + if isinstance(ext, c_ast.FuncDef): + s += self.visit(ext) + elif isinstance(ext, c_ast.Pragma): + s += self.visit(ext) + '\n' + else: + s += self.visit(ext) + ';\n' + return s + + def visit_Compound(self, n): + s = self._make_indent() + '{\n' + self.indent_level += 2 + if n.block_items: + s += ''.join(self._generate_stmt(stmt) for stmt in n.block_items) + self.indent_level -= 2 + s += self._make_indent() + '}\n' + return s + + def visit_CompoundLiteral(self, n): + return '(' + self.visit(n.type) + '){' + self.visit(n.init) + '}' + + + def visit_EmptyStatement(self, n): + return ';' + + def visit_ParamList(self, n): + return ', '.join(self.visit(param) for param in n.params) + + def visit_Return(self, n): + s = 'return' + if n.expr: s += ' ' + self.visit(n.expr) + return s + ';' + + def visit_Break(self, n): + return 'break;' + + def visit_Continue(self, n): + return 'continue;' + + def visit_TernaryOp(self, n): + s = '(' + self._visit_expr(n.cond) + ') ? ' + s += '(' + self._visit_expr(n.iftrue) + ') : ' + s += '(' + self._visit_expr(n.iffalse) + ')' + return s + + def visit_If(self, n): + s = 'if (' + if n.cond: s += self.visit(n.cond) + s += ')\n' + s += self._generate_stmt(n.iftrue, add_indent=True) + if n.iffalse: + s += self._make_indent() + 'else\n' + s += self._generate_stmt(n.iffalse, add_indent=True) + return s + + def visit_For(self, n): + s = 'for (' + if n.init: s += self.visit(n.init) + s += ';' + if n.cond: s += ' ' + self.visit(n.cond) + s += ';' + if n.next: s += ' ' + self.visit(n.next) + s += ')\n' + s += self._generate_stmt(n.stmt, add_indent=True) + return s + + def visit_While(self, n): + s = 'while (' + if n.cond: s += self.visit(n.cond) + s += ')\n' + s += self._generate_stmt(n.stmt, add_indent=True) + return s + + def visit_DoWhile(self, n): + s = 'do\n' + s += self._generate_stmt(n.stmt, add_indent=True) + s += self._make_indent() + 'while (' + if n.cond: s += self.visit(n.cond) + s += ');' + return s + + def visit_StaticAssert(self, n): + s = '_Static_assert(' + s += self.visit(n.cond) + if n.message: + s += ',' + s += self.visit(n.message) + s += ')' + return s + + def visit_Switch(self, n): + s = 'switch (' + self.visit(n.cond) + ')\n' + s += self._generate_stmt(n.stmt, add_indent=True) + return s + + def visit_Case(self, n): + s = 'case ' + self.visit(n.expr) + ':\n' + for stmt in n.stmts: + s += self._generate_stmt(stmt, add_indent=True) + return s + + def visit_Default(self, n): + s = 'default:\n' + for stmt in n.stmts: + s += self._generate_stmt(stmt, add_indent=True) + return s + + def visit_Label(self, n): + return n.name + ':\n' + self._generate_stmt(n.stmt) + + def visit_Goto(self, n): + return 'goto ' + n.name + ';' + + def visit_EllipsisParam(self, n): + return '...' + + def visit_Struct(self, n): + return self._generate_struct_union_enum(n, 'struct') + + def visit_Typename(self, n): + return self._generate_type(n.type) + + def visit_Union(self, n): + return self._generate_struct_union_enum(n, 'union') + + def visit_NamedInitializer(self, n): + s = '' + for name in n.name: + if isinstance(name, c_ast.ID): + s += '.' + name.name + else: + s += '[' + self.visit(name) + ']' + s += ' = ' + self._visit_expr(n.expr) + return s + + def visit_FuncDecl(self, n): + return self._generate_type(n) + + def visit_ArrayDecl(self, n): + return self._generate_type(n, emit_declname=False) + + def visit_TypeDecl(self, n): + return self._generate_type(n, emit_declname=False) + + def visit_PtrDecl(self, n): + return self._generate_type(n, emit_declname=False) + + def _generate_struct_union_enum(self, n, name): + """ Generates code for structs, unions, and enums. name should be + 'struct', 'union', or 'enum'. + """ + if name in ('struct', 'union'): + members = n.decls + body_function = self._generate_struct_union_body + else: + assert name == 'enum' + members = None if n.values is None else n.values.enumerators + body_function = self._generate_enum_body + s = name + ' ' + (n.name or '') + if members is not None: + # None means no members + # Empty sequence means an empty list of members + s += '\n' + s += self._make_indent() + self.indent_level += 2 + s += '{\n' + s += body_function(members) + self.indent_level -= 2 + s += self._make_indent() + '}' + return s + + def _generate_struct_union_body(self, members): + return ''.join(self._generate_stmt(decl) for decl in members) + + def _generate_enum_body(self, members): + # `[:-2] + '\n'` removes the final `,` from the enumerator list + return ''.join(self.visit(value) for value in members)[:-2] + '\n' + + def _generate_stmt(self, n, add_indent=False): + """ Generation from a statement node. This method exists as a wrapper + for individual visit_* methods to handle different treatment of + some statements in this context. + """ + typ = type(n) + if add_indent: self.indent_level += 2 + indent = self._make_indent() + if add_indent: self.indent_level -= 2 + + if typ in ( + c_ast.Decl, c_ast.Assignment, c_ast.Cast, c_ast.UnaryOp, + c_ast.BinaryOp, c_ast.TernaryOp, c_ast.FuncCall, c_ast.ArrayRef, + c_ast.StructRef, c_ast.Constant, c_ast.ID, c_ast.Typedef, + c_ast.ExprList): + # These can also appear in an expression context so no semicolon + # is added to them automatically + # + return indent + self.visit(n) + ';\n' + elif typ in (c_ast.Compound,): + # No extra indentation required before the opening brace of a + # compound - because it consists of multiple lines it has to + # compute its own indentation. + # + return self.visit(n) + elif typ in (c_ast.If,): + return indent + self.visit(n) + else: + return indent + self.visit(n) + '\n' + + def _generate_decl(self, n): + """ Generation from a Decl node. + """ + s = '' + if n.funcspec: s = ' '.join(n.funcspec) + ' ' + if n.storage: s += ' '.join(n.storage) + ' ' + if n.align: s += self.visit(n.align[0]) + ' ' + s += self._generate_type(n.type) + return s + + def _generate_type(self, n, modifiers=[], emit_declname = True): + """ Recursive generation from a type node. n is the type node. + modifiers collects the PtrDecl, ArrayDecl and FuncDecl modifiers + encountered on the way down to a TypeDecl, to allow proper + generation from it. + """ + typ = type(n) + #~ print(n, modifiers) + + if typ == c_ast.TypeDecl: + s = '' + if n.quals: s += ' '.join(n.quals) + ' ' + s += self.visit(n.type) + + nstr = n.declname if n.declname and emit_declname else '' + # Resolve modifiers. + # Wrap in parens to distinguish pointer to array and pointer to + # function syntax. + # + for i, modifier in enumerate(modifiers): + if isinstance(modifier, c_ast.ArrayDecl): + if (i != 0 and + isinstance(modifiers[i - 1], c_ast.PtrDecl)): + nstr = '(' + nstr + ')' + nstr += '[' + if modifier.dim_quals: + nstr += ' '.join(modifier.dim_quals) + ' ' + nstr += self.visit(modifier.dim) + ']' + elif isinstance(modifier, c_ast.FuncDecl): + if (i != 0 and + isinstance(modifiers[i - 1], c_ast.PtrDecl)): + nstr = '(' + nstr + ')' + nstr += '(' + self.visit(modifier.args) + ')' + elif isinstance(modifier, c_ast.PtrDecl): + if modifier.quals: + nstr = '* %s%s' % (' '.join(modifier.quals), + ' ' + nstr if nstr else '') + else: + nstr = '*' + nstr + if nstr: s += ' ' + nstr + return s + elif typ == c_ast.Decl: + return self._generate_decl(n.type) + elif typ == c_ast.Typename: + return self._generate_type(n.type, emit_declname = emit_declname) + elif typ == c_ast.IdentifierType: + return ' '.join(n.names) + ' ' + elif typ in (c_ast.ArrayDecl, c_ast.PtrDecl, c_ast.FuncDecl): + return self._generate_type(n.type, modifiers + [n], + emit_declname = emit_declname) + else: + return self.visit(n) + + def _parenthesize_if(self, n, condition): + """ Visits 'n' and returns its string representation, parenthesized + if the condition function applied to the node returns True. + """ + s = self._visit_expr(n) + if condition(n): + return '(' + s + ')' + else: + return s + + def _parenthesize_unless_simple(self, n): + """ Common use case for _parenthesize_if + """ + return self._parenthesize_if(n, lambda d: not self._is_simple_node(d)) + + def _is_simple_node(self, n): + """ Returns True for nodes that are "simple" - i.e. nodes that always + have higher precedence than operators. + """ + return isinstance(n, (c_ast.Constant, c_ast.ID, c_ast.ArrayRef, + c_ast.StructRef, c_ast.FuncCall)) diff --git a/gestao_raul/Lib/site-packages/pycparser/c_lexer.py b/gestao_raul/Lib/site-packages/pycparser/c_lexer.py new file mode 100644 index 0000000..22c64bc --- /dev/null +++ b/gestao_raul/Lib/site-packages/pycparser/c_lexer.py @@ -0,0 +1,555 @@ +#------------------------------------------------------------------------------ +# pycparser: c_lexer.py +# +# CLexer class: lexer for the C language +# +# Eli Bendersky [https://eli.thegreenplace.net/] +# License: BSD +#------------------------------------------------------------------------------ +import re + +from .ply import lex +from .ply.lex import TOKEN + + +class CLexer(object): + """ A lexer for the C language. After building it, set the + input text with input(), and call token() to get new + tokens. + + The public attribute filename can be set to an initial + filename, but the lexer will update it upon #line + directives. + """ + def __init__(self, error_func, on_lbrace_func, on_rbrace_func, + type_lookup_func): + """ Create a new Lexer. + + error_func: + An error function. Will be called with an error + message, line and column as arguments, in case of + an error during lexing. + + on_lbrace_func, on_rbrace_func: + Called when an LBRACE or RBRACE is encountered + (likely to push/pop type_lookup_func's scope) + + type_lookup_func: + A type lookup function. Given a string, it must + return True IFF this string is a name of a type + that was defined with a typedef earlier. + """ + self.error_func = error_func + self.on_lbrace_func = on_lbrace_func + self.on_rbrace_func = on_rbrace_func + self.type_lookup_func = type_lookup_func + self.filename = '' + + # Keeps track of the last token returned from self.token() + self.last_token = None + + # Allow either "# line" or "# " to support GCC's + # cpp output + # + self.line_pattern = re.compile(r'([ \t]*line\W)|([ \t]*\d+)') + self.pragma_pattern = re.compile(r'[ \t]*pragma\W') + + def build(self, **kwargs): + """ Builds the lexer from the specification. Must be + called after the lexer object is created. + + This method exists separately, because the PLY + manual warns against calling lex.lex inside + __init__ + """ + self.lexer = lex.lex(object=self, **kwargs) + + def reset_lineno(self): + """ Resets the internal line number counter of the lexer. + """ + self.lexer.lineno = 1 + + def input(self, text): + self.lexer.input(text) + + def token(self): + self.last_token = self.lexer.token() + return self.last_token + + def find_tok_column(self, token): + """ Find the column of the token in its line. + """ + last_cr = self.lexer.lexdata.rfind('\n', 0, token.lexpos) + return token.lexpos - last_cr + + ######################-- PRIVATE --###################### + + ## + ## Internal auxiliary methods + ## + def _error(self, msg, token): + location = self._make_tok_location(token) + self.error_func(msg, location[0], location[1]) + self.lexer.skip(1) + + def _make_tok_location(self, token): + return (token.lineno, self.find_tok_column(token)) + + ## + ## Reserved keywords + ## + keywords = ( + 'AUTO', 'BREAK', 'CASE', 'CHAR', 'CONST', + 'CONTINUE', 'DEFAULT', 'DO', 'DOUBLE', 'ELSE', 'ENUM', 'EXTERN', + 'FLOAT', 'FOR', 'GOTO', 'IF', 'INLINE', 'INT', 'LONG', + 'REGISTER', 'OFFSETOF', + 'RESTRICT', 'RETURN', 'SHORT', 'SIGNED', 'SIZEOF', 'STATIC', 'STRUCT', + 'SWITCH', 'TYPEDEF', 'UNION', 'UNSIGNED', 'VOID', + 'VOLATILE', 'WHILE', '__INT128', + ) + + keywords_new = ( + '_BOOL', '_COMPLEX', + '_NORETURN', '_THREAD_LOCAL', '_STATIC_ASSERT', + '_ATOMIC', '_ALIGNOF', '_ALIGNAS', + '_PRAGMA', + ) + + keyword_map = {} + + for keyword in keywords: + keyword_map[keyword.lower()] = keyword + + for keyword in keywords_new: + keyword_map[keyword[:2].upper() + keyword[2:].lower()] = keyword + + ## + ## All the tokens recognized by the lexer + ## + tokens = keywords + keywords_new + ( + # Identifiers + 'ID', + + # Type identifiers (identifiers previously defined as + # types with typedef) + 'TYPEID', + + # constants + 'INT_CONST_DEC', 'INT_CONST_OCT', 'INT_CONST_HEX', 'INT_CONST_BIN', 'INT_CONST_CHAR', + 'FLOAT_CONST', 'HEX_FLOAT_CONST', + 'CHAR_CONST', + 'WCHAR_CONST', + 'U8CHAR_CONST', + 'U16CHAR_CONST', + 'U32CHAR_CONST', + + # String literals + 'STRING_LITERAL', + 'WSTRING_LITERAL', + 'U8STRING_LITERAL', + 'U16STRING_LITERAL', + 'U32STRING_LITERAL', + + # Operators + 'PLUS', 'MINUS', 'TIMES', 'DIVIDE', 'MOD', + 'OR', 'AND', 'NOT', 'XOR', 'LSHIFT', 'RSHIFT', + 'LOR', 'LAND', 'LNOT', + 'LT', 'LE', 'GT', 'GE', 'EQ', 'NE', + + # Assignment + 'EQUALS', 'TIMESEQUAL', 'DIVEQUAL', 'MODEQUAL', + 'PLUSEQUAL', 'MINUSEQUAL', + 'LSHIFTEQUAL','RSHIFTEQUAL', 'ANDEQUAL', 'XOREQUAL', + 'OREQUAL', + + # Increment/decrement + 'PLUSPLUS', 'MINUSMINUS', + + # Structure dereference (->) + 'ARROW', + + # Conditional operator (?) + 'CONDOP', + + # Delimiters + 'LPAREN', 'RPAREN', # ( ) + 'LBRACKET', 'RBRACKET', # [ ] + 'LBRACE', 'RBRACE', # { } + 'COMMA', 'PERIOD', # . , + 'SEMI', 'COLON', # ; : + + # Ellipsis (...) + 'ELLIPSIS', + + # pre-processor + 'PPHASH', # '#' + 'PPPRAGMA', # 'pragma' + 'PPPRAGMASTR', + ) + + ## + ## Regexes for use in tokens + ## + ## + + # valid C identifiers (K&R2: A.2.3), plus '$' (supported by some compilers) + identifier = r'[a-zA-Z_$][0-9a-zA-Z_$]*' + + hex_prefix = '0[xX]' + hex_digits = '[0-9a-fA-F]+' + bin_prefix = '0[bB]' + bin_digits = '[01]+' + + # integer constants (K&R2: A.2.5.1) + integer_suffix_opt = r'(([uU]ll)|([uU]LL)|(ll[uU]?)|(LL[uU]?)|([uU][lL])|([lL][uU]?)|[uU])?' + decimal_constant = '(0'+integer_suffix_opt+')|([1-9][0-9]*'+integer_suffix_opt+')' + octal_constant = '0[0-7]*'+integer_suffix_opt + hex_constant = hex_prefix+hex_digits+integer_suffix_opt + bin_constant = bin_prefix+bin_digits+integer_suffix_opt + + bad_octal_constant = '0[0-7]*[89]' + + # character constants (K&R2: A.2.5.2) + # Note: a-zA-Z and '.-~^_!=&;,' are allowed as escape chars to support #line + # directives with Windows paths as filenames (..\..\dir\file) + # For the same reason, decimal_escape allows all digit sequences. We want to + # parse all correct code, even if it means to sometimes parse incorrect + # code. + # + # The original regexes were taken verbatim from the C syntax definition, + # and were later modified to avoid worst-case exponential running time. + # + # simple_escape = r"""([a-zA-Z._~!=&\^\-\\?'"])""" + # decimal_escape = r"""(\d+)""" + # hex_escape = r"""(x[0-9a-fA-F]+)""" + # bad_escape = r"""([\\][^a-zA-Z._~^!=&\^\-\\?'"x0-7])""" + # + # The following modifications were made to avoid the ambiguity that allowed backtracking: + # (https://github.com/eliben/pycparser/issues/61) + # + # - \x was removed from simple_escape, unless it was not followed by a hex digit, to avoid ambiguity with hex_escape. + # - hex_escape allows one or more hex characters, but requires that the next character(if any) is not hex + # - decimal_escape allows one or more decimal characters, but requires that the next character(if any) is not a decimal + # - bad_escape does not allow any decimals (8-9), to avoid conflicting with the permissive decimal_escape. + # + # Without this change, python's `re` module would recursively try parsing each ambiguous escape sequence in multiple ways. + # e.g. `\123` could be parsed as `\1`+`23`, `\12`+`3`, and `\123`. + + simple_escape = r"""([a-wyzA-Z._~!=&\^\-\\?'"]|x(?![0-9a-fA-F]))""" + decimal_escape = r"""(\d+)(?!\d)""" + hex_escape = r"""(x[0-9a-fA-F]+)(?![0-9a-fA-F])""" + bad_escape = r"""([\\][^a-zA-Z._~^!=&\^\-\\?'"x0-9])""" + + escape_sequence = r"""(\\("""+simple_escape+'|'+decimal_escape+'|'+hex_escape+'))' + + # This complicated regex with lookahead might be slow for strings, so because all of the valid escapes (including \x) allowed + # 0 or more non-escaped characters after the first character, simple_escape+decimal_escape+hex_escape got simplified to + + escape_sequence_start_in_string = r"""(\\[0-9a-zA-Z._~!=&\^\-\\?'"])""" + + cconst_char = r"""([^'\\\n]|"""+escape_sequence+')' + char_const = "'"+cconst_char+"'" + wchar_const = 'L'+char_const + u8char_const = 'u8'+char_const + u16char_const = 'u'+char_const + u32char_const = 'U'+char_const + multicharacter_constant = "'"+cconst_char+"{2,4}'" + unmatched_quote = "('"+cconst_char+"*\\n)|('"+cconst_char+"*$)" + bad_char_const = r"""('"""+cconst_char+"""[^'\n]+')|('')|('"""+bad_escape+r"""[^'\n]*')""" + + # string literals (K&R2: A.2.6) + string_char = r"""([^"\\\n]|"""+escape_sequence_start_in_string+')' + string_literal = '"'+string_char+'*"' + wstring_literal = 'L'+string_literal + u8string_literal = 'u8'+string_literal + u16string_literal = 'u'+string_literal + u32string_literal = 'U'+string_literal + bad_string_literal = '"'+string_char+'*'+bad_escape+string_char+'*"' + + # floating constants (K&R2: A.2.5.3) + exponent_part = r"""([eE][-+]?[0-9]+)""" + fractional_constant = r"""([0-9]*\.[0-9]+)|([0-9]+\.)""" + floating_constant = '(((('+fractional_constant+')'+exponent_part+'?)|([0-9]+'+exponent_part+'))[FfLl]?)' + binary_exponent_part = r'''([pP][+-]?[0-9]+)''' + hex_fractional_constant = '((('+hex_digits+r""")?\."""+hex_digits+')|('+hex_digits+r"""\.))""" + hex_floating_constant = '('+hex_prefix+'('+hex_digits+'|'+hex_fractional_constant+')'+binary_exponent_part+'[FfLl]?)' + + ## + ## Lexer states: used for preprocessor \n-terminated directives + ## + states = ( + # ppline: preprocessor line directives + # + ('ppline', 'exclusive'), + + # pppragma: pragma + # + ('pppragma', 'exclusive'), + ) + + def t_PPHASH(self, t): + r'[ \t]*\#' + if self.line_pattern.match(t.lexer.lexdata, pos=t.lexer.lexpos): + t.lexer.begin('ppline') + self.pp_line = self.pp_filename = None + elif self.pragma_pattern.match(t.lexer.lexdata, pos=t.lexer.lexpos): + t.lexer.begin('pppragma') + else: + t.type = 'PPHASH' + return t + + ## + ## Rules for the ppline state + ## + @TOKEN(string_literal) + def t_ppline_FILENAME(self, t): + if self.pp_line is None: + self._error('filename before line number in #line', t) + else: + self.pp_filename = t.value.lstrip('"').rstrip('"') + + @TOKEN(decimal_constant) + def t_ppline_LINE_NUMBER(self, t): + if self.pp_line is None: + self.pp_line = t.value + else: + # Ignore: GCC's cpp sometimes inserts a numeric flag + # after the file name + pass + + def t_ppline_NEWLINE(self, t): + r'\n' + if self.pp_line is None: + self._error('line number missing in #line', t) + else: + self.lexer.lineno = int(self.pp_line) + + if self.pp_filename is not None: + self.filename = self.pp_filename + + t.lexer.begin('INITIAL') + + def t_ppline_PPLINE(self, t): + r'line' + pass + + t_ppline_ignore = ' \t' + + def t_ppline_error(self, t): + self._error('invalid #line directive', t) + + ## + ## Rules for the pppragma state + ## + def t_pppragma_NEWLINE(self, t): + r'\n' + t.lexer.lineno += 1 + t.lexer.begin('INITIAL') + + def t_pppragma_PPPRAGMA(self, t): + r'pragma' + return t + + t_pppragma_ignore = ' \t' + + def t_pppragma_STR(self, t): + '.+' + t.type = 'PPPRAGMASTR' + return t + + def t_pppragma_error(self, t): + self._error('invalid #pragma directive', t) + + ## + ## Rules for the normal state + ## + t_ignore = ' \t' + + # Newlines + def t_NEWLINE(self, t): + r'\n+' + t.lexer.lineno += t.value.count("\n") + + # Operators + t_PLUS = r'\+' + t_MINUS = r'-' + t_TIMES = r'\*' + t_DIVIDE = r'/' + t_MOD = r'%' + t_OR = r'\|' + t_AND = r'&' + t_NOT = r'~' + t_XOR = r'\^' + t_LSHIFT = r'<<' + t_RSHIFT = r'>>' + t_LOR = r'\|\|' + t_LAND = r'&&' + t_LNOT = r'!' + t_LT = r'<' + t_GT = r'>' + t_LE = r'<=' + t_GE = r'>=' + t_EQ = r'==' + t_NE = r'!=' + + # Assignment operators + t_EQUALS = r'=' + t_TIMESEQUAL = r'\*=' + t_DIVEQUAL = r'/=' + t_MODEQUAL = r'%=' + t_PLUSEQUAL = r'\+=' + t_MINUSEQUAL = r'-=' + t_LSHIFTEQUAL = r'<<=' + t_RSHIFTEQUAL = r'>>=' + t_ANDEQUAL = r'&=' + t_OREQUAL = r'\|=' + t_XOREQUAL = r'\^=' + + # Increment/decrement + t_PLUSPLUS = r'\+\+' + t_MINUSMINUS = r'--' + + # -> + t_ARROW = r'->' + + # ? + t_CONDOP = r'\?' + + # Delimiters + t_LPAREN = r'\(' + t_RPAREN = r'\)' + t_LBRACKET = r'\[' + t_RBRACKET = r'\]' + t_COMMA = r',' + t_PERIOD = r'\.' + t_SEMI = r';' + t_COLON = r':' + t_ELLIPSIS = r'\.\.\.' + + # Scope delimiters + # To see why on_lbrace_func is needed, consider: + # typedef char TT; + # void foo(int TT) { TT = 10; } + # TT x = 5; + # Outside the function, TT is a typedef, but inside (starting and ending + # with the braces) it's a parameter. The trouble begins with yacc's + # lookahead token. If we open a new scope in brace_open, then TT has + # already been read and incorrectly interpreted as TYPEID. So, we need + # to open and close scopes from within the lexer. + # Similar for the TT immediately outside the end of the function. + # + @TOKEN(r'\{') + def t_LBRACE(self, t): + self.on_lbrace_func() + return t + @TOKEN(r'\}') + def t_RBRACE(self, t): + self.on_rbrace_func() + return t + + t_STRING_LITERAL = string_literal + + # The following floating and integer constants are defined as + # functions to impose a strict order (otherwise, decimal + # is placed before the others because its regex is longer, + # and this is bad) + # + @TOKEN(floating_constant) + def t_FLOAT_CONST(self, t): + return t + + @TOKEN(hex_floating_constant) + def t_HEX_FLOAT_CONST(self, t): + return t + + @TOKEN(hex_constant) + def t_INT_CONST_HEX(self, t): + return t + + @TOKEN(bin_constant) + def t_INT_CONST_BIN(self, t): + return t + + @TOKEN(bad_octal_constant) + def t_BAD_CONST_OCT(self, t): + msg = "Invalid octal constant" + self._error(msg, t) + + @TOKEN(octal_constant) + def t_INT_CONST_OCT(self, t): + return t + + @TOKEN(decimal_constant) + def t_INT_CONST_DEC(self, t): + return t + + # Must come before bad_char_const, to prevent it from + # catching valid char constants as invalid + # + @TOKEN(multicharacter_constant) + def t_INT_CONST_CHAR(self, t): + return t + + @TOKEN(char_const) + def t_CHAR_CONST(self, t): + return t + + @TOKEN(wchar_const) + def t_WCHAR_CONST(self, t): + return t + + @TOKEN(u8char_const) + def t_U8CHAR_CONST(self, t): + return t + + @TOKEN(u16char_const) + def t_U16CHAR_CONST(self, t): + return t + + @TOKEN(u32char_const) + def t_U32CHAR_CONST(self, t): + return t + + @TOKEN(unmatched_quote) + def t_UNMATCHED_QUOTE(self, t): + msg = "Unmatched '" + self._error(msg, t) + + @TOKEN(bad_char_const) + def t_BAD_CHAR_CONST(self, t): + msg = "Invalid char constant %s" % t.value + self._error(msg, t) + + @TOKEN(wstring_literal) + def t_WSTRING_LITERAL(self, t): + return t + + @TOKEN(u8string_literal) + def t_U8STRING_LITERAL(self, t): + return t + + @TOKEN(u16string_literal) + def t_U16STRING_LITERAL(self, t): + return t + + @TOKEN(u32string_literal) + def t_U32STRING_LITERAL(self, t): + return t + + # unmatched string literals are caught by the preprocessor + + @TOKEN(bad_string_literal) + def t_BAD_STRING_LITERAL(self, t): + msg = "String contains invalid escape code" + self._error(msg, t) + + @TOKEN(identifier) + def t_ID(self, t): + t.type = self.keyword_map.get(t.value, "ID") + if t.type == 'ID' and self.type_lookup_func(t.value): + t.type = "TYPEID" + return t + + def t_error(self, t): + msg = 'Illegal character %s' % repr(t.value[0]) + self._error(msg, t) diff --git a/gestao_raul/Lib/site-packages/pycparser/c_parser.py b/gestao_raul/Lib/site-packages/pycparser/c_parser.py new file mode 100644 index 0000000..d31574a --- /dev/null +++ b/gestao_raul/Lib/site-packages/pycparser/c_parser.py @@ -0,0 +1,1950 @@ +#------------------------------------------------------------------------------ +# pycparser: c_parser.py +# +# CParser class: Parser and AST builder for the C language +# +# Eli Bendersky [https://eli.thegreenplace.net/] +# License: BSD +#------------------------------------------------------------------------------ +from .ply import yacc + +from . import c_ast +from .c_lexer import CLexer +from .plyparser import PLYParser, ParseError, parameterized, template +from .ast_transforms import fix_switch_cases, fix_atomic_specifiers + + +@template +class CParser(PLYParser): + def __init__( + self, + lex_optimize=True, + lexer=CLexer, + lextab='pycparser.lextab', + yacc_optimize=True, + yacctab='pycparser.yacctab', + yacc_debug=False, + taboutputdir=''): + """ Create a new CParser. + + Some arguments for controlling the debug/optimization + level of the parser are provided. The defaults are + tuned for release/performance mode. + The simple rules for using them are: + *) When tweaking CParser/CLexer, set these to False + *) When releasing a stable parser, set to True + + lex_optimize: + Set to False when you're modifying the lexer. + Otherwise, changes in the lexer won't be used, if + some lextab.py file exists. + When releasing with a stable lexer, set to True + to save the re-generation of the lexer table on + each run. + + lexer: + Set this parameter to define the lexer to use if + you're not using the default CLexer. + + lextab: + Points to the lex table that's used for optimized + mode. Only if you're modifying the lexer and want + some tests to avoid re-generating the table, make + this point to a local lex table file (that's been + earlier generated with lex_optimize=True) + + yacc_optimize: + Set to False when you're modifying the parser. + Otherwise, changes in the parser won't be used, if + some parsetab.py file exists. + When releasing with a stable parser, set to True + to save the re-generation of the parser table on + each run. + + yacctab: + Points to the yacc table that's used for optimized + mode. Only if you're modifying the parser, make + this point to a local yacc table file + + yacc_debug: + Generate a parser.out file that explains how yacc + built the parsing table from the grammar. + + taboutputdir: + Set this parameter to control the location of generated + lextab and yacctab files. + """ + self.clex = lexer( + error_func=self._lex_error_func, + on_lbrace_func=self._lex_on_lbrace_func, + on_rbrace_func=self._lex_on_rbrace_func, + type_lookup_func=self._lex_type_lookup_func) + + self.clex.build( + optimize=lex_optimize, + lextab=lextab, + outputdir=taboutputdir) + self.tokens = self.clex.tokens + + rules_with_opt = [ + 'abstract_declarator', + 'assignment_expression', + 'declaration_list', + 'declaration_specifiers_no_type', + 'designation', + 'expression', + 'identifier_list', + 'init_declarator_list', + 'id_init_declarator_list', + 'initializer_list', + 'parameter_type_list', + 'block_item_list', + 'type_qualifier_list', + 'struct_declarator_list' + ] + + for rule in rules_with_opt: + self._create_opt_rule(rule) + + self.cparser = yacc.yacc( + module=self, + start='translation_unit_or_empty', + debug=yacc_debug, + optimize=yacc_optimize, + tabmodule=yacctab, + outputdir=taboutputdir) + + # Stack of scopes for keeping track of symbols. _scope_stack[-1] is + # the current (topmost) scope. Each scope is a dictionary that + # specifies whether a name is a type. If _scope_stack[n][name] is + # True, 'name' is currently a type in the scope. If it's False, + # 'name' is used in the scope but not as a type (for instance, if we + # saw: int name; + # If 'name' is not a key in _scope_stack[n] then 'name' was not defined + # in this scope at all. + self._scope_stack = [dict()] + + # Keeps track of the last token given to yacc (the lookahead token) + self._last_yielded_token = None + + def parse(self, text, filename='', debug=False): + """ Parses C code and returns an AST. + + text: + A string containing the C source code + + filename: + Name of the file being parsed (for meaningful + error messages) + + debug: + Debug flag to YACC + """ + self.clex.filename = filename + self.clex.reset_lineno() + self._scope_stack = [dict()] + self._last_yielded_token = None + return self.cparser.parse( + input=text, + lexer=self.clex, + debug=debug) + + ######################-- PRIVATE --###################### + + def _push_scope(self): + self._scope_stack.append(dict()) + + def _pop_scope(self): + assert len(self._scope_stack) > 1 + self._scope_stack.pop() + + def _add_typedef_name(self, name, coord): + """ Add a new typedef name (ie a TYPEID) to the current scope + """ + if not self._scope_stack[-1].get(name, True): + self._parse_error( + "Typedef %r previously declared as non-typedef " + "in this scope" % name, coord) + self._scope_stack[-1][name] = True + + def _add_identifier(self, name, coord): + """ Add a new object, function, or enum member name (ie an ID) to the + current scope + """ + if self._scope_stack[-1].get(name, False): + self._parse_error( + "Non-typedef %r previously declared as typedef " + "in this scope" % name, coord) + self._scope_stack[-1][name] = False + + def _is_type_in_scope(self, name): + """ Is *name* a typedef-name in the current scope? + """ + for scope in reversed(self._scope_stack): + # If name is an identifier in this scope it shadows typedefs in + # higher scopes. + in_scope = scope.get(name) + if in_scope is not None: return in_scope + return False + + def _lex_error_func(self, msg, line, column): + self._parse_error(msg, self._coord(line, column)) + + def _lex_on_lbrace_func(self): + self._push_scope() + + def _lex_on_rbrace_func(self): + self._pop_scope() + + def _lex_type_lookup_func(self, name): + """ Looks up types that were previously defined with + typedef. + Passed to the lexer for recognizing identifiers that + are types. + """ + is_type = self._is_type_in_scope(name) + return is_type + + def _get_yacc_lookahead_token(self): + """ We need access to yacc's lookahead token in certain cases. + This is the last token yacc requested from the lexer, so we + ask the lexer. + """ + return self.clex.last_token + + # To understand what's going on here, read sections A.8.5 and + # A.8.6 of K&R2 very carefully. + # + # A C type consists of a basic type declaration, with a list + # of modifiers. For example: + # + # int *c[5]; + # + # The basic declaration here is 'int c', and the pointer and + # the array are the modifiers. + # + # Basic declarations are represented by TypeDecl (from module c_ast) and the + # modifiers are FuncDecl, PtrDecl and ArrayDecl. + # + # The standard states that whenever a new modifier is parsed, it should be + # added to the end of the list of modifiers. For example: + # + # K&R2 A.8.6.2: Array Declarators + # + # In a declaration T D where D has the form + # D1 [constant-expression-opt] + # and the type of the identifier in the declaration T D1 is + # "type-modifier T", the type of the + # identifier of D is "type-modifier array of T" + # + # This is what this method does. The declarator it receives + # can be a list of declarators ending with TypeDecl. It + # tacks the modifier to the end of this list, just before + # the TypeDecl. + # + # Additionally, the modifier may be a list itself. This is + # useful for pointers, that can come as a chain from the rule + # p_pointer. In this case, the whole modifier list is spliced + # into the new location. + def _type_modify_decl(self, decl, modifier): + """ Tacks a type modifier on a declarator, and returns + the modified declarator. + + Note: the declarator and modifier may be modified + """ + #~ print '****' + #~ decl.show(offset=3) + #~ modifier.show(offset=3) + #~ print '****' + + modifier_head = modifier + modifier_tail = modifier + + # The modifier may be a nested list. Reach its tail. + while modifier_tail.type: + modifier_tail = modifier_tail.type + + # If the decl is a basic type, just tack the modifier onto it. + if isinstance(decl, c_ast.TypeDecl): + modifier_tail.type = decl + return modifier + else: + # Otherwise, the decl is a list of modifiers. Reach + # its tail and splice the modifier onto the tail, + # pointing to the underlying basic type. + decl_tail = decl + + while not isinstance(decl_tail.type, c_ast.TypeDecl): + decl_tail = decl_tail.type + + modifier_tail.type = decl_tail.type + decl_tail.type = modifier_head + return decl + + # Due to the order in which declarators are constructed, + # they have to be fixed in order to look like a normal AST. + # + # When a declaration arrives from syntax construction, it has + # these problems: + # * The innermost TypeDecl has no type (because the basic + # type is only known at the uppermost declaration level) + # * The declaration has no variable name, since that is saved + # in the innermost TypeDecl + # * The typename of the declaration is a list of type + # specifiers, and not a node. Here, basic identifier types + # should be separated from more complex types like enums + # and structs. + # + # This method fixes these problems. + def _fix_decl_name_type(self, decl, typename): + """ Fixes a declaration. Modifies decl. + """ + # Reach the underlying basic type + # + type = decl + while not isinstance(type, c_ast.TypeDecl): + type = type.type + + decl.name = type.declname + type.quals = decl.quals[:] + + # The typename is a list of types. If any type in this + # list isn't an IdentifierType, it must be the only + # type in the list (it's illegal to declare "int enum ..") + # If all the types are basic, they're collected in the + # IdentifierType holder. + for tn in typename: + if not isinstance(tn, c_ast.IdentifierType): + if len(typename) > 1: + self._parse_error( + "Invalid multiple types specified", tn.coord) + else: + type.type = tn + return decl + + if not typename: + # Functions default to returning int + # + if not isinstance(decl.type, c_ast.FuncDecl): + self._parse_error( + "Missing type in declaration", decl.coord) + type.type = c_ast.IdentifierType( + ['int'], + coord=decl.coord) + else: + # At this point, we know that typename is a list of IdentifierType + # nodes. Concatenate all the names into a single list. + # + type.type = c_ast.IdentifierType( + [name for id in typename for name in id.names], + coord=typename[0].coord) + return decl + + def _add_declaration_specifier(self, declspec, newspec, kind, append=False): + """ Declaration specifiers are represented by a dictionary + with the entries: + * qual: a list of type qualifiers + * storage: a list of storage type qualifiers + * type: a list of type specifiers + * function: a list of function specifiers + * alignment: a list of alignment specifiers + + This method is given a declaration specifier, and a + new specifier of a given kind. + If `append` is True, the new specifier is added to the end of + the specifiers list, otherwise it's added at the beginning. + Returns the declaration specifier, with the new + specifier incorporated. + """ + spec = declspec or dict(qual=[], storage=[], type=[], function=[], alignment=[]) + + if append: + spec[kind].append(newspec) + else: + spec[kind].insert(0, newspec) + + return spec + + def _build_declarations(self, spec, decls, typedef_namespace=False): + """ Builds a list of declarations all sharing the given specifiers. + If typedef_namespace is true, each declared name is added + to the "typedef namespace", which also includes objects, + functions, and enum constants. + """ + is_typedef = 'typedef' in spec['storage'] + declarations = [] + + # Bit-fields are allowed to be unnamed. + if decls[0].get('bitsize') is not None: + pass + + # When redeclaring typedef names as identifiers in inner scopes, a + # problem can occur where the identifier gets grouped into + # spec['type'], leaving decl as None. This can only occur for the + # first declarator. + elif decls[0]['decl'] is None: + if len(spec['type']) < 2 or len(spec['type'][-1].names) != 1 or \ + not self._is_type_in_scope(spec['type'][-1].names[0]): + coord = '?' + for t in spec['type']: + if hasattr(t, 'coord'): + coord = t.coord + break + self._parse_error('Invalid declaration', coord) + + # Make this look as if it came from "direct_declarator:ID" + decls[0]['decl'] = c_ast.TypeDecl( + declname=spec['type'][-1].names[0], + type=None, + quals=None, + align=spec['alignment'], + coord=spec['type'][-1].coord) + # Remove the "new" type's name from the end of spec['type'] + del spec['type'][-1] + + # A similar problem can occur where the declaration ends up looking + # like an abstract declarator. Give it a name if this is the case. + elif not isinstance(decls[0]['decl'], ( + c_ast.Enum, c_ast.Struct, c_ast.Union, c_ast.IdentifierType)): + decls_0_tail = decls[0]['decl'] + while not isinstance(decls_0_tail, c_ast.TypeDecl): + decls_0_tail = decls_0_tail.type + if decls_0_tail.declname is None: + decls_0_tail.declname = spec['type'][-1].names[0] + del spec['type'][-1] + + for decl in decls: + assert decl['decl'] is not None + if is_typedef: + declaration = c_ast.Typedef( + name=None, + quals=spec['qual'], + storage=spec['storage'], + type=decl['decl'], + coord=decl['decl'].coord) + else: + declaration = c_ast.Decl( + name=None, + quals=spec['qual'], + align=spec['alignment'], + storage=spec['storage'], + funcspec=spec['function'], + type=decl['decl'], + init=decl.get('init'), + bitsize=decl.get('bitsize'), + coord=decl['decl'].coord) + + if isinstance(declaration.type, ( + c_ast.Enum, c_ast.Struct, c_ast.Union, + c_ast.IdentifierType)): + fixed_decl = declaration + else: + fixed_decl = self._fix_decl_name_type(declaration, spec['type']) + + # Add the type name defined by typedef to a + # symbol table (for usage in the lexer) + if typedef_namespace: + if is_typedef: + self._add_typedef_name(fixed_decl.name, fixed_decl.coord) + else: + self._add_identifier(fixed_decl.name, fixed_decl.coord) + + fixed_decl = fix_atomic_specifiers(fixed_decl) + declarations.append(fixed_decl) + + return declarations + + def _build_function_definition(self, spec, decl, param_decls, body): + """ Builds a function definition. + """ + if 'typedef' in spec['storage']: + self._parse_error("Invalid typedef", decl.coord) + + declaration = self._build_declarations( + spec=spec, + decls=[dict(decl=decl, init=None)], + typedef_namespace=True)[0] + + return c_ast.FuncDef( + decl=declaration, + param_decls=param_decls, + body=body, + coord=decl.coord) + + def _select_struct_union_class(self, token): + """ Given a token (either STRUCT or UNION), selects the + appropriate AST class. + """ + if token == 'struct': + return c_ast.Struct + else: + return c_ast.Union + + ## + ## Precedence and associativity of operators + ## + # If this changes, c_generator.CGenerator.precedence_map needs to change as + # well + precedence = ( + ('left', 'LOR'), + ('left', 'LAND'), + ('left', 'OR'), + ('left', 'XOR'), + ('left', 'AND'), + ('left', 'EQ', 'NE'), + ('left', 'GT', 'GE', 'LT', 'LE'), + ('left', 'RSHIFT', 'LSHIFT'), + ('left', 'PLUS', 'MINUS'), + ('left', 'TIMES', 'DIVIDE', 'MOD') + ) + + ## + ## Grammar productions + ## Implementation of the BNF defined in K&R2 A.13 + ## + + # Wrapper around a translation unit, to allow for empty input. + # Not strictly part of the C99 Grammar, but useful in practice. + def p_translation_unit_or_empty(self, p): + """ translation_unit_or_empty : translation_unit + | empty + """ + if p[1] is None: + p[0] = c_ast.FileAST([]) + else: + p[0] = c_ast.FileAST(p[1]) + + def p_translation_unit_1(self, p): + """ translation_unit : external_declaration + """ + # Note: external_declaration is already a list + p[0] = p[1] + + def p_translation_unit_2(self, p): + """ translation_unit : translation_unit external_declaration + """ + p[1].extend(p[2]) + p[0] = p[1] + + # Declarations always come as lists (because they can be + # several in one line), so we wrap the function definition + # into a list as well, to make the return value of + # external_declaration homogeneous. + def p_external_declaration_1(self, p): + """ external_declaration : function_definition + """ + p[0] = [p[1]] + + def p_external_declaration_2(self, p): + """ external_declaration : declaration + """ + p[0] = p[1] + + def p_external_declaration_3(self, p): + """ external_declaration : pp_directive + | pppragma_directive + """ + p[0] = [p[1]] + + def p_external_declaration_4(self, p): + """ external_declaration : SEMI + """ + p[0] = [] + + def p_external_declaration_5(self, p): + """ external_declaration : static_assert + """ + p[0] = p[1] + + def p_static_assert_declaration(self, p): + """ static_assert : _STATIC_ASSERT LPAREN constant_expression COMMA unified_string_literal RPAREN + | _STATIC_ASSERT LPAREN constant_expression RPAREN + """ + if len(p) == 5: + p[0] = [c_ast.StaticAssert(p[3], None, self._token_coord(p, 1))] + else: + p[0] = [c_ast.StaticAssert(p[3], p[5], self._token_coord(p, 1))] + + def p_pp_directive(self, p): + """ pp_directive : PPHASH + """ + self._parse_error('Directives not supported yet', + self._token_coord(p, 1)) + + # This encompasses two types of C99-compatible pragmas: + # - The #pragma directive: + # # pragma character_sequence + # - The _Pragma unary operator: + # _Pragma ( " string_literal " ) + def p_pppragma_directive(self, p): + """ pppragma_directive : PPPRAGMA + | PPPRAGMA PPPRAGMASTR + | _PRAGMA LPAREN unified_string_literal RPAREN + """ + if len(p) == 5: + p[0] = c_ast.Pragma(p[3], self._token_coord(p, 2)) + elif len(p) == 3: + p[0] = c_ast.Pragma(p[2], self._token_coord(p, 2)) + else: + p[0] = c_ast.Pragma("", self._token_coord(p, 1)) + + def p_pppragma_directive_list(self, p): + """ pppragma_directive_list : pppragma_directive + | pppragma_directive_list pppragma_directive + """ + p[0] = [p[1]] if len(p) == 2 else p[1] + [p[2]] + + # In function definitions, the declarator can be followed by + # a declaration list, for old "K&R style" function definitios. + def p_function_definition_1(self, p): + """ function_definition : id_declarator declaration_list_opt compound_statement + """ + # no declaration specifiers - 'int' becomes the default type + spec = dict( + qual=[], + alignment=[], + storage=[], + type=[c_ast.IdentifierType(['int'], + coord=self._token_coord(p, 1))], + function=[]) + + p[0] = self._build_function_definition( + spec=spec, + decl=p[1], + param_decls=p[2], + body=p[3]) + + def p_function_definition_2(self, p): + """ function_definition : declaration_specifiers id_declarator declaration_list_opt compound_statement + """ + spec = p[1] + + p[0] = self._build_function_definition( + spec=spec, + decl=p[2], + param_decls=p[3], + body=p[4]) + + # Note, according to C18 A.2.2 6.7.10 static_assert-declaration _Static_assert + # is a declaration, not a statement. We additionally recognise it as a statement + # to fix parsing of _Static_assert inside the functions. + # + def p_statement(self, p): + """ statement : labeled_statement + | expression_statement + | compound_statement + | selection_statement + | iteration_statement + | jump_statement + | pppragma_directive + | static_assert + """ + p[0] = p[1] + + # A pragma is generally considered a decorator rather than an actual + # statement. Still, for the purposes of analyzing an abstract syntax tree of + # C code, pragma's should not be ignored and were previously treated as a + # statement. This presents a problem for constructs that take a statement + # such as labeled_statements, selection_statements, and + # iteration_statements, causing a misleading structure in the AST. For + # example, consider the following C code. + # + # for (int i = 0; i < 3; i++) + # #pragma omp critical + # sum += 1; + # + # This code will compile and execute "sum += 1;" as the body of the for + # loop. Previous implementations of PyCParser would render the AST for this + # block of code as follows: + # + # For: + # DeclList: + # Decl: i, [], [], [] + # TypeDecl: i, [] + # IdentifierType: ['int'] + # Constant: int, 0 + # BinaryOp: < + # ID: i + # Constant: int, 3 + # UnaryOp: p++ + # ID: i + # Pragma: omp critical + # Assignment: += + # ID: sum + # Constant: int, 1 + # + # This AST misleadingly takes the Pragma as the body of the loop and the + # assignment then becomes a sibling of the loop. + # + # To solve edge cases like these, the pragmacomp_or_statement rule groups + # a pragma and its following statement (which would otherwise be orphaned) + # using a compound block, effectively turning the above code into: + # + # for (int i = 0; i < 3; i++) { + # #pragma omp critical + # sum += 1; + # } + def p_pragmacomp_or_statement(self, p): + """ pragmacomp_or_statement : pppragma_directive_list statement + | statement + """ + if len(p) == 3: + p[0] = c_ast.Compound( + block_items=p[1]+[p[2]], + coord=self._token_coord(p, 1)) + else: + p[0] = p[1] + + # In C, declarations can come several in a line: + # int x, *px, romulo = 5; + # + # However, for the AST, we will split them to separate Decl + # nodes. + # + # This rule splits its declarations and always returns a list + # of Decl nodes, even if it's one element long. + # + def p_decl_body(self, p): + """ decl_body : declaration_specifiers init_declarator_list_opt + | declaration_specifiers_no_type id_init_declarator_list_opt + """ + spec = p[1] + + # p[2] (init_declarator_list_opt) is either a list or None + # + if p[2] is None: + # By the standard, you must have at least one declarator unless + # declaring a structure tag, a union tag, or the members of an + # enumeration. + # + ty = spec['type'] + s_u_or_e = (c_ast.Struct, c_ast.Union, c_ast.Enum) + if len(ty) == 1 and isinstance(ty[0], s_u_or_e): + decls = [c_ast.Decl( + name=None, + quals=spec['qual'], + align=spec['alignment'], + storage=spec['storage'], + funcspec=spec['function'], + type=ty[0], + init=None, + bitsize=None, + coord=ty[0].coord)] + + # However, this case can also occur on redeclared identifiers in + # an inner scope. The trouble is that the redeclared type's name + # gets grouped into declaration_specifiers; _build_declarations + # compensates for this. + # + else: + decls = self._build_declarations( + spec=spec, + decls=[dict(decl=None, init=None)], + typedef_namespace=True) + + else: + decls = self._build_declarations( + spec=spec, + decls=p[2], + typedef_namespace=True) + + p[0] = decls + + # The declaration has been split to a decl_body sub-rule and + # SEMI, because having them in a single rule created a problem + # for defining typedefs. + # + # If a typedef line was directly followed by a line using the + # type defined with the typedef, the type would not be + # recognized. This is because to reduce the declaration rule, + # the parser's lookahead asked for the token after SEMI, which + # was the type from the next line, and the lexer had no chance + # to see the updated type symbol table. + # + # Splitting solves this problem, because after seeing SEMI, + # the parser reduces decl_body, which actually adds the new + # type into the table to be seen by the lexer before the next + # line is reached. + def p_declaration(self, p): + """ declaration : decl_body SEMI + """ + p[0] = p[1] + + # Since each declaration is a list of declarations, this + # rule will combine all the declarations and return a single + # list + # + def p_declaration_list(self, p): + """ declaration_list : declaration + | declaration_list declaration + """ + p[0] = p[1] if len(p) == 2 else p[1] + p[2] + + # To know when declaration-specifiers end and declarators begin, + # we require declaration-specifiers to have at least one + # type-specifier, and disallow typedef-names after we've seen any + # type-specifier. These are both required by the spec. + # + def p_declaration_specifiers_no_type_1(self, p): + """ declaration_specifiers_no_type : type_qualifier declaration_specifiers_no_type_opt + """ + p[0] = self._add_declaration_specifier(p[2], p[1], 'qual') + + def p_declaration_specifiers_no_type_2(self, p): + """ declaration_specifiers_no_type : storage_class_specifier declaration_specifiers_no_type_opt + """ + p[0] = self._add_declaration_specifier(p[2], p[1], 'storage') + + def p_declaration_specifiers_no_type_3(self, p): + """ declaration_specifiers_no_type : function_specifier declaration_specifiers_no_type_opt + """ + p[0] = self._add_declaration_specifier(p[2], p[1], 'function') + + # Without this, `typedef _Atomic(T) U` will parse incorrectly because the + # _Atomic qualifier will match, instead of the specifier. + def p_declaration_specifiers_no_type_4(self, p): + """ declaration_specifiers_no_type : atomic_specifier declaration_specifiers_no_type_opt + """ + p[0] = self._add_declaration_specifier(p[2], p[1], 'type') + + def p_declaration_specifiers_no_type_5(self, p): + """ declaration_specifiers_no_type : alignment_specifier declaration_specifiers_no_type_opt + """ + p[0] = self._add_declaration_specifier(p[2], p[1], 'alignment') + + def p_declaration_specifiers_1(self, p): + """ declaration_specifiers : declaration_specifiers type_qualifier + """ + p[0] = self._add_declaration_specifier(p[1], p[2], 'qual', append=True) + + def p_declaration_specifiers_2(self, p): + """ declaration_specifiers : declaration_specifiers storage_class_specifier + """ + p[0] = self._add_declaration_specifier(p[1], p[2], 'storage', append=True) + + def p_declaration_specifiers_3(self, p): + """ declaration_specifiers : declaration_specifiers function_specifier + """ + p[0] = self._add_declaration_specifier(p[1], p[2], 'function', append=True) + + def p_declaration_specifiers_4(self, p): + """ declaration_specifiers : declaration_specifiers type_specifier_no_typeid + """ + p[0] = self._add_declaration_specifier(p[1], p[2], 'type', append=True) + + def p_declaration_specifiers_5(self, p): + """ declaration_specifiers : type_specifier + """ + p[0] = self._add_declaration_specifier(None, p[1], 'type') + + def p_declaration_specifiers_6(self, p): + """ declaration_specifiers : declaration_specifiers_no_type type_specifier + """ + p[0] = self._add_declaration_specifier(p[1], p[2], 'type', append=True) + + def p_declaration_specifiers_7(self, p): + """ declaration_specifiers : declaration_specifiers alignment_specifier + """ + p[0] = self._add_declaration_specifier(p[1], p[2], 'alignment', append=True) + + def p_storage_class_specifier(self, p): + """ storage_class_specifier : AUTO + | REGISTER + | STATIC + | EXTERN + | TYPEDEF + | _THREAD_LOCAL + """ + p[0] = p[1] + + def p_function_specifier(self, p): + """ function_specifier : INLINE + | _NORETURN + """ + p[0] = p[1] + + def p_type_specifier_no_typeid(self, p): + """ type_specifier_no_typeid : VOID + | _BOOL + | CHAR + | SHORT + | INT + | LONG + | FLOAT + | DOUBLE + | _COMPLEX + | SIGNED + | UNSIGNED + | __INT128 + """ + p[0] = c_ast.IdentifierType([p[1]], coord=self._token_coord(p, 1)) + + def p_type_specifier(self, p): + """ type_specifier : typedef_name + | enum_specifier + | struct_or_union_specifier + | type_specifier_no_typeid + | atomic_specifier + """ + p[0] = p[1] + + # See section 6.7.2.4 of the C11 standard. + def p_atomic_specifier(self, p): + """ atomic_specifier : _ATOMIC LPAREN type_name RPAREN + """ + typ = p[3] + typ.quals.append('_Atomic') + p[0] = typ + + def p_type_qualifier(self, p): + """ type_qualifier : CONST + | RESTRICT + | VOLATILE + | _ATOMIC + """ + p[0] = p[1] + + def p_init_declarator_list(self, p): + """ init_declarator_list : init_declarator + | init_declarator_list COMMA init_declarator + """ + p[0] = p[1] + [p[3]] if len(p) == 4 else [p[1]] + + # Returns a {decl= : init=} dictionary + # If there's no initializer, uses None + # + def p_init_declarator(self, p): + """ init_declarator : declarator + | declarator EQUALS initializer + """ + p[0] = dict(decl=p[1], init=(p[3] if len(p) > 2 else None)) + + def p_id_init_declarator_list(self, p): + """ id_init_declarator_list : id_init_declarator + | id_init_declarator_list COMMA init_declarator + """ + p[0] = p[1] + [p[3]] if len(p) == 4 else [p[1]] + + def p_id_init_declarator(self, p): + """ id_init_declarator : id_declarator + | id_declarator EQUALS initializer + """ + p[0] = dict(decl=p[1], init=(p[3] if len(p) > 2 else None)) + + # Require at least one type specifier in a specifier-qualifier-list + # + def p_specifier_qualifier_list_1(self, p): + """ specifier_qualifier_list : specifier_qualifier_list type_specifier_no_typeid + """ + p[0] = self._add_declaration_specifier(p[1], p[2], 'type', append=True) + + def p_specifier_qualifier_list_2(self, p): + """ specifier_qualifier_list : specifier_qualifier_list type_qualifier + """ + p[0] = self._add_declaration_specifier(p[1], p[2], 'qual', append=True) + + def p_specifier_qualifier_list_3(self, p): + """ specifier_qualifier_list : type_specifier + """ + p[0] = self._add_declaration_specifier(None, p[1], 'type') + + def p_specifier_qualifier_list_4(self, p): + """ specifier_qualifier_list : type_qualifier_list type_specifier + """ + p[0] = dict(qual=p[1], alignment=[], storage=[], type=[p[2]], function=[]) + + def p_specifier_qualifier_list_5(self, p): + """ specifier_qualifier_list : alignment_specifier + """ + p[0] = dict(qual=[], alignment=[p[1]], storage=[], type=[], function=[]) + + def p_specifier_qualifier_list_6(self, p): + """ specifier_qualifier_list : specifier_qualifier_list alignment_specifier + """ + p[0] = self._add_declaration_specifier(p[1], p[2], 'alignment') + + # TYPEID is allowed here (and in other struct/enum related tag names), because + # struct/enum tags reside in their own namespace and can be named the same as types + # + def p_struct_or_union_specifier_1(self, p): + """ struct_or_union_specifier : struct_or_union ID + | struct_or_union TYPEID + """ + klass = self._select_struct_union_class(p[1]) + # None means no list of members + p[0] = klass( + name=p[2], + decls=None, + coord=self._token_coord(p, 2)) + + def p_struct_or_union_specifier_2(self, p): + """ struct_or_union_specifier : struct_or_union brace_open struct_declaration_list brace_close + | struct_or_union brace_open brace_close + """ + klass = self._select_struct_union_class(p[1]) + if len(p) == 4: + # Empty sequence means an empty list of members + p[0] = klass( + name=None, + decls=[], + coord=self._token_coord(p, 2)) + else: + p[0] = klass( + name=None, + decls=p[3], + coord=self._token_coord(p, 2)) + + + def p_struct_or_union_specifier_3(self, p): + """ struct_or_union_specifier : struct_or_union ID brace_open struct_declaration_list brace_close + | struct_or_union ID brace_open brace_close + | struct_or_union TYPEID brace_open struct_declaration_list brace_close + | struct_or_union TYPEID brace_open brace_close + """ + klass = self._select_struct_union_class(p[1]) + if len(p) == 5: + # Empty sequence means an empty list of members + p[0] = klass( + name=p[2], + decls=[], + coord=self._token_coord(p, 2)) + else: + p[0] = klass( + name=p[2], + decls=p[4], + coord=self._token_coord(p, 2)) + + def p_struct_or_union(self, p): + """ struct_or_union : STRUCT + | UNION + """ + p[0] = p[1] + + # Combine all declarations into a single list + # + def p_struct_declaration_list(self, p): + """ struct_declaration_list : struct_declaration + | struct_declaration_list struct_declaration + """ + if len(p) == 2: + p[0] = p[1] or [] + else: + p[0] = p[1] + (p[2] or []) + + def p_struct_declaration_1(self, p): + """ struct_declaration : specifier_qualifier_list struct_declarator_list_opt SEMI + """ + spec = p[1] + assert 'typedef' not in spec['storage'] + + if p[2] is not None: + decls = self._build_declarations( + spec=spec, + decls=p[2]) + + elif len(spec['type']) == 1: + # Anonymous struct/union, gcc extension, C1x feature. + # Although the standard only allows structs/unions here, I see no + # reason to disallow other types since some compilers have typedefs + # here, and pycparser isn't about rejecting all invalid code. + # + node = spec['type'][0] + if isinstance(node, c_ast.Node): + decl_type = node + else: + decl_type = c_ast.IdentifierType(node) + + decls = self._build_declarations( + spec=spec, + decls=[dict(decl=decl_type)]) + + else: + # Structure/union members can have the same names as typedefs. + # The trouble is that the member's name gets grouped into + # specifier_qualifier_list; _build_declarations compensates. + # + decls = self._build_declarations( + spec=spec, + decls=[dict(decl=None, init=None)]) + + p[0] = decls + + def p_struct_declaration_2(self, p): + """ struct_declaration : SEMI + """ + p[0] = None + + def p_struct_declaration_3(self, p): + """ struct_declaration : pppragma_directive + """ + p[0] = [p[1]] + + def p_struct_declarator_list(self, p): + """ struct_declarator_list : struct_declarator + | struct_declarator_list COMMA struct_declarator + """ + p[0] = p[1] + [p[3]] if len(p) == 4 else [p[1]] + + # struct_declarator passes up a dict with the keys: decl (for + # the underlying declarator) and bitsize (for the bitsize) + # + def p_struct_declarator_1(self, p): + """ struct_declarator : declarator + """ + p[0] = {'decl': p[1], 'bitsize': None} + + def p_struct_declarator_2(self, p): + """ struct_declarator : declarator COLON constant_expression + | COLON constant_expression + """ + if len(p) > 3: + p[0] = {'decl': p[1], 'bitsize': p[3]} + else: + p[0] = {'decl': c_ast.TypeDecl(None, None, None, None), 'bitsize': p[2]} + + def p_enum_specifier_1(self, p): + """ enum_specifier : ENUM ID + | ENUM TYPEID + """ + p[0] = c_ast.Enum(p[2], None, self._token_coord(p, 1)) + + def p_enum_specifier_2(self, p): + """ enum_specifier : ENUM brace_open enumerator_list brace_close + """ + p[0] = c_ast.Enum(None, p[3], self._token_coord(p, 1)) + + def p_enum_specifier_3(self, p): + """ enum_specifier : ENUM ID brace_open enumerator_list brace_close + | ENUM TYPEID brace_open enumerator_list brace_close + """ + p[0] = c_ast.Enum(p[2], p[4], self._token_coord(p, 1)) + + def p_enumerator_list(self, p): + """ enumerator_list : enumerator + | enumerator_list COMMA + | enumerator_list COMMA enumerator + """ + if len(p) == 2: + p[0] = c_ast.EnumeratorList([p[1]], p[1].coord) + elif len(p) == 3: + p[0] = p[1] + else: + p[1].enumerators.append(p[3]) + p[0] = p[1] + + def p_alignment_specifier(self, p): + """ alignment_specifier : _ALIGNAS LPAREN type_name RPAREN + | _ALIGNAS LPAREN constant_expression RPAREN + """ + p[0] = c_ast.Alignas(p[3], self._token_coord(p, 1)) + + def p_enumerator(self, p): + """ enumerator : ID + | ID EQUALS constant_expression + """ + if len(p) == 2: + enumerator = c_ast.Enumerator( + p[1], None, + self._token_coord(p, 1)) + else: + enumerator = c_ast.Enumerator( + p[1], p[3], + self._token_coord(p, 1)) + self._add_identifier(enumerator.name, enumerator.coord) + + p[0] = enumerator + + def p_declarator(self, p): + """ declarator : id_declarator + | typeid_declarator + """ + p[0] = p[1] + + @parameterized(('id', 'ID'), ('typeid', 'TYPEID'), ('typeid_noparen', 'TYPEID')) + def p_xxx_declarator_1(self, p): + """ xxx_declarator : direct_xxx_declarator + """ + p[0] = p[1] + + @parameterized(('id', 'ID'), ('typeid', 'TYPEID'), ('typeid_noparen', 'TYPEID')) + def p_xxx_declarator_2(self, p): + """ xxx_declarator : pointer direct_xxx_declarator + """ + p[0] = self._type_modify_decl(p[2], p[1]) + + @parameterized(('id', 'ID'), ('typeid', 'TYPEID'), ('typeid_noparen', 'TYPEID')) + def p_direct_xxx_declarator_1(self, p): + """ direct_xxx_declarator : yyy + """ + p[0] = c_ast.TypeDecl( + declname=p[1], + type=None, + quals=None, + align=None, + coord=self._token_coord(p, 1)) + + @parameterized(('id', 'ID'), ('typeid', 'TYPEID')) + def p_direct_xxx_declarator_2(self, p): + """ direct_xxx_declarator : LPAREN xxx_declarator RPAREN + """ + p[0] = p[2] + + @parameterized(('id', 'ID'), ('typeid', 'TYPEID'), ('typeid_noparen', 'TYPEID')) + def p_direct_xxx_declarator_3(self, p): + """ direct_xxx_declarator : direct_xxx_declarator LBRACKET type_qualifier_list_opt assignment_expression_opt RBRACKET + """ + quals = (p[3] if len(p) > 5 else []) or [] + # Accept dimension qualifiers + # Per C99 6.7.5.3 p7 + arr = c_ast.ArrayDecl( + type=None, + dim=p[4] if len(p) > 5 else p[3], + dim_quals=quals, + coord=p[1].coord) + + p[0] = self._type_modify_decl(decl=p[1], modifier=arr) + + @parameterized(('id', 'ID'), ('typeid', 'TYPEID'), ('typeid_noparen', 'TYPEID')) + def p_direct_xxx_declarator_4(self, p): + """ direct_xxx_declarator : direct_xxx_declarator LBRACKET STATIC type_qualifier_list_opt assignment_expression RBRACKET + | direct_xxx_declarator LBRACKET type_qualifier_list STATIC assignment_expression RBRACKET + """ + # Using slice notation for PLY objects doesn't work in Python 3 for the + # version of PLY embedded with pycparser; see PLY Google Code issue 30. + # Work around that here by listing the two elements separately. + listed_quals = [item if isinstance(item, list) else [item] + for item in [p[3],p[4]]] + dim_quals = [qual for sublist in listed_quals for qual in sublist + if qual is not None] + arr = c_ast.ArrayDecl( + type=None, + dim=p[5], + dim_quals=dim_quals, + coord=p[1].coord) + + p[0] = self._type_modify_decl(decl=p[1], modifier=arr) + + # Special for VLAs + # + @parameterized(('id', 'ID'), ('typeid', 'TYPEID'), ('typeid_noparen', 'TYPEID')) + def p_direct_xxx_declarator_5(self, p): + """ direct_xxx_declarator : direct_xxx_declarator LBRACKET type_qualifier_list_opt TIMES RBRACKET + """ + arr = c_ast.ArrayDecl( + type=None, + dim=c_ast.ID(p[4], self._token_coord(p, 4)), + dim_quals=p[3] if p[3] is not None else [], + coord=p[1].coord) + + p[0] = self._type_modify_decl(decl=p[1], modifier=arr) + + @parameterized(('id', 'ID'), ('typeid', 'TYPEID'), ('typeid_noparen', 'TYPEID')) + def p_direct_xxx_declarator_6(self, p): + """ direct_xxx_declarator : direct_xxx_declarator LPAREN parameter_type_list RPAREN + | direct_xxx_declarator LPAREN identifier_list_opt RPAREN + """ + func = c_ast.FuncDecl( + args=p[3], + type=None, + coord=p[1].coord) + + # To see why _get_yacc_lookahead_token is needed, consider: + # typedef char TT; + # void foo(int TT) { TT = 10; } + # Outside the function, TT is a typedef, but inside (starting and + # ending with the braces) it's a parameter. The trouble begins with + # yacc's lookahead token. We don't know if we're declaring or + # defining a function until we see LBRACE, but if we wait for yacc to + # trigger a rule on that token, then TT will have already been read + # and incorrectly interpreted as TYPEID. We need to add the + # parameters to the scope the moment the lexer sees LBRACE. + # + if self._get_yacc_lookahead_token().type == "LBRACE": + if func.args is not None: + for param in func.args.params: + if isinstance(param, c_ast.EllipsisParam): break + self._add_identifier(param.name, param.coord) + + p[0] = self._type_modify_decl(decl=p[1], modifier=func) + + def p_pointer(self, p): + """ pointer : TIMES type_qualifier_list_opt + | TIMES type_qualifier_list_opt pointer + """ + coord = self._token_coord(p, 1) + # Pointer decls nest from inside out. This is important when different + # levels have different qualifiers. For example: + # + # char * const * p; + # + # Means "pointer to const pointer to char" + # + # While: + # + # char ** const p; + # + # Means "const pointer to pointer to char" + # + # So when we construct PtrDecl nestings, the leftmost pointer goes in + # as the most nested type. + nested_type = c_ast.PtrDecl(quals=p[2] or [], type=None, coord=coord) + if len(p) > 3: + tail_type = p[3] + while tail_type.type is not None: + tail_type = tail_type.type + tail_type.type = nested_type + p[0] = p[3] + else: + p[0] = nested_type + + def p_type_qualifier_list(self, p): + """ type_qualifier_list : type_qualifier + | type_qualifier_list type_qualifier + """ + p[0] = [p[1]] if len(p) == 2 else p[1] + [p[2]] + + def p_parameter_type_list(self, p): + """ parameter_type_list : parameter_list + | parameter_list COMMA ELLIPSIS + """ + if len(p) > 2: + p[1].params.append(c_ast.EllipsisParam(self._token_coord(p, 3))) + + p[0] = p[1] + + def p_parameter_list(self, p): + """ parameter_list : parameter_declaration + | parameter_list COMMA parameter_declaration + """ + if len(p) == 2: # single parameter + p[0] = c_ast.ParamList([p[1]], p[1].coord) + else: + p[1].params.append(p[3]) + p[0] = p[1] + + # From ISO/IEC 9899:TC2, 6.7.5.3.11: + # "If, in a parameter declaration, an identifier can be treated either + # as a typedef name or as a parameter name, it shall be taken as a + # typedef name." + # + # Inside a parameter declaration, once we've reduced declaration specifiers, + # if we shift in an LPAREN and see a TYPEID, it could be either an abstract + # declarator or a declarator nested inside parens. This rule tells us to + # always treat it as an abstract declarator. Therefore, we only accept + # `id_declarator`s and `typeid_noparen_declarator`s. + def p_parameter_declaration_1(self, p): + """ parameter_declaration : declaration_specifiers id_declarator + | declaration_specifiers typeid_noparen_declarator + """ + spec = p[1] + if not spec['type']: + spec['type'] = [c_ast.IdentifierType(['int'], + coord=self._token_coord(p, 1))] + p[0] = self._build_declarations( + spec=spec, + decls=[dict(decl=p[2])])[0] + + def p_parameter_declaration_2(self, p): + """ parameter_declaration : declaration_specifiers abstract_declarator_opt + """ + spec = p[1] + if not spec['type']: + spec['type'] = [c_ast.IdentifierType(['int'], + coord=self._token_coord(p, 1))] + + # Parameters can have the same names as typedefs. The trouble is that + # the parameter's name gets grouped into declaration_specifiers, making + # it look like an old-style declaration; compensate. + # + if len(spec['type']) > 1 and len(spec['type'][-1].names) == 1 and \ + self._is_type_in_scope(spec['type'][-1].names[0]): + decl = self._build_declarations( + spec=spec, + decls=[dict(decl=p[2], init=None)])[0] + + # This truly is an old-style parameter declaration + # + else: + decl = c_ast.Typename( + name='', + quals=spec['qual'], + align=None, + type=p[2] or c_ast.TypeDecl(None, None, None, None), + coord=self._token_coord(p, 2)) + typename = spec['type'] + decl = self._fix_decl_name_type(decl, typename) + + p[0] = decl + + def p_identifier_list(self, p): + """ identifier_list : identifier + | identifier_list COMMA identifier + """ + if len(p) == 2: # single parameter + p[0] = c_ast.ParamList([p[1]], p[1].coord) + else: + p[1].params.append(p[3]) + p[0] = p[1] + + def p_initializer_1(self, p): + """ initializer : assignment_expression + """ + p[0] = p[1] + + def p_initializer_2(self, p): + """ initializer : brace_open initializer_list_opt brace_close + | brace_open initializer_list COMMA brace_close + """ + if p[2] is None: + p[0] = c_ast.InitList([], self._token_coord(p, 1)) + else: + p[0] = p[2] + + def p_initializer_list(self, p): + """ initializer_list : designation_opt initializer + | initializer_list COMMA designation_opt initializer + """ + if len(p) == 3: # single initializer + init = p[2] if p[1] is None else c_ast.NamedInitializer(p[1], p[2]) + p[0] = c_ast.InitList([init], p[2].coord) + else: + init = p[4] if p[3] is None else c_ast.NamedInitializer(p[3], p[4]) + p[1].exprs.append(init) + p[0] = p[1] + + def p_designation(self, p): + """ designation : designator_list EQUALS + """ + p[0] = p[1] + + # Designators are represented as a list of nodes, in the order in which + # they're written in the code. + # + def p_designator_list(self, p): + """ designator_list : designator + | designator_list designator + """ + p[0] = [p[1]] if len(p) == 2 else p[1] + [p[2]] + + def p_designator(self, p): + """ designator : LBRACKET constant_expression RBRACKET + | PERIOD identifier + """ + p[0] = p[2] + + def p_type_name(self, p): + """ type_name : specifier_qualifier_list abstract_declarator_opt + """ + typename = c_ast.Typename( + name='', + quals=p[1]['qual'][:], + align=None, + type=p[2] or c_ast.TypeDecl(None, None, None, None), + coord=self._token_coord(p, 2)) + + p[0] = self._fix_decl_name_type(typename, p[1]['type']) + + def p_abstract_declarator_1(self, p): + """ abstract_declarator : pointer + """ + dummytype = c_ast.TypeDecl(None, None, None, None) + p[0] = self._type_modify_decl( + decl=dummytype, + modifier=p[1]) + + def p_abstract_declarator_2(self, p): + """ abstract_declarator : pointer direct_abstract_declarator + """ + p[0] = self._type_modify_decl(p[2], p[1]) + + def p_abstract_declarator_3(self, p): + """ abstract_declarator : direct_abstract_declarator + """ + p[0] = p[1] + + # Creating and using direct_abstract_declarator_opt here + # instead of listing both direct_abstract_declarator and the + # lack of it in the beginning of _1 and _2 caused two + # shift/reduce errors. + # + def p_direct_abstract_declarator_1(self, p): + """ direct_abstract_declarator : LPAREN abstract_declarator RPAREN """ + p[0] = p[2] + + def p_direct_abstract_declarator_2(self, p): + """ direct_abstract_declarator : direct_abstract_declarator LBRACKET assignment_expression_opt RBRACKET + """ + arr = c_ast.ArrayDecl( + type=None, + dim=p[3], + dim_quals=[], + coord=p[1].coord) + + p[0] = self._type_modify_decl(decl=p[1], modifier=arr) + + def p_direct_abstract_declarator_3(self, p): + """ direct_abstract_declarator : LBRACKET type_qualifier_list_opt assignment_expression_opt RBRACKET + """ + quals = (p[2] if len(p) > 4 else []) or [] + p[0] = c_ast.ArrayDecl( + type=c_ast.TypeDecl(None, None, None, None), + dim=p[3] if len(p) > 4 else p[2], + dim_quals=quals, + coord=self._token_coord(p, 1)) + + def p_direct_abstract_declarator_4(self, p): + """ direct_abstract_declarator : direct_abstract_declarator LBRACKET TIMES RBRACKET + """ + arr = c_ast.ArrayDecl( + type=None, + dim=c_ast.ID(p[3], self._token_coord(p, 3)), + dim_quals=[], + coord=p[1].coord) + + p[0] = self._type_modify_decl(decl=p[1], modifier=arr) + + def p_direct_abstract_declarator_5(self, p): + """ direct_abstract_declarator : LBRACKET TIMES RBRACKET + """ + p[0] = c_ast.ArrayDecl( + type=c_ast.TypeDecl(None, None, None, None), + dim=c_ast.ID(p[3], self._token_coord(p, 3)), + dim_quals=[], + coord=self._token_coord(p, 1)) + + def p_direct_abstract_declarator_6(self, p): + """ direct_abstract_declarator : direct_abstract_declarator LPAREN parameter_type_list_opt RPAREN + """ + func = c_ast.FuncDecl( + args=p[3], + type=None, + coord=p[1].coord) + + p[0] = self._type_modify_decl(decl=p[1], modifier=func) + + def p_direct_abstract_declarator_7(self, p): + """ direct_abstract_declarator : LPAREN parameter_type_list_opt RPAREN + """ + p[0] = c_ast.FuncDecl( + args=p[2], + type=c_ast.TypeDecl(None, None, None, None), + coord=self._token_coord(p, 1)) + + # declaration is a list, statement isn't. To make it consistent, block_item + # will always be a list + # + def p_block_item(self, p): + """ block_item : declaration + | statement + """ + p[0] = p[1] if isinstance(p[1], list) else [p[1]] + + # Since we made block_item a list, this just combines lists + # + def p_block_item_list(self, p): + """ block_item_list : block_item + | block_item_list block_item + """ + # Empty block items (plain ';') produce [None], so ignore them + p[0] = p[1] if (len(p) == 2 or p[2] == [None]) else p[1] + p[2] + + def p_compound_statement_1(self, p): + """ compound_statement : brace_open block_item_list_opt brace_close """ + p[0] = c_ast.Compound( + block_items=p[2], + coord=self._token_coord(p, 1)) + + def p_labeled_statement_1(self, p): + """ labeled_statement : ID COLON pragmacomp_or_statement """ + p[0] = c_ast.Label(p[1], p[3], self._token_coord(p, 1)) + + def p_labeled_statement_2(self, p): + """ labeled_statement : CASE constant_expression COLON pragmacomp_or_statement """ + p[0] = c_ast.Case(p[2], [p[4]], self._token_coord(p, 1)) + + def p_labeled_statement_3(self, p): + """ labeled_statement : DEFAULT COLON pragmacomp_or_statement """ + p[0] = c_ast.Default([p[3]], self._token_coord(p, 1)) + + def p_selection_statement_1(self, p): + """ selection_statement : IF LPAREN expression RPAREN pragmacomp_or_statement """ + p[0] = c_ast.If(p[3], p[5], None, self._token_coord(p, 1)) + + def p_selection_statement_2(self, p): + """ selection_statement : IF LPAREN expression RPAREN statement ELSE pragmacomp_or_statement """ + p[0] = c_ast.If(p[3], p[5], p[7], self._token_coord(p, 1)) + + def p_selection_statement_3(self, p): + """ selection_statement : SWITCH LPAREN expression RPAREN pragmacomp_or_statement """ + p[0] = fix_switch_cases( + c_ast.Switch(p[3], p[5], self._token_coord(p, 1))) + + def p_iteration_statement_1(self, p): + """ iteration_statement : WHILE LPAREN expression RPAREN pragmacomp_or_statement """ + p[0] = c_ast.While(p[3], p[5], self._token_coord(p, 1)) + + def p_iteration_statement_2(self, p): + """ iteration_statement : DO pragmacomp_or_statement WHILE LPAREN expression RPAREN SEMI """ + p[0] = c_ast.DoWhile(p[5], p[2], self._token_coord(p, 1)) + + def p_iteration_statement_3(self, p): + """ iteration_statement : FOR LPAREN expression_opt SEMI expression_opt SEMI expression_opt RPAREN pragmacomp_or_statement """ + p[0] = c_ast.For(p[3], p[5], p[7], p[9], self._token_coord(p, 1)) + + def p_iteration_statement_4(self, p): + """ iteration_statement : FOR LPAREN declaration expression_opt SEMI expression_opt RPAREN pragmacomp_or_statement """ + p[0] = c_ast.For(c_ast.DeclList(p[3], self._token_coord(p, 1)), + p[4], p[6], p[8], self._token_coord(p, 1)) + + def p_jump_statement_1(self, p): + """ jump_statement : GOTO ID SEMI """ + p[0] = c_ast.Goto(p[2], self._token_coord(p, 1)) + + def p_jump_statement_2(self, p): + """ jump_statement : BREAK SEMI """ + p[0] = c_ast.Break(self._token_coord(p, 1)) + + def p_jump_statement_3(self, p): + """ jump_statement : CONTINUE SEMI """ + p[0] = c_ast.Continue(self._token_coord(p, 1)) + + def p_jump_statement_4(self, p): + """ jump_statement : RETURN expression SEMI + | RETURN SEMI + """ + p[0] = c_ast.Return(p[2] if len(p) == 4 else None, self._token_coord(p, 1)) + + def p_expression_statement(self, p): + """ expression_statement : expression_opt SEMI """ + if p[1] is None: + p[0] = c_ast.EmptyStatement(self._token_coord(p, 2)) + else: + p[0] = p[1] + + def p_expression(self, p): + """ expression : assignment_expression + | expression COMMA assignment_expression + """ + if len(p) == 2: + p[0] = p[1] + else: + if not isinstance(p[1], c_ast.ExprList): + p[1] = c_ast.ExprList([p[1]], p[1].coord) + + p[1].exprs.append(p[3]) + p[0] = p[1] + + def p_parenthesized_compound_expression(self, p): + """ assignment_expression : LPAREN compound_statement RPAREN """ + p[0] = p[2] + + def p_typedef_name(self, p): + """ typedef_name : TYPEID """ + p[0] = c_ast.IdentifierType([p[1]], coord=self._token_coord(p, 1)) + + def p_assignment_expression(self, p): + """ assignment_expression : conditional_expression + | unary_expression assignment_operator assignment_expression + """ + if len(p) == 2: + p[0] = p[1] + else: + p[0] = c_ast.Assignment(p[2], p[1], p[3], p[1].coord) + + # K&R2 defines these as many separate rules, to encode + # precedence and associativity. Why work hard ? I'll just use + # the built in precedence/associativity specification feature + # of PLY. (see precedence declaration above) + # + def p_assignment_operator(self, p): + """ assignment_operator : EQUALS + | XOREQUAL + | TIMESEQUAL + | DIVEQUAL + | MODEQUAL + | PLUSEQUAL + | MINUSEQUAL + | LSHIFTEQUAL + | RSHIFTEQUAL + | ANDEQUAL + | OREQUAL + """ + p[0] = p[1] + + def p_constant_expression(self, p): + """ constant_expression : conditional_expression """ + p[0] = p[1] + + def p_conditional_expression(self, p): + """ conditional_expression : binary_expression + | binary_expression CONDOP expression COLON conditional_expression + """ + if len(p) == 2: + p[0] = p[1] + else: + p[0] = c_ast.TernaryOp(p[1], p[3], p[5], p[1].coord) + + def p_binary_expression(self, p): + """ binary_expression : cast_expression + | binary_expression TIMES binary_expression + | binary_expression DIVIDE binary_expression + | binary_expression MOD binary_expression + | binary_expression PLUS binary_expression + | binary_expression MINUS binary_expression + | binary_expression RSHIFT binary_expression + | binary_expression LSHIFT binary_expression + | binary_expression LT binary_expression + | binary_expression LE binary_expression + | binary_expression GE binary_expression + | binary_expression GT binary_expression + | binary_expression EQ binary_expression + | binary_expression NE binary_expression + | binary_expression AND binary_expression + | binary_expression OR binary_expression + | binary_expression XOR binary_expression + | binary_expression LAND binary_expression + | binary_expression LOR binary_expression + """ + if len(p) == 2: + p[0] = p[1] + else: + p[0] = c_ast.BinaryOp(p[2], p[1], p[3], p[1].coord) + + def p_cast_expression_1(self, p): + """ cast_expression : unary_expression """ + p[0] = p[1] + + def p_cast_expression_2(self, p): + """ cast_expression : LPAREN type_name RPAREN cast_expression """ + p[0] = c_ast.Cast(p[2], p[4], self._token_coord(p, 1)) + + def p_unary_expression_1(self, p): + """ unary_expression : postfix_expression """ + p[0] = p[1] + + def p_unary_expression_2(self, p): + """ unary_expression : PLUSPLUS unary_expression + | MINUSMINUS unary_expression + | unary_operator cast_expression + """ + p[0] = c_ast.UnaryOp(p[1], p[2], p[2].coord) + + def p_unary_expression_3(self, p): + """ unary_expression : SIZEOF unary_expression + | SIZEOF LPAREN type_name RPAREN + | _ALIGNOF LPAREN type_name RPAREN + """ + p[0] = c_ast.UnaryOp( + p[1], + p[2] if len(p) == 3 else p[3], + self._token_coord(p, 1)) + + def p_unary_operator(self, p): + """ unary_operator : AND + | TIMES + | PLUS + | MINUS + | NOT + | LNOT + """ + p[0] = p[1] + + def p_postfix_expression_1(self, p): + """ postfix_expression : primary_expression """ + p[0] = p[1] + + def p_postfix_expression_2(self, p): + """ postfix_expression : postfix_expression LBRACKET expression RBRACKET """ + p[0] = c_ast.ArrayRef(p[1], p[3], p[1].coord) + + def p_postfix_expression_3(self, p): + """ postfix_expression : postfix_expression LPAREN argument_expression_list RPAREN + | postfix_expression LPAREN RPAREN + """ + p[0] = c_ast.FuncCall(p[1], p[3] if len(p) == 5 else None, p[1].coord) + + def p_postfix_expression_4(self, p): + """ postfix_expression : postfix_expression PERIOD ID + | postfix_expression PERIOD TYPEID + | postfix_expression ARROW ID + | postfix_expression ARROW TYPEID + """ + field = c_ast.ID(p[3], self._token_coord(p, 3)) + p[0] = c_ast.StructRef(p[1], p[2], field, p[1].coord) + + def p_postfix_expression_5(self, p): + """ postfix_expression : postfix_expression PLUSPLUS + | postfix_expression MINUSMINUS + """ + p[0] = c_ast.UnaryOp('p' + p[2], p[1], p[1].coord) + + def p_postfix_expression_6(self, p): + """ postfix_expression : LPAREN type_name RPAREN brace_open initializer_list brace_close + | LPAREN type_name RPAREN brace_open initializer_list COMMA brace_close + """ + p[0] = c_ast.CompoundLiteral(p[2], p[5]) + + def p_primary_expression_1(self, p): + """ primary_expression : identifier """ + p[0] = p[1] + + def p_primary_expression_2(self, p): + """ primary_expression : constant """ + p[0] = p[1] + + def p_primary_expression_3(self, p): + """ primary_expression : unified_string_literal + | unified_wstring_literal + """ + p[0] = p[1] + + def p_primary_expression_4(self, p): + """ primary_expression : LPAREN expression RPAREN """ + p[0] = p[2] + + def p_primary_expression_5(self, p): + """ primary_expression : OFFSETOF LPAREN type_name COMMA offsetof_member_designator RPAREN + """ + coord = self._token_coord(p, 1) + p[0] = c_ast.FuncCall(c_ast.ID(p[1], coord), + c_ast.ExprList([p[3], p[5]], coord), + coord) + + def p_offsetof_member_designator(self, p): + """ offsetof_member_designator : identifier + | offsetof_member_designator PERIOD identifier + | offsetof_member_designator LBRACKET expression RBRACKET + """ + if len(p) == 2: + p[0] = p[1] + elif len(p) == 4: + p[0] = c_ast.StructRef(p[1], p[2], p[3], p[1].coord) + elif len(p) == 5: + p[0] = c_ast.ArrayRef(p[1], p[3], p[1].coord) + else: + raise NotImplementedError("Unexpected parsing state. len(p): %u" % len(p)) + + def p_argument_expression_list(self, p): + """ argument_expression_list : assignment_expression + | argument_expression_list COMMA assignment_expression + """ + if len(p) == 2: # single expr + p[0] = c_ast.ExprList([p[1]], p[1].coord) + else: + p[1].exprs.append(p[3]) + p[0] = p[1] + + def p_identifier(self, p): + """ identifier : ID """ + p[0] = c_ast.ID(p[1], self._token_coord(p, 1)) + + def p_constant_1(self, p): + """ constant : INT_CONST_DEC + | INT_CONST_OCT + | INT_CONST_HEX + | INT_CONST_BIN + | INT_CONST_CHAR + """ + uCount = 0 + lCount = 0 + for x in p[1][-3:]: + if x in ('l', 'L'): + lCount += 1 + elif x in ('u', 'U'): + uCount += 1 + t = '' + if uCount > 1: + raise ValueError('Constant cannot have more than one u/U suffix.') + elif lCount > 2: + raise ValueError('Constant cannot have more than two l/L suffix.') + prefix = 'unsigned ' * uCount + 'long ' * lCount + p[0] = c_ast.Constant( + prefix + 'int', p[1], self._token_coord(p, 1)) + + def p_constant_2(self, p): + """ constant : FLOAT_CONST + | HEX_FLOAT_CONST + """ + if 'x' in p[1].lower(): + t = 'float' + else: + if p[1][-1] in ('f', 'F'): + t = 'float' + elif p[1][-1] in ('l', 'L'): + t = 'long double' + else: + t = 'double' + + p[0] = c_ast.Constant( + t, p[1], self._token_coord(p, 1)) + + def p_constant_3(self, p): + """ constant : CHAR_CONST + | WCHAR_CONST + | U8CHAR_CONST + | U16CHAR_CONST + | U32CHAR_CONST + """ + p[0] = c_ast.Constant( + 'char', p[1], self._token_coord(p, 1)) + + # The "unified" string and wstring literal rules are for supporting + # concatenation of adjacent string literals. + # I.e. "hello " "world" is seen by the C compiler as a single string literal + # with the value "hello world" + # + def p_unified_string_literal(self, p): + """ unified_string_literal : STRING_LITERAL + | unified_string_literal STRING_LITERAL + """ + if len(p) == 2: # single literal + p[0] = c_ast.Constant( + 'string', p[1], self._token_coord(p, 1)) + else: + p[1].value = p[1].value[:-1] + p[2][1:] + p[0] = p[1] + + def p_unified_wstring_literal(self, p): + """ unified_wstring_literal : WSTRING_LITERAL + | U8STRING_LITERAL + | U16STRING_LITERAL + | U32STRING_LITERAL + | unified_wstring_literal WSTRING_LITERAL + | unified_wstring_literal U8STRING_LITERAL + | unified_wstring_literal U16STRING_LITERAL + | unified_wstring_literal U32STRING_LITERAL + """ + if len(p) == 2: # single literal + p[0] = c_ast.Constant( + 'string', p[1], self._token_coord(p, 1)) + else: + p[1].value = p[1].value.rstrip()[:-1] + p[2][2:] + p[0] = p[1] + + def p_brace_open(self, p): + """ brace_open : LBRACE + """ + p[0] = p[1] + p.set_lineno(0, p.lineno(1)) + + def p_brace_close(self, p): + """ brace_close : RBRACE + """ + p[0] = p[1] + p.set_lineno(0, p.lineno(1)) + + def p_empty(self, p): + 'empty : ' + p[0] = None + + def p_error(self, p): + # If error recovery is added here in the future, make sure + # _get_yacc_lookahead_token still works! + # + if p: + self._parse_error( + 'before: %s' % p.value, + self._coord(lineno=p.lineno, + column=self.clex.find_tok_column(p))) + else: + self._parse_error('At end of input', self.clex.filename) diff --git a/gestao_raul/Lib/site-packages/pycparser/lextab.py b/gestao_raul/Lib/site-packages/pycparser/lextab.py new file mode 100644 index 0000000..aeb5c15 --- /dev/null +++ b/gestao_raul/Lib/site-packages/pycparser/lextab.py @@ -0,0 +1,10 @@ +# lextab.py. This file automatically created by PLY (version 3.10). Don't edit! +_tabversion = '3.10' +_lextokens = set(('AND', 'ANDEQUAL', 'ARROW', 'AUTO', 'BREAK', 'CASE', 'CHAR', 'CHAR_CONST', 'COLON', 'COMMA', 'CONDOP', 'CONST', 'CONTINUE', 'DEFAULT', 'DIVEQUAL', 'DIVIDE', 'DO', 'DOUBLE', 'ELLIPSIS', 'ELSE', 'ENUM', 'EQ', 'EQUALS', 'EXTERN', 'FLOAT', 'FLOAT_CONST', 'FOR', 'GE', 'GOTO', 'GT', 'HEX_FLOAT_CONST', 'ID', 'IF', 'INLINE', 'INT', 'INT_CONST_BIN', 'INT_CONST_CHAR', 'INT_CONST_DEC', 'INT_CONST_HEX', 'INT_CONST_OCT', 'LAND', 'LBRACE', 'LBRACKET', 'LE', 'LNOT', 'LONG', 'LOR', 'LPAREN', 'LSHIFT', 'LSHIFTEQUAL', 'LT', 'MINUS', 'MINUSEQUAL', 'MINUSMINUS', 'MOD', 'MODEQUAL', 'NE', 'NOT', 'OFFSETOF', 'OR', 'OREQUAL', 'PERIOD', 'PLUS', 'PLUSEQUAL', 'PLUSPLUS', 'PPHASH', 'PPPRAGMA', 'PPPRAGMASTR', 'RBRACE', 'RBRACKET', 'REGISTER', 'RESTRICT', 'RETURN', 'RPAREN', 'RSHIFT', 'RSHIFTEQUAL', 'SEMI', 'SHORT', 'SIGNED', 'SIZEOF', 'STATIC', 'STRING_LITERAL', 'STRUCT', 'SWITCH', 'TIMES', 'TIMESEQUAL', 'TYPEDEF', 'TYPEID', 'U16CHAR_CONST', 'U16STRING_LITERAL', 'U32CHAR_CONST', 'U32STRING_LITERAL', 'U8CHAR_CONST', 'U8STRING_LITERAL', 'UNION', 'UNSIGNED', 'VOID', 'VOLATILE', 'WCHAR_CONST', 'WHILE', 'WSTRING_LITERAL', 'XOR', 'XOREQUAL', '_ALIGNAS', '_ALIGNOF', '_ATOMIC', '_BOOL', '_COMPLEX', '_NORETURN', '_PRAGMA', '_STATIC_ASSERT', '_THREAD_LOCAL', '__INT128')) +_lexreflags = 64 +_lexliterals = '' +_lexstateinfo = {'INITIAL': 'inclusive', 'ppline': 'exclusive', 'pppragma': 'exclusive'} +_lexstatere = {'INITIAL': [('(?P[ \\t]*\\#)|(?P\\n+)|(?P\\{)|(?P\\})|(?P((((([0-9]*\\.[0-9]+)|([0-9]+\\.))([eE][-+]?[0-9]+)?)|([0-9]+([eE][-+]?[0-9]+)))[FfLl]?))|(?P(0[xX]([0-9a-fA-F]+|((([0-9a-fA-F]+)?\\.[0-9a-fA-F]+)|([0-9a-fA-F]+\\.)))([pP][+-]?[0-9]+)[FfLl]?))|(?P0[xX][0-9a-fA-F]+(([uU]ll)|([uU]LL)|(ll[uU]?)|(LL[uU]?)|([uU][lL])|([lL][uU]?)|[uU])?)|(?P0[bB][01]+(([uU]ll)|([uU]LL)|(ll[uU]?)|(LL[uU]?)|([uU][lL])|([lL][uU]?)|[uU])?)|(?P0[0-7]*[89])|(?P0[0-7]*(([uU]ll)|([uU]LL)|(ll[uU]?)|(LL[uU]?)|([uU][lL])|([lL][uU]?)|[uU])?)|(?P(0(([uU]ll)|([uU]LL)|(ll[uU]?)|(LL[uU]?)|([uU][lL])|([lL][uU]?)|[uU])?)|([1-9][0-9]*(([uU]ll)|([uU]LL)|(ll[uU]?)|(LL[uU]?)|([uU][lL])|([lL][uU]?)|[uU])?))|(?P\'([^\'\\\\\\n]|(\\\\(([a-wyzA-Z._~!=&\\^\\-\\\\?\'"]|x(?![0-9a-fA-F]))|(\\d+)(?!\\d)|(x[0-9a-fA-F]+)(?![0-9a-fA-F])))){2,4}\')|(?P\'([^\'\\\\\\n]|(\\\\(([a-wyzA-Z._~!=&\\^\\-\\\\?\'"]|x(?![0-9a-fA-F]))|(\\d+)(?!\\d)|(x[0-9a-fA-F]+)(?![0-9a-fA-F]))))\')|(?PL\'([^\'\\\\\\n]|(\\\\(([a-wyzA-Z._~!=&\\^\\-\\\\?\'"]|x(?![0-9a-fA-F]))|(\\d+)(?!\\d)|(x[0-9a-fA-F]+)(?![0-9a-fA-F]))))\')|(?Pu8\'([^\'\\\\\\n]|(\\\\(([a-wyzA-Z._~!=&\\^\\-\\\\?\'"]|x(?![0-9a-fA-F]))|(\\d+)(?!\\d)|(x[0-9a-fA-F]+)(?![0-9a-fA-F]))))\')|(?Pu\'([^\'\\\\\\n]|(\\\\(([a-wyzA-Z._~!=&\\^\\-\\\\?\'"]|x(?![0-9a-fA-F]))|(\\d+)(?!\\d)|(x[0-9a-fA-F]+)(?![0-9a-fA-F]))))\')|(?PU\'([^\'\\\\\\n]|(\\\\(([a-wyzA-Z._~!=&\\^\\-\\\\?\'"]|x(?![0-9a-fA-F]))|(\\d+)(?!\\d)|(x[0-9a-fA-F]+)(?![0-9a-fA-F]))))\')|(?P(\'([^\'\\\\\\n]|(\\\\(([a-wyzA-Z._~!=&\\^\\-\\\\?\'"]|x(?![0-9a-fA-F]))|(\\d+)(?!\\d)|(x[0-9a-fA-F]+)(?![0-9a-fA-F]))))*\\n)|(\'([^\'\\\\\\n]|(\\\\(([a-wyzA-Z._~!=&\\^\\-\\\\?\'"]|x(?![0-9a-fA-F]))|(\\d+)(?!\\d)|(x[0-9a-fA-F]+)(?![0-9a-fA-F]))))*$))|(?P(\'([^\'\\\\\\n]|(\\\\(([a-wyzA-Z._~!=&\\^\\-\\\\?\'"]|x(?![0-9a-fA-F]))|(\\d+)(?!\\d)|(x[0-9a-fA-F]+)(?![0-9a-fA-F]))))[^\'\n]+\')|(\'\')|(\'([\\\\][^a-zA-Z._~^!=&\\^\\-\\\\?\'"x0-9])[^\'\\n]*\'))|(?PL"([^"\\\\\\n]|(\\\\[0-9a-zA-Z._~!=&\\^\\-\\\\?\'"]))*")|(?Pu8"([^"\\\\\\n]|(\\\\[0-9a-zA-Z._~!=&\\^\\-\\\\?\'"]))*")|(?Pu"([^"\\\\\\n]|(\\\\[0-9a-zA-Z._~!=&\\^\\-\\\\?\'"]))*")|(?PU"([^"\\\\\\n]|(\\\\[0-9a-zA-Z._~!=&\\^\\-\\\\?\'"]))*")|(?P"([^"\\\\\\n]|(\\\\[0-9a-zA-Z._~!=&\\^\\-\\\\?\'"]))*([\\\\][^a-zA-Z._~^!=&\\^\\-\\\\?\'"x0-9])([^"\\\\\\n]|(\\\\[0-9a-zA-Z._~!=&\\^\\-\\\\?\'"]))*")|(?P[a-zA-Z_$][0-9a-zA-Z_$]*)|(?P"([^"\\\\\\n]|(\\\\[0-9a-zA-Z._~!=&\\^\\-\\\\?\'"]))*")|(?P\\.\\.\\.)|(?P\\|\\|)|(?P\\+\\+)|(?P<<=)|(?P\\|=)|(?P\\+=)|(?P>>=)|(?P\\*=)|(?P\\^=)|(?P&=)|(?P->)|(?P\\?)|(?P/=)|(?P==)|(?P>=)|(?P&&)|(?P\\[)|(?P<=)|(?P\\()|(?P<<)|(?P-=)|(?P--)|(?P%=)|(?P!=)|(?P\\|)|(?P\\.)|(?P\\+)|(?P\\])|(?P\\))|(?P>>)|(?P\\*)|(?P\\^)|(?P&)|(?P:)|(?P,)|(?P/)|(?P=)|(?P>)|(?P!)|(?P<)|(?P-)|(?P%)|(?P~)|(?P;)', [None, ('t_PPHASH', 'PPHASH'), ('t_NEWLINE', 'NEWLINE'), ('t_LBRACE', 'LBRACE'), ('t_RBRACE', 'RBRACE'), ('t_FLOAT_CONST', 'FLOAT_CONST'), None, None, None, None, None, None, None, None, None, ('t_HEX_FLOAT_CONST', 'HEX_FLOAT_CONST'), None, None, None, None, None, None, None, ('t_INT_CONST_HEX', 'INT_CONST_HEX'), None, None, None, None, None, None, None, ('t_INT_CONST_BIN', 'INT_CONST_BIN'), None, None, None, None, None, None, None, ('t_BAD_CONST_OCT', 'BAD_CONST_OCT'), ('t_INT_CONST_OCT', 'INT_CONST_OCT'), None, None, None, None, None, None, None, ('t_INT_CONST_DEC', 'INT_CONST_DEC'), None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, ('t_INT_CONST_CHAR', 'INT_CONST_CHAR'), None, None, None, None, None, None, ('t_CHAR_CONST', 'CHAR_CONST'), None, None, None, None, None, None, ('t_WCHAR_CONST', 'WCHAR_CONST'), None, None, None, None, None, None, ('t_U8CHAR_CONST', 'U8CHAR_CONST'), None, None, None, None, None, None, ('t_U16CHAR_CONST', 'U16CHAR_CONST'), None, None, None, None, None, None, ('t_U32CHAR_CONST', 'U32CHAR_CONST'), None, None, None, None, None, None, ('t_UNMATCHED_QUOTE', 'UNMATCHED_QUOTE'), None, None, None, None, None, None, None, None, None, None, None, None, None, None, ('t_BAD_CHAR_CONST', 'BAD_CHAR_CONST'), None, None, None, None, None, None, None, None, None, None, ('t_WSTRING_LITERAL', 'WSTRING_LITERAL'), None, None, ('t_U8STRING_LITERAL', 'U8STRING_LITERAL'), None, None, ('t_U16STRING_LITERAL', 'U16STRING_LITERAL'), None, None, ('t_U32STRING_LITERAL', 'U32STRING_LITERAL'), None, None, ('t_BAD_STRING_LITERAL', 'BAD_STRING_LITERAL'), None, None, None, None, None, ('t_ID', 'ID'), (None, 'STRING_LITERAL'), None, None, (None, 'ELLIPSIS'), (None, 'LOR'), (None, 'PLUSPLUS'), (None, 'LSHIFTEQUAL'), (None, 'OREQUAL'), (None, 'PLUSEQUAL'), (None, 'RSHIFTEQUAL'), (None, 'TIMESEQUAL'), (None, 'XOREQUAL'), (None, 'ANDEQUAL'), (None, 'ARROW'), (None, 'CONDOP'), (None, 'DIVEQUAL'), (None, 'EQ'), (None, 'GE'), (None, 'LAND'), (None, 'LBRACKET'), (None, 'LE'), (None, 'LPAREN'), (None, 'LSHIFT'), (None, 'MINUSEQUAL'), (None, 'MINUSMINUS'), (None, 'MODEQUAL'), (None, 'NE'), (None, 'OR'), (None, 'PERIOD'), (None, 'PLUS'), (None, 'RBRACKET'), (None, 'RPAREN'), (None, 'RSHIFT'), (None, 'TIMES'), (None, 'XOR'), (None, 'AND'), (None, 'COLON'), (None, 'COMMA'), (None, 'DIVIDE'), (None, 'EQUALS'), (None, 'GT'), (None, 'LNOT'), (None, 'LT'), (None, 'MINUS'), (None, 'MOD'), (None, 'NOT'), (None, 'SEMI')])], 'ppline': [('(?P"([^"\\\\\\n]|(\\\\[0-9a-zA-Z._~!=&\\^\\-\\\\?\'"]))*")|(?P(0(([uU]ll)|([uU]LL)|(ll[uU]?)|(LL[uU]?)|([uU][lL])|([lL][uU]?)|[uU])?)|([1-9][0-9]*(([uU]ll)|([uU]LL)|(ll[uU]?)|(LL[uU]?)|([uU][lL])|([lL][uU]?)|[uU])?))|(?P\\n)|(?Pline)', [None, ('t_ppline_FILENAME', 'FILENAME'), None, None, ('t_ppline_LINE_NUMBER', 'LINE_NUMBER'), None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, ('t_ppline_NEWLINE', 'NEWLINE'), ('t_ppline_PPLINE', 'PPLINE')])], 'pppragma': [('(?P\\n)|(?Ppragma)|(?P.+)', [None, ('t_pppragma_NEWLINE', 'NEWLINE'), ('t_pppragma_PPPRAGMA', 'PPPRAGMA'), ('t_pppragma_STR', 'STR')])]} +_lexstateignore = {'INITIAL': ' \t', 'ppline': ' \t', 'pppragma': ' \t'} +_lexstateerrorf = {'INITIAL': 't_error', 'ppline': 't_ppline_error', 'pppragma': 't_pppragma_error'} +_lexstateeoff = {} diff --git a/gestao_raul/Lib/site-packages/pycparser/ply/__init__.py b/gestao_raul/Lib/site-packages/pycparser/ply/__init__.py new file mode 100644 index 0000000..6e53cdd --- /dev/null +++ b/gestao_raul/Lib/site-packages/pycparser/ply/__init__.py @@ -0,0 +1,5 @@ +# PLY package +# Author: David Beazley (dave@dabeaz.com) + +__version__ = '3.9' +__all__ = ['lex','yacc'] diff --git a/gestao_raul/Lib/site-packages/pycparser/ply/__pycache__/__init__.cpython-310.pyc b/gestao_raul/Lib/site-packages/pycparser/ply/__pycache__/__init__.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..a13fc04a8762b04a49f848146f990e3dd30e499d GIT binary patch literal 228 zcmd1j<>g`k0u%q$>1javF^GcGKFR<9 literal 0 HcmV?d00001 diff --git a/gestao_raul/Lib/site-packages/pycparser/ply/__pycache__/cpp.cpython-310.pyc b/gestao_raul/Lib/site-packages/pycparser/ply/__pycache__/cpp.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..48704e836b7fa9faa2cdc65abb2e1b848467d3f5 GIT binary patch literal 16099 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

@QjvOW|*ovYM9YLPb$P2Y(=#C)ozj5fu z&!wUa9u7N{d6d+ew95tjmnQ8}X^%bWj@x@IvyEJOk#b;zjFtQdlgZ9e>5!_)-lmM9 z0_5ubKgS3OC#CEZmriMW>-2t9qr<4Vp=Oikml2h1v4Uk@7^vBX2$2y)=%8gdFG0dm zf5w+~XkYyT4-TSfakv%e1ble?90#eN130{m>m!~9cV<-sPx>Rtdhaxs)tqiN?PS0`?ER@$(v+(cz$886kzGl+FwN*!iVDq zwUUTJA=7%MthJtDz;luT&PxC%(YvAz&vAY2k#ON-X+|Y{I=vT zO8G@8kMA^~%p&t$Y$aLZHb&loFXORHa=Q?czsH_`MKCny$3+juMROQi&LqbUmV)d8 zZg}U1ERK)wB)fcMWrU`Xm5jW}(uYtmoJow-B5c5=;ry=CIu=jxrxmG%H6Rd?4Zmbel zG71wq_yS@n-CaWHF-j5A-9%5wr#e9zX8l5lO$~HM-jS~GowN_k*7!3!MVyHgW0uj# z64HnQV|?HNmpd}9O%4p6^3FasIW$abgxw~`f@zIuv1x_}?HG{VY9<4Oo+L2xN191L z7&lB4(hkQ&>Xoj!O%4gux=+QX85FjYcCOeo!@}IOmu?e%ly`Ms-6ltdb(x`Q>Vd)y zEj#UCk;8@?Q{7IeIRT#(0GG~73OA$*%{F*k_(DU-EAoR&t>7j((SUr9@`pNcLn@C> z*CVPW0hoi$j(7(-0x$>rV1YDp1VD}p!Y;*m5VGB1z5u2+;IC_w9=MI5DPzJrO5hPU zFR*jyba0bj&0%JJwVr~IZ9ZqNkzjCpJ$a4U`aONZ7uDzuHF3!gf-YgoSONp-Y?4SV zCh`2=!6YPWyfVM6@GWe8;vu--*!l5a+h4-=sE=)@fIS|Cf41`_q)HC1FpRT5eusk} z5aE4dlpCokfRpF)agj8Y=HiV6E?eV6f2<+P$x7`6u@+jK`mRfGXJ7Wm+NGZe(2HHW zn;J5k?OYwH<%Fwq38Cyym_fsOz{JKE9>5{;kv0&NHh}&H$TJ|J`dcL90z7C~8md1) zVlMdz6x`sUHoQl~e~Gy#RC&Hl<5Dd4Id?T&Y|2@acj6aq8(C(HjEtO(MMp4H1OZ9E5S7`C7y%W!RPfP7A;?A(~E)P>j8E(HXCxdQ8v8G zejU*(q5<_1;zhQw1G~V$h6=#PKKLQWT*zXToF3m2M_vD61D%G-_Cc%cj8`6eef+KQ O^Aol5Zq?*9SJQ2#&x literal 0 HcmV?d00001 diff --git a/gestao_raul/Lib/site-packages/werkzeug/__pycache__/security.cpython-310.pyc b/gestao_raul/Lib/site-packages/werkzeug/__pycache__/security.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..c19bde34d0f2dd52c41565ee5ad40b8775214095 GIT binary patch literal 5498 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 literal 0 HcmV?d00001 diff --git a/gestao_raul/Lib/site-packages/werkzeug/__pycache__/serving.cpython-310.pyc b/gestao_raul/Lib/site-packages/werkzeug/__pycache__/serving.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..d34774d321fa4437e22790da1e085441d03dd04d GIT binary patch literal 30644 zcmbt-3v?XUdEU(I>=TP8!8a+bBvKS8az#=POE4`90zrwE2+{y(#Ve_c#m)d+aIp*B z8IZ(wA;Vma@3@GG-+NZeVm@2wmBzlbNWg$NmJ*zNvqavleqB% zvBiGhe`odqLWXYby*bLZYW_x|^P|99)Xy%__4k6ievg`fYtVSJevoqs7@JYg87 zHyksJONL_<499e=s<~tpER*?IHCBkpw_UL1J6?#(ccPGx?_?n<->E`MzSD)Yd}j(h z__nLrrEH;B+KMCJSLl;`0{Q+zzvPqEfu+I1pyX4?4;6+apRVp$8ZHb=K7;(u!cOFS zoNRU1((b};$@e0^r?5xzebv27`wIIc-(TIobf9p+G#Z04nuCRd?j3G&@lN;PVs1WG zxXT%E?{)@H8_yZFJ+|TAv-(4(!T+ZWXUN&{n&IqNw+e^cL+eKL*Gevyk&#^&Nb%|=L4uUF6Gyq)6R!beg;phI%Ce0$WJ&8=dAM->YR1{rt=Z! z8RVXFn$EM%dE}l(zmv`d^n1Y_Lciy5ebM8`eGwYPl?j-K*P7m`wYR-lArs)m2yJ=IbiA;<>q_N1YW_sV(Fj_o`d1FE6<@ zKUc3+SC1ae=VmTfyiE8&#mklJwX1He!Ww>^Pan(8t@t_IsnvZn;8hlCuETqCZf?1x z{7QMHT2j^3jOUl;s;KU{S$DVKa#k2mZ!8g?{_YnR;` zYA#pns~j}CT2^&urR-PgwR|RX&gb>j3dWL~cS}Ax^K#Y76*pI@`K~IV-c=XR&#f#h z@Od_0t~+i{;oVCPiexmI*;%zxD|(fs<*GY7%Wm)n3a@?H4JR<4yNFl!F+pe=qn9W0 z%d4pEl~rZgAI)U)d1?IkT(w@lGCG=DUiB~6YneO6$b1U zQPQq(%~e+#?#e<`r#-67J4A*fX3$frVfIU$0B;i4DF?0il_eMXG`}6U>X&$f7ma$2 zH+DT)@?3($l>5?(>-kS(BC4*!oeWE-1x9d{T&caZQup~tYDHDO!Kp;B~fm`F@u(J9r+d|<~pPI;|V)vZk^RhJF`ZbiRdtf)$3zrTVBe%@bQ zcAuZPUUrxH7B3#l<@5O$gS`N^nky??bX0wL*>#F88}Z6~_0B&~08I;aA>$ea6V$+R zQcm1SV9&&yBz8kONEfHQ>Y0_LrPaW$m6qHf=J_f}C>LN-+l>49vD#|c>S&jFe#S{= zNN;=~p>^|BbHti#T$-MKmY}~~zjsStbzVF>l!^{e(=|+g4zEZgpM_q5HQDwHIHT7sp3mz@Aaw z3)ir=^%u_6%PZWs-V0MxPfm=#uz(dU)r+dMQhnjs%G?WH#dnV{mxPxajOg+FY zMu=Zt4SI^j1s6c%t77pay6_T6EYmXWTaBHqY0G!inta=qF{vG>sfL;CL^5IrsbZ0{ zTPy~dVsQzZv&ww7SbS-vRMmIXe%9x^bR_$DIf�KAw#vW%QX+G80%ezmO`|t94ac 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 Mz3uDn+`ymwKZ8e$`~Uy| literal 0 HcmV?d00001 diff --git a/gestao_raul/Lib/site-packages/werkzeug/__pycache__/test.cpython-310.pyc b/gestao_raul/Lib/site-packages/werkzeug/__pycache__/test.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..397e689d4f8837d4c4b3b636979fa54dbe3dbb6a GIT binary patch literal 43009 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 F{|CZ#T7Uom literal 0 HcmV?d00001 diff --git a/gestao_raul/Lib/site-packages/werkzeug/__pycache__/urls.cpython-310.pyc b/gestao_raul/Lib/site-packages/werkzeug/__pycache__/urls.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..3c2a774f08aa0a242811ed2fae033221405845a3 GIT binary patch literal 5822 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 Hvm^fjW?J#$ literal 0 HcmV?d00001 diff --git a/gestao_raul/Lib/site-packages/werkzeug/__pycache__/user_agent.cpython-310.pyc b/gestao_raul/Lib/site-packages/werkzeug/__pycache__/user_agent.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..512e4b2c7a907bef850c148c560258adaef5aecd GIT binary patch literal 1860 zcmZ`)&2Aev5GHrmlDwAfIBA>2{Q(gKC{)CoqK6&?BdF^Zy%a8B*B3zmMTxYs&T6?K zxppn+<{bJCMIXTE8|}5Hp4*d8o#9HhYNrb^B&xfjZy7s*hq$Y__Wg8yE_Yb$fD>9xjOYk95dwa2n8*WX3GRry42 z$W4%9kRHe_kk;f=`AB{MQX6a^%8x)=mjU42u2zq&GJ9i{JMj-CX$-W#WZX(EX_}}nRsjoJ5tUcn?pHQ=FL=<}iG%8#rMk3iFhE=$mK_Y(M9VT$FBlNGpuJ8H-4sTjr4j(ca+Q`~ChHN+UEk(0BbG(_!DHPVE$8^ajx3nYx-UZ;O`{7gdY%G*2Dp3_{olh6au3 z^dSb?!v;?l8%A&!ZXT4I@cJyCfgq_PGjd5!>2GjHXXG@1IfOZcIr_bcUxI^cx_eF8 zHGO$aUv;7?au)@#%Xuy)igN>>8e$qS01F!^W7_rb03_TAl{cI}2hAdh&+Z_tm+v7( zw21U?bPkw+YtshNtmE(mhdZH~oI@Eo{~XqQqz0XCEpy^mt7xcob}!t2%8Rs|(n~rI z*$K=i7|-YWzQ~XyI_3O}MdGrKd9OOn z>#aMB@Qq;l=r;44^-koQ)2w1P*vDoK;|8^i)`g7ub~emon5vlb`d)HgwK;!VimWbv z1&m8Qf(l~~R-2qJ{VtY!!(iK)EgYWW@G%ab;($M+r8@eGV&9k$2K4HGS22lbdo!Tz u;P#D!IEuqK+z9>NgHDJ*PfEDL*q2yOzwkcqRcp7-=oJ>g-=H>m82$@y=E;5l literal 0 HcmV?d00001 diff --git a/gestao_raul/Lib/site-packages/werkzeug/__pycache__/utils.cpython-310.pyc b/gestao_raul/Lib/site-packages/werkzeug/__pycache__/utils.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..d6eac1bf89b5eb6981e5f7714b3b20233183ba2d GIT binary patch literal 22307 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 Qw|HypHS6%$<6Q^-H~n*4IsgCw literal 0 HcmV?d00001 diff --git a/gestao_raul/Lib/site-packages/werkzeug/__pycache__/wsgi.cpython-310.pyc b/gestao_raul/Lib/site-packages/werkzeug/__pycache__/wsgi.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..71471f3d8c815b541b1bbb6a35466dd07e9553aa GIT binary patch literal 19952 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 T&FN|T#mR@$k50cZd;MPkw=ny~ literal 0 HcmV?d00001 diff --git a/gestao_raul/Lib/site-packages/werkzeug/_internal.py b/gestao_raul/Lib/site-packages/werkzeug/_internal.py new file mode 100644 index 0000000..7dd2fbc --- /dev/null +++ b/gestao_raul/Lib/site-packages/werkzeug/_internal.py @@ -0,0 +1,211 @@ +from __future__ import annotations + +import logging +import re +import sys +import typing as t +from datetime import datetime +from datetime import timezone + +if t.TYPE_CHECKING: + from _typeshed.wsgi import WSGIEnvironment + + from .wrappers.request import Request + +_logger: logging.Logger | None = None + + +class _Missing: + def __repr__(self) -> str: + return "no value" + + def __reduce__(self) -> str: + return "_missing" + + +_missing = _Missing() + + +def _wsgi_decoding_dance(s: str) -> str: + return s.encode("latin1").decode(errors="replace") + + +def _wsgi_encoding_dance(s: str) -> str: + return s.encode().decode("latin1") + + +def _get_environ(obj: WSGIEnvironment | Request) -> WSGIEnvironment: + env = getattr(obj, "environ", obj) + assert isinstance( + env, dict + ), f"{type(obj).__name__!r} is not a WSGI environment (has to be a dict)" + return env + + +def _has_level_handler(logger: logging.Logger) -> bool: + """Check if there is a handler in the logging chain that will handle + the given logger's effective level. + """ + level = logger.getEffectiveLevel() + current = logger + + while current: + if any(handler.level <= level for handler in current.handlers): + return True + + if not current.propagate: + break + + current = current.parent # type: ignore + + return False + + +class _ColorStreamHandler(logging.StreamHandler): # type: ignore[type-arg] + """On Windows, wrap stream with Colorama for ANSI style support.""" + + def __init__(self) -> None: + try: + import colorama + except ImportError: + stream = None + else: + stream = colorama.AnsiToWin32(sys.stderr) + + super().__init__(stream) + + +def _log(type: str, message: str, *args: t.Any, **kwargs: t.Any) -> None: + """Log a message to the 'werkzeug' logger. + + The logger is created the first time it is needed. If there is no + level set, it is set to :data:`logging.INFO`. If there is no handler + for the logger's effective level, a :class:`logging.StreamHandler` + is added. + """ + global _logger + + if _logger is None: + _logger = logging.getLogger("werkzeug") + + if _logger.level == logging.NOTSET: + _logger.setLevel(logging.INFO) + + if not _has_level_handler(_logger): + _logger.addHandler(_ColorStreamHandler()) + + getattr(_logger, type)(message.rstrip(), *args, **kwargs) + + +@t.overload +def _dt_as_utc(dt: None) -> None: ... + + +@t.overload +def _dt_as_utc(dt: datetime) -> datetime: ... + + +def _dt_as_utc(dt: datetime | None) -> datetime | None: + if dt is None: + return dt + + if dt.tzinfo is None: + return dt.replace(tzinfo=timezone.utc) + elif dt.tzinfo != timezone.utc: + return dt.astimezone(timezone.utc) + + return dt + + +_TAccessorValue = t.TypeVar("_TAccessorValue") + + +class _DictAccessorProperty(t.Generic[_TAccessorValue]): + """Baseclass for `environ_property` and `header_property`.""" + + read_only = False + + def __init__( + self, + name: str, + default: _TAccessorValue | None = None, + load_func: t.Callable[[str], _TAccessorValue] | None = None, + dump_func: t.Callable[[_TAccessorValue], str] | None = None, + read_only: bool | None = None, + doc: str | None = None, + ) -> None: + self.name = name + self.default = default + self.load_func = load_func + self.dump_func = dump_func + if read_only is not None: + self.read_only = read_only + self.__doc__ = doc + + def lookup(self, instance: t.Any) -> t.MutableMapping[str, t.Any]: + raise NotImplementedError + + @t.overload + def __get__( + self, instance: None, owner: type + ) -> _DictAccessorProperty[_TAccessorValue]: ... + + @t.overload + def __get__(self, instance: t.Any, owner: type) -> _TAccessorValue: ... + + def __get__( + self, instance: t.Any | None, owner: type + ) -> _TAccessorValue | _DictAccessorProperty[_TAccessorValue]: + if instance is None: + return self + + storage = self.lookup(instance) + + if self.name not in storage: + return self.default # type: ignore + + value = storage[self.name] + + if self.load_func is not None: + try: + return self.load_func(value) + except (ValueError, TypeError): + return self.default # type: ignore + + return value # type: ignore + + def __set__(self, instance: t.Any, value: _TAccessorValue) -> None: + if self.read_only: + raise AttributeError("read only property") + + if self.dump_func is not None: + self.lookup(instance)[self.name] = self.dump_func(value) + else: + self.lookup(instance)[self.name] = value + + def __delete__(self, instance: t.Any) -> None: + if self.read_only: + raise AttributeError("read only property") + + self.lookup(instance).pop(self.name, None) + + def __repr__(self) -> str: + return f"<{type(self).__name__} {self.name}>" + + +_plain_int_re = re.compile(r"-?\d+", re.ASCII) + + +def _plain_int(value: str) -> int: + """Parse an int only if it is only ASCII digits and ``-``. + + This disallows ``+``, ``_``, and non-ASCII digits, which are accepted by ``int`` but + are not allowed in HTTP header values. + + Any leading or trailing whitespace is stripped + """ + value = value.strip() + if _plain_int_re.fullmatch(value) is None: + raise ValueError + + return int(value) diff --git a/gestao_raul/Lib/site-packages/werkzeug/_reloader.py b/gestao_raul/Lib/site-packages/werkzeug/_reloader.py new file mode 100644 index 0000000..8fd50b9 --- /dev/null +++ b/gestao_raul/Lib/site-packages/werkzeug/_reloader.py @@ -0,0 +1,471 @@ +from __future__ import annotations + +import fnmatch +import os +import subprocess +import sys +import threading +import time +import typing as t +from itertools import chain +from pathlib import PurePath + +from ._internal import _log + +# The various system prefixes where imports are found. Base values are +# different when running in a virtualenv. All reloaders will ignore the +# base paths (usually the system installation). The stat reloader won't +# scan the virtualenv paths, it will only include modules that are +# already imported. +_ignore_always = tuple({sys.base_prefix, sys.base_exec_prefix}) +prefix = {*_ignore_always, sys.prefix, sys.exec_prefix} + +if hasattr(sys, "real_prefix"): + # virtualenv < 20 + prefix.add(sys.real_prefix) + +_stat_ignore_scan = tuple(prefix) +del prefix +_ignore_common_dirs = { + "__pycache__", + ".git", + ".hg", + ".tox", + ".nox", + ".pytest_cache", + ".mypy_cache", +} + + +def _iter_module_paths() -> t.Iterator[str]: + """Find the filesystem paths associated with imported modules.""" + # List is in case the value is modified by the app while updating. + for module in list(sys.modules.values()): + name = getattr(module, "__file__", None) + + if name is None or name.startswith(_ignore_always): + continue + + while not os.path.isfile(name): + # Zip file, find the base file without the module path. + old = name + name = os.path.dirname(name) + + if name == old: # skip if it was all directories somehow + break + else: + yield name + + +def _remove_by_pattern(paths: set[str], exclude_patterns: set[str]) -> None: + for pattern in exclude_patterns: + paths.difference_update(fnmatch.filter(paths, pattern)) + + +def _find_stat_paths( + extra_files: set[str], exclude_patterns: set[str] +) -> t.Iterable[str]: + """Find paths for the stat reloader to watch. Returns imported + module files, Python files under non-system paths. Extra files and + Python files under extra directories can also be scanned. + + System paths have to be excluded for efficiency. Non-system paths, + such as a project root or ``sys.path.insert``, should be the paths + of interest to the user anyway. + """ + paths = set() + + for path in chain(list(sys.path), extra_files): + path = os.path.abspath(path) + + if os.path.isfile(path): + # zip file on sys.path, or extra file + paths.add(path) + continue + + parent_has_py = {os.path.dirname(path): True} + + for root, dirs, files in os.walk(path): + # Optimizations: ignore system prefixes, __pycache__ will + # have a py or pyc module at the import path, ignore some + # common known dirs such as version control and tool caches. + if ( + root.startswith(_stat_ignore_scan) + or os.path.basename(root) in _ignore_common_dirs + ): + dirs.clear() + continue + + has_py = False + + for name in files: + if name.endswith((".py", ".pyc")): + has_py = True + paths.add(os.path.join(root, name)) + + # Optimization: stop scanning a directory if neither it nor + # its parent contained Python files. + if not (has_py or parent_has_py[os.path.dirname(root)]): + dirs.clear() + continue + + parent_has_py[root] = has_py + + paths.update(_iter_module_paths()) + _remove_by_pattern(paths, exclude_patterns) + return paths + + +def _find_watchdog_paths( + extra_files: set[str], exclude_patterns: set[str] +) -> t.Iterable[str]: + """Find paths for the stat reloader to watch. Looks at the same + sources as the stat reloader, but watches everything under + directories instead of individual files. + """ + dirs = set() + + for name in chain(list(sys.path), extra_files): + name = os.path.abspath(name) + + if os.path.isfile(name): + name = os.path.dirname(name) + + dirs.add(name) + + for name in _iter_module_paths(): + dirs.add(os.path.dirname(name)) + + _remove_by_pattern(dirs, exclude_patterns) + return _find_common_roots(dirs) + + +def _find_common_roots(paths: t.Iterable[str]) -> t.Iterable[str]: + root: dict[str, dict[str, t.Any]] = {} + + for chunks in sorted((PurePath(x).parts for x in paths), key=len, reverse=True): + node = root + + for chunk in chunks: + node = node.setdefault(chunk, {}) + + node.clear() + + rv = set() + + def _walk(node: t.Mapping[str, dict[str, t.Any]], path: tuple[str, ...]) -> None: + for prefix, child in node.items(): + _walk(child, path + (prefix,)) + + # If there are no more nodes, and a path has been accumulated, add it. + # Path may be empty if the "" entry is in sys.path. + if not node and path: + rv.add(os.path.join(*path)) + + _walk(root, ()) + return rv + + +def _get_args_for_reloading() -> list[str]: + """Determine how the script was executed, and return the args needed + to execute it again in a new process. + """ + if sys.version_info >= (3, 10): + # sys.orig_argv, added in Python 3.10, contains the exact args used to invoke + # Python. Still replace argv[0] with sys.executable for accuracy. + return [sys.executable, *sys.orig_argv[1:]] + + rv = [sys.executable] + py_script = sys.argv[0] + args = sys.argv[1:] + # Need to look at main module to determine how it was executed. + __main__ = sys.modules["__main__"] + + # The value of __package__ indicates how Python was called. It may + # not exist if a setuptools script is installed as an egg. It may be + # set incorrectly for entry points created with pip on Windows. + if getattr(__main__, "__package__", None) is None or ( + os.name == "nt" + and __main__.__package__ == "" + and not os.path.exists(py_script) + and os.path.exists(f"{py_script}.exe") + ): + # Executed a file, like "python app.py". + py_script = os.path.abspath(py_script) + + if os.name == "nt": + # Windows entry points have ".exe" extension and should be + # called directly. + if not os.path.exists(py_script) and os.path.exists(f"{py_script}.exe"): + py_script += ".exe" + + if ( + os.path.splitext(sys.executable)[1] == ".exe" + and os.path.splitext(py_script)[1] == ".exe" + ): + rv.pop(0) + + rv.append(py_script) + else: + # Executed a module, like "python -m werkzeug.serving". + if os.path.isfile(py_script): + # Rewritten by Python from "-m script" to "/path/to/script.py". + py_module = t.cast(str, __main__.__package__) + name = os.path.splitext(os.path.basename(py_script))[0] + + if name != "__main__": + py_module += f".{name}" + else: + # Incorrectly rewritten by pydevd debugger from "-m script" to "script". + py_module = py_script + + rv.extend(("-m", py_module.lstrip("."))) + + rv.extend(args) + return rv + + +class ReloaderLoop: + name = "" + + def __init__( + self, + extra_files: t.Iterable[str] | None = None, + exclude_patterns: t.Iterable[str] | None = None, + interval: int | float = 1, + ) -> None: + self.extra_files: set[str] = {os.path.abspath(x) for x in extra_files or ()} + self.exclude_patterns: set[str] = set(exclude_patterns or ()) + self.interval = interval + + def __enter__(self) -> ReloaderLoop: + """Do any setup, then run one step of the watch to populate the + initial filesystem state. + """ + self.run_step() + return self + + def __exit__(self, exc_type, exc_val, exc_tb): # type: ignore + """Clean up any resources associated with the reloader.""" + pass + + def run(self) -> None: + """Continually run the watch step, sleeping for the configured + interval after each step. + """ + while True: + self.run_step() + time.sleep(self.interval) + + def run_step(self) -> None: + """Run one step for watching the filesystem. Called once to set + up initial state, then repeatedly to update it. + """ + pass + + def restart_with_reloader(self) -> int: + """Spawn a new Python interpreter with the same arguments as the + current one, but running the reloader thread. + """ + while True: + _log("info", f" * Restarting with {self.name}") + args = _get_args_for_reloading() + new_environ = os.environ.copy() + new_environ["WERKZEUG_RUN_MAIN"] = "true" + exit_code = subprocess.call(args, env=new_environ, close_fds=False) + + if exit_code != 3: + return exit_code + + def trigger_reload(self, filename: str) -> None: + self.log_reload(filename) + sys.exit(3) + + def log_reload(self, filename: str | bytes) -> None: + filename = os.path.abspath(filename) + _log("info", f" * Detected change in {filename!r}, reloading") + + +class StatReloaderLoop(ReloaderLoop): + name = "stat" + + def __enter__(self) -> ReloaderLoop: + self.mtimes: dict[str, float] = {} + return super().__enter__() + + def run_step(self) -> None: + for name in _find_stat_paths(self.extra_files, self.exclude_patterns): + try: + mtime = os.stat(name).st_mtime + except OSError: + continue + + old_time = self.mtimes.get(name) + + if old_time is None: + self.mtimes[name] = mtime + continue + + if mtime > old_time: + self.trigger_reload(name) + + +class WatchdogReloaderLoop(ReloaderLoop): + def __init__(self, *args: t.Any, **kwargs: t.Any) -> None: + from watchdog.events import EVENT_TYPE_CLOSED + from watchdog.events import EVENT_TYPE_CREATED + from watchdog.events import EVENT_TYPE_DELETED + from watchdog.events import EVENT_TYPE_MODIFIED + from watchdog.events import EVENT_TYPE_MOVED + from watchdog.events import FileModifiedEvent + from watchdog.events import PatternMatchingEventHandler + from watchdog.observers import Observer + + super().__init__(*args, **kwargs) + trigger_reload = self.trigger_reload + + class EventHandler(PatternMatchingEventHandler): + def on_any_event(self, event: FileModifiedEvent): # type: ignore + if event.event_type not in { + EVENT_TYPE_CLOSED, + EVENT_TYPE_CREATED, + EVENT_TYPE_DELETED, + EVENT_TYPE_MODIFIED, + EVENT_TYPE_MOVED, + }: + # skip events that don't involve changes to the file + return + + trigger_reload(event.src_path) + + reloader_name = Observer.__name__.lower() # type: ignore[attr-defined] + + if reloader_name.endswith("observer"): + reloader_name = reloader_name[:-8] + + self.name = f"watchdog ({reloader_name})" + self.observer = Observer() + # Extra patterns can be non-Python files, match them in addition + # to all Python files in default and extra directories. Ignore + # __pycache__ since a change there will always have a change to + # the source file (or initial pyc file) as well. Ignore Git and + # Mercurial internal changes. + extra_patterns = [p for p in self.extra_files if not os.path.isdir(p)] + self.event_handler = EventHandler( + patterns=["*.py", "*.pyc", "*.zip", *extra_patterns], + ignore_patterns=[ + *[f"*/{d}/*" for d in _ignore_common_dirs], + *self.exclude_patterns, + ], + ) + self.should_reload = False + + def trigger_reload(self, filename: str | bytes) -> None: + # This is called inside an event handler, which means throwing + # SystemExit has no effect. + # https://github.com/gorakhargosh/watchdog/issues/294 + self.should_reload = True + self.log_reload(filename) + + def __enter__(self) -> ReloaderLoop: + self.watches: dict[str, t.Any] = {} + self.observer.start() + return super().__enter__() + + def __exit__(self, exc_type, exc_val, exc_tb): # type: ignore + self.observer.stop() + self.observer.join() + + def run(self) -> None: + while not self.should_reload: + self.run_step() + time.sleep(self.interval) + + sys.exit(3) + + def run_step(self) -> None: + to_delete = set(self.watches) + + for path in _find_watchdog_paths(self.extra_files, self.exclude_patterns): + if path not in self.watches: + try: + self.watches[path] = self.observer.schedule( + self.event_handler, path, recursive=True + ) + except OSError: + # Clear this path from list of watches We don't want + # the same error message showing again in the next + # iteration. + self.watches[path] = None + + to_delete.discard(path) + + for path in to_delete: + watch = self.watches.pop(path, None) + + if watch is not None: + self.observer.unschedule(watch) + + +reloader_loops: dict[str, type[ReloaderLoop]] = { + "stat": StatReloaderLoop, + "watchdog": WatchdogReloaderLoop, +} + +try: + __import__("watchdog.observers") +except ImportError: + reloader_loops["auto"] = reloader_loops["stat"] +else: + reloader_loops["auto"] = reloader_loops["watchdog"] + + +def ensure_echo_on() -> None: + """Ensure that echo mode is enabled. Some tools such as PDB disable + it which causes usability issues after a reload.""" + # tcgetattr will fail if stdin isn't a tty + if sys.stdin is None or not sys.stdin.isatty(): + return + + try: + import termios + except ImportError: + return + + attributes = termios.tcgetattr(sys.stdin) + + if not attributes[3] & termios.ECHO: + attributes[3] |= termios.ECHO + termios.tcsetattr(sys.stdin, termios.TCSANOW, attributes) + + +def run_with_reloader( + main_func: t.Callable[[], None], + extra_files: t.Iterable[str] | None = None, + exclude_patterns: t.Iterable[str] | None = None, + interval: int | float = 1, + reloader_type: str = "auto", +) -> None: + """Run the given function in an independent Python interpreter.""" + import signal + + signal.signal(signal.SIGTERM, lambda *args: sys.exit(0)) + reloader = reloader_loops[reloader_type]( + extra_files=extra_files, exclude_patterns=exclude_patterns, interval=interval + ) + + try: + if os.environ.get("WERKZEUG_RUN_MAIN") == "true": + ensure_echo_on() + t = threading.Thread(target=main_func, args=()) + t.daemon = True + + # Enter the reloader to set up initial state, then start + # the app thread and reloader update loop. + with reloader: + t.start() + reloader.run() + else: + sys.exit(reloader.restart_with_reloader()) + except KeyboardInterrupt: + pass diff --git a/gestao_raul/Lib/site-packages/werkzeug/datastructures/__init__.py b/gestao_raul/Lib/site-packages/werkzeug/datastructures/__init__.py new file mode 100644 index 0000000..6582de0 --- /dev/null +++ b/gestao_raul/Lib/site-packages/werkzeug/datastructures/__init__.py @@ -0,0 +1,64 @@ +from __future__ import annotations + +import typing as t + +from .accept import Accept as Accept +from .accept import CharsetAccept as CharsetAccept +from .accept import LanguageAccept as LanguageAccept +from .accept import MIMEAccept as MIMEAccept +from .auth import Authorization as Authorization +from .auth import WWWAuthenticate as WWWAuthenticate +from .cache_control import RequestCacheControl as RequestCacheControl +from .cache_control import ResponseCacheControl as ResponseCacheControl +from .csp import ContentSecurityPolicy as ContentSecurityPolicy +from .etag import ETags as ETags +from .file_storage import FileMultiDict as FileMultiDict +from .file_storage import FileStorage as FileStorage +from .headers import EnvironHeaders as EnvironHeaders +from .headers import Headers as Headers +from .mixins import ImmutableDictMixin as ImmutableDictMixin +from .mixins import ImmutableHeadersMixin as ImmutableHeadersMixin +from .mixins import ImmutableListMixin as ImmutableListMixin +from .mixins import ImmutableMultiDictMixin as ImmutableMultiDictMixin +from .mixins import UpdateDictMixin as UpdateDictMixin +from .range import ContentRange as ContentRange +from .range import IfRange as IfRange +from .range import Range as Range +from .structures import CallbackDict as CallbackDict +from .structures import CombinedMultiDict as CombinedMultiDict +from .structures import HeaderSet as HeaderSet +from .structures import ImmutableDict as ImmutableDict +from .structures import ImmutableList as ImmutableList +from .structures import ImmutableMultiDict as ImmutableMultiDict +from .structures import ImmutableTypeConversionDict as ImmutableTypeConversionDict +from .structures import iter_multi_items as iter_multi_items +from .structures import MultiDict as MultiDict +from .structures import TypeConversionDict as TypeConversionDict + + +def __getattr__(name: str) -> t.Any: + import warnings + + if name == "OrderedMultiDict": + from .structures import _OrderedMultiDict + + warnings.warn( + "'OrderedMultiDict' is deprecated and will be removed in Werkzeug" + " 3.2. Use 'MultiDict' instead.", + DeprecationWarning, + stacklevel=2, + ) + return _OrderedMultiDict + + if name == "ImmutableOrderedMultiDict": + from .structures import _ImmutableOrderedMultiDict + + warnings.warn( + "'OrderedMultiDict' is deprecated and will be removed in Werkzeug" + " 3.2. Use 'ImmutableMultiDict' instead.", + DeprecationWarning, + stacklevel=2, + ) + return _ImmutableOrderedMultiDict + + raise AttributeError(name) diff --git a/gestao_raul/Lib/site-packages/werkzeug/datastructures/__pycache__/__init__.cpython-310.pyc b/gestao_raul/Lib/site-packages/werkzeug/datastructures/__pycache__/__init__.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..4cc1fcb1dfe10cfadf42edbf59701459d026751f GIT binary patch literal 2228 zcmb`ITTkOg6vypcoRAwK-0$WZ!X>D?QY%$eRT@|o33e;k71AiG*RhA-GPcw47#ajG zZD0E(`d0ND`L$1cg;gJV&LlAr+dj2M`Rg}l&KVz{nK}5yVorhQ(>H&#KLh#`2g6Si z245+P8vLdzimlixQ(Tp(DsqA)NYYN)DVB26Bn`Htod(v3CRqc{kc{LEaF%2xXW59G zBRR< zJQ~i0&mmD5mX5p|hx^_))U+wbh|CjKj$JntW{Xh_K6QR{JaCwdt$okI#FP7p6U6S* zv3s1xAYk-e$A<47UcAu%qBE!^=9f9X9AJ6?g@(yk%e1chpETC+-In7~JAMHKj`Wf{ zr*g029Qq-}*np{m`%~`2i_FJvZ@V4bj~l2FoQM7@Wk*nMxL92S(8cnN498bK4vSKr z>Cz|}2p(yiijaFB(xQIgbuBz%gC_-$hF=3a$9n)rj)mj%CF@Ec*On|?q$`sIfFlIM!h?vR?_g(e5sj54HZqp8@c%p6H^lbgsVN7pPom1Dp0h{CL7nEP$(Xg$* ztiP!1?*gh<tp>#ZG-cly~=AmzeE_8#Sd3N^oQKQ+0Mq>H~H$&Duaazp) z&gfnTDhXE~V|rV#4_DB9N^{>Z9M2JkQSWr4ykWE{v_QcPqYAGKFq^EJO%&8rBB3VW zr~Q@EJ|6Rz;5f*B1DJ23;2O34C}$X#Ar{3jIBs#IiEan#6{#Z9Oxa*LUI30afNLlj zbW54gEqNBlBOs(`VVg9pUZ3Rnf0*ZSB54I3UI2_3wQ-B<0um-lPFUlQJQ0a;?roDL77F_LzzRFM_E8wL|H;vM$u7L pP*zdaP_R~VM~CDE*rMzgu5X8oeu)<|cm+~Wpw>|R|MFK#{tc)6U+w?^ literal 0 HcmV?d00001 diff --git a/gestao_raul/Lib/site-packages/werkzeug/datastructures/__pycache__/accept.cpython-310.pyc b/gestao_raul/Lib/site-packages/werkzeug/datastructures/__pycache__/accept.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..5732050db30deab7c6f4bc63916eaff7c57f109c GIT binary patch literal 12499 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 tEpP(u{q^351qG1h&zRR0=Wq?I90DWb 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 T;l}}%GxzwFWmhhoU%2#Nxdu9K literal 0 HcmV?d00001 diff --git a/gestao_raul/Lib/site-packages/werkzeug/datastructures/__pycache__/csp.cpython-310.pyc b/gestao_raul/Lib/site-packages/werkzeug/datastructures/__pycache__/csp.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..3fddf05c42bd18a3e525fe47610ac7160d2c0cbc GIT binary patch literal 4928 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 F{SS=N3>N?Z literal 0 HcmV?d00001 diff --git a/gestao_raul/Lib/site-packages/werkzeug/datastructures/__pycache__/etag.cpython-310.pyc b/gestao_raul/Lib/site-packages/werkzeug/datastructures/__pycache__/etag.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..c24084e54d5751073d6c82fbc812fe3907390d7a GIT binary patch literal 4261 zcmb7H-*4Q;5#}y=CyG8viR{{z?Ies{$GucOIlr9L5mdLb+!!d-AW;$YDubf9s}toD zd0z6Q=x}q`YW@yET1_UbCKs$}PjdX( z;sf!am=xZ#O4AV^iI2s!n1NgopNLs;{+ZLPLb@P+25AD)MR5s|3+b|$gER^0int2N z6L-Zm@fM_Wqn$q$?~3c#ttLJbH^k2|H-%L<#e0yZ#jnIKL>!o<{`a--ENBp zq&Kl{LEM2ftDXJ4sI07ot*rN_-}sr#{d_yj{U}WQP3dI@#8H&O{6dL zu;s^@-%&D?N$$sqANo<+Zp(;(@_bzBmR^=M^xf*iqL$?!4CtLsOtKY6HueT&zNdpyj+v~rN zH`lW`m$y4%^d!U#-ce6_vfEk^VID$#H_E#JcY(labPftP2;wBpgWwz#W)%BwwZ>dN z%{|te)~DAfmlU-)iP~KuwfRL=N$iyjT==GOjtI2!vLVpF2JvkO0Lt0{Ootp$PWAb7 zj(htBsM9B6uwJ^HCVNs*m`Hy^tKRU_%^jRQ0s)~C`kjM(J54B-8ovLfRKAc~@H_Xz zcAH+)AwfYx_?j^BLnVDM&F_TR8o`rqBfw|}KyTw$k>^FV+W|sSf%8_~R#W&@gfUd)>I5(ZQW;%85#W79)Q+`BF~fRu z%OxK`ladbPO{31VaWA7#iUb3c&|kN2jGO~aYjTB67s=)ZcFeiOE2 z0b!-C&@c*6gUKWmm}NI<_8NxX%t*DFc}4jsJ}zK+-+B%xUa-z2Bu0`3Wce(Ej?Yr+ z#A4zyPFm*R!$kN-rB6AbQRnI^G!$->CV3bq*_kd(m9rYdI$p>K!wbB3-Z*k%{=Yf1 zW2uUO3uDgk-najgGp!_5BVV)wqqu$qDrAWEEcH8Smc>YMlthtC4Qn>yWCNt>Ap7O1 zGAWYyum%WpUU>^1o#nkEiryxlDF;;@haL03^!tR%l&?nTcLz6up#Y*79&%zdCCYVv z$PVqktM&yR zG2u;0ctrFD6sC&kB!HcOnBIq!wCMP;Ipv2_VKP5LImISwKL)77C`yy|LE}e?22}1^ zH_?{rN`fTfZ0C7L5$Du9G!T+?XN;vZ)pSVZY1Y(AXpz46KfyAcfoo2U6aF}X*;A2+ zWf8-=@*cW zQ|=dQYhU`?G8D+RKm&2vDA@ZwKJT9}gs>q)z9vI1Luf(KWA_k^OP_s*?&y2_ul%V_ z^aFNX*^-78DriXNjlF_+ESCYk z-&zi49aQTzVoTh%Y0wF5<>?B~){E zxE}2zWT}^I6$ebU-DFK&_O!wC^z2ousD})KCMI>wxH#53nW@)XL0XU%try^qqHYsq zmJ+c#OVva`RW=A7mzrEwR`}seVWU@itv20ol$}_qj~8}Z4ukkLN--Y<8&Imrh{QB( zD}q4J3}%nJZqyyq4W7K@wF&yEUe1-4>1o|HD;o5Q zrYY5%(|e7-H7B90fS2t zr8}5Wp;b3%Li6P#lBkHPyENRRVTp!c)38FrF>$q|(>lcq^*k9l=2{NpRn9o8{i`AMQnQV13^$KR}31K*>CjiKofNeXXy^gU}1 YoHjYjvcg?7&@2&?bYE7pYW#}*ALF#Mq5uE@ literal 0 HcmV?d00001 diff --git a/gestao_raul/Lib/site-packages/werkzeug/datastructures/__pycache__/file_storage.cpython-310.pyc b/gestao_raul/Lib/site-packages/werkzeug/datastructures/__pycache__/file_storage.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..05928047dedc9053f524d0fca418795ae923f1a7 GIT binary patch literal 6791 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 I|Mc8{0huDNu>b%7 literal 0 HcmV?d00001 diff --git a/gestao_raul/Lib/site-packages/werkzeug/datastructures/__pycache__/headers.cpython-310.pyc b/gestao_raul/Lib/site-packages/werkzeug/datastructures/__pycache__/headers.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..24a126030062280feccd1920b9d38d82ccf9f542 GIT binary patch literal 23362 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 MP|j{CPe1;D0G$l&ng9R* literal 0 HcmV?d00001 diff --git a/gestao_raul/Lib/site-packages/werkzeug/datastructures/__pycache__/mixins.cpython-310.pyc b/gestao_raul/Lib/site-packages/werkzeug/datastructures/__pycache__/mixins.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..30aa30f7867e45f80bd1729b84039322bb0a9977 GIT binary patch literal 13226 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 literal 0 HcmV?d00001 diff --git a/gestao_raul/Lib/site-packages/werkzeug/datastructures/__pycache__/structures.cpython-310.pyc b/gestao_raul/Lib/site-packages/werkzeug/datastructures/__pycache__/structures.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..7c0c03bd3a80ec2c6262fe5bb2d7330525789b78 GIT binary patch literal 44459 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 q_HP>> a = CharsetAccept([('ISO-8859-1', 1), ('utf-8', 0.7)]) + >>> a.best + 'ISO-8859-1' + >>> 'iso-8859-1' in a + True + >>> 'UTF8' in a + True + >>> 'utf7' in a + False + + To get the quality for an item you can use normal item lookup: + + >>> print a['utf-8'] + 0.7 + >>> a['utf7'] + 0 + + .. versionchanged:: 0.5 + :class:`Accept` objects are forced immutable now. + + .. versionchanged:: 1.0.0 + :class:`Accept` internal values are no longer ordered + alphabetically for equal quality tags. Instead the initial + order is preserved. + + """ + + def __init__( + self, values: Accept | cabc.Iterable[tuple[str, float]] | None = () + ) -> None: + if values is None: + super().__init__() + self.provided = False + elif isinstance(values, Accept): + self.provided = values.provided + super().__init__(values) + else: + self.provided = True + values = sorted( + values, key=lambda x: (self._specificity(x[0]), x[1]), reverse=True + ) + super().__init__(values) + + def _specificity(self, value: str) -> tuple[bool, ...]: + """Returns a tuple describing the value's specificity.""" + return (value != "*",) + + def _value_matches(self, value: str, item: str) -> bool: + """Check if a value matches a given accept item.""" + return item == "*" or item.lower() == value.lower() + + @t.overload + def __getitem__(self, key: str) -> float: ... + @t.overload + def __getitem__(self, key: t.SupportsIndex) -> tuple[str, float]: ... + @t.overload + def __getitem__(self, key: slice) -> list[tuple[str, float]]: ... + def __getitem__( + self, key: str | t.SupportsIndex | slice + ) -> float | tuple[str, float] | list[tuple[str, float]]: + """Besides index lookup (getting item n) you can also pass it a string + to get the quality for the item. If the item is not in the list, the + returned quality is ``0``. + """ + if isinstance(key, str): + return self.quality(key) + return list.__getitem__(self, key) + + def quality(self, key: str) -> float: + """Returns the quality of the key. + + .. versionadded:: 0.6 + In previous versions you had to use the item-lookup syntax + (eg: ``obj[key]`` instead of ``obj.quality(key)``) + """ + for item, quality in self: + if self._value_matches(key, item): + return quality + return 0 + + def __contains__(self, value: str) -> bool: # type: ignore[override] + for item, _quality in self: + if self._value_matches(value, item): + return True + return False + + def __repr__(self) -> str: + pairs_str = ", ".join(f"({x!r}, {y})" for x, y in self) + return f"{type(self).__name__}([{pairs_str}])" + + def index(self, key: str | tuple[str, float]) -> int: # type: ignore[override] + """Get the position of an entry or raise :exc:`ValueError`. + + :param key: The key to be looked up. + + .. versionchanged:: 0.5 + This used to raise :exc:`IndexError`, which was inconsistent + with the list API. + """ + if isinstance(key, str): + for idx, (item, _quality) in enumerate(self): + if self._value_matches(key, item): + return idx + raise ValueError(key) + return list.index(self, key) + + def find(self, key: str | tuple[str, float]) -> int: + """Get the position of an entry or return -1. + + :param key: The key to be looked up. + """ + try: + return self.index(key) + except ValueError: + return -1 + + def values(self) -> cabc.Iterator[str]: + """Iterate over all values.""" + for item in self: + yield item[0] + + def to_header(self) -> str: + """Convert the header set into an HTTP header string.""" + result = [] + for value, quality in self: + if quality != 1: + value = f"{value};q={quality}" + result.append(value) + return ",".join(result) + + def __str__(self) -> str: + return self.to_header() + + def _best_single_match(self, match: str) -> tuple[str, float] | None: + for client_item, quality in self: + if self._value_matches(match, client_item): + # self is sorted by specificity descending, we can exit + return client_item, quality + return None + + @t.overload + def best_match(self, matches: cabc.Iterable[str]) -> str | None: ... + @t.overload + def best_match(self, matches: cabc.Iterable[str], default: str = ...) -> str: ... + def best_match( + self, matches: cabc.Iterable[str], default: str | None = None + ) -> str | None: + """Returns the best match from a list of possible matches based + on the specificity and quality of the client. If two items have the + same quality and specificity, the one is returned that comes first. + + :param matches: a list of matches to check for + :param default: the value that is returned if none match + """ + result = default + best_quality: float = -1 + best_specificity: tuple[float, ...] = (-1,) + for server_item in matches: + match = self._best_single_match(server_item) + if not match: + continue + client_item, quality = match + specificity = self._specificity(client_item) + if quality <= 0 or quality < best_quality: + continue + # better quality or same quality but more specific => better match + if quality > best_quality or specificity > best_specificity: + result = server_item + best_quality = quality + best_specificity = specificity + return result + + @property + def best(self) -> str | None: + """The best match as value.""" + if self: + return self[0][0] + + return None + + +_mime_split_re = re.compile(r"/|(?:\s*;\s*)") + + +def _normalize_mime(value: str) -> list[str]: + return _mime_split_re.split(value.lower()) + + +class MIMEAccept(Accept): + """Like :class:`Accept` but with special methods and behavior for + mimetypes. + """ + + def _specificity(self, value: str) -> tuple[bool, ...]: + return tuple(x != "*" for x in _mime_split_re.split(value)) + + def _value_matches(self, value: str, item: str) -> bool: + # item comes from the client, can't match if it's invalid. + if "/" not in item: + return False + + # value comes from the application, tell the developer when it + # doesn't look valid. + if "/" not in value: + raise ValueError(f"invalid mimetype {value!r}") + + # Split the match value into type, subtype, and a sorted list of parameters. + normalized_value = _normalize_mime(value) + value_type, value_subtype = normalized_value[:2] + value_params = sorted(normalized_value[2:]) + + # "*/*" is the only valid value that can start with "*". + if value_type == "*" and value_subtype != "*": + raise ValueError(f"invalid mimetype {value!r}") + + # Split the accept item into type, subtype, and parameters. + normalized_item = _normalize_mime(item) + item_type, item_subtype = normalized_item[:2] + item_params = sorted(normalized_item[2:]) + + # "*/not-*" from the client is invalid, can't match. + if item_type == "*" and item_subtype != "*": + return False + + return ( + (item_type == "*" and item_subtype == "*") + or (value_type == "*" and value_subtype == "*") + ) or ( + item_type == value_type + and ( + item_subtype == "*" + or value_subtype == "*" + or (item_subtype == value_subtype and item_params == value_params) + ) + ) + + @property + def accept_html(self) -> bool: + """True if this object accepts HTML.""" + return "text/html" in self or self.accept_xhtml # type: ignore[comparison-overlap] + + @property + def accept_xhtml(self) -> bool: + """True if this object accepts XHTML.""" + return "application/xhtml+xml" in self or "application/xml" in self # type: ignore[comparison-overlap] + + @property + def accept_json(self) -> bool: + """True if this object accepts JSON.""" + return "application/json" in self # type: ignore[comparison-overlap] + + +_locale_delim_re = re.compile(r"[_-]") + + +def _normalize_lang(value: str) -> list[str]: + """Process a language tag for matching.""" + return _locale_delim_re.split(value.lower()) + + +class LanguageAccept(Accept): + """Like :class:`Accept` but with normalization for language tags.""" + + def _value_matches(self, value: str, item: str) -> bool: + return item == "*" or _normalize_lang(value) == _normalize_lang(item) + + @t.overload + def best_match(self, matches: cabc.Iterable[str]) -> str | None: ... + @t.overload + def best_match(self, matches: cabc.Iterable[str], default: str = ...) -> str: ... + def best_match( + self, matches: cabc.Iterable[str], default: str | None = None + ) -> str | None: + """Given a list of supported values, finds the best match from + the list of accepted values. + + Language tags are normalized for the purpose of matching, but + are returned unchanged. + + If no exact match is found, this will fall back to matching + the first subtag (primary language only), first with the + accepted values then with the match values. This partial is not + applied to any other language subtags. + + The default is returned if no exact or fallback match is found. + + :param matches: A list of supported languages to find a match. + :param default: The value that is returned if none match. + """ + # Look for an exact match first. If a client accepts "en-US", + # "en-US" is a valid match at this point. + result = super().best_match(matches) + + if result is not None: + return result + + # Fall back to accepting primary tags. If a client accepts + # "en-US", "en" is a valid match at this point. Need to use + # re.split to account for 2 or 3 letter codes. + fallback = Accept( + [(_locale_delim_re.split(item[0], 1)[0], item[1]) for item in self] + ) + result = fallback.best_match(matches) + + if result is not None: + return result + + # Fall back to matching primary tags. If the client accepts + # "en", "en-US" is a valid match at this point. + fallback_matches = [_locale_delim_re.split(item, 1)[0] for item in matches] + result = super().best_match(fallback_matches) + + # Return a value from the original match list. Find the first + # original value that starts with the matched primary tag. + if result is not None: + return next(item for item in matches if item.startswith(result)) + + return default + + +class CharsetAccept(Accept): + """Like :class:`Accept` but with normalization for charsets.""" + + def _value_matches(self, value: str, item: str) -> bool: + def _normalize(name: str) -> str: + try: + return codecs.lookup(name).name + except LookupError: + return name.lower() + + return item == "*" or _normalize(value) == _normalize(item) diff --git a/gestao_raul/Lib/site-packages/werkzeug/datastructures/auth.py b/gestao_raul/Lib/site-packages/werkzeug/datastructures/auth.py new file mode 100644 index 0000000..42f7aa4 --- /dev/null +++ b/gestao_raul/Lib/site-packages/werkzeug/datastructures/auth.py @@ -0,0 +1,317 @@ +from __future__ import annotations + +import base64 +import binascii +import collections.abc as cabc +import typing as t + +from ..http import dump_header +from ..http import parse_dict_header +from ..http import quote_header_value +from .structures import CallbackDict + +if t.TYPE_CHECKING: + import typing_extensions as te + + +class Authorization: + """Represents the parts of an ``Authorization`` request header. + + :attr:`.Request.authorization` returns an instance if the header is set. + + An instance can be used with the test :class:`.Client` request methods' ``auth`` + parameter to send the header in test requests. + + Depending on the auth scheme, either :attr:`parameters` or :attr:`token` will be + set. The ``Basic`` scheme's token is decoded into the ``username`` and ``password`` + parameters. + + For convenience, ``auth["key"]`` and ``auth.key`` both access the key in the + :attr:`parameters` dict, along with ``auth.get("key")`` and ``"key" in auth``. + + .. versionchanged:: 2.3 + The ``token`` parameter and attribute was added to support auth schemes that use + a token instead of parameters, such as ``Bearer``. + + .. versionchanged:: 2.3 + The object is no longer a ``dict``. + + .. versionchanged:: 0.5 + The object is an immutable dict. + """ + + def __init__( + self, + auth_type: str, + data: dict[str, str | None] | None = None, + token: str | None = None, + ) -> None: + self.type = auth_type + """The authorization scheme, like ``basic``, ``digest``, or ``bearer``.""" + + if data is None: + data = {} + + self.parameters = data + """A dict of parameters parsed from the header. Either this or :attr:`token` + will have a value for a given scheme. + """ + + self.token = token + """A token parsed from the header. Either this or :attr:`parameters` will have a + value for a given scheme. + + .. versionadded:: 2.3 + """ + + def __getattr__(self, name: str) -> str | None: + return self.parameters.get(name) + + def __getitem__(self, name: str) -> str | None: + return self.parameters.get(name) + + def get(self, key: str, default: str | None = None) -> str | None: + return self.parameters.get(key, default) + + def __contains__(self, key: str) -> bool: + return key in self.parameters + + def __eq__(self, other: object) -> bool: + if not isinstance(other, Authorization): + return NotImplemented + + return ( + other.type == self.type + and other.token == self.token + and other.parameters == self.parameters + ) + + @classmethod + def from_header(cls, value: str | None) -> te.Self | None: + """Parse an ``Authorization`` header value and return an instance, or ``None`` + if the value is empty. + + :param value: The header value to parse. + + .. versionadded:: 2.3 + """ + if not value: + return None + + scheme, _, rest = value.partition(" ") + scheme = scheme.lower() + rest = rest.strip() + + if scheme == "basic": + try: + username, _, password = base64.b64decode(rest).decode().partition(":") + except (binascii.Error, UnicodeError): + return None + + return cls(scheme, {"username": username, "password": password}) + + if "=" in rest.rstrip("="): + # = that is not trailing, this is parameters. + return cls(scheme, parse_dict_header(rest), None) + + # No = or only trailing =, this is a token. + return cls(scheme, None, rest) + + def to_header(self) -> str: + """Produce an ``Authorization`` header value representing this data. + + .. versionadded:: 2.0 + """ + if self.type == "basic": + value = base64.b64encode( + f"{self.username}:{self.password}".encode() + ).decode("ascii") + return f"Basic {value}" + + if self.token is not None: + return f"{self.type.title()} {self.token}" + + return f"{self.type.title()} {dump_header(self.parameters)}" + + def __str__(self) -> str: + return self.to_header() + + def __repr__(self) -> str: + return f"<{type(self).__name__} {self.to_header()}>" + + +class WWWAuthenticate: + """Represents the parts of a ``WWW-Authenticate`` response header. + + Set :attr:`.Response.www_authenticate` to an instance of list of instances to set + values for this header in the response. Modifying this instance will modify the + header value. + + Depending on the auth scheme, either :attr:`parameters` or :attr:`token` should be + set. The ``Basic`` scheme will encode ``username`` and ``password`` parameters to a + token. + + For convenience, ``auth["key"]`` and ``auth.key`` both act on the :attr:`parameters` + dict, and can be used to get, set, or delete parameters. ``auth.get("key")`` and + ``"key" in auth`` are also provided. + + .. versionchanged:: 2.3 + The ``token`` parameter and attribute was added to support auth schemes that use + a token instead of parameters, such as ``Bearer``. + + .. versionchanged:: 2.3 + The object is no longer a ``dict``. + + .. versionchanged:: 2.3 + The ``on_update`` parameter was removed. + """ + + def __init__( + self, + auth_type: str, + values: dict[str, str | None] | None = None, + token: str | None = None, + ): + self._type = auth_type.lower() + self._parameters: dict[str, str | None] = CallbackDict( + values, lambda _: self._trigger_on_update() + ) + self._token = token + self._on_update: cabc.Callable[[WWWAuthenticate], None] | None = None + + def _trigger_on_update(self) -> None: + if self._on_update is not None: + self._on_update(self) + + @property + def type(self) -> str: + """The authorization scheme, like ``basic``, ``digest``, or ``bearer``.""" + return self._type + + @type.setter + def type(self, value: str) -> None: + self._type = value + self._trigger_on_update() + + @property + def parameters(self) -> dict[str, str | None]: + """A dict of parameters for the header. Only one of this or :attr:`token` should + have a value for a given scheme. + """ + return self._parameters + + @parameters.setter + def parameters(self, value: dict[str, str]) -> None: + self._parameters = CallbackDict(value, lambda _: self._trigger_on_update()) + self._trigger_on_update() + + @property + def token(self) -> str | None: + """A dict of parameters for the header. Only one of this or :attr:`token` should + have a value for a given scheme. + """ + return self._token + + @token.setter + def token(self, value: str | None) -> None: + """A token for the header. Only one of this or :attr:`parameters` should have a + value for a given scheme. + + .. versionadded:: 2.3 + """ + self._token = value + self._trigger_on_update() + + def __getitem__(self, key: str) -> str | None: + return self.parameters.get(key) + + def __setitem__(self, key: str, value: str | None) -> None: + if value is None: + if key in self.parameters: + del self.parameters[key] + else: + self.parameters[key] = value + + self._trigger_on_update() + + def __delitem__(self, key: str) -> None: + if key in self.parameters: + del self.parameters[key] + self._trigger_on_update() + + def __getattr__(self, name: str) -> str | None: + return self[name] + + def __setattr__(self, name: str, value: str | None) -> None: + if name in {"_type", "_parameters", "_token", "_on_update"}: + super().__setattr__(name, value) + else: + self[name] = value + + def __delattr__(self, name: str) -> None: + del self[name] + + def __contains__(self, key: str) -> bool: + return key in self.parameters + + def __eq__(self, other: object) -> bool: + if not isinstance(other, WWWAuthenticate): + return NotImplemented + + return ( + other.type == self.type + and other.token == self.token + and other.parameters == self.parameters + ) + + def get(self, key: str, default: str | None = None) -> str | None: + return self.parameters.get(key, default) + + @classmethod + def from_header(cls, value: str | None) -> te.Self | None: + """Parse a ``WWW-Authenticate`` header value and return an instance, or ``None`` + if the value is empty. + + :param value: The header value to parse. + + .. versionadded:: 2.3 + """ + if not value: + return None + + scheme, _, rest = value.partition(" ") + scheme = scheme.lower() + rest = rest.strip() + + if "=" in rest.rstrip("="): + # = that is not trailing, this is parameters. + return cls(scheme, parse_dict_header(rest), None) + + # No = or only trailing =, this is a token. + return cls(scheme, None, rest) + + def to_header(self) -> str: + """Produce a ``WWW-Authenticate`` header value representing this data.""" + if self.token is not None: + return f"{self.type.title()} {self.token}" + + if self.type == "digest": + items = [] + + for key, value in self.parameters.items(): + if key in {"realm", "domain", "nonce", "opaque", "qop"}: + value = quote_header_value(value, allow_token=False) + else: + value = quote_header_value(value) + + items.append(f"{key}={value}") + + return f"Digest {', '.join(items)}" + + return f"{self.type.title()} {dump_header(self.parameters)}" + + def __str__(self) -> str: + return self.to_header() + + def __repr__(self) -> str: + return f"<{type(self).__name__} {self.to_header()}>" diff --git a/gestao_raul/Lib/site-packages/werkzeug/datastructures/cache_control.py b/gestao_raul/Lib/site-packages/werkzeug/datastructures/cache_control.py new file mode 100644 index 0000000..8d700ab --- /dev/null +++ b/gestao_raul/Lib/site-packages/werkzeug/datastructures/cache_control.py @@ -0,0 +1,273 @@ +from __future__ import annotations + +import collections.abc as cabc +import typing as t +from inspect import cleandoc + +from .mixins import ImmutableDictMixin +from .structures import CallbackDict + + +def cache_control_property( + key: str, empty: t.Any, type: type[t.Any] | None, *, doc: str | None = None +) -> t.Any: + """Return a new property object for a cache header. Useful if you + want to add support for a cache extension in a subclass. + + :param key: The attribute name present in the parsed cache-control header dict. + :param empty: The value to use if the key is present without a value. + :param type: The type to convert the string value to instead of a string. If + conversion raises a ``ValueError``, the returned value is ``None``. + :param doc: The docstring for the property. If not given, it is generated + based on the other params. + + .. versionchanged:: 3.1 + Added the ``doc`` param. + + .. versionchanged:: 2.0 + Renamed from ``cache_property``. + """ + if doc is None: + parts = [f"The ``{key}`` attribute."] + + if type is bool: + parts.append("A ``bool``, either present or not.") + else: + if type is None: + parts.append("A ``str``,") + else: + parts.append(f"A ``{type.__name__}``,") + + if empty is not None: + parts.append(f"``{empty!r}`` if present with no value,") + + parts.append("or ``None`` if not present.") + + doc = " ".join(parts) + + return property( + lambda x: x._get_cache_value(key, empty, type), + lambda x, v: x._set_cache_value(key, v, type), + lambda x: x._del_cache_value(key), + doc=cleandoc(doc), + ) + + +class _CacheControl(CallbackDict[str, t.Optional[str]]): + """Subclass of a dict that stores values for a Cache-Control header. It + has accessors for all the cache-control directives specified in RFC 2616. + The class does not differentiate between request and response directives. + + Because the cache-control directives in the HTTP header use dashes the + python descriptors use underscores for that. + + To get a header of the :class:`CacheControl` object again you can convert + the object into a string or call the :meth:`to_header` method. If you plan + to subclass it and add your own items have a look at the sourcecode for + that class. + + .. versionchanged:: 3.1 + Dict values are always ``str | None``. Setting properties will + convert the value to a string. Setting a non-bool property to + ``False`` is equivalent to setting it to ``None``. Getting typed + properties will return ``None`` if conversion raises + ``ValueError``, rather than the string. + + .. versionchanged:: 2.1 + Setting int properties such as ``max_age`` will convert the + value to an int. + + .. versionchanged:: 0.4 + Setting ``no_cache`` or ``private`` to ``True`` will set the + implicit value ``"*"``. + """ + + no_store: bool = cache_control_property("no-store", None, bool) + max_age: int | None = cache_control_property("max-age", None, int) + no_transform: bool = cache_control_property("no-transform", None, bool) + stale_if_error: int | None = cache_control_property("stale-if-error", None, int) + + def __init__( + self, + values: cabc.Mapping[str, t.Any] | cabc.Iterable[tuple[str, t.Any]] | None = (), + on_update: cabc.Callable[[_CacheControl], None] | None = None, + ): + super().__init__(values, on_update) + self.provided = values is not None + + def _get_cache_value( + self, key: str, empty: t.Any, type: type[t.Any] | None + ) -> t.Any: + """Used internally by the accessor properties.""" + if type is bool: + return key in self + + if key not in self: + return None + + if (value := self[key]) is None: + return empty + + if type is not None: + try: + value = type(value) + except ValueError: + return None + + return value + + def _set_cache_value( + self, key: str, value: t.Any, type: type[t.Any] | None + ) -> None: + """Used internally by the accessor properties.""" + if type is bool: + if value: + self[key] = None + else: + self.pop(key, None) + elif value is None or value is False: + self.pop(key, None) + elif value is True: + self[key] = None + else: + if type is not None: + value = type(value) + + self[key] = str(value) + + def _del_cache_value(self, key: str) -> None: + """Used internally by the accessor properties.""" + if key in self: + del self[key] + + def to_header(self) -> str: + """Convert the stored values into a cache control header.""" + return http.dump_header(self) + + def __str__(self) -> str: + return self.to_header() + + def __repr__(self) -> str: + kv_str = " ".join(f"{k}={v!r}" for k, v in sorted(self.items())) + return f"<{type(self).__name__} {kv_str}>" + + cache_property = staticmethod(cache_control_property) + + +class RequestCacheControl(ImmutableDictMixin[str, t.Optional[str]], _CacheControl): # type: ignore[misc] + """A cache control for requests. This is immutable and gives access + to all the request-relevant cache control headers. + + To get a header of the :class:`RequestCacheControl` object again you can + convert the object into a string or call the :meth:`to_header` method. If + you plan to subclass it and add your own items have a look at the sourcecode + for that class. + + .. versionchanged:: 3.1 + Dict values are always ``str | None``. Setting properties will + convert the value to a string. Setting a non-bool property to + ``False`` is equivalent to setting it to ``None``. Getting typed + properties will return ``None`` if conversion raises + ``ValueError``, rather than the string. + + .. versionchanged:: 3.1 + ``max_age`` is ``None`` if present without a value, rather + than ``-1``. + + .. versionchanged:: 3.1 + ``no_cache`` is a boolean, it is ``True`` instead of ``"*"`` + when present. + + .. versionchanged:: 3.1 + ``max_stale`` is ``True`` if present without a value, rather + than ``"*"``. + + .. versionchanged:: 3.1 + ``no_transform`` is a boolean. Previously it was mistakenly + always ``None``. + + .. versionchanged:: 3.1 + ``min_fresh`` is ``None`` if present without a value, rather + than ``"*"``. + + .. versionchanged:: 2.1 + Setting int properties such as ``max_age`` will convert the + value to an int. + + .. versionadded:: 0.5 + Response-only properties are not present on this request class. + """ + + no_cache: bool = cache_control_property("no-cache", None, bool) + max_stale: int | t.Literal[True] | None = cache_control_property( + "max-stale", + True, + int, + ) + min_fresh: int | None = cache_control_property("min-fresh", None, int) + only_if_cached: bool = cache_control_property("only-if-cached", None, bool) + + +class ResponseCacheControl(_CacheControl): + """A cache control for responses. Unlike :class:`RequestCacheControl` + this is mutable and gives access to response-relevant cache control + headers. + + To get a header of the :class:`ResponseCacheControl` object again you can + convert the object into a string or call the :meth:`to_header` method. If + you plan to subclass it and add your own items have a look at the sourcecode + for that class. + + .. versionchanged:: 3.1 + Dict values are always ``str | None``. Setting properties will + convert the value to a string. Setting a non-bool property to + ``False`` is equivalent to setting it to ``None``. Getting typed + properties will return ``None`` if conversion raises + ``ValueError``, rather than the string. + + .. versionchanged:: 3.1 + ``no_cache`` is ``True`` if present without a value, rather than + ``"*"``. + + .. versionchanged:: 3.1 + ``private`` is ``True`` if present without a value, rather than + ``"*"``. + + .. versionchanged:: 3.1 + ``no_transform`` is a boolean. Previously it was mistakenly + always ``None``. + + .. versionchanged:: 3.1 + Added the ``must_understand``, ``stale_while_revalidate``, and + ``stale_if_error`` properties. + + .. versionchanged:: 2.1.1 + ``s_maxage`` converts the value to an int. + + .. versionchanged:: 2.1 + Setting int properties such as ``max_age`` will convert the + value to an int. + + .. versionadded:: 0.5 + Request-only properties are not present on this response class. + """ + + no_cache: str | t.Literal[True] | None = cache_control_property( + "no-cache", True, None + ) + public: bool = cache_control_property("public", None, bool) + private: str | t.Literal[True] | None = cache_control_property( + "private", True, None + ) + must_revalidate: bool = cache_control_property("must-revalidate", None, bool) + proxy_revalidate: bool = cache_control_property("proxy-revalidate", None, bool) + s_maxage: int | None = cache_control_property("s-maxage", None, int) + immutable: bool = cache_control_property("immutable", None, bool) + must_understand: bool = cache_control_property("must-understand", None, bool) + stale_while_revalidate: int | None = cache_control_property( + "stale-while-revalidate", None, int + ) + + +# circular dependencies +from .. import http diff --git a/gestao_raul/Lib/site-packages/werkzeug/datastructures/csp.py b/gestao_raul/Lib/site-packages/werkzeug/datastructures/csp.py new file mode 100644 index 0000000..0353eeb --- /dev/null +++ b/gestao_raul/Lib/site-packages/werkzeug/datastructures/csp.py @@ -0,0 +1,100 @@ +from __future__ import annotations + +import collections.abc as cabc +import typing as t + +from .structures import CallbackDict + + +def csp_property(key: str) -> t.Any: + """Return a new property object for a content security policy header. + Useful if you want to add support for a csp extension in a + subclass. + """ + return property( + lambda x: x._get_value(key), + lambda x, v: x._set_value(key, v), + lambda x: x._del_value(key), + f"accessor for {key!r}", + ) + + +class ContentSecurityPolicy(CallbackDict[str, str]): + """Subclass of a dict that stores values for a Content Security Policy + header. It has accessors for all the level 3 policies. + + Because the csp directives in the HTTP header use dashes the + python descriptors use underscores for that. + + To get a header of the :class:`ContentSecuirtyPolicy` object again + you can convert the object into a string or call the + :meth:`to_header` method. If you plan to subclass it and add your + own items have a look at the sourcecode for that class. + + .. versionadded:: 1.0.0 + Support for Content Security Policy headers was added. + + """ + + base_uri: str | None = csp_property("base-uri") + child_src: str | None = csp_property("child-src") + connect_src: str | None = csp_property("connect-src") + default_src: str | None = csp_property("default-src") + font_src: str | None = csp_property("font-src") + form_action: str | None = csp_property("form-action") + frame_ancestors: str | None = csp_property("frame-ancestors") + frame_src: str | None = csp_property("frame-src") + img_src: str | None = csp_property("img-src") + manifest_src: str | None = csp_property("manifest-src") + media_src: str | None = csp_property("media-src") + navigate_to: str | None = csp_property("navigate-to") + object_src: str | None = csp_property("object-src") + prefetch_src: str | None = csp_property("prefetch-src") + plugin_types: str | None = csp_property("plugin-types") + report_to: str | None = csp_property("report-to") + report_uri: str | None = csp_property("report-uri") + sandbox: str | None = csp_property("sandbox") + script_src: str | None = csp_property("script-src") + script_src_attr: str | None = csp_property("script-src-attr") + script_src_elem: str | None = csp_property("script-src-elem") + style_src: str | None = csp_property("style-src") + style_src_attr: str | None = csp_property("style-src-attr") + style_src_elem: str | None = csp_property("style-src-elem") + worker_src: str | None = csp_property("worker-src") + + def __init__( + self, + values: cabc.Mapping[str, str] | cabc.Iterable[tuple[str, str]] | None = (), + on_update: cabc.Callable[[ContentSecurityPolicy], None] | None = None, + ) -> None: + super().__init__(values, on_update) + self.provided = values is not None + + def _get_value(self, key: str) -> str | None: + """Used internally by the accessor properties.""" + return self.get(key) + + def _set_value(self, key: str, value: str | None) -> None: + """Used internally by the accessor properties.""" + if value is None: + self.pop(key, None) + else: + self[key] = value + + def _del_value(self, key: str) -> None: + """Used internally by the accessor properties.""" + if key in self: + del self[key] + + def to_header(self) -> str: + """Convert the stored values into a cache control header.""" + from ..http import dump_csp_header + + return dump_csp_header(self) + + def __str__(self) -> str: + return self.to_header() + + def __repr__(self) -> str: + kv_str = " ".join(f"{k}={v!r}" for k, v in sorted(self.items())) + return f"<{type(self).__name__} {kv_str}>" diff --git a/gestao_raul/Lib/site-packages/werkzeug/datastructures/etag.py b/gestao_raul/Lib/site-packages/werkzeug/datastructures/etag.py new file mode 100644 index 0000000..a4ef342 --- /dev/null +++ b/gestao_raul/Lib/site-packages/werkzeug/datastructures/etag.py @@ -0,0 +1,106 @@ +from __future__ import annotations + +import collections.abc as cabc + + +class ETags(cabc.Collection[str]): + """A set that can be used to check if one etag is present in a collection + of etags. + """ + + def __init__( + self, + strong_etags: cabc.Iterable[str] | None = None, + weak_etags: cabc.Iterable[str] | None = None, + star_tag: bool = False, + ): + if not star_tag and strong_etags: + self._strong = frozenset(strong_etags) + else: + self._strong = frozenset() + + self._weak = frozenset(weak_etags or ()) + self.star_tag = star_tag + + def as_set(self, include_weak: bool = False) -> set[str]: + """Convert the `ETags` object into a python set. Per default all the + weak etags are not part of this set.""" + rv = set(self._strong) + if include_weak: + rv.update(self._weak) + return rv + + def is_weak(self, etag: str) -> bool: + """Check if an etag is weak.""" + return etag in self._weak + + def is_strong(self, etag: str) -> bool: + """Check if an etag is strong.""" + return etag in self._strong + + def contains_weak(self, etag: str) -> bool: + """Check if an etag is part of the set including weak and strong tags.""" + return self.is_weak(etag) or self.contains(etag) + + def contains(self, etag: str) -> bool: + """Check if an etag is part of the set ignoring weak tags. + It is also possible to use the ``in`` operator. + """ + if self.star_tag: + return True + return self.is_strong(etag) + + def contains_raw(self, etag: str) -> bool: + """When passed a quoted tag it will check if this tag is part of the + set. If the tag is weak it is checked against weak and strong tags, + otherwise strong only.""" + from ..http import unquote_etag + + etag, weak = unquote_etag(etag) + if weak: + return self.contains_weak(etag) + return self.contains(etag) + + def to_header(self) -> str: + """Convert the etags set into a HTTP header string.""" + if self.star_tag: + return "*" + return ", ".join( + [f'"{x}"' for x in self._strong] + [f'W/"{x}"' for x in self._weak] + ) + + def __call__( + self, + etag: str | None = None, + data: bytes | None = None, + include_weak: bool = False, + ) -> bool: + if etag is None: + if data is None: + raise TypeError("'data' is required when 'etag' is not given.") + + from ..http import generate_etag + + etag = generate_etag(data) + if include_weak: + if etag in self._weak: + return True + return etag in self._strong + + def __bool__(self) -> bool: + return bool(self.star_tag or self._strong or self._weak) + + def __str__(self) -> str: + return self.to_header() + + def __len__(self) -> int: + return len(self._strong) + + def __iter__(self) -> cabc.Iterator[str]: + return iter(self._strong) + + def __contains__(self, etag: str) -> bool: # type: ignore[override] + return self.contains(etag) + + def __repr__(self) -> str: + return f"<{type(self).__name__} {str(self)!r}>" diff --git a/gestao_raul/Lib/site-packages/werkzeug/datastructures/file_storage.py b/gestao_raul/Lib/site-packages/werkzeug/datastructures/file_storage.py new file mode 100644 index 0000000..1234244 --- /dev/null +++ b/gestao_raul/Lib/site-packages/werkzeug/datastructures/file_storage.py @@ -0,0 +1,209 @@ +from __future__ import annotations + +import collections.abc as cabc +import mimetypes +import os +import typing as t +from io import BytesIO +from os import fsdecode +from os import fspath + +from .._internal import _plain_int +from .headers import Headers +from .structures import MultiDict + + +class FileStorage: + """The :class:`FileStorage` class is a thin wrapper over incoming files. + It is used by the request object to represent uploaded files. All the + attributes of the wrapper stream are proxied by the file storage so + it's possible to do ``storage.read()`` instead of the long form + ``storage.stream.read()``. + """ + + def __init__( + self, + stream: t.IO[bytes] | None = None, + filename: str | None = None, + name: str | None = None, + content_type: str | None = None, + content_length: int | None = None, + headers: Headers | None = None, + ): + self.name = name + self.stream = stream or BytesIO() + + # If no filename is provided, attempt to get the filename from + # the stream object. Python names special streams like + # ```` with angular brackets, skip these streams. + if filename is None: + filename = getattr(stream, "name", None) + + if filename is not None: + filename = fsdecode(filename) + + if filename and filename[0] == "<" and filename[-1] == ">": + filename = None + else: + filename = fsdecode(filename) + + self.filename = filename + + if headers is None: + headers = Headers() + self.headers = headers + if content_type is not None: + headers["Content-Type"] = content_type + if content_length is not None: + headers["Content-Length"] = str(content_length) + + def _parse_content_type(self) -> None: + if not hasattr(self, "_parsed_content_type"): + self._parsed_content_type = http.parse_options_header(self.content_type) + + @property + def content_type(self) -> str | None: + """The content-type sent in the header. Usually not available""" + return self.headers.get("content-type") + + @property + def content_length(self) -> int: + """The content-length sent in the header. Usually not available""" + if "content-length" in self.headers: + try: + return _plain_int(self.headers["content-length"]) + except ValueError: + pass + + return 0 + + @property + def mimetype(self) -> str: + """Like :attr:`content_type`, but without parameters (eg, without + charset, type etc.) and always lowercase. For example if the content + type is ``text/HTML; charset=utf-8`` the mimetype would be + ``'text/html'``. + + .. versionadded:: 0.7 + """ + self._parse_content_type() + return self._parsed_content_type[0].lower() + + @property + def mimetype_params(self) -> dict[str, str]: + """The mimetype parameters as dict. For example if the content + type is ``text/html; charset=utf-8`` the params would be + ``{'charset': 'utf-8'}``. + + .. versionadded:: 0.7 + """ + self._parse_content_type() + return self._parsed_content_type[1] + + def save( + self, dst: str | os.PathLike[str] | t.IO[bytes], buffer_size: int = 16384 + ) -> None: + """Save the file to a destination path or file object. If the + destination is a file object you have to close it yourself after the + call. The buffer size is the number of bytes held in memory during + the copy process. It defaults to 16KB. + + For secure file saving also have a look at :func:`secure_filename`. + + :param dst: a filename, :class:`os.PathLike`, or open file + object to write to. + :param buffer_size: Passed as the ``length`` parameter of + :func:`shutil.copyfileobj`. + + .. versionchanged:: 1.0 + Supports :mod:`pathlib`. + """ + from shutil import copyfileobj + + close_dst = False + + if hasattr(dst, "__fspath__"): + dst = fspath(dst) + + if isinstance(dst, str): + dst = open(dst, "wb") + close_dst = True + + try: + copyfileobj(self.stream, dst, buffer_size) + finally: + if close_dst: + dst.close() + + def close(self) -> None: + """Close the underlying file if possible.""" + try: + self.stream.close() + except Exception: + pass + + def __bool__(self) -> bool: + return bool(self.filename) + + def __getattr__(self, name: str) -> t.Any: + try: + return getattr(self.stream, name) + except AttributeError: + # SpooledTemporaryFile on Python < 3.11 doesn't implement IOBase, + # get the attribute from its backing file instead. + if hasattr(self.stream, "_file"): + return getattr(self.stream._file, name) + raise + + def __iter__(self) -> cabc.Iterator[bytes]: + return iter(self.stream) + + def __repr__(self) -> str: + return f"<{type(self).__name__}: {self.filename!r} ({self.content_type!r})>" + + +class FileMultiDict(MultiDict[str, FileStorage]): + """A special :class:`MultiDict` that has convenience methods to add + files to it. This is used for :class:`EnvironBuilder` and generally + useful for unittesting. + + .. versionadded:: 0.5 + """ + + def add_file( + self, + name: str, + file: str | os.PathLike[str] | t.IO[bytes] | FileStorage, + filename: str | None = None, + content_type: str | None = None, + ) -> None: + """Adds a new file to the dict. `file` can be a file name or + a :class:`file`-like or a :class:`FileStorage` object. + + :param name: the name of the field. + :param file: a filename or :class:`file`-like object + :param filename: an optional filename + :param content_type: an optional content type + """ + if isinstance(file, FileStorage): + self.add(name, file) + return + + if isinstance(file, (str, os.PathLike)): + if filename is None: + filename = os.fspath(file) + + file_obj: t.IO[bytes] = open(file, "rb") + else: + file_obj = file # type: ignore[assignment] + + if filename and content_type is None: + content_type = ( + mimetypes.guess_type(filename)[0] or "application/octet-stream" + ) + + self.add(name, FileStorage(file_obj, filename, name, content_type)) + + +# circular dependencies +from .. import http diff --git a/gestao_raul/Lib/site-packages/werkzeug/datastructures/headers.py b/gestao_raul/Lib/site-packages/werkzeug/datastructures/headers.py new file mode 100644 index 0000000..1088e3b --- /dev/null +++ b/gestao_raul/Lib/site-packages/werkzeug/datastructures/headers.py @@ -0,0 +1,662 @@ +from __future__ import annotations + +import collections.abc as cabc +import re +import typing as t + +from .._internal import _missing +from ..exceptions import BadRequestKeyError +from .mixins import ImmutableHeadersMixin +from .structures import iter_multi_items +from .structures import MultiDict + +if t.TYPE_CHECKING: + import typing_extensions as te + from _typeshed.wsgi import WSGIEnvironment + +T = t.TypeVar("T") + + +class Headers: + """An object that stores some headers. It has a dict-like interface, + but is ordered, can store the same key multiple times, and iterating + yields ``(key, value)`` pairs instead of only keys. + + This data structure is useful if you want a nicer way to handle WSGI + headers which are stored as tuples in a list. + + From Werkzeug 0.3 onwards, the :exc:`KeyError` raised by this class is + also a subclass of the :class:`~exceptions.BadRequest` HTTP exception + and will render a page for a ``400 BAD REQUEST`` if caught in a + catch-all for HTTP exceptions. + + Headers is mostly compatible with the Python :class:`wsgiref.headers.Headers` + class, with the exception of `__getitem__`. :mod:`wsgiref` will return + `None` for ``headers['missing']``, whereas :class:`Headers` will raise + a :class:`KeyError`. + + To create a new ``Headers`` object, pass it a list, dict, or + other ``Headers`` object with default values. These values are + validated the same way values added later are. + + :param defaults: The list of default values for the :class:`Headers`. + + .. versionchanged:: 3.1 + Implement ``|`` and ``|=`` operators. + + .. versionchanged:: 2.1.0 + Default values are validated the same as values added later. + + .. versionchanged:: 0.9 + This data structure now stores unicode values similar to how the + multi dicts do it. The main difference is that bytes can be set as + well which will automatically be latin1 decoded. + + .. versionchanged:: 0.9 + The :meth:`linked` function was removed without replacement as it + was an API that does not support the changes to the encoding model. + """ + + def __init__( + self, + defaults: ( + Headers + | MultiDict[str, t.Any] + | cabc.Mapping[str, t.Any | list[t.Any] | tuple[t.Any, ...] | set[t.Any]] + | cabc.Iterable[tuple[str, t.Any]] + | None + ) = None, + ) -> None: + self._list: list[tuple[str, str]] = [] + + if defaults is not None: + self.extend(defaults) + + @t.overload + def __getitem__(self, key: str) -> str: ... + @t.overload + def __getitem__(self, key: int) -> tuple[str, str]: ... + @t.overload + def __getitem__(self, key: slice) -> te.Self: ... + def __getitem__(self, key: str | int | slice) -> str | tuple[str, str] | te.Self: + if isinstance(key, str): + return self._get_key(key) + + if isinstance(key, int): + return self._list[key] + + return self.__class__(self._list[key]) + + def _get_key(self, key: str) -> str: + ikey = key.lower() + + for k, v in self._list: + if k.lower() == ikey: + return v + + raise BadRequestKeyError(key) + + def __eq__(self, other: object) -> bool: + if other.__class__ is not self.__class__: + return NotImplemented + + def lowered(item: tuple[str, ...]) -> tuple[str, ...]: + return item[0].lower(), *item[1:] + + return set(map(lowered, other._list)) == set(map(lowered, self._list)) # type: ignore[attr-defined] + + __hash__ = None # type: ignore[assignment] + + @t.overload + def get(self, key: str) -> str | None: ... + @t.overload + def get(self, key: str, default: str) -> str: ... + @t.overload + def get(self, key: str, default: T) -> str | T: ... + @t.overload + def get(self, key: str, type: cabc.Callable[[str], T]) -> T | None: ... + @t.overload + def get(self, key: str, default: T, type: cabc.Callable[[str], T]) -> T: ... + def get( # type: ignore[misc] + self, + key: str, + default: str | T | None = None, + type: cabc.Callable[[str], T] | None = None, + ) -> str | T | None: + """Return the default value if the requested data doesn't exist. + If `type` is provided and is a callable it should convert the value, + return it or raise a :exc:`ValueError` if that is not possible. In + this case the function will return the default as if the value was not + found: + + >>> d = Headers([('Content-Length', '42')]) + >>> d.get('Content-Length', type=int) + 42 + + :param key: The key to be looked up. + :param default: The default value to be returned if the key can't + be looked up. If not further specified `None` is + returned. + :param type: A callable that is used to cast the value in the + :class:`Headers`. If a :exc:`ValueError` is raised + by this callable the default value is returned. + + .. versionchanged:: 3.0 + The ``as_bytes`` parameter was removed. + + .. versionchanged:: 0.9 + The ``as_bytes`` parameter was added. + """ + try: + rv = self._get_key(key) + except KeyError: + return default + + if type is None: + return rv + + try: + return type(rv) + except ValueError: + return default + + @t.overload + def getlist(self, key: str) -> list[str]: ... + @t.overload + def getlist(self, key: str, type: cabc.Callable[[str], T]) -> list[T]: ... + def getlist( + self, key: str, type: cabc.Callable[[str], T] | None = None + ) -> list[str] | list[T]: + """Return the list of items for a given key. If that key is not in the + :class:`Headers`, the return value will be an empty list. Just like + :meth:`get`, :meth:`getlist` accepts a `type` parameter. All items will + be converted with the callable defined there. + + :param key: The key to be looked up. + :param type: A callable that is used to cast the value in the + :class:`Headers`. If a :exc:`ValueError` is raised + by this callable the value will be removed from the list. + :return: a :class:`list` of all the values for the key. + + .. versionchanged:: 3.0 + The ``as_bytes`` parameter was removed. + + .. versionchanged:: 0.9 + The ``as_bytes`` parameter was added. + """ + ikey = key.lower() + + if type is not None: + result = [] + + for k, v in self: + if k.lower() == ikey: + try: + result.append(type(v)) + except ValueError: + continue + + return result + + return [v for k, v in self if k.lower() == ikey] + + def get_all(self, name: str) -> list[str]: + """Return a list of all the values for the named field. + + This method is compatible with the :mod:`wsgiref` + :meth:`~wsgiref.headers.Headers.get_all` method. + """ + return self.getlist(name) + + def items(self, lower: bool = False) -> t.Iterable[tuple[str, str]]: + for key, value in self: + if lower: + key = key.lower() + yield key, value + + def keys(self, lower: bool = False) -> t.Iterable[str]: + for key, _ in self.items(lower): + yield key + + def values(self) -> t.Iterable[str]: + for _, value in self.items(): + yield value + + def extend( + self, + arg: ( + Headers + | MultiDict[str, t.Any] + | cabc.Mapping[str, t.Any | list[t.Any] | tuple[t.Any, ...] | set[t.Any]] + | cabc.Iterable[tuple[str, t.Any]] + | None + ) = None, + /, + **kwargs: str, + ) -> None: + """Extend headers in this object with items from another object + containing header items as well as keyword arguments. + + To replace existing keys instead of extending, use + :meth:`update` instead. + + If provided, the first argument can be another :class:`Headers` + object, a :class:`MultiDict`, :class:`dict`, or iterable of + pairs. + + .. versionchanged:: 1.0 + Support :class:`MultiDict`. Allow passing ``kwargs``. + """ + if arg is not None: + for key, value in iter_multi_items(arg): + self.add(key, value) + + for key, value in iter_multi_items(kwargs): + self.add(key, value) + + def __delitem__(self, key: str | int | slice) -> None: + if isinstance(key, str): + self._del_key(key) + return + + del self._list[key] + + def _del_key(self, key: str) -> None: + key = key.lower() + new = [] + + for k, v in self._list: + if k.lower() != key: + new.append((k, v)) + + self._list[:] = new + + def remove(self, key: str) -> None: + """Remove a key. + + :param key: The key to be removed. + """ + return self._del_key(key) + + @t.overload + def pop(self) -> tuple[str, str]: ... + @t.overload + def pop(self, key: str) -> str: ... + @t.overload + def pop(self, key: int | None = ...) -> tuple[str, str]: ... + @t.overload + def pop(self, key: str, default: str) -> str: ... + @t.overload + def pop(self, key: str, default: T) -> str | T: ... + def pop( + self, + key: str | int | None = None, + default: str | T = _missing, # type: ignore[assignment] + ) -> str | tuple[str, str] | T: + """Removes and returns a key or index. + + :param key: The key to be popped. If this is an integer the item at + that position is removed, if it's a string the value for + that key is. If the key is omitted or `None` the last + item is removed. + :return: an item. + """ + if key is None: + return self._list.pop() + + if isinstance(key, int): + return self._list.pop(key) + + try: + rv = self._get_key(key) + except KeyError: + if default is not _missing: + return default + + raise + + self.remove(key) + return rv + + def popitem(self) -> tuple[str, str]: + """Removes a key or index and returns a (key, value) item.""" + return self._list.pop() + + def __contains__(self, key: str) -> bool: + """Check if a key is present.""" + try: + self._get_key(key) + except KeyError: + return False + + return True + + def __iter__(self) -> t.Iterator[tuple[str, str]]: + """Yield ``(key, value)`` tuples.""" + return iter(self._list) + + def __len__(self) -> int: + return len(self._list) + + def add(self, key: str, value: t.Any, /, **kwargs: t.Any) -> None: + """Add a new header tuple to the list. + + Keyword arguments can specify additional parameters for the header + value, with underscores converted to dashes:: + + >>> d = Headers() + >>> d.add('Content-Type', 'text/plain') + >>> d.add('Content-Disposition', 'attachment', filename='foo.png') + + The keyword argument dumping uses :func:`dump_options_header` + behind the scenes. + + .. versionchanged:: 0.4.1 + keyword arguments were added for :mod:`wsgiref` compatibility. + """ + if kwargs: + value = _options_header_vkw(value, kwargs) + + value_str = _str_header_value(value) + self._list.append((key, value_str)) + + def add_header(self, key: str, value: t.Any, /, **kwargs: t.Any) -> None: + """Add a new header tuple to the list. + + An alias for :meth:`add` for compatibility with the :mod:`wsgiref` + :meth:`~wsgiref.headers.Headers.add_header` method. + """ + self.add(key, value, **kwargs) + + def clear(self) -> None: + """Clears all headers.""" + self._list.clear() + + def set(self, key: str, value: t.Any, /, **kwargs: t.Any) -> None: + """Remove all header tuples for `key` and add a new one. The newly + added key either appears at the end of the list if there was no + entry or replaces the first one. + + Keyword arguments can specify additional parameters for the header + value, with underscores converted to dashes. See :meth:`add` for + more information. + + .. versionchanged:: 0.6.1 + :meth:`set` now accepts the same arguments as :meth:`add`. + + :param key: The key to be inserted. + :param value: The value to be inserted. + """ + if kwargs: + value = _options_header_vkw(value, kwargs) + + value_str = _str_header_value(value) + + if not self._list: + self._list.append((key, value_str)) + return + + iter_list = iter(self._list) + ikey = key.lower() + + for idx, (old_key, _) in enumerate(iter_list): + if old_key.lower() == ikey: + # replace first occurrence + self._list[idx] = (key, value_str) + break + else: + # no existing occurrences + self._list.append((key, value_str)) + return + + # remove remaining occurrences + self._list[idx + 1 :] = [t for t in iter_list if t[0].lower() != ikey] + + def setlist(self, key: str, values: cabc.Iterable[t.Any]) -> None: + """Remove any existing values for a header and add new ones. + + :param key: The header key to set. + :param values: An iterable of values to set for the key. + + .. versionadded:: 1.0 + """ + if values: + values_iter = iter(values) + self.set(key, next(values_iter)) + + for value in values_iter: + self.add(key, value) + else: + self.remove(key) + + def setdefault(self, key: str, default: t.Any) -> str: + """Return the first value for the key if it is in the headers, + otherwise set the header to the value given by ``default`` and + return that. + + :param key: The header key to get. + :param default: The value to set for the key if it is not in the + headers. + """ + try: + return self._get_key(key) + except KeyError: + pass + + self.set(key, default) + return self._get_key(key) + + def setlistdefault(self, key: str, default: cabc.Iterable[t.Any]) -> list[str]: + """Return the list of values for the key if it is in the + headers, otherwise set the header to the list of values given + by ``default`` and return that. + + Unlike :meth:`MultiDict.setlistdefault`, modifying the returned + list will not affect the headers. + + :param key: The header key to get. + :param default: An iterable of values to set for the key if it + is not in the headers. + + .. versionadded:: 1.0 + """ + if key not in self: + self.setlist(key, default) + + return self.getlist(key) + + @t.overload + def __setitem__(self, key: str, value: t.Any) -> None: ... + @t.overload + def __setitem__(self, key: int, value: tuple[str, t.Any]) -> None: ... + @t.overload + def __setitem__( + self, key: slice, value: cabc.Iterable[tuple[str, t.Any]] + ) -> None: ... + def __setitem__( + self, + key: str | int | slice, + value: t.Any | tuple[str, t.Any] | cabc.Iterable[tuple[str, t.Any]], + ) -> None: + """Like :meth:`set` but also supports index/slice based setting.""" + if isinstance(key, str): + self.set(key, value) + elif isinstance(key, int): + self._list[key] = value[0], _str_header_value(value[1]) # type: ignore[index] + else: + self._list[key] = [(k, _str_header_value(v)) for k, v in value] # type: ignore[misc] + + def update( + self, + arg: ( + Headers + | MultiDict[str, t.Any] + | cabc.Mapping[ + str, t.Any | list[t.Any] | tuple[t.Any, ...] | cabc.Set[t.Any] + ] + | cabc.Iterable[tuple[str, t.Any]] + | None + ) = None, + /, + **kwargs: t.Any | list[t.Any] | tuple[t.Any, ...] | cabc.Set[t.Any], + ) -> None: + """Replace headers in this object with items from another + headers object and keyword arguments. + + To extend existing keys instead of replacing, use :meth:`extend` + instead. + + If provided, the first argument can be another :class:`Headers` + object, a :class:`MultiDict`, :class:`dict`, or iterable of + pairs. + + .. versionadded:: 1.0 + """ + if arg is not None: + if isinstance(arg, (Headers, MultiDict)): + for key in arg.keys(): + self.setlist(key, arg.getlist(key)) + elif isinstance(arg, cabc.Mapping): + for key, value in arg.items(): + if isinstance(value, (list, tuple, set)): + self.setlist(key, value) + else: + self.set(key, value) + else: + for key, value in arg: + self.set(key, value) + + for key, value in kwargs.items(): + if isinstance(value, (list, tuple, set)): + self.setlist(key, value) + else: + self.set(key, value) + + def __or__( + self, + other: cabc.Mapping[ + str, t.Any | list[t.Any] | tuple[t.Any, ...] | cabc.Set[t.Any] + ], + ) -> te.Self: + if not isinstance(other, cabc.Mapping): + return NotImplemented + + rv = self.copy() + rv.update(other) + return rv + + def __ior__( + self, + other: ( + cabc.Mapping[str, t.Any | list[t.Any] | tuple[t.Any, ...] | cabc.Set[t.Any]] + | cabc.Iterable[tuple[str, t.Any]] + ), + ) -> te.Self: + if not isinstance(other, (cabc.Mapping, cabc.Iterable)): + return NotImplemented + + self.update(other) + return self + + def to_wsgi_list(self) -> list[tuple[str, str]]: + """Convert the headers into a list suitable for WSGI. + + :return: list + """ + return list(self) + + def copy(self) -> te.Self: + return self.__class__(self._list) + + def __copy__(self) -> te.Self: + return self.copy() + + def __str__(self) -> str: + """Returns formatted headers suitable for HTTP transmission.""" + strs = [] + for key, value in self.to_wsgi_list(): + strs.append(f"{key}: {value}") + strs.append("\r\n") + return "\r\n".join(strs) + + def __repr__(self) -> str: + return f"{type(self).__name__}({list(self)!r})" + + +def _options_header_vkw(value: str, kw: dict[str, t.Any]) -> str: + return http.dump_options_header( + value, {k.replace("_", "-"): v for k, v in kw.items()} + ) + + +_newline_re = re.compile(r"[\r\n]") + + +def _str_header_value(value: t.Any) -> str: + if not isinstance(value, str): + value = str(value) + + if _newline_re.search(value) is not None: + raise ValueError("Header values must not contain newline characters.") + + return value # type: ignore[no-any-return] + + +class EnvironHeaders(ImmutableHeadersMixin, Headers): # type: ignore[misc] + """Read only version of the headers from a WSGI environment. This + provides the same interface as `Headers` and is constructed from + a WSGI environment. + From Werkzeug 0.3 onwards, the `KeyError` raised by this class is also a + subclass of the :exc:`~exceptions.BadRequest` HTTP exception and will + render a page for a ``400 BAD REQUEST`` if caught in a catch-all for + HTTP exceptions. + """ + + def __init__(self, environ: WSGIEnvironment) -> None: + super().__init__() + self.environ = environ + + def __eq__(self, other: object) -> bool: + if not isinstance(other, EnvironHeaders): + return NotImplemented + + return self.environ is other.environ + + __hash__ = None # type: ignore[assignment] + + def __getitem__(self, key: str) -> str: # type: ignore[override] + return self._get_key(key) + + def _get_key(self, key: str) -> str: + if not isinstance(key, str): + raise BadRequestKeyError(key) + + key = key.upper().replace("-", "_") + + if key in {"CONTENT_TYPE", "CONTENT_LENGTH"}: + return self.environ[key] # type: ignore[no-any-return] + + return self.environ[f"HTTP_{key}"] # type: ignore[no-any-return] + + def __len__(self) -> int: + return sum(1 for _ in self) + + def __iter__(self) -> cabc.Iterator[tuple[str, str]]: + for key, value in self.environ.items(): + if key.startswith("HTTP_") and key not in { + "HTTP_CONTENT_TYPE", + "HTTP_CONTENT_LENGTH", + }: + yield key[5:].replace("_", "-").title(), value + elif key in {"CONTENT_TYPE", "CONTENT_LENGTH"} and value: + yield key.replace("_", "-").title(), value + + def copy(self) -> t.NoReturn: + raise TypeError(f"cannot create {type(self).__name__!r} copies") + + def __or__(self, other: t.Any) -> t.NoReturn: + raise TypeError(f"cannot create {type(self).__name__!r} copies") + + +# circular dependencies +from .. import http diff --git a/gestao_raul/Lib/site-packages/werkzeug/datastructures/mixins.py b/gestao_raul/Lib/site-packages/werkzeug/datastructures/mixins.py new file mode 100644 index 0000000..03d461a --- /dev/null +++ b/gestao_raul/Lib/site-packages/werkzeug/datastructures/mixins.py @@ -0,0 +1,317 @@ +from __future__ import annotations + +import collections.abc as cabc +import typing as t +from functools import update_wrapper +from itertools import repeat + +from .._internal import _missing + +if t.TYPE_CHECKING: + import typing_extensions as te + +K = t.TypeVar("K") +V = t.TypeVar("V") +T = t.TypeVar("T") +F = t.TypeVar("F", bound=cabc.Callable[..., t.Any]) + + +def _immutable_error(self: t.Any) -> t.NoReturn: + raise TypeError(f"{type(self).__name__!r} objects are immutable") + + +class ImmutableListMixin: + """Makes a :class:`list` immutable. + + .. versionadded:: 0.5 + + :private: + """ + + _hash_cache: int | None = None + + def __hash__(self) -> int: + if self._hash_cache is not None: + return self._hash_cache + rv = self._hash_cache = hash(tuple(self)) # type: ignore[arg-type] + return rv + + def __reduce_ex__(self, protocol: t.SupportsIndex) -> t.Any: + return type(self), (list(self),) # type: ignore[call-overload] + + def __delitem__(self, key: t.Any) -> t.NoReturn: + _immutable_error(self) + + def __iadd__(self, other: t.Any) -> t.NoReturn: + _immutable_error(self) + + def __imul__(self, other: t.Any) -> t.NoReturn: + _immutable_error(self) + + def __setitem__(self, key: t.Any, value: t.Any) -> t.NoReturn: + _immutable_error(self) + + def append(self, item: t.Any) -> t.NoReturn: + _immutable_error(self) + + def remove(self, item: t.Any) -> t.NoReturn: + _immutable_error(self) + + def extend(self, iterable: t.Any) -> t.NoReturn: + _immutable_error(self) + + def insert(self, pos: t.Any, value: t.Any) -> t.NoReturn: + _immutable_error(self) + + def pop(self, index: t.Any = -1) -> t.NoReturn: + _immutable_error(self) + + def reverse(self: t.Any) -> t.NoReturn: + _immutable_error(self) + + def sort(self, key: t.Any = None, reverse: t.Any = False) -> t.NoReturn: + _immutable_error(self) + + +class ImmutableDictMixin(t.Generic[K, V]): + """Makes a :class:`dict` immutable. + + .. versionchanged:: 3.1 + Disallow ``|=`` operator. + + .. versionadded:: 0.5 + + :private: + """ + + _hash_cache: int | None = None + + @classmethod + @t.overload + def fromkeys( + cls, keys: cabc.Iterable[K], value: None + ) -> ImmutableDictMixin[K, t.Any | None]: ... + @classmethod + @t.overload + def fromkeys(cls, keys: cabc.Iterable[K], value: V) -> ImmutableDictMixin[K, V]: ... + @classmethod + def fromkeys( + cls, keys: cabc.Iterable[K], value: V | None = None + ) -> ImmutableDictMixin[K, t.Any | None] | ImmutableDictMixin[K, V]: + instance = super().__new__(cls) + instance.__init__(zip(keys, repeat(value))) # type: ignore[misc] + return instance + + def __reduce_ex__(self, protocol: t.SupportsIndex) -> t.Any: + return type(self), (dict(self),) # type: ignore[call-overload] + + def _iter_hashitems(self) -> t.Iterable[t.Any]: + return self.items() # type: ignore[attr-defined,no-any-return] + + def __hash__(self) -> int: + if self._hash_cache is not None: + return self._hash_cache + rv = self._hash_cache = hash(frozenset(self._iter_hashitems())) + return rv + + def setdefault(self, key: t.Any, default: t.Any = None) -> t.NoReturn: + _immutable_error(self) + + def update(self, arg: t.Any, /, **kwargs: t.Any) -> t.NoReturn: + _immutable_error(self) + + def __ior__(self, other: t.Any) -> t.NoReturn: + _immutable_error(self) + + def pop(self, key: t.Any, default: t.Any = None) -> t.NoReturn: + _immutable_error(self) + + def popitem(self) -> t.NoReturn: + _immutable_error(self) + + def __setitem__(self, key: t.Any, value: t.Any) -> t.NoReturn: + _immutable_error(self) + + def __delitem__(self, key: t.Any) -> t.NoReturn: + _immutable_error(self) + + def clear(self) -> t.NoReturn: + _immutable_error(self) + + +class ImmutableMultiDictMixin(ImmutableDictMixin[K, V]): + """Makes a :class:`MultiDict` immutable. + + .. versionadded:: 0.5 + + :private: + """ + + def __reduce_ex__(self, protocol: t.SupportsIndex) -> t.Any: + return type(self), (list(self.items(multi=True)),) # type: ignore[attr-defined] + + def _iter_hashitems(self) -> t.Iterable[t.Any]: + return self.items(multi=True) # type: ignore[attr-defined,no-any-return] + + def add(self, key: t.Any, value: t.Any) -> t.NoReturn: + _immutable_error(self) + + def popitemlist(self) -> t.NoReturn: + _immutable_error(self) + + def poplist(self, key: t.Any) -> t.NoReturn: + _immutable_error(self) + + def setlist(self, key: t.Any, new_list: t.Any) -> t.NoReturn: + _immutable_error(self) + + def setlistdefault(self, key: t.Any, default_list: t.Any = None) -> t.NoReturn: + _immutable_error(self) + + +class ImmutableHeadersMixin: + """Makes a :class:`Headers` immutable. We do not mark them as + hashable though since the only usecase for this datastructure + in Werkzeug is a view on a mutable structure. + + .. versionchanged:: 3.1 + Disallow ``|=`` operator. + + .. versionadded:: 0.5 + + :private: + """ + + def __delitem__(self, key: t.Any, **kwargs: t.Any) -> t.NoReturn: + _immutable_error(self) + + def __setitem__(self, key: t.Any, value: t.Any) -> t.NoReturn: + _immutable_error(self) + + def set(self, key: t.Any, value: t.Any, /, **kwargs: t.Any) -> t.NoReturn: + _immutable_error(self) + + def setlist(self, key: t.Any, values: t.Any) -> t.NoReturn: + _immutable_error(self) + + def add(self, key: t.Any, value: t.Any, /, **kwargs: t.Any) -> t.NoReturn: + _immutable_error(self) + + def add_header(self, key: t.Any, value: t.Any, /, **kwargs: t.Any) -> t.NoReturn: + _immutable_error(self) + + def remove(self, key: t.Any) -> t.NoReturn: + _immutable_error(self) + + def extend(self, arg: t.Any, /, **kwargs: t.Any) -> t.NoReturn: + _immutable_error(self) + + def update(self, arg: t.Any, /, **kwargs: t.Any) -> t.NoReturn: + _immutable_error(self) + + def __ior__(self, other: t.Any) -> t.NoReturn: + _immutable_error(self) + + def insert(self, pos: t.Any, value: t.Any) -> t.NoReturn: + _immutable_error(self) + + def pop(self, key: t.Any = None, default: t.Any = _missing) -> t.NoReturn: + _immutable_error(self) + + def popitem(self) -> t.NoReturn: + _immutable_error(self) + + def setdefault(self, key: t.Any, default: t.Any) -> t.NoReturn: + _immutable_error(self) + + def setlistdefault(self, key: t.Any, default: t.Any) -> t.NoReturn: + _immutable_error(self) + + +def _always_update(f: F) -> F: + def wrapper( + self: UpdateDictMixin[t.Any, t.Any], /, *args: t.Any, **kwargs: t.Any + ) -> t.Any: + rv = f(self, *args, **kwargs) + + if self.on_update is not None: + self.on_update(self) + + return rv + + return update_wrapper(wrapper, f) # type: ignore[return-value] + + +class UpdateDictMixin(dict[K, V]): + """Makes dicts call `self.on_update` on modifications. + + .. versionchanged:: 3.1 + Implement ``|=`` operator. + + .. versionadded:: 0.5 + + :private: + """ + + on_update: cabc.Callable[[te.Self], None] | None = None + + def setdefault(self: te.Self, key: K, default: V | None = None) -> V: + modified = key not in self + rv = super().setdefault(key, default) # type: ignore[arg-type] + if modified and self.on_update is not None: + self.on_update(self) + return rv + + @t.overload + def pop(self: te.Self, key: K) -> V: ... + @t.overload + def pop(self: te.Self, key: K, default: V) -> V: ... + @t.overload + def pop(self: te.Self, key: K, default: T) -> T: ... + def pop( + self: te.Self, + key: K, + default: V | T = _missing, # type: ignore[assignment] + ) -> V | T: + modified = key in self + if default is _missing: + rv = super().pop(key) + else: + rv = super().pop(key, default) # type: ignore[arg-type] + if modified and self.on_update is not None: + self.on_update(self) + return rv + + @_always_update + def __setitem__(self, key: K, value: V) -> None: + super().__setitem__(key, value) + + @_always_update + def __delitem__(self, key: K) -> None: + super().__delitem__(key) + + @_always_update + def clear(self) -> None: + super().clear() + + @_always_update + def popitem(self) -> tuple[K, V]: + return super().popitem() + + @_always_update + def update( # type: ignore[override] + self, + arg: cabc.Mapping[K, V] | cabc.Iterable[tuple[K, V]] | None = None, + /, + **kwargs: V, + ) -> None: + if arg is None: + super().update(**kwargs) + else: + super().update(arg, **kwargs) + + @_always_update + def __ior__( # type: ignore[override] + self, other: cabc.Mapping[K, V] | cabc.Iterable[tuple[K, V]] + ) -> te.Self: + return super().__ior__(other) diff --git a/gestao_raul/Lib/site-packages/werkzeug/datastructures/range.py b/gestao_raul/Lib/site-packages/werkzeug/datastructures/range.py new file mode 100644 index 0000000..4c9f67d --- /dev/null +++ b/gestao_raul/Lib/site-packages/werkzeug/datastructures/range.py @@ -0,0 +1,214 @@ +from __future__ import annotations + +import collections.abc as cabc +import typing as t +from datetime import datetime + +if t.TYPE_CHECKING: + import typing_extensions as te + +T = t.TypeVar("T") + + +class IfRange: + """Very simple object that represents the `If-Range` header in parsed + form. It will either have neither a etag or date or one of either but + never both. + + .. versionadded:: 0.7 + """ + + def __init__(self, etag: str | None = None, date: datetime | None = None): + #: The etag parsed and unquoted. Ranges always operate on strong + #: etags so the weakness information is not necessary. + self.etag = etag + #: The date in parsed format or `None`. + self.date = date + + def to_header(self) -> str: + """Converts the object back into an HTTP header.""" + if self.date is not None: + return http.http_date(self.date) + if self.etag is not None: + return http.quote_etag(self.etag) + return "" + + def __str__(self) -> str: + return self.to_header() + + def __repr__(self) -> str: + return f"<{type(self).__name__} {str(self)!r}>" + + +class Range: + """Represents a ``Range`` header. All methods only support only + bytes as the unit. Stores a list of ranges if given, but the methods + only work if only one range is provided. + + :raise ValueError: If the ranges provided are invalid. + + .. versionchanged:: 0.15 + The ranges passed in are validated. + + .. versionadded:: 0.7 + """ + + def __init__( + self, units: str, ranges: cabc.Sequence[tuple[int, int | None]] + ) -> None: + #: The units of this range. Usually "bytes". + self.units = units + #: A list of ``(begin, end)`` tuples for the range header provided. + #: The ranges are non-inclusive. + self.ranges = ranges + + for start, end in ranges: + if start is None or (end is not None and (start < 0 or start >= end)): + raise ValueError(f"{(start, end)} is not a valid range.") + + def range_for_length(self, length: int | None) -> tuple[int, int] | None: + """If the range is for bytes, the length is not None and there is + exactly one range and it is satisfiable it returns a ``(start, stop)`` + tuple, otherwise `None`. + """ + if self.units != "bytes" or length is None or len(self.ranges) != 1: + return None + start, end = self.ranges[0] + if end is None: + end = length + if start < 0: + start += length + if http.is_byte_range_valid(start, end, length): + return start, min(end, length) + return None + + def make_content_range(self, length: int | None) -> ContentRange | None: + """Creates a :class:`~werkzeug.datastructures.ContentRange` object + from the current range and given content length. + """ + rng = self.range_for_length(length) + if rng is not None: + return ContentRange(self.units, rng[0], rng[1], length) + return None + + def to_header(self) -> str: + """Converts the object back into an HTTP header.""" + ranges = [] + for begin, end in self.ranges: + if end is None: + ranges.append(f"{begin}-" if begin >= 0 else str(begin)) + else: + ranges.append(f"{begin}-{end - 1}") + return f"{self.units}={','.join(ranges)}" + + def to_content_range_header(self, length: int | None) -> str | None: + """Converts the object into `Content-Range` HTTP header, + based on given length + """ + range = self.range_for_length(length) + if range is not None: + return f"{self.units} {range[0]}-{range[1] - 1}/{length}" + return None + + def __str__(self) -> str: + return self.to_header() + + def __repr__(self) -> str: + return f"<{type(self).__name__} {str(self)!r}>" + + +class _CallbackProperty(t.Generic[T]): + def __set_name__(self, owner: type[ContentRange], name: str) -> None: + self.attr = f"_{name}" + + @t.overload + def __get__(self, instance: None, owner: None) -> te.Self: ... + @t.overload + def __get__(self, instance: ContentRange, owner: type[ContentRange]) -> T: ... + def __get__( + self, instance: ContentRange | None, owner: type[ContentRange] | None + ) -> te.Self | T: + if instance is None: + return self + + return instance.__dict__[self.attr] # type: ignore[no-any-return] + + def __set__(self, instance: ContentRange, value: T) -> None: + instance.__dict__[self.attr] = value + + if instance.on_update is not None: + instance.on_update(instance) + + +class ContentRange: + """Represents the content range header. + + .. versionadded:: 0.7 + """ + + def __init__( + self, + units: str | None, + start: int | None, + stop: int | None, + length: int | None = None, + on_update: cabc.Callable[[ContentRange], None] | None = None, + ) -> None: + self.on_update = on_update + self.set(start, stop, length, units) + + #: The units to use, usually "bytes" + units: str | None = _CallbackProperty() # type: ignore[assignment] + #: The start point of the range or `None`. + start: int | None = _CallbackProperty() # type: ignore[assignment] + #: The stop point of the range (non-inclusive) or `None`. Can only be + #: `None` if also start is `None`. + stop: int | None = _CallbackProperty() # type: ignore[assignment] + #: The length of the range or `None`. + length: int | None = _CallbackProperty() # type: ignore[assignment] + + def set( + self, + start: int | None, + stop: int | None, + length: int | None = None, + units: str | None = "bytes", + ) -> None: + """Simple method to update the ranges.""" + assert http.is_byte_range_valid(start, stop, length), "Bad range provided" + self._units: str | None = units + self._start: int | None = start + self._stop: int | None = stop + self._length: int | None = length + if self.on_update is not None: + self.on_update(self) + + def unset(self) -> None: + """Sets the units to `None` which indicates that the header should + no longer be used. + """ + self.set(None, None, units=None) + + def to_header(self) -> str: + if self._units is None: + return "" + if self._length is None: + length: str | int = "*" + else: + length = self._length + if self._start is None: + return f"{self._units} */{length}" + return f"{self._units} {self._start}-{self._stop - 1}/{length}" # type: ignore[operator] + + def __bool__(self) -> bool: + return self._units is not None + + def __str__(self) -> str: + return self.to_header() + + def __repr__(self) -> str: + return f"<{type(self).__name__} {str(self)!r}>" + + +# circular dependencies +from .. import http diff --git a/gestao_raul/Lib/site-packages/werkzeug/datastructures/structures.py b/gestao_raul/Lib/site-packages/werkzeug/datastructures/structures.py new file mode 100644 index 0000000..dbb7e80 --- /dev/null +++ b/gestao_raul/Lib/site-packages/werkzeug/datastructures/structures.py @@ -0,0 +1,1239 @@ +from __future__ import annotations + +import collections.abc as cabc +import typing as t +from copy import deepcopy + +from .. import exceptions +from .._internal import _missing +from .mixins import ImmutableDictMixin +from .mixins import ImmutableListMixin +from .mixins import ImmutableMultiDictMixin +from .mixins import UpdateDictMixin + +if t.TYPE_CHECKING: + import typing_extensions as te + +K = t.TypeVar("K") +V = t.TypeVar("V") +T = t.TypeVar("T") + + +def iter_multi_items( + mapping: ( + MultiDict[K, V] + | cabc.Mapping[K, V | list[V] | tuple[V, ...] | set[V]] + | cabc.Iterable[tuple[K, V]] + ), +) -> cabc.Iterator[tuple[K, V]]: + """Iterates over the items of a mapping yielding keys and values + without dropping any from more complex structures. + """ + if isinstance(mapping, MultiDict): + yield from mapping.items(multi=True) + elif isinstance(mapping, cabc.Mapping): + for key, value in mapping.items(): + if isinstance(value, (list, tuple, set)): + for v in value: + yield key, v + else: + yield key, value + else: + yield from mapping + + +class ImmutableList(ImmutableListMixin, list[V]): # type: ignore[misc] + """An immutable :class:`list`. + + .. versionadded:: 0.5 + + :private: + """ + + def __repr__(self) -> str: + return f"{type(self).__name__}({list.__repr__(self)})" + + +class TypeConversionDict(dict[K, V]): + """Works like a regular dict but the :meth:`get` method can perform + type conversions. :class:`MultiDict` and :class:`CombinedMultiDict` + are subclasses of this class and provide the same feature. + + .. versionadded:: 0.5 + """ + + @t.overload # type: ignore[override] + def get(self, key: K) -> V | None: ... + @t.overload + def get(self, key: K, default: V) -> V: ... + @t.overload + def get(self, key: K, default: T) -> V | T: ... + @t.overload + def get(self, key: str, type: cabc.Callable[[V], T]) -> T | None: ... + @t.overload + def get(self, key: str, default: T, type: cabc.Callable[[V], T]) -> T: ... + def get( # type: ignore[misc] + self, + key: K, + default: V | T | None = None, + type: cabc.Callable[[V], T] | None = None, + ) -> V | T | None: + """Return the default value if the requested data doesn't exist. + If `type` is provided and is a callable it should convert the value, + return it or raise a :exc:`ValueError` if that is not possible. In + this case the function will return the default as if the value was not + found: + + >>> d = TypeConversionDict(foo='42', bar='blub') + >>> d.get('foo', type=int) + 42 + >>> d.get('bar', -1, type=int) + -1 + + :param key: The key to be looked up. + :param default: The default value to be returned if the key can't + be looked up. If not further specified `None` is + returned. + :param type: A callable that is used to cast the value in the + :class:`MultiDict`. If a :exc:`ValueError` or a + :exc:`TypeError` is raised by this callable the default + value is returned. + + .. versionchanged:: 3.0.2 + Returns the default value on :exc:`TypeError`, too. + """ + try: + rv = self[key] + except KeyError: + return default + + if type is None: + return rv + + try: + return type(rv) + except (ValueError, TypeError): + return default + + +class ImmutableTypeConversionDict(ImmutableDictMixin[K, V], TypeConversionDict[K, V]): # type: ignore[misc] + """Works like a :class:`TypeConversionDict` but does not support + modifications. + + .. versionadded:: 0.5 + """ + + def copy(self) -> TypeConversionDict[K, V]: + """Return a shallow mutable copy of this object. Keep in mind that + the standard library's :func:`copy` function is a no-op for this class + like for any other python immutable type (eg: :class:`tuple`). + """ + return TypeConversionDict(self) + + def __copy__(self) -> te.Self: + return self + + +class MultiDict(TypeConversionDict[K, V]): + """A :class:`MultiDict` is a dictionary subclass customized to deal with + multiple values for the same key which is for example used by the parsing + functions in the wrappers. This is necessary because some HTML form + elements pass multiple values for the same key. + + :class:`MultiDict` implements all standard dictionary methods. + Internally, it saves all values for a key as a list, but the standard dict + access methods will only return the first value for a key. If you want to + gain access to the other values, too, you have to use the `list` methods as + explained below. + + Basic Usage: + + >>> d = MultiDict([('a', 'b'), ('a', 'c')]) + >>> d + MultiDict([('a', 'b'), ('a', 'c')]) + >>> d['a'] + 'b' + >>> d.getlist('a') + ['b', 'c'] + >>> 'a' in d + True + + It behaves like a normal dict thus all dict functions will only return the + first value when multiple values for one key are found. + + From Werkzeug 0.3 onwards, the `KeyError` raised by this class is also a + subclass of the :exc:`~exceptions.BadRequest` HTTP exception and will + render a page for a ``400 BAD REQUEST`` if caught in a catch-all for HTTP + exceptions. + + A :class:`MultiDict` can be constructed from an iterable of + ``(key, value)`` tuples, a dict, a :class:`MultiDict` or from Werkzeug 0.2 + onwards some keyword parameters. + + :param mapping: the initial value for the :class:`MultiDict`. Either a + regular dict, an iterable of ``(key, value)`` tuples + or `None`. + + .. versionchanged:: 3.1 + Implement ``|`` and ``|=`` operators. + """ + + def __init__( + self, + mapping: ( + MultiDict[K, V] + | cabc.Mapping[K, V | list[V] | tuple[V, ...] | set[V]] + | cabc.Iterable[tuple[K, V]] + | None + ) = None, + ) -> None: + if mapping is None: + super().__init__() + elif isinstance(mapping, MultiDict): + super().__init__((k, vs[:]) for k, vs in mapping.lists()) + elif isinstance(mapping, cabc.Mapping): + tmp = {} + for key, value in mapping.items(): + if isinstance(value, (list, tuple, set)): + value = list(value) + + if not value: + continue + else: + value = [value] + tmp[key] = value + super().__init__(tmp) # type: ignore[arg-type] + else: + tmp = {} + for key, value in mapping: + tmp.setdefault(key, []).append(value) + super().__init__(tmp) # type: ignore[arg-type] + + def __getstate__(self) -> t.Any: + return dict(self.lists()) + + def __setstate__(self, value: t.Any) -> None: + super().clear() + super().update(value) + + def __iter__(self) -> cabc.Iterator[K]: + # https://github.com/python/cpython/issues/87412 + # If __iter__ is not overridden, Python uses a fast path for dict(md), + # taking the data directly and getting lists of values, rather than + # calling __getitem__ and getting only the first value. + return super().__iter__() + + def __getitem__(self, key: K) -> V: + """Return the first data value for this key; + raises KeyError if not found. + + :param key: The key to be looked up. + :raise KeyError: if the key does not exist. + """ + + if key in self: + lst = super().__getitem__(key) + if len(lst) > 0: # type: ignore[arg-type] + return lst[0] # type: ignore[index,no-any-return] + raise exceptions.BadRequestKeyError(key) + + def __setitem__(self, key: K, value: V) -> None: + """Like :meth:`add` but removes an existing key first. + + :param key: the key for the value. + :param value: the value to set. + """ + super().__setitem__(key, [value]) # type: ignore[assignment] + + def add(self, key: K, value: V) -> None: + """Adds a new value for the key. + + .. versionadded:: 0.6 + + :param key: the key for the value. + :param value: the value to add. + """ + super().setdefault(key, []).append(value) # type: ignore[arg-type,attr-defined] + + @t.overload + def getlist(self, key: K) -> list[V]: ... + @t.overload + def getlist(self, key: K, type: cabc.Callable[[V], T]) -> list[T]: ... + def getlist( + self, key: K, type: cabc.Callable[[V], T] | None = None + ) -> list[V] | list[T]: + """Return the list of items for a given key. If that key is not in the + `MultiDict`, the return value will be an empty list. Just like `get`, + `getlist` accepts a `type` parameter. All items will be converted + with the callable defined there. + + :param key: The key to be looked up. + :param type: Callable to convert each value. If a ``ValueError`` or + ``TypeError`` is raised, the value is omitted. + :return: a :class:`list` of all the values for the key. + + .. versionchanged:: 3.1 + Catches ``TypeError`` in addition to ``ValueError``. + """ + try: + rv: list[V] = super().__getitem__(key) # type: ignore[assignment] + except KeyError: + return [] + if type is None: + return list(rv) + result = [] + for item in rv: + try: + result.append(type(item)) + except (ValueError, TypeError): + pass + return result + + def setlist(self, key: K, new_list: cabc.Iterable[V]) -> None: + """Remove the old values for a key and add new ones. Note that the list + you pass the values in will be shallow-copied before it is inserted in + the dictionary. + + >>> d = MultiDict() + >>> d.setlist('foo', ['1', '2']) + >>> d['foo'] + '1' + >>> d.getlist('foo') + ['1', '2'] + + :param key: The key for which the values are set. + :param new_list: An iterable with the new values for the key. Old values + are removed first. + """ + super().__setitem__(key, list(new_list)) # type: ignore[assignment] + + @t.overload + def setdefault(self, key: K) -> None: ... + @t.overload + def setdefault(self, key: K, default: V) -> V: ... + def setdefault(self, key: K, default: V | None = None) -> V | None: + """Returns the value for the key if it is in the dict, otherwise it + returns `default` and sets that value for `key`. + + :param key: The key to be looked up. + :param default: The default value to be returned if the key is not + in the dict. If not further specified it's `None`. + """ + if key not in self: + self[key] = default # type: ignore[assignment] + + return self[key] + + def setlistdefault( + self, key: K, default_list: cabc.Iterable[V] | None = None + ) -> list[V]: + """Like `setdefault` but sets multiple values. The list returned + is not a copy, but the list that is actually used internally. This + means that you can put new values into the dict by appending items + to the list: + + >>> d = MultiDict({"foo": 1}) + >>> d.setlistdefault("foo").extend([2, 3]) + >>> d.getlist("foo") + [1, 2, 3] + + :param key: The key to be looked up. + :param default_list: An iterable of default values. It is either copied + (in case it was a list) or converted into a list + before returned. + :return: a :class:`list` + """ + if key not in self: + super().__setitem__(key, list(default_list or ())) # type: ignore[assignment] + + return super().__getitem__(key) # type: ignore[return-value] + + def items(self, multi: bool = False) -> cabc.Iterable[tuple[K, V]]: # type: ignore[override] + """Return an iterator of ``(key, value)`` pairs. + + :param multi: If set to `True` the iterator returned will have a pair + for each value of each key. Otherwise it will only + contain pairs for the first value of each key. + """ + values: list[V] + + for key, values in super().items(): # type: ignore[assignment] + if multi: + for value in values: + yield key, value + else: + yield key, values[0] + + def lists(self) -> cabc.Iterable[tuple[K, list[V]]]: + """Return a iterator of ``(key, values)`` pairs, where values is the list + of all values associated with the key.""" + values: list[V] + + for key, values in super().items(): # type: ignore[assignment] + yield key, list(values) + + def values(self) -> cabc.Iterable[V]: # type: ignore[override] + """Returns an iterator of the first value on every key's value list.""" + values: list[V] + + for values in super().values(): # type: ignore[assignment] + yield values[0] + + def listvalues(self) -> cabc.Iterable[list[V]]: + """Return an iterator of all values associated with a key. Zipping + :meth:`keys` and this is the same as calling :meth:`lists`: + + >>> d = MultiDict({"foo": [1, 2, 3]}) + >>> zip(d.keys(), d.listvalues()) == d.lists() + True + """ + return super().values() # type: ignore[return-value] + + def copy(self) -> te.Self: + """Return a shallow copy of this object.""" + return self.__class__(self) + + def deepcopy(self, memo: t.Any = None) -> te.Self: + """Return a deep copy of this object.""" + return self.__class__(deepcopy(self.to_dict(flat=False), memo)) + + @t.overload + def to_dict(self) -> dict[K, V]: ... + @t.overload + def to_dict(self, flat: t.Literal[False]) -> dict[K, list[V]]: ... + def to_dict(self, flat: bool = True) -> dict[K, V] | dict[K, list[V]]: + """Return the contents as regular dict. If `flat` is `True` the + returned dict will only have the first item present, if `flat` is + `False` all values will be returned as lists. + + :param flat: If set to `False` the dict returned will have lists + with all the values in it. Otherwise it will only + contain the first value for each key. + :return: a :class:`dict` + """ + if flat: + return dict(self.items()) + return dict(self.lists()) + + def update( # type: ignore[override] + self, + mapping: ( + MultiDict[K, V] + | cabc.Mapping[K, V | list[V] | tuple[V, ...] | set[V]] + | cabc.Iterable[tuple[K, V]] + ), + ) -> None: + """update() extends rather than replaces existing key lists: + + >>> a = MultiDict({'x': 1}) + >>> b = MultiDict({'x': 2, 'y': 3}) + >>> a.update(b) + >>> a + MultiDict([('y', 3), ('x', 1), ('x', 2)]) + + If the value list for a key in ``other_dict`` is empty, no new values + will be added to the dict and the key will not be created: + + >>> x = {'empty_list': []} + >>> y = MultiDict() + >>> y.update(x) + >>> y + MultiDict([]) + """ + for key, value in iter_multi_items(mapping): + self.add(key, value) + + def __or__( # type: ignore[override] + self, other: cabc.Mapping[K, V | list[V] | tuple[V, ...] | set[V]] + ) -> MultiDict[K, V]: + if not isinstance(other, cabc.Mapping): + return NotImplemented + + rv = self.copy() + rv.update(other) + return rv + + def __ior__( # type: ignore[override] + self, + other: ( + cabc.Mapping[K, V | list[V] | tuple[V, ...] | set[V]] + | cabc.Iterable[tuple[K, V]] + ), + ) -> te.Self: + if not isinstance(other, (cabc.Mapping, cabc.Iterable)): + return NotImplemented + + self.update(other) + return self + + @t.overload + def pop(self, key: K) -> V: ... + @t.overload + def pop(self, key: K, default: V) -> V: ... + @t.overload + def pop(self, key: K, default: T) -> V | T: ... + def pop( + self, + key: K, + default: V | T = _missing, # type: ignore[assignment] + ) -> V | T: + """Pop the first item for a list on the dict. Afterwards the + key is removed from the dict, so additional values are discarded: + + >>> d = MultiDict({"foo": [1, 2, 3]}) + >>> d.pop("foo") + 1 + >>> "foo" in d + False + + :param key: the key to pop. + :param default: if provided the value to return if the key was + not in the dictionary. + """ + lst: list[V] + + try: + lst = super().pop(key) # type: ignore[assignment] + + if len(lst) == 0: + raise exceptions.BadRequestKeyError(key) + + return lst[0] + except KeyError: + if default is not _missing: + return default + + raise exceptions.BadRequestKeyError(key) from None + + def popitem(self) -> tuple[K, V]: + """Pop an item from the dict.""" + item: tuple[K, list[V]] + + try: + item = super().popitem() # type: ignore[assignment] + + if len(item[1]) == 0: + raise exceptions.BadRequestKeyError(item[0]) + + return item[0], item[1][0] + except KeyError as e: + raise exceptions.BadRequestKeyError(e.args[0]) from None + + def poplist(self, key: K) -> list[V]: + """Pop the list for a key from the dict. If the key is not in the dict + an empty list is returned. + + .. versionchanged:: 0.5 + If the key does no longer exist a list is returned instead of + raising an error. + """ + return super().pop(key, []) # type: ignore[return-value] + + def popitemlist(self) -> tuple[K, list[V]]: + """Pop a ``(key, list)`` tuple from the dict.""" + try: + return super().popitem() # type: ignore[return-value] + except KeyError as e: + raise exceptions.BadRequestKeyError(e.args[0]) from None + + def __copy__(self) -> te.Self: + return self.copy() + + def __deepcopy__(self, memo: t.Any) -> te.Self: + return self.deepcopy(memo=memo) + + def __repr__(self) -> str: + return f"{type(self).__name__}({list(self.items(multi=True))!r})" + + +class _omd_bucket(t.Generic[K, V]): + """Wraps values in the :class:`OrderedMultiDict`. This makes it + possible to keep an order over multiple different keys. It requires + a lot of extra memory and slows down access a lot, but makes it + possible to access elements in O(1) and iterate in O(n). + """ + + __slots__ = ("prev", "key", "value", "next") + + def __init__(self, omd: _OrderedMultiDict[K, V], key: K, value: V) -> None: + self.prev: _omd_bucket[K, V] | None = omd._last_bucket + self.key: K = key + self.value: V = value + self.next: _omd_bucket[K, V] | None = None + + if omd._first_bucket is None: + omd._first_bucket = self + if omd._last_bucket is not None: + omd._last_bucket.next = self + omd._last_bucket = self + + def unlink(self, omd: _OrderedMultiDict[K, V]) -> None: + if self.prev: + self.prev.next = self.next + if self.next: + self.next.prev = self.prev + if omd._first_bucket is self: + omd._first_bucket = self.next + if omd._last_bucket is self: + omd._last_bucket = self.prev + + +class _OrderedMultiDict(MultiDict[K, V]): + """Works like a regular :class:`MultiDict` but preserves the + order of the fields. To convert the ordered multi dict into a + list you can use the :meth:`items` method and pass it ``multi=True``. + + In general an :class:`OrderedMultiDict` is an order of magnitude + slower than a :class:`MultiDict`. + + .. admonition:: note + + Due to a limitation in Python you cannot convert an ordered + multi dict into a regular dict by using ``dict(multidict)``. + Instead you have to use the :meth:`to_dict` method, otherwise + the internal bucket objects are exposed. + + .. deprecated:: 3.1 + Will be removed in Werkzeug 3.2. Use ``MultiDict`` instead. + """ + + def __init__( + self, + mapping: ( + MultiDict[K, V] + | cabc.Mapping[K, V | list[V] | tuple[V, ...] | set[V]] + | cabc.Iterable[tuple[K, V]] + | None + ) = None, + ) -> None: + import warnings + + warnings.warn( + "'OrderedMultiDict' is deprecated and will be removed in Werkzeug" + " 3.2. Use 'MultiDict' instead.", + DeprecationWarning, + stacklevel=2, + ) + super().__init__() + self._first_bucket: _omd_bucket[K, V] | None = None + self._last_bucket: _omd_bucket[K, V] | None = None + if mapping is not None: + self.update(mapping) + + def __eq__(self, other: object) -> bool: + if not isinstance(other, MultiDict): + return NotImplemented + if isinstance(other, _OrderedMultiDict): + iter1 = iter(self.items(multi=True)) + iter2 = iter(other.items(multi=True)) + try: + for k1, v1 in iter1: + k2, v2 = next(iter2) + if k1 != k2 or v1 != v2: + return False + except StopIteration: + return False + try: + next(iter2) + except StopIteration: + return True + return False + if len(self) != len(other): + return False + for key, values in self.lists(): + if other.getlist(key) != values: + return False + return True + + __hash__ = None # type: ignore[assignment] + + def __reduce_ex__(self, protocol: t.SupportsIndex) -> t.Any: + return type(self), (list(self.items(multi=True)),) + + def __getstate__(self) -> t.Any: + return list(self.items(multi=True)) + + def __setstate__(self, values: t.Any) -> None: + self.clear() + + for key, value in values: + self.add(key, value) + + def __getitem__(self, key: K) -> V: + if key in self: + return dict.__getitem__(self, key)[0].value # type: ignore[index,no-any-return] + raise exceptions.BadRequestKeyError(key) + + def __setitem__(self, key: K, value: V) -> None: + self.poplist(key) + self.add(key, value) + + def __delitem__(self, key: K) -> None: + self.pop(key) + + def keys(self) -> cabc.Iterable[K]: # type: ignore[override] + return (key for key, _ in self.items()) + + def __iter__(self) -> cabc.Iterator[K]: + return iter(self.keys()) + + def values(self) -> cabc.Iterable[V]: # type: ignore[override] + return (value for key, value in self.items()) + + def items(self, multi: bool = False) -> cabc.Iterable[tuple[K, V]]: # type: ignore[override] + ptr = self._first_bucket + if multi: + while ptr is not None: + yield ptr.key, ptr.value + ptr = ptr.next + else: + returned_keys = set() + while ptr is not None: + if ptr.key not in returned_keys: + returned_keys.add(ptr.key) + yield ptr.key, ptr.value + ptr = ptr.next + + def lists(self) -> cabc.Iterable[tuple[K, list[V]]]: + returned_keys = set() + ptr = self._first_bucket + while ptr is not None: + if ptr.key not in returned_keys: + yield ptr.key, self.getlist(ptr.key) + returned_keys.add(ptr.key) + ptr = ptr.next + + def listvalues(self) -> cabc.Iterable[list[V]]: + for _key, values in self.lists(): + yield values + + def add(self, key: K, value: V) -> None: + dict.setdefault(self, key, []).append(_omd_bucket(self, key, value)) # type: ignore[arg-type,attr-defined] + + @t.overload + def getlist(self, key: K) -> list[V]: ... + @t.overload + def getlist(self, key: K, type: cabc.Callable[[V], T]) -> list[T]: ... + def getlist( + self, key: K, type: cabc.Callable[[V], T] | None = None + ) -> list[V] | list[T]: + rv: list[_omd_bucket[K, V]] + + try: + rv = dict.__getitem__(self, key) # type: ignore[index] + except KeyError: + return [] + if type is None: + return [x.value for x in rv] + result = [] + for item in rv: + try: + result.append(type(item.value)) + except (ValueError, TypeError): + pass + return result + + def setlist(self, key: K, new_list: cabc.Iterable[V]) -> None: + self.poplist(key) + for value in new_list: + self.add(key, value) + + def setlistdefault(self, key: t.Any, default_list: t.Any = None) -> t.NoReturn: + raise TypeError("setlistdefault is unsupported for ordered multi dicts") + + def update( # type: ignore[override] + self, + mapping: ( + MultiDict[K, V] + | cabc.Mapping[K, V | list[V] | tuple[V, ...] | set[V]] + | cabc.Iterable[tuple[K, V]] + ), + ) -> None: + for key, value in iter_multi_items(mapping): + self.add(key, value) + + def poplist(self, key: K) -> list[V]: + buckets: cabc.Iterable[_omd_bucket[K, V]] = dict.pop(self, key, ()) # type: ignore[arg-type] + for bucket in buckets: + bucket.unlink(self) + return [x.value for x in buckets] + + @t.overload + def pop(self, key: K) -> V: ... + @t.overload + def pop(self, key: K, default: V) -> V: ... + @t.overload + def pop(self, key: K, default: T) -> V | T: ... + def pop( + self, + key: K, + default: V | T = _missing, # type: ignore[assignment] + ) -> V | T: + buckets: list[_omd_bucket[K, V]] + + try: + buckets = dict.pop(self, key) # type: ignore[arg-type] + except KeyError: + if default is not _missing: + return default + + raise exceptions.BadRequestKeyError(key) from None + + for bucket in buckets: + bucket.unlink(self) + + return buckets[0].value + + def popitem(self) -> tuple[K, V]: + key: K + buckets: list[_omd_bucket[K, V]] + + try: + key, buckets = dict.popitem(self) # type: ignore[arg-type,assignment] + except KeyError as e: + raise exceptions.BadRequestKeyError(e.args[0]) from None + + for bucket in buckets: + bucket.unlink(self) + + return key, buckets[0].value + + def popitemlist(self) -> tuple[K, list[V]]: + key: K + buckets: list[_omd_bucket[K, V]] + + try: + key, buckets = dict.popitem(self) # type: ignore[arg-type,assignment] + except KeyError as e: + raise exceptions.BadRequestKeyError(e.args[0]) from None + + for bucket in buckets: + bucket.unlink(self) + + return key, [x.value for x in buckets] + + +class CombinedMultiDict(ImmutableMultiDictMixin[K, V], MultiDict[K, V]): # type: ignore[misc] + """A read only :class:`MultiDict` that you can pass multiple :class:`MultiDict` + instances as sequence and it will combine the return values of all wrapped + dicts: + + >>> from werkzeug.datastructures import CombinedMultiDict, MultiDict + >>> post = MultiDict([('foo', 'bar')]) + >>> get = MultiDict([('blub', 'blah')]) + >>> combined = CombinedMultiDict([get, post]) + >>> combined['foo'] + 'bar' + >>> combined['blub'] + 'blah' + + This works for all read operations and will raise a `TypeError` for + methods that usually change data which isn't possible. + + From Werkzeug 0.3 onwards, the `KeyError` raised by this class is also a + subclass of the :exc:`~exceptions.BadRequest` HTTP exception and will + render a page for a ``400 BAD REQUEST`` if caught in a catch-all for HTTP + exceptions. + """ + + def __reduce_ex__(self, protocol: t.SupportsIndex) -> t.Any: + return type(self), (self.dicts,) + + def __init__(self, dicts: cabc.Iterable[MultiDict[K, V]] | None = None) -> None: + super().__init__() + self.dicts: list[MultiDict[K, V]] = list(dicts or ()) + + @classmethod + def fromkeys(cls, keys: t.Any, value: t.Any = None) -> t.NoReturn: + raise TypeError(f"cannot create {cls.__name__!r} instances by fromkeys") + + def __getitem__(self, key: K) -> V: + for d in self.dicts: + if key in d: + return d[key] + raise exceptions.BadRequestKeyError(key) + + @t.overload # type: ignore[override] + def get(self, key: K) -> V | None: ... + @t.overload + def get(self, key: K, default: V) -> V: ... + @t.overload + def get(self, key: K, default: T) -> V | T: ... + @t.overload + def get(self, key: str, type: cabc.Callable[[V], T]) -> T | None: ... + @t.overload + def get(self, key: str, default: T, type: cabc.Callable[[V], T]) -> T: ... + def get( # type: ignore[misc] + self, + key: K, + default: V | T | None = None, + type: cabc.Callable[[V], T] | None = None, + ) -> V | T | None: + for d in self.dicts: + if key in d: + if type is not None: + try: + return type(d[key]) + except (ValueError, TypeError): + continue + return d[key] + return default + + @t.overload + def getlist(self, key: K) -> list[V]: ... + @t.overload + def getlist(self, key: K, type: cabc.Callable[[V], T]) -> list[T]: ... + def getlist( + self, key: K, type: cabc.Callable[[V], T] | None = None + ) -> list[V] | list[T]: + rv = [] + for d in self.dicts: + rv.extend(d.getlist(key, type)) # type: ignore[arg-type] + return rv + + def _keys_impl(self) -> set[K]: + """This function exists so __len__ can be implemented more efficiently, + saving one list creation from an iterator. + """ + return set(k for d in self.dicts for k in d) + + def keys(self) -> cabc.Iterable[K]: # type: ignore[override] + return self._keys_impl() + + def __iter__(self) -> cabc.Iterator[K]: + return iter(self._keys_impl()) + + @t.overload # type: ignore[override] + def items(self) -> cabc.Iterable[tuple[K, V]]: ... + @t.overload + def items(self, multi: t.Literal[True]) -> cabc.Iterable[tuple[K, list[V]]]: ... + def items( + self, multi: bool = False + ) -> cabc.Iterable[tuple[K, V]] | cabc.Iterable[tuple[K, list[V]]]: + found = set() + for d in self.dicts: + for key, value in d.items(multi): + if multi: + yield key, value + elif key not in found: + found.add(key) + yield key, value + + def values(self) -> cabc.Iterable[V]: # type: ignore[override] + for _, value in self.items(): + yield value + + def lists(self) -> cabc.Iterable[tuple[K, list[V]]]: + rv: dict[K, list[V]] = {} + for d in self.dicts: + for key, values in d.lists(): + rv.setdefault(key, []).extend(values) + return rv.items() + + def listvalues(self) -> cabc.Iterable[list[V]]: + return (x[1] for x in self.lists()) + + def copy(self) -> MultiDict[K, V]: # type: ignore[override] + """Return a shallow mutable copy of this object. + + This returns a :class:`MultiDict` representing the data at the + time of copying. The copy will no longer reflect changes to the + wrapped dicts. + + .. versionchanged:: 0.15 + Return a mutable :class:`MultiDict`. + """ + return MultiDict(self) + + def __len__(self) -> int: + return len(self._keys_impl()) + + def __contains__(self, key: K) -> bool: # type: ignore[override] + for d in self.dicts: + if key in d: + return True + return False + + def __repr__(self) -> str: + return f"{type(self).__name__}({self.dicts!r})" + + +class ImmutableDict(ImmutableDictMixin[K, V], dict[K, V]): # type: ignore[misc] + """An immutable :class:`dict`. + + .. versionadded:: 0.5 + """ + + def __repr__(self) -> str: + return f"{type(self).__name__}({dict.__repr__(self)})" + + def copy(self) -> dict[K, V]: + """Return a shallow mutable copy of this object. Keep in mind that + the standard library's :func:`copy` function is a no-op for this class + like for any other python immutable type (eg: :class:`tuple`). + """ + return dict(self) + + def __copy__(self) -> te.Self: + return self + + +class ImmutableMultiDict(ImmutableMultiDictMixin[K, V], MultiDict[K, V]): # type: ignore[misc] + """An immutable :class:`MultiDict`. + + .. versionadded:: 0.5 + """ + + def copy(self) -> MultiDict[K, V]: # type: ignore[override] + """Return a shallow mutable copy of this object. Keep in mind that + the standard library's :func:`copy` function is a no-op for this class + like for any other python immutable type (eg: :class:`tuple`). + """ + return MultiDict(self) + + def __copy__(self) -> te.Self: + return self + + +class _ImmutableOrderedMultiDict( # type: ignore[misc] + ImmutableMultiDictMixin[K, V], _OrderedMultiDict[K, V] +): + """An immutable :class:`OrderedMultiDict`. + + .. deprecated:: 3.1 + Will be removed in Werkzeug 3.2. Use ``ImmutableMultiDict`` instead. + + .. versionadded:: 0.6 + """ + + def __init__( + self, + mapping: ( + MultiDict[K, V] + | cabc.Mapping[K, V | list[V] | tuple[V, ...] | set[V]] + | cabc.Iterable[tuple[K, V]] + | None + ) = None, + ) -> None: + super().__init__() + + if mapping is not None: + for k, v in iter_multi_items(mapping): + _OrderedMultiDict.add(self, k, v) + + def _iter_hashitems(self) -> cabc.Iterable[t.Any]: + return enumerate(self.items(multi=True)) + + def copy(self) -> _OrderedMultiDict[K, V]: # type: ignore[override] + """Return a shallow mutable copy of this object. Keep in mind that + the standard library's :func:`copy` function is a no-op for this class + like for any other python immutable type (eg: :class:`tuple`). + """ + return _OrderedMultiDict(self) + + def __copy__(self) -> te.Self: + return self + + +class CallbackDict(UpdateDictMixin[K, V], dict[K, V]): + """A dict that calls a function passed every time something is changed. + The function is passed the dict instance. + """ + + def __init__( + self, + initial: cabc.Mapping[K, V] | cabc.Iterable[tuple[K, V]] | None = None, + on_update: cabc.Callable[[te.Self], None] | None = None, + ) -> None: + if initial is None: + super().__init__() + else: + super().__init__(initial) + + self.on_update = on_update + + def __repr__(self) -> str: + return f"<{type(self).__name__} {super().__repr__()}>" + + +class HeaderSet(cabc.MutableSet[str]): + """Similar to the :class:`ETags` class this implements a set-like structure. + Unlike :class:`ETags` this is case insensitive and used for vary, allow, and + content-language headers. + + If not constructed using the :func:`parse_set_header` function the + instantiation works like this: + + >>> hs = HeaderSet(['foo', 'bar', 'baz']) + >>> hs + HeaderSet(['foo', 'bar', 'baz']) + """ + + def __init__( + self, + headers: cabc.Iterable[str] | None = None, + on_update: cabc.Callable[[te.Self], None] | None = None, + ) -> None: + self._headers = list(headers or ()) + self._set = {x.lower() for x in self._headers} + self.on_update = on_update + + def add(self, header: str) -> None: + """Add a new header to the set.""" + self.update((header,)) + + def remove(self: te.Self, header: str) -> None: + """Remove a header from the set. This raises an :exc:`KeyError` if the + header is not in the set. + + .. versionchanged:: 0.5 + In older versions a :exc:`IndexError` was raised instead of a + :exc:`KeyError` if the object was missing. + + :param header: the header to be removed. + """ + key = header.lower() + if key not in self._set: + raise KeyError(header) + self._set.remove(key) + for idx, key in enumerate(self._headers): + if key.lower() == header: + del self._headers[idx] + break + if self.on_update is not None: + self.on_update(self) + + def update(self: te.Self, iterable: cabc.Iterable[str]) -> None: + """Add all the headers from the iterable to the set. + + :param iterable: updates the set with the items from the iterable. + """ + inserted_any = False + for header in iterable: + key = header.lower() + if key not in self._set: + self._headers.append(header) + self._set.add(key) + inserted_any = True + if inserted_any and self.on_update is not None: + self.on_update(self) + + def discard(self, header: str) -> None: + """Like :meth:`remove` but ignores errors. + + :param header: the header to be discarded. + """ + try: + self.remove(header) + except KeyError: + pass + + def find(self, header: str) -> int: + """Return the index of the header in the set or return -1 if not found. + + :param header: the header to be looked up. + """ + header = header.lower() + for idx, item in enumerate(self._headers): + if item.lower() == header: + return idx + return -1 + + def index(self, header: str) -> int: + """Return the index of the header in the set or raise an + :exc:`IndexError`. + + :param header: the header to be looked up. + """ + rv = self.find(header) + if rv < 0: + raise IndexError(header) + return rv + + def clear(self: te.Self) -> None: + """Clear the set.""" + self._set.clear() + self._headers.clear() + + if self.on_update is not None: + self.on_update(self) + + def as_set(self, preserve_casing: bool = False) -> set[str]: + """Return the set as real python set type. When calling this, all + the items are converted to lowercase and the ordering is lost. + + :param preserve_casing: if set to `True` the items in the set returned + will have the original case like in the + :class:`HeaderSet`, otherwise they will + be lowercase. + """ + if preserve_casing: + return set(self._headers) + return set(self._set) + + def to_header(self) -> str: + """Convert the header set into an HTTP header string.""" + return ", ".join(map(http.quote_header_value, self._headers)) + + def __getitem__(self, idx: t.SupportsIndex) -> str: + return self._headers[idx] + + def __delitem__(self: te.Self, idx: t.SupportsIndex) -> None: + rv = self._headers.pop(idx) + self._set.remove(rv.lower()) + if self.on_update is not None: + self.on_update(self) + + def __setitem__(self: te.Self, idx: t.SupportsIndex, value: str) -> None: + old = self._headers[idx] + self._set.remove(old.lower()) + self._headers[idx] = value + self._set.add(value.lower()) + if self.on_update is not None: + self.on_update(self) + + def __contains__(self, header: str) -> bool: # type: ignore[override] + return header.lower() in self._set + + def __len__(self) -> int: + return len(self._set) + + def __iter__(self) -> cabc.Iterator[str]: + return iter(self._headers) + + def __bool__(self) -> bool: + return bool(self._set) + + def __str__(self) -> str: + return self.to_header() + + def __repr__(self) -> str: + return f"{type(self).__name__}({self._headers!r})" + + +# circular dependencies +from .. import http + + +def __getattr__(name: str) -> t.Any: + import warnings + + if name == "OrderedMultiDict": + warnings.warn( + "'OrderedMultiDict' is deprecated and will be removed in Werkzeug" + " 3.2. Use 'MultiDict' instead.", + DeprecationWarning, + stacklevel=2, + ) + return _OrderedMultiDict + + if name == "ImmutableOrderedMultiDict": + warnings.warn( + "'ImmutableOrderedMultiDict' is deprecated and will be removed in" + " Werkzeug 3.2. Use 'ImmutableMultiDict' instead.", + DeprecationWarning, + stacklevel=2, + ) + return _ImmutableOrderedMultiDict + + raise AttributeError(name) diff --git a/gestao_raul/Lib/site-packages/werkzeug/debug/__init__.py b/gestao_raul/Lib/site-packages/werkzeug/debug/__init__.py new file mode 100644 index 0000000..0c4cabd --- /dev/null +++ b/gestao_raul/Lib/site-packages/werkzeug/debug/__init__.py @@ -0,0 +1,565 @@ +from __future__ import annotations + +import getpass +import hashlib +import json +import os +import pkgutil +import re +import sys +import time +import typing as t +import uuid +from contextlib import ExitStack +from io import BytesIO +from itertools import chain +from multiprocessing import Value +from os.path import basename +from os.path import join +from zlib import adler32 + +from .._internal import _log +from ..exceptions import NotFound +from ..exceptions import SecurityError +from ..http import parse_cookie +from ..sansio.utils import host_is_trusted +from ..security import gen_salt +from ..utils import send_file +from ..wrappers.request import Request +from ..wrappers.response import Response +from .console import Console +from .tbtools import DebugFrameSummary +from .tbtools import DebugTraceback +from .tbtools import render_console_html + +if t.TYPE_CHECKING: + from _typeshed.wsgi import StartResponse + from _typeshed.wsgi import WSGIApplication + from _typeshed.wsgi import WSGIEnvironment + +# A week +PIN_TIME = 60 * 60 * 24 * 7 + + +def hash_pin(pin: str) -> str: + return hashlib.sha1(f"{pin} added salt".encode("utf-8", "replace")).hexdigest()[:12] + + +_machine_id: str | bytes | None = None + + +def get_machine_id() -> str | bytes | None: + global _machine_id + + if _machine_id is not None: + return _machine_id + + def _generate() -> str | bytes | None: + linux = b"" + + # machine-id is stable across boots, boot_id is not. + for filename in "/etc/machine-id", "/proc/sys/kernel/random/boot_id": + try: + with open(filename, "rb") as f: + value = f.readline().strip() + except OSError: + continue + + if value: + linux += value + break + + # Containers share the same machine id, add some cgroup + # information. This is used outside containers too but should be + # relatively stable across boots. + try: + with open("/proc/self/cgroup", "rb") as f: + linux += f.readline().strip().rpartition(b"/")[2] + except OSError: + pass + + if linux: + return linux + + # On OS X, use ioreg to get the computer's serial number. + try: + # subprocess may not be available, e.g. Google App Engine + # https://github.com/pallets/werkzeug/issues/925 + from subprocess import PIPE + from subprocess import Popen + + dump = Popen( + ["ioreg", "-c", "IOPlatformExpertDevice", "-d", "2"], stdout=PIPE + ).communicate()[0] + match = re.search(b'"serial-number" = <([^>]+)', dump) + + if match is not None: + return match.group(1) + except (OSError, ImportError): + pass + + # On Windows, use winreg to get the machine guid. + if sys.platform == "win32": + import winreg + + try: + with winreg.OpenKey( + winreg.HKEY_LOCAL_MACHINE, + "SOFTWARE\\Microsoft\\Cryptography", + 0, + winreg.KEY_READ | winreg.KEY_WOW64_64KEY, + ) as rk: + guid: str | bytes + guid_type: int + guid, guid_type = winreg.QueryValueEx(rk, "MachineGuid") + + if guid_type == winreg.REG_SZ: + return guid.encode() + + return guid + except OSError: + pass + + return None + + _machine_id = _generate() + return _machine_id + + +class _ConsoleFrame: + """Helper class so that we can reuse the frame console code for the + standalone console. + """ + + def __init__(self, namespace: dict[str, t.Any]): + self.console = Console(namespace) + self.id = 0 + + def eval(self, code: str) -> t.Any: + return self.console.eval(code) + + +def get_pin_and_cookie_name( + app: WSGIApplication, +) -> tuple[str, str] | tuple[None, None]: + """Given an application object this returns a semi-stable 9 digit pin + code and a random key. The hope is that this is stable between + restarts to not make debugging particularly frustrating. If the pin + was forcefully disabled this returns `None`. + + Second item in the resulting tuple is the cookie name for remembering. + """ + pin = os.environ.get("WERKZEUG_DEBUG_PIN") + rv = None + num = None + + # Pin was explicitly disabled + if pin == "off": + return None, None + + # Pin was provided explicitly + if pin is not None and pin.replace("-", "").isdecimal(): + # If there are separators in the pin, return it directly + if "-" in pin: + rv = pin + else: + num = pin + + modname = getattr(app, "__module__", t.cast(object, app).__class__.__module__) + username: str | None + + try: + # getuser imports the pwd module, which does not exist in Google + # App Engine. It may also raise a KeyError if the UID does not + # have a username, such as in Docker. + username = getpass.getuser() + # Python >= 3.13 only raises OSError + except (ImportError, KeyError, OSError): + username = None + + mod = sys.modules.get(modname) + + # This information only exists to make the cookie unique on the + # computer, not as a security feature. + probably_public_bits = [ + username, + modname, + getattr(app, "__name__", type(app).__name__), + getattr(mod, "__file__", None), + ] + + # This information is here to make it harder for an attacker to + # guess the cookie name. They are unlikely to be contained anywhere + # within the unauthenticated debug page. + private_bits = [str(uuid.getnode()), get_machine_id()] + + h = hashlib.sha1() + for bit in chain(probably_public_bits, private_bits): + if not bit: + continue + if isinstance(bit, str): + bit = bit.encode() + h.update(bit) + h.update(b"cookiesalt") + + cookie_name = f"__wzd{h.hexdigest()[:20]}" + + # If we need to generate a pin we salt it a bit more so that we don't + # end up with the same value and generate out 9 digits + if num is None: + h.update(b"pinsalt") + num = f"{int(h.hexdigest(), 16):09d}"[:9] + + # Format the pincode in groups of digits for easier remembering if + # we don't have a result yet. + if rv is None: + for group_size in 5, 4, 3: + if len(num) % group_size == 0: + rv = "-".join( + num[x : x + group_size].rjust(group_size, "0") + for x in range(0, len(num), group_size) + ) + break + else: + rv = num + + return rv, cookie_name + + +class DebuggedApplication: + """Enables debugging support for a given application:: + + from werkzeug.debug import DebuggedApplication + from myapp import app + app = DebuggedApplication(app, evalex=True) + + The ``evalex`` argument allows evaluating expressions in any frame + of a traceback. This works by preserving each frame with its local + state. Some state, such as context globals, cannot be restored with + the frame by default. When ``evalex`` is enabled, + ``environ["werkzeug.debug.preserve_context"]`` will be a callable + that takes a context manager, and can be called multiple times. + Each context manager will be entered before evaluating code in the + frame, then exited again, so they can perform setup and cleanup for + each call. + + :param app: the WSGI application to run debugged. + :param evalex: enable exception evaluation feature (interactive + debugging). This requires a non-forking server. + :param request_key: The key that points to the request object in this + environment. This parameter is ignored in current + versions. + :param console_path: the URL for a general purpose console. + :param console_init_func: the function that is executed before starting + the general purpose console. The return value + is used as initial namespace. + :param show_hidden_frames: by default hidden traceback frames are skipped. + You can show them by setting this parameter + to `True`. + :param pin_security: can be used to disable the pin based security system. + :param pin_logging: enables the logging of the pin system. + + .. versionchanged:: 2.2 + Added the ``werkzeug.debug.preserve_context`` environ key. + """ + + _pin: str + _pin_cookie: str + + def __init__( + self, + app: WSGIApplication, + evalex: bool = False, + request_key: str = "werkzeug.request", + console_path: str = "/console", + console_init_func: t.Callable[[], dict[str, t.Any]] | None = None, + show_hidden_frames: bool = False, + pin_security: bool = True, + pin_logging: bool = True, + ) -> None: + if not console_init_func: + console_init_func = None + self.app = app + self.evalex = evalex + self.frames: dict[int, DebugFrameSummary | _ConsoleFrame] = {} + self.frame_contexts: dict[int, list[t.ContextManager[None]]] = {} + self.request_key = request_key + self.console_path = console_path + self.console_init_func = console_init_func + self.show_hidden_frames = show_hidden_frames + self.secret = gen_salt(20) + self._failed_pin_auth = Value("B") + + self.pin_logging = pin_logging + if pin_security: + # Print out the pin for the debugger on standard out. + if os.environ.get("WERKZEUG_RUN_MAIN") == "true" and pin_logging: + _log("warning", " * Debugger is active!") + if self.pin is None: + _log("warning", " * Debugger PIN disabled. DEBUGGER UNSECURED!") + else: + _log("info", " * Debugger PIN: %s", self.pin) + else: + self.pin = None + + self.trusted_hosts: list[str] = [".localhost", "127.0.0.1"] + """List of domains to allow requests to the debugger from. A leading dot + allows all subdomains. This only allows ``".localhost"`` domains by + default. + + .. versionadded:: 3.0.3 + """ + + @property + def pin(self) -> str | None: + if not hasattr(self, "_pin"): + pin_cookie = get_pin_and_cookie_name(self.app) + self._pin, self._pin_cookie = pin_cookie # type: ignore + return self._pin + + @pin.setter + def pin(self, value: str) -> None: + self._pin = value + + @property + def pin_cookie_name(self) -> str: + """The name of the pin cookie.""" + if not hasattr(self, "_pin_cookie"): + pin_cookie = get_pin_and_cookie_name(self.app) + self._pin, self._pin_cookie = pin_cookie # type: ignore + return self._pin_cookie + + def debug_application( + self, environ: WSGIEnvironment, start_response: StartResponse + ) -> t.Iterator[bytes]: + """Run the application and conserve the traceback frames.""" + contexts: list[t.ContextManager[t.Any]] = [] + + if self.evalex: + environ["werkzeug.debug.preserve_context"] = contexts.append + + app_iter = None + try: + app_iter = self.app(environ, start_response) + yield from app_iter + if hasattr(app_iter, "close"): + app_iter.close() + except Exception as e: + if hasattr(app_iter, "close"): + app_iter.close() # type: ignore + + tb = DebugTraceback(e, skip=1, hide=not self.show_hidden_frames) + + for frame in tb.all_frames: + self.frames[id(frame)] = frame + self.frame_contexts[id(frame)] = contexts + + is_trusted = bool(self.check_pin_trust(environ)) + html = tb.render_debugger_html( + evalex=self.evalex and self.check_host_trust(environ), + secret=self.secret, + evalex_trusted=is_trusted, + ) + response = Response(html, status=500, mimetype="text/html") + + try: + yield from response(environ, start_response) + except Exception: + # if we end up here there has been output but an error + # occurred. in that situation we can do nothing fancy any + # more, better log something into the error log and fall + # back gracefully. + environ["wsgi.errors"].write( + "Debugging middleware caught exception in streamed " + "response at a point where response headers were already " + "sent.\n" + ) + + environ["wsgi.errors"].write("".join(tb.render_traceback_text())) + + def execute_command( + self, + request: Request, + command: str, + frame: DebugFrameSummary | _ConsoleFrame, + ) -> Response: + """Execute a command in a console.""" + if not self.check_host_trust(request.environ): + return SecurityError() # type: ignore[return-value] + + contexts = self.frame_contexts.get(id(frame), []) + + with ExitStack() as exit_stack: + for cm in contexts: + exit_stack.enter_context(cm) + + return Response(frame.eval(command), mimetype="text/html") + + def display_console(self, request: Request) -> Response: + """Display a standalone shell.""" + if not self.check_host_trust(request.environ): + return SecurityError() # type: ignore[return-value] + + if 0 not in self.frames: + if self.console_init_func is None: + ns = {} + else: + ns = dict(self.console_init_func()) + ns.setdefault("app", self.app) + self.frames[0] = _ConsoleFrame(ns) + is_trusted = bool(self.check_pin_trust(request.environ)) + return Response( + render_console_html(secret=self.secret, evalex_trusted=is_trusted), + mimetype="text/html", + ) + + def get_resource(self, request: Request, filename: str) -> Response: + """Return a static resource from the shared folder.""" + path = join("shared", basename(filename)) + + try: + data = pkgutil.get_data(__package__, path) + except OSError: + return NotFound() # type: ignore[return-value] + else: + if data is None: + return NotFound() # type: ignore[return-value] + + etag = str(adler32(data) & 0xFFFFFFFF) + return send_file( + BytesIO(data), request.environ, download_name=filename, etag=etag + ) + + def check_pin_trust(self, environ: WSGIEnvironment) -> bool | None: + """Checks if the request passed the pin test. This returns `True` if the + request is trusted on a pin/cookie basis and returns `False` if not. + Additionally if the cookie's stored pin hash is wrong it will return + `None` so that appropriate action can be taken. + """ + if self.pin is None: + return True + val = parse_cookie(environ).get(self.pin_cookie_name) + if not val or "|" not in val: + return False + ts_str, pin_hash = val.split("|", 1) + + try: + ts = int(ts_str) + except ValueError: + return False + + if pin_hash != hash_pin(self.pin): + return None + return (time.time() - PIN_TIME) < ts + + def check_host_trust(self, environ: WSGIEnvironment) -> bool: + return host_is_trusted(environ.get("HTTP_HOST"), self.trusted_hosts) + + def _fail_pin_auth(self) -> None: + with self._failed_pin_auth.get_lock(): + count = self._failed_pin_auth.value + self._failed_pin_auth.value = count + 1 + + time.sleep(5.0 if count > 5 else 0.5) + + def pin_auth(self, request: Request) -> Response: + """Authenticates with the pin.""" + if not self.check_host_trust(request.environ): + return SecurityError() # type: ignore[return-value] + + exhausted = False + auth = False + trust = self.check_pin_trust(request.environ) + pin = t.cast(str, self.pin) + + # If the trust return value is `None` it means that the cookie is + # set but the stored pin hash value is bad. This means that the + # pin was changed. In this case we count a bad auth and unset the + # cookie. This way it becomes harder to guess the cookie name + # instead of the pin as we still count up failures. + bad_cookie = False + if trust is None: + self._fail_pin_auth() + bad_cookie = True + + # If we're trusted, we're authenticated. + elif trust: + auth = True + + # If we failed too many times, then we're locked out. + elif self._failed_pin_auth.value > 10: + exhausted = True + + # Otherwise go through pin based authentication + else: + entered_pin = request.args["pin"] + + if entered_pin.strip().replace("-", "") == pin.replace("-", ""): + self._failed_pin_auth.value = 0 + auth = True + else: + self._fail_pin_auth() + + rv = Response( + json.dumps({"auth": auth, "exhausted": exhausted}), + mimetype="application/json", + ) + if auth: + rv.set_cookie( + self.pin_cookie_name, + f"{int(time.time())}|{hash_pin(pin)}", + httponly=True, + samesite="Strict", + secure=request.is_secure, + ) + elif bad_cookie: + rv.delete_cookie(self.pin_cookie_name) + return rv + + def log_pin_request(self, request: Request) -> Response: + """Log the pin if needed.""" + if not self.check_host_trust(request.environ): + return SecurityError() # type: ignore[return-value] + + if self.pin_logging and self.pin is not None: + _log( + "info", " * To enable the debugger you need to enter the security pin:" + ) + _log("info", " * Debugger pin code: %s", self.pin) + return Response("") + + def __call__( + self, environ: WSGIEnvironment, start_response: StartResponse + ) -> t.Iterable[bytes]: + """Dispatch the requests.""" + # important: don't ever access a function here that reads the incoming + # form data! Otherwise the application won't have access to that data + # any more! + request = Request(environ) + response = self.debug_application + if request.args.get("__debugger__") == "yes": + cmd = request.args.get("cmd") + arg = request.args.get("f") + secret = request.args.get("s") + frame = self.frames.get(request.args.get("frm", type=int)) # type: ignore + if cmd == "resource" and arg: + response = self.get_resource(request, arg) # type: ignore + elif cmd == "pinauth" and secret == self.secret: + response = self.pin_auth(request) # type: ignore + elif cmd == "printpin" and secret == self.secret: + response = self.log_pin_request(request) # type: ignore + elif ( + self.evalex + and cmd is not None + and frame is not None + and self.secret == secret + and self.check_pin_trust(environ) + ): + response = self.execute_command(request, cmd, frame) # type: ignore + elif ( + self.evalex + and self.console_path is not None + and request.path == self.console_path + ): + response = self.display_console(request) # type: ignore + return response(environ, start_response) diff --git a/gestao_raul/Lib/site-packages/werkzeug/debug/__pycache__/__init__.cpython-310.pyc b/gestao_raul/Lib/site-packages/werkzeug/debug/__pycache__/__init__.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..9db6f774289a947e71df89687cea4f493ed227d1 GIT binary patch literal 15000 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 literal 0 HcmV?d00001 diff --git a/gestao_raul/Lib/site-packages/werkzeug/debug/__pycache__/console.cpython-310.pyc b/gestao_raul/Lib/site-packages/werkzeug/debug/__pycache__/console.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..ae942e664a69540aafb63765232b0e255bad5f6c GIT binary patch literal 8346 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 literal 0 HcmV?d00001 diff --git a/gestao_raul/Lib/site-packages/werkzeug/debug/__pycache__/repr.cpython-310.pyc b/gestao_raul/Lib/site-packages/werkzeug/debug/__pycache__/repr.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..6d1066fcd471a8aa7fe675d708fc55aa4ee80683 GIT binary patch literal 9041 zcma)BOLH4ncJ4QT2KbajQnICK(~?X$6g2jXt%*&;4@#Epk!g)6k79@ns)^emL4p8y zyFrO{A1zb15MMze@8=TB~9qUsO#%S$RqAGo=jAwd?MBwv^?zQ_rmrlm>Jy7~IiHLxHtBEK+-VX(Sj8 zMt1bl8IdlX6`9gGaYYP@p(j>pEEuZl;;I-CqfhM8_-##`5oe!h;_Qx5ng}Ma%X#sd zm=NbN_d@1^m=byMikQUQmoWELaT#+jWA4ksoY(TN$N%-k(rQqNJQ=iP5C)CNk7~_E z=vAB26Twn@dAZhD_F8S(YKB2r@V;!+YiofQtppgZ`t5q;($Z<_2?H;9O!K_;rVPAV z1DmY#exBbDUQ0GbyApVx-2eOz2E!=uh1aZlAI{Hy`f0&+?>CnN>>|BKwP=O!Fgrib zD?jr${rQTlwIZ6Y?oCI-+-Rj1dds!VAoP5<(yTXSwO!{$e1=MMz2)Qan(e67jtcGz zl4@R0vVNn{>^|!pu5A%)v;#EGsWX>@$CaQ(tSC1d^(_oIL0IuyK|DJ3{yPhDq0w28 zorOmJ>o=#j<2y5=w&_*sei**D)O=iYJ#S{^N5v~sQ7x(m`EcesuBa0{?oL|?>MfcO zJdS7_14Vb{I<_gsKl^{~c4dkmhBZI=WjXW^-vZaX=vI#F0VN zmW{*=BU#ajA>9wPP5fpF={YnaZAaVHJKCNOtmyF@voi1_;-4mH=C9A zI`9}S+`ISDt=Wa;AdLKGSpsqkcWO%uAs+P_WV_~L1Z(749JH6OGiI;T{)N_7;__vg zF0bMyp#hRJ8{n52i@RV##CYwpM+A{ytA}3H^ukC0l!fvmi3jnfNZ$z9 zSO6wfA|M)a^}Gs{u~`p#xPKHZb=5ME1)lJNq&An&NU~r_YP}YQ;Czx5?e$i<-mLib z5R%>slS~=vRh9mFkff`<5jCv`40Wc&QHRQ#ETF_(4jPFeH(5@K4A8wSy2T%%71FI8 zE3Kc^U1M06FX6I+U*G4@gpwcvt)#<@8bXKJ%n3`_FjtlsfRS@W7RJgJ4p=ypq{^Q_ zQ34tN;$|&u)%`7iuc08e39LXrdz@*It*LvYSJQ00PUEJsXfPY3)ZS81@!POgH8Ou2 z?HUXqpxyGL%1R(S@T|}k5;Iz+ad4Rd=>rY1pMDG)dPqUaV$8);_qSRBpJz((H_ykS z1A6`vWZ%`90<-kFo>*Z}ubyOby3FV;mkE!IUrUdNyId*s2ImqxYPM>X{ajS|u(9QJ zJOZ~I!kP+UzV}I?K}yGm{aZ9T5CgD19BHdSw*c0^HH7iZWE5-jnlOb{H@A(Bv1@gJ zdmTD~nf9KxZAQ*+s)L!^R+R2oJMeOAmb}rign3@uwuQZ$LE94AFOBo0Ax^^)&bHkh zchnstw_|r4k@~GMhB?q2+%un^i$`X{76h$KD%;Ba)Xa72D@x+F90rLE*DYBD5ZD=; zZEa$)Ma{}HG-;g31W01HwnVd%ShQ7Qlc$T4fpW{2{<8F2E8uZr17Ec$G3!9Pwc4yT zlFTQ!?%XYtyUM5JCECj)a)rnRkdk}2K`39P-pfSDoE=jWNDxX`FPGm(e@N>{Q7kll%~W5{zIQSvhd^&XTVSMg5+$I(KCW~>p(8b)oKDDps!DhDx>k3EIr~okh z;6NOn9M-kWUI{x6w7b|4gdY_(1A!eOVC$isY-{{{M-B>|X(9!)h<5MJWV%e~z{mT>w6{OrhblyR zK|=&$vUp!k5<^JG01*;lk_j4!b`Tu}iQ~6gm?*O}humw=_%Mtvcr*um?wEQWNLm$e=z|-^L_*|qQ z>X=_ri;qbPAXz)ko_2R1!y!TQtZ9wNpQBO1ukS;n9}r~z6^+BN<8Amg3n7OYAoLJU zVDFeE2kn$d2Pw4EXamSW25lGZEZSMLb7<$#9zc6g+z`WJ1iK80pNKyeV`3bE%W!5w zyd&Nf7sVx9jfffHiB~XZRJkp$ z@k~K{C_WND7H?sv2~mJT&2p4?Wca@qi5PgwS$bSjxn-@RmD#1r>$s#OrVQIvS(6uW zdD8yCgVY+es9fH{AV(Um9>4T`TY;cM&D+->?(2*49op+%kl2P-oq8A>i}^TPmCZP4 zsE+G>deF13NY?5KvtiH7auPQ6P??G|QQ@v1!6-G9MVf~lQsEapWbZ@1=Fq}Qk#J9F`1yHTq&MQ}}Jc!^V6Mlcy9x{R;N zpg<{PtsYGEJ%q|{5H>CckI7MV{X`!Ane;YEA&R7j^@809pBI5XmH9)TS(NDI^9NhpDCrAlOi%u{s9fa z29r1kzLC*HG}kdEkjEgRyFvypG7-1Ib5ksbNYA8e@Rnmciu|f& z2oLgeB9lbOu5yqV8?Q|!`Vz;ANRZf|zK%iU@@zFF0Y`p8gzT)c#J1ub#rb*Xn6TJ@ z-lb`aAjqiO(Mj16>ydl0@cs&uLJ!1&B^`##9yAPy(a??GI|qXq3jHpdu(W1;=@g+J z+vo)yGSS8U4Nsq&)0#6TlN0d%bGYjncTh#aBlXLNZFBr$QG#OC{+L{x@uz^||PqL0`552JNBd!>e=Xy^Y?1zTQFf-b3$DU+*w_7txE_(y<*z(Yu1) zGkv|N@X8Rq=X$+pkEzq-t-1J2ABri@?F!_C)kK`R6hI^LuO2*RcPp1^xJJX7d*qy`t|2M(Le5bOqa;I=MJV5+UYGMC?m*=UiFO)9U1ko$ zf@JWpsg^eBE+G*TCspncY^tF)I{Ki*s>A`}Q7}6oP#~hx4X^n(ED2u+p}c7rKa{4r zUs9RVezA9|${gFYFWMrfbLd3rK=F{!cL4zkJN6KD33ishqSA-{KxgQf^0IHSq*`2nj?+)m3RR907pf7^gw%n&=;c+1XUB5^*0pjG0WaV5$vlIa~>UA z@raDv$M@m?AK)CysQ)EeiP>tlKJM?ojpfW2;;En&y znTQ5pxpP+TyPTdgjPG)0JbnrYNz{F;BHkVP?*G7r&=A&ANsde(6<6|Lp0$h~Dq8Om z3&&Lkj2U(W0~lVS`Cw$0f;5C%Sfwu7zFg?9>Pci)~Tm$RK$Pwn5QD)br{iyCs0VRdyH#CfqDdoU&uN#_Y zXPc;p<0Sy9ym9tsw|Wj>?&}`A{1*rKSL6tgJYa$b2!i{Cs2=EvSx9F-N0md6u!=xv6#>B}0`sX~Of9>33k z&0_id3McRR2@biqm&L@Vq60}XST3D}cs2$>{9*R1(#9NbzJHFMxy`xTwm$ z1d)9g9f-U6trG3s`w-F&?OGKVP$|?gp^~FYB@y(()**JVRgl$j;0VlaSPX>;FYycn zzzBv>JEdR@)lCyIirLVGnr)&K1=WF4rGIOVQ58KihqM%>z?o>J7@wVqMDf_`M=~kJ z*ikPY;|VnnGlKQvTodn98_P4-(T;~tu3^WN=q~uo>TswXFov8-Q6QEKfAP_0w`T8` zZ+`i?DxmijvW}FAR+rqBXuV!m@$(F?qzr$Fiy z)$Z2Qhp-KfOsJO+iI9lcZUERzH0Y?o3iW?XSr_?%aLHBM^ z|2Ey*aPQIj!`n!zX*};PWutXCgyZwA|GIBORq9DAjra`>v7Fc<61(N!^i9v7=TfyQ zTE9s{e?o+6X)-4AH4%#IB>7~yP2|sr{5g@oAVTIt{(^{4ghE9X$x+}Y$#Jr~RCxiJ zNmfEhB0XkASx;F-T?{kn$(A=A!%& z{^%`CwT;*8cnc#9np>t`Lk21gbMVrDUeoGPl08-kQ?YL*!W-a#;w(vqq~xyqa;@D8 z{c4~}7JTjz+K?l4RHx(=-GdKBK_c`2n;%b)RczPb?0C0B?<#qRfp5z&dd6E#8@GM!d7t9Nwyv-zroKm`h_RXKbrjEuyZo zv@^anQJp|NQ=Mel>XbdnaH7l|FtW-UKb|G$8r`cHbAS+g9vI=_+bB?o#dkXt3 zJIapTNmplIlh|=~;*P{l>?+kmXg$LWvDZ77NZKPK_hVNrBkQHyX+ea3&z)MzS*(c>&69p zt-Zc(^U6XD6_0Ql?xw+QXR+i5JC5yd*mh7dHn?41Ed8o!vSg5HF7DX=bJkYtmD(0t z|N4SKqp}x_n^>%nW$j4{SCHer@^u)#X)yl}?@Z?Had(vR`^7 z=G73sm4zPHD{CIxF$4z|OKVnbbDeu_m(A5Y$Kz*>ll6MNM>5v9Wz-zY_ZLe&Lg172 z08&Ogf&2_X)IBe-c`}qfzKVI*Hv%K@j2*9StnC;TKj5Cb-ka0n!A2V+E?i#u?5c6) z+{&f%Ah7^hIzwZ4pK5j9uwCZt45YK=ZQI;tM!>C_P1`UUF4k{>05+db238h;V8X7r z8WUy+?N-B`gFbDwfy z8ouF(0fyx=!?kVZ6KU3LqwOXiKq8wq(EyDC483w`rMDBB`|F@$&2o);0}~|QjTWFG z6ovB0+84=+y|r|D%kx2Iy9U;ReV{uu zDkxVL@C}%}xRit9wzsw{zEk!`uxdG0p9mm+Lip7UND}@N&(3?TorNoy&NliQ0w(&{ zD{-Ab`gp~XB(N8pBX(KbwjiJm6#Vm_D;eC|M(qXE1RF~=kJ;$OapAen4#*%dqJcz) z-UI_`3{lj+4Omy4WP+@#K&59xKm}nKAj*B#KzoId8ehBi+9ktkwVXyxjGiCJz3Xj* z29D=#8W7x(%^BMpjoOCckU{XoC&4`ouJ|pilUOm=Yg)Ig*l-K9E(z6u)>&(gZF~hE zuf@j%SuD~u%ke#__2NO z4Ir+?E3xt!!)gcK7PeS3T3{fle9SR1Q6jLuuoYXh%$CRPd6-A+rcdzB@m%FIb8|UJ zP@gkq&4(D}=H_6ipND@yDsYL6id735w@75f$@ruWjB@M}nG)dJvtB)V#CwEk+6gwW zQ49hhNZufmvGu_SVF{AmjIxr%py7g$AS1~bwo|i>ZK5H>jO-X}AaS-YD}6FSb9UzY ziZ>)`35qzMhdL9xP3t8)h8*8)H;8QmHiMuT12v>F*LiDr2Atk>^w}V%5S6}@1O`>w z4z!`pX$PbVXrlMjX$F6dybRETbUB{ZQi%;ixQTHkqrnzSqB?i#bc2;yY<@OgUb@(T zELLg_XmujDb@ULqN=rE9dkx@KSsTV~q}{zM$k2(!|FpN()`UvE7CR^ z%#Ktje>C>0<=e|W105-Wy?=6Gvig>^4`GDHiiaaP3(q%FarAKtBqD9i^PEV>;os)& z{;^M+p+?R${n2{@Pa4m8iZ%Wfd{V>za?-f{z$(S!6=9zv=;_voGqMhDU z_>G(A+~cTc@U2NRqMk*61O1bz=g@zPq?^A^wlS;k_fl zQSjgp=uixfg+=NQRd(PbHI&UmXdUPO*@rp~sBu7zQ-2@ocqk*@I=FHX!Bv4yl6K1^ z?eL>wUuK*J{1Q%~RdvdQ)1CO2CJC)+E|J(o`kD=g#E!<}w+V;KBzwtc@HGZ0!qnJ7 z|4Wn-Z9Y2yu<9_&Lja<^$`1pgoQg6%J&*KQeqS{O%Vu27m_mt7v#OI4d#$o8ROX>nJ`rX6yNjk)dmHWRT2!pVF*c#5vHKLI zw=HMW4A!EtVY-+=1^!bI@JRJ{{3r{P!~^J~AL$Jr=eQlE;F8uhBeetN&(zIi2P%f~ zqd=P!!k!n>{J;-MB_2W_@I)^_Y_zK0y>T+PNy zqsmXwf>i9keg5qAx8R=p*SBpa@UCC*YV9p}lm7LqS6^K|e|_D?+Mda+wsZZB#@cls z44A{gx@qAH#>Dabf;dtaf;GXK`PL4vVDjI@zU35bFETgCw>-xt*d+2T8Zs{j*fjDfDO*QwWroe( z(RSr(8m%%r%#Mgw22hlr(W+VYE9`l8f<1F5g^bV{c9K1d-n_`g%tb{ZSABITtC4C3 zcJ&~{0@)W6e#k&t{OaUTx8Sb7B5cPh&j9sUfJoM2DJoJ;h|)OK=JoKhi?U1Z7~+lohdDIVLB69gr{~nr}Pxr^)a@ zxcEhYMlcfOm6_&G(DG^FnM`MPln(Pf7-)IGYh)jLe^e(-1(rupVK^^CX;*H_KR~_? zHe114y`KW6+RDCM*_Vxdc?p!&C?ey}Vu--`q0GNRbrSoy5a^{%Xcsq4N|Oofj>w&v zC$JMB`=56je(+AvZaMZl=t=yAGedDupR;{KcjLy$c4#Xa9aN! zN0YkJIZsZjwdTQD@0(uXA`8D59&C-`NQz045U=hzj<-z_L?6EM>V>vQBW&Pg!tv1y zE*_s3VF(hA8#W&dHN0A_&5>Furvy*xmq>~Z;xuPl`XFlo7J!R*y1)8tKC+rd`y;-pM*J+(!f7)V1w0LNi79)#;r4;?+ z&f))akr9Fr1^X%!Q*e*yC+{f_qz6PnWhDX`BdzH*Tp?GHPAMHLcq&E*IZk*uM}7YU z7Wj5BNyrhSCgjeuk0JKd0nu2)tvPM@Z6bx;cl|MiaQ(^t3Z^s6Jj(R0!qfn!c30LU zRoaxig8?|ZD{o4!qDV5d8CC)Az5fik{O(s-3XZ=B5q4#8|2$+t@1_Bhfon^a;>%%X zFU9mwhbc_oSB3Vcn>t{h?Pe)N2(n=oPAkf0j$dJ!AWyYjGNIY~sw=Y`0s@*NALh_k z2(x>I5cB*%x{t5~j&~*0@O5l&EX+KJUGe9FVsjksyTsdI#zb?nIn~X(I5to}AcBeU zO{H51W&UAU;CI+Wcg#((Nt6m!8w(IPU^YPSO%oe;EgWZu?rAf0P#qpsBx0tDM<~)1DngM`Ft>73`mQphI#I6S z!&Q%iOohJ#SbmO*QN`ic(RZ*XCsR`AOTS1?C|&q8g%PKC=V)I74c8MYGS~0n&ta|3 zap>4c>H+p`4skD{1?09n>9cY8+sPP01{X{Fa*4l7BUOy#mr;x4+(U&Ms68TIGs<7v zaRcl2G9@58g}7nFt>^ov7X|vCnp`~FnXSN9C-J>6rW9GRrF|V~KyEK}3Y9fjip`sC zr0$nGW5}TnH8sk0cT$M@Us{6AN+;=%C?)m*^%d!lC_kL^nBg~Q11b`lk&2u}l;JkH z@ivRC51kdl2=cR3dxeTG&CO0jGcri0}6{&u5cWpLa#|q zLUb^;DubxSq}*jxxc1hYZ=SpQb@TPrH{XC`FWihZOj#`^LX{Z6sDMoDW>3;0jdG%# zoPbEhDaPNXAz5^qEnHvtQA$vO-z4M$`Zf+RjcIKPV)ISv6)4x+j>ESIa#UucC#@ar zeVU~B0>CF^gPdwb$1^2d?OxZQH* ze}1vOq$P3TC~l-8J-$kcig6ouSX@2T$j0~nC~rc?k}#luhzj|9vBig>fPX47CUAGi zbig>KnmSWpijELeGu_N|bzzE-_vq@#fXMtLBQpp0h@XyYOoI`GuYVY)FpLq+2y;U9 zP~Rn&tU&j+A5lAn-m$$R%djjmFL1C}?p{uqocxMVH(m#da5#Az@n{`^vn@0nnE+05 z&`Hg`|KgeMzC2gX@em!HLL*3hoG%q@L|omAg{#GWRfuAgPICBBwx5cv7W!3WWqB9# zmB%BEj^x<0YSS`8!r!CXK+Jt=K1&73RFu7P?zLqhxtuhFzfYYC(htzHwQ@QZW`Q%U zArP+;s&Q(Ae?Xly(c^MAooE{CUD}ciyiQ_Q0(4QG5MqW%4=xy-Fgyi_SPoBtgzCRK zC!cOyN9KDduYjT=kp6$hLHrU{M<_!v5r1Q-j#HxFU!}UdTGj;j20>IjAQQ7tgjRwk zG>st4nNBD46EWw&hT^1uf(Qe8&rX)8t>JNv=|nqC)snWbe2|1#yM{ z4iy9S7Bz}t_-iQs0grzIMMlzOC8hivk6hf(4I8(S-{o+Hu9IKp6oMp z4~N7|K>&R0L#YlAf#vTML=b$Ojj^H#dnpJ$Ap&Izi8E+D69>y^WtqWd*&zhKIrbTL zgdL?Y_(OPd)dJ4yk}%Dkcg`7Sh3!B4UjOKuzc`e3c@G(TT*%OM37LyF^7!IPB)Jhl zX57H_6sY-Ge~|Q#ucHt*dG(ESj6KQ{<%`#Zu&_@%KwC2TUO8*HSsCnI+p`{1J)O(HbXTuRJ? z7Xkh>XIva^JA@q3te_;J_XuL*^d@b40vn<)jFv3qK9Gc%g2Hz)frt(E)CVHQdRml4 z%h4h85)D6%%5PDWHQtr)icN)bfG8W$G&V=k^xN3|O~l`bw!RHuh}KcOB9Mws>g`6b z5hbEfXPEQ(&N)jQCNJFBa z$h0EkEDZ8U(XyaZ0bYlLr5aavfP~lu3A)n1(}{ysC}Ruri?%uv0ysPu>7t9Nqqrz%zGG- z9JNJC53_~(W6)y)`t=|kWbTsdlO+sy2~Snj5h1eTUj8neEVxh(`U~8_57H*@>E!;9 z<&SIS11pbG*eNF)BYYq7MR1o!XJe$+9Dm465|4U+Bupgx2S^Wpj7li&Ne@7)2U3^n z2=PHX#J<1|j@PaXs;Pl?7iNbkxFiDwQ3o}}g&7U0%|qXQO^Rda39ey z{csQ`+Sm#&0e`W1ahV|e`OZ{s!Y|B;W#T4GPX-vvL1{yAZs%M|eC>g@}nrAK=OT33dD_it3mEYaw|? z%S1ZjwR+=rjQ&XgL@5j5;r2tNii;-7l_ZdUtSo(f?T1q|&G$%E$dV#tkdg1lzX=5f z1v&kktbKxiDTElv_M?sL50XqTK51r#!n1*uOFD%-9i&ZApu{N`%xx4=I*GCb8OwU4 zG}z$kr#d!r;Y`;mxRT?4j)7%8rU}WYAdHaKfuNShqAWqzC^sKvU{B+*WctOm62dm? zHVR~&h~!c3;?;9+CeHL<5D-yb+&#sfcn!^RHYOrj4G{rQ@`?W?TGb3qZ#LNNYF3;p zqMGpouSGTfBbrPwQ83`os3{B;NA250{drVyzk&n4D9<3Qn^3fa#EBxpHaLL@^6360 zgMZ-BzM^OLlN9HOQ5)hxITJf0zej5cM?=)e+u+}&Vv>qsm--LT(Q~iq%#4xvJhv!)d@N*=T#r&$Lj)hShYsv^RQ<>NO2J7Vw2 zp3(l!lMOqDN&t%wdx`6J*a>p@V857lFC{|8)C&IwVE8ww5M)UWV#0V2oAgP9bht_G z{qR#H7nB$eLgBIFDmswxEjb`finsoj_ErQiZq^_bR3f(e87D& None: + self._buffer: list[str] = [] + + def isatty(self) -> bool: + return False + + def close(self) -> None: + pass + + def flush(self) -> None: + pass + + def seek(self, n: int, mode: int = 0) -> None: + pass + + def readline(self) -> str: + if len(self._buffer) == 0: + return "" + ret = self._buffer[0] + del self._buffer[0] + return ret + + def reset(self) -> str: + val = "".join(self._buffer) + del self._buffer[:] + return val + + def _write(self, x: str) -> None: + self._buffer.append(x) + + def write(self, x: str) -> None: + self._write(escape(x)) + + def writelines(self, x: t.Iterable[str]) -> None: + self._write(escape("".join(x))) + + +class ThreadedStream: + """Thread-local wrapper for sys.stdout for the interactive console.""" + + @staticmethod + def push() -> None: + if not isinstance(sys.stdout, ThreadedStream): + sys.stdout = t.cast(t.TextIO, ThreadedStream()) + + _stream.set(HTMLStringO()) + + @staticmethod + def fetch() -> str: + try: + stream = _stream.get() + except LookupError: + return "" + + return stream.reset() + + @staticmethod + def displayhook(obj: object) -> None: + try: + stream = _stream.get() + except LookupError: + return _displayhook(obj) # type: ignore + + # stream._write bypasses escaping as debug_repr is + # already generating HTML for us. + if obj is not None: + _ipy.get().locals["_"] = obj + stream._write(debug_repr(obj)) + + def __setattr__(self, name: str, value: t.Any) -> None: + raise AttributeError(f"read only attribute {name}") + + def __dir__(self) -> list[str]: + return dir(sys.__stdout__) + + def __getattribute__(self, name: str) -> t.Any: + try: + stream = _stream.get() + except LookupError: + stream = sys.__stdout__ # type: ignore[assignment] + + return getattr(stream, name) + + def __repr__(self) -> str: + return repr(sys.__stdout__) + + +# add the threaded stream as display hook +_displayhook = sys.displayhook +sys.displayhook = ThreadedStream.displayhook + + +class _ConsoleLoader: + def __init__(self) -> None: + self._storage: dict[int, str] = {} + + def register(self, code: CodeType, source: str) -> None: + self._storage[id(code)] = source + # register code objects of wrapped functions too. + for var in code.co_consts: + if isinstance(var, CodeType): + self._storage[id(var)] = source + + def get_source_by_code(self, code: CodeType) -> str | None: + try: + return self._storage[id(code)] + except KeyError: + return None + + +class _InteractiveConsole(code.InteractiveInterpreter): + locals: dict[str, t.Any] + + def __init__(self, globals: dict[str, t.Any], locals: dict[str, t.Any]) -> None: + self.loader = _ConsoleLoader() + locals = { + **globals, + **locals, + "dump": dump, + "help": helper, + "__loader__": self.loader, + } + super().__init__(locals) + original_compile = self.compile + + def compile(source: str, filename: str, symbol: str) -> CodeType | None: + code = original_compile(source, filename, symbol) + + if code is not None: + self.loader.register(code, source) + + return code + + self.compile = compile # type: ignore[assignment] + self.more = False + self.buffer: list[str] = [] + + def runsource(self, source: str, **kwargs: t.Any) -> str: # type: ignore + source = f"{source.rstrip()}\n" + ThreadedStream.push() + prompt = "... " if self.more else ">>> " + try: + source_to_eval = "".join(self.buffer + [source]) + if super().runsource(source_to_eval, "", "single"): + self.more = True + self.buffer.append(source) + else: + self.more = False + del self.buffer[:] + finally: + output = ThreadedStream.fetch() + return f"{prompt}{escape(source)}{output}" + + def runcode(self, code: CodeType) -> None: + try: + exec(code, self.locals) + except Exception: + self.showtraceback() + + def showtraceback(self) -> None: + from .tbtools import DebugTraceback + + exc = t.cast(BaseException, sys.exc_info()[1]) + te = DebugTraceback(exc, skip=1) + sys.stdout._write(te.render_traceback_html()) # type: ignore + + def showsyntaxerror(self, filename: str | None = None) -> None: + from .tbtools import DebugTraceback + + exc = t.cast(BaseException, sys.exc_info()[1]) + te = DebugTraceback(exc, skip=4) + sys.stdout._write(te.render_traceback_html()) # type: ignore + + def write(self, data: str) -> None: + sys.stdout.write(data) + + +class Console: + """An interactive console.""" + + def __init__( + self, + globals: dict[str, t.Any] | None = None, + locals: dict[str, t.Any] | None = None, + ) -> None: + if locals is None: + locals = {} + if globals is None: + globals = {} + self._ipy = _InteractiveConsole(globals, locals) + + def eval(self, code: str) -> str: + _ipy.set(self._ipy) + old_sys_stdout = sys.stdout + try: + return self._ipy.runsource(code) + finally: + sys.stdout = old_sys_stdout diff --git a/gestao_raul/Lib/site-packages/werkzeug/debug/repr.py b/gestao_raul/Lib/site-packages/werkzeug/debug/repr.py new file mode 100644 index 0000000..2bbd9d5 --- /dev/null +++ b/gestao_raul/Lib/site-packages/werkzeug/debug/repr.py @@ -0,0 +1,282 @@ +"""Object representations for debugging purposes. Unlike the default +repr, these expose more information and produce HTML instead of ASCII. + +Together with the CSS and JavaScript of the debugger this gives a +colorful and more compact output. +""" + +from __future__ import annotations + +import codecs +import re +import sys +import typing as t +from collections import deque +from traceback import format_exception_only + +from markupsafe import escape + +missing = object() +_paragraph_re = re.compile(r"(?:\r\n|\r|\n){2,}") +RegexType = type(_paragraph_re) + +HELP_HTML = """\ +

\ +""" +OBJECT_DUMP_HTML = """\ +
+

%(title)s

+ %(repr)s + %(items)s
+
\ +""" + + +def debug_repr(obj: object) -> str: + """Creates a debug repr of an object as HTML string.""" + return DebugReprGenerator().repr(obj) + + +def dump(obj: object = missing) -> None: + """Print the object details to stdout._write (for the interactive + console of the web debugger. + """ + gen = DebugReprGenerator() + if obj is missing: + rv = gen.dump_locals(sys._getframe(1).f_locals) + else: + rv = gen.dump_object(obj) + sys.stdout._write(rv) # type: ignore + + +class _Helper: + """Displays an HTML version of the normal help, for the interactive + debugger only because it requires a patched sys.stdout. + """ + + def __repr__(self) -> str: + return "Type help(object) for help about object." + + def __call__(self, topic: t.Any | None = None) -> None: + if topic is None: + sys.stdout._write(f"{self!r}") # type: ignore + return + import pydoc + + pydoc.help(topic) + rv = sys.stdout.reset() # type: ignore + paragraphs = _paragraph_re.split(rv) + if len(paragraphs) > 1: + title = paragraphs[0] + text = "\n\n".join(paragraphs[1:]) + else: + title = "Help" + text = paragraphs[0] + sys.stdout._write(HELP_HTML % {"title": title, "text": text}) # type: ignore + + +helper = _Helper() + + +def _add_subclass_info(inner: str, obj: object, base: type | tuple[type, ...]) -> str: + if isinstance(base, tuple): + for cls in base: + if type(obj) is cls: + return inner + elif type(obj) is base: + return inner + module = "" + if obj.__class__.__module__ not in ("__builtin__", "exceptions"): + module = f'{obj.__class__.__module__}.' + return f"{module}{type(obj).__name__}({inner})" + + +def _sequence_repr_maker( + left: str, right: str, base: type, limit: int = 8 +) -> t.Callable[[DebugReprGenerator, t.Iterable[t.Any], bool], str]: + def proxy(self: DebugReprGenerator, obj: t.Iterable[t.Any], recursive: bool) -> str: + if recursive: + return _add_subclass_info(f"{left}...{right}", obj, base) + buf = [left] + have_extended_section = False + for idx, item in enumerate(obj): + if idx: + buf.append(", ") + if idx == limit: + buf.append('') + have_extended_section = True + buf.append(self.repr(item)) + if have_extended_section: + buf.append("") + buf.append(right) + return _add_subclass_info("".join(buf), obj, base) + + return proxy + + +class DebugReprGenerator: + def __init__(self) -> None: + self._stack: list[t.Any] = [] + + list_repr = _sequence_repr_maker("[", "]", list) + tuple_repr = _sequence_repr_maker("(", ")", tuple) + set_repr = _sequence_repr_maker("set([", "])", set) + frozenset_repr = _sequence_repr_maker("frozenset([", "])", frozenset) + deque_repr = _sequence_repr_maker( + 'collections.deque([', "])", deque + ) + + def regex_repr(self, obj: t.Pattern[t.AnyStr]) -> str: + pattern = repr(obj.pattern) + pattern = codecs.decode(pattern, "unicode-escape", "ignore") + pattern = f"r{pattern}" + return f're.compile({pattern})' + + def string_repr(self, obj: str | bytes, limit: int = 70) -> str: + buf = [''] + r = repr(obj) + + # shorten the repr when the hidden part would be at least 3 chars + if len(r) - limit > 2: + buf.extend( + ( + escape(r[:limit]), + '', + escape(r[limit:]), + "", + ) + ) + else: + buf.append(escape(r)) + + buf.append("") + out = "".join(buf) + + # if the repr looks like a standard string, add subclass info if needed + if r[0] in "'\"" or (r[0] == "b" and r[1] in "'\""): + return _add_subclass_info(out, obj, (bytes, str)) + + # otherwise, assume the repr distinguishes the subclass already + return out + + def dict_repr( + self, + d: dict[int, None] | dict[str, int] | dict[str | int, int], + recursive: bool, + limit: int = 5, + ) -> str: + if recursive: + return _add_subclass_info("{...}", d, dict) + buf = ["{"] + have_extended_section = False + for idx, (key, value) in enumerate(d.items()): + if idx: + buf.append(", ") + if idx == limit - 1: + buf.append('') + have_extended_section = True + buf.append( + f'{self.repr(key)}:' + f' {self.repr(value)}' + ) + if have_extended_section: + buf.append("") + buf.append("}") + return _add_subclass_info("".join(buf), d, dict) + + def object_repr(self, obj: t.Any) -> str: + r = repr(obj) + return f'{escape(r)}' + + def dispatch_repr(self, obj: t.Any, recursive: bool) -> str: + if obj is helper: + return f'{helper!r}' + if isinstance(obj, (int, float, complex)): + return f'{obj!r}' + if isinstance(obj, str) or isinstance(obj, bytes): + return self.string_repr(obj) + if isinstance(obj, RegexType): + return self.regex_repr(obj) + if isinstance(obj, list): + return self.list_repr(obj, recursive) + if isinstance(obj, tuple): + return self.tuple_repr(obj, recursive) + if isinstance(obj, set): + return self.set_repr(obj, recursive) + if isinstance(obj, frozenset): + return self.frozenset_repr(obj, recursive) + if isinstance(obj, dict): + return self.dict_repr(obj, recursive) + if isinstance(obj, deque): + return self.deque_repr(obj, recursive) + return self.object_repr(obj) + + def fallback_repr(self) -> str: + try: + info = "".join(format_exception_only(*sys.exc_info()[:2])) + except Exception: + info = "?" + return ( + '' + f"<broken repr ({escape(info.strip())})>" + ) + + def repr(self, obj: object) -> str: + recursive = False + for item in self._stack: + if item is obj: + recursive = True + break + self._stack.append(obj) + try: + try: + return self.dispatch_repr(obj, recursive) + except Exception: + return self.fallback_repr() + finally: + self._stack.pop() + + def dump_object(self, obj: object) -> str: + repr = None + items: list[tuple[str, str]] | None = None + + if isinstance(obj, dict): + title = "Contents of" + items = [] + for key, value in obj.items(): + if not isinstance(key, str): + items = None + break + items.append((key, self.repr(value))) + if items is None: + items = [] + repr = self.repr(obj) + for key in dir(obj): + try: + items.append((key, self.repr(getattr(obj, key)))) + except Exception: + pass + title = "Details for" + title += f" {object.__repr__(obj)[1:-1]}" + return self.render_object_dump(items, title, repr) + + def dump_locals(self, d: dict[str, t.Any]) -> str: + items = [(key, self.repr(value)) for key, value in d.items()] + return self.render_object_dump(items, "Local variables in frame") + + def render_object_dump( + self, items: list[tuple[str, str]], title: str, repr: str | None = None + ) -> str: + html_items = [] + for key, value in items: + html_items.append(f"{escape(key)}
{value}
") + if not html_items: + html_items.append("Nothing") + return OBJECT_DUMP_HTML % { + "title": escape(title), + "repr": f"
{repr if repr else ''}
", + "items": "\n".join(html_items), + } diff --git a/gestao_raul/Lib/site-packages/werkzeug/debug/shared/ICON_LICENSE.md b/gestao_raul/Lib/site-packages/werkzeug/debug/shared/ICON_LICENSE.md new file mode 100644 index 0000000..3bdbfc7 --- /dev/null +++ b/gestao_raul/Lib/site-packages/werkzeug/debug/shared/ICON_LICENSE.md @@ -0,0 +1,6 @@ +Silk icon set 1.3 by Mark James + +http://www.famfamfam.com/lab/icons/silk/ + +License: [CC-BY-2.5](https://creativecommons.org/licenses/by/2.5/) +or [CC-BY-3.0](https://creativecommons.org/licenses/by/3.0/) diff --git a/gestao_raul/Lib/site-packages/werkzeug/debug/shared/console.png b/gestao_raul/Lib/site-packages/werkzeug/debug/shared/console.png new file mode 100644 index 0000000000000000000000000000000000000000..c28dd63812d80e416682f835652f8e5824bdccb2 GIT binary patch literal 507 zcmVM#v1#3=Jvuyn6YS$$CoGDq?9U@APAh~ZOF>jp#TVKsZ^rDVDQJO z=z(unDix`Pp@6(DbUGbswOaq~fE^0}P{J^D(r7fOTCGyOUUzmBMUy*UwAN0eHX3ch z0VGKh>h*fm?RK3*p0=MB(nc}0O&K6sv)ObGuro)jd=1C!>krB`s44?r3Yg)uiG7!8OBL$a-Fo@&0(0LjNH2#KGJZi@q2YVKu xMc5!EfO4vTMwnf`nA&W_@!!aPwbiWO`5Vn?>V~$MffN7$002ovPDHLkV1l0g-PQmA literal 0 HcmV?d00001 diff --git a/gestao_raul/Lib/site-packages/werkzeug/debug/shared/debugger.js b/gestao_raul/Lib/site-packages/werkzeug/debug/shared/debugger.js new file mode 100644 index 0000000..809b14a --- /dev/null +++ b/gestao_raul/Lib/site-packages/werkzeug/debug/shared/debugger.js @@ -0,0 +1,344 @@ +docReady(() => { + if (!EVALEX_TRUSTED) { + initPinBox(); + } + // if we are in console mode, show the console. + if (CONSOLE_MODE && EVALEX) { + createInteractiveConsole(); + } + + const frames = document.querySelectorAll("div.traceback div.frame"); + if (EVALEX) { + addConsoleIconToFrames(frames); + } + addEventListenersToElements(document.querySelectorAll("div.detail"), "click", () => + document.querySelector("div.traceback").scrollIntoView(false) + ); + addToggleFrameTraceback(frames); + addToggleTraceTypesOnClick(document.querySelectorAll("h2.traceback")); + addInfoPrompt(document.querySelectorAll("span.nojavascript")); + wrapPlainTraceback(); +}); + +function addToggleFrameTraceback(frames) { + frames.forEach((frame) => { + frame.addEventListener("click", () => { + frame.getElementsByTagName("pre")[0].parentElement.classList.toggle("expanded"); + }); + }) +} + + +function wrapPlainTraceback() { + const plainTraceback = document.querySelector("div.plain textarea"); + const wrapper = document.createElement("pre"); + const textNode = document.createTextNode(plainTraceback.textContent); + wrapper.appendChild(textNode); + plainTraceback.replaceWith(wrapper); +} + +function makeDebugURL(args) { + const params = new URLSearchParams(args) + params.set("s", SECRET) + return `?__debugger__=yes&${params}` +} + +function initPinBox() { + document.querySelector(".pin-prompt form").addEventListener( + "submit", + function (event) { + event.preventDefault(); + const btn = this.btn; + btn.disabled = true; + + fetch( + makeDebugURL({cmd: "pinauth", pin: this.pin.value}) + ) + .then((res) => res.json()) + .then(({auth, exhausted}) => { + if (auth) { + EVALEX_TRUSTED = true; + fadeOut(document.getElementsByClassName("pin-prompt")[0]); + } else { + alert( + `Error: ${ + exhausted + ? "too many attempts. Restart server to retry." + : "incorrect pin" + }` + ); + } + }) + .catch((err) => { + alert("Error: Could not verify PIN. Network error?"); + console.error(err); + }) + .finally(() => (btn.disabled = false)); + }, + false + ); +} + +function promptForPin() { + if (!EVALEX_TRUSTED) { + fetch(makeDebugURL({cmd: "printpin"})); + const pinPrompt = document.getElementsByClassName("pin-prompt")[0]; + fadeIn(pinPrompt); + document.querySelector('.pin-prompt input[name="pin"]').focus(); + } +} + +/** + * Helper function for shell initialization + */ +function openShell(consoleNode, target, frameID) { + promptForPin(); + if (consoleNode) { + slideToggle(consoleNode); + return consoleNode; + } + let historyPos = 0; + const history = [""]; + const consoleElement = createConsole(); + const output = createConsoleOutput(); + const form = createConsoleInputForm(); + const command = createConsoleInput(); + + target.parentNode.appendChild(consoleElement); + consoleElement.append(output); + consoleElement.append(form); + form.append(command); + command.focus(); + slideToggle(consoleElement); + + form.addEventListener("submit", (e) => { + handleConsoleSubmit(e, command, frameID).then((consoleOutput) => { + output.append(consoleOutput); + command.focus(); + consoleElement.scrollTo(0, consoleElement.scrollHeight); + const old = history.pop(); + history.push(command.value); + if (typeof old !== "undefined") { + history.push(old); + } + historyPos = history.length - 1; + command.value = ""; + }); + }); + + command.addEventListener("keydown", (e) => { + if (e.key === "l" && e.ctrlKey) { + output.innerText = "--- screen cleared ---"; + } else if (e.key === "ArrowUp" || e.key === "ArrowDown") { + // Handle up arrow and down arrow. + if (e.key === "ArrowUp" && historyPos > 0) { + e.preventDefault(); + historyPos--; + } else if (e.key === "ArrowDown" && historyPos < history.length - 1) { + historyPos++; + } + command.value = history[historyPos]; + } + return false; + }); + + return consoleElement; +} + +function addEventListenersToElements(elements, event, listener) { + elements.forEach((el) => el.addEventListener(event, listener)); +} + +/** + * Add extra info + */ +function addInfoPrompt(elements) { + for (let i = 0; i < elements.length; i++) { + elements[i].innerHTML = + "

To switch between the interactive traceback and the plaintext " + + 'one, you can click on the "Traceback" headline. From the text ' + + "traceback you can also create a paste of it. " + + (!EVALEX + ? "" + : "For code execution mouse-over the frame you want to debug and " + + "click on the console icon on the right side." + + "

You can execute arbitrary Python code in the stack frames and " + + "there are some extra helpers available for introspection:" + + "

  • dump() shows all variables in the frame" + + "
  • dump(obj) dumps all that's known about the object
"); + elements[i].classList.remove("nojavascript"); + } +} + +function addConsoleIconToFrames(frames) { + for (let i = 0; i < frames.length; i++) { + let consoleNode = null; + const target = frames[i]; + const frameID = frames[i].id.substring(6); + + for (let j = 0; j < target.getElementsByTagName("pre").length; j++) { + const img = createIconForConsole(); + img.addEventListener("click", (e) => { + e.stopPropagation(); + consoleNode = openShell(consoleNode, target, frameID); + return false; + }); + target.getElementsByTagName("pre")[j].append(img); + } + } +} + +function slideToggle(target) { + target.classList.toggle("active"); +} + +/** + * toggle traceback types on click. + */ +function addToggleTraceTypesOnClick(elements) { + for (let i = 0; i < elements.length; i++) { + elements[i].addEventListener("click", () => { + document.querySelector("div.traceback").classList.toggle("hidden"); + document.querySelector("div.plain").classList.toggle("hidden"); + }); + elements[i].style.cursor = "pointer"; + document.querySelector("div.plain").classList.toggle("hidden"); + } +} + +function createConsole() { + const consoleNode = document.createElement("pre"); + consoleNode.classList.add("console"); + consoleNode.classList.add("active"); + return consoleNode; +} + +function createConsoleOutput() { + const output = document.createElement("div"); + output.classList.add("output"); + output.innerHTML = "[console ready]"; + return output; +} + +function createConsoleInputForm() { + const form = document.createElement("form"); + form.innerHTML = ">>> "; + return form; +} + +function createConsoleInput() { + const command = document.createElement("input"); + command.type = "text"; + command.setAttribute("autocomplete", "off"); + command.setAttribute("spellcheck", false); + command.setAttribute("autocapitalize", "off"); + command.setAttribute("autocorrect", "off"); + return command; +} + +function createIconForConsole() { + const img = document.createElement("img"); + img.setAttribute("src", makeDebugURL({cmd: "resource", f: "console.png"})); + img.setAttribute("title", "Open an interactive python shell in this frame"); + return img; +} + +function createExpansionButtonForConsole() { + const expansionButton = document.createElement("a"); + expansionButton.setAttribute("href", "#"); + expansionButton.setAttribute("class", "toggle"); + expansionButton.innerHTML = "  "; + return expansionButton; +} + +function createInteractiveConsole() { + const target = document.querySelector("div.console div.inner"); + while (target.firstChild) { + target.removeChild(target.firstChild); + } + openShell(null, target, 0); +} + +function handleConsoleSubmit(e, command, frameID) { + // Prevent page from refreshing. + e.preventDefault(); + + return new Promise((resolve) => { + fetch(makeDebugURL({cmd: command.value, frm: frameID})) + .then((res) => { + return res.text(); + }) + .then((data) => { + const tmp = document.createElement("div"); + tmp.innerHTML = data; + resolve(tmp); + + // Handle expandable span for long list outputs. + // Example to test: list(range(13)) + let wrapperAdded = false; + const wrapperSpan = document.createElement("span"); + const expansionButton = createExpansionButtonForConsole(); + + tmp.querySelectorAll("span.extended").forEach((spanToWrap) => { + const parentDiv = spanToWrap.parentNode; + if (!wrapperAdded) { + parentDiv.insertBefore(wrapperSpan, spanToWrap); + wrapperAdded = true; + } + parentDiv.removeChild(spanToWrap); + wrapperSpan.append(spanToWrap); + spanToWrap.hidden = true; + + expansionButton.addEventListener("click", (event) => { + event.preventDefault(); + spanToWrap.hidden = !spanToWrap.hidden; + expansionButton.classList.toggle("open"); + return false; + }); + }); + + // Add expansion button at end of wrapper. + if (wrapperAdded) { + wrapperSpan.append(expansionButton); + } + }) + .catch((err) => { + console.error(err); + }); + return false; + }); +} + +function fadeOut(element) { + element.style.opacity = 1; + + (function fade() { + element.style.opacity -= 0.1; + if (element.style.opacity < 0) { + element.style.display = "none"; + } else { + requestAnimationFrame(fade); + } + })(); +} + +function fadeIn(element, display) { + element.style.opacity = 0; + element.style.display = display || "block"; + + (function fade() { + let val = parseFloat(element.style.opacity) + 0.1; + if (val <= 1) { + element.style.opacity = val; + requestAnimationFrame(fade); + } + })(); +} + +function docReady(fn) { + if (document.readyState === "complete" || document.readyState === "interactive") { + setTimeout(fn, 1); + } else { + document.addEventListener("DOMContentLoaded", fn); + } +} diff --git a/gestao_raul/Lib/site-packages/werkzeug/debug/shared/less.png b/gestao_raul/Lib/site-packages/werkzeug/debug/shared/less.png new file mode 100644 index 0000000000000000000000000000000000000000..5efefd62b43e4f11dd300be4355a4b413c7a70d2 GIT binary patch literal 191 zcmeAS@N?(olHy`uVBq!ia0vp^+#t-s1|(OmDOUqhjKx9jP7LeL$-D$|*pj^6T^Kq* zuw()wNEK&+M`STji!cZ?GR&GI0Tg5}@$_|NzriFWuEAp!-_8pZviEdx43W5;{N}}r zALkuZ5)u;<5;XMn)mLoTym@kCXCsS)^--M@GHz~eJgoo!|3AJ?BC=^;p4#2!xpU{b bXtFW%8S(l$O4%<58pYu0>gTe~DWM4fkj^!0 literal 0 HcmV?d00001 diff --git a/gestao_raul/Lib/site-packages/werkzeug/debug/shared/more.png b/gestao_raul/Lib/site-packages/werkzeug/debug/shared/more.png new file mode 100644 index 0000000000000000000000000000000000000000..804fa226fe3ed9e6cc2bd044a848f33a2d7b4e4f GIT binary patch literal 200 zcmeAS@N?(olHy`uVBq!ia0vp^+#t-s1|(OmDOUqhjKx9jP7LeL$-D$|*pj^6T^Rm@ z;DWu&Cj&(|3p^r=fm(z?n2}-D90{Nxdx@v7EBg&5DRB)3hmHb?jr_0{K>_1cC{J-%1r lr(<|}#G9!1a#KtW>0AF44oJ8ZkqR`E!PC{xWt~$(698mrJ|X}B literal 0 HcmV?d00001 diff --git a/gestao_raul/Lib/site-packages/werkzeug/debug/shared/style.css b/gestao_raul/Lib/site-packages/werkzeug/debug/shared/style.css new file mode 100644 index 0000000..e9397ca --- /dev/null +++ b/gestao_raul/Lib/site-packages/werkzeug/debug/shared/style.css @@ -0,0 +1,150 @@ +body, input { font-family: sans-serif; color: #000; text-align: center; + margin: 1em; padding: 0; font-size: 15px; } +h1, h2, h3 { font-weight: normal; } + +input { background-color: #fff; margin: 0; text-align: left; + outline: none !important; } +input[type="submit"] { padding: 3px 6px; } +a { color: #11557C; } +a:hover { color: #177199; } +pre, code, +textarea { font-family: monospace; font-size: 14px; } + +div.debugger { text-align: left; padding: 12px; margin: auto; + background-color: white; } +h1 { font-size: 36px; margin: 0 0 0.3em 0; } +div.detail { cursor: pointer; } +div.detail p { margin: 0 0 8px 13px; font-size: 14px; white-space: pre-wrap; + font-family: monospace; } +div.explanation { margin: 20px 13px; font-size: 15px; color: #555; } +div.footer { font-size: 13px; text-align: right; margin: 30px 0; + color: #86989B; } + +h2 { font-size: 16px; margin: 1.3em 0 0.0 0; padding: 9px; + background-color: #11557C; color: white; } +h2 em, h3 em { font-style: normal; color: #A5D6D9; font-weight: normal; } + +div.traceback, div.plain { border: 1px solid #ddd; margin: 0 0 1em 0; padding: 10px; } +div.plain p { margin: 0; } +div.plain textarea, +div.plain pre { margin: 10px 0 0 0; padding: 4px; + background-color: #E8EFF0; border: 1px solid #D3E7E9; } +div.plain textarea { width: 99%; height: 300px; } +div.traceback h3 { font-size: 1em; margin: 0 0 0.8em 0; } +div.traceback ul { list-style: none; margin: 0; padding: 0 0 0 1em; } +div.traceback h4 { font-size: 13px; font-weight: normal; margin: 0.7em 0 0.1em 0; } +div.traceback pre { margin: 0; padding: 5px 0 3px 15px; + background-color: #E8EFF0; border: 1px solid #D3E7E9; } +div.traceback .library .current { background: white; color: #555; } +div.traceback .expanded .current { background: #E8EFF0; color: black; } +div.traceback pre:hover { background-color: #DDECEE; color: black; cursor: pointer; } +div.traceback div.source.expanded pre + pre { border-top: none; } + +div.traceback span.ws { display: none; } +div.traceback pre.before, div.traceback pre.after { display: none; background: white; } +div.traceback div.source.expanded pre.before, +div.traceback div.source.expanded pre.after { + display: block; +} + +div.traceback div.source.expanded span.ws { + display: inline; +} + +div.traceback blockquote { margin: 1em 0 0 0; padding: 0; white-space: pre-line; } +div.traceback img { float: right; padding: 2px; margin: -3px 2px 0 0; display: none; } +div.traceback img:hover { background-color: #ddd; cursor: pointer; + border-color: #BFDDE0; } +div.traceback pre:hover img { display: block; } +div.traceback cite.filename { font-style: normal; color: #3B666B; } + +pre.console { border: 1px solid #ccc; background: white!important; + color: black; padding: 5px!important; + margin: 3px 0 0 0!important; cursor: default!important; + max-height: 400px; overflow: auto; } +pre.console form { color: #555; } +pre.console input { background-color: transparent; color: #555; + width: 90%; font-family: monospace; font-size: 14px; + border: none!important; } + +span.string { color: #30799B; } +span.number { color: #9C1A1C; } +span.help { color: #3A7734; } +span.object { color: #485F6E; } +span.extended { opacity: 0.5; } +span.extended:hover { opacity: 1; } +a.toggle { text-decoration: none; background-repeat: no-repeat; + background-position: center center; + background-image: url(?__debugger__=yes&cmd=resource&f=more.png); } +a.toggle:hover { background-color: #444; } +a.open { background-image: url(?__debugger__=yes&cmd=resource&f=less.png); } + +pre.console div.traceback, +pre.console div.box { margin: 5px 10px; white-space: normal; + border: 1px solid #11557C; padding: 10px; + font-family: sans-serif; } +pre.console div.box h3, +pre.console div.traceback h3 { margin: -10px -10px 10px -10px; padding: 5px; + background: #11557C; color: white; } + +pre.console div.traceback pre:hover { cursor: default; background: #E8EFF0; } +pre.console div.traceback pre.syntaxerror { background: inherit; border: none; + margin: 20px -10px -10px -10px; + padding: 10px; border-top: 1px solid #BFDDE0; + background: #E8EFF0; } +pre.console div.noframe-traceback pre.syntaxerror { margin-top: -10px; border: none; } + +pre.console div.box pre.repr { padding: 0; margin: 0; background-color: white; border: none; } +pre.console div.box table { margin-top: 6px; } +pre.console div.box pre { border: none; } +pre.console div.box pre.help { background-color: white; } +pre.console div.box pre.help:hover { cursor: default; } +pre.console table tr { vertical-align: top; } +div.console { border: 1px solid #ccc; padding: 4px; background-color: #fafafa; } + +div.traceback pre, div.console pre { + white-space: pre-wrap; /* css-3 should we be so lucky... */ + white-space: -moz-pre-wrap; /* Mozilla, since 1999 */ + white-space: -pre-wrap; /* Opera 4-6 ?? */ + white-space: -o-pre-wrap; /* Opera 7 ?? */ + word-wrap: break-word; /* Internet Explorer 5.5+ */ + _white-space: pre; /* IE only hack to re-specify in + addition to word-wrap */ +} + + +div.pin-prompt { + position: absolute; + display: none; + top: 0; + bottom: 0; + left: 0; + right: 0; + background: rgba(255, 255, 255, 0.8); +} + +div.pin-prompt .inner { + background: #eee; + padding: 10px 50px; + width: 350px; + margin: 10% auto 0 auto; + border: 1px solid #ccc; + border-radius: 2px; +} + +div.exc-divider { + margin: 0.7em 0 0 -1em; + padding: 0.5em; + background: #11557C; + color: #ddd; + border: 1px solid #ddd; +} + +.console.active { + max-height: 0!important; + display: none; +} + +.hidden { + display: none; +} diff --git a/gestao_raul/Lib/site-packages/werkzeug/debug/tbtools.py b/gestao_raul/Lib/site-packages/werkzeug/debug/tbtools.py new file mode 100644 index 0000000..d922893 --- /dev/null +++ b/gestao_raul/Lib/site-packages/werkzeug/debug/tbtools.py @@ -0,0 +1,450 @@ +from __future__ import annotations + +import itertools +import linecache +import os +import re +import sys +import sysconfig +import traceback +import typing as t + +from markupsafe import escape + +from ..utils import cached_property +from .console import Console + +HEADER = """\ + + + + %(title)s // Werkzeug Debugger + + + + + + +
+""" + +FOOTER = """\ + +
+ +
+
+

Console Locked

+

+ The console is locked and needs to be unlocked by entering the PIN. + You can find the PIN printed out on the standard output of your + shell that runs the server. +

+

PIN: + + +

+
+
+ + +""" + +PAGE_HTML = ( + HEADER + + """\ +

%(exception_type)s

+
+

%(exception)s

+
+

Traceback (most recent call last)

+%(summary)s +
+

+ This is the Copy/Paste friendly version of the traceback. +

+ +
+
+ The debugger caught an exception in your WSGI application. You can now + look at the traceback which led to the error. + If you enable JavaScript you can also use additional features such as code + execution (if the evalex feature is enabled), automatic pasting of the + exceptions and much more. +
+""" + + FOOTER + + """ + +""" +) + +CONSOLE_HTML = ( + HEADER + + """\ +

Interactive Console

+
+In this console you can execute Python expressions in the context of the +application. The initial namespace was created by the debugger automatically. +
+
The Console requires JavaScript.
+""" + + FOOTER +) + +SUMMARY_HTML = """\ +
+ %(title)s +
    %(frames)s
+ %(description)s +
+""" + +FRAME_HTML = """\ +
+

File "%(filename)s", + line %(lineno)s, + in %(function_name)s

+
%(lines)s
+
+""" + + +def _process_traceback( + exc: BaseException, + te: traceback.TracebackException | None = None, + *, + skip: int = 0, + hide: bool = True, +) -> traceback.TracebackException: + if te is None: + te = traceback.TracebackException.from_exception(exc, lookup_lines=False) + + # Get the frames the same way StackSummary.extract did, in order + # to match each frame with the FrameSummary to augment. + frame_gen = traceback.walk_tb(exc.__traceback__) + limit = getattr(sys, "tracebacklimit", None) + + if limit is not None: + if limit < 0: + limit = 0 + + frame_gen = itertools.islice(frame_gen, limit) + + if skip: + frame_gen = itertools.islice(frame_gen, skip, None) + del te.stack[:skip] + + new_stack: list[DebugFrameSummary] = [] + hidden = False + + # Match each frame with the FrameSummary that was generated. + # Hide frames using Paste's __traceback_hide__ rules. Replace + # all visible FrameSummary with DebugFrameSummary. + for (f, _), fs in zip(frame_gen, te.stack): + if hide: + hide_value = f.f_locals.get("__traceback_hide__", False) + + if hide_value in {"before", "before_and_this"}: + new_stack = [] + hidden = False + + if hide_value == "before_and_this": + continue + elif hide_value in {"reset", "reset_and_this"}: + hidden = False + + if hide_value == "reset_and_this": + continue + elif hide_value in {"after", "after_and_this"}: + hidden = True + + if hide_value == "after_and_this": + continue + elif hide_value or hidden: + continue + + frame_args: dict[str, t.Any] = { + "filename": fs.filename, + "lineno": fs.lineno, + "name": fs.name, + "locals": f.f_locals, + "globals": f.f_globals, + } + + if sys.version_info >= (3, 11): + frame_args["colno"] = fs.colno + frame_args["end_colno"] = fs.end_colno + + new_stack.append(DebugFrameSummary(**frame_args)) + + # The codeop module is used to compile code from the interactive + # debugger. Hide any codeop frames from the bottom of the traceback. + while new_stack: + module = new_stack[0].global_ns.get("__name__") + + if module is None: + module = new_stack[0].local_ns.get("__name__") + + if module == "codeop": + del new_stack[0] + else: + break + + te.stack[:] = new_stack + + if te.__context__: + context_exc = t.cast(BaseException, exc.__context__) + te.__context__ = _process_traceback(context_exc, te.__context__, hide=hide) + + if te.__cause__: + cause_exc = t.cast(BaseException, exc.__cause__) + te.__cause__ = _process_traceback(cause_exc, te.__cause__, hide=hide) + + return te + + +class DebugTraceback: + __slots__ = ("_te", "_cache_all_tracebacks", "_cache_all_frames") + + def __init__( + self, + exc: BaseException, + te: traceback.TracebackException | None = None, + *, + skip: int = 0, + hide: bool = True, + ) -> None: + self._te = _process_traceback(exc, te, skip=skip, hide=hide) + + def __str__(self) -> str: + return f"<{type(self).__name__} {self._te}>" + + @cached_property + def all_tracebacks( + self, + ) -> list[tuple[str | None, traceback.TracebackException]]: + out = [] + current = self._te + + while current is not None: + if current.__cause__ is not None: + chained_msg = ( + "The above exception was the direct cause of the" + " following exception" + ) + chained_exc = current.__cause__ + elif current.__context__ is not None and not current.__suppress_context__: + chained_msg = ( + "During handling of the above exception, another" + " exception occurred" + ) + chained_exc = current.__context__ + else: + chained_msg = None + chained_exc = None + + out.append((chained_msg, current)) + current = chained_exc + + return out + + @cached_property + def all_frames(self) -> list[DebugFrameSummary]: + return [ + f # type: ignore[misc] + for _, te in self.all_tracebacks + for f in te.stack + ] + + def render_traceback_text(self) -> str: + return "".join(self._te.format()) + + def render_traceback_html(self, include_title: bool = True) -> str: + library_frames = [f.is_library for f in self.all_frames] + mark_library = 0 < sum(library_frames) < len(library_frames) + rows = [] + + if not library_frames: + classes = "traceback noframe-traceback" + else: + classes = "traceback" + + for msg, current in reversed(self.all_tracebacks): + row_parts = [] + + if msg is not None: + row_parts.append(f'
  • {msg}:
    ') + + for frame in current.stack: + frame = t.cast(DebugFrameSummary, frame) + info = f' title="{escape(frame.info)}"' if frame.info else "" + row_parts.append(f"{frame.render_html(mark_library)}") + + rows.append("\n".join(row_parts)) + + if sys.version_info < (3, 13): + exc_type_str = self._te.exc_type.__name__ + else: + exc_type_str = self._te.exc_type_str + + is_syntax_error = exc_type_str == "SyntaxError" + + if include_title: + if is_syntax_error: + title = "Syntax Error" + else: + title = "Traceback (most recent call last):" + else: + title = "" + + exc_full = escape("".join(self._te.format_exception_only())) + + if is_syntax_error: + description = f"
    {exc_full}
    " + else: + description = f"
    {exc_full}
    " + + return SUMMARY_HTML % { + "classes": classes, + "title": f"

    {title}

    ", + "frames": "\n".join(rows), + "description": description, + } + + def render_debugger_html( + self, evalex: bool, secret: str, evalex_trusted: bool + ) -> str: + exc_lines = list(self._te.format_exception_only()) + plaintext = "".join(self._te.format()) + + if sys.version_info < (3, 13): + exc_type_str = self._te.exc_type.__name__ + else: + exc_type_str = self._te.exc_type_str + + return PAGE_HTML % { + "evalex": "true" if evalex else "false", + "evalex_trusted": "true" if evalex_trusted else "false", + "console": "false", + "title": escape(exc_lines[0]), + "exception": escape("".join(exc_lines)), + "exception_type": escape(exc_type_str), + "summary": self.render_traceback_html(include_title=False), + "plaintext": escape(plaintext), + "plaintext_cs": re.sub("-{2,}", "-", plaintext), + "secret": secret, + } + + +class DebugFrameSummary(traceback.FrameSummary): + """A :class:`traceback.FrameSummary` that can evaluate code in the + frame's namespace. + """ + + __slots__ = ( + "local_ns", + "global_ns", + "_cache_info", + "_cache_is_library", + "_cache_console", + ) + + def __init__( + self, + *, + locals: dict[str, t.Any], + globals: dict[str, t.Any], + **kwargs: t.Any, + ) -> None: + super().__init__(locals=None, **kwargs) + self.local_ns = locals + self.global_ns = globals + + @cached_property + def info(self) -> str | None: + return self.local_ns.get("__traceback_info__") + + @cached_property + def is_library(self) -> bool: + return any( + self.filename.startswith((path, os.path.realpath(path))) + for path in sysconfig.get_paths().values() + ) + + @cached_property + def console(self) -> Console: + return Console(self.global_ns, self.local_ns) + + def eval(self, code: str) -> t.Any: + return self.console.eval(code) + + def render_html(self, mark_library: bool) -> str: + context = 5 + lines = linecache.getlines(self.filename) + line_idx = self.lineno - 1 # type: ignore[operator] + start_idx = max(0, line_idx - context) + stop_idx = min(len(lines), line_idx + context + 1) + rendered_lines = [] + + def render_line(line: str, cls: str) -> None: + line = line.expandtabs().rstrip() + stripped_line = line.strip() + prefix = len(line) - len(stripped_line) + colno = getattr(self, "colno", 0) + end_colno = getattr(self, "end_colno", 0) + + if cls == "current" and colno and end_colno: + arrow = ( + f'\n{" " * prefix}' + f'{" " * (colno - prefix)}{"^" * (end_colno - colno)}' + ) + else: + arrow = "" + + rendered_lines.append( + f'
    {" " * prefix}'
    +                f"{escape(stripped_line) if stripped_line else ' '}"
    +                f"{arrow if arrow else ''}
    " + ) + + if lines: + for line in lines[start_idx:line_idx]: + render_line(line, "before") + + render_line(lines[line_idx], "current") + + for line in lines[line_idx + 1 : stop_idx]: + render_line(line, "after") + + return FRAME_HTML % { + "id": id(self), + "filename": escape(self.filename), + "lineno": self.lineno, + "function_name": escape(self.name), + "lines": "\n".join(rendered_lines), + "library": "library" if mark_library and self.is_library else "", + } + + +def render_console_html(secret: str, evalex_trusted: bool) -> str: + return CONSOLE_HTML % { + "evalex": "true", + "evalex_trusted": "true" if evalex_trusted else "false", + "console": "true", + "title": "Console", + "secret": secret, + } diff --git a/gestao_raul/Lib/site-packages/werkzeug/exceptions.py b/gestao_raul/Lib/site-packages/werkzeug/exceptions.py new file mode 100644 index 0000000..1cd9997 --- /dev/null +++ b/gestao_raul/Lib/site-packages/werkzeug/exceptions.py @@ -0,0 +1,894 @@ +"""Implements a number of Python exceptions which can be raised from within +a view to trigger a standard HTTP non-200 response. + +Usage Example +------------- + +.. code-block:: python + + from werkzeug.wrappers.request import Request + from werkzeug.exceptions import HTTPException, NotFound + + def view(request): + raise NotFound() + + @Request.application + def application(request): + try: + return view(request) + except HTTPException as e: + return e + +As you can see from this example those exceptions are callable WSGI +applications. However, they are not Werkzeug response objects. You +can get a response object by calling ``get_response()`` on a HTTP +exception. + +Keep in mind that you may have to pass an environ (WSGI) or scope +(ASGI) to ``get_response()`` because some errors fetch additional +information relating to the request. + +If you want to hook in a different exception page to say, a 404 status +code, you can add a second except for a specific subclass of an error: + +.. code-block:: python + + @Request.application + def application(request): + try: + return view(request) + except NotFound as e: + return not_found(request) + except HTTPException as e: + return e + +""" + +from __future__ import annotations + +import typing as t +from datetime import datetime + +from markupsafe import escape +from markupsafe import Markup + +from ._internal import _get_environ + +if t.TYPE_CHECKING: + from _typeshed.wsgi import StartResponse + from _typeshed.wsgi import WSGIEnvironment + + from .datastructures import WWWAuthenticate + from .sansio.response import Response + from .wrappers.request import Request as WSGIRequest + from .wrappers.response import Response as WSGIResponse + + +class HTTPException(Exception): + """The base class for all HTTP exceptions. This exception can be called as a WSGI + application to render a default error page or you can catch the subclasses + of it independently and render nicer error messages. + + .. versionchanged:: 2.1 + Removed the ``wrap`` class method. + """ + + code: int | None = None + description: str | None = None + + def __init__( + self, + description: str | None = None, + response: Response | None = None, + ) -> None: + super().__init__() + if description is not None: + self.description = description + self.response = response + + @property + def name(self) -> str: + """The status name.""" + from .http import HTTP_STATUS_CODES + + return HTTP_STATUS_CODES.get(self.code, "Unknown Error") # type: ignore + + def get_description( + self, + environ: WSGIEnvironment | None = None, + scope: dict[str, t.Any] | None = None, + ) -> str: + """Get the description.""" + if self.description is None: + description = "" + else: + description = self.description + + description = escape(description).replace("\n", Markup("
    ")) + return f"

    {description}

    " + + def get_body( + self, + environ: WSGIEnvironment | None = None, + scope: dict[str, t.Any] | None = None, + ) -> str: + """Get the HTML body.""" + return ( + "\n" + "\n" + f"{self.code} {escape(self.name)}\n" + f"

    {escape(self.name)}

    \n" + f"{self.get_description(environ)}\n" + ) + + def get_headers( + self, + environ: WSGIEnvironment | None = None, + scope: dict[str, t.Any] | None = None, + ) -> list[tuple[str, str]]: + """Get a list of headers.""" + return [("Content-Type", "text/html; charset=utf-8")] + + def get_response( + self, + environ: WSGIEnvironment | WSGIRequest | None = None, + scope: dict[str, t.Any] | None = None, + ) -> Response: + """Get a response object. If one was passed to the exception + it's returned directly. + + :param environ: the optional environ for the request. This + can be used to modify the response depending + on how the request looked like. + :return: a :class:`Response` object or a subclass thereof. + """ + from .wrappers.response import Response as WSGIResponse # noqa: F811 + + if self.response is not None: + return self.response + if environ is not None: + environ = _get_environ(environ) + headers = self.get_headers(environ, scope) + return WSGIResponse(self.get_body(environ, scope), self.code, headers) + + def __call__( + self, environ: WSGIEnvironment, start_response: StartResponse + ) -> t.Iterable[bytes]: + """Call the exception as WSGI application. + + :param environ: the WSGI environment. + :param start_response: the response callable provided by the WSGI + server. + """ + response = t.cast("WSGIResponse", self.get_response(environ)) + return response(environ, start_response) + + def __str__(self) -> str: + code = self.code if self.code is not None else "???" + return f"{code} {self.name}: {self.description}" + + def __repr__(self) -> str: + code = self.code if self.code is not None else "???" + return f"<{type(self).__name__} '{code}: {self.name}'>" + + +class BadRequest(HTTPException): + """*400* `Bad Request` + + Raise if the browser sends something to the application the application + or server cannot handle. + """ + + code = 400 + description = ( + "The browser (or proxy) sent a request that this server could " + "not understand." + ) + + +class BadRequestKeyError(BadRequest, KeyError): + """An exception that is used to signal both a :exc:`KeyError` and a + :exc:`BadRequest`. Used by many of the datastructures. + """ + + _description = BadRequest.description + #: Show the KeyError along with the HTTP error message in the + #: response. This should be disabled in production, but can be + #: useful in a debug mode. + show_exception = False + + def __init__(self, arg: object | None = None, *args: t.Any, **kwargs: t.Any): + super().__init__(*args, **kwargs) + + if arg is None: + KeyError.__init__(self) + else: + KeyError.__init__(self, arg) + + @property # type: ignore + def description(self) -> str: + if self.show_exception: + return ( + f"{self._description}\n" + f"{KeyError.__name__}: {KeyError.__str__(self)}" + ) + + return self._description + + @description.setter + def description(self, value: str) -> None: + self._description = value + + +class ClientDisconnected(BadRequest): + """Internal exception that is raised if Werkzeug detects a disconnected + client. Since the client is already gone at that point attempting to + send the error message to the client might not work and might ultimately + result in another exception in the server. Mainly this is here so that + it is silenced by default as far as Werkzeug is concerned. + + Since disconnections cannot be reliably detected and are unspecified + by WSGI to a large extent this might or might not be raised if a client + is gone. + + .. versionadded:: 0.8 + """ + + +class SecurityError(BadRequest): + """Raised if something triggers a security error. This is otherwise + exactly like a bad request error. + + .. versionadded:: 0.9 + """ + + +class BadHost(BadRequest): + """Raised if the submitted host is badly formatted. + + .. versionadded:: 0.11.2 + """ + + +class Unauthorized(HTTPException): + """*401* ``Unauthorized`` + + Raise if the user is not authorized to access a resource. + + The ``www_authenticate`` argument should be used to set the + ``WWW-Authenticate`` header. This is used for HTTP basic auth and + other schemes. Use :class:`~werkzeug.datastructures.WWWAuthenticate` + to create correctly formatted values. Strictly speaking a 401 + response is invalid if it doesn't provide at least one value for + this header, although real clients typically don't care. + + :param description: Override the default message used for the body + of the response. + :param www-authenticate: A single value, or list of values, for the + WWW-Authenticate header(s). + + .. versionchanged:: 2.0 + Serialize multiple ``www_authenticate`` items into multiple + ``WWW-Authenticate`` headers, rather than joining them + into a single value, for better interoperability. + + .. versionchanged:: 0.15.3 + If the ``www_authenticate`` argument is not set, the + ``WWW-Authenticate`` header is not set. + + .. versionchanged:: 0.15.3 + The ``response`` argument was restored. + + .. versionchanged:: 0.15.1 + ``description`` was moved back as the first argument, restoring + its previous position. + + .. versionchanged:: 0.15.0 + ``www_authenticate`` was added as the first argument, ahead of + ``description``. + """ + + code = 401 + description = ( + "The server could not verify that you are authorized to access" + " the URL requested. You either supplied the wrong credentials" + " (e.g. a bad password), or your browser doesn't understand" + " how to supply the credentials required." + ) + + def __init__( + self, + description: str | None = None, + response: Response | None = None, + www_authenticate: None | (WWWAuthenticate | t.Iterable[WWWAuthenticate]) = None, + ) -> None: + super().__init__(description, response) + + from .datastructures import WWWAuthenticate + + if isinstance(www_authenticate, WWWAuthenticate): + www_authenticate = (www_authenticate,) + + self.www_authenticate = www_authenticate + + def get_headers( + self, + environ: WSGIEnvironment | None = None, + scope: dict[str, t.Any] | None = None, + ) -> list[tuple[str, str]]: + headers = super().get_headers(environ, scope) + if self.www_authenticate: + headers.extend(("WWW-Authenticate", str(x)) for x in self.www_authenticate) + return headers + + +class Forbidden(HTTPException): + """*403* `Forbidden` + + Raise if the user doesn't have the permission for the requested resource + but was authenticated. + """ + + code = 403 + description = ( + "You don't have the permission to access the requested" + " resource. It is either read-protected or not readable by the" + " server." + ) + + +class NotFound(HTTPException): + """*404* `Not Found` + + Raise if a resource does not exist and never existed. + """ + + code = 404 + description = ( + "The requested URL was not found on the server. If you entered" + " the URL manually please check your spelling and try again." + ) + + +class MethodNotAllowed(HTTPException): + """*405* `Method Not Allowed` + + Raise if the server used a method the resource does not handle. For + example `POST` if the resource is view only. Especially useful for REST. + + The first argument for this exception should be a list of allowed methods. + Strictly speaking the response would be invalid if you don't provide valid + methods in the header which you can do with that list. + """ + + code = 405 + description = "The method is not allowed for the requested URL." + + def __init__( + self, + valid_methods: t.Iterable[str] | None = None, + description: str | None = None, + response: Response | None = None, + ) -> None: + """Takes an optional list of valid http methods + starting with werkzeug 0.3 the list will be mandatory.""" + super().__init__(description=description, response=response) + self.valid_methods = valid_methods + + def get_headers( + self, + environ: WSGIEnvironment | None = None, + scope: dict[str, t.Any] | None = None, + ) -> list[tuple[str, str]]: + headers = super().get_headers(environ, scope) + if self.valid_methods: + headers.append(("Allow", ", ".join(self.valid_methods))) + return headers + + +class NotAcceptable(HTTPException): + """*406* `Not Acceptable` + + Raise if the server can't return any content conforming to the + `Accept` headers of the client. + """ + + code = 406 + description = ( + "The resource identified by the request is only capable of" + " generating response entities which have content" + " characteristics not acceptable according to the accept" + " headers sent in the request." + ) + + +class RequestTimeout(HTTPException): + """*408* `Request Timeout` + + Raise to signalize a timeout. + """ + + code = 408 + description = ( + "The server closed the network connection because the browser" + " didn't finish the request within the specified time." + ) + + +class Conflict(HTTPException): + """*409* `Conflict` + + Raise to signal that a request cannot be completed because it conflicts + with the current state on the server. + + .. versionadded:: 0.7 + """ + + code = 409 + description = ( + "A conflict happened while processing the request. The" + " resource might have been modified while the request was being" + " processed." + ) + + +class Gone(HTTPException): + """*410* `Gone` + + Raise if a resource existed previously and went away without new location. + """ + + code = 410 + description = ( + "The requested URL is no longer available on this server and" + " there is no forwarding address. If you followed a link from a" + " foreign page, please contact the author of this page." + ) + + +class LengthRequired(HTTPException): + """*411* `Length Required` + + Raise if the browser submitted data but no ``Content-Length`` header which + is required for the kind of processing the server does. + """ + + code = 411 + description = ( + "A request with this method requires a valid Content-" + "Length header." + ) + + +class PreconditionFailed(HTTPException): + """*412* `Precondition Failed` + + Status code used in combination with ``If-Match``, ``If-None-Match``, or + ``If-Unmodified-Since``. + """ + + code = 412 + description = ( + "The precondition on the request for the URL failed positive evaluation." + ) + + +class RequestEntityTooLarge(HTTPException): + """*413* `Request Entity Too Large` + + The status code one should return if the data submitted exceeded a given + limit. + """ + + code = 413 + description = "The data value transmitted exceeds the capacity limit." + + +class RequestURITooLarge(HTTPException): + """*414* `Request URI Too Large` + + Like *413* but for too long URLs. + """ + + code = 414 + description = ( + "The length of the requested URL exceeds the capacity limit for" + " this server. The request cannot be processed." + ) + + +class UnsupportedMediaType(HTTPException): + """*415* `Unsupported Media Type` + + The status code returned if the server is unable to handle the media type + the client transmitted. + """ + + code = 415 + description = ( + "The server does not support the media type transmitted in the request." + ) + + +class RequestedRangeNotSatisfiable(HTTPException): + """*416* `Requested Range Not Satisfiable` + + The client asked for an invalid part of the file. + + .. versionadded:: 0.7 + """ + + code = 416 + description = "The server cannot provide the requested range." + + def __init__( + self, + length: int | None = None, + units: str = "bytes", + description: str | None = None, + response: Response | None = None, + ) -> None: + """Takes an optional `Content-Range` header value based on ``length`` + parameter. + """ + super().__init__(description=description, response=response) + self.length = length + self.units = units + + def get_headers( + self, + environ: WSGIEnvironment | None = None, + scope: dict[str, t.Any] | None = None, + ) -> list[tuple[str, str]]: + headers = super().get_headers(environ, scope) + if self.length is not None: + headers.append(("Content-Range", f"{self.units} */{self.length}")) + return headers + + +class ExpectationFailed(HTTPException): + """*417* `Expectation Failed` + + The server cannot meet the requirements of the Expect request-header. + + .. versionadded:: 0.7 + """ + + code = 417 + description = "The server could not meet the requirements of the Expect header" + + +class ImATeapot(HTTPException): + """*418* `I'm a teapot` + + The server should return this if it is a teapot and someone attempted + to brew coffee with it. + + .. versionadded:: 0.7 + """ + + code = 418 + description = "This server is a teapot, not a coffee machine" + + +class MisdirectedRequest(HTTPException): + """421 Misdirected Request + + Indicates that the request was directed to a server that is not able to + produce a response. + + .. versionadded:: 3.1 + """ + + code = 421 + description = "The server is not able to produce a response." + + +class UnprocessableEntity(HTTPException): + """*422* `Unprocessable Entity` + + Used if the request is well formed, but the instructions are otherwise + incorrect. + """ + + code = 422 + description = ( + "The request was well-formed but was unable to be followed due" + " to semantic errors." + ) + + +class Locked(HTTPException): + """*423* `Locked` + + Used if the resource that is being accessed is locked. + """ + + code = 423 + description = "The resource that is being accessed is locked." + + +class FailedDependency(HTTPException): + """*424* `Failed Dependency` + + Used if the method could not be performed on the resource + because the requested action depended on another action and that action failed. + """ + + code = 424 + description = ( + "The method could not be performed on the resource because the" + " requested action depended on another action and that action" + " failed." + ) + + +class PreconditionRequired(HTTPException): + """*428* `Precondition Required` + + The server requires this request to be conditional, typically to prevent + the lost update problem, which is a race condition between two or more + clients attempting to update a resource through PUT or DELETE. By requiring + each client to include a conditional header ("If-Match" or "If-Unmodified- + Since") with the proper value retained from a recent GET request, the + server ensures that each client has at least seen the previous revision of + the resource. + """ + + code = 428 + description = ( + "This request is required to be conditional; try using" + ' "If-Match" or "If-Unmodified-Since".' + ) + + +class _RetryAfter(HTTPException): + """Adds an optional ``retry_after`` parameter which will set the + ``Retry-After`` header. May be an :class:`int` number of seconds or + a :class:`~datetime.datetime`. + """ + + def __init__( + self, + description: str | None = None, + response: Response | None = None, + retry_after: datetime | int | None = None, + ) -> None: + super().__init__(description, response) + self.retry_after = retry_after + + def get_headers( + self, + environ: WSGIEnvironment | None = None, + scope: dict[str, t.Any] | None = None, + ) -> list[tuple[str, str]]: + headers = super().get_headers(environ, scope) + + if self.retry_after: + if isinstance(self.retry_after, datetime): + from .http import http_date + + value = http_date(self.retry_after) + else: + value = str(self.retry_after) + + headers.append(("Retry-After", value)) + + return headers + + +class TooManyRequests(_RetryAfter): + """*429* `Too Many Requests` + + The server is limiting the rate at which this user receives + responses, and this request exceeds that rate. (The server may use + any convenient method to identify users and their request rates). + The server may include a "Retry-After" header to indicate how long + the user should wait before retrying. + + :param retry_after: If given, set the ``Retry-After`` header to this + value. May be an :class:`int` number of seconds or a + :class:`~datetime.datetime`. + + .. versionchanged:: 1.0 + Added ``retry_after`` parameter. + """ + + code = 429 + description = "This user has exceeded an allotted request count. Try again later." + + +class RequestHeaderFieldsTooLarge(HTTPException): + """*431* `Request Header Fields Too Large` + + The server refuses to process the request because the header fields are too + large. One or more individual fields may be too large, or the set of all + headers is too large. + """ + + code = 431 + description = "One or more header fields exceeds the maximum size." + + +class UnavailableForLegalReasons(HTTPException): + """*451* `Unavailable For Legal Reasons` + + This status code indicates that the server is denying access to the + resource as a consequence of a legal demand. + """ + + code = 451 + description = "Unavailable for legal reasons." + + +class InternalServerError(HTTPException): + """*500* `Internal Server Error` + + Raise if an internal server error occurred. This is a good fallback if an + unknown error occurred in the dispatcher. + + .. versionchanged:: 1.0.0 + Added the :attr:`original_exception` attribute. + """ + + code = 500 + description = ( + "The server encountered an internal error and was unable to" + " complete your request. Either the server is overloaded or" + " there is an error in the application." + ) + + def __init__( + self, + description: str | None = None, + response: Response | None = None, + original_exception: BaseException | None = None, + ) -> None: + #: The original exception that caused this 500 error. Can be + #: used by frameworks to provide context when handling + #: unexpected errors. + self.original_exception = original_exception + super().__init__(description=description, response=response) + + +class NotImplemented(HTTPException): + """*501* `Not Implemented` + + Raise if the application does not support the action requested by the + browser. + """ + + code = 501 + description = "The server does not support the action requested by the browser." + + +class BadGateway(HTTPException): + """*502* `Bad Gateway` + + If you do proxying in your application you should return this status code + if you received an invalid response from the upstream server it accessed + in attempting to fulfill the request. + """ + + code = 502 + description = ( + "The proxy server received an invalid response from an upstream server." + ) + + +class ServiceUnavailable(_RetryAfter): + """*503* `Service Unavailable` + + Status code you should return if a service is temporarily + unavailable. + + :param retry_after: If given, set the ``Retry-After`` header to this + value. May be an :class:`int` number of seconds or a + :class:`~datetime.datetime`. + + .. versionchanged:: 1.0 + Added ``retry_after`` parameter. + """ + + code = 503 + description = ( + "The server is temporarily unable to service your request due" + " to maintenance downtime or capacity problems. Please try" + " again later." + ) + + +class GatewayTimeout(HTTPException): + """*504* `Gateway Timeout` + + Status code you should return if a connection to an upstream server + times out. + """ + + code = 504 + description = "The connection to an upstream server timed out." + + +class HTTPVersionNotSupported(HTTPException): + """*505* `HTTP Version Not Supported` + + The server does not support the HTTP protocol version used in the request. + """ + + code = 505 + description = ( + "The server does not support the HTTP protocol version used in the request." + ) + + +default_exceptions: dict[int, type[HTTPException]] = {} + + +def _find_exceptions() -> None: + for obj in globals().values(): + try: + is_http_exception = issubclass(obj, HTTPException) + except TypeError: + is_http_exception = False + if not is_http_exception or obj.code is None: + continue + old_obj = default_exceptions.get(obj.code, None) + if old_obj is not None and issubclass(obj, old_obj): + continue + default_exceptions[obj.code] = obj + + +_find_exceptions() +del _find_exceptions + + +class Aborter: + """When passed a dict of code -> exception items it can be used as + callable that raises exceptions. If the first argument to the + callable is an integer it will be looked up in the mapping, if it's + a WSGI application it will be raised in a proxy exception. + + The rest of the arguments are forwarded to the exception constructor. + """ + + def __init__( + self, + mapping: dict[int, type[HTTPException]] | None = None, + extra: dict[int, type[HTTPException]] | None = None, + ) -> None: + if mapping is None: + mapping = default_exceptions + self.mapping = dict(mapping) + if extra is not None: + self.mapping.update(extra) + + def __call__( + self, code: int | Response, *args: t.Any, **kwargs: t.Any + ) -> t.NoReturn: + from .sansio.response import Response + + if isinstance(code, Response): + raise HTTPException(response=code) + + if code not in self.mapping: + raise LookupError(f"no exception for {code!r}") + + raise self.mapping[code](*args, **kwargs) + + +def abort(status: int | Response, *args: t.Any, **kwargs: t.Any) -> t.NoReturn: + """Raises an :py:exc:`HTTPException` for the given status code or WSGI + application. + + If a status code is given, it will be looked up in the list of + exceptions and will raise that exception. If passed a WSGI application, + it will wrap it in a proxy WSGI exception and raise that:: + + abort(404) # 404 Not Found + abort(Response('Hello World')) + + """ + _aborter(status, *args, **kwargs) + + +_aborter: Aborter = Aborter() diff --git a/gestao_raul/Lib/site-packages/werkzeug/formparser.py b/gestao_raul/Lib/site-packages/werkzeug/formparser.py new file mode 100644 index 0000000..0103414 --- /dev/null +++ b/gestao_raul/Lib/site-packages/werkzeug/formparser.py @@ -0,0 +1,430 @@ +from __future__ import annotations + +import typing as t +from io import BytesIO +from urllib.parse import parse_qsl + +from ._internal import _plain_int +from .datastructures import FileStorage +from .datastructures import Headers +from .datastructures import MultiDict +from .exceptions import RequestEntityTooLarge +from .http import parse_options_header +from .sansio.multipart import Data +from .sansio.multipart import Epilogue +from .sansio.multipart import Field +from .sansio.multipart import File +from .sansio.multipart import MultipartDecoder +from .sansio.multipart import NeedData +from .wsgi import get_content_length +from .wsgi import get_input_stream + +# there are some platforms where SpooledTemporaryFile is not available. +# In that case we need to provide a fallback. +try: + from tempfile import SpooledTemporaryFile +except ImportError: + from tempfile import TemporaryFile + + SpooledTemporaryFile = None # type: ignore + +if t.TYPE_CHECKING: + import typing as te + + from _typeshed.wsgi import WSGIEnvironment + + t_parse_result = tuple[ + t.IO[bytes], MultiDict[str, str], MultiDict[str, FileStorage] + ] + + class TStreamFactory(te.Protocol): + def __call__( + self, + total_content_length: int | None, + content_type: str | None, + filename: str | None, + content_length: int | None = None, + ) -> t.IO[bytes]: ... + + +F = t.TypeVar("F", bound=t.Callable[..., t.Any]) + + +def default_stream_factory( + total_content_length: int | None, + content_type: str | None, + filename: str | None, + content_length: int | None = None, +) -> t.IO[bytes]: + max_size = 1024 * 500 + + if SpooledTemporaryFile is not None: + return t.cast(t.IO[bytes], SpooledTemporaryFile(max_size=max_size, mode="rb+")) + elif total_content_length is None or total_content_length > max_size: + return t.cast(t.IO[bytes], TemporaryFile("rb+")) + + return BytesIO() + + +def parse_form_data( + environ: WSGIEnvironment, + stream_factory: TStreamFactory | None = None, + max_form_memory_size: int | None = None, + max_content_length: int | None = None, + cls: type[MultiDict[str, t.Any]] | None = None, + silent: bool = True, + *, + max_form_parts: int | None = None, +) -> t_parse_result: + """Parse the form data in the environ and return it as tuple in the form + ``(stream, form, files)``. You should only call this method if the + transport method is `POST`, `PUT`, or `PATCH`. + + If the mimetype of the data transmitted is `multipart/form-data` the + files multidict will be filled with `FileStorage` objects. If the + mimetype is unknown the input stream is wrapped and returned as first + argument, else the stream is empty. + + This is a shortcut for the common usage of :class:`FormDataParser`. + + :param environ: the WSGI environment to be used for parsing. + :param stream_factory: An optional callable that returns a new read and + writeable file descriptor. This callable works + the same as :meth:`Response._get_file_stream`. + :param max_form_memory_size: the maximum number of bytes to be accepted for + in-memory stored form data. If the data + exceeds the value specified an + :exc:`~exceptions.RequestEntityTooLarge` + exception is raised. + :param max_content_length: If this is provided and the transmitted data + is longer than this value an + :exc:`~exceptions.RequestEntityTooLarge` + exception is raised. + :param cls: an optional dict class to use. If this is not specified + or `None` the default :class:`MultiDict` is used. + :param silent: If set to False parsing errors will not be caught. + :param max_form_parts: The maximum number of multipart parts to be parsed. If this + is exceeded, a :exc:`~exceptions.RequestEntityTooLarge` exception is raised. + :return: A tuple in the form ``(stream, form, files)``. + + .. versionchanged:: 3.0 + The ``charset`` and ``errors`` parameters were removed. + + .. versionchanged:: 2.3 + Added the ``max_form_parts`` parameter. + + .. versionadded:: 0.5.1 + Added the ``silent`` parameter. + + .. versionadded:: 0.5 + Added the ``max_form_memory_size``, ``max_content_length``, and ``cls`` + parameters. + """ + return FormDataParser( + stream_factory=stream_factory, + max_form_memory_size=max_form_memory_size, + max_content_length=max_content_length, + max_form_parts=max_form_parts, + silent=silent, + cls=cls, + ).parse_from_environ(environ) + + +class FormDataParser: + """This class implements parsing of form data for Werkzeug. By itself + it can parse multipart and url encoded form data. It can be subclassed + and extended but for most mimetypes it is a better idea to use the + untouched stream and expose it as separate attributes on a request + object. + + :param stream_factory: An optional callable that returns a new read and + writeable file descriptor. This callable works + the same as :meth:`Response._get_file_stream`. + :param max_form_memory_size: the maximum number of bytes to be accepted for + in-memory stored form data. If the data + exceeds the value specified an + :exc:`~exceptions.RequestEntityTooLarge` + exception is raised. + :param max_content_length: If this is provided and the transmitted data + is longer than this value an + :exc:`~exceptions.RequestEntityTooLarge` + exception is raised. + :param cls: an optional dict class to use. If this is not specified + or `None` the default :class:`MultiDict` is used. + :param silent: If set to False parsing errors will not be caught. + :param max_form_parts: The maximum number of multipart parts to be parsed. If this + is exceeded, a :exc:`~exceptions.RequestEntityTooLarge` exception is raised. + + .. versionchanged:: 3.0 + The ``charset`` and ``errors`` parameters were removed. + + .. versionchanged:: 3.0 + The ``parse_functions`` attribute and ``get_parse_func`` methods were removed. + + .. versionchanged:: 2.2.3 + Added the ``max_form_parts`` parameter. + + .. versionadded:: 0.8 + """ + + def __init__( + self, + stream_factory: TStreamFactory | None = None, + max_form_memory_size: int | None = None, + max_content_length: int | None = None, + cls: type[MultiDict[str, t.Any]] | None = None, + silent: bool = True, + *, + max_form_parts: int | None = None, + ) -> None: + if stream_factory is None: + stream_factory = default_stream_factory + + self.stream_factory = stream_factory + self.max_form_memory_size = max_form_memory_size + self.max_content_length = max_content_length + self.max_form_parts = max_form_parts + + if cls is None: + cls = t.cast("type[MultiDict[str, t.Any]]", MultiDict) + + self.cls = cls + self.silent = silent + + def parse_from_environ(self, environ: WSGIEnvironment) -> t_parse_result: + """Parses the information from the environment as form data. + + :param environ: the WSGI environment to be used for parsing. + :return: A tuple in the form ``(stream, form, files)``. + """ + stream = get_input_stream(environ, max_content_length=self.max_content_length) + content_length = get_content_length(environ) + mimetype, options = parse_options_header(environ.get("CONTENT_TYPE")) + return self.parse( + stream, + content_length=content_length, + mimetype=mimetype, + options=options, + ) + + def parse( + self, + stream: t.IO[bytes], + mimetype: str, + content_length: int | None, + options: dict[str, str] | None = None, + ) -> t_parse_result: + """Parses the information from the given stream, mimetype, + content length and mimetype parameters. + + :param stream: an input stream + :param mimetype: the mimetype of the data + :param content_length: the content length of the incoming data + :param options: optional mimetype parameters (used for + the multipart boundary for instance) + :return: A tuple in the form ``(stream, form, files)``. + + .. versionchanged:: 3.0 + The invalid ``application/x-url-encoded`` content type is not + treated as ``application/x-www-form-urlencoded``. + """ + if mimetype == "multipart/form-data": + parse_func = self._parse_multipart + elif mimetype == "application/x-www-form-urlencoded": + parse_func = self._parse_urlencoded + else: + return stream, self.cls(), self.cls() + + if options is None: + options = {} + + try: + return parse_func(stream, mimetype, content_length, options) + except ValueError: + if not self.silent: + raise + + return stream, self.cls(), self.cls() + + def _parse_multipart( + self, + stream: t.IO[bytes], + mimetype: str, + content_length: int | None, + options: dict[str, str], + ) -> t_parse_result: + parser = MultiPartParser( + stream_factory=self.stream_factory, + max_form_memory_size=self.max_form_memory_size, + max_form_parts=self.max_form_parts, + cls=self.cls, + ) + boundary = options.get("boundary", "").encode("ascii") + + if not boundary: + raise ValueError("Missing boundary") + + form, files = parser.parse(stream, boundary, content_length) + return stream, form, files + + def _parse_urlencoded( + self, + stream: t.IO[bytes], + mimetype: str, + content_length: int | None, + options: dict[str, str], + ) -> t_parse_result: + if ( + self.max_form_memory_size is not None + and content_length is not None + and content_length > self.max_form_memory_size + ): + raise RequestEntityTooLarge() + + items = parse_qsl( + stream.read().decode(), + keep_blank_values=True, + errors="werkzeug.url_quote", + ) + return stream, self.cls(items), self.cls() + + +class MultiPartParser: + def __init__( + self, + stream_factory: TStreamFactory | None = None, + max_form_memory_size: int | None = None, + cls: type[MultiDict[str, t.Any]] | None = None, + buffer_size: int = 64 * 1024, + max_form_parts: int | None = None, + ) -> None: + self.max_form_memory_size = max_form_memory_size + self.max_form_parts = max_form_parts + + if stream_factory is None: + stream_factory = default_stream_factory + + self.stream_factory = stream_factory + + if cls is None: + cls = t.cast("type[MultiDict[str, t.Any]]", MultiDict) + + self.cls = cls + self.buffer_size = buffer_size + + def fail(self, message: str) -> te.NoReturn: + raise ValueError(message) + + def get_part_charset(self, headers: Headers) -> str: + # Figure out input charset for current part + content_type = headers.get("content-type") + + if content_type: + parameters = parse_options_header(content_type)[1] + ct_charset = parameters.get("charset", "").lower() + + # A safe list of encodings. Modern clients should only send ASCII or UTF-8. + # This list will not be extended further. + if ct_charset in {"ascii", "us-ascii", "utf-8", "iso-8859-1"}: + return ct_charset + + return "utf-8" + + def start_file_streaming( + self, event: File, total_content_length: int | None + ) -> t.IO[bytes]: + content_type = event.headers.get("content-type") + + try: + content_length = _plain_int(event.headers["content-length"]) + except (KeyError, ValueError): + content_length = 0 + + container = self.stream_factory( + total_content_length=total_content_length, + filename=event.filename, + content_type=content_type, + content_length=content_length, + ) + return container + + def parse( + self, stream: t.IO[bytes], boundary: bytes, content_length: int | None + ) -> tuple[MultiDict[str, str], MultiDict[str, FileStorage]]: + current_part: Field | File + field_size: int | None = None + container: t.IO[bytes] | list[bytes] + _write: t.Callable[[bytes], t.Any] + + parser = MultipartDecoder( + boundary, + max_form_memory_size=self.max_form_memory_size, + max_parts=self.max_form_parts, + ) + + fields = [] + files = [] + + for data in _chunk_iter(stream.read, self.buffer_size): + parser.receive_data(data) + event = parser.next_event() + while not isinstance(event, (Epilogue, NeedData)): + if isinstance(event, Field): + current_part = event + field_size = 0 + container = [] + _write = container.append + elif isinstance(event, File): + current_part = event + field_size = None + container = self.start_file_streaming(event, content_length) + _write = container.write + elif isinstance(event, Data): + if self.max_form_memory_size is not None and field_size is not None: + # Ensure that accumulated data events do not exceed limit. + # Also checked within single event in MultipartDecoder. + field_size += len(event.data) + + if field_size > self.max_form_memory_size: + raise RequestEntityTooLarge() + + _write(event.data) + if not event.more_data: + if isinstance(current_part, Field): + value = b"".join(container).decode( + self.get_part_charset(current_part.headers), "replace" + ) + fields.append((current_part.name, value)) + else: + container = t.cast(t.IO[bytes], container) + container.seek(0) + files.append( + ( + current_part.name, + FileStorage( + container, + current_part.filename, + current_part.name, + headers=current_part.headers, + ), + ) + ) + + event = parser.next_event() + + return self.cls(fields), self.cls(files) + + +def _chunk_iter(read: t.Callable[[int], bytes], size: int) -> t.Iterator[bytes | None]: + """Read data in chunks for multipart/form-data parsing. Stop if no data is read. + Yield ``None`` at the end to signal end of parsing. + """ + while True: + data = read(size) + + if not data: + break + + yield data + + yield None diff --git a/gestao_raul/Lib/site-packages/werkzeug/http.py b/gestao_raul/Lib/site-packages/werkzeug/http.py new file mode 100644 index 0000000..f1dbb85 --- /dev/null +++ b/gestao_raul/Lib/site-packages/werkzeug/http.py @@ -0,0 +1,1405 @@ +from __future__ import annotations + +import email.utils +import re +import typing as t +import warnings +from datetime import date +from datetime import datetime +from datetime import time +from datetime import timedelta +from datetime import timezone +from enum import Enum +from hashlib import sha1 +from time import mktime +from time import struct_time +from urllib.parse import quote +from urllib.parse import unquote +from urllib.request import parse_http_list as _parse_list_header + +from ._internal import _dt_as_utc +from ._internal import _plain_int + +if t.TYPE_CHECKING: + from _typeshed.wsgi import WSGIEnvironment + +_token_chars = frozenset( + "!#$%&'*+-.0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ^_`abcdefghijklmnopqrstuvwxyz|~" +) +_etag_re = re.compile(r'([Ww]/)?(?:"(.*?)"|(.*?))(?:\s*,\s*|$)') +_entity_headers = frozenset( + [ + "allow", + "content-encoding", + "content-language", + "content-length", + "content-location", + "content-md5", + "content-range", + "content-type", + "expires", + "last-modified", + ] +) +_hop_by_hop_headers = frozenset( + [ + "connection", + "keep-alive", + "proxy-authenticate", + "proxy-authorization", + "te", + "trailer", + "transfer-encoding", + "upgrade", + ] +) +HTTP_STATUS_CODES = { + 100: "Continue", + 101: "Switching Protocols", + 102: "Processing", + 103: "Early Hints", # see RFC 8297 + 200: "OK", + 201: "Created", + 202: "Accepted", + 203: "Non Authoritative Information", + 204: "No Content", + 205: "Reset Content", + 206: "Partial Content", + 207: "Multi Status", + 208: "Already Reported", # see RFC 5842 + 226: "IM Used", # see RFC 3229 + 300: "Multiple Choices", + 301: "Moved Permanently", + 302: "Found", + 303: "See Other", + 304: "Not Modified", + 305: "Use Proxy", + 306: "Switch Proxy", # unused + 307: "Temporary Redirect", + 308: "Permanent Redirect", + 400: "Bad Request", + 401: "Unauthorized", + 402: "Payment Required", # unused + 403: "Forbidden", + 404: "Not Found", + 405: "Method Not Allowed", + 406: "Not Acceptable", + 407: "Proxy Authentication Required", + 408: "Request Timeout", + 409: "Conflict", + 410: "Gone", + 411: "Length Required", + 412: "Precondition Failed", + 413: "Request Entity Too Large", + 414: "Request URI Too Long", + 415: "Unsupported Media Type", + 416: "Requested Range Not Satisfiable", + 417: "Expectation Failed", + 418: "I'm a teapot", # see RFC 2324 + 421: "Misdirected Request", # see RFC 7540 + 422: "Unprocessable Entity", + 423: "Locked", + 424: "Failed Dependency", + 425: "Too Early", # see RFC 8470 + 426: "Upgrade Required", + 428: "Precondition Required", # see RFC 6585 + 429: "Too Many Requests", + 431: "Request Header Fields Too Large", + 449: "Retry With", # proprietary MS extension + 451: "Unavailable For Legal Reasons", + 500: "Internal Server Error", + 501: "Not Implemented", + 502: "Bad Gateway", + 503: "Service Unavailable", + 504: "Gateway Timeout", + 505: "HTTP Version Not Supported", + 506: "Variant Also Negotiates", # see RFC 2295 + 507: "Insufficient Storage", + 508: "Loop Detected", # see RFC 5842 + 510: "Not Extended", + 511: "Network Authentication Failed", +} + + +class COEP(Enum): + """Cross Origin Embedder Policies""" + + UNSAFE_NONE = "unsafe-none" + REQUIRE_CORP = "require-corp" + + +class COOP(Enum): + """Cross Origin Opener Policies""" + + UNSAFE_NONE = "unsafe-none" + SAME_ORIGIN_ALLOW_POPUPS = "same-origin-allow-popups" + SAME_ORIGIN = "same-origin" + + +def quote_header_value(value: t.Any, allow_token: bool = True) -> str: + """Add double quotes around a header value. If the header contains only ASCII token + characters, it will be returned unchanged. If the header contains ``"`` or ``\\`` + characters, they will be escaped with an additional ``\\`` character. + + This is the reverse of :func:`unquote_header_value`. + + :param value: The value to quote. Will be converted to a string. + :param allow_token: Disable to quote the value even if it only has token characters. + + .. versionchanged:: 3.0 + Passing bytes is not supported. + + .. versionchanged:: 3.0 + The ``extra_chars`` parameter is removed. + + .. versionchanged:: 2.3 + The value is quoted if it is the empty string. + + .. versionadded:: 0.5 + """ + value_str = str(value) + + if not value_str: + return '""' + + if allow_token: + token_chars = _token_chars + + if token_chars.issuperset(value_str): + return value_str + + value_str = value_str.replace("\\", "\\\\").replace('"', '\\"') + return f'"{value_str}"' + + +def unquote_header_value(value: str) -> str: + """Remove double quotes and decode slash-escaped ``"`` and ``\\`` characters in a + header value. + + This is the reverse of :func:`quote_header_value`. + + :param value: The header value to unquote. + + .. versionchanged:: 3.0 + The ``is_filename`` parameter is removed. + """ + if len(value) >= 2 and value[0] == value[-1] == '"': + value = value[1:-1] + return value.replace("\\\\", "\\").replace('\\"', '"') + + return value + + +def dump_options_header(header: str | None, options: t.Mapping[str, t.Any]) -> str: + """Produce a header value and ``key=value`` parameters separated by semicolons + ``;``. For example, the ``Content-Type`` header. + + .. code-block:: python + + dump_options_header("text/html", {"charset": "UTF-8"}) + 'text/html; charset=UTF-8' + + This is the reverse of :func:`parse_options_header`. + + If a value contains non-token characters, it will be quoted. + + If a value is ``None``, the parameter is skipped. + + In some keys for some headers, a UTF-8 value can be encoded using a special + ``key*=UTF-8''value`` form, where ``value`` is percent encoded. This function will + not produce that format automatically, but if a given key ends with an asterisk + ``*``, the value is assumed to have that form and will not be quoted further. + + :param header: The primary header value. + :param options: Parameters to encode as ``key=value`` pairs. + + .. versionchanged:: 2.3 + Keys with ``None`` values are skipped rather than treated as a bare key. + + .. versionchanged:: 2.2.3 + If a key ends with ``*``, its value will not be quoted. + """ + segments = [] + + if header is not None: + segments.append(header) + + for key, value in options.items(): + if value is None: + continue + + if key[-1] == "*": + segments.append(f"{key}={value}") + else: + segments.append(f"{key}={quote_header_value(value)}") + + return "; ".join(segments) + + +def dump_header(iterable: dict[str, t.Any] | t.Iterable[t.Any]) -> str: + """Produce a header value from a list of items or ``key=value`` pairs, separated by + commas ``,``. + + This is the reverse of :func:`parse_list_header`, :func:`parse_dict_header`, and + :func:`parse_set_header`. + + If a value contains non-token characters, it will be quoted. + + If a value is ``None``, the key is output alone. + + In some keys for some headers, a UTF-8 value can be encoded using a special + ``key*=UTF-8''value`` form, where ``value`` is percent encoded. This function will + not produce that format automatically, but if a given key ends with an asterisk + ``*``, the value is assumed to have that form and will not be quoted further. + + .. code-block:: python + + dump_header(["foo", "bar baz"]) + 'foo, "bar baz"' + + dump_header({"foo": "bar baz"}) + 'foo="bar baz"' + + :param iterable: The items to create a header from. + + .. versionchanged:: 3.0 + The ``allow_token`` parameter is removed. + + .. versionchanged:: 2.2.3 + If a key ends with ``*``, its value will not be quoted. + """ + if isinstance(iterable, dict): + items = [] + + for key, value in iterable.items(): + if value is None: + items.append(key) + elif key[-1] == "*": + items.append(f"{key}={value}") + else: + items.append(f"{key}={quote_header_value(value)}") + else: + items = [quote_header_value(x) for x in iterable] + + return ", ".join(items) + + +def dump_csp_header(header: ds.ContentSecurityPolicy) -> str: + """Dump a Content Security Policy header. + + These are structured into policies such as "default-src 'self'; + script-src 'self'". + + .. versionadded:: 1.0.0 + Support for Content Security Policy headers was added. + + """ + return "; ".join(f"{key} {value}" for key, value in header.items()) + + +def parse_list_header(value: str) -> list[str]: + """Parse a header value that consists of a list of comma separated items according + to `RFC 9110 `__. + + This extends :func:`urllib.request.parse_http_list` to remove surrounding quotes + from values. + + .. code-block:: python + + parse_list_header('token, "quoted value"') + ['token', 'quoted value'] + + This is the reverse of :func:`dump_header`. + + :param value: The header value to parse. + """ + result = [] + + for item in _parse_list_header(value): + if len(item) >= 2 and item[0] == item[-1] == '"': + item = item[1:-1] + + result.append(item) + + return result + + +def parse_dict_header(value: str) -> dict[str, str | None]: + """Parse a list header using :func:`parse_list_header`, then parse each item as a + ``key=value`` pair. + + .. code-block:: python + + parse_dict_header('a=b, c="d, e", f') + {"a": "b", "c": "d, e", "f": None} + + This is the reverse of :func:`dump_header`. + + If a key does not have a value, it is ``None``. + + This handles charsets for values as described in + `RFC 2231 `__. Only ASCII, UTF-8, + and ISO-8859-1 charsets are accepted, otherwise the value remains quoted. + + :param value: The header value to parse. + + .. versionchanged:: 3.0 + Passing bytes is not supported. + + .. versionchanged:: 3.0 + The ``cls`` argument is removed. + + .. versionchanged:: 2.3 + Added support for ``key*=charset''value`` encoded items. + + .. versionchanged:: 0.9 + The ``cls`` argument was added. + """ + result: dict[str, str | None] = {} + + for item in parse_list_header(value): + key, has_value, value = item.partition("=") + key = key.strip() + + if not key: + # =value is not valid + continue + + if not has_value: + result[key] = None + continue + + value = value.strip() + encoding: str | None = None + + if key[-1] == "*": + # key*=charset''value becomes key=value, where value is percent encoded + # adapted from parse_options_header, without the continuation handling + key = key[:-1] + match = _charset_value_re.match(value) + + if match: + # If there is a charset marker in the value, split it off. + encoding, value = match.groups() + encoding = encoding.lower() + + # A safe list of encodings. Modern clients should only send ASCII or UTF-8. + # This list will not be extended further. An invalid encoding will leave the + # value quoted. + if encoding in {"ascii", "us-ascii", "utf-8", "iso-8859-1"}: + # invalid bytes are replaced during unquoting + value = unquote(value, encoding=encoding) + + if len(value) >= 2 and value[0] == value[-1] == '"': + value = value[1:-1] + + result[key] = value + + return result + + +# https://httpwg.org/specs/rfc9110.html#parameter +_parameter_key_re = re.compile(r"([\w!#$%&'*+\-.^`|~]+)=", flags=re.ASCII) +_parameter_token_value_re = re.compile(r"[\w!#$%&'*+\-.^`|~]+", flags=re.ASCII) +# https://www.rfc-editor.org/rfc/rfc2231#section-4 +_charset_value_re = re.compile( + r""" + ([\w!#$%&*+\-.^`|~]*)' # charset part, could be empty + [\w!#$%&*+\-.^`|~]*' # don't care about language part, usually empty + ([\w!#$%&'*+\-.^`|~]+) # one or more token chars with percent encoding + """, + re.ASCII | re.VERBOSE, +) +# https://www.rfc-editor.org/rfc/rfc2231#section-3 +_continuation_re = re.compile(r"\*(\d+)$", re.ASCII) + + +def parse_options_header(value: str | None) -> tuple[str, dict[str, str]]: + """Parse a header that consists of a value with ``key=value`` parameters separated + by semicolons ``;``. For example, the ``Content-Type`` header. + + .. code-block:: python + + parse_options_header("text/html; charset=UTF-8") + ('text/html', {'charset': 'UTF-8'}) + + parse_options_header("") + ("", {}) + + This is the reverse of :func:`dump_options_header`. + + This parses valid parameter parts as described in + `RFC 9110 `__. Invalid parts are + skipped. + + This handles continuations and charsets as described in + `RFC 2231 `__, although not as + strictly as the RFC. Only ASCII, UTF-8, and ISO-8859-1 charsets are accepted, + otherwise the value remains quoted. + + Clients may not be consistent in how they handle a quote character within a quoted + value. The `HTML Standard `__ + replaces it with ``%22`` in multipart form data. + `RFC 9110 `__ uses backslash + escapes in HTTP headers. Both are decoded to the ``"`` character. + + Clients may not be consistent in how they handle non-ASCII characters. HTML + documents must declare ````, otherwise browsers may replace with + HTML character references, which can be decoded using :func:`html.unescape`. + + :param value: The header value to parse. + :return: ``(value, options)``, where ``options`` is a dict + + .. versionchanged:: 2.3 + Invalid parts, such as keys with no value, quoted keys, and incorrectly quoted + values, are discarded instead of treating as ``None``. + + .. versionchanged:: 2.3 + Only ASCII, UTF-8, and ISO-8859-1 are accepted for charset values. + + .. versionchanged:: 2.3 + Escaped quotes in quoted values, like ``%22`` and ``\\"``, are handled. + + .. versionchanged:: 2.2 + Option names are always converted to lowercase. + + .. versionchanged:: 2.2 + The ``multiple`` parameter was removed. + + .. versionchanged:: 0.15 + :rfc:`2231` parameter continuations are handled. + + .. versionadded:: 0.5 + """ + if value is None: + return "", {} + + value, _, rest = value.partition(";") + value = value.strip() + rest = rest.strip() + + if not value or not rest: + # empty (invalid) value, or value without options + return value, {} + + # Collect all valid key=value parts without processing the value. + parts: list[tuple[str, str]] = [] + + while True: + if (m := _parameter_key_re.match(rest)) is not None: + pk = m.group(1).lower() + rest = rest[m.end() :] + + # Value may be a token. + if (m := _parameter_token_value_re.match(rest)) is not None: + parts.append((pk, m.group())) + + # Value may be a quoted string, find the closing quote. + elif rest[:1] == '"': + pos = 1 + length = len(rest) + + while pos < length: + if rest[pos : pos + 2] in {"\\\\", '\\"'}: + # Consume escaped slashes and quotes. + pos += 2 + elif rest[pos] == '"': + # Stop at an unescaped quote. + parts.append((pk, rest[: pos + 1])) + rest = rest[pos + 1 :] + break + else: + # Consume any other character. + pos += 1 + + # Find the next section delimited by `;`, if any. + if (end := rest.find(";")) == -1: + break + + rest = rest[end + 1 :].lstrip() + + options: dict[str, str] = {} + encoding: str | None = None + continued_encoding: str | None = None + + # For each collected part, process optional charset and continuation, + # unquote quoted values. + for pk, pv in parts: + if pk[-1] == "*": + # key*=charset''value becomes key=value, where value is percent encoded + pk = pk[:-1] + match = _charset_value_re.match(pv) + + if match: + # If there is a valid charset marker in the value, split it off. + encoding, pv = match.groups() + # This might be the empty string, handled next. + encoding = encoding.lower() + + # No charset marker, or marker with empty charset value. + if not encoding: + encoding = continued_encoding + + # A safe list of encodings. Modern clients should only send ASCII or UTF-8. + # This list will not be extended further. An invalid encoding will leave the + # value quoted. + if encoding in {"ascii", "us-ascii", "utf-8", "iso-8859-1"}: + # Continuation parts don't require their own charset marker. This is + # looser than the RFC, it will persist across different keys and allows + # changing the charset during a continuation. But this implementation is + # much simpler than tracking the full state. + continued_encoding = encoding + # invalid bytes are replaced during unquoting + pv = unquote(pv, encoding=encoding) + + # Remove quotes. At this point the value cannot be empty or a single quote. + if pv[0] == pv[-1] == '"': + # HTTP headers use slash, multipart form data uses percent + pv = pv[1:-1].replace("\\\\", "\\").replace('\\"', '"').replace("%22", '"') + + match = _continuation_re.search(pk) + + if match: + # key*0=a; key*1=b becomes key=ab + pk = pk[: match.start()] + options[pk] = options.get(pk, "") + pv + else: + options[pk] = pv + + return value, options + + +_q_value_re = re.compile(r"-?\d+(\.\d+)?", re.ASCII) +_TAnyAccept = t.TypeVar("_TAnyAccept", bound="ds.Accept") + + +@t.overload +def parse_accept_header(value: str | None) -> ds.Accept: ... + + +@t.overload +def parse_accept_header(value: str | None, cls: type[_TAnyAccept]) -> _TAnyAccept: ... + + +def parse_accept_header( + value: str | None, cls: type[_TAnyAccept] | None = None +) -> _TAnyAccept: + """Parse an ``Accept`` header according to + `RFC 9110 `__. + + Returns an :class:`.Accept` instance, which can sort and inspect items based on + their quality parameter. When parsing ``Accept-Charset``, ``Accept-Encoding``, or + ``Accept-Language``, pass the appropriate :class:`.Accept` subclass. + + :param value: The header value to parse. + :param cls: The :class:`.Accept` class to wrap the result in. + :return: An instance of ``cls``. + + .. versionchanged:: 2.3 + Parse according to RFC 9110. Items with invalid ``q`` values are skipped. + """ + if cls is None: + cls = t.cast(type[_TAnyAccept], ds.Accept) + + if not value: + return cls(None) + + result = [] + + for item in parse_list_header(value): + item, options = parse_options_header(item) + + if "q" in options: + # pop q, remaining options are reconstructed + q_str = options.pop("q").strip() + + if _q_value_re.fullmatch(q_str) is None: + # ignore an invalid q + continue + + q = float(q_str) + + if q < 0 or q > 1: + # ignore an invalid q + continue + else: + q = 1 + + if options: + # reconstruct the media type with any options + item = dump_options_header(item, options) + + result.append((item, q)) + + return cls(result) + + +_TAnyCC = t.TypeVar("_TAnyCC", bound="ds.cache_control._CacheControl") + + +@t.overload +def parse_cache_control_header( + value: str | None, + on_update: t.Callable[[ds.cache_control._CacheControl], None] | None = None, +) -> ds.RequestCacheControl: ... + + +@t.overload +def parse_cache_control_header( + value: str | None, + on_update: t.Callable[[ds.cache_control._CacheControl], None] | None = None, + cls: type[_TAnyCC] = ..., +) -> _TAnyCC: ... + + +def parse_cache_control_header( + value: str | None, + on_update: t.Callable[[ds.cache_control._CacheControl], None] | None = None, + cls: type[_TAnyCC] | None = None, +) -> _TAnyCC: + """Parse a cache control header. The RFC differs between response and + request cache control, this method does not. It's your responsibility + to not use the wrong control statements. + + .. versionadded:: 0.5 + The `cls` was added. If not specified an immutable + :class:`~werkzeug.datastructures.RequestCacheControl` is returned. + + :param value: a cache control header to be parsed. + :param on_update: an optional callable that is called every time a value + on the :class:`~werkzeug.datastructures.CacheControl` + object is changed. + :param cls: the class for the returned object. By default + :class:`~werkzeug.datastructures.RequestCacheControl` is used. + :return: a `cls` object. + """ + if cls is None: + cls = t.cast("type[_TAnyCC]", ds.RequestCacheControl) + + if not value: + return cls((), on_update) + + return cls(parse_dict_header(value), on_update) + + +_TAnyCSP = t.TypeVar("_TAnyCSP", bound="ds.ContentSecurityPolicy") + + +@t.overload +def parse_csp_header( + value: str | None, + on_update: t.Callable[[ds.ContentSecurityPolicy], None] | None = None, +) -> ds.ContentSecurityPolicy: ... + + +@t.overload +def parse_csp_header( + value: str | None, + on_update: t.Callable[[ds.ContentSecurityPolicy], None] | None = None, + cls: type[_TAnyCSP] = ..., +) -> _TAnyCSP: ... + + +def parse_csp_header( + value: str | None, + on_update: t.Callable[[ds.ContentSecurityPolicy], None] | None = None, + cls: type[_TAnyCSP] | None = None, +) -> _TAnyCSP: + """Parse a Content Security Policy header. + + .. versionadded:: 1.0.0 + Support for Content Security Policy headers was added. + + :param value: a csp header to be parsed. + :param on_update: an optional callable that is called every time a value + on the object is changed. + :param cls: the class for the returned object. By default + :class:`~werkzeug.datastructures.ContentSecurityPolicy` is used. + :return: a `cls` object. + """ + if cls is None: + cls = t.cast("type[_TAnyCSP]", ds.ContentSecurityPolicy) + + if value is None: + return cls((), on_update) + + items = [] + + for policy in value.split(";"): + policy = policy.strip() + + # Ignore badly formatted policies (no space) + if " " in policy: + directive, value = policy.strip().split(" ", 1) + items.append((directive.strip(), value.strip())) + + return cls(items, on_update) + + +def parse_set_header( + value: str | None, + on_update: t.Callable[[ds.HeaderSet], None] | None = None, +) -> ds.HeaderSet: + """Parse a set-like header and return a + :class:`~werkzeug.datastructures.HeaderSet` object: + + >>> hs = parse_set_header('token, "quoted value"') + + The return value is an object that treats the items case-insensitively + and keeps the order of the items: + + >>> 'TOKEN' in hs + True + >>> hs.index('quoted value') + 1 + >>> hs + HeaderSet(['token', 'quoted value']) + + To create a header from the :class:`HeaderSet` again, use the + :func:`dump_header` function. + + :param value: a set header to be parsed. + :param on_update: an optional callable that is called every time a + value on the :class:`~werkzeug.datastructures.HeaderSet` + object is changed. + :return: a :class:`~werkzeug.datastructures.HeaderSet` + """ + if not value: + return ds.HeaderSet(None, on_update) + return ds.HeaderSet(parse_list_header(value), on_update) + + +def parse_if_range_header(value: str | None) -> ds.IfRange: + """Parses an if-range header which can be an etag or a date. Returns + a :class:`~werkzeug.datastructures.IfRange` object. + + .. versionchanged:: 2.0 + If the value represents a datetime, it is timezone-aware. + + .. versionadded:: 0.7 + """ + if not value: + return ds.IfRange() + date = parse_date(value) + if date is not None: + return ds.IfRange(date=date) + # drop weakness information + return ds.IfRange(unquote_etag(value)[0]) + + +def parse_range_header( + value: str | None, make_inclusive: bool = True +) -> ds.Range | None: + """Parses a range header into a :class:`~werkzeug.datastructures.Range` + object. If the header is missing or malformed `None` is returned. + `ranges` is a list of ``(start, stop)`` tuples where the ranges are + non-inclusive. + + .. versionadded:: 0.7 + """ + if not value or "=" not in value: + return None + + ranges = [] + last_end = 0 + units, rng = value.split("=", 1) + units = units.strip().lower() + + for item in rng.split(","): + item = item.strip() + if "-" not in item: + return None + if item.startswith("-"): + if last_end < 0: + return None + try: + begin = _plain_int(item) + except ValueError: + return None + end = None + last_end = -1 + elif "-" in item: + begin_str, end_str = item.split("-", 1) + begin_str = begin_str.strip() + end_str = end_str.strip() + + try: + begin = _plain_int(begin_str) + except ValueError: + return None + + if begin < last_end or last_end < 0: + return None + if end_str: + try: + end = _plain_int(end_str) + 1 + except ValueError: + return None + + if begin >= end: + return None + else: + end = None + last_end = end if end is not None else -1 + ranges.append((begin, end)) + + return ds.Range(units, ranges) + + +def parse_content_range_header( + value: str | None, + on_update: t.Callable[[ds.ContentRange], None] | None = None, +) -> ds.ContentRange | None: + """Parses a range header into a + :class:`~werkzeug.datastructures.ContentRange` object or `None` if + parsing is not possible. + + .. versionadded:: 0.7 + + :param value: a content range header to be parsed. + :param on_update: an optional callable that is called every time a value + on the :class:`~werkzeug.datastructures.ContentRange` + object is changed. + """ + if value is None: + return None + try: + units, rangedef = (value or "").strip().split(None, 1) + except ValueError: + return None + + if "/" not in rangedef: + return None + rng, length_str = rangedef.split("/", 1) + if length_str == "*": + length = None + else: + try: + length = _plain_int(length_str) + except ValueError: + return None + + if rng == "*": + if not is_byte_range_valid(None, None, length): + return None + + return ds.ContentRange(units, None, None, length, on_update=on_update) + elif "-" not in rng: + return None + + start_str, stop_str = rng.split("-", 1) + try: + start = _plain_int(start_str) + stop = _plain_int(stop_str) + 1 + except ValueError: + return None + + if is_byte_range_valid(start, stop, length): + return ds.ContentRange(units, start, stop, length, on_update=on_update) + + return None + + +def quote_etag(etag: str, weak: bool = False) -> str: + """Quote an etag. + + :param etag: the etag to quote. + :param weak: set to `True` to tag it "weak". + """ + if '"' in etag: + raise ValueError("invalid etag") + etag = f'"{etag}"' + if weak: + etag = f"W/{etag}" + return etag + + +@t.overload +def unquote_etag(etag: str) -> tuple[str, bool]: ... +@t.overload +def unquote_etag(etag: None) -> tuple[None, None]: ... +def unquote_etag( + etag: str | None, +) -> tuple[str, bool] | tuple[None, None]: + """Unquote a single etag: + + >>> unquote_etag('W/"bar"') + ('bar', True) + >>> unquote_etag('"bar"') + ('bar', False) + + :param etag: the etag identifier to unquote. + :return: a ``(etag, weak)`` tuple. + """ + if not etag: + return None, None + etag = etag.strip() + weak = False + if etag.startswith(("W/", "w/")): + weak = True + etag = etag[2:] + if etag[:1] == etag[-1:] == '"': + etag = etag[1:-1] + return etag, weak + + +def parse_etags(value: str | None) -> ds.ETags: + """Parse an etag header. + + :param value: the tag header to parse + :return: an :class:`~werkzeug.datastructures.ETags` object. + """ + if not value: + return ds.ETags() + strong = [] + weak = [] + end = len(value) + pos = 0 + while pos < end: + match = _etag_re.match(value, pos) + if match is None: + break + is_weak, quoted, raw = match.groups() + if raw == "*": + return ds.ETags(star_tag=True) + elif quoted: + raw = quoted + if is_weak: + weak.append(raw) + else: + strong.append(raw) + pos = match.end() + return ds.ETags(strong, weak) + + +def generate_etag(data: bytes) -> str: + """Generate an etag for some data. + + .. versionchanged:: 2.0 + Use SHA-1. MD5 may not be available in some environments. + """ + return sha1(data).hexdigest() + + +def parse_date(value: str | None) -> datetime | None: + """Parse an :rfc:`2822` date into a timezone-aware + :class:`datetime.datetime` object, or ``None`` if parsing fails. + + This is a wrapper for :func:`email.utils.parsedate_to_datetime`. It + returns ``None`` if parsing fails instead of raising an exception, + and always returns a timezone-aware datetime object. If the string + doesn't have timezone information, it is assumed to be UTC. + + :param value: A string with a supported date format. + + .. versionchanged:: 2.0 + Return a timezone-aware datetime object. Use + ``email.utils.parsedate_to_datetime``. + """ + if value is None: + return None + + try: + dt = email.utils.parsedate_to_datetime(value) + except (TypeError, ValueError): + return None + + if dt.tzinfo is None: + return dt.replace(tzinfo=timezone.utc) + + return dt + + +def http_date( + timestamp: datetime | date | int | float | struct_time | None = None, +) -> str: + """Format a datetime object or timestamp into an :rfc:`2822` date + string. + + This is a wrapper for :func:`email.utils.format_datetime`. It + assumes naive datetime objects are in UTC instead of raising an + exception. + + :param timestamp: The datetime or timestamp to format. Defaults to + the current time. + + .. versionchanged:: 2.0 + Use ``email.utils.format_datetime``. Accept ``date`` objects. + """ + if isinstance(timestamp, date): + if not isinstance(timestamp, datetime): + # Assume plain date is midnight UTC. + timestamp = datetime.combine(timestamp, time(), tzinfo=timezone.utc) + else: + # Ensure datetime is timezone-aware. + timestamp = _dt_as_utc(timestamp) + + return email.utils.format_datetime(timestamp, usegmt=True) + + if isinstance(timestamp, struct_time): + timestamp = mktime(timestamp) + + return email.utils.formatdate(timestamp, usegmt=True) + + +def parse_age(value: str | None = None) -> timedelta | None: + """Parses a base-10 integer count of seconds into a timedelta. + + If parsing fails, the return value is `None`. + + :param value: a string consisting of an integer represented in base-10 + :return: a :class:`datetime.timedelta` object or `None`. + """ + if not value: + return None + try: + seconds = int(value) + except ValueError: + return None + if seconds < 0: + return None + try: + return timedelta(seconds=seconds) + except OverflowError: + return None + + +def dump_age(age: timedelta | int | None = None) -> str | None: + """Formats the duration as a base-10 integer. + + :param age: should be an integer number of seconds, + a :class:`datetime.timedelta` object, or, + if the age is unknown, `None` (default). + """ + if age is None: + return None + if isinstance(age, timedelta): + age = int(age.total_seconds()) + else: + age = int(age) + + if age < 0: + raise ValueError("age cannot be negative") + + return str(age) + + +def is_resource_modified( + environ: WSGIEnvironment, + etag: str | None = None, + data: bytes | None = None, + last_modified: datetime | str | None = None, + ignore_if_range: bool = True, +) -> bool: + """Convenience method for conditional requests. + + :param environ: the WSGI environment of the request to be checked. + :param etag: the etag for the response for comparison. + :param data: or alternatively the data of the response to automatically + generate an etag using :func:`generate_etag`. + :param last_modified: an optional date of the last modification. + :param ignore_if_range: If `False`, `If-Range` header will be taken into + account. + :return: `True` if the resource was modified, otherwise `False`. + + .. versionchanged:: 2.0 + SHA-1 is used to generate an etag value for the data. MD5 may + not be available in some environments. + + .. versionchanged:: 1.0.0 + The check is run for methods other than ``GET`` and ``HEAD``. + """ + return _sansio_http.is_resource_modified( + http_range=environ.get("HTTP_RANGE"), + http_if_range=environ.get("HTTP_IF_RANGE"), + http_if_modified_since=environ.get("HTTP_IF_MODIFIED_SINCE"), + http_if_none_match=environ.get("HTTP_IF_NONE_MATCH"), + http_if_match=environ.get("HTTP_IF_MATCH"), + etag=etag, + data=data, + last_modified=last_modified, + ignore_if_range=ignore_if_range, + ) + + +def remove_entity_headers( + headers: ds.Headers | list[tuple[str, str]], + allowed: t.Iterable[str] = ("expires", "content-location"), +) -> None: + """Remove all entity headers from a list or :class:`Headers` object. This + operation works in-place. `Expires` and `Content-Location` headers are + by default not removed. The reason for this is :rfc:`2616` section + 10.3.5 which specifies some entity headers that should be sent. + + .. versionchanged:: 0.5 + added `allowed` parameter. + + :param headers: a list or :class:`Headers` object. + :param allowed: a list of headers that should still be allowed even though + they are entity headers. + """ + allowed = {x.lower() for x in allowed} + headers[:] = [ + (key, value) + for key, value in headers + if not is_entity_header(key) or key.lower() in allowed + ] + + +def remove_hop_by_hop_headers(headers: ds.Headers | list[tuple[str, str]]) -> None: + """Remove all HTTP/1.1 "Hop-by-Hop" headers from a list or + :class:`Headers` object. This operation works in-place. + + .. versionadded:: 0.5 + + :param headers: a list or :class:`Headers` object. + """ + headers[:] = [ + (key, value) for key, value in headers if not is_hop_by_hop_header(key) + ] + + +def is_entity_header(header: str) -> bool: + """Check if a header is an entity header. + + .. versionadded:: 0.5 + + :param header: the header to test. + :return: `True` if it's an entity header, `False` otherwise. + """ + return header.lower() in _entity_headers + + +def is_hop_by_hop_header(header: str) -> bool: + """Check if a header is an HTTP/1.1 "Hop-by-Hop" header. + + .. versionadded:: 0.5 + + :param header: the header to test. + :return: `True` if it's an HTTP/1.1 "Hop-by-Hop" header, `False` otherwise. + """ + return header.lower() in _hop_by_hop_headers + + +def parse_cookie( + header: WSGIEnvironment | str | None, + cls: type[ds.MultiDict[str, str]] | None = None, +) -> ds.MultiDict[str, str]: + """Parse a cookie from a string or WSGI environ. + + The same key can be provided multiple times, the values are stored + in-order. The default :class:`MultiDict` will have the first value + first, and all values can be retrieved with + :meth:`MultiDict.getlist`. + + :param header: The cookie header as a string, or a WSGI environ dict + with a ``HTTP_COOKIE`` key. + :param cls: A dict-like class to store the parsed cookies in. + Defaults to :class:`MultiDict`. + + .. versionchanged:: 3.0 + Passing bytes, and the ``charset`` and ``errors`` parameters, were removed. + + .. versionchanged:: 1.0 + Returns a :class:`MultiDict` instead of a ``TypeConversionDict``. + + .. versionchanged:: 0.5 + Returns a :class:`TypeConversionDict` instead of a regular dict. The ``cls`` + parameter was added. + """ + if isinstance(header, dict): + cookie = header.get("HTTP_COOKIE") + else: + cookie = header + + if cookie: + cookie = cookie.encode("latin1").decode() + + return _sansio_http.parse_cookie(cookie=cookie, cls=cls) + + +_cookie_no_quote_re = re.compile(r"[\w!#$%&'()*+\-./:<=>?@\[\]^`{|}~]*", re.A) +_cookie_slash_re = re.compile(rb"[\x00-\x19\",;\\\x7f-\xff]", re.A) +_cookie_slash_map = {b'"': b'\\"', b"\\": b"\\\\"} +_cookie_slash_map.update( + (v.to_bytes(1, "big"), b"\\%03o" % v) + for v in [*range(0x20), *b",;", *range(0x7F, 256)] +) + + +def dump_cookie( + key: str, + value: str = "", + max_age: timedelta | int | None = None, + expires: str | datetime | int | float | None = None, + path: str | None = "/", + domain: str | None = None, + secure: bool = False, + httponly: bool = False, + sync_expires: bool = True, + max_size: int = 4093, + samesite: str | None = None, + partitioned: bool = False, +) -> str: + """Create a Set-Cookie header without the ``Set-Cookie`` prefix. + + The return value is usually restricted to ascii as the vast majority + of values are properly escaped, but that is no guarantee. It's + tunneled through latin1 as required by :pep:`3333`. + + The return value is not ASCII safe if the key contains unicode + characters. This is technically against the specification but + happens in the wild. It's strongly recommended to not use + non-ASCII values for the keys. + + :param max_age: should be a number of seconds, or `None` (default) if + the cookie should last only as long as the client's + browser session. Additionally `timedelta` objects + are accepted, too. + :param expires: should be a `datetime` object or unix timestamp. + :param path: limits the cookie to a given path, per default it will + span the whole domain. + :param domain: Use this if you want to set a cross-domain cookie. For + example, ``domain="example.com"`` will set a cookie + that is readable by the domain ``www.example.com``, + ``foo.example.com`` etc. Otherwise, a cookie will only + be readable by the domain that set it. + :param secure: The cookie will only be available via HTTPS + :param httponly: disallow JavaScript to access the cookie. This is an + extension to the cookie standard and probably not + supported by all browsers. + :param charset: the encoding for string values. + :param sync_expires: automatically set expires if max_age is defined + but expires not. + :param max_size: Warn if the final header value exceeds this size. The + default, 4093, should be safely `supported by most browsers + `_. Set to 0 to disable this check. + :param samesite: Limits the scope of the cookie such that it will + only be attached to requests if those requests are same-site. + :param partitioned: Opts the cookie into partitioned storage. This + will also set secure to True + + .. _`cookie`: http://browsercookielimits.squawky.net/ + + .. versionchanged:: 3.1 + The ``partitioned`` parameter was added. + + .. versionchanged:: 3.0 + Passing bytes, and the ``charset`` parameter, were removed. + + .. versionchanged:: 2.3.3 + The ``path`` parameter is ``/`` by default. + + .. versionchanged:: 2.3.1 + The value allows more characters without quoting. + + .. versionchanged:: 2.3 + ``localhost`` and other names without a dot are allowed for the domain. A + leading dot is ignored. + + .. versionchanged:: 2.3 + The ``path`` parameter is ``None`` by default. + + .. versionchanged:: 1.0.0 + The string ``'None'`` is accepted for ``samesite``. + """ + if path is not None: + # safe = https://url.spec.whatwg.org/#url-path-segment-string + # as well as percent for things that are already quoted + # excluding semicolon since it's part of the header syntax + path = quote(path, safe="%!$&'()*+,/:=@") + + if domain: + domain = domain.partition(":")[0].lstrip(".").encode("idna").decode("ascii") + + if isinstance(max_age, timedelta): + max_age = int(max_age.total_seconds()) + + if expires is not None: + if not isinstance(expires, str): + expires = http_date(expires) + elif max_age is not None and sync_expires: + expires = http_date(datetime.now(tz=timezone.utc).timestamp() + max_age) + + if samesite is not None: + samesite = samesite.title() + + if samesite not in {"Strict", "Lax", "None"}: + raise ValueError("SameSite must be 'Strict', 'Lax', or 'None'.") + + if partitioned: + secure = True + + # Quote value if it contains characters not allowed by RFC 6265. Slash-escape with + # three octal digits, which matches http.cookies, although the RFC suggests base64. + if not _cookie_no_quote_re.fullmatch(value): + # Work with bytes here, since a UTF-8 character could be multiple bytes. + value = _cookie_slash_re.sub( + lambda m: _cookie_slash_map[m.group()], value.encode() + ).decode("ascii") + value = f'"{value}"' + + # Send a non-ASCII key as mojibake. Everything else should already be ASCII. + # TODO Remove encoding dance, it seems like clients accept UTF-8 keys + buf = [f"{key.encode().decode('latin1')}={value}"] + + for k, v in ( + ("Domain", domain), + ("Expires", expires), + ("Max-Age", max_age), + ("Secure", secure), + ("HttpOnly", httponly), + ("Path", path), + ("SameSite", samesite), + ("Partitioned", partitioned), + ): + if v is None or v is False: + continue + + if v is True: + buf.append(k) + continue + + buf.append(f"{k}={v}") + + rv = "; ".join(buf) + + # Warn if the final value of the cookie is larger than the limit. If the cookie is + # too large, then it may be silently ignored by the browser, which can be quite hard + # to debug. + cookie_size = len(rv) + + if max_size and cookie_size > max_size: + value_size = len(value) + warnings.warn( + f"The '{key}' cookie is too large: the value was {value_size} bytes but the" + f" header required {cookie_size - value_size} extra bytes. The final size" + f" was {cookie_size} bytes but the limit is {max_size} bytes. Browsers may" + " silently ignore cookies larger than this.", + stacklevel=2, + ) + + return rv + + +def is_byte_range_valid( + start: int | None, stop: int | None, length: int | None +) -> bool: + """Checks if a given byte content range is valid for the given length. + + .. versionadded:: 0.7 + """ + if (start is None) != (stop is None): + return False + elif start is None: + return length is None or length >= 0 + elif length is None: + return 0 <= start < stop # type: ignore + elif start >= stop: # type: ignore + return False + return 0 <= start < length + + +# circular dependencies +from . import datastructures as ds +from .sansio import http as _sansio_http diff --git a/gestao_raul/Lib/site-packages/werkzeug/local.py b/gestao_raul/Lib/site-packages/werkzeug/local.py new file mode 100644 index 0000000..302589b --- /dev/null +++ b/gestao_raul/Lib/site-packages/werkzeug/local.py @@ -0,0 +1,653 @@ +from __future__ import annotations + +import copy +import math +import operator +import typing as t +from contextvars import ContextVar +from functools import partial +from functools import update_wrapper +from operator import attrgetter + +from .wsgi import ClosingIterator + +if t.TYPE_CHECKING: + from _typeshed.wsgi import StartResponse + from _typeshed.wsgi import WSGIApplication + from _typeshed.wsgi import WSGIEnvironment + +T = t.TypeVar("T") +F = t.TypeVar("F", bound=t.Callable[..., t.Any]) + + +def release_local(local: Local | LocalStack[t.Any]) -> None: + """Release the data for the current context in a :class:`Local` or + :class:`LocalStack` without using a :class:`LocalManager`. + + This should not be needed for modern use cases, and may be removed + in the future. + + .. versionadded:: 0.6.1 + """ + local.__release_local__() + + +class Local: + """Create a namespace of context-local data. This wraps a + :class:`ContextVar` containing a :class:`dict` value. + + This may incur a performance penalty compared to using individual + context vars, as it has to copy data to avoid mutating the dict + between nested contexts. + + :param context_var: The :class:`~contextvars.ContextVar` to use as + storage for this local. If not given, one will be created. + Context vars not created at the global scope may interfere with + garbage collection. + + .. versionchanged:: 2.0 + Uses ``ContextVar`` instead of a custom storage implementation. + """ + + __slots__ = ("__storage",) + + def __init__(self, context_var: ContextVar[dict[str, t.Any]] | None = None) -> None: + if context_var is None: + # A ContextVar not created at global scope interferes with + # Python's garbage collection. However, a local only makes + # sense defined at the global scope as well, in which case + # the GC issue doesn't seem relevant. + context_var = ContextVar(f"werkzeug.Local<{id(self)}>.storage") + + object.__setattr__(self, "_Local__storage", context_var) + + def __iter__(self) -> t.Iterator[tuple[str, t.Any]]: + return iter(self.__storage.get({}).items()) + + def __call__( + self, name: str, *, unbound_message: str | None = None + ) -> LocalProxy[t.Any]: + """Create a :class:`LocalProxy` that access an attribute on this + local namespace. + + :param name: Proxy this attribute. + :param unbound_message: The error message that the proxy will + show if the attribute isn't set. + """ + return LocalProxy(self, name, unbound_message=unbound_message) + + def __release_local__(self) -> None: + self.__storage.set({}) + + def __getattr__(self, name: str) -> t.Any: + values = self.__storage.get({}) + + if name in values: + return values[name] + + raise AttributeError(name) + + def __setattr__(self, name: str, value: t.Any) -> None: + values = self.__storage.get({}).copy() + values[name] = value + self.__storage.set(values) + + def __delattr__(self, name: str) -> None: + values = self.__storage.get({}) + + if name in values: + values = values.copy() + del values[name] + self.__storage.set(values) + else: + raise AttributeError(name) + + +class LocalStack(t.Generic[T]): + """Create a stack of context-local data. This wraps a + :class:`ContextVar` containing a :class:`list` value. + + This may incur a performance penalty compared to using individual + context vars, as it has to copy data to avoid mutating the list + between nested contexts. + + :param context_var: The :class:`~contextvars.ContextVar` to use as + storage for this local. If not given, one will be created. + Context vars not created at the global scope may interfere with + garbage collection. + + .. versionchanged:: 2.0 + Uses ``ContextVar`` instead of a custom storage implementation. + + .. versionadded:: 0.6.1 + """ + + __slots__ = ("_storage",) + + def __init__(self, context_var: ContextVar[list[T]] | None = None) -> None: + if context_var is None: + # A ContextVar not created at global scope interferes with + # Python's garbage collection. However, a local only makes + # sense defined at the global scope as well, in which case + # the GC issue doesn't seem relevant. + context_var = ContextVar(f"werkzeug.LocalStack<{id(self)}>.storage") + + self._storage = context_var + + def __release_local__(self) -> None: + self._storage.set([]) + + def push(self, obj: T) -> list[T]: + """Add a new item to the top of the stack.""" + stack = self._storage.get([]).copy() + stack.append(obj) + self._storage.set(stack) + return stack + + def pop(self) -> T | None: + """Remove the top item from the stack and return it. If the + stack is empty, return ``None``. + """ + stack = self._storage.get([]) + + if len(stack) == 0: + return None + + rv = stack[-1] + self._storage.set(stack[:-1]) + return rv + + @property + def top(self) -> T | None: + """The topmost item on the stack. If the stack is empty, + `None` is returned. + """ + stack = self._storage.get([]) + + if len(stack) == 0: + return None + + return stack[-1] + + def __call__( + self, name: str | None = None, *, unbound_message: str | None = None + ) -> LocalProxy[t.Any]: + """Create a :class:`LocalProxy` that accesses the top of this + local stack. + + :param name: If given, the proxy access this attribute of the + top item, rather than the item itself. + :param unbound_message: The error message that the proxy will + show if the stack is empty. + """ + return LocalProxy(self, name, unbound_message=unbound_message) + + +class LocalManager: + """Manage releasing the data for the current context in one or more + :class:`Local` and :class:`LocalStack` objects. + + This should not be needed for modern use cases, and may be removed + in the future. + + :param locals: A local or list of locals to manage. + + .. versionchanged:: 2.1 + The ``ident_func`` was removed. + + .. versionchanged:: 0.7 + The ``ident_func`` parameter was added. + + .. versionchanged:: 0.6.1 + The :func:`release_local` function can be used instead of a + manager. + """ + + __slots__ = ("locals",) + + def __init__( + self, + locals: None + | (Local | LocalStack[t.Any] | t.Iterable[Local | LocalStack[t.Any]]) = None, + ) -> None: + if locals is None: + self.locals = [] + elif isinstance(locals, Local): + self.locals = [locals] + else: + self.locals = list(locals) # type: ignore[arg-type] + + def cleanup(self) -> None: + """Release the data in the locals for this context. Call this at + the end of each request or use :meth:`make_middleware`. + """ + for local in self.locals: + release_local(local) + + def make_middleware(self, app: WSGIApplication) -> WSGIApplication: + """Wrap a WSGI application so that local data is released + automatically after the response has been sent for a request. + """ + + def application( + environ: WSGIEnvironment, start_response: StartResponse + ) -> t.Iterable[bytes]: + return ClosingIterator(app(environ, start_response), self.cleanup) + + return application + + def middleware(self, func: WSGIApplication) -> WSGIApplication: + """Like :meth:`make_middleware` but used as a decorator on the + WSGI application function. + + .. code-block:: python + + @manager.middleware + def application(environ, start_response): + ... + """ + return update_wrapper(self.make_middleware(func), func) + + def __repr__(self) -> str: + return f"<{type(self).__name__} storages: {len(self.locals)}>" + + +class _ProxyLookup: + """Descriptor that handles proxied attribute lookup for + :class:`LocalProxy`. + + :param f: The built-in function this attribute is accessed through. + Instead of looking up the special method, the function call + is redone on the object. + :param fallback: Return this function if the proxy is unbound + instead of raising a :exc:`RuntimeError`. + :param is_attr: This proxied name is an attribute, not a function. + Call the fallback immediately to get the value. + :param class_value: Value to return when accessed from the + ``LocalProxy`` class directly. Used for ``__doc__`` so building + docs still works. + """ + + __slots__ = ("bind_f", "fallback", "is_attr", "class_value", "name") + + def __init__( + self, + f: t.Callable[..., t.Any] | None = None, + fallback: t.Callable[[LocalProxy[t.Any]], t.Any] | None = None, + class_value: t.Any | None = None, + is_attr: bool = False, + ) -> None: + bind_f: t.Callable[[LocalProxy[t.Any], t.Any], t.Callable[..., t.Any]] | None + + if hasattr(f, "__get__"): + # A Python function, can be turned into a bound method. + + def bind_f( + instance: LocalProxy[t.Any], obj: t.Any + ) -> t.Callable[..., t.Any]: + return f.__get__(obj, type(obj)) # type: ignore + + elif f is not None: + # A C function, use partial to bind the first argument. + + def bind_f( + instance: LocalProxy[t.Any], obj: t.Any + ) -> t.Callable[..., t.Any]: + return partial(f, obj) + + else: + # Use getattr, which will produce a bound method. + bind_f = None + + self.bind_f = bind_f + self.fallback = fallback + self.class_value = class_value + self.is_attr = is_attr + + def __set_name__(self, owner: LocalProxy[t.Any], name: str) -> None: + self.name = name + + def __get__(self, instance: LocalProxy[t.Any], owner: type | None = None) -> t.Any: + if instance is None: + if self.class_value is not None: + return self.class_value + + return self + + try: + obj = instance._get_current_object() + except RuntimeError: + if self.fallback is None: + raise + + fallback = self.fallback.__get__(instance, owner) + + if self.is_attr: + # __class__ and __doc__ are attributes, not methods. + # Call the fallback to get the value. + return fallback() + + return fallback + + if self.bind_f is not None: + return self.bind_f(instance, obj) + + return getattr(obj, self.name) + + def __repr__(self) -> str: + return f"proxy {self.name}" + + def __call__( + self, instance: LocalProxy[t.Any], *args: t.Any, **kwargs: t.Any + ) -> t.Any: + """Support calling unbound methods from the class. For example, + this happens with ``copy.copy``, which does + ``type(x).__copy__(x)``. ``type(x)`` can't be proxied, so it + returns the proxy type and descriptor. + """ + return self.__get__(instance, type(instance))(*args, **kwargs) + + +class _ProxyIOp(_ProxyLookup): + """Look up an augmented assignment method on a proxied object. The + method is wrapped to return the proxy instead of the object. + """ + + __slots__ = () + + def __init__( + self, + f: t.Callable[..., t.Any] | None = None, + fallback: t.Callable[[LocalProxy[t.Any]], t.Any] | None = None, + ) -> None: + super().__init__(f, fallback) + + def bind_f(instance: LocalProxy[t.Any], obj: t.Any) -> t.Callable[..., t.Any]: + def i_op(self: t.Any, other: t.Any) -> LocalProxy[t.Any]: + f(self, other) # type: ignore + return instance + + return i_op.__get__(obj, type(obj)) # type: ignore + + self.bind_f = bind_f + + +def _l_to_r_op(op: F) -> F: + """Swap the argument order to turn an l-op into an r-op.""" + + def r_op(obj: t.Any, other: t.Any) -> t.Any: + return op(other, obj) + + return t.cast(F, r_op) + + +def _identity(o: T) -> T: + return o + + +class LocalProxy(t.Generic[T]): + """A proxy to the object bound to a context-local object. All + operations on the proxy are forwarded to the bound object. If no + object is bound, a ``RuntimeError`` is raised. + + :param local: The context-local object that provides the proxied + object. + :param name: Proxy this attribute from the proxied object. + :param unbound_message: The error message to show if the + context-local object is unbound. + + Proxy a :class:`~contextvars.ContextVar` to make it easier to + access. Pass a name to proxy that attribute. + + .. code-block:: python + + _request_var = ContextVar("request") + request = LocalProxy(_request_var) + session = LocalProxy(_request_var, "session") + + Proxy an attribute on a :class:`Local` namespace by calling the + local with the attribute name: + + .. code-block:: python + + data = Local() + user = data("user") + + Proxy the top item on a :class:`LocalStack` by calling the local. + Pass a name to proxy that attribute. + + .. code-block:: + + app_stack = LocalStack() + current_app = app_stack() + g = app_stack("g") + + Pass a function to proxy the return value from that function. This + was previously used to access attributes of local objects before + that was supported directly. + + .. code-block:: python + + session = LocalProxy(lambda: request.session) + + ``__repr__`` and ``__class__`` are proxied, so ``repr(x)`` and + ``isinstance(x, cls)`` will look like the proxied object. Use + ``issubclass(type(x), LocalProxy)`` to check if an object is a + proxy. + + .. code-block:: python + + repr(user) # + isinstance(user, User) # True + issubclass(type(user), LocalProxy) # True + + .. versionchanged:: 2.2.2 + ``__wrapped__`` is set when wrapping an object, not only when + wrapping a function, to prevent doctest from failing. + + .. versionchanged:: 2.2 + Can proxy a ``ContextVar`` or ``LocalStack`` directly. + + .. versionchanged:: 2.2 + The ``name`` parameter can be used with any proxied object, not + only ``Local``. + + .. versionchanged:: 2.2 + Added the ``unbound_message`` parameter. + + .. versionchanged:: 2.0 + Updated proxied attributes and methods to reflect the current + data model. + + .. versionchanged:: 0.6.1 + The class can be instantiated with a callable. + """ + + __slots__ = ("__wrapped", "_get_current_object") + + _get_current_object: t.Callable[[], T] + """Return the current object this proxy is bound to. If the proxy is + unbound, this raises a ``RuntimeError``. + + This should be used if you need to pass the object to something that + doesn't understand the proxy. It can also be useful for performance + if you are accessing the object multiple times in a function, rather + than going through the proxy multiple times. + """ + + def __init__( + self, + local: ContextVar[T] | Local | LocalStack[T] | t.Callable[[], T], + name: str | None = None, + *, + unbound_message: str | None = None, + ) -> None: + if name is None: + get_name = _identity + else: + get_name = attrgetter(name) # type: ignore[assignment] + + if unbound_message is None: + unbound_message = "object is not bound" + + if isinstance(local, Local): + if name is None: + raise TypeError("'name' is required when proxying a 'Local' object.") + + def _get_current_object() -> T: + try: + return get_name(local) # type: ignore[return-value] + except AttributeError: + raise RuntimeError(unbound_message) from None + + elif isinstance(local, LocalStack): + + def _get_current_object() -> T: + obj = local.top + + if obj is None: + raise RuntimeError(unbound_message) + + return get_name(obj) + + elif isinstance(local, ContextVar): + + def _get_current_object() -> T: + try: + obj = local.get() + except LookupError: + raise RuntimeError(unbound_message) from None + + return get_name(obj) + + elif callable(local): + + def _get_current_object() -> T: + return get_name(local()) + + else: + raise TypeError(f"Don't know how to proxy '{type(local)}'.") + + object.__setattr__(self, "_LocalProxy__wrapped", local) + object.__setattr__(self, "_get_current_object", _get_current_object) + + __doc__ = _ProxyLookup( # type: ignore[assignment] + class_value=__doc__, fallback=lambda self: type(self).__doc__, is_attr=True + ) + __wrapped__ = _ProxyLookup( + fallback=lambda self: self._LocalProxy__wrapped, # type: ignore[attr-defined] + is_attr=True, + ) + # __del__ should only delete the proxy + __repr__ = _ProxyLookup( # type: ignore[assignment] + repr, fallback=lambda self: f"<{type(self).__name__} unbound>" + ) + __str__ = _ProxyLookup(str) # type: ignore[assignment] + __bytes__ = _ProxyLookup(bytes) + __format__ = _ProxyLookup() # type: ignore[assignment] + __lt__ = _ProxyLookup(operator.lt) + __le__ = _ProxyLookup(operator.le) + __eq__ = _ProxyLookup(operator.eq) # type: ignore[assignment] + __ne__ = _ProxyLookup(operator.ne) # type: ignore[assignment] + __gt__ = _ProxyLookup(operator.gt) + __ge__ = _ProxyLookup(operator.ge) + __hash__ = _ProxyLookup(hash) # type: ignore[assignment] + __bool__ = _ProxyLookup(bool, fallback=lambda self: False) + __getattr__ = _ProxyLookup(getattr) + # __getattribute__ triggered through __getattr__ + __setattr__ = _ProxyLookup(setattr) # type: ignore[assignment] + __delattr__ = _ProxyLookup(delattr) # type: ignore[assignment] + __dir__ = _ProxyLookup(dir, fallback=lambda self: []) # type: ignore[assignment] + # __get__ (proxying descriptor not supported) + # __set__ (descriptor) + # __delete__ (descriptor) + # __set_name__ (descriptor) + # __objclass__ (descriptor) + # __slots__ used by proxy itself + # __dict__ (__getattr__) + # __weakref__ (__getattr__) + # __init_subclass__ (proxying metaclass not supported) + # __prepare__ (metaclass) + __class__ = _ProxyLookup(fallback=lambda self: type(self), is_attr=True) # type: ignore[assignment] + __instancecheck__ = _ProxyLookup(lambda self, other: isinstance(other, self)) + __subclasscheck__ = _ProxyLookup(lambda self, other: issubclass(other, self)) + # __class_getitem__ triggered through __getitem__ + __call__ = _ProxyLookup(lambda self, *args, **kwargs: self(*args, **kwargs)) + __len__ = _ProxyLookup(len) + __length_hint__ = _ProxyLookup(operator.length_hint) + __getitem__ = _ProxyLookup(operator.getitem) + __setitem__ = _ProxyLookup(operator.setitem) + __delitem__ = _ProxyLookup(operator.delitem) + # __missing__ triggered through __getitem__ + __iter__ = _ProxyLookup(iter) + __next__ = _ProxyLookup(next) + __reversed__ = _ProxyLookup(reversed) + __contains__ = _ProxyLookup(operator.contains) + __add__ = _ProxyLookup(operator.add) + __sub__ = _ProxyLookup(operator.sub) + __mul__ = _ProxyLookup(operator.mul) + __matmul__ = _ProxyLookup(operator.matmul) + __truediv__ = _ProxyLookup(operator.truediv) + __floordiv__ = _ProxyLookup(operator.floordiv) + __mod__ = _ProxyLookup(operator.mod) + __divmod__ = _ProxyLookup(divmod) + __pow__ = _ProxyLookup(pow) + __lshift__ = _ProxyLookup(operator.lshift) + __rshift__ = _ProxyLookup(operator.rshift) + __and__ = _ProxyLookup(operator.and_) + __xor__ = _ProxyLookup(operator.xor) + __or__ = _ProxyLookup(operator.or_) + __radd__ = _ProxyLookup(_l_to_r_op(operator.add)) + __rsub__ = _ProxyLookup(_l_to_r_op(operator.sub)) + __rmul__ = _ProxyLookup(_l_to_r_op(operator.mul)) + __rmatmul__ = _ProxyLookup(_l_to_r_op(operator.matmul)) + __rtruediv__ = _ProxyLookup(_l_to_r_op(operator.truediv)) + __rfloordiv__ = _ProxyLookup(_l_to_r_op(operator.floordiv)) + __rmod__ = _ProxyLookup(_l_to_r_op(operator.mod)) + __rdivmod__ = _ProxyLookup(_l_to_r_op(divmod)) + __rpow__ = _ProxyLookup(_l_to_r_op(pow)) + __rlshift__ = _ProxyLookup(_l_to_r_op(operator.lshift)) + __rrshift__ = _ProxyLookup(_l_to_r_op(operator.rshift)) + __rand__ = _ProxyLookup(_l_to_r_op(operator.and_)) + __rxor__ = _ProxyLookup(_l_to_r_op(operator.xor)) + __ror__ = _ProxyLookup(_l_to_r_op(operator.or_)) + __iadd__ = _ProxyIOp(operator.iadd) + __isub__ = _ProxyIOp(operator.isub) + __imul__ = _ProxyIOp(operator.imul) + __imatmul__ = _ProxyIOp(operator.imatmul) + __itruediv__ = _ProxyIOp(operator.itruediv) + __ifloordiv__ = _ProxyIOp(operator.ifloordiv) + __imod__ = _ProxyIOp(operator.imod) + __ipow__ = _ProxyIOp(operator.ipow) + __ilshift__ = _ProxyIOp(operator.ilshift) + __irshift__ = _ProxyIOp(operator.irshift) + __iand__ = _ProxyIOp(operator.iand) + __ixor__ = _ProxyIOp(operator.ixor) + __ior__ = _ProxyIOp(operator.ior) + __neg__ = _ProxyLookup(operator.neg) + __pos__ = _ProxyLookup(operator.pos) + __abs__ = _ProxyLookup(abs) + __invert__ = _ProxyLookup(operator.invert) + __complex__ = _ProxyLookup(complex) + __int__ = _ProxyLookup(int) + __float__ = _ProxyLookup(float) + __index__ = _ProxyLookup(operator.index) + __round__ = _ProxyLookup(round) + __trunc__ = _ProxyLookup(math.trunc) + __floor__ = _ProxyLookup(math.floor) + __ceil__ = _ProxyLookup(math.ceil) + __enter__ = _ProxyLookup() + __exit__ = _ProxyLookup() + __await__ = _ProxyLookup() + __aiter__ = _ProxyLookup() + __anext__ = _ProxyLookup() + __aenter__ = _ProxyLookup() + __aexit__ = _ProxyLookup() + __copy__ = _ProxyLookup(copy.copy) + __deepcopy__ = _ProxyLookup(copy.deepcopy) + # __getnewargs_ex__ (pickle through proxy not supported) + # __getnewargs__ (pickle) + # __getstate__ (pickle) + # __setstate__ (pickle) + # __reduce__ (pickle) + # __reduce_ex__ (pickle) diff --git a/gestao_raul/Lib/site-packages/werkzeug/middleware/__init__.py b/gestao_raul/Lib/site-packages/werkzeug/middleware/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/gestao_raul/Lib/site-packages/werkzeug/middleware/__pycache__/__init__.cpython-310.pyc b/gestao_raul/Lib/site-packages/werkzeug/middleware/__pycache__/__init__.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..ed3c760c755eb5bb23ff9a4813e0fb8733faa491 GIT binary patch literal 185 zcmd1j<>g`k0yF>B=^*+sh(HF6K#l_t7qb9~6oz01O-8?!3`HPe1o11z*(xTqIJKxa zraU#LBtOO_Ke;qFHLs*NCMd|s)j1|TwYVfPKfWljG$+OR5hw%H zQT}7WRvo zaZ-bGMX%2vKuF~h@sIYFEB-`D`IJ8WCI1-TP; zT<5+c)g%iywn$}`dguTE8B-~(J4)voOEBgt0c>$6jslWbN@ z*)cznj0a;Le>)qlqgW-SVRbYGB8KZs6;m=9U=Mwc zRdK2jkb;+ZVQ~;mnCt10+{2?IWVgq&_%!{K)$EaKt7F z!nJPb<6@c$HkQmP5NuK??3x9XB~0r?z{;(=yi9H(XBN6ezFq(Xhw2QJC7b2~uGfe9 zw7^A%@PKG=xkNL!Xb}msOBeo77&fdrgXAeb$*DB0u?{ZMp@+jDV0fUHeXv5j$CuQ4 z(*_kS@aVH|?EyM;n?kxh#Ni}@g8u3P`9@3hUM`;Xf?y|Sr7FZUCa(7_3$o*@J_Fy*j&!rSe3k{eaven$^)EI4FHOqZw1YK>Qk2&Bk1V%HV2R z)O9vs06Ms&+#VTHwbiodd$!Vm43T|EsAt5iA@Sx<-I7c!43eBoEW{Uuc3Bz%JuAO$SVj#VY+9Hi z59$yu4A})eWRH2NYyV0mC&^Qk@{0toOM77&1yHNmt$g^Z2%@T0D?7g_lGuE%jp|$X zSJ3`~&Dm~|%c`ZMnX0^M&{yoQpiQ!e|1G)>Z$Oy4b0>1{8WI6Mbqc*T`{=co^;io7beRwKUQykta;wf=VAMWpeyuEdZ#%y>IDLzdP zA0^{Mofvti#5F-J8)wv4-^l6F-Q^W{caZ^f@N!nQqbSJ}6GiXAnx-tYnj7vn|GKxh z0o9UugT>xzP1bBzO&q8;;DR!dx+oGw892XY20KP7K2GK5;~DPUFJ8zJMNQUhmi`Z6 z?mo9a8h-T7eBqrngg^IB9QD@RpF3Z=kY1tp+<(Mosl?pO^z^fs*x6c^;R`P$rn1y)7#eVoJF#Tz^3-gi`dt=+J*w|Vd& z+S&cjlgc@F@BWIibHXd5t^J+7gJ^g2@pi9K`A5=N1VIRm3N#kMUR$kWv${sZbqrNY z+xs}|5Py+z+%g1y*g+FB5irZb8wJ``lJhjG_eMF-q$NQ;yhM5cSByp$MIYizzmB2n zH{7-txPj}rSG^6leSWpw^}22wGk*(XtwVKjzSpWrM_|}UREH$`xu>qw>oyER+Qwqx zt=C_+>*N&q8bwtQMH#NFl;my{eLdyr#mZU~i6V|7b(QqIMg#GCWuW*}3qv3On(Vio zhU;~^ziqVbeD8{S1G8jgGDY#hh@wKPT4q+Fo-5Z>>j$6hZAV)Vwzodn*}WfbL|Bsg sSc<`^K1yoWZKO6FvbN%Zb*N7B`*j!}66Ts*ZaCeWZLfvI(%*IecUgNrH2?qr literal 0 HcmV?d00001 diff --git a/gestao_raul/Lib/site-packages/werkzeug/middleware/__pycache__/http_proxy.cpython-310.pyc b/gestao_raul/Lib/site-packages/werkzeug/middleware/__pycache__/http_proxy.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..b48e4e441490ac135ede924c82175a6824dc2edd GIT binary patch literal 6927 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 H6UP4n%)UVD literal 0 HcmV?d00001 diff --git a/gestao_raul/Lib/site-packages/werkzeug/middleware/__pycache__/lint.cpython-310.pyc b/gestao_raul/Lib/site-packages/werkzeug/middleware/__pycache__/lint.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..8a786f0f88b6bff701735a991eabf3f5032ffc12 GIT binary patch literal 13078 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 literal 0 HcmV?d00001 diff --git a/gestao_raul/Lib/site-packages/werkzeug/middleware/__pycache__/profiler.cpython-310.pyc b/gestao_raul/Lib/site-packages/werkzeug/middleware/__pycache__/profiler.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..51a3fa5529fd1b443b615da5025abc7ee57bcddd GIT binary patch literal 5626 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 literal 0 HcmV?d00001 diff --git a/gestao_raul/Lib/site-packages/werkzeug/middleware/dispatcher.py b/gestao_raul/Lib/site-packages/werkzeug/middleware/dispatcher.py new file mode 100644 index 0000000..e11bacc --- /dev/null +++ b/gestao_raul/Lib/site-packages/werkzeug/middleware/dispatcher.py @@ -0,0 +1,81 @@ +""" +Application Dispatcher +====================== + +This middleware creates a single WSGI application that dispatches to +multiple other WSGI applications mounted at different URL paths. + +A common example is writing a Single Page Application, where you have a +backend API and a frontend written in JavaScript that does the routing +in the browser rather than requesting different pages from the server. +The frontend is a single HTML and JS file that should be served for any +path besides "/api". + +This example dispatches to an API app under "/api", an admin app +under "/admin", and an app that serves frontend files for all other +requests:: + + app = DispatcherMiddleware(serve_frontend, { + '/api': api_app, + '/admin': admin_app, + }) + +In production, you might instead handle this at the HTTP server level, +serving files or proxying to application servers based on location. The +API and admin apps would each be deployed with a separate WSGI server, +and the static files would be served directly by the HTTP server. + +.. autoclass:: DispatcherMiddleware + +:copyright: 2007 Pallets +:license: BSD-3-Clause +""" + +from __future__ import annotations + +import typing as t + +if t.TYPE_CHECKING: + from _typeshed.wsgi import StartResponse + from _typeshed.wsgi import WSGIApplication + from _typeshed.wsgi import WSGIEnvironment + + +class DispatcherMiddleware: + """Combine multiple applications as a single WSGI application. + Requests are dispatched to an application based on the path it is + mounted under. + + :param app: The WSGI application to dispatch to if the request + doesn't match a mounted path. + :param mounts: Maps path prefixes to applications for dispatching. + """ + + def __init__( + self, + app: WSGIApplication, + mounts: dict[str, WSGIApplication] | None = None, + ) -> None: + self.app = app + self.mounts = mounts or {} + + def __call__( + self, environ: WSGIEnvironment, start_response: StartResponse + ) -> t.Iterable[bytes]: + script = environ.get("PATH_INFO", "") + path_info = "" + + while "/" in script: + if script in self.mounts: + app = self.mounts[script] + break + + script, last_item = script.rsplit("/", 1) + path_info = f"/{last_item}{path_info}" + else: + app = self.mounts.get(script, self.app) + + original_script_name = environ.get("SCRIPT_NAME", "") + environ["SCRIPT_NAME"] = original_script_name + script + environ["PATH_INFO"] = path_info + return app(environ, start_response) diff --git a/gestao_raul/Lib/site-packages/werkzeug/middleware/http_proxy.py b/gestao_raul/Lib/site-packages/werkzeug/middleware/http_proxy.py new file mode 100644 index 0000000..5e23915 --- /dev/null +++ b/gestao_raul/Lib/site-packages/werkzeug/middleware/http_proxy.py @@ -0,0 +1,236 @@ +""" +Basic HTTP Proxy +================ + +.. autoclass:: ProxyMiddleware + +:copyright: 2007 Pallets +:license: BSD-3-Clause +""" + +from __future__ import annotations + +import typing as t +from http import client +from urllib.parse import quote +from urllib.parse import urlsplit + +from ..datastructures import EnvironHeaders +from ..http import is_hop_by_hop_header +from ..wsgi import get_input_stream + +if t.TYPE_CHECKING: + from _typeshed.wsgi import StartResponse + from _typeshed.wsgi import WSGIApplication + from _typeshed.wsgi import WSGIEnvironment + + +class ProxyMiddleware: + """Proxy requests under a path to an external server, routing other + requests to the app. + + This middleware can only proxy HTTP requests, as HTTP is the only + protocol handled by the WSGI server. Other protocols, such as + WebSocket requests, cannot be proxied at this layer. This should + only be used for development, in production a real proxy server + should be used. + + The middleware takes a dict mapping a path prefix to a dict + describing the host to be proxied to:: + + app = ProxyMiddleware(app, { + "/static/": { + "target": "http://127.0.0.1:5001/", + } + }) + + Each host has the following options: + + ``target``: + The target URL to dispatch to. This is required. + ``remove_prefix``: + Whether to remove the prefix from the URL before dispatching it + to the target. The default is ``False``. + ``host``: + ``""`` (default): + The host header is automatically rewritten to the URL of the + target. + ``None``: + The host header is unmodified from the client request. + Any other value: + The host header is overwritten with the value. + ``headers``: + A dictionary of headers to be sent with the request to the + target. The default is ``{}``. + ``ssl_context``: + A :class:`ssl.SSLContext` defining how to verify requests if the + target is HTTPS. The default is ``None``. + + In the example above, everything under ``"/static/"`` is proxied to + the server on port 5001. The host header is rewritten to the target, + and the ``"/static/"`` prefix is removed from the URLs. + + :param app: The WSGI application to wrap. + :param targets: Proxy target configurations. See description above. + :param chunk_size: Size of chunks to read from input stream and + write to target. + :param timeout: Seconds before an operation to a target fails. + + .. versionadded:: 0.14 + """ + + def __init__( + self, + app: WSGIApplication, + targets: t.Mapping[str, dict[str, t.Any]], + chunk_size: int = 2 << 13, + timeout: int = 10, + ) -> None: + def _set_defaults(opts: dict[str, t.Any]) -> dict[str, t.Any]: + opts.setdefault("remove_prefix", False) + opts.setdefault("host", "") + opts.setdefault("headers", {}) + opts.setdefault("ssl_context", None) + return opts + + self.app = app + self.targets = { + f"/{k.strip('/')}/": _set_defaults(v) for k, v in targets.items() + } + self.chunk_size = chunk_size + self.timeout = timeout + + def proxy_to( + self, opts: dict[str, t.Any], path: str, prefix: str + ) -> WSGIApplication: + target = urlsplit(opts["target"]) + # socket can handle unicode host, but header must be ascii + host = target.hostname.encode("idna").decode("ascii") + + def application( + environ: WSGIEnvironment, start_response: StartResponse + ) -> t.Iterable[bytes]: + headers = list(EnvironHeaders(environ).items()) + headers[:] = [ + (k, v) + for k, v in headers + if not is_hop_by_hop_header(k) + and k.lower() not in ("content-length", "host") + ] + headers.append(("Connection", "close")) + + if opts["host"] == "": + headers.append(("Host", host)) + elif opts["host"] is None: + headers.append(("Host", environ["HTTP_HOST"])) + else: + headers.append(("Host", opts["host"])) + + headers.extend(opts["headers"].items()) + remote_path = path + + if opts["remove_prefix"]: + remote_path = remote_path[len(prefix) :].lstrip("/") + remote_path = f"{target.path.rstrip('/')}/{remote_path}" + + content_length = environ.get("CONTENT_LENGTH") + chunked = False + + if content_length not in ("", None): + headers.append(("Content-Length", content_length)) # type: ignore + elif content_length is not None: + headers.append(("Transfer-Encoding", "chunked")) + chunked = True + + try: + if target.scheme == "http": + con = client.HTTPConnection( + host, target.port or 80, timeout=self.timeout + ) + elif target.scheme == "https": + con = client.HTTPSConnection( + host, + target.port or 443, + timeout=self.timeout, + context=opts["ssl_context"], + ) + else: + raise RuntimeError( + "Target scheme must be 'http' or 'https', got" + f" {target.scheme!r}." + ) + + con.connect() + # safe = https://url.spec.whatwg.org/#url-path-segment-string + # as well as percent for things that are already quoted + remote_url = quote(remote_path, safe="!$&'()*+,/:;=@%") + querystring = environ["QUERY_STRING"] + + if querystring: + remote_url = f"{remote_url}?{querystring}" + + con.putrequest(environ["REQUEST_METHOD"], remote_url, skip_host=True) + + for k, v in headers: + if k.lower() == "connection": + v = "close" + + con.putheader(k, v) + + con.endheaders() + stream = get_input_stream(environ) + + while True: + data = stream.read(self.chunk_size) + + if not data: + break + + if chunked: + con.send(b"%x\r\n%s\r\n" % (len(data), data)) + else: + con.send(data) + + resp = con.getresponse() + except OSError: + from ..exceptions import BadGateway + + return BadGateway()(environ, start_response) + + start_response( + f"{resp.status} {resp.reason}", + [ + (k.title(), v) + for k, v in resp.getheaders() + if not is_hop_by_hop_header(k) + ], + ) + + def read() -> t.Iterator[bytes]: + while True: + try: + data = resp.read(self.chunk_size) + except OSError: + break + + if not data: + break + + yield data + + return read() + + return application + + def __call__( + self, environ: WSGIEnvironment, start_response: StartResponse + ) -> t.Iterable[bytes]: + path = environ["PATH_INFO"] + app = self.app + + for prefix, opts in self.targets.items(): + if path.startswith(prefix): + app = self.proxy_to(opts, path, prefix) + break + + return app(environ, start_response) diff --git a/gestao_raul/Lib/site-packages/werkzeug/middleware/lint.py b/gestao_raul/Lib/site-packages/werkzeug/middleware/lint.py new file mode 100644 index 0000000..3714271 --- /dev/null +++ b/gestao_raul/Lib/site-packages/werkzeug/middleware/lint.py @@ -0,0 +1,439 @@ +""" +WSGI Protocol Linter +==================== + +This module provides a middleware that performs sanity checks on the +behavior of the WSGI server and application. It checks that the +:pep:`3333` WSGI spec is properly implemented. It also warns on some +common HTTP errors such as non-empty responses for 304 status codes. + +.. autoclass:: LintMiddleware + +:copyright: 2007 Pallets +:license: BSD-3-Clause +""" + +from __future__ import annotations + +import typing as t +from types import TracebackType +from urllib.parse import urlparse +from warnings import warn + +from ..datastructures import Headers +from ..http import is_entity_header +from ..wsgi import FileWrapper + +if t.TYPE_CHECKING: + from _typeshed.wsgi import StartResponse + from _typeshed.wsgi import WSGIApplication + from _typeshed.wsgi import WSGIEnvironment + + +class WSGIWarning(Warning): + """Warning class for WSGI warnings.""" + + +class HTTPWarning(Warning): + """Warning class for HTTP warnings.""" + + +def check_type(context: str, obj: object, need: type = str) -> None: + if type(obj) is not need: + warn( + f"{context!r} requires {need.__name__!r}, got {type(obj).__name__!r}.", + WSGIWarning, + stacklevel=3, + ) + + +class InputStream: + def __init__(self, stream: t.IO[bytes]) -> None: + self._stream = stream + + def read(self, *args: t.Any) -> bytes: + if len(args) == 0: + warn( + "WSGI does not guarantee an EOF marker on the input stream, thus making" + " calls to 'wsgi.input.read()' unsafe. Conforming servers may never" + " return from this call.", + WSGIWarning, + stacklevel=2, + ) + elif len(args) != 1: + warn( + "Too many parameters passed to 'wsgi.input.read()'.", + WSGIWarning, + stacklevel=2, + ) + return self._stream.read(*args) + + def readline(self, *args: t.Any) -> bytes: + if len(args) == 0: + warn( + "Calls to 'wsgi.input.readline()' without arguments are unsafe. Use" + " 'wsgi.input.read()' instead.", + WSGIWarning, + stacklevel=2, + ) + elif len(args) == 1: + warn( + "'wsgi.input.readline()' was called with a size hint. WSGI does not" + " support this, although it's available on all major servers.", + WSGIWarning, + stacklevel=2, + ) + else: + raise TypeError("Too many arguments passed to 'wsgi.input.readline()'.") + return self._stream.readline(*args) + + def __iter__(self) -> t.Iterator[bytes]: + try: + return iter(self._stream) + except TypeError: + warn("'wsgi.input' is not iterable.", WSGIWarning, stacklevel=2) + return iter(()) + + def close(self) -> None: + warn("The application closed the input stream!", WSGIWarning, stacklevel=2) + self._stream.close() + + +class ErrorStream: + def __init__(self, stream: t.IO[str]) -> None: + self._stream = stream + + def write(self, s: str) -> None: + check_type("wsgi.error.write()", s, str) + self._stream.write(s) + + def flush(self) -> None: + self._stream.flush() + + def writelines(self, seq: t.Iterable[str]) -> None: + for line in seq: + self.write(line) + + def close(self) -> None: + warn("The application closed the error stream!", WSGIWarning, stacklevel=2) + self._stream.close() + + +class GuardedWrite: + def __init__(self, write: t.Callable[[bytes], object], chunks: list[int]) -> None: + self._write = write + self._chunks = chunks + + def __call__(self, s: bytes) -> None: + check_type("write()", s, bytes) + self._write(s) + self._chunks.append(len(s)) + + +class GuardedIterator: + def __init__( + self, + iterator: t.Iterable[bytes], + headers_set: tuple[int, Headers], + chunks: list[int], + ) -> None: + self._iterator = iterator + self._next = iter(iterator).__next__ + self.closed = False + self.headers_set = headers_set + self.chunks = chunks + + def __iter__(self) -> GuardedIterator: + return self + + def __next__(self) -> bytes: + if self.closed: + warn("Iterated over closed 'app_iter'.", WSGIWarning, stacklevel=2) + + rv = self._next() + + if not self.headers_set: + warn( + "The application returned before it started the response.", + WSGIWarning, + stacklevel=2, + ) + + check_type("application iterator items", rv, bytes) + self.chunks.append(len(rv)) + return rv + + def close(self) -> None: + self.closed = True + + if hasattr(self._iterator, "close"): + self._iterator.close() + + if self.headers_set: + status_code, headers = self.headers_set + bytes_sent = sum(self.chunks) + content_length = headers.get("content-length", type=int) + + if status_code == 304: + for key, _value in headers: + key = key.lower() + if key not in ("expires", "content-location") and is_entity_header( + key + ): + warn( + f"Entity header {key!r} found in 304 response.", + HTTPWarning, + stacklevel=2, + ) + if bytes_sent: + warn( + "304 responses must not have a body.", + HTTPWarning, + stacklevel=2, + ) + elif 100 <= status_code < 200 or status_code == 204: + if content_length != 0: + warn( + f"{status_code} responses must have an empty content length.", + HTTPWarning, + stacklevel=2, + ) + if bytes_sent: + warn( + f"{status_code} responses must not have a body.", + HTTPWarning, + stacklevel=2, + ) + elif content_length is not None and content_length != bytes_sent: + warn( + "Content-Length and the number of bytes sent to the" + " client do not match.", + WSGIWarning, + stacklevel=2, + ) + + def __del__(self) -> None: + if not self.closed: + try: + warn( + "Iterator was garbage collected before it was closed.", + WSGIWarning, + stacklevel=2, + ) + except Exception: + pass + + +class LintMiddleware: + """Warns about common errors in the WSGI and HTTP behavior of the + server and wrapped application. Some of the issues it checks are: + + - invalid status codes + - non-bytes sent to the WSGI server + - strings returned from the WSGI application + - non-empty conditional responses + - unquoted etags + - relative URLs in the Location header + - unsafe calls to wsgi.input + - unclosed iterators + + Error information is emitted using the :mod:`warnings` module. + + :param app: The WSGI application to wrap. + + .. code-block:: python + + from werkzeug.middleware.lint import LintMiddleware + app = LintMiddleware(app) + """ + + def __init__(self, app: WSGIApplication) -> None: + self.app = app + + def check_environ(self, environ: WSGIEnvironment) -> None: + if type(environ) is not dict: # noqa: E721 + warn( + "WSGI environment is not a standard Python dict.", + WSGIWarning, + stacklevel=4, + ) + for key in ( + "REQUEST_METHOD", + "SERVER_NAME", + "SERVER_PORT", + "wsgi.version", + "wsgi.input", + "wsgi.errors", + "wsgi.multithread", + "wsgi.multiprocess", + "wsgi.run_once", + ): + if key not in environ: + warn( + f"Required environment key {key!r} not found", + WSGIWarning, + stacklevel=3, + ) + if environ["wsgi.version"] != (1, 0): + warn("Environ is not a WSGI 1.0 environ.", WSGIWarning, stacklevel=3) + + script_name = environ.get("SCRIPT_NAME", "") + path_info = environ.get("PATH_INFO", "") + + if script_name and script_name[0] != "/": + warn( + f"'SCRIPT_NAME' does not start with a slash: {script_name!r}", + WSGIWarning, + stacklevel=3, + ) + + if path_info and path_info[0] != "/": + warn( + f"'PATH_INFO' does not start with a slash: {path_info!r}", + WSGIWarning, + stacklevel=3, + ) + + def check_start_response( + self, + status: str, + headers: list[tuple[str, str]], + exc_info: None | (tuple[type[BaseException], BaseException, TracebackType]), + ) -> tuple[int, Headers]: + check_type("status", status, str) + status_code_str = status.split(None, 1)[0] + + if len(status_code_str) != 3 or not status_code_str.isdecimal(): + warn("Status code must be three digits.", WSGIWarning, stacklevel=3) + + if len(status) < 4 or status[3] != " ": + warn( + f"Invalid value for status {status!r}. Valid status strings are three" + " digits, a space and a status explanation.", + WSGIWarning, + stacklevel=3, + ) + + status_code = int(status_code_str) + + if status_code < 100: + warn("Status code < 100 detected.", WSGIWarning, stacklevel=3) + + if type(headers) is not list: # noqa: E721 + warn("Header list is not a list.", WSGIWarning, stacklevel=3) + + for item in headers: + if type(item) is not tuple or len(item) != 2: + warn("Header items must be 2-item tuples.", WSGIWarning, stacklevel=3) + name, value = item + if type(name) is not str or type(value) is not str: # noqa: E721 + warn( + "Header keys and values must be strings.", WSGIWarning, stacklevel=3 + ) + if name.lower() == "status": + warn( + "The status header is not supported due to" + " conflicts with the CGI spec.", + WSGIWarning, + stacklevel=3, + ) + + if exc_info is not None and not isinstance(exc_info, tuple): + warn("Invalid value for exc_info.", WSGIWarning, stacklevel=3) + + headers_obj = Headers(headers) + self.check_headers(headers_obj) + + return status_code, headers_obj + + def check_headers(self, headers: Headers) -> None: + etag = headers.get("etag") + + if etag is not None: + if etag.startswith(("W/", "w/")): + if etag.startswith("w/"): + warn( + "Weak etag indicator should be upper case.", + HTTPWarning, + stacklevel=4, + ) + + etag = etag[2:] + + if not (etag[:1] == etag[-1:] == '"'): + warn("Unquoted etag emitted.", HTTPWarning, stacklevel=4) + + location = headers.get("location") + + if location is not None: + if not urlparse(location).netloc: + warn( + "Absolute URLs required for location header.", + HTTPWarning, + stacklevel=4, + ) + + def check_iterator(self, app_iter: t.Iterable[bytes]) -> None: + if isinstance(app_iter, str): + warn( + "The application returned a string. The response will send one" + " character at a time to the client, which will kill performance." + " Return a list or iterable instead.", + WSGIWarning, + stacklevel=3, + ) + + def __call__(self, *args: t.Any, **kwargs: t.Any) -> t.Iterable[bytes]: + if len(args) != 2: + warn("A WSGI app takes two arguments.", WSGIWarning, stacklevel=2) + + if kwargs: + warn( + "A WSGI app does not take keyword arguments.", WSGIWarning, stacklevel=2 + ) + + environ: WSGIEnvironment = args[0] + start_response: StartResponse = args[1] + + self.check_environ(environ) + environ["wsgi.input"] = InputStream(environ["wsgi.input"]) + environ["wsgi.errors"] = ErrorStream(environ["wsgi.errors"]) + + # Hook our own file wrapper in so that applications will always + # iterate to the end and we can check the content length. + environ["wsgi.file_wrapper"] = FileWrapper + + headers_set: list[t.Any] = [] + chunks: list[int] = [] + + def checking_start_response( + *args: t.Any, **kwargs: t.Any + ) -> t.Callable[[bytes], None]: + if len(args) not in {2, 3}: + warn( + f"Invalid number of arguments: {len(args)}, expected 2 or 3.", + WSGIWarning, + stacklevel=2, + ) + + if kwargs: + warn( + "'start_response' does not take keyword arguments.", + WSGIWarning, + stacklevel=2, + ) + + status: str = args[0] + headers: list[tuple[str, str]] = args[1] + exc_info: ( + None | (tuple[type[BaseException], BaseException, TracebackType]) + ) = args[2] if len(args) == 3 else None + + headers_set[:] = self.check_start_response(status, headers, exc_info) + return GuardedWrite(start_response(status, headers, exc_info), chunks) + + app_iter = self.app(environ, t.cast("StartResponse", checking_start_response)) + self.check_iterator(app_iter) + return GuardedIterator( + app_iter, t.cast(tuple[int, Headers], headers_set), chunks + ) diff --git a/gestao_raul/Lib/site-packages/werkzeug/middleware/profiler.py b/gestao_raul/Lib/site-packages/werkzeug/middleware/profiler.py new file mode 100644 index 0000000..112b877 --- /dev/null +++ b/gestao_raul/Lib/site-packages/werkzeug/middleware/profiler.py @@ -0,0 +1,155 @@ +""" +Application Profiler +==================== + +This module provides a middleware that profiles each request with the +:mod:`cProfile` module. This can help identify bottlenecks in your code +that may be slowing down your application. + +.. autoclass:: ProfilerMiddleware + +:copyright: 2007 Pallets +:license: BSD-3-Clause +""" + +from __future__ import annotations + +import os.path +import sys +import time +import typing as t +from pstats import Stats + +try: + from cProfile import Profile +except ImportError: + from profile import Profile # type: ignore + +if t.TYPE_CHECKING: + from _typeshed.wsgi import StartResponse + from _typeshed.wsgi import WSGIApplication + from _typeshed.wsgi import WSGIEnvironment + + +class ProfilerMiddleware: + """Wrap a WSGI application and profile the execution of each + request. Responses are buffered so that timings are more exact. + + If ``stream`` is given, :class:`pstats.Stats` are written to it + after each request. If ``profile_dir`` is given, :mod:`cProfile` + data files are saved to that directory, one file per request. + + The filename can be customized by passing ``filename_format``. If + it is a string, it will be formatted using :meth:`str.format` with + the following fields available: + + - ``{method}`` - The request method; GET, POST, etc. + - ``{path}`` - The request path or 'root' should one not exist. + - ``{elapsed}`` - The elapsed time of the request in milliseconds. + - ``{time}`` - The time of the request. + + If it is a callable, it will be called with the WSGI ``environ`` and + be expected to return a filename string. The ``environ`` dictionary + will also have the ``"werkzeug.profiler"`` key populated with a + dictionary containing the following fields (more may be added in the + future): + - ``{elapsed}`` - The elapsed time of the request in milliseconds. + - ``{time}`` - The time of the request. + + :param app: The WSGI application to wrap. + :param stream: Write stats to this stream. Disable with ``None``. + :param sort_by: A tuple of columns to sort stats by. See + :meth:`pstats.Stats.sort_stats`. + :param restrictions: A tuple of restrictions to filter stats by. See + :meth:`pstats.Stats.print_stats`. + :param profile_dir: Save profile data files to this directory. + :param filename_format: Format string for profile data file names, + or a callable returning a name. See explanation above. + + .. code-block:: python + + from werkzeug.middleware.profiler import ProfilerMiddleware + app = ProfilerMiddleware(app) + + .. versionchanged:: 3.0 + Added the ``"werkzeug.profiler"`` key to the ``filename_format(environ)`` + parameter with the ``elapsed`` and ``time`` fields. + + .. versionchanged:: 0.15 + Stats are written even if ``profile_dir`` is given, and can be + disable by passing ``stream=None``. + + .. versionadded:: 0.15 + Added ``filename_format``. + + .. versionadded:: 0.9 + Added ``restrictions`` and ``profile_dir``. + """ + + def __init__( + self, + app: WSGIApplication, + stream: t.IO[str] | None = sys.stdout, + sort_by: t.Iterable[str] = ("time", "calls"), + restrictions: t.Iterable[str | int | float] = (), + profile_dir: str | None = None, + filename_format: str = "{method}.{path}.{elapsed:.0f}ms.{time:.0f}.prof", + ) -> None: + self._app = app + self._stream = stream + self._sort_by = sort_by + self._restrictions = restrictions + self._profile_dir = profile_dir + self._filename_format = filename_format + + def __call__( + self, environ: WSGIEnvironment, start_response: StartResponse + ) -> t.Iterable[bytes]: + response_body: list[bytes] = [] + + def catching_start_response(status, headers, exc_info=None): # type: ignore + start_response(status, headers, exc_info) + return response_body.append + + def runapp() -> None: + app_iter = self._app( + environ, t.cast("StartResponse", catching_start_response) + ) + response_body.extend(app_iter) + + if hasattr(app_iter, "close"): + app_iter.close() + + profile = Profile() + start = time.time() + profile.runcall(runapp) + body = b"".join(response_body) + elapsed = time.time() - start + + if self._profile_dir is not None: + if callable(self._filename_format): + environ["werkzeug.profiler"] = { + "elapsed": elapsed * 1000.0, + "time": time.time(), + } + filename = self._filename_format(environ) + else: + filename = self._filename_format.format( + method=environ["REQUEST_METHOD"], + path=environ["PATH_INFO"].strip("/").replace("/", ".") or "root", + elapsed=elapsed * 1000.0, + time=time.time(), + ) + filename = os.path.join(self._profile_dir, filename) + profile.dump_stats(filename) + + if self._stream is not None: + stats = Stats(profile, stream=self._stream) + stats.sort_stats(*self._sort_by) + print("-" * 80, file=self._stream) + path_info = environ.get("PATH_INFO", "") + print(f"PATH: {path_info!r}", file=self._stream) + stats.print_stats(*self._restrictions) + print(f"{'-' * 80}\n", file=self._stream) + + return [body] diff --git a/gestao_raul/Lib/site-packages/werkzeug/middleware/proxy_fix.py b/gestao_raul/Lib/site-packages/werkzeug/middleware/proxy_fix.py new file mode 100644 index 0000000..cbf4e0b --- /dev/null +++ b/gestao_raul/Lib/site-packages/werkzeug/middleware/proxy_fix.py @@ -0,0 +1,183 @@ +""" +X-Forwarded-For Proxy Fix +========================= + +This module provides a middleware that adjusts the WSGI environ based on +``X-Forwarded-`` headers that proxies in front of an application may +set. + +When an application is running behind a proxy server, WSGI may see the +request as coming from that server rather than the real client. Proxies +set various headers to track where the request actually came from. + +This middleware should only be used if the application is actually +behind such a proxy, and should be configured with the number of proxies +that are chained in front of it. Not all proxies set all the headers. +Since incoming headers can be faked, you must set how many proxies are +setting each header so the middleware knows what to trust. + +.. autoclass:: ProxyFix + +:copyright: 2007 Pallets +:license: BSD-3-Clause +""" + +from __future__ import annotations + +import typing as t + +from ..http import parse_list_header + +if t.TYPE_CHECKING: + from _typeshed.wsgi import StartResponse + from _typeshed.wsgi import WSGIApplication + from _typeshed.wsgi import WSGIEnvironment + + +class ProxyFix: + """Adjust the WSGI environ based on ``X-Forwarded-`` that proxies in + front of the application may set. + + - ``X-Forwarded-For`` sets ``REMOTE_ADDR``. + - ``X-Forwarded-Proto`` sets ``wsgi.url_scheme``. + - ``X-Forwarded-Host`` sets ``HTTP_HOST``, ``SERVER_NAME``, and + ``SERVER_PORT``. + - ``X-Forwarded-Port`` sets ``HTTP_HOST`` and ``SERVER_PORT``. + - ``X-Forwarded-Prefix`` sets ``SCRIPT_NAME``. + + You must tell the middleware how many proxies set each header so it + knows what values to trust. It is a security issue to trust values + that came from the client rather than a proxy. + + The original values of the headers are stored in the WSGI + environ as ``werkzeug.proxy_fix.orig``, a dict. + + :param app: The WSGI application to wrap. + :param x_for: Number of values to trust for ``X-Forwarded-For``. + :param x_proto: Number of values to trust for ``X-Forwarded-Proto``. + :param x_host: Number of values to trust for ``X-Forwarded-Host``. + :param x_port: Number of values to trust for ``X-Forwarded-Port``. + :param x_prefix: Number of values to trust for + ``X-Forwarded-Prefix``. + + .. code-block:: python + + from werkzeug.middleware.proxy_fix import ProxyFix + # App is behind one proxy that sets the -For and -Host headers. + app = ProxyFix(app, x_for=1, x_host=1) + + .. versionchanged:: 1.0 + The ``num_proxies`` argument and attribute; the ``get_remote_addr`` method; and + the environ keys ``orig_remote_addr``, ``orig_wsgi_url_scheme``, and + ``orig_http_host`` were removed. + + .. versionchanged:: 0.15 + All headers support multiple values. Each header is configured with a separate + number of trusted proxies. + + .. versionchanged:: 0.15 + Original WSGI environ values are stored in the ``werkzeug.proxy_fix.orig`` dict. + + .. versionchanged:: 0.15 + Support ``X-Forwarded-Port`` and ``X-Forwarded-Prefix``. + + .. versionchanged:: 0.15 + ``X-Forwarded-Host`` and ``X-Forwarded-Port`` modify + ``SERVER_NAME`` and ``SERVER_PORT``. + """ + + def __init__( + self, + app: WSGIApplication, + x_for: int = 1, + x_proto: int = 1, + x_host: int = 0, + x_port: int = 0, + x_prefix: int = 0, + ) -> None: + self.app = app + self.x_for = x_for + self.x_proto = x_proto + self.x_host = x_host + self.x_port = x_port + self.x_prefix = x_prefix + + def _get_real_value(self, trusted: int, value: str | None) -> str | None: + """Get the real value from a list header based on the configured + number of trusted proxies. + + :param trusted: Number of values to trust in the header. + :param value: Comma separated list header value to parse. + :return: The real value, or ``None`` if there are fewer values + than the number of trusted proxies. + + .. versionchanged:: 1.0 + Renamed from ``_get_trusted_comma``. + + .. versionadded:: 0.15 + """ + if not (trusted and value): + return None + values = parse_list_header(value) + if len(values) >= trusted: + return values[-trusted] + return None + + def __call__( + self, environ: WSGIEnvironment, start_response: StartResponse + ) -> t.Iterable[bytes]: + """Modify the WSGI environ based on the various ``Forwarded`` + headers before calling the wrapped application. Store the + original environ values in ``werkzeug.proxy_fix.orig_{key}``. + """ + environ_get = environ.get + orig_remote_addr = environ_get("REMOTE_ADDR") + orig_wsgi_url_scheme = environ_get("wsgi.url_scheme") + orig_http_host = environ_get("HTTP_HOST") + environ.update( + { + "werkzeug.proxy_fix.orig": { + "REMOTE_ADDR": orig_remote_addr, + "wsgi.url_scheme": orig_wsgi_url_scheme, + "HTTP_HOST": orig_http_host, + "SERVER_NAME": environ_get("SERVER_NAME"), + "SERVER_PORT": environ_get("SERVER_PORT"), + "SCRIPT_NAME": environ_get("SCRIPT_NAME"), + } + } + ) + + x_for = self._get_real_value(self.x_for, environ_get("HTTP_X_FORWARDED_FOR")) + if x_for: + environ["REMOTE_ADDR"] = x_for + + x_proto = self._get_real_value( + self.x_proto, environ_get("HTTP_X_FORWARDED_PROTO") + ) + if x_proto: + environ["wsgi.url_scheme"] = x_proto + + x_host = self._get_real_value(self.x_host, environ_get("HTTP_X_FORWARDED_HOST")) + if x_host: + environ["HTTP_HOST"] = environ["SERVER_NAME"] = x_host + # "]" to check for IPv6 address without port + if ":" in x_host and not x_host.endswith("]"): + environ["SERVER_NAME"], environ["SERVER_PORT"] = x_host.rsplit(":", 1) + + x_port = self._get_real_value(self.x_port, environ_get("HTTP_X_FORWARDED_PORT")) + if x_port: + host = environ.get("HTTP_HOST") + if host: + # "]" to check for IPv6 address without port + if ":" in host and not host.endswith("]"): + host = host.rsplit(":", 1)[0] + environ["HTTP_HOST"] = f"{host}:{x_port}" + environ["SERVER_PORT"] = x_port + + x_prefix = self._get_real_value( + self.x_prefix, environ_get("HTTP_X_FORWARDED_PREFIX") + ) + if x_prefix: + environ["SCRIPT_NAME"] = x_prefix + + return self.app(environ, start_response) diff --git a/gestao_raul/Lib/site-packages/werkzeug/middleware/shared_data.py b/gestao_raul/Lib/site-packages/werkzeug/middleware/shared_data.py new file mode 100644 index 0000000..c7c06df --- /dev/null +++ b/gestao_raul/Lib/site-packages/werkzeug/middleware/shared_data.py @@ -0,0 +1,283 @@ +""" +Serve Shared Static Files +========================= + +.. autoclass:: SharedDataMiddleware + :members: is_allowed + +:copyright: 2007 Pallets +:license: BSD-3-Clause +""" + +from __future__ import annotations + +import collections.abc as cabc +import importlib.util +import mimetypes +import os +import posixpath +import typing as t +from datetime import datetime +from datetime import timezone +from io import BytesIO +from time import time +from zlib import adler32 + +from ..http import http_date +from ..http import is_resource_modified +from ..security import safe_join +from ..utils import get_content_type +from ..wsgi import get_path_info +from ..wsgi import wrap_file + +_TOpener = t.Callable[[], tuple[t.IO[bytes], datetime, int]] +_TLoader = t.Callable[[t.Optional[str]], tuple[t.Optional[str], t.Optional[_TOpener]]] + +if t.TYPE_CHECKING: + from _typeshed.wsgi import StartResponse + from _typeshed.wsgi import WSGIApplication + from _typeshed.wsgi import WSGIEnvironment + + +class SharedDataMiddleware: + """A WSGI middleware which provides static content for development + environments or simple server setups. Its usage is quite simple:: + + import os + from werkzeug.middleware.shared_data import SharedDataMiddleware + + app = SharedDataMiddleware(app, { + '/shared': os.path.join(os.path.dirname(__file__), 'shared') + }) + + The contents of the folder ``./shared`` will now be available on + ``http://example.com/shared/``. This is pretty useful during development + because a standalone media server is not required. Files can also be + mounted on the root folder and still continue to use the application because + the shared data middleware forwards all unhandled requests to the + application, even if the requests are below one of the shared folders. + + If `pkg_resources` is available you can also tell the middleware to serve + files from package data:: + + app = SharedDataMiddleware(app, { + '/static': ('myapplication', 'static') + }) + + This will then serve the ``static`` folder in the `myapplication` + Python package. + + The optional `disallow` parameter can be a list of :func:`~fnmatch.fnmatch` + rules for files that are not accessible from the web. If `cache` is set to + `False` no caching headers are sent. + + Currently the middleware does not support non-ASCII filenames. If the + encoding on the file system happens to match the encoding of the URI it may + work but this could also be by accident. We strongly suggest using ASCII + only file names for static files. + + The middleware will guess the mimetype using the Python `mimetype` + module. If it's unable to figure out the charset it will fall back + to `fallback_mimetype`. + + :param app: the application to wrap. If you don't want to wrap an + application you can pass it :exc:`NotFound`. + :param exports: a list or dict of exported files and folders. + :param disallow: a list of :func:`~fnmatch.fnmatch` rules. + :param cache: enable or disable caching headers. + :param cache_timeout: the cache timeout in seconds for the headers. + :param fallback_mimetype: The fallback mimetype for unknown files. + + .. versionchanged:: 1.0 + The default ``fallback_mimetype`` is + ``application/octet-stream``. If a filename looks like a text + mimetype, the ``utf-8`` charset is added to it. + + .. versionadded:: 0.6 + Added ``fallback_mimetype``. + + .. versionchanged:: 0.5 + Added ``cache_timeout``. + """ + + def __init__( + self, + app: WSGIApplication, + exports: ( + cabc.Mapping[str, str | tuple[str, str]] + | t.Iterable[tuple[str, str | tuple[str, str]]] + ), + disallow: None = None, + cache: bool = True, + cache_timeout: int = 60 * 60 * 12, + fallback_mimetype: str = "application/octet-stream", + ) -> None: + self.app = app + self.exports: list[tuple[str, _TLoader]] = [] + self.cache = cache + self.cache_timeout = cache_timeout + + if isinstance(exports, cabc.Mapping): + exports = exports.items() + + for key, value in exports: + if isinstance(value, tuple): + loader = self.get_package_loader(*value) + elif isinstance(value, str): + if os.path.isfile(value): + loader = self.get_file_loader(value) + else: + loader = self.get_directory_loader(value) + else: + raise TypeError(f"unknown def {value!r}") + + self.exports.append((key, loader)) + + if disallow is not None: + from fnmatch import fnmatch + + self.is_allowed = lambda x: not fnmatch(x, disallow) + + self.fallback_mimetype = fallback_mimetype + + def is_allowed(self, filename: str) -> bool: + """Subclasses can override this method to disallow the access to + certain files. However by providing `disallow` in the constructor + this method is overwritten. + """ + return True + + def _opener(self, filename: str) -> _TOpener: + return lambda: ( + open(filename, "rb"), + datetime.fromtimestamp(os.path.getmtime(filename), tz=timezone.utc), + int(os.path.getsize(filename)), + ) + + def get_file_loader(self, filename: str) -> _TLoader: + return lambda x: (os.path.basename(filename), self._opener(filename)) + + def get_package_loader(self, package: str, package_path: str) -> _TLoader: + load_time = datetime.now(timezone.utc) + spec = importlib.util.find_spec(package) + reader = spec.loader.get_resource_reader(package) # type: ignore[union-attr] + + def loader( + path: str | None, + ) -> tuple[str | None, _TOpener | None]: + if path is None: + return None, None + + path = safe_join(package_path, path) + + if path is None: + return None, None + + basename = posixpath.basename(path) + + try: + resource = reader.open_resource(path) + except OSError: + return None, None + + if isinstance(resource, BytesIO): + return ( + basename, + lambda: (resource, load_time, len(resource.getvalue())), + ) + + return ( + basename, + lambda: ( + resource, + datetime.fromtimestamp( + os.path.getmtime(resource.name), tz=timezone.utc + ), + os.path.getsize(resource.name), + ), + ) + + return loader + + def get_directory_loader(self, directory: str) -> _TLoader: + def loader( + path: str | None, + ) -> tuple[str | None, _TOpener | None]: + if path is not None: + path = safe_join(directory, path) + + if path is None: + return None, None + else: + path = directory + + if os.path.isfile(path): + return os.path.basename(path), self._opener(path) + + return None, None + + return loader + + def generate_etag(self, mtime: datetime, file_size: int, real_filename: str) -> str: + fn_str = os.fsencode(real_filename) + timestamp = mtime.timestamp() + checksum = adler32(fn_str) & 0xFFFFFFFF + return f"wzsdm-{timestamp}-{file_size}-{checksum}" + + def __call__( + self, environ: WSGIEnvironment, start_response: StartResponse + ) -> t.Iterable[bytes]: + path = get_path_info(environ) + file_loader = None + + for search_path, loader in self.exports: + if search_path == path: + real_filename, file_loader = loader(None) + + if file_loader is not None: + break + + if not search_path.endswith("/"): + search_path += "/" + + if path.startswith(search_path): + real_filename, file_loader = loader(path[len(search_path) :]) + + if file_loader is not None: + break + + if file_loader is None or not self.is_allowed(real_filename): # type: ignore + return self.app(environ, start_response) + + guessed_type = mimetypes.guess_type(real_filename) # type: ignore + mime_type = get_content_type(guessed_type[0] or self.fallback_mimetype, "utf-8") + f, mtime, file_size = file_loader() + + headers = [("Date", http_date())] + + if self.cache: + timeout = self.cache_timeout + etag = self.generate_etag(mtime, file_size, real_filename) # type: ignore + headers += [ + ("Etag", f'"{etag}"'), + ("Cache-Control", f"max-age={timeout}, public"), + ] + + if not is_resource_modified(environ, etag, last_modified=mtime): + f.close() + start_response("304 Not Modified", headers) + return [] + + headers.append(("Expires", http_date(time() + timeout))) + else: + headers.append(("Cache-Control", "public")) + + headers.extend( + ( + ("Content-Type", mime_type), + ("Content-Length", str(file_size)), + ("Last-Modified", http_date(mtime)), + ) + ) + start_response("200 OK", headers) + return wrap_file(environ, f) diff --git a/gestao_raul/Lib/site-packages/werkzeug/py.typed b/gestao_raul/Lib/site-packages/werkzeug/py.typed new file mode 100644 index 0000000..e69de29 diff --git a/gestao_raul/Lib/site-packages/werkzeug/routing/__init__.py b/gestao_raul/Lib/site-packages/werkzeug/routing/__init__.py new file mode 100644 index 0000000..62adc48 --- /dev/null +++ b/gestao_raul/Lib/site-packages/werkzeug/routing/__init__.py @@ -0,0 +1,134 @@ +"""When it comes to combining multiple controller or view functions +(however you want to call them) you need a dispatcher. A simple way +would be applying regular expression tests on the ``PATH_INFO`` and +calling registered callback functions that return the value then. + +This module implements a much more powerful system than simple regular +expression matching because it can also convert values in the URLs and +build URLs. + +Here a simple example that creates a URL map for an application with +two subdomains (www and kb) and some URL rules: + +.. code-block:: python + + m = Map([ + # Static URLs + Rule('/', endpoint='static/index'), + Rule('/about', endpoint='static/about'), + Rule('/help', endpoint='static/help'), + # Knowledge Base + Subdomain('kb', [ + Rule('/', endpoint='kb/index'), + Rule('/browse/', endpoint='kb/browse'), + Rule('/browse//', endpoint='kb/browse'), + Rule('/browse//', endpoint='kb/browse') + ]) + ], default_subdomain='www') + +If the application doesn't use subdomains it's perfectly fine to not set +the default subdomain and not use the `Subdomain` rule factory. The +endpoint in the rules can be anything, for example import paths or +unique identifiers. The WSGI application can use those endpoints to get the +handler for that URL. It doesn't have to be a string at all but it's +recommended. + +Now it's possible to create a URL adapter for one of the subdomains and +build URLs: + +.. code-block:: python + + c = m.bind('example.com') + + c.build("kb/browse", dict(id=42)) + 'http://kb.example.com/browse/42/' + + c.build("kb/browse", dict()) + 'http://kb.example.com/browse/' + + c.build("kb/browse", dict(id=42, page=3)) + 'http://kb.example.com/browse/42/3' + + c.build("static/about") + '/about' + + c.build("static/index", force_external=True) + 'http://www.example.com/' + + c = m.bind('example.com', subdomain='kb') + + c.build("static/about") + 'http://www.example.com/about' + +The first argument to bind is the server name *without* the subdomain. +Per default it will assume that the script is mounted on the root, but +often that's not the case so you can provide the real mount point as +second argument: + +.. code-block:: python + + c = m.bind('example.com', '/applications/example') + +The third argument can be the subdomain, if not given the default +subdomain is used. For more details about binding have a look at the +documentation of the `MapAdapter`. + +And here is how you can match URLs: + +.. code-block:: python + + c = m.bind('example.com') + + c.match("/") + ('static/index', {}) + + c.match("/about") + ('static/about', {}) + + c = m.bind('example.com', '/', 'kb') + + c.match("/") + ('kb/index', {}) + + c.match("/browse/42/23") + ('kb/browse', {'id': 42, 'page': 23}) + +If matching fails you get a ``NotFound`` exception, if the rule thinks +it's a good idea to redirect (for example because the URL was defined +to have a slash at the end but the request was missing that slash) it +will raise a ``RequestRedirect`` exception. Both are subclasses of +``HTTPException`` so you can use those errors as responses in the +application. + +If matching succeeded but the URL rule was incompatible to the given +method (for example there were only rules for ``GET`` and ``HEAD`` but +routing tried to match a ``POST`` request) a ``MethodNotAllowed`` +exception is raised. +""" + +from .converters import AnyConverter as AnyConverter +from .converters import BaseConverter as BaseConverter +from .converters import FloatConverter as FloatConverter +from .converters import IntegerConverter as IntegerConverter +from .converters import PathConverter as PathConverter +from .converters import UnicodeConverter as UnicodeConverter +from .converters import UUIDConverter as UUIDConverter +from .converters import ValidationError as ValidationError +from .exceptions import BuildError as BuildError +from .exceptions import NoMatch as NoMatch +from .exceptions import RequestAliasRedirect as RequestAliasRedirect +from .exceptions import RequestPath as RequestPath +from .exceptions import RequestRedirect as RequestRedirect +from .exceptions import RoutingException as RoutingException +from .exceptions import WebsocketMismatch as WebsocketMismatch +from .map import Map as Map +from .map import MapAdapter as MapAdapter +from .matcher import StateMachineMatcher as StateMachineMatcher +from .rules import EndpointPrefix as EndpointPrefix +from .rules import parse_converter_args as parse_converter_args +from .rules import Rule as Rule +from .rules import RuleFactory as RuleFactory +from .rules import RuleTemplate as RuleTemplate +from .rules import RuleTemplateFactory as RuleTemplateFactory +from .rules import Subdomain as Subdomain +from .rules import Submount as Submount diff --git a/gestao_raul/Lib/site-packages/werkzeug/routing/__pycache__/__init__.cpython-310.pyc b/gestao_raul/Lib/site-packages/werkzeug/routing/__pycache__/__init__.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..f475b9abd1ae4c36c33e51a7b601d71e16efd5af GIT binary patch literal 4623 zcmbtYT~i##63U3?P>r2bG%BJ^gX}_C4ozqvz+n3VyzQ|BvoJZ&xb+ zqDuMa1}fjZH+ zc9cX(SM&$5i_%!3DRD-}u`)s%aT2Ma=nRs;MLMxwt*3|T1fS0IKn!K#coG@M!u3>t zm75c#LLo&M*;Klqr%YXJ2^;lk@}WHQhI$Z(qOF8X)A)?mHmW;_r4i~hHOgA7B%HF& z3IaVPTCKgU!?(?ycW>UeT0$nF7huVJWMrK(Sdp6AGC01l7GtHuY7kVnCd8T zn^nvG8c`Ce)9UKl)xNT=2kuh?vJck>^i-UFsz0}vx_>49nCM}w!mbi8rB$Pa4+^i; zs>f~2bg?Pg*r&E|+`evpsc+lpp;ec6jUiccdCS+wdmElioB2*m-(lhg7JQO{z{%SdRuEj9t}=6eLlBi_b(S zO298I677Ul&Li^X%Uq1&=%XGq7t?!mAT2?`C^|B5+MLzJVNZEQAQhD1aAjVRgd_-3 zP;QNBP%s5_)}R{Xrw0u&-XMv72Jxd1439dIGM1+n9}j-mxkMadYi5;(ZNq6`}QMjllPuK}$p0Li4B0z^oB-;bWF7u3n@}MxXHOv-)LD*d zPe%dt6yXvDt`>!x&(~M85UTc^OE(&g<959?M;`T!=j)B?=Vtp&6Mc3TwrLHg-Bp{< ze$$k&?b+37bCqJzd75vqkx9^%ZIty4enB7vs;N$KJc*1q56wVb_76yP$w9@+zj6j^ z7fjhCeY$!kpE5K*iK{CW=7UC{rm+Y@(;ZNrqX47h7s!D`L8}a9^+X~kd`;;Cn*4S4 zr4Y-yw}&1Dn~~av5h7YziwQF(@I--$QUp1r)q0%?-&6~w~S=o9djzkvvGHXSlD^b(7D76gL%#eRNgyswFBqoi`Skq0t4oty@3 zF&B#zqQmVC`T4< zU}w^%q6Fy)`MgMu)PV`-^%cY_yzEVUh4Hw%BT*)}mSk53@^`EC!}ekJh5&xMz4aOu z5+wr`ve!%m8{l$2e|FX0`vV$cGLPZ%jFG#%Dgt3Ej`2u9DBvNGhXRq19gWofZ@gVA zt7GSLTgln0>;<3<>hp9VEjKK@iM4d)mZcrYXIGhW+x#A`H06e+4@pFq_Hx_&hYvfi z%MFWvl5rHWer(g(V14f;y*G;5)H}UPZx?)6$pd36j-)N31MRbUI~joL;+6P8)6#zC z!clyn?bb)tws=h_w;NgZC>qD1UHIi)NEm9%2Y4l@T}clp{Ni^bnisb7XT+WX8&1)( zl1gJ$Gbo(dL<+EIpV-IE5x-~Y_nYhjiRv6x4;3Czm>%`za{Z#)%;*Y=KGUdh_IkG} z&ZnA9C~&iR?v0kThW<8T#;KT~Vv>rRR7_DZO~nj~^NXOchW^@NW~rE?0)#Xou8IgXh4}k5T)`MoxW`;w=qLq%r3B suWHb3pr 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 literal 0 HcmV?d00001 diff --git a/gestao_raul/Lib/site-packages/werkzeug/routing/__pycache__/matcher.cpython-310.pyc b/gestao_raul/Lib/site-packages/werkzeug/routing/__pycache__/matcher.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..0803f64f727331293115f688c6b0a678a6afb837 GIT binary patch literal 5147 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 literal 0 HcmV?d00001 diff --git a/gestao_raul/Lib/site-packages/werkzeug/routing/__pycache__/rules.cpython-310.pyc b/gestao_raul/Lib/site-packages/werkzeug/routing/__pycache__/rules.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..b355b10e5f30ea62395a94f449e48b1fc1c62597 GIT binary patch literal 28072 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 V;MgRjw^3;K2f!;?sSkE%{y!r)Fp>ZO literal 0 HcmV?d00001 diff --git a/gestao_raul/Lib/site-packages/werkzeug/routing/converters.py b/gestao_raul/Lib/site-packages/werkzeug/routing/converters.py new file mode 100644 index 0000000..6016a97 --- /dev/null +++ b/gestao_raul/Lib/site-packages/werkzeug/routing/converters.py @@ -0,0 +1,261 @@ +from __future__ import annotations + +import re +import typing as t +import uuid +from urllib.parse import quote + +if t.TYPE_CHECKING: + from .map import Map + + +class ValidationError(ValueError): + """Validation error. If a rule converter raises this exception the rule + does not match the current URL and the next URL is tried. + """ + + +class BaseConverter: + """Base class for all converters. + + .. versionchanged:: 2.3 + ``part_isolating`` defaults to ``False`` if ``regex`` contains a ``/``. + """ + + regex = "[^/]+" + weight = 100 + part_isolating = True + + def __init_subclass__(cls, **kwargs: t.Any) -> None: + super().__init_subclass__(**kwargs) + + # If the converter isn't inheriting its regex, disable part_isolating by default + # if the regex contains a / character. + if "regex" in cls.__dict__ and "part_isolating" not in cls.__dict__: + cls.part_isolating = "/" not in cls.regex + + def __init__(self, map: Map, *args: t.Any, **kwargs: t.Any) -> None: + self.map = map + + def to_python(self, value: str) -> t.Any: + return value + + def to_url(self, value: t.Any) -> str: + # safe = https://url.spec.whatwg.org/#url-path-segment-string + return quote(str(value), safe="!$&'()*+,/:;=@") + + +class UnicodeConverter(BaseConverter): + """This converter is the default converter and accepts any string but + only one path segment. Thus the string can not include a slash. + + This is the default validator. + + Example:: + + Rule('/pages/'), + Rule('/') + + :param map: the :class:`Map`. + :param minlength: the minimum length of the string. Must be greater + or equal 1. + :param maxlength: the maximum length of the string. + :param length: the exact length of the string. + """ + + def __init__( + self, + map: Map, + minlength: int = 1, + maxlength: int | None = None, + length: int | None = None, + ) -> None: + super().__init__(map) + if length is not None: + length_regex = f"{{{int(length)}}}" + else: + if maxlength is None: + maxlength_value = "" + else: + maxlength_value = str(int(maxlength)) + length_regex = f"{{{int(minlength)},{maxlength_value}}}" + self.regex = f"[^/]{length_regex}" + + +class AnyConverter(BaseConverter): + """Matches one of the items provided. Items can either be Python + identifiers or strings:: + + Rule('/') + + :param map: the :class:`Map`. + :param items: this function accepts the possible items as positional + arguments. + + .. versionchanged:: 2.2 + Value is validated when building a URL. + """ + + def __init__(self, map: Map, *items: str) -> None: + super().__init__(map) + self.items = set(items) + self.regex = f"(?:{'|'.join([re.escape(x) for x in items])})" + + def to_url(self, value: t.Any) -> str: + if value in self.items: + return str(value) + + valid_values = ", ".join(f"'{item}'" for item in sorted(self.items)) + raise ValueError(f"'{value}' is not one of {valid_values}") + + +class PathConverter(BaseConverter): + """Like the default :class:`UnicodeConverter`, but it also matches + slashes. This is useful for wikis and similar applications:: + + Rule('/') + Rule('//edit') + + :param map: the :class:`Map`. + """ + + part_isolating = False + regex = "[^/].*?" + weight = 200 + + +class NumberConverter(BaseConverter): + """Baseclass for `IntegerConverter` and `FloatConverter`. + + :internal: + """ + + weight = 50 + num_convert: t.Callable[[t.Any], t.Any] = int + + def __init__( + self, + map: Map, + fixed_digits: int = 0, + min: int | None = None, + max: int | None = None, + signed: bool = False, + ) -> None: + if signed: + self.regex = self.signed_regex + super().__init__(map) + self.fixed_digits = fixed_digits + self.min = min + self.max = max + self.signed = signed + + def to_python(self, value: str) -> t.Any: + if self.fixed_digits and len(value) != self.fixed_digits: + raise ValidationError() + value_num = self.num_convert(value) + if (self.min is not None and value_num < self.min) or ( + self.max is not None and value_num > self.max + ): + raise ValidationError() + return value_num + + def to_url(self, value: t.Any) -> str: + value_str = str(self.num_convert(value)) + if self.fixed_digits: + value_str = value_str.zfill(self.fixed_digits) + return value_str + + @property + def signed_regex(self) -> str: + return f"-?{self.regex}" + + +class IntegerConverter(NumberConverter): + """This converter only accepts integer values:: + + Rule("/page/") + + By default it only accepts unsigned, positive values. The ``signed`` + parameter will enable signed, negative values. :: + + Rule("/page/") + + :param map: The :class:`Map`. + :param fixed_digits: The number of fixed digits in the URL. If you + set this to ``4`` for example, the rule will only match if the + URL looks like ``/0001/``. The default is variable length. + :param min: The minimal value. + :param max: The maximal value. + :param signed: Allow signed (negative) values. + + .. versionadded:: 0.15 + The ``signed`` parameter. + """ + + regex = r"\d+" + + +class FloatConverter(NumberConverter): + """This converter only accepts floating point values:: + + Rule("/probability/") + + By default it only accepts unsigned, positive values. The ``signed`` + parameter will enable signed, negative values. :: + + Rule("/offset/") + + :param map: The :class:`Map`. + :param min: The minimal value. + :param max: The maximal value. + :param signed: Allow signed (negative) values. + + .. versionadded:: 0.15 + The ``signed`` parameter. + """ + + regex = r"\d+\.\d+" + num_convert = float + + def __init__( + self, + map: Map, + min: float | None = None, + max: float | None = None, + signed: bool = False, + ) -> None: + super().__init__(map, min=min, max=max, signed=signed) # type: ignore + + +class UUIDConverter(BaseConverter): + """This converter only accepts UUID strings:: + + Rule('/object/') + + .. versionadded:: 0.10 + + :param map: the :class:`Map`. + """ + + regex = ( + r"[A-Fa-f0-9]{8}-[A-Fa-f0-9]{4}-" + r"[A-Fa-f0-9]{4}-[A-Fa-f0-9]{4}-[A-Fa-f0-9]{12}" + ) + + def to_python(self, value: str) -> uuid.UUID: + return uuid.UUID(value) + + def to_url(self, value: uuid.UUID) -> str: + return str(value) + + +#: the default converter mapping for the map. +DEFAULT_CONVERTERS: t.Mapping[str, type[BaseConverter]] = { + "default": UnicodeConverter, + "string": UnicodeConverter, + "any": AnyConverter, + "path": PathConverter, + "int": IntegerConverter, + "float": FloatConverter, + "uuid": UUIDConverter, +} diff --git a/gestao_raul/Lib/site-packages/werkzeug/routing/exceptions.py b/gestao_raul/Lib/site-packages/werkzeug/routing/exceptions.py new file mode 100644 index 0000000..eeabd4e --- /dev/null +++ b/gestao_raul/Lib/site-packages/werkzeug/routing/exceptions.py @@ -0,0 +1,152 @@ +from __future__ import annotations + +import difflib +import typing as t + +from ..exceptions import BadRequest +from ..exceptions import HTTPException +from ..utils import cached_property +from ..utils import redirect + +if t.TYPE_CHECKING: + from _typeshed.wsgi import WSGIEnvironment + + from ..wrappers.request import Request + from ..wrappers.response import Response + from .map import MapAdapter + from .rules import Rule + + +class RoutingException(Exception): + """Special exceptions that require the application to redirect, notifying + about missing urls, etc. + + :internal: + """ + + +class RequestRedirect(HTTPException, RoutingException): + """Raise if the map requests a redirect. This is for example the case if + `strict_slashes` are activated and an url that requires a trailing slash. + + The attribute `new_url` contains the absolute destination url. + """ + + code = 308 + + def __init__(self, new_url: str) -> None: + super().__init__(new_url) + self.new_url = new_url + + def get_response( + self, + environ: WSGIEnvironment | Request | None = None, + scope: dict[str, t.Any] | None = None, + ) -> Response: + return redirect(self.new_url, self.code) + + +class RequestPath(RoutingException): + """Internal exception.""" + + __slots__ = ("path_info",) + + def __init__(self, path_info: str) -> None: + super().__init__() + self.path_info = path_info + + +class RequestAliasRedirect(RoutingException): # noqa: B903 + """This rule is an alias and wants to redirect to the canonical URL.""" + + def __init__(self, matched_values: t.Mapping[str, t.Any], endpoint: t.Any) -> None: + super().__init__() + self.matched_values = matched_values + self.endpoint = endpoint + + +class BuildError(RoutingException, LookupError): + """Raised if the build system cannot find a URL for an endpoint with the + values provided. + """ + + def __init__( + self, + endpoint: t.Any, + values: t.Mapping[str, t.Any], + method: str | None, + adapter: MapAdapter | None = None, + ) -> None: + super().__init__(endpoint, values, method) + self.endpoint = endpoint + self.values = values + self.method = method + self.adapter = adapter + + @cached_property + def suggested(self) -> Rule | None: + return self.closest_rule(self.adapter) + + def closest_rule(self, adapter: MapAdapter | None) -> Rule | None: + def _score_rule(rule: Rule) -> float: + return sum( + [ + 0.98 + * difflib.SequenceMatcher( + # endpoints can be any type, compare as strings + None, + str(rule.endpoint), + str(self.endpoint), + ).ratio(), + 0.01 * bool(set(self.values or ()).issubset(rule.arguments)), + 0.01 * bool(rule.methods and self.method in rule.methods), + ] + ) + + if adapter and adapter.map._rules: + return max(adapter.map._rules, key=_score_rule) + + return None + + def __str__(self) -> str: + message = [f"Could not build url for endpoint {self.endpoint!r}"] + if self.method: + message.append(f" ({self.method!r})") + if self.values: + message.append(f" with values {sorted(self.values)!r}") + message.append(".") + if self.suggested: + if self.endpoint == self.suggested.endpoint: + if ( + self.method + and self.suggested.methods is not None + and self.method not in self.suggested.methods + ): + message.append( + " Did you mean to use methods" + f" {sorted(self.suggested.methods)!r}?" + ) + missing_values = self.suggested.arguments.union( + set(self.suggested.defaults or ()) + ) - set(self.values.keys()) + if missing_values: + message.append( + f" Did you forget to specify values {sorted(missing_values)!r}?" + ) + else: + message.append(f" Did you mean {self.suggested.endpoint!r} instead?") + return "".join(message) + + +class WebsocketMismatch(BadRequest): + """The only matched rule is either a WebSocket and the request is + HTTP, or the rule is HTTP and the request is a WebSocket. + """ + + +class NoMatch(Exception): + __slots__ = ("have_match_for", "websocket_mismatch") + + def __init__(self, have_match_for: set[str], websocket_mismatch: bool) -> None: + self.have_match_for = have_match_for + self.websocket_mismatch = websocket_mismatch diff --git a/gestao_raul/Lib/site-packages/werkzeug/routing/map.py b/gestao_raul/Lib/site-packages/werkzeug/routing/map.py new file mode 100644 index 0000000..4d15e88 --- /dev/null +++ b/gestao_raul/Lib/site-packages/werkzeug/routing/map.py @@ -0,0 +1,951 @@ +from __future__ import annotations + +import typing as t +import warnings +from pprint import pformat +from threading import Lock +from urllib.parse import quote +from urllib.parse import urljoin +from urllib.parse import urlunsplit + +from .._internal import _get_environ +from .._internal import _wsgi_decoding_dance +from ..datastructures import ImmutableDict +from ..datastructures import MultiDict +from ..exceptions import BadHost +from ..exceptions import HTTPException +from ..exceptions import MethodNotAllowed +from ..exceptions import NotFound +from ..urls import _urlencode +from ..wsgi import get_host +from .converters import DEFAULT_CONVERTERS +from .exceptions import BuildError +from .exceptions import NoMatch +from .exceptions import RequestAliasRedirect +from .exceptions import RequestPath +from .exceptions import RequestRedirect +from .exceptions import WebsocketMismatch +from .matcher import StateMachineMatcher +from .rules import _simple_rule_re +from .rules import Rule + +if t.TYPE_CHECKING: + from _typeshed.wsgi import WSGIApplication + from _typeshed.wsgi import WSGIEnvironment + + from ..wrappers.request import Request + from .converters import BaseConverter + from .rules import RuleFactory + + +class Map: + """The map class stores all the URL rules and some configuration + parameters. Some of the configuration values are only stored on the + `Map` instance since those affect all rules, others are just defaults + and can be overridden for each rule. Note that you have to specify all + arguments besides the `rules` as keyword arguments! + + :param rules: sequence of url rules for this map. + :param default_subdomain: The default subdomain for rules without a + subdomain defined. + :param strict_slashes: If a rule ends with a slash but the matched + URL does not, redirect to the URL with a trailing slash. + :param merge_slashes: Merge consecutive slashes when matching or + building URLs. Matches will redirect to the normalized URL. + Slashes in variable parts are not merged. + :param redirect_defaults: This will redirect to the default rule if it + wasn't visited that way. This helps creating + unique URLs. + :param converters: A dict of converters that adds additional converters + to the list of converters. If you redefine one + converter this will override the original one. + :param sort_parameters: If set to `True` the url parameters are sorted. + See `url_encode` for more details. + :param sort_key: The sort key function for `url_encode`. + :param host_matching: if set to `True` it enables the host matching + feature and disables the subdomain one. If + enabled the `host` parameter to rules is used + instead of the `subdomain` one. + + .. versionchanged:: 3.0 + The ``charset`` and ``encoding_errors`` parameters were removed. + + .. versionchanged:: 1.0 + If ``url_scheme`` is ``ws`` or ``wss``, only WebSocket rules will match. + + .. versionchanged:: 1.0 + The ``merge_slashes`` parameter was added. + + .. versionchanged:: 0.7 + The ``encoding_errors`` and ``host_matching`` parameters were added. + + .. versionchanged:: 0.5 + The ``sort_parameters`` and ``sort_key`` paramters were added. + """ + + #: A dict of default converters to be used. + default_converters = ImmutableDict(DEFAULT_CONVERTERS) + + #: The type of lock to use when updating. + #: + #: .. versionadded:: 1.0 + lock_class = Lock + + def __init__( + self, + rules: t.Iterable[RuleFactory] | None = None, + default_subdomain: str = "", + strict_slashes: bool = True, + merge_slashes: bool = True, + redirect_defaults: bool = True, + converters: t.Mapping[str, type[BaseConverter]] | None = None, + sort_parameters: bool = False, + sort_key: t.Callable[[t.Any], t.Any] | None = None, + host_matching: bool = False, + ) -> None: + self._matcher = StateMachineMatcher(merge_slashes) + self._rules_by_endpoint: dict[t.Any, list[Rule]] = {} + self._remap = True + self._remap_lock = self.lock_class() + + self.default_subdomain = default_subdomain + self.strict_slashes = strict_slashes + self.redirect_defaults = redirect_defaults + self.host_matching = host_matching + + self.converters = self.default_converters.copy() + if converters: + self.converters.update(converters) + + self.sort_parameters = sort_parameters + self.sort_key = sort_key + + for rulefactory in rules or (): + self.add(rulefactory) + + @property + def merge_slashes(self) -> bool: + return self._matcher.merge_slashes + + @merge_slashes.setter + def merge_slashes(self, value: bool) -> None: + self._matcher.merge_slashes = value + + def is_endpoint_expecting(self, endpoint: t.Any, *arguments: str) -> bool: + """Iterate over all rules and check if the endpoint expects + the arguments provided. This is for example useful if you have + some URLs that expect a language code and others that do not and + you want to wrap the builder a bit so that the current language + code is automatically added if not provided but endpoints expect + it. + + :param endpoint: the endpoint to check. + :param arguments: this function accepts one or more arguments + as positional arguments. Each one of them is + checked. + """ + self.update() + arguments_set = set(arguments) + for rule in self._rules_by_endpoint[endpoint]: + if arguments_set.issubset(rule.arguments): + return True + return False + + @property + def _rules(self) -> list[Rule]: + return [rule for rules in self._rules_by_endpoint.values() for rule in rules] + + def iter_rules(self, endpoint: t.Any | None = None) -> t.Iterator[Rule]: + """Iterate over all rules or the rules of an endpoint. + + :param endpoint: if provided only the rules for that endpoint + are returned. + :return: an iterator + """ + self.update() + if endpoint is not None: + return iter(self._rules_by_endpoint[endpoint]) + return iter(self._rules) + + def add(self, rulefactory: RuleFactory) -> None: + """Add a new rule or factory to the map and bind it. Requires that the + rule is not bound to another map. + + :param rulefactory: a :class:`Rule` or :class:`RuleFactory` + """ + for rule in rulefactory.get_rules(self): + rule.bind(self) + if not rule.build_only: + self._matcher.add(rule) + self._rules_by_endpoint.setdefault(rule.endpoint, []).append(rule) + self._remap = True + + def bind( + self, + server_name: str, + script_name: str | None = None, + subdomain: str | None = None, + url_scheme: str = "http", + default_method: str = "GET", + path_info: str | None = None, + query_args: t.Mapping[str, t.Any] | str | None = None, + ) -> MapAdapter: + """Return a new :class:`MapAdapter` with the details specified to the + call. Note that `script_name` will default to ``'/'`` if not further + specified or `None`. The `server_name` at least is a requirement + because the HTTP RFC requires absolute URLs for redirects and so all + redirect exceptions raised by Werkzeug will contain the full canonical + URL. + + If no path_info is passed to :meth:`match` it will use the default path + info passed to bind. While this doesn't really make sense for + manual bind calls, it's useful if you bind a map to a WSGI + environment which already contains the path info. + + `subdomain` will default to the `default_subdomain` for this map if + no defined. If there is no `default_subdomain` you cannot use the + subdomain feature. + + .. versionchanged:: 1.0 + If ``url_scheme`` is ``ws`` or ``wss``, only WebSocket rules + will match. + + .. versionchanged:: 0.15 + ``path_info`` defaults to ``'/'`` if ``None``. + + .. versionchanged:: 0.8 + ``query_args`` can be a string. + + .. versionchanged:: 0.7 + Added ``query_args``. + """ + server_name = server_name.lower() + if self.host_matching: + if subdomain is not None: + raise RuntimeError("host matching enabled and a subdomain was provided") + elif subdomain is None: + subdomain = self.default_subdomain + if script_name is None: + script_name = "/" + if path_info is None: + path_info = "/" + + # Port isn't part of IDNA, and might push a name over the 63 octet limit. + server_name, port_sep, port = server_name.partition(":") + + try: + server_name = server_name.encode("idna").decode("ascii") + except UnicodeError as e: + raise BadHost() from e + + return MapAdapter( + self, + f"{server_name}{port_sep}{port}", + script_name, + subdomain, + url_scheme, + path_info, + default_method, + query_args, + ) + + def bind_to_environ( + self, + environ: WSGIEnvironment | Request, + server_name: str | None = None, + subdomain: str | None = None, + ) -> MapAdapter: + """Like :meth:`bind` but you can pass it an WSGI environment and it + will fetch the information from that dictionary. Note that because of + limitations in the protocol there is no way to get the current + subdomain and real `server_name` from the environment. If you don't + provide it, Werkzeug will use `SERVER_NAME` and `SERVER_PORT` (or + `HTTP_HOST` if provided) as used `server_name` with disabled subdomain + feature. + + If `subdomain` is `None` but an environment and a server name is + provided it will calculate the current subdomain automatically. + Example: `server_name` is ``'example.com'`` and the `SERVER_NAME` + in the wsgi `environ` is ``'staging.dev.example.com'`` the calculated + subdomain will be ``'staging.dev'``. + + If the object passed as environ has an environ attribute, the value of + this attribute is used instead. This allows you to pass request + objects. Additionally `PATH_INFO` added as a default of the + :class:`MapAdapter` so that you don't have to pass the path info to + the match method. + + .. versionchanged:: 1.0.0 + If the passed server name specifies port 443, it will match + if the incoming scheme is ``https`` without a port. + + .. versionchanged:: 1.0.0 + A warning is shown when the passed server name does not + match the incoming WSGI server name. + + .. versionchanged:: 0.8 + This will no longer raise a ValueError when an unexpected server + name was passed. + + .. versionchanged:: 0.5 + previously this method accepted a bogus `calculate_subdomain` + parameter that did not have any effect. It was removed because + of that. + + :param environ: a WSGI environment. + :param server_name: an optional server name hint (see above). + :param subdomain: optionally the current subdomain (see above). + """ + env = _get_environ(environ) + wsgi_server_name = get_host(env).lower() + scheme = env["wsgi.url_scheme"] + upgrade = any( + v.strip() == "upgrade" + for v in env.get("HTTP_CONNECTION", "").lower().split(",") + ) + + if upgrade and env.get("HTTP_UPGRADE", "").lower() == "websocket": + scheme = "wss" if scheme == "https" else "ws" + + if server_name is None: + server_name = wsgi_server_name + else: + server_name = server_name.lower() + + # strip standard port to match get_host() + if scheme in {"http", "ws"} and server_name.endswith(":80"): + server_name = server_name[:-3] + elif scheme in {"https", "wss"} and server_name.endswith(":443"): + server_name = server_name[:-4] + + if subdomain is None and not self.host_matching: + cur_server_name = wsgi_server_name.split(".") + real_server_name = server_name.split(".") + offset = -len(real_server_name) + + if cur_server_name[offset:] != real_server_name: + # This can happen even with valid configs if the server was + # accessed directly by IP address under some situations. + # Instead of raising an exception like in Werkzeug 0.7 or + # earlier we go by an invalid subdomain which will result + # in a 404 error on matching. + warnings.warn( + f"Current server name {wsgi_server_name!r} doesn't match configured" + f" server name {server_name!r}", + stacklevel=2, + ) + subdomain = "" + else: + subdomain = ".".join(filter(None, cur_server_name[:offset])) + + def _get_wsgi_string(name: str) -> str | None: + val = env.get(name) + if val is not None: + return _wsgi_decoding_dance(val) + return None + + script_name = _get_wsgi_string("SCRIPT_NAME") + path_info = _get_wsgi_string("PATH_INFO") + query_args = _get_wsgi_string("QUERY_STRING") + return Map.bind( + self, + server_name, + script_name, + subdomain, + scheme, + env["REQUEST_METHOD"], + path_info, + query_args=query_args, + ) + + def update(self) -> None: + """Called before matching and building to keep the compiled rules + in the correct order after things changed. + """ + if not self._remap: + return + + with self._remap_lock: + if not self._remap: + return + + self._matcher.update() + for rules in self._rules_by_endpoint.values(): + rules.sort(key=lambda x: x.build_compare_key()) + self._remap = False + + def __repr__(self) -> str: + rules = self.iter_rules() + return f"{type(self).__name__}({pformat(list(rules))})" + + +class MapAdapter: + """Returned by :meth:`Map.bind` or :meth:`Map.bind_to_environ` and does + the URL matching and building based on runtime information. + """ + + def __init__( + self, + map: Map, + server_name: str, + script_name: str, + subdomain: str | None, + url_scheme: str, + path_info: str, + default_method: str, + query_args: t.Mapping[str, t.Any] | str | None = None, + ): + self.map = map + self.server_name = server_name + + if not script_name.endswith("/"): + script_name += "/" + + self.script_name = script_name + self.subdomain = subdomain + self.url_scheme = url_scheme + self.path_info = path_info + self.default_method = default_method + self.query_args = query_args + self.websocket = self.url_scheme in {"ws", "wss"} + + def dispatch( + self, + view_func: t.Callable[[str, t.Mapping[str, t.Any]], WSGIApplication], + path_info: str | None = None, + method: str | None = None, + catch_http_exceptions: bool = False, + ) -> WSGIApplication: + """Does the complete dispatching process. `view_func` is called with + the endpoint and a dict with the values for the view. It should + look up the view function, call it, and return a response object + or WSGI application. http exceptions are not caught by default + so that applications can display nicer error messages by just + catching them by hand. If you want to stick with the default + error messages you can pass it ``catch_http_exceptions=True`` and + it will catch the http exceptions. + + Here a small example for the dispatch usage:: + + from werkzeug.wrappers import Request, Response + from werkzeug.wsgi import responder + from werkzeug.routing import Map, Rule + + def on_index(request): + return Response('Hello from the index') + + url_map = Map([Rule('/', endpoint='index')]) + views = {'index': on_index} + + @responder + def application(environ, start_response): + request = Request(environ) + urls = url_map.bind_to_environ(environ) + return urls.dispatch(lambda e, v: views[e](request, **v), + catch_http_exceptions=True) + + Keep in mind that this method might return exception objects, too, so + use :class:`Response.force_type` to get a response object. + + :param view_func: a function that is called with the endpoint as + first argument and the value dict as second. Has + to dispatch to the actual view function with this + information. (see above) + :param path_info: the path info to use for matching. Overrides the + path info specified on binding. + :param method: the HTTP method used for matching. Overrides the + method specified on binding. + :param catch_http_exceptions: set to `True` to catch any of the + werkzeug :class:`HTTPException`\\s. + """ + try: + try: + endpoint, args = self.match(path_info, method) + except RequestRedirect as e: + return e + return view_func(endpoint, args) + except HTTPException as e: + if catch_http_exceptions: + return e + raise + + @t.overload + def match( + self, + path_info: str | None = None, + method: str | None = None, + return_rule: t.Literal[False] = False, + query_args: t.Mapping[str, t.Any] | str | None = None, + websocket: bool | None = None, + ) -> tuple[t.Any, t.Mapping[str, t.Any]]: ... + + @t.overload + def match( + self, + path_info: str | None = None, + method: str | None = None, + return_rule: t.Literal[True] = True, + query_args: t.Mapping[str, t.Any] | str | None = None, + websocket: bool | None = None, + ) -> tuple[Rule, t.Mapping[str, t.Any]]: ... + + def match( + self, + path_info: str | None = None, + method: str | None = None, + return_rule: bool = False, + query_args: t.Mapping[str, t.Any] | str | None = None, + websocket: bool | None = None, + ) -> tuple[t.Any | Rule, t.Mapping[str, t.Any]]: + """The usage is simple: you just pass the match method the current + path info as well as the method (which defaults to `GET`). The + following things can then happen: + + - you receive a `NotFound` exception that indicates that no URL is + matching. A `NotFound` exception is also a WSGI application you + can call to get a default page not found page (happens to be the + same object as `werkzeug.exceptions.NotFound`) + + - you receive a `MethodNotAllowed` exception that indicates that there + is a match for this URL but not for the current request method. + This is useful for RESTful applications. + + - you receive a `RequestRedirect` exception with a `new_url` + attribute. This exception is used to notify you about a request + Werkzeug requests from your WSGI application. This is for example the + case if you request ``/foo`` although the correct URL is ``/foo/`` + You can use the `RequestRedirect` instance as response-like object + similar to all other subclasses of `HTTPException`. + + - you receive a ``WebsocketMismatch`` exception if the only + match is a WebSocket rule but the bind is an HTTP request, or + if the match is an HTTP rule but the bind is a WebSocket + request. + + - you get a tuple in the form ``(endpoint, arguments)`` if there is + a match (unless `return_rule` is True, in which case you get a tuple + in the form ``(rule, arguments)``) + + If the path info is not passed to the match method the default path + info of the map is used (defaults to the root URL if not defined + explicitly). + + All of the exceptions raised are subclasses of `HTTPException` so they + can be used as WSGI responses. They will all render generic error or + redirect pages. + + Here is a small example for matching: + + >>> m = Map([ + ... Rule('/', endpoint='index'), + ... Rule('/downloads/', endpoint='downloads/index'), + ... Rule('/downloads/', endpoint='downloads/show') + ... ]) + >>> urls = m.bind("example.com", "/") + >>> urls.match("/", "GET") + ('index', {}) + >>> urls.match("/downloads/42") + ('downloads/show', {'id': 42}) + + And here is what happens on redirect and missing URLs: + + >>> urls.match("/downloads") + Traceback (most recent call last): + ... + RequestRedirect: http://example.com/downloads/ + >>> urls.match("/missing") + Traceback (most recent call last): + ... + NotFound: 404 Not Found + + :param path_info: the path info to use for matching. Overrides the + path info specified on binding. + :param method: the HTTP method used for matching. Overrides the + method specified on binding. + :param return_rule: return the rule that matched instead of just the + endpoint (defaults to `False`). + :param query_args: optional query arguments that are used for + automatic redirects as string or dictionary. It's + currently not possible to use the query arguments + for URL matching. + :param websocket: Match WebSocket instead of HTTP requests. A + websocket request has a ``ws`` or ``wss`` + :attr:`url_scheme`. This overrides that detection. + + .. versionadded:: 1.0 + Added ``websocket``. + + .. versionchanged:: 0.8 + ``query_args`` can be a string. + + .. versionadded:: 0.7 + Added ``query_args``. + + .. versionadded:: 0.6 + Added ``return_rule``. + """ + self.map.update() + if path_info is None: + path_info = self.path_info + if query_args is None: + query_args = self.query_args or {} + method = (method or self.default_method).upper() + + if websocket is None: + websocket = self.websocket + + domain_part = self.server_name + + if not self.map.host_matching and self.subdomain is not None: + domain_part = self.subdomain + + path_part = f"/{path_info.lstrip('/')}" if path_info else "" + + try: + result = self.map._matcher.match(domain_part, path_part, method, websocket) + except RequestPath as e: + # safe = https://url.spec.whatwg.org/#url-path-segment-string + new_path = quote(e.path_info, safe="!$&'()*+,/:;=@") + raise RequestRedirect( + self.make_redirect_url(new_path, query_args) + ) from None + except RequestAliasRedirect as e: + raise RequestRedirect( + self.make_alias_redirect_url( + f"{domain_part}|{path_part}", + e.endpoint, + e.matched_values, + method, + query_args, + ) + ) from None + except NoMatch as e: + if e.have_match_for: + raise MethodNotAllowed(valid_methods=list(e.have_match_for)) from None + + if e.websocket_mismatch: + raise WebsocketMismatch() from None + + raise NotFound() from None + else: + rule, rv = result + + if self.map.redirect_defaults: + redirect_url = self.get_default_redirect(rule, method, rv, query_args) + if redirect_url is not None: + raise RequestRedirect(redirect_url) + + if rule.redirect_to is not None: + if isinstance(rule.redirect_to, str): + + def _handle_match(match: t.Match[str]) -> str: + value = rv[match.group(1)] + return rule._converters[match.group(1)].to_url(value) + + redirect_url = _simple_rule_re.sub(_handle_match, rule.redirect_to) + else: + redirect_url = rule.redirect_to(self, **rv) + + if self.subdomain: + netloc = f"{self.subdomain}.{self.server_name}" + else: + netloc = self.server_name + + raise RequestRedirect( + urljoin( + f"{self.url_scheme or 'http'}://{netloc}{self.script_name}", + redirect_url, + ) + ) + + if return_rule: + return rule, rv + else: + return rule.endpoint, rv + + def test(self, path_info: str | None = None, method: str | None = None) -> bool: + """Test if a rule would match. Works like `match` but returns `True` + if the URL matches, or `False` if it does not exist. + + :param path_info: the path info to use for matching. Overrides the + path info specified on binding. + :param method: the HTTP method used for matching. Overrides the + method specified on binding. + """ + try: + self.match(path_info, method) + except RequestRedirect: + pass + except HTTPException: + return False + return True + + def allowed_methods(self, path_info: str | None = None) -> t.Iterable[str]: + """Returns the valid methods that match for a given path. + + .. versionadded:: 0.7 + """ + try: + self.match(path_info, method="--") + except MethodNotAllowed as e: + return e.valid_methods # type: ignore + except HTTPException: + pass + return [] + + def get_host(self, domain_part: str | None) -> str: + """Figures out the full host name for the given domain part. The + domain part is a subdomain in case host matching is disabled or + a full host name. + """ + if self.map.host_matching: + if domain_part is None: + return self.server_name + + return domain_part + + if domain_part is None: + subdomain = self.subdomain + else: + subdomain = domain_part + + if subdomain: + return f"{subdomain}.{self.server_name}" + else: + return self.server_name + + def get_default_redirect( + self, + rule: Rule, + method: str, + values: t.MutableMapping[str, t.Any], + query_args: t.Mapping[str, t.Any] | str, + ) -> str | None: + """A helper that returns the URL to redirect to if it finds one. + This is used for default redirecting only. + + :internal: + """ + assert self.map.redirect_defaults + for r in self.map._rules_by_endpoint[rule.endpoint]: + # every rule that comes after this one, including ourself + # has a lower priority for the defaults. We order the ones + # with the highest priority up for building. + if r is rule: + break + if r.provides_defaults_for(rule) and r.suitable_for(values, method): + values.update(r.defaults) # type: ignore + domain_part, path = r.build(values) # type: ignore + return self.make_redirect_url(path, query_args, domain_part=domain_part) + return None + + def encode_query_args(self, query_args: t.Mapping[str, t.Any] | str) -> str: + if not isinstance(query_args, str): + return _urlencode(query_args) + return query_args + + def make_redirect_url( + self, + path_info: str, + query_args: t.Mapping[str, t.Any] | str | None = None, + domain_part: str | None = None, + ) -> str: + """Creates a redirect URL. + + :internal: + """ + if query_args is None: + query_args = self.query_args + + if query_args: + query_str = self.encode_query_args(query_args) + else: + query_str = None + + scheme = self.url_scheme or "http" + host = self.get_host(domain_part) + path = "/".join((self.script_name.strip("/"), path_info.lstrip("/"))) + return urlunsplit((scheme, host, path, query_str, None)) + + def make_alias_redirect_url( + self, + path: str, + endpoint: t.Any, + values: t.Mapping[str, t.Any], + method: str, + query_args: t.Mapping[str, t.Any] | str, + ) -> str: + """Internally called to make an alias redirect URL.""" + url = self.build( + endpoint, values, method, append_unknown=False, force_external=True + ) + if query_args: + url += f"?{self.encode_query_args(query_args)}" + assert url != path, "detected invalid alias setting. No canonical URL found" + return url + + def _partial_build( + self, + endpoint: t.Any, + values: t.Mapping[str, t.Any], + method: str | None, + append_unknown: bool, + ) -> tuple[str, str, bool] | None: + """Helper for :meth:`build`. Returns subdomain and path for the + rule that accepts this endpoint, values and method. + + :internal: + """ + # in case the method is none, try with the default method first + if method is None: + rv = self._partial_build( + endpoint, values, self.default_method, append_unknown + ) + if rv is not None: + return rv + + # Default method did not match or a specific method is passed. + # Check all for first match with matching host. If no matching + # host is found, go with first result. + first_match = None + + for rule in self.map._rules_by_endpoint.get(endpoint, ()): + if rule.suitable_for(values, method): + build_rv = rule.build(values, append_unknown) + + if build_rv is not None: + rv = (build_rv[0], build_rv[1], rule.websocket) + if self.map.host_matching: + if rv[0] == self.server_name: + return rv + elif first_match is None: + first_match = rv + else: + return rv + + return first_match + + def build( + self, + endpoint: t.Any, + values: t.Mapping[str, t.Any] | None = None, + method: str | None = None, + force_external: bool = False, + append_unknown: bool = True, + url_scheme: str | None = None, + ) -> str: + """Building URLs works pretty much the other way round. Instead of + `match` you call `build` and pass it the endpoint and a dict of + arguments for the placeholders. + + The `build` function also accepts an argument called `force_external` + which, if you set it to `True` will force external URLs. Per default + external URLs (include the server name) will only be used if the + target URL is on a different subdomain. + + >>> m = Map([ + ... Rule('/', endpoint='index'), + ... Rule('/downloads/', endpoint='downloads/index'), + ... Rule('/downloads/', endpoint='downloads/show') + ... ]) + >>> urls = m.bind("example.com", "/") + >>> urls.build("index", {}) + '/' + >>> urls.build("downloads/show", {'id': 42}) + '/downloads/42' + >>> urls.build("downloads/show", {'id': 42}, force_external=True) + 'http://example.com/downloads/42' + + Because URLs cannot contain non ASCII data you will always get + bytes back. Non ASCII characters are urlencoded with the + charset defined on the map instance. + + Additional values are converted to strings and appended to the URL as + URL querystring parameters: + + >>> urls.build("index", {'q': 'My Searchstring'}) + '/?q=My+Searchstring' + + When processing those additional values, lists are furthermore + interpreted as multiple values (as per + :py:class:`werkzeug.datastructures.MultiDict`): + + >>> urls.build("index", {'q': ['a', 'b', 'c']}) + '/?q=a&q=b&q=c' + + Passing a ``MultiDict`` will also add multiple values: + + >>> urls.build("index", MultiDict((('p', 'z'), ('q', 'a'), ('q', 'b')))) + '/?p=z&q=a&q=b' + + If a rule does not exist when building a `BuildError` exception is + raised. + + The build method accepts an argument called `method` which allows you + to specify the method you want to have an URL built for if you have + different methods for the same endpoint specified. + + :param endpoint: the endpoint of the URL to build. + :param values: the values for the URL to build. Unhandled values are + appended to the URL as query parameters. + :param method: the HTTP method for the rule if there are different + URLs for different methods on the same endpoint. + :param force_external: enforce full canonical external URLs. If the URL + scheme is not provided, this will generate + a protocol-relative URL. + :param append_unknown: unknown parameters are appended to the generated + URL as query string argument. Disable this + if you want the builder to ignore those. + :param url_scheme: Scheme to use in place of the bound + :attr:`url_scheme`. + + .. versionchanged:: 2.0 + Added the ``url_scheme`` parameter. + + .. versionadded:: 0.6 + Added the ``append_unknown`` parameter. + """ + self.map.update() + + if values: + if isinstance(values, MultiDict): + values = { + k: (v[0] if len(v) == 1 else v) + for k, v in dict.items(values) + if len(v) != 0 + } + else: # plain dict + values = {k: v for k, v in values.items() if v is not None} + else: + values = {} + + rv = self._partial_build(endpoint, values, method, append_unknown) + if rv is None: + raise BuildError(endpoint, values, method, self) + + domain_part, path, websocket = rv + host = self.get_host(domain_part) + + if url_scheme is None: + url_scheme = self.url_scheme + + # Always build WebSocket routes with the scheme (browsers + # require full URLs). If bound to a WebSocket, ensure that HTTP + # routes are built with an HTTP scheme. + secure = url_scheme in {"https", "wss"} + + if websocket: + force_external = True + url_scheme = "wss" if secure else "ws" + elif url_scheme: + url_scheme = "https" if secure else "http" + + # shortcut this. + if not force_external and ( + (self.map.host_matching and host == self.server_name) + or (not self.map.host_matching and domain_part == self.subdomain) + ): + return f"{self.script_name.rstrip('/')}/{path.lstrip('/')}" + + scheme = f"{url_scheme}:" if url_scheme else "" + return f"{scheme}//{host}{self.script_name[:-1]}/{path.lstrip('/')}" diff --git a/gestao_raul/Lib/site-packages/werkzeug/routing/matcher.py b/gestao_raul/Lib/site-packages/werkzeug/routing/matcher.py new file mode 100644 index 0000000..1fd00ef --- /dev/null +++ b/gestao_raul/Lib/site-packages/werkzeug/routing/matcher.py @@ -0,0 +1,202 @@ +from __future__ import annotations + +import re +import typing as t +from dataclasses import dataclass +from dataclasses import field + +from .converters import ValidationError +from .exceptions import NoMatch +from .exceptions import RequestAliasRedirect +from .exceptions import RequestPath +from .rules import Rule +from .rules import RulePart + + +class SlashRequired(Exception): + pass + + +@dataclass +class State: + """A representation of a rule state. + + This includes the *rules* that correspond to the state and the + possible *static* and *dynamic* transitions to the next state. + """ + + dynamic: list[tuple[RulePart, State]] = field(default_factory=list) + rules: list[Rule] = field(default_factory=list) + static: dict[str, State] = field(default_factory=dict) + + +class StateMachineMatcher: + def __init__(self, merge_slashes: bool) -> None: + self._root = State() + self.merge_slashes = merge_slashes + + def add(self, rule: Rule) -> None: + state = self._root + for part in rule._parts: + if part.static: + state.static.setdefault(part.content, State()) + state = state.static[part.content] + else: + for test_part, new_state in state.dynamic: + if test_part == part: + state = new_state + break + else: + new_state = State() + state.dynamic.append((part, new_state)) + state = new_state + state.rules.append(rule) + + def update(self) -> None: + # For every state the dynamic transitions should be sorted by + # the weight of the transition + state = self._root + + def _update_state(state: State) -> None: + state.dynamic.sort(key=lambda entry: entry[0].weight) + for new_state in state.static.values(): + _update_state(new_state) + for _, new_state in state.dynamic: + _update_state(new_state) + + _update_state(state) + + def match( + self, domain: str, path: str, method: str, websocket: bool + ) -> tuple[Rule, t.MutableMapping[str, t.Any]]: + # To match to a rule we need to start at the root state and + # try to follow the transitions until we find a match, or find + # there is no transition to follow. + + have_match_for = set() + websocket_mismatch = False + + def _match( + state: State, parts: list[str], values: list[str] + ) -> tuple[Rule, list[str]] | None: + # This function is meant to be called recursively, and will attempt + # to match the head part to the state's transitions. + nonlocal have_match_for, websocket_mismatch + + # The base case is when all parts have been matched via + # transitions. Hence if there is a rule with methods & + # websocket that work return it and the dynamic values + # extracted. + if parts == []: + for rule in state.rules: + if rule.methods is not None and method not in rule.methods: + have_match_for.update(rule.methods) + elif rule.websocket != websocket: + websocket_mismatch = True + else: + return rule, values + + # Test if there is a match with this path with a + # trailing slash, if so raise an exception to report + # that matching is possible with an additional slash + if "" in state.static: + for rule in state.static[""].rules: + if websocket == rule.websocket and ( + rule.methods is None or method in rule.methods + ): + if rule.strict_slashes: + raise SlashRequired() + else: + return rule, values + return None + + part = parts[0] + # To match this part try the static transitions first + if part in state.static: + rv = _match(state.static[part], parts[1:], values) + if rv is not None: + return rv + # No match via the static transitions, so try the dynamic + # ones. + for test_part, new_state in state.dynamic: + target = part + remaining = parts[1:] + # A final part indicates a transition that always + # consumes the remaining parts i.e. transitions to a + # final state. + if test_part.final: + target = "/".join(parts) + remaining = [] + match = re.compile(test_part.content).match(target) + if match is not None: + if test_part.suffixed: + # If a part_isolating=False part has a slash suffix, remove the + # suffix from the match and check for the slash redirect next. + suffix = match.groups()[-1] + if suffix == "/": + remaining = [""] + + converter_groups = sorted( + match.groupdict().items(), key=lambda entry: entry[0] + ) + groups = [ + value + for key, value in converter_groups + if key[:11] == "__werkzeug_" + ] + rv = _match(new_state, remaining, values + groups) + if rv is not None: + return rv + + # If there is no match and the only part left is a + # trailing slash ("") consider rules that aren't + # strict-slashes as these should match if there is a final + # slash part. + if parts == [""]: + for rule in state.rules: + if rule.strict_slashes: + continue + if rule.methods is not None and method not in rule.methods: + have_match_for.update(rule.methods) + elif rule.websocket != websocket: + websocket_mismatch = True + else: + return rule, values + + return None + + try: + rv = _match(self._root, [domain, *path.split("/")], []) + except SlashRequired: + raise RequestPath(f"{path}/") from None + + if self.merge_slashes and rv is None: + # Try to match again, but with slashes merged + path = re.sub("/{2,}?", "/", path) + try: + rv = _match(self._root, [domain, *path.split("/")], []) + except SlashRequired: + raise RequestPath(f"{path}/") from None + if rv is None or rv[0].merge_slashes is False: + raise NoMatch(have_match_for, websocket_mismatch) + else: + raise RequestPath(f"{path}") + elif rv is not None: + rule, values = rv + + result = {} + for name, value in zip(rule._converters.keys(), values): + try: + value = rule._converters[name].to_python(value) + except ValidationError: + raise NoMatch(have_match_for, websocket_mismatch) from None + result[str(name)] = value + if rule.defaults: + result.update(rule.defaults) + + if rule.alias and rule.map.redirect_defaults: + raise RequestAliasRedirect(result, rule.endpoint) + + return rule, result + + raise NoMatch(have_match_for, websocket_mismatch) diff --git a/gestao_raul/Lib/site-packages/werkzeug/routing/rules.py b/gestao_raul/Lib/site-packages/werkzeug/routing/rules.py new file mode 100644 index 0000000..2dad31d --- /dev/null +++ b/gestao_raul/Lib/site-packages/werkzeug/routing/rules.py @@ -0,0 +1,928 @@ +from __future__ import annotations + +import ast +import re +import typing as t +from dataclasses import dataclass +from string import Template +from types import CodeType +from urllib.parse import quote + +from ..datastructures import iter_multi_items +from ..urls import _urlencode +from .converters import ValidationError + +if t.TYPE_CHECKING: + from .converters import BaseConverter + from .map import Map + + +class Weighting(t.NamedTuple): + number_static_weights: int + static_weights: list[tuple[int, int]] + number_argument_weights: int + argument_weights: list[int] + + +@dataclass +class RulePart: + """A part of a rule. + + Rules can be represented by parts as delimited by `/` with + instances of this class representing those parts. The *content* is + either the raw content if *static* or a regex string to match + against. The *weight* can be used to order parts when matching. + + """ + + content: str + final: bool + static: bool + suffixed: bool + weight: Weighting + + +_part_re = re.compile( + r""" + (?: + (?P/) # a slash + | + (?P[^[a-zA-Z_][a-zA-Z0-9_]*) # converter name + (?:\((?P.*?)\))? # converter arguments + : # variable delimiter + )? + (?P[a-zA-Z_][a-zA-Z0-9_]*) # variable name + > + ) + ) + """, + re.VERBOSE, +) + +_simple_rule_re = re.compile(r"<([^>]+)>") +_converter_args_re = re.compile( + r""" + \s* + ((?P\w+)\s*=\s*)? + (?P + True|False| + \d+.\d+| + \d+.| + \d+| + [\w\d_.]+| + [urUR]?(?P"[^"]*?"|'[^']*') + )\s*, + """, + re.VERBOSE, +) + + +_PYTHON_CONSTANTS = {"None": None, "True": True, "False": False} + + +def _find(value: str, target: str, pos: int) -> int: + """Find the *target* in *value* after *pos*. + + Returns the *value* length if *target* isn't found. + """ + try: + return value.index(target, pos) + except ValueError: + return len(value) + + +def _pythonize(value: str) -> None | bool | int | float | str: + if value in _PYTHON_CONSTANTS: + return _PYTHON_CONSTANTS[value] + for convert in int, float: + try: + return convert(value) + except ValueError: + pass + if value[:1] == value[-1:] and value[0] in "\"'": + value = value[1:-1] + return str(value) + + +def parse_converter_args(argstr: str) -> tuple[tuple[t.Any, ...], dict[str, t.Any]]: + argstr += "," + args = [] + kwargs = {} + position = 0 + + for item in _converter_args_re.finditer(argstr): + if item.start() != position: + raise ValueError( + f"Cannot parse converter argument '{argstr[position:item.start()]}'" + ) + + value = item.group("stringval") + if value is None: + value = item.group("value") + value = _pythonize(value) + if not item.group("name"): + args.append(value) + else: + name = item.group("name") + kwargs[name] = value + position = item.end() + + return tuple(args), kwargs + + +class RuleFactory: + """As soon as you have more complex URL setups it's a good idea to use rule + factories to avoid repetitive tasks. Some of them are builtin, others can + be added by subclassing `RuleFactory` and overriding `get_rules`. + """ + + def get_rules(self, map: Map) -> t.Iterable[Rule]: + """Subclasses of `RuleFactory` have to override this method and return + an iterable of rules.""" + raise NotImplementedError() + + +class Subdomain(RuleFactory): + """All URLs provided by this factory have the subdomain set to a + specific domain. For example if you want to use the subdomain for + the current language this can be a good setup:: + + url_map = Map([ + Rule('/', endpoint='#select_language'), + Subdomain('', [ + Rule('/', endpoint='index'), + Rule('/about', endpoint='about'), + Rule('/help', endpoint='help') + ]) + ]) + + All the rules except for the ``'#select_language'`` endpoint will now + listen on a two letter long subdomain that holds the language code + for the current request. + """ + + def __init__(self, subdomain: str, rules: t.Iterable[RuleFactory]) -> None: + self.subdomain = subdomain + self.rules = rules + + def get_rules(self, map: Map) -> t.Iterator[Rule]: + for rulefactory in self.rules: + for rule in rulefactory.get_rules(map): + rule = rule.empty() + rule.subdomain = self.subdomain + yield rule + + +class Submount(RuleFactory): + """Like `Subdomain` but prefixes the URL rule with a given string:: + + url_map = Map([ + Rule('/', endpoint='index'), + Submount('/blog', [ + Rule('/', endpoint='blog/index'), + Rule('/entry/', endpoint='blog/show') + ]) + ]) + + Now the rule ``'blog/show'`` matches ``/blog/entry/``. + """ + + def __init__(self, path: str, rules: t.Iterable[RuleFactory]) -> None: + self.path = path.rstrip("/") + self.rules = rules + + def get_rules(self, map: Map) -> t.Iterator[Rule]: + for rulefactory in self.rules: + for rule in rulefactory.get_rules(map): + rule = rule.empty() + rule.rule = self.path + rule.rule + yield rule + + +class EndpointPrefix(RuleFactory): + """Prefixes all endpoints (which must be strings for this factory) with + another string. This can be useful for sub applications:: + + url_map = Map([ + Rule('/', endpoint='index'), + EndpointPrefix('blog/', [Submount('/blog', [ + Rule('/', endpoint='index'), + Rule('/entry/', endpoint='show') + ])]) + ]) + """ + + def __init__(self, prefix: str, rules: t.Iterable[RuleFactory]) -> None: + self.prefix = prefix + self.rules = rules + + def get_rules(self, map: Map) -> t.Iterator[Rule]: + for rulefactory in self.rules: + for rule in rulefactory.get_rules(map): + rule = rule.empty() + rule.endpoint = self.prefix + rule.endpoint + yield rule + + +class RuleTemplate: + """Returns copies of the rules wrapped and expands string templates in + the endpoint, rule, defaults or subdomain sections. + + Here a small example for such a rule template:: + + from werkzeug.routing import Map, Rule, RuleTemplate + + resource = RuleTemplate([ + Rule('/$name/', endpoint='$name.list'), + Rule('/$name/', endpoint='$name.show') + ]) + + url_map = Map([resource(name='user'), resource(name='page')]) + + When a rule template is called the keyword arguments are used to + replace the placeholders in all the string parameters. + """ + + def __init__(self, rules: t.Iterable[Rule]) -> None: + self.rules = list(rules) + + def __call__(self, *args: t.Any, **kwargs: t.Any) -> RuleTemplateFactory: + return RuleTemplateFactory(self.rules, dict(*args, **kwargs)) + + +class RuleTemplateFactory(RuleFactory): + """A factory that fills in template variables into rules. Used by + `RuleTemplate` internally. + + :internal: + """ + + def __init__( + self, rules: t.Iterable[RuleFactory], context: dict[str, t.Any] + ) -> None: + self.rules = rules + self.context = context + + def get_rules(self, map: Map) -> t.Iterator[Rule]: + for rulefactory in self.rules: + for rule in rulefactory.get_rules(map): + new_defaults = subdomain = None + if rule.defaults: + new_defaults = {} + for key, value in rule.defaults.items(): + if isinstance(value, str): + value = Template(value).substitute(self.context) + new_defaults[key] = value + if rule.subdomain is not None: + subdomain = Template(rule.subdomain).substitute(self.context) + new_endpoint = rule.endpoint + if isinstance(new_endpoint, str): + new_endpoint = Template(new_endpoint).substitute(self.context) + yield Rule( + Template(rule.rule).substitute(self.context), + new_defaults, + subdomain, + rule.methods, + rule.build_only, + new_endpoint, + rule.strict_slashes, + ) + + +_ASTT = t.TypeVar("_ASTT", bound=ast.AST) + + +def _prefix_names(src: str, expected_type: type[_ASTT]) -> _ASTT: + """ast parse and prefix names with `.` to avoid collision with user vars""" + tree: ast.AST = ast.parse(src).body[0] + if isinstance(tree, ast.Expr): + tree = tree.value + if not isinstance(tree, expected_type): + raise TypeError( + f"AST node is of type {type(tree).__name__}, not {expected_type.__name__}" + ) + for node in ast.walk(tree): + if isinstance(node, ast.Name): + node.id = f".{node.id}" + return tree + + +_CALL_CONVERTER_CODE_FMT = "self._converters[{elem!r}].to_url()" +_IF_KWARGS_URL_ENCODE_CODE = """\ +if kwargs: + params = self._encode_query_vars(kwargs) + q = "?" if params else "" +else: + q = params = "" +""" +_IF_KWARGS_URL_ENCODE_AST = _prefix_names(_IF_KWARGS_URL_ENCODE_CODE, ast.If) +_URL_ENCODE_AST_NAMES = ( + _prefix_names("q", ast.Name), + _prefix_names("params", ast.Name), +) + + +class Rule(RuleFactory): + """A Rule represents one URL pattern. There are some options for `Rule` + that change the way it behaves and are passed to the `Rule` constructor. + Note that besides the rule-string all arguments *must* be keyword arguments + in order to not break the application on Werkzeug upgrades. + + `string` + Rule strings basically are just normal URL paths with placeholders in + the format ```` where the converter and the + arguments are optional. If no converter is defined the `default` + converter is used which means `string` in the normal configuration. + + URL rules that end with a slash are branch URLs, others are leaves. + If you have `strict_slashes` enabled (which is the default), all + branch URLs that are matched without a trailing slash will trigger a + redirect to the same URL with the missing slash appended. + + The converters are defined on the `Map`. + + `endpoint` + The endpoint for this rule. This can be anything. A reference to a + function, a string, a number etc. The preferred way is using a string + because the endpoint is used for URL generation. + + `defaults` + An optional dict with defaults for other rules with the same endpoint. + This is a bit tricky but useful if you want to have unique URLs:: + + url_map = Map([ + Rule('/all/', defaults={'page': 1}, endpoint='all_entries'), + Rule('/all/page/', endpoint='all_entries') + ]) + + If a user now visits ``http://example.com/all/page/1`` they will be + redirected to ``http://example.com/all/``. If `redirect_defaults` is + disabled on the `Map` instance this will only affect the URL + generation. + + `subdomain` + The subdomain rule string for this rule. If not specified the rule + only matches for the `default_subdomain` of the map. If the map is + not bound to a subdomain this feature is disabled. + + Can be useful if you want to have user profiles on different subdomains + and all subdomains are forwarded to your application:: + + url_map = Map([ + Rule('/', subdomain='', endpoint='user/homepage'), + Rule('/stats', subdomain='', endpoint='user/stats') + ]) + + `methods` + A sequence of http methods this rule applies to. If not specified, all + methods are allowed. For example this can be useful if you want different + endpoints for `POST` and `GET`. If methods are defined and the path + matches but the method matched against is not in this list or in the + list of another rule for that path the error raised is of the type + `MethodNotAllowed` rather than `NotFound`. If `GET` is present in the + list of methods and `HEAD` is not, `HEAD` is added automatically. + + `strict_slashes` + Override the `Map` setting for `strict_slashes` only for this rule. If + not specified the `Map` setting is used. + + `merge_slashes` + Override :attr:`Map.merge_slashes` for this rule. + + `build_only` + Set this to True and the rule will never match but will create a URL + that can be build. This is useful if you have resources on a subdomain + or folder that are not handled by the WSGI application (like static data) + + `redirect_to` + If given this must be either a string or callable. In case of a + callable it's called with the url adapter that triggered the match and + the values of the URL as keyword arguments and has to return the target + for the redirect, otherwise it has to be a string with placeholders in + rule syntax:: + + def foo_with_slug(adapter, id): + # ask the database for the slug for the old id. this of + # course has nothing to do with werkzeug. + return f'foo/{Foo.get_slug_for_id(id)}' + + url_map = Map([ + Rule('/foo/', endpoint='foo'), + Rule('/some/old/url/', redirect_to='foo/'), + Rule('/other/old/url/', redirect_to=foo_with_slug) + ]) + + When the rule is matched the routing system will raise a + `RequestRedirect` exception with the target for the redirect. + + Keep in mind that the URL will be joined against the URL root of the + script so don't use a leading slash on the target URL unless you + really mean root of that domain. + + `alias` + If enabled this rule serves as an alias for another rule with the same + endpoint and arguments. + + `host` + If provided and the URL map has host matching enabled this can be + used to provide a match rule for the whole host. This also means + that the subdomain feature is disabled. + + `websocket` + If ``True``, this rule is only matches for WebSocket (``ws://``, + ``wss://``) requests. By default, rules will only match for HTTP + requests. + + .. versionchanged:: 2.1 + Percent-encoded newlines (``%0a``), which are decoded by WSGI + servers, are considered when routing instead of terminating the + match early. + + .. versionadded:: 1.0 + Added ``websocket``. + + .. versionadded:: 1.0 + Added ``merge_slashes``. + + .. versionadded:: 0.7 + Added ``alias`` and ``host``. + + .. versionchanged:: 0.6.1 + ``HEAD`` is added to ``methods`` if ``GET`` is present. + """ + + def __init__( + self, + string: str, + defaults: t.Mapping[str, t.Any] | None = None, + subdomain: str | None = None, + methods: t.Iterable[str] | None = None, + build_only: bool = False, + endpoint: t.Any | None = None, + strict_slashes: bool | None = None, + merge_slashes: bool | None = None, + redirect_to: str | t.Callable[..., str] | None = None, + alias: bool = False, + host: str | None = None, + websocket: bool = False, + ) -> None: + if not string.startswith("/"): + raise ValueError(f"URL rule '{string}' must start with a slash.") + + self.rule = string + self.is_leaf = not string.endswith("/") + self.is_branch = string.endswith("/") + + self.map: Map = None # type: ignore + self.strict_slashes = strict_slashes + self.merge_slashes = merge_slashes + self.subdomain = subdomain + self.host = host + self.defaults = defaults + self.build_only = build_only + self.alias = alias + self.websocket = websocket + + if methods is not None: + if isinstance(methods, str): + raise TypeError("'methods' should be a list of strings.") + + methods = {x.upper() for x in methods} + + if "HEAD" not in methods and "GET" in methods: + methods.add("HEAD") + + if websocket and methods - {"GET", "HEAD", "OPTIONS"}: + raise ValueError( + "WebSocket rules can only use 'GET', 'HEAD', and 'OPTIONS' methods." + ) + + self.methods = methods + self.endpoint: t.Any = endpoint + self.redirect_to = redirect_to + + if defaults: + self.arguments = set(map(str, defaults)) + else: + self.arguments = set() + + self._converters: dict[str, BaseConverter] = {} + self._trace: list[tuple[bool, str]] = [] + self._parts: list[RulePart] = [] + + def empty(self) -> Rule: + """ + Return an unbound copy of this rule. + + This can be useful if want to reuse an already bound URL for another + map. See ``get_empty_kwargs`` to override what keyword arguments are + provided to the new copy. + """ + return type(self)(self.rule, **self.get_empty_kwargs()) + + def get_empty_kwargs(self) -> t.Mapping[str, t.Any]: + """ + Provides kwargs for instantiating empty copy with empty() + + Use this method to provide custom keyword arguments to the subclass of + ``Rule`` when calling ``some_rule.empty()``. Helpful when the subclass + has custom keyword arguments that are needed at instantiation. + + Must return a ``dict`` that will be provided as kwargs to the new + instance of ``Rule``, following the initial ``self.rule`` value which + is always provided as the first, required positional argument. + """ + defaults = None + if self.defaults: + defaults = dict(self.defaults) + return dict( + defaults=defaults, + subdomain=self.subdomain, + methods=self.methods, + build_only=self.build_only, + endpoint=self.endpoint, + strict_slashes=self.strict_slashes, + redirect_to=self.redirect_to, + alias=self.alias, + host=self.host, + ) + + def get_rules(self, map: Map) -> t.Iterator[Rule]: + yield self + + def refresh(self) -> None: + """Rebinds and refreshes the URL. Call this if you modified the + rule in place. + + :internal: + """ + self.bind(self.map, rebind=True) + + def bind(self, map: Map, rebind: bool = False) -> None: + """Bind the url to a map and create a regular expression based on + the information from the rule itself and the defaults from the map. + + :internal: + """ + if self.map is not None and not rebind: + raise RuntimeError(f"url rule {self!r} already bound to map {self.map!r}") + self.map = map + if self.strict_slashes is None: + self.strict_slashes = map.strict_slashes + if self.merge_slashes is None: + self.merge_slashes = map.merge_slashes + if self.subdomain is None: + self.subdomain = map.default_subdomain + self.compile() + + def get_converter( + self, + variable_name: str, + converter_name: str, + args: tuple[t.Any, ...], + kwargs: t.Mapping[str, t.Any], + ) -> BaseConverter: + """Looks up the converter for the given parameter. + + .. versionadded:: 0.9 + """ + if converter_name not in self.map.converters: + raise LookupError(f"the converter {converter_name!r} does not exist") + return self.map.converters[converter_name](self.map, *args, **kwargs) + + def _encode_query_vars(self, query_vars: t.Mapping[str, t.Any]) -> str: + items: t.Iterable[tuple[str, str]] = iter_multi_items(query_vars) + + if self.map.sort_parameters: + items = sorted(items, key=self.map.sort_key) + + return _urlencode(items) + + def _parse_rule(self, rule: str) -> t.Iterable[RulePart]: + content = "" + static = True + argument_weights = [] + static_weights: list[tuple[int, int]] = [] + final = False + convertor_number = 0 + + pos = 0 + while pos < len(rule): + match = _part_re.match(rule, pos) + if match is None: + raise ValueError(f"malformed url rule: {rule!r}") + + data = match.groupdict() + if data["static"] is not None: + static_weights.append((len(static_weights), -len(data["static"]))) + self._trace.append((False, data["static"])) + content += data["static"] if static else re.escape(data["static"]) + + if data["variable"] is not None: + if static: + # Switching content to represent regex, hence the need to escape + content = re.escape(content) + static = False + c_args, c_kwargs = parse_converter_args(data["arguments"] or "") + convobj = self.get_converter( + data["variable"], data["converter"] or "default", c_args, c_kwargs + ) + self._converters[data["variable"]] = convobj + self.arguments.add(data["variable"]) + if not convobj.part_isolating: + final = True + content += f"(?P<__werkzeug_{convertor_number}>{convobj.regex})" + convertor_number += 1 + argument_weights.append(convobj.weight) + self._trace.append((True, data["variable"])) + + if data["slash"] is not None: + self._trace.append((False, "/")) + if final: + content += "/" + else: + if not static: + content += r"\Z" + weight = Weighting( + -len(static_weights), + static_weights, + -len(argument_weights), + argument_weights, + ) + yield RulePart( + content=content, + final=final, + static=static, + suffixed=False, + weight=weight, + ) + content = "" + static = True + argument_weights = [] + static_weights = [] + final = False + convertor_number = 0 + + pos = match.end() + + suffixed = False + if final and content[-1] == "/": + # If a converter is part_isolating=False (matches slashes) and ends with a + # slash, augment the regex to support slash redirects. + suffixed = True + content = content[:-1] + "(? None: + """Compiles the regular expression and stores it.""" + assert self.map is not None, "rule not bound" + + if self.map.host_matching: + domain_rule = self.host or "" + else: + domain_rule = self.subdomain or "" + self._parts = [] + self._trace = [] + self._converters = {} + if domain_rule == "": + self._parts = [ + RulePart( + content="", + final=False, + static=True, + suffixed=False, + weight=Weighting(0, [], 0, []), + ) + ] + else: + self._parts.extend(self._parse_rule(domain_rule)) + self._trace.append((False, "|")) + rule = self.rule + if self.merge_slashes: + rule = re.sub("/{2,}?", "/", self.rule) + self._parts.extend(self._parse_rule(rule)) + + self._build: t.Callable[..., tuple[str, str]] + self._build = self._compile_builder(False).__get__(self, None) + self._build_unknown: t.Callable[..., tuple[str, str]] + self._build_unknown = self._compile_builder(True).__get__(self, None) + + @staticmethod + def _get_func_code(code: CodeType, name: str) -> t.Callable[..., tuple[str, str]]: + globs: dict[str, t.Any] = {} + locs: dict[str, t.Any] = {} + exec(code, globs, locs) + return locs[name] # type: ignore + + def _compile_builder( + self, append_unknown: bool = True + ) -> t.Callable[..., tuple[str, str]]: + defaults = self.defaults or {} + dom_ops: list[tuple[bool, str]] = [] + url_ops: list[tuple[bool, str]] = [] + + opl = dom_ops + for is_dynamic, data in self._trace: + if data == "|" and opl is dom_ops: + opl = url_ops + continue + # this seems like a silly case to ever come up but: + # if a default is given for a value that appears in the rule, + # resolve it to a constant ahead of time + if is_dynamic and data in defaults: + data = self._converters[data].to_url(defaults[data]) + opl.append((False, data)) + elif not is_dynamic: + # safe = https://url.spec.whatwg.org/#url-path-segment-string + opl.append((False, quote(data, safe="!$&'()*+,/:;=@"))) + else: + opl.append((True, data)) + + def _convert(elem: str) -> ast.Call: + ret = _prefix_names(_CALL_CONVERTER_CODE_FMT.format(elem=elem), ast.Call) + ret.args = [ast.Name(elem, ast.Load())] + return ret + + def _parts(ops: list[tuple[bool, str]]) -> list[ast.expr]: + parts: list[ast.expr] = [ + _convert(elem) if is_dynamic else ast.Constant(elem) + for is_dynamic, elem in ops + ] + parts = parts or [ast.Constant("")] + # constant fold + ret = [parts[0]] + for p in parts[1:]: + if isinstance(p, ast.Constant) and isinstance(ret[-1], ast.Constant): + ret[-1] = ast.Constant(ret[-1].value + p.value) + else: + ret.append(p) + return ret + + dom_parts = _parts(dom_ops) + url_parts = _parts(url_ops) + body: list[ast.stmt] + if not append_unknown: + body = [] + else: + body = [_IF_KWARGS_URL_ENCODE_AST] + url_parts.extend(_URL_ENCODE_AST_NAMES) + + def _join(parts: list[ast.expr]) -> ast.expr: + if len(parts) == 1: # shortcut + return parts[0] + return ast.JoinedStr(parts) + + body.append( + ast.Return(ast.Tuple([_join(dom_parts), _join(url_parts)], ast.Load())) + ) + + pargs = [ + elem + for is_dynamic, elem in dom_ops + url_ops + if is_dynamic and elem not in defaults + ] + kargs = [str(k) for k in defaults] + + func_ast = _prefix_names("def _(): pass", ast.FunctionDef) + func_ast.name = f"" + func_ast.args.args.append(ast.arg(".self", None)) + for arg in pargs + kargs: + func_ast.args.args.append(ast.arg(arg, None)) + func_ast.args.kwarg = ast.arg(".kwargs", None) + for _ in kargs: + func_ast.args.defaults.append(ast.Constant("")) + func_ast.body = body + + # Use `ast.parse` instead of `ast.Module` for better portability, since the + # signature of `ast.Module` can change. + module = ast.parse("") + module.body = [func_ast] + + # mark everything as on line 1, offset 0 + # less error-prone than `ast.fix_missing_locations` + # bad line numbers cause an assert to fail in debug builds + for node in ast.walk(module): + if "lineno" in node._attributes: + node.lineno = 1 # type: ignore[attr-defined] + if "end_lineno" in node._attributes: + node.end_lineno = node.lineno # type: ignore[attr-defined] + if "col_offset" in node._attributes: + node.col_offset = 0 # type: ignore[attr-defined] + if "end_col_offset" in node._attributes: + node.end_col_offset = node.col_offset # type: ignore[attr-defined] + + code = compile(module, "", "exec") + return self._get_func_code(code, func_ast.name) + + def build( + self, values: t.Mapping[str, t.Any], append_unknown: bool = True + ) -> tuple[str, str] | None: + """Assembles the relative url for that rule and the subdomain. + If building doesn't work for some reasons `None` is returned. + + :internal: + """ + try: + if append_unknown: + return self._build_unknown(**values) + else: + return self._build(**values) + except ValidationError: + return None + + def provides_defaults_for(self, rule: Rule) -> bool: + """Check if this rule has defaults for a given rule. + + :internal: + """ + return bool( + not self.build_only + and self.defaults + and self.endpoint == rule.endpoint + and self != rule + and self.arguments == rule.arguments + ) + + def suitable_for( + self, values: t.Mapping[str, t.Any], method: str | None = None + ) -> bool: + """Check if the dict of values has enough data for url generation. + + :internal: + """ + # if a method was given explicitly and that method is not supported + # by this rule, this rule is not suitable. + if ( + method is not None + and self.methods is not None + and method not in self.methods + ): + return False + + defaults = self.defaults or () + + # all arguments required must be either in the defaults dict or + # the value dictionary otherwise it's not suitable + for key in self.arguments: + if key not in defaults and key not in values: + return False + + # in case defaults are given we ensure that either the value was + # skipped or the value is the same as the default value. + if defaults: + for key, value in defaults.items(): + if key in values and value != values[key]: + return False + + return True + + def build_compare_key(self) -> tuple[int, int, int]: + """The build compare key for sorting. + + :internal: + """ + return (1 if self.alias else 0, -len(self.arguments), -len(self.defaults or ())) + + def __eq__(self, other: object) -> bool: + return isinstance(other, type(self)) and self._trace == other._trace + + __hash__ = None # type: ignore + + def __str__(self) -> str: + return self.rule + + def __repr__(self) -> str: + if self.map is None: + return f"<{type(self).__name__} (unbound)>" + parts = [] + for is_dynamic, data in self._trace: + if is_dynamic: + parts.append(f"<{data}>") + else: + parts.append(data) + parts_str = "".join(parts).lstrip("|") + methods = f" ({', '.join(self.methods)})" if self.methods is not None else "" + return f"<{type(self).__name__} {parts_str!r}{methods} -> {self.endpoint}>" diff --git a/gestao_raul/Lib/site-packages/werkzeug/sansio/__init__.py b/gestao_raul/Lib/site-packages/werkzeug/sansio/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/gestao_raul/Lib/site-packages/werkzeug/sansio/__pycache__/__init__.cpython-310.pyc b/gestao_raul/Lib/site-packages/werkzeug/sansio/__pycache__/__init__.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..96a99b13dd5e822d37538809ed33ce439db2544c GIT binary patch literal 181 zcmd1j<>g`k0yF>B=^*+sh(HF6K#l_t7qb9~6oz01O-8?!3`HPe1o11v*(xTqIJKxa zraU#LBtOO_Ke;qFHLs*NCMd|s)j1|TwYVfPKfWljG$+OR5hw%H wQAR1B9>y3#}3BGDfr=+Fjdx3tb1_LRcIXyG6`7 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 SwbH-crdzOGo7KNwxb|PpkAk}Z literal 0 HcmV?d00001 diff --git a/gestao_raul/Lib/site-packages/werkzeug/sansio/__pycache__/multipart.cpython-310.pyc b/gestao_raul/Lib/site-packages/werkzeug/sansio/__pycache__/multipart.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..38c672535fd820a8ad6e513a7f2fc3524b164c09 GIT binary patch literal 7491 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 Ia&qba0L}kooB#j- literal 0 HcmV?d00001 diff --git a/gestao_raul/Lib/site-packages/werkzeug/sansio/__pycache__/request.cpython-310.pyc b/gestao_raul/Lib/site-packages/werkzeug/sansio/__pycache__/request.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..ea1a01ef961d1ea9d74bbf2e330c72ac3a5b6fec GIT binary patch literal 17313 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 literal 0 HcmV?d00001 diff --git a/gestao_raul/Lib/site-packages/werkzeug/sansio/__pycache__/response.cpython-310.pyc b/gestao_raul/Lib/site-packages/werkzeug/sansio/__pycache__/response.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..1300c8b21dc1a4b1aa20c75e01a175fca7b73ff1 GIT binary patch literal 24870 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 literal 0 HcmV?d00001 diff --git a/gestao_raul/Lib/site-packages/werkzeug/sansio/__pycache__/utils.cpython-310.pyc b/gestao_raul/Lib/site-packages/werkzeug/sansio/__pycache__/utils.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..6a1358557d55645f2b11e3091a9f895de6a9c8e7 GIT binary patch literal 4754 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 literal 0 HcmV?d00001 diff --git a/gestao_raul/Lib/site-packages/werkzeug/sansio/http.py b/gestao_raul/Lib/site-packages/werkzeug/sansio/http.py new file mode 100644 index 0000000..f02d7fd --- /dev/null +++ b/gestao_raul/Lib/site-packages/werkzeug/sansio/http.py @@ -0,0 +1,170 @@ +from __future__ import annotations + +import re +import typing as t +from datetime import datetime + +from .._internal import _dt_as_utc +from ..http import generate_etag +from ..http import parse_date +from ..http import parse_etags +from ..http import parse_if_range_header +from ..http import unquote_etag + +_etag_re = re.compile(r'([Ww]/)?(?:"(.*?)"|(.*?))(?:\s*,\s*|$)') + + +def is_resource_modified( + http_range: str | None = None, + http_if_range: str | None = None, + http_if_modified_since: str | None = None, + http_if_none_match: str | None = None, + http_if_match: str | None = None, + etag: str | None = None, + data: bytes | None = None, + last_modified: datetime | str | None = None, + ignore_if_range: bool = True, +) -> bool: + """Convenience method for conditional requests. + :param http_range: Range HTTP header + :param http_if_range: If-Range HTTP header + :param http_if_modified_since: If-Modified-Since HTTP header + :param http_if_none_match: If-None-Match HTTP header + :param http_if_match: If-Match HTTP header + :param etag: the etag for the response for comparison. + :param data: or alternatively the data of the response to automatically + generate an etag using :func:`generate_etag`. + :param last_modified: an optional date of the last modification. + :param ignore_if_range: If `False`, `If-Range` header will be taken into + account. + :return: `True` if the resource was modified, otherwise `False`. + + .. versionadded:: 2.2 + """ + if etag is None and data is not None: + etag = generate_etag(data) + elif data is not None: + raise TypeError("both data and etag given") + + unmodified = False + if isinstance(last_modified, str): + last_modified = parse_date(last_modified) + + # HTTP doesn't use microsecond, remove it to avoid false positive + # comparisons. Mark naive datetimes as UTC. + if last_modified is not None: + last_modified = _dt_as_utc(last_modified.replace(microsecond=0)) + + if_range = None + if not ignore_if_range and http_range is not None: + # https://tools.ietf.org/html/rfc7233#section-3.2 + # A server MUST ignore an If-Range header field received in a request + # that does not contain a Range header field. + if_range = parse_if_range_header(http_if_range) + + if if_range is not None and if_range.date is not None: + modified_since: datetime | None = if_range.date + else: + modified_since = parse_date(http_if_modified_since) + + if modified_since and last_modified and last_modified <= modified_since: + unmodified = True + + if etag: + etag, _ = unquote_etag(etag) + + if if_range is not None and if_range.etag is not None: + unmodified = parse_etags(if_range.etag).contains(etag) + else: + if_none_match = parse_etags(http_if_none_match) + if if_none_match: + # https://tools.ietf.org/html/rfc7232#section-3.2 + # "A recipient MUST use the weak comparison function when comparing + # entity-tags for If-None-Match" + unmodified = if_none_match.contains_weak(etag) + + # https://tools.ietf.org/html/rfc7232#section-3.1 + # "Origin server MUST use the strong comparison function when + # comparing entity-tags for If-Match" + if_match = parse_etags(http_if_match) + if if_match: + unmodified = not if_match.is_strong(etag) + + return not unmodified + + +_cookie_re = re.compile( + r""" + ([^=;]*) + (?:\s*=\s* + ( + "(?:[^\\"]|\\.)*" + | + .*? + ) + )? + \s*;\s* + """, + flags=re.ASCII | re.VERBOSE, +) +_cookie_unslash_re = re.compile(rb"\\([0-3][0-7]{2}|.)") + + +def _cookie_unslash_replace(m: t.Match[bytes]) -> bytes: + v = m.group(1) + + if len(v) == 1: + return v + + return int(v, 8).to_bytes(1, "big") + + +def parse_cookie( + cookie: str | None = None, + cls: type[ds.MultiDict[str, str]] | None = None, +) -> ds.MultiDict[str, str]: + """Parse a cookie from a string. + + The same key can be provided multiple times, the values are stored + in-order. The default :class:`MultiDict` will have the first value + first, and all values can be retrieved with + :meth:`MultiDict.getlist`. + + :param cookie: The cookie header as a string. + :param cls: A dict-like class to store the parsed cookies in. + Defaults to :class:`MultiDict`. + + .. versionchanged:: 3.0 + Passing bytes, and the ``charset`` and ``errors`` parameters, were removed. + + .. versionadded:: 2.2 + """ + if cls is None: + cls = t.cast("type[ds.MultiDict[str, str]]", ds.MultiDict) + + if not cookie: + return cls() + + cookie = f"{cookie};" + out = [] + + for ck, cv in _cookie_re.findall(cookie): + ck = ck.strip() + cv = cv.strip() + + if not ck: + continue + + if len(cv) >= 2 and cv[0] == cv[-1] == '"': + # Work with bytes here, since a UTF-8 character could be multiple bytes. + cv = _cookie_unslash_re.sub( + _cookie_unslash_replace, cv[1:-1].encode() + ).decode(errors="replace") + + out.append((ck, cv)) + + return cls(out) + + +# circular dependencies +from .. import datastructures as ds diff --git a/gestao_raul/Lib/site-packages/werkzeug/sansio/multipart.py b/gestao_raul/Lib/site-packages/werkzeug/sansio/multipart.py new file mode 100644 index 0000000..731be03 --- /dev/null +++ b/gestao_raul/Lib/site-packages/werkzeug/sansio/multipart.py @@ -0,0 +1,323 @@ +from __future__ import annotations + +import re +import typing as t +from dataclasses import dataclass +from enum import auto +from enum import Enum + +from ..datastructures import Headers +from ..exceptions import RequestEntityTooLarge +from ..http import parse_options_header + + +class Event: + pass + + +@dataclass(frozen=True) +class Preamble(Event): + data: bytes + + +@dataclass(frozen=True) +class Field(Event): + name: str + headers: Headers + + +@dataclass(frozen=True) +class File(Event): + name: str + filename: str + headers: Headers + + +@dataclass(frozen=True) +class Data(Event): + data: bytes + more_data: bool + + +@dataclass(frozen=True) +class Epilogue(Event): + data: bytes + + +class NeedData(Event): + pass + + +NEED_DATA = NeedData() + + +class State(Enum): + PREAMBLE = auto() + PART = auto() + DATA = auto() + DATA_START = auto() + EPILOGUE = auto() + COMPLETE = auto() + + +# Multipart line breaks MUST be CRLF (\r\n) by RFC-7578, except that +# many implementations break this and either use CR or LF alone. +LINE_BREAK = b"(?:\r\n|\n|\r)" +BLANK_LINE_RE = re.compile(b"(?:\r\n\r\n|\r\r|\n\n)", re.MULTILINE) +LINE_BREAK_RE = re.compile(LINE_BREAK, re.MULTILINE) +# Header values can be continued via a space or tab after the linebreak, as +# per RFC2231 +HEADER_CONTINUATION_RE = re.compile(b"%s[ \t]" % LINE_BREAK, re.MULTILINE) +# This must be long enough to contain any line breaks plus any +# additional boundary markers (--) such that they will be found in a +# subsequent search +SEARCH_EXTRA_LENGTH = 8 + + +class MultipartDecoder: + """Decodes a multipart message as bytes into Python events. + + The part data is returned as available to allow the caller to save + the data from memory to disk, if desired. + """ + + def __init__( + self, + boundary: bytes, + max_form_memory_size: int | None = None, + *, + max_parts: int | None = None, + ) -> None: + self.buffer = bytearray() + self.complete = False + self.max_form_memory_size = max_form_memory_size + self.max_parts = max_parts + self.state = State.PREAMBLE + self.boundary = boundary + + # Note in the below \h i.e. horizontal whitespace is used + # as [^\S\n\r] as \h isn't supported in python. + + # The preamble must end with a boundary where the boundary is + # prefixed by a line break, RFC2046. Except that many + # implementations including Werkzeug's tests omit the line + # break prefix. In addition the first boundary could be the + # epilogue boundary (for empty form-data) hence the matching + # group to understand if it is an epilogue boundary. + self.preamble_re = re.compile( + rb"%s?--%s(--[^\S\n\r]*%s?|[^\S\n\r]*%s)" + % (LINE_BREAK, re.escape(boundary), LINE_BREAK, LINE_BREAK), + re.MULTILINE, + ) + # A boundary must include a line break prefix and suffix, and + # may include trailing whitespace. In addition the boundary + # could be the epilogue boundary hence the matching group to + # understand if it is an epilogue boundary. + self.boundary_re = re.compile( + rb"%s--%s(--[^\S\n\r]*%s?|[^\S\n\r]*%s)" + % (LINE_BREAK, re.escape(boundary), LINE_BREAK, LINE_BREAK), + re.MULTILINE, + ) + self._search_position = 0 + self._parts_decoded = 0 + + def last_newline(self, data: bytes) -> int: + try: + last_nl = data.rindex(b"\n") + except ValueError: + last_nl = len(data) + try: + last_cr = data.rindex(b"\r") + except ValueError: + last_cr = len(data) + + return min(last_nl, last_cr) + + def receive_data(self, data: bytes | None) -> None: + if data is None: + self.complete = True + elif ( + self.max_form_memory_size is not None + and len(self.buffer) + len(data) > self.max_form_memory_size + ): + # Ensure that data within single event does not exceed limit. + # Also checked across accumulated events in MultiPartParser. + raise RequestEntityTooLarge() + else: + self.buffer.extend(data) + + def next_event(self) -> Event: + event: Event = NEED_DATA + + if self.state == State.PREAMBLE: + match = self.preamble_re.search(self.buffer, self._search_position) + if match is not None: + if match.group(1).startswith(b"--"): + self.state = State.EPILOGUE + else: + self.state = State.PART + data = bytes(self.buffer[: match.start()]) + del self.buffer[: match.end()] + event = Preamble(data=data) + self._search_position = 0 + else: + # Update the search start position to be equal to the + # current buffer length (already searched) minus a + # safe buffer for part of the search target. + self._search_position = max( + 0, len(self.buffer) - len(self.boundary) - SEARCH_EXTRA_LENGTH + ) + + elif self.state == State.PART: + match = BLANK_LINE_RE.search(self.buffer, self._search_position) + if match is not None: + headers = self._parse_headers(self.buffer[: match.start()]) + # The final header ends with a single CRLF, however a + # blank line indicates the start of the + # body. Therefore the end is after the first CRLF. + headers_end = (match.start() + match.end()) // 2 + del self.buffer[:headers_end] + + if "content-disposition" not in headers: + raise ValueError("Missing Content-Disposition header") + + disposition, extra = parse_options_header( + headers["content-disposition"] + ) + name = t.cast(str, extra.get("name")) + filename = extra.get("filename") + if filename is not None: + event = File( + filename=filename, + headers=headers, + name=name, + ) + else: + event = Field( + headers=headers, + name=name, + ) + self.state = State.DATA_START + self._search_position = 0 + self._parts_decoded += 1 + + if self.max_parts is not None and self._parts_decoded > self.max_parts: + raise RequestEntityTooLarge() + else: + # Update the search start position to be equal to the + # current buffer length (already searched) minus a + # safe buffer for part of the search target. + self._search_position = max(0, len(self.buffer) - SEARCH_EXTRA_LENGTH) + + elif self.state == State.DATA_START: + data, del_index, more_data = self._parse_data(self.buffer, start=True) + del self.buffer[:del_index] + event = Data(data=data, more_data=more_data) + if more_data: + self.state = State.DATA + + elif self.state == State.DATA: + data, del_index, more_data = self._parse_data(self.buffer, start=False) + del self.buffer[:del_index] + if data or not more_data: + event = Data(data=data, more_data=more_data) + + elif self.state == State.EPILOGUE and self.complete: + event = Epilogue(data=bytes(self.buffer)) + del self.buffer[:] + self.state = State.COMPLETE + + if self.complete and isinstance(event, NeedData): + raise ValueError(f"Invalid form-data cannot parse beyond {self.state}") + + return event + + def _parse_headers(self, data: bytes) -> Headers: + headers: list[tuple[str, str]] = [] + # Merge the continued headers into one line + data = HEADER_CONTINUATION_RE.sub(b" ", data) + # Now there is one header per line + for line in data.splitlines(): + line = line.strip() + + if line != b"": + name, _, value = line.decode().partition(":") + headers.append((name.strip(), value.strip())) + return Headers(headers) + + def _parse_data(self, data: bytes, *, start: bool) -> tuple[bytes, int, bool]: + # Body parts must start with CRLF (or CR or LF) + if start: + match = LINE_BREAK_RE.match(data) + data_start = t.cast(t.Match[bytes], match).end() + else: + data_start = 0 + + boundary = b"--" + self.boundary + + if self.buffer.find(boundary) == -1: + # No complete boundary in the buffer, but there may be + # a partial boundary at the end. As the boundary + # starts with either a nl or cr find the earliest and + # return up to that as data. + data_end = del_index = self.last_newline(data[data_start:]) + data_start + # If amount of data after last newline is far from + # possible length of partial boundary, we should + # assume that there is no partial boundary in the buffer + # and return all pending data. + if (len(data) - data_end) > len(b"\n" + boundary): + data_end = del_index = len(data) + more_data = True + else: + match = self.boundary_re.search(data) + if match is not None: + if match.group(1).startswith(b"--"): + self.state = State.EPILOGUE + else: + self.state = State.PART + data_end = match.start() + del_index = match.end() + else: + data_end = del_index = self.last_newline(data[data_start:]) + data_start + more_data = match is None + + return bytes(data[data_start:data_end]), del_index, more_data + + +class MultipartEncoder: + def __init__(self, boundary: bytes) -> None: + self.boundary = boundary + self.state = State.PREAMBLE + + def send_event(self, event: Event) -> bytes: + if isinstance(event, Preamble) and self.state == State.PREAMBLE: + self.state = State.PART + return event.data + elif isinstance(event, (Field, File)) and self.state in { + State.PREAMBLE, + State.PART, + State.DATA, + }: + data = b"\r\n--" + self.boundary + b"\r\n" + data += b'Content-Disposition: form-data; name="%s"' % event.name.encode() + if isinstance(event, File): + data += b'; filename="%s"' % event.filename.encode() + data += b"\r\n" + for name, value in t.cast(Field, event).headers: + if name.lower() != "content-disposition": + data += f"{name}: {value}\r\n".encode() + self.state = State.DATA_START + return data + elif isinstance(event, Data) and self.state == State.DATA_START: + self.state = State.DATA + if len(event.data) > 0: + return b"\r\n" + event.data + else: + return event.data + elif isinstance(event, Data) and self.state == State.DATA: + return event.data + elif isinstance(event, Epilogue): + self.state = State.COMPLETE + return b"\r\n--" + self.boundary + b"--\r\n" + event.data + else: + raise ValueError(f"Cannot generate {event} in state: {self.state}") diff --git a/gestao_raul/Lib/site-packages/werkzeug/sansio/request.py b/gestao_raul/Lib/site-packages/werkzeug/sansio/request.py new file mode 100644 index 0000000..8d5fbd8 --- /dev/null +++ b/gestao_raul/Lib/site-packages/werkzeug/sansio/request.py @@ -0,0 +1,534 @@ +from __future__ import annotations + +import typing as t +from datetime import datetime +from urllib.parse import parse_qsl + +from ..datastructures import Accept +from ..datastructures import Authorization +from ..datastructures import CharsetAccept +from ..datastructures import ETags +from ..datastructures import Headers +from ..datastructures import HeaderSet +from ..datastructures import IfRange +from ..datastructures import ImmutableList +from ..datastructures import ImmutableMultiDict +from ..datastructures import LanguageAccept +from ..datastructures import MIMEAccept +from ..datastructures import MultiDict +from ..datastructures import Range +from ..datastructures import RequestCacheControl +from ..http import parse_accept_header +from ..http import parse_cache_control_header +from ..http import parse_date +from ..http import parse_etags +from ..http import parse_if_range_header +from ..http import parse_list_header +from ..http import parse_options_header +from ..http import parse_range_header +from ..http import parse_set_header +from ..user_agent import UserAgent +from ..utils import cached_property +from ..utils import header_property +from .http import parse_cookie +from .utils import get_content_length +from .utils import get_current_url +from .utils import get_host + + +class Request: + """Represents the non-IO parts of a HTTP request, including the + method, URL info, and headers. + + This class is not meant for general use. It should only be used when + implementing WSGI, ASGI, or another HTTP application spec. Werkzeug + provides a WSGI implementation at :cls:`werkzeug.wrappers.Request`. + + :param method: The method the request was made with, such as + ``GET``. + :param scheme: The URL scheme of the protocol the request used, such + as ``https`` or ``wss``. + :param server: The address of the server. ``(host, port)``, + ``(path, None)`` for unix sockets, or ``None`` if not known. + :param root_path: The prefix that the application is mounted under. + This is prepended to generated URLs, but is not part of route + matching. + :param path: The path part of the URL after ``root_path``. + :param query_string: The part of the URL after the "?". + :param headers: The headers received with the request. + :param remote_addr: The address of the client sending the request. + + .. versionchanged:: 3.0 + The ``charset``, ``url_charset``, and ``encoding_errors`` attributes + were removed. + + .. versionadded:: 2.0 + """ + + #: the class to use for `args` and `form`. The default is an + #: :class:`~werkzeug.datastructures.ImmutableMultiDict` which supports + #: multiple values per key. A :class:`~werkzeug.datastructures.ImmutableDict` + #: is faster but only remembers the last key. It is also + #: possible to use mutable structures, but this is not recommended. + #: + #: .. versionadded:: 0.6 + parameter_storage_class: type[MultiDict[str, t.Any]] = ImmutableMultiDict + + #: The type to be used for dict values from the incoming WSGI + #: environment. (For example for :attr:`cookies`.) By default an + #: :class:`~werkzeug.datastructures.ImmutableMultiDict` is used. + #: + #: .. versionchanged:: 1.0.0 + #: Changed to ``ImmutableMultiDict`` to support multiple values. + #: + #: .. versionadded:: 0.6 + dict_storage_class: type[MultiDict[str, t.Any]] = ImmutableMultiDict + + #: the type to be used for list values from the incoming WSGI environment. + #: By default an :class:`~werkzeug.datastructures.ImmutableList` is used + #: (for example for :attr:`access_list`). + #: + #: .. versionadded:: 0.6 + list_storage_class: type[list[t.Any]] = ImmutableList + + user_agent_class: type[UserAgent] = UserAgent + """The class used and returned by the :attr:`user_agent` property to + parse the header. Defaults to + :class:`~werkzeug.user_agent.UserAgent`, which does no parsing. An + extension can provide a subclass that uses a parser to provide other + data. + + .. versionadded:: 2.0 + """ + + #: Valid host names when handling requests. By default all hosts are + #: trusted, which means that whatever the client says the host is + #: will be accepted. + #: + #: Because ``Host`` and ``X-Forwarded-Host`` headers can be set to + #: any value by a malicious client, it is recommended to either set + #: this property or implement similar validation in the proxy (if + #: the application is being run behind one). + #: + #: .. versionadded:: 0.9 + trusted_hosts: list[str] | None = None + + def __init__( + self, + method: str, + scheme: str, + server: tuple[str, int | None] | None, + root_path: str, + path: str, + query_string: bytes, + headers: Headers, + remote_addr: str | None, + ) -> None: + #: The method the request was made with, such as ``GET``. + self.method = method.upper() + #: The URL scheme of the protocol the request used, such as + #: ``https`` or ``wss``. + self.scheme = scheme + #: The address of the server. ``(host, port)``, ``(path, None)`` + #: for unix sockets, or ``None`` if not known. + self.server = server + #: The prefix that the application is mounted under, without a + #: trailing slash. :attr:`path` comes after this. + self.root_path = root_path.rstrip("/") + #: The path part of the URL after :attr:`root_path`. This is the + #: path used for routing within the application. + self.path = "/" + path.lstrip("/") + #: The part of the URL after the "?". This is the raw value, use + #: :attr:`args` for the parsed values. + self.query_string = query_string + #: The headers received with the request. + self.headers = headers + #: The address of the client sending the request. + self.remote_addr = remote_addr + + def __repr__(self) -> str: + try: + url = self.url + except Exception as e: + url = f"(invalid URL: {e})" + + return f"<{type(self).__name__} {url!r} [{self.method}]>" + + @cached_property + def args(self) -> MultiDict[str, str]: + """The parsed URL parameters (the part in the URL after the question + mark). + + By default an + :class:`~werkzeug.datastructures.ImmutableMultiDict` + is returned from this function. This can be changed by setting + :attr:`parameter_storage_class` to a different type. This might + be necessary if the order of the form data is important. + + .. versionchanged:: 2.3 + Invalid bytes remain percent encoded. + """ + return self.parameter_storage_class( + parse_qsl( + self.query_string.decode(), + keep_blank_values=True, + errors="werkzeug.url_quote", + ) + ) + + @cached_property + def access_route(self) -> list[str]: + """If a forwarded header exists this is a list of all ip addresses + from the client ip to the last proxy server. + """ + if "X-Forwarded-For" in self.headers: + return self.list_storage_class( + parse_list_header(self.headers["X-Forwarded-For"]) + ) + elif self.remote_addr is not None: + return self.list_storage_class([self.remote_addr]) + return self.list_storage_class() + + @cached_property + def full_path(self) -> str: + """Requested path, including the query string.""" + return f"{self.path}?{self.query_string.decode()}" + + @property + def is_secure(self) -> bool: + """``True`` if the request was made with a secure protocol + (HTTPS or WSS). + """ + return self.scheme in {"https", "wss"} + + @cached_property + def url(self) -> str: + """The full request URL with the scheme, host, root path, path, + and query string.""" + return get_current_url( + self.scheme, self.host, self.root_path, self.path, self.query_string + ) + + @cached_property + def base_url(self) -> str: + """Like :attr:`url` but without the query string.""" + return get_current_url(self.scheme, self.host, self.root_path, self.path) + + @cached_property + def root_url(self) -> str: + """The request URL scheme, host, and root path. This is the root + that the application is accessed from. + """ + return get_current_url(self.scheme, self.host, self.root_path) + + @cached_property + def host_url(self) -> str: + """The request URL scheme and host only.""" + return get_current_url(self.scheme, self.host) + + @cached_property + def host(self) -> str: + """The host name the request was made to, including the port if + it's non-standard. Validated with :attr:`trusted_hosts`. + """ + return get_host( + self.scheme, self.headers.get("host"), self.server, self.trusted_hosts + ) + + @cached_property + def cookies(self) -> ImmutableMultiDict[str, str]: + """A :class:`dict` with the contents of all cookies transmitted with + the request.""" + wsgi_combined_cookie = ";".join(self.headers.getlist("Cookie")) + return parse_cookie( # type: ignore + wsgi_combined_cookie, cls=self.dict_storage_class + ) + + # Common Descriptors + + content_type = header_property[str]( + "Content-Type", + doc="""The Content-Type entity-header field indicates the media + type of the entity-body sent to the recipient or, in the case of + the HEAD method, the media type that would have been sent had + the request been a GET.""", + read_only=True, + ) + + @cached_property + def content_length(self) -> int | None: + """The Content-Length entity-header field indicates the size of the + entity-body in bytes or, in the case of the HEAD method, the size of + the entity-body that would have been sent had the request been a + GET. + """ + return get_content_length( + http_content_length=self.headers.get("Content-Length"), + http_transfer_encoding=self.headers.get("Transfer-Encoding"), + ) + + content_encoding = header_property[str]( + "Content-Encoding", + doc="""The Content-Encoding entity-header field is used as a + modifier to the media-type. When present, its value indicates + what additional content codings have been applied to the + entity-body, and thus what decoding mechanisms must be applied + in order to obtain the media-type referenced by the Content-Type + header field. + + .. versionadded:: 0.9""", + read_only=True, + ) + content_md5 = header_property[str]( + "Content-MD5", + doc="""The Content-MD5 entity-header field, as defined in + RFC 1864, is an MD5 digest of the entity-body for the purpose of + providing an end-to-end message integrity check (MIC) of the + entity-body. (Note: a MIC is good for detecting accidental + modification of the entity-body in transit, but is not proof + against malicious attacks.) + + .. versionadded:: 0.9""", + read_only=True, + ) + referrer = header_property[str]( + "Referer", + doc="""The Referer[sic] request-header field allows the client + to specify, for the server's benefit, the address (URI) of the + resource from which the Request-URI was obtained (the + "referrer", although the header field is misspelled).""", + read_only=True, + ) + date = header_property( + "Date", + None, + parse_date, + doc="""The Date general-header field represents the date and + time at which the message was originated, having the same + semantics as orig-date in RFC 822. + + .. versionchanged:: 2.0 + The datetime object is timezone-aware. + """, + read_only=True, + ) + max_forwards = header_property( + "Max-Forwards", + None, + int, + doc="""The Max-Forwards request-header field provides a + mechanism with the TRACE and OPTIONS methods to limit the number + of proxies or gateways that can forward the request to the next + inbound server.""", + read_only=True, + ) + + def _parse_content_type(self) -> None: + if not hasattr(self, "_parsed_content_type"): + self._parsed_content_type = parse_options_header( + self.headers.get("Content-Type", "") + ) + + @property + def mimetype(self) -> str: + """Like :attr:`content_type`, but without parameters (eg, without + charset, type etc.) and always lowercase. For example if the content + type is ``text/HTML; charset=utf-8`` the mimetype would be + ``'text/html'``. + """ + self._parse_content_type() + return self._parsed_content_type[0].lower() + + @property + def mimetype_params(self) -> dict[str, str]: + """The mimetype parameters as dict. For example if the content + type is ``text/html; charset=utf-8`` the params would be + ``{'charset': 'utf-8'}``. + """ + self._parse_content_type() + return self._parsed_content_type[1] + + @cached_property + def pragma(self) -> HeaderSet: + """The Pragma general-header field is used to include + implementation-specific directives that might apply to any recipient + along the request/response chain. All pragma directives specify + optional behavior from the viewpoint of the protocol; however, some + systems MAY require that behavior be consistent with the directives. + """ + return parse_set_header(self.headers.get("Pragma", "")) + + # Accept + + @cached_property + def accept_mimetypes(self) -> MIMEAccept: + """List of mimetypes this client supports as + :class:`~werkzeug.datastructures.MIMEAccept` object. + """ + return parse_accept_header(self.headers.get("Accept"), MIMEAccept) + + @cached_property + def accept_charsets(self) -> CharsetAccept: + """List of charsets this client supports as + :class:`~werkzeug.datastructures.CharsetAccept` object. + """ + return parse_accept_header(self.headers.get("Accept-Charset"), CharsetAccept) + + @cached_property + def accept_encodings(self) -> Accept: + """List of encodings this client accepts. Encodings in a HTTP term + are compression encodings such as gzip. For charsets have a look at + :attr:`accept_charset`. + """ + return parse_accept_header(self.headers.get("Accept-Encoding")) + + @cached_property + def accept_languages(self) -> LanguageAccept: + """List of languages this client accepts as + :class:`~werkzeug.datastructures.LanguageAccept` object. + + .. versionchanged 0.5 + In previous versions this was a regular + :class:`~werkzeug.datastructures.Accept` object. + """ + return parse_accept_header(self.headers.get("Accept-Language"), LanguageAccept) + + # ETag + + @cached_property + def cache_control(self) -> RequestCacheControl: + """A :class:`~werkzeug.datastructures.RequestCacheControl` object + for the incoming cache control headers. + """ + cache_control = self.headers.get("Cache-Control") + return parse_cache_control_header(cache_control, None, RequestCacheControl) + + @cached_property + def if_match(self) -> ETags: + """An object containing all the etags in the `If-Match` header. + + :rtype: :class:`~werkzeug.datastructures.ETags` + """ + return parse_etags(self.headers.get("If-Match")) + + @cached_property + def if_none_match(self) -> ETags: + """An object containing all the etags in the `If-None-Match` header. + + :rtype: :class:`~werkzeug.datastructures.ETags` + """ + return parse_etags(self.headers.get("If-None-Match")) + + @cached_property + def if_modified_since(self) -> datetime | None: + """The parsed `If-Modified-Since` header as a datetime object. + + .. versionchanged:: 2.0 + The datetime object is timezone-aware. + """ + return parse_date(self.headers.get("If-Modified-Since")) + + @cached_property + def if_unmodified_since(self) -> datetime | None: + """The parsed `If-Unmodified-Since` header as a datetime object. + + .. versionchanged:: 2.0 + The datetime object is timezone-aware. + """ + return parse_date(self.headers.get("If-Unmodified-Since")) + + @cached_property + def if_range(self) -> IfRange: + """The parsed ``If-Range`` header. + + .. versionchanged:: 2.0 + ``IfRange.date`` is timezone-aware. + + .. versionadded:: 0.7 + """ + return parse_if_range_header(self.headers.get("If-Range")) + + @cached_property + def range(self) -> Range | None: + """The parsed `Range` header. + + .. versionadded:: 0.7 + + :rtype: :class:`~werkzeug.datastructures.Range` + """ + return parse_range_header(self.headers.get("Range")) + + # User Agent + + @cached_property + def user_agent(self) -> UserAgent: + """The user agent. Use ``user_agent.string`` to get the header + value. Set :attr:`user_agent_class` to a subclass of + :class:`~werkzeug.user_agent.UserAgent` to provide parsing for + the other properties or other extended data. + + .. versionchanged:: 2.1 + The built-in parser was removed. Set ``user_agent_class`` to a ``UserAgent`` + subclass to parse data from the string. + """ + return self.user_agent_class(self.headers.get("User-Agent", "")) + + # Authorization + + @cached_property + def authorization(self) -> Authorization | None: + """The ``Authorization`` header parsed into an :class:`.Authorization` object. + ``None`` if the header is not present. + + .. versionchanged:: 2.3 + :class:`Authorization` is no longer a ``dict``. The ``token`` attribute + was added for auth schemes that use a token instead of parameters. + """ + return Authorization.from_header(self.headers.get("Authorization")) + + # CORS + + origin = header_property[str]( + "Origin", + doc=( + "The host that the request originated from. Set" + " :attr:`~CORSResponseMixin.access_control_allow_origin` on" + " the response to indicate which origins are allowed." + ), + read_only=True, + ) + + access_control_request_headers = header_property( + "Access-Control-Request-Headers", + load_func=parse_set_header, + doc=( + "Sent with a preflight request to indicate which headers" + " will be sent with the cross origin request. Set" + " :attr:`~CORSResponseMixin.access_control_allow_headers`" + " on the response to indicate which headers are allowed." + ), + read_only=True, + ) + + access_control_request_method = header_property[str]( + "Access-Control-Request-Method", + doc=( + "Sent with a preflight request to indicate which method" + " will be used for the cross origin request. Set" + " :attr:`~CORSResponseMixin.access_control_allow_methods`" + " on the response to indicate which methods are allowed." + ), + read_only=True, + ) + + @property + def is_json(self) -> bool: + """Check if the mimetype indicates JSON data, either + :mimetype:`application/json` or :mimetype:`application/*+json`. + """ + mt = self.mimetype + return ( + mt == "application/json" + or mt.startswith("application/") + and mt.endswith("+json") + ) diff --git a/gestao_raul/Lib/site-packages/werkzeug/sansio/response.py b/gestao_raul/Lib/site-packages/werkzeug/sansio/response.py new file mode 100644 index 0000000..9fed086 --- /dev/null +++ b/gestao_raul/Lib/site-packages/werkzeug/sansio/response.py @@ -0,0 +1,763 @@ +from __future__ import annotations + +import typing as t +from datetime import datetime +from datetime import timedelta +from datetime import timezone +from http import HTTPStatus + +from ..datastructures import CallbackDict +from ..datastructures import ContentRange +from ..datastructures import ContentSecurityPolicy +from ..datastructures import Headers +from ..datastructures import HeaderSet +from ..datastructures import ResponseCacheControl +from ..datastructures import WWWAuthenticate +from ..http import COEP +from ..http import COOP +from ..http import dump_age +from ..http import dump_cookie +from ..http import dump_header +from ..http import dump_options_header +from ..http import http_date +from ..http import HTTP_STATUS_CODES +from ..http import parse_age +from ..http import parse_cache_control_header +from ..http import parse_content_range_header +from ..http import parse_csp_header +from ..http import parse_date +from ..http import parse_options_header +from ..http import parse_set_header +from ..http import quote_etag +from ..http import unquote_etag +from ..utils import get_content_type +from ..utils import header_property + +if t.TYPE_CHECKING: + from ..datastructures.cache_control import _CacheControl + + +def _set_property(name: str, doc: str | None = None) -> property: + def fget(self: Response) -> HeaderSet: + def on_update(header_set: HeaderSet) -> None: + if not header_set and name in self.headers: + del self.headers[name] + elif header_set: + self.headers[name] = header_set.to_header() + + return parse_set_header(self.headers.get(name), on_update) + + def fset( + self: Response, + value: None | (str | dict[str, str | int] | t.Iterable[str]), + ) -> None: + if not value: + del self.headers[name] + elif isinstance(value, str): + self.headers[name] = value + else: + self.headers[name] = dump_header(value) + + return property(fget, fset, doc=doc) + + +class Response: + """Represents the non-IO parts of an HTTP response, specifically the + status and headers but not the body. + + This class is not meant for general use. It should only be used when + implementing WSGI, ASGI, or another HTTP application spec. Werkzeug + provides a WSGI implementation at :cls:`werkzeug.wrappers.Response`. + + :param status: The status code for the response. Either an int, in + which case the default status message is added, or a string in + the form ``{code} {message}``, like ``404 Not Found``. Defaults + to 200. + :param headers: A :class:`~werkzeug.datastructures.Headers` object, + or a list of ``(key, value)`` tuples that will be converted to a + ``Headers`` object. + :param mimetype: The mime type (content type without charset or + other parameters) of the response. If the value starts with + ``text/`` (or matches some other special cases), the charset + will be added to create the ``content_type``. + :param content_type: The full content type of the response. + Overrides building the value from ``mimetype``. + + .. versionchanged:: 3.0 + The ``charset`` attribute was removed. + + .. versionadded:: 2.0 + """ + + #: the default status if none is provided. + default_status = 200 + + #: the default mimetype if none is provided. + default_mimetype: str | None = "text/plain" + + #: Warn if a cookie header exceeds this size. The default, 4093, should be + #: safely `supported by most browsers `_. A cookie larger than + #: this size will still be sent, but it may be ignored or handled + #: incorrectly by some browsers. Set to 0 to disable this check. + #: + #: .. versionadded:: 0.13 + #: + #: .. _`cookie`: http://browsercookielimits.squawky.net/ + max_cookie_size = 4093 + + # A :class:`Headers` object representing the response headers. + headers: Headers + + def __init__( + self, + status: int | str | HTTPStatus | None = None, + headers: t.Mapping[str, str | t.Iterable[str]] + | t.Iterable[tuple[str, str]] + | None = None, + mimetype: str | None = None, + content_type: str | None = None, + ) -> None: + if isinstance(headers, Headers): + self.headers = headers + elif not headers: + self.headers = Headers() + else: + self.headers = Headers(headers) + + if content_type is None: + if mimetype is None and "content-type" not in self.headers: + mimetype = self.default_mimetype + if mimetype is not None: + mimetype = get_content_type(mimetype, "utf-8") + content_type = mimetype + if content_type is not None: + self.headers["Content-Type"] = content_type + if status is None: + status = self.default_status + self.status = status # type: ignore + + def __repr__(self) -> str: + return f"<{type(self).__name__} [{self.status}]>" + + @property + def status_code(self) -> int: + """The HTTP status code as a number.""" + return self._status_code + + @status_code.setter + def status_code(self, code: int) -> None: + self.status = code # type: ignore + + @property + def status(self) -> str: + """The HTTP status code as a string.""" + return self._status + + @status.setter + def status(self, value: str | int | HTTPStatus) -> None: + self._status, self._status_code = self._clean_status(value) + + def _clean_status(self, value: str | int | HTTPStatus) -> tuple[str, int]: + if isinstance(value, (int, HTTPStatus)): + status_code = int(value) + else: + value = value.strip() + + if not value: + raise ValueError("Empty status argument") + + code_str, sep, _ = value.partition(" ") + + try: + status_code = int(code_str) + except ValueError: + # only message + return f"0 {value}", 0 + + if sep: + # code and message + return value, status_code + + # only code, look up message + try: + status = f"{status_code} {HTTP_STATUS_CODES[status_code].upper()}" + except KeyError: + status = f"{status_code} UNKNOWN" + + return status, status_code + + def set_cookie( + self, + key: str, + value: str = "", + max_age: timedelta | int | None = None, + expires: str | datetime | int | float | None = None, + path: str | None = "/", + domain: str | None = None, + secure: bool = False, + httponly: bool = False, + samesite: str | None = None, + partitioned: bool = False, + ) -> None: + """Sets a cookie. + + A warning is raised if the size of the cookie header exceeds + :attr:`max_cookie_size`, but the header will still be set. + + :param key: the key (name) of the cookie to be set. + :param value: the value of the cookie. + :param max_age: should be a number of seconds, or `None` (default) if + the cookie should last only as long as the client's + browser session. + :param expires: should be a `datetime` object or UNIX timestamp. + :param path: limits the cookie to a given path, per default it will + span the whole domain. + :param domain: if you want to set a cross-domain cookie. For example, + ``domain="example.com"`` will set a cookie that is + readable by the domain ``www.example.com``, + ``foo.example.com`` etc. Otherwise, a cookie will only + be readable by the domain that set it. + :param secure: If ``True``, the cookie will only be available + via HTTPS. + :param httponly: Disallow JavaScript access to the cookie. + :param samesite: Limit the scope of the cookie to only be + attached to requests that are "same-site". + :param partitioned: If ``True``, the cookie will be partitioned. + + .. versionchanged:: 3.1 + The ``partitioned`` parameter was added. + """ + self.headers.add( + "Set-Cookie", + dump_cookie( + key, + value=value, + max_age=max_age, + expires=expires, + path=path, + domain=domain, + secure=secure, + httponly=httponly, + max_size=self.max_cookie_size, + samesite=samesite, + partitioned=partitioned, + ), + ) + + def delete_cookie( + self, + key: str, + path: str | None = "/", + domain: str | None = None, + secure: bool = False, + httponly: bool = False, + samesite: str | None = None, + partitioned: bool = False, + ) -> None: + """Delete a cookie. Fails silently if key doesn't exist. + + :param key: the key (name) of the cookie to be deleted. + :param path: if the cookie that should be deleted was limited to a + path, the path has to be defined here. + :param domain: if the cookie that should be deleted was limited to a + domain, that domain has to be defined here. + :param secure: If ``True``, the cookie will only be available + via HTTPS. + :param httponly: Disallow JavaScript access to the cookie. + :param samesite: Limit the scope of the cookie to only be + attached to requests that are "same-site". + :param partitioned: If ``True``, the cookie will be partitioned. + """ + self.set_cookie( + key, + expires=0, + max_age=0, + path=path, + domain=domain, + secure=secure, + httponly=httponly, + samesite=samesite, + partitioned=partitioned, + ) + + @property + def is_json(self) -> bool: + """Check if the mimetype indicates JSON data, either + :mimetype:`application/json` or :mimetype:`application/*+json`. + """ + mt = self.mimetype + return mt is not None and ( + mt == "application/json" + or mt.startswith("application/") + and mt.endswith("+json") + ) + + # Common Descriptors + + @property + def mimetype(self) -> str | None: + """The mimetype (content type without charset etc.)""" + ct = self.headers.get("content-type") + + if ct: + return ct.split(";")[0].strip() + else: + return None + + @mimetype.setter + def mimetype(self, value: str) -> None: + self.headers["Content-Type"] = get_content_type(value, "utf-8") + + @property + def mimetype_params(self) -> dict[str, str]: + """The mimetype parameters as dict. For example if the + content type is ``text/html; charset=utf-8`` the params would be + ``{'charset': 'utf-8'}``. + + .. versionadded:: 0.5 + """ + + def on_update(d: CallbackDict[str, str]) -> None: + self.headers["Content-Type"] = dump_options_header(self.mimetype, d) + + d = parse_options_header(self.headers.get("content-type", ""))[1] + return CallbackDict(d, on_update) + + location = header_property[str]( + "Location", + doc="""The Location response-header field is used to redirect + the recipient to a location other than the Request-URI for + completion of the request or identification of a new + resource.""", + ) + age = header_property( + "Age", + None, + parse_age, + dump_age, # type: ignore + doc="""The Age response-header field conveys the sender's + estimate of the amount of time since the response (or its + revalidation) was generated at the origin server. + + Age values are non-negative decimal integers, representing time + in seconds.""", + ) + content_type = header_property[str]( + "Content-Type", + doc="""The Content-Type entity-header field indicates the media + type of the entity-body sent to the recipient or, in the case of + the HEAD method, the media type that would have been sent had + the request been a GET.""", + ) + content_length = header_property( + "Content-Length", + None, + int, + str, + doc="""The Content-Length entity-header field indicates the size + of the entity-body, in decimal number of OCTETs, sent to the + recipient or, in the case of the HEAD method, the size of the + entity-body that would have been sent had the request been a + GET.""", + ) + content_location = header_property[str]( + "Content-Location", + doc="""The Content-Location entity-header field MAY be used to + supply the resource location for the entity enclosed in the + message when that entity is accessible from a location separate + from the requested resource's URI.""", + ) + content_encoding = header_property[str]( + "Content-Encoding", + doc="""The Content-Encoding entity-header field is used as a + modifier to the media-type. When present, its value indicates + what additional content codings have been applied to the + entity-body, and thus what decoding mechanisms must be applied + in order to obtain the media-type referenced by the Content-Type + header field.""", + ) + content_md5 = header_property[str]( + "Content-MD5", + doc="""The Content-MD5 entity-header field, as defined in + RFC 1864, is an MD5 digest of the entity-body for the purpose of + providing an end-to-end message integrity check (MIC) of the + entity-body. (Note: a MIC is good for detecting accidental + modification of the entity-body in transit, but is not proof + against malicious attacks.)""", + ) + date = header_property( + "Date", + None, + parse_date, + http_date, + doc="""The Date general-header field represents the date and + time at which the message was originated, having the same + semantics as orig-date in RFC 822. + + .. versionchanged:: 2.0 + The datetime object is timezone-aware. + """, + ) + expires = header_property( + "Expires", + None, + parse_date, + http_date, + doc="""The Expires entity-header field gives the date/time after + which the response is considered stale. A stale cache entry may + not normally be returned by a cache. + + .. versionchanged:: 2.0 + The datetime object is timezone-aware. + """, + ) + last_modified = header_property( + "Last-Modified", + None, + parse_date, + http_date, + doc="""The Last-Modified entity-header field indicates the date + and time at which the origin server believes the variant was + last modified. + + .. versionchanged:: 2.0 + The datetime object is timezone-aware. + """, + ) + + @property + def retry_after(self) -> datetime | None: + """The Retry-After response-header field can be used with a + 503 (Service Unavailable) response to indicate how long the + service is expected to be unavailable to the requesting client. + + Time in seconds until expiration or date. + + .. versionchanged:: 2.0 + The datetime object is timezone-aware. + """ + value = self.headers.get("retry-after") + if value is None: + return None + + try: + seconds = int(value) + except ValueError: + return parse_date(value) + + return datetime.now(timezone.utc) + timedelta(seconds=seconds) + + @retry_after.setter + def retry_after(self, value: datetime | int | str | None) -> None: + if value is None: + if "retry-after" in self.headers: + del self.headers["retry-after"] + return + elif isinstance(value, datetime): + value = http_date(value) + else: + value = str(value) + self.headers["Retry-After"] = value + + vary = _set_property( + "Vary", + doc="""The Vary field value indicates the set of request-header + fields that fully determines, while the response is fresh, + whether a cache is permitted to use the response to reply to a + subsequent request without revalidation.""", + ) + content_language = _set_property( + "Content-Language", + doc="""The Content-Language entity-header field describes the + natural language(s) of the intended audience for the enclosed + entity. Note that this might not be equivalent to all the + languages used within the entity-body.""", + ) + allow = _set_property( + "Allow", + doc="""The Allow entity-header field lists the set of methods + supported by the resource identified by the Request-URI. The + purpose of this field is strictly to inform the recipient of + valid methods associated with the resource. An Allow header + field MUST be present in a 405 (Method Not Allowed) + response.""", + ) + + # ETag + + @property + def cache_control(self) -> ResponseCacheControl: + """The Cache-Control general-header field is used to specify + directives that MUST be obeyed by all caching mechanisms along the + request/response chain. + """ + + def on_update(cache_control: _CacheControl) -> None: + if not cache_control and "cache-control" in self.headers: + del self.headers["cache-control"] + elif cache_control: + self.headers["Cache-Control"] = cache_control.to_header() + + return parse_cache_control_header( + self.headers.get("cache-control"), on_update, ResponseCacheControl + ) + + def set_etag(self, etag: str, weak: bool = False) -> None: + """Set the etag, and override the old one if there was one.""" + self.headers["ETag"] = quote_etag(etag, weak) + + def get_etag(self) -> tuple[str, bool] | tuple[None, None]: + """Return a tuple in the form ``(etag, is_weak)``. If there is no + ETag the return value is ``(None, None)``. + """ + return unquote_etag(self.headers.get("ETag")) + + accept_ranges = header_property[str]( + "Accept-Ranges", + doc="""The `Accept-Ranges` header. Even though the name would + indicate that multiple values are supported, it must be one + string token only. + + The values ``'bytes'`` and ``'none'`` are common. + + .. versionadded:: 0.7""", + ) + + @property + def content_range(self) -> ContentRange: + """The ``Content-Range`` header as a + :class:`~werkzeug.datastructures.ContentRange` object. Available + even if the header is not set. + + .. versionadded:: 0.7 + """ + + def on_update(rng: ContentRange) -> None: + if not rng: + del self.headers["content-range"] + else: + self.headers["Content-Range"] = rng.to_header() + + rv = parse_content_range_header(self.headers.get("content-range"), on_update) + # always provide a content range object to make the descriptor + # more user friendly. It provides an unset() method that can be + # used to remove the header quickly. + if rv is None: + rv = ContentRange(None, None, None, on_update=on_update) + return rv + + @content_range.setter + def content_range(self, value: ContentRange | str | None) -> None: + if not value: + del self.headers["content-range"] + elif isinstance(value, str): + self.headers["Content-Range"] = value + else: + self.headers["Content-Range"] = value.to_header() + + # Authorization + + @property + def www_authenticate(self) -> WWWAuthenticate: + """The ``WWW-Authenticate`` header parsed into a :class:`.WWWAuthenticate` + object. Modifying the object will modify the header value. + + This header is not set by default. To set this header, assign an instance of + :class:`.WWWAuthenticate` to this attribute. + + .. code-block:: python + + response.www_authenticate = WWWAuthenticate( + "basic", {"realm": "Authentication Required"} + ) + + Multiple values for this header can be sent to give the client multiple options. + Assign a list to set multiple headers. However, modifying the items in the list + will not automatically update the header values, and accessing this attribute + will only ever return the first value. + + To unset this header, assign ``None`` or use ``del``. + + .. versionchanged:: 2.3 + This attribute can be assigned to to set the header. A list can be assigned + to set multiple header values. Use ``del`` to unset the header. + + .. versionchanged:: 2.3 + :class:`WWWAuthenticate` is no longer a ``dict``. The ``token`` attribute + was added for auth challenges that use a token instead of parameters. + """ + value = WWWAuthenticate.from_header(self.headers.get("WWW-Authenticate")) + + if value is None: + value = WWWAuthenticate("basic") + + def on_update(value: WWWAuthenticate) -> None: + self.www_authenticate = value + + value._on_update = on_update + return value + + @www_authenticate.setter + def www_authenticate( + self, value: WWWAuthenticate | list[WWWAuthenticate] | None + ) -> None: + if not value: # None or empty list + del self.www_authenticate + elif isinstance(value, list): + # Clear any existing header by setting the first item. + self.headers.set("WWW-Authenticate", value[0].to_header()) + + for item in value[1:]: + # Add additional header lines for additional items. + self.headers.add("WWW-Authenticate", item.to_header()) + else: + self.headers.set("WWW-Authenticate", value.to_header()) + + def on_update(value: WWWAuthenticate) -> None: + self.www_authenticate = value + + # When setting a single value, allow updating it directly. + value._on_update = on_update + + @www_authenticate.deleter + def www_authenticate(self) -> None: + if "WWW-Authenticate" in self.headers: + del self.headers["WWW-Authenticate"] + + # CSP + + @property + def content_security_policy(self) -> ContentSecurityPolicy: + """The ``Content-Security-Policy`` header as a + :class:`~werkzeug.datastructures.ContentSecurityPolicy` object. Available + even if the header is not set. + + The Content-Security-Policy header adds an additional layer of + security to help detect and mitigate certain types of attacks. + """ + + def on_update(csp: ContentSecurityPolicy) -> None: + if not csp: + del self.headers["content-security-policy"] + else: + self.headers["Content-Security-Policy"] = csp.to_header() + + rv = parse_csp_header(self.headers.get("content-security-policy"), on_update) + if rv is None: + rv = ContentSecurityPolicy(None, on_update=on_update) + return rv + + @content_security_policy.setter + def content_security_policy( + self, value: ContentSecurityPolicy | str | None + ) -> None: + if not value: + del self.headers["content-security-policy"] + elif isinstance(value, str): + self.headers["Content-Security-Policy"] = value + else: + self.headers["Content-Security-Policy"] = value.to_header() + + @property + def content_security_policy_report_only(self) -> ContentSecurityPolicy: + """The ``Content-Security-policy-report-only`` header as a + :class:`~werkzeug.datastructures.ContentSecurityPolicy` object. Available + even if the header is not set. + + The Content-Security-Policy-Report-Only header adds a csp policy + that is not enforced but is reported thereby helping detect + certain types of attacks. + """ + + def on_update(csp: ContentSecurityPolicy) -> None: + if not csp: + del self.headers["content-security-policy-report-only"] + else: + self.headers["Content-Security-policy-report-only"] = csp.to_header() + + rv = parse_csp_header( + self.headers.get("content-security-policy-report-only"), on_update + ) + if rv is None: + rv = ContentSecurityPolicy(None, on_update=on_update) + return rv + + @content_security_policy_report_only.setter + def content_security_policy_report_only( + self, value: ContentSecurityPolicy | str | None + ) -> None: + if not value: + del self.headers["content-security-policy-report-only"] + elif isinstance(value, str): + self.headers["Content-Security-policy-report-only"] = value + else: + self.headers["Content-Security-policy-report-only"] = value.to_header() + + # CORS + + @property + def access_control_allow_credentials(self) -> bool: + """Whether credentials can be shared by the browser to + JavaScript code. As part of the preflight request it indicates + whether credentials can be used on the cross origin request. + """ + return "Access-Control-Allow-Credentials" in self.headers + + @access_control_allow_credentials.setter + def access_control_allow_credentials(self, value: bool | None) -> None: + if value is True: + self.headers["Access-Control-Allow-Credentials"] = "true" + else: + self.headers.pop("Access-Control-Allow-Credentials", None) + + access_control_allow_headers = header_property( + "Access-Control-Allow-Headers", + load_func=parse_set_header, + dump_func=dump_header, + doc="Which headers can be sent with the cross origin request.", + ) + + access_control_allow_methods = header_property( + "Access-Control-Allow-Methods", + load_func=parse_set_header, + dump_func=dump_header, + doc="Which methods can be used for the cross origin request.", + ) + + access_control_allow_origin = header_property[str]( + "Access-Control-Allow-Origin", + doc="The origin or '*' for any origin that may make cross origin requests.", + ) + + access_control_expose_headers = header_property( + "Access-Control-Expose-Headers", + load_func=parse_set_header, + dump_func=dump_header, + doc="Which headers can be shared by the browser to JavaScript code.", + ) + + access_control_max_age = header_property( + "Access-Control-Max-Age", + load_func=int, + dump_func=str, + doc="The maximum age in seconds the access control settings can be cached for.", + ) + + cross_origin_opener_policy = header_property[COOP]( + "Cross-Origin-Opener-Policy", + load_func=lambda value: COOP(value), + dump_func=lambda value: value.value, + default=COOP.UNSAFE_NONE, + doc="""Allows control over sharing of browsing context group with cross-origin + documents. Values must be a member of the :class:`werkzeug.http.COOP` enum.""", + ) + + cross_origin_embedder_policy = header_property[COEP]( + "Cross-Origin-Embedder-Policy", + load_func=lambda value: COEP(value), + dump_func=lambda value: value.value, + default=COEP.UNSAFE_NONE, + doc="""Prevents a document from loading any cross-origin resources that do not + explicitly grant the document permission. Values must be a member of the + :class:`werkzeug.http.COEP` enum.""", + ) diff --git a/gestao_raul/Lib/site-packages/werkzeug/sansio/utils.py b/gestao_raul/Lib/site-packages/werkzeug/sansio/utils.py new file mode 100644 index 0000000..ff7ceda --- /dev/null +++ b/gestao_raul/Lib/site-packages/werkzeug/sansio/utils.py @@ -0,0 +1,167 @@ +from __future__ import annotations + +import typing as t +from urllib.parse import quote + +from .._internal import _plain_int +from ..exceptions import SecurityError +from ..urls import uri_to_iri + + +def host_is_trusted(hostname: str | None, trusted_list: t.Iterable[str]) -> bool: + """Check if a host matches a list of trusted names. + + :param hostname: The name to check. + :param trusted_list: A list of valid names to match. If a name + starts with a dot it will match all subdomains. + + .. versionadded:: 0.9 + """ + if not hostname: + return False + + try: + hostname = hostname.partition(":")[0].encode("idna").decode("ascii") + except UnicodeEncodeError: + return False + + if isinstance(trusted_list, str): + trusted_list = [trusted_list] + + for ref in trusted_list: + if ref.startswith("."): + ref = ref[1:] + suffix_match = True + else: + suffix_match = False + + try: + ref = ref.partition(":")[0].encode("idna").decode("ascii") + except UnicodeEncodeError: + return False + + if ref == hostname or (suffix_match and hostname.endswith(f".{ref}")): + return True + + return False + + +def get_host( + scheme: str, + host_header: str | None, + server: tuple[str, int | None] | None = None, + trusted_hosts: t.Iterable[str] | None = None, +) -> str: + """Return the host for the given parameters. + + This first checks the ``host_header``. If it's not present, then + ``server`` is used. The host will only contain the port if it is + different than the standard port for the protocol. + + Optionally, verify that the host is trusted using + :func:`host_is_trusted` and raise a + :exc:`~werkzeug.exceptions.SecurityError` if it is not. + + :param scheme: The protocol the request used, like ``"https"``. + :param host_header: The ``Host`` header value. + :param server: Address of the server. ``(host, port)``, or + ``(path, None)`` for unix sockets. + :param trusted_hosts: A list of trusted host names. + + :return: Host, with port if necessary. + :raise ~werkzeug.exceptions.SecurityError: If the host is not + trusted. + + .. versionchanged:: 3.1.3 + If ``SERVER_NAME`` is IPv6, it is wrapped in ``[]``. + """ + host = "" + + if host_header is not None: + host = host_header + elif server is not None: + host = server[0] + + # If SERVER_NAME is IPv6, wrap it in [] to match Host header. + # Check for : because domain or IPv4 can't have that. + if ":" in host and host[0] != "[": + host = f"[{host}]" + + if server[1] is not None: + host = f"{host}:{server[1]}" + + if scheme in {"http", "ws"} and host.endswith(":80"): + host = host[:-3] + elif scheme in {"https", "wss"} and host.endswith(":443"): + host = host[:-4] + + if trusted_hosts is not None: + if not host_is_trusted(host, trusted_hosts): + raise SecurityError(f"Host {host!r} is not trusted.") + + return host + + +def get_current_url( + scheme: str, + host: str, + root_path: str | None = None, + path: str | None = None, + query_string: bytes | None = None, +) -> str: + """Recreate the URL for a request. If an optional part isn't + provided, it and subsequent parts are not included in the URL. + + The URL is an IRI, not a URI, so it may contain Unicode characters. + Use :func:`~werkzeug.urls.iri_to_uri` to convert it to ASCII. + + :param scheme: The protocol the request used, like ``"https"``. + :param host: The host the request was made to. See :func:`get_host`. + :param root_path: Prefix that the application is mounted under. This + is prepended to ``path``. + :param path: The path part of the URL after ``root_path``. + :param query_string: The portion of the URL after the "?". + """ + url = [scheme, "://", host] + + if root_path is None: + url.append("/") + return uri_to_iri("".join(url)) + + # safe = https://url.spec.whatwg.org/#url-path-segment-string + # as well as percent for things that are already quoted + url.append(quote(root_path.rstrip("/"), safe="!$&'()*+,/:;=@%")) + url.append("/") + + if path is None: + return uri_to_iri("".join(url)) + + url.append(quote(path.lstrip("/"), safe="!$&'()*+,/:;=@%")) + + if query_string: + url.append("?") + url.append(quote(query_string, safe="!$&'()*+,/:;=?@%")) + + return uri_to_iri("".join(url)) + + +def get_content_length( + http_content_length: str | None = None, + http_transfer_encoding: str | None = None, +) -> int | None: + """Return the ``Content-Length`` header value as an int. If the header is not given + or the ``Transfer-Encoding`` header is ``chunked``, ``None`` is returned to indicate + a streaming request. If the value is not an integer, or negative, 0 is returned. + + :param http_content_length: The Content-Length HTTP header. + :param http_transfer_encoding: The Transfer-Encoding HTTP header. + + .. versionadded:: 2.2 + """ + if http_transfer_encoding == "chunked" or http_content_length is None: + return None + + try: + return max(0, _plain_int(http_content_length)) + except ValueError: + return 0 diff --git a/gestao_raul/Lib/site-packages/werkzeug/security.py b/gestao_raul/Lib/site-packages/werkzeug/security.py new file mode 100644 index 0000000..3f49ad1 --- /dev/null +++ b/gestao_raul/Lib/site-packages/werkzeug/security.py @@ -0,0 +1,166 @@ +from __future__ import annotations + +import hashlib +import hmac +import os +import posixpath +import secrets + +SALT_CHARS = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789" +DEFAULT_PBKDF2_ITERATIONS = 1_000_000 + +_os_alt_seps: list[str] = list( + sep for sep in [os.sep, os.path.altsep] if sep is not None and sep != "/" +) + + +def gen_salt(length: int) -> str: + """Generate a random string of SALT_CHARS with specified ``length``.""" + if length <= 0: + raise ValueError("Salt length must be at least 1.") + + return "".join(secrets.choice(SALT_CHARS) for _ in range(length)) + + +def _hash_internal(method: str, salt: str, password: str) -> tuple[str, str]: + method, *args = method.split(":") + salt_bytes = salt.encode() + password_bytes = password.encode() + + if method == "scrypt": + if not args: + n = 2**15 + r = 8 + p = 1 + else: + try: + n, r, p = map(int, args) + except ValueError: + raise ValueError("'scrypt' takes 3 arguments.") from None + + maxmem = 132 * n * r * p # ideally 128, but some extra seems needed + return ( + hashlib.scrypt( + password_bytes, salt=salt_bytes, n=n, r=r, p=p, maxmem=maxmem + ).hex(), + f"scrypt:{n}:{r}:{p}", + ) + elif method == "pbkdf2": + len_args = len(args) + + if len_args == 0: + hash_name = "sha256" + iterations = DEFAULT_PBKDF2_ITERATIONS + elif len_args == 1: + hash_name = args[0] + iterations = DEFAULT_PBKDF2_ITERATIONS + elif len_args == 2: + hash_name = args[0] + iterations = int(args[1]) + else: + raise ValueError("'pbkdf2' takes 2 arguments.") + + return ( + hashlib.pbkdf2_hmac( + hash_name, password_bytes, salt_bytes, iterations + ).hex(), + f"pbkdf2:{hash_name}:{iterations}", + ) + else: + raise ValueError(f"Invalid hash method '{method}'.") + + +def generate_password_hash( + password: str, method: str = "scrypt", salt_length: int = 16 +) -> str: + """Securely hash a password for storage. A password can be compared to a stored hash + using :func:`check_password_hash`. + + The following methods are supported: + + - ``scrypt``, the default. The parameters are ``n``, ``r``, and ``p``, the default + is ``scrypt:32768:8:1``. See :func:`hashlib.scrypt`. + - ``pbkdf2``, less secure. The parameters are ``hash_method`` and ``iterations``, + the default is ``pbkdf2:sha256:600000``. See :func:`hashlib.pbkdf2_hmac`. + + Default parameters may be updated to reflect current guidelines, and methods may be + deprecated and removed if they are no longer considered secure. To migrate old + hashes, you may generate a new hash when checking an old hash, or you may contact + users with a link to reset their password. + + :param password: The plaintext password. + :param method: The key derivation function and parameters. + :param salt_length: The number of characters to generate for the salt. + + .. versionchanged:: 3.1 + The default iterations for pbkdf2 was increased to 1,000,000. + + .. versionchanged:: 2.3 + Scrypt support was added. + + .. versionchanged:: 2.3 + The default iterations for pbkdf2 was increased to 600,000. + + .. versionchanged:: 2.3 + All plain hashes are deprecated and will not be supported in Werkzeug 3.0. + """ + salt = gen_salt(salt_length) + h, actual_method = _hash_internal(method, salt, password) + return f"{actual_method}${salt}${h}" + + +def check_password_hash(pwhash: str, password: str) -> bool: + """Securely check that the given stored password hash, previously generated using + :func:`generate_password_hash`, matches the given password. + + Methods may be deprecated and removed if they are no longer considered secure. To + migrate old hashes, you may generate a new hash when checking an old hash, or you + may contact users with a link to reset their password. + + :param pwhash: The hashed password. + :param password: The plaintext password. + + .. versionchanged:: 2.3 + All plain hashes are deprecated and will not be supported in Werkzeug 3.0. + """ + try: + method, salt, hashval = pwhash.split("$", 2) + except ValueError: + return False + + return hmac.compare_digest(_hash_internal(method, salt, password)[0], hashval) + + +def safe_join(directory: str, *pathnames: str) -> str | None: + """Safely join zero or more untrusted path components to a base + directory to avoid escaping the base directory. + + :param directory: The trusted base directory. + :param pathnames: The untrusted path components relative to the + base directory. + :return: A safe path, otherwise ``None``. + """ + if not directory: + # Ensure we end up with ./path if directory="" is given, + # otherwise the first untrusted part could become trusted. + directory = "." + + parts = [directory] + + for filename in pathnames: + if filename != "": + filename = posixpath.normpath(filename) + + if ( + any(sep in filename for sep in _os_alt_seps) + or os.path.isabs(filename) + # ntpath.isabs doesn't catch this on Python < 3.11 + or filename.startswith("/") + or filename == ".." + or filename.startswith("../") + ): + return None + + parts.append(filename) + + return posixpath.join(*parts) diff --git a/gestao_raul/Lib/site-packages/werkzeug/serving.py b/gestao_raul/Lib/site-packages/werkzeug/serving.py new file mode 100644 index 0000000..ec16640 --- /dev/null +++ b/gestao_raul/Lib/site-packages/werkzeug/serving.py @@ -0,0 +1,1125 @@ +"""A WSGI and HTTP server for use **during development only**. This +server is convenient to use, but is not designed to be particularly +stable, secure, or efficient. Use a dedicate WSGI server and HTTP +server when deploying to production. + +It provides features like interactive debugging and code reloading. Use +``run_simple`` to start the server. Put this in a ``run.py`` script: + +.. code-block:: python + + from myapp import create_app + from werkzeug import run_simple +""" + +from __future__ import annotations + +import errno +import io +import os +import selectors +import socket +import socketserver +import sys +import typing as t +from datetime import datetime as dt +from datetime import timedelta +from datetime import timezone +from http.server import BaseHTTPRequestHandler +from http.server import HTTPServer +from urllib.parse import unquote +from urllib.parse import urlsplit + +from ._internal import _log +from ._internal import _wsgi_encoding_dance +from .exceptions import InternalServerError +from .urls import uri_to_iri + +try: + import ssl + + connection_dropped_errors: tuple[type[Exception], ...] = ( + ConnectionError, + socket.timeout, + ssl.SSLEOFError, + ) +except ImportError: + + class _SslDummy: + def __getattr__(self, name: str) -> t.Any: + raise RuntimeError( # noqa: B904 + "SSL is unavailable because this Python runtime was not" + " compiled with SSL/TLS support." + ) + + ssl = _SslDummy() # type: ignore + connection_dropped_errors = (ConnectionError, socket.timeout) + +_log_add_style = True + +if os.name == "nt": + try: + __import__("colorama") + except ImportError: + _log_add_style = False + +can_fork = hasattr(os, "fork") + +if can_fork: + ForkingMixIn = socketserver.ForkingMixIn +else: + + class ForkingMixIn: # type: ignore + pass + + +try: + af_unix = socket.AF_UNIX +except AttributeError: + af_unix = None # type: ignore + +LISTEN_QUEUE = 128 + +_TSSLContextArg = t.Optional[ + t.Union["ssl.SSLContext", tuple[str, t.Optional[str]], t.Literal["adhoc"]] +] + +if t.TYPE_CHECKING: + from _typeshed.wsgi import WSGIApplication + from _typeshed.wsgi import WSGIEnvironment + from cryptography.hazmat.primitives.asymmetric.rsa import ( + RSAPrivateKeyWithSerialization, + ) + from cryptography.x509 import Certificate + + +class DechunkedInput(io.RawIOBase): + """An input stream that handles Transfer-Encoding 'chunked'""" + + def __init__(self, rfile: t.IO[bytes]) -> None: + self._rfile = rfile + self._done = False + self._len = 0 + + def readable(self) -> bool: + return True + + def read_chunk_len(self) -> int: + try: + line = self._rfile.readline().decode("latin1") + _len = int(line.strip(), 16) + except ValueError as e: + raise OSError("Invalid chunk header") from e + if _len < 0: + raise OSError("Negative chunk length not allowed") + return _len + + def readinto(self, buf: bytearray) -> int: # type: ignore + read = 0 + while not self._done and read < len(buf): + if self._len == 0: + # This is the first chunk or we fully consumed the previous + # one. Read the next length of the next chunk + self._len = self.read_chunk_len() + + if self._len == 0: + # Found the final chunk of size 0. The stream is now exhausted, + # but there is still a final newline that should be consumed + self._done = True + + if self._len > 0: + # There is data (left) in this chunk, so append it to the + # buffer. If this operation fully consumes the chunk, this will + # reset self._len to 0. + n = min(len(buf), self._len) + + # If (read + chunk size) becomes more than len(buf), buf will + # grow beyond the original size and read more data than + # required. So only read as much data as can fit in buf. + if read + n > len(buf): + buf[read:] = self._rfile.read(len(buf) - read) + self._len -= len(buf) - read + read = len(buf) + else: + buf[read : read + n] = self._rfile.read(n) + self._len -= n + read += n + + if self._len == 0: + # Skip the terminating newline of a chunk that has been fully + # consumed. This also applies to the 0-sized final chunk + terminator = self._rfile.readline() + if terminator not in (b"\n", b"\r\n", b"\r"): + raise OSError("Missing chunk terminating newline") + + return read + + +class WSGIRequestHandler(BaseHTTPRequestHandler): + """A request handler that implements WSGI dispatching.""" + + server: BaseWSGIServer + + @property + def server_version(self) -> str: # type: ignore + return self.server._server_version + + def make_environ(self) -> WSGIEnvironment: + request_url = urlsplit(self.path) + url_scheme = "http" if self.server.ssl_context is None else "https" + + if not self.client_address: + self.client_address = ("", 0) + elif isinstance(self.client_address, str): + self.client_address = (self.client_address, 0) + + # If there was no scheme but the path started with two slashes, + # the first segment may have been incorrectly parsed as the + # netloc, prepend it to the path again. + if not request_url.scheme and request_url.netloc: + path_info = f"/{request_url.netloc}{request_url.path}" + else: + path_info = request_url.path + + path_info = unquote(path_info) + + environ: WSGIEnvironment = { + "wsgi.version": (1, 0), + "wsgi.url_scheme": url_scheme, + "wsgi.input": self.rfile, + "wsgi.errors": sys.stderr, + "wsgi.multithread": self.server.multithread, + "wsgi.multiprocess": self.server.multiprocess, + "wsgi.run_once": False, + "werkzeug.socket": self.connection, + "SERVER_SOFTWARE": self.server_version, + "REQUEST_METHOD": self.command, + "SCRIPT_NAME": "", + "PATH_INFO": _wsgi_encoding_dance(path_info), + "QUERY_STRING": _wsgi_encoding_dance(request_url.query), + # Non-standard, added by mod_wsgi, uWSGI + "REQUEST_URI": _wsgi_encoding_dance(self.path), + # Non-standard, added by gunicorn + "RAW_URI": _wsgi_encoding_dance(self.path), + "REMOTE_ADDR": self.address_string(), + "REMOTE_PORT": self.port_integer(), + "SERVER_NAME": self.server.server_address[0], + "SERVER_PORT": str(self.server.server_address[1]), + "SERVER_PROTOCOL": self.request_version, + } + + for key, value in self.headers.items(): + if "_" in key: + continue + + key = key.upper().replace("-", "_") + value = value.replace("\r\n", "") + if key not in ("CONTENT_TYPE", "CONTENT_LENGTH"): + key = f"HTTP_{key}" + if key in environ: + value = f"{environ[key]},{value}" + environ[key] = value + + if environ.get("HTTP_TRANSFER_ENCODING", "").strip().lower() == "chunked": + environ["wsgi.input_terminated"] = True + environ["wsgi.input"] = DechunkedInput(environ["wsgi.input"]) + + # Per RFC 2616, if the URL is absolute, use that as the host. + # We're using "has a scheme" to indicate an absolute URL. + if request_url.scheme and request_url.netloc: + environ["HTTP_HOST"] = request_url.netloc + + try: + # binary_form=False gives nicer information, but wouldn't be compatible with + # what Nginx or Apache could return. + peer_cert = self.connection.getpeercert(binary_form=True) + if peer_cert is not None: + # Nginx and Apache use PEM format. + environ["SSL_CLIENT_CERT"] = ssl.DER_cert_to_PEM_cert(peer_cert) + except ValueError: + # SSL handshake hasn't finished. + self.server.log("error", "Cannot fetch SSL peer certificate info") + except AttributeError: + # Not using TLS, the socket will not have getpeercert(). + pass + + return environ + + def run_wsgi(self) -> None: + if self.headers.get("Expect", "").lower().strip() == "100-continue": + self.wfile.write(b"HTTP/1.1 100 Continue\r\n\r\n") + + self.environ = environ = self.make_environ() + status_set: str | None = None + headers_set: list[tuple[str, str]] | None = None + status_sent: str | None = None + headers_sent: list[tuple[str, str]] | None = None + chunk_response: bool = False + + def write(data: bytes) -> None: + nonlocal status_sent, headers_sent, chunk_response + assert status_set is not None, "write() before start_response" + assert headers_set is not None, "write() before start_response" + if status_sent is None: + status_sent = status_set + headers_sent = headers_set + try: + code_str, msg = status_sent.split(None, 1) + except ValueError: + code_str, msg = status_sent, "" + code = int(code_str) + self.send_response(code, msg) + header_keys = set() + for key, value in headers_sent: + self.send_header(key, value) + header_keys.add(key.lower()) + + # Use chunked transfer encoding if there is no content + # length. Do not use for 1xx and 204 responses. 304 + # responses and HEAD requests are also excluded, which + # is the more conservative behavior and matches other + # parts of the code. + # https://httpwg.org/specs/rfc7230.html#rfc.section.3.3.1 + if ( + not ( + "content-length" in header_keys + or environ["REQUEST_METHOD"] == "HEAD" + or (100 <= code < 200) + or code in {204, 304} + ) + and self.protocol_version >= "HTTP/1.1" + ): + chunk_response = True + self.send_header("Transfer-Encoding", "chunked") + + # Always close the connection. This disables HTTP/1.1 + # keep-alive connections. They aren't handled well by + # Python's http.server because it doesn't know how to + # drain the stream before the next request line. + self.send_header("Connection", "close") + self.end_headers() + + assert isinstance(data, bytes), "applications must write bytes" + + if data: + if chunk_response: + self.wfile.write(hex(len(data))[2:].encode()) + self.wfile.write(b"\r\n") + + self.wfile.write(data) + + if chunk_response: + self.wfile.write(b"\r\n") + + self.wfile.flush() + + def start_response(status, headers, exc_info=None): # type: ignore + nonlocal status_set, headers_set + if exc_info: + try: + if headers_sent: + raise exc_info[1].with_traceback(exc_info[2]) + finally: + exc_info = None + elif headers_set: + raise AssertionError("Headers already set") + status_set = status + headers_set = headers + return write + + def execute(app: WSGIApplication) -> None: + application_iter = app(environ, start_response) + try: + for data in application_iter: + write(data) + if not headers_sent: + write(b"") + if chunk_response: + self.wfile.write(b"0\r\n\r\n") + finally: + # Check for any remaining data in the read socket, and discard it. This + # will read past request.max_content_length, but lets the client see a + # 413 response instead of a connection reset failure. If we supported + # keep-alive connections, this naive approach would break by reading the + # next request line. Since we know that write (above) closes every + # connection we can read everything. + selector = selectors.DefaultSelector() + selector.register(self.connection, selectors.EVENT_READ) + total_size = 0 + total_reads = 0 + + # A timeout of 0 tends to fail because a client needs a small amount of + # time to continue sending its data. + while selector.select(timeout=0.01): + # Only read 10MB into memory at a time. + data = self.rfile.read(10_000_000) + total_size += len(data) + total_reads += 1 + + # Stop reading on no data, >=10GB, or 1000 reads. If a client sends + # more than that, they'll get a connection reset failure. + if not data or total_size >= 10_000_000_000 or total_reads > 1000: + break + + selector.close() + + if hasattr(application_iter, "close"): + application_iter.close() + + try: + execute(self.server.app) + except connection_dropped_errors as e: + self.connection_dropped(e, environ) + except Exception as e: + if self.server.passthrough_errors: + raise + + if status_sent is not None and chunk_response: + self.close_connection = True + + try: + # if we haven't yet sent the headers but they are set + # we roll back to be able to set them again. + if status_sent is None: + status_set = None + headers_set = None + execute(InternalServerError()) + except Exception: + pass + + from .debug.tbtools import DebugTraceback + + msg = DebugTraceback(e).render_traceback_text() + self.server.log("error", f"Error on request:\n{msg}") + + def handle(self) -> None: + """Handles a request ignoring dropped connections.""" + try: + super().handle() + except (ConnectionError, socket.timeout) as e: + self.connection_dropped(e) + except Exception as e: + if self.server.ssl_context is not None and is_ssl_error(e): + self.log_error("SSL error occurred: %s", e) + else: + raise + + def connection_dropped( + self, error: BaseException, environ: WSGIEnvironment | None = None + ) -> None: + """Called if the connection was closed by the client. By default + nothing happens. + """ + + def __getattr__(self, name: str) -> t.Any: + # All HTTP methods are handled by run_wsgi. + if name.startswith("do_"): + return self.run_wsgi + + # All other attributes are forwarded to the base class. + return getattr(super(), name) + + def address_string(self) -> str: + if getattr(self, "environ", None): + return self.environ["REMOTE_ADDR"] # type: ignore + + if not self.client_address: + return "" + + return self.client_address[0] + + def port_integer(self) -> int: + return self.client_address[1] + + # Escape control characters. This is defined (but private) in Python 3.12. + _control_char_table = str.maketrans( + {c: rf"\x{c:02x}" for c in [*range(0x20), *range(0x7F, 0xA0)]} + ) + _control_char_table[ord("\\")] = r"\\" + + def log_request(self, code: int | str = "-", size: int | str = "-") -> None: + try: + path = uri_to_iri(self.path) + msg = f"{self.command} {path} {self.request_version}" + except AttributeError: + # path isn't set if the requestline was bad + msg = self.requestline + + # Escape control characters that may be in the decoded path. + msg = msg.translate(self._control_char_table) + code = str(code) + + if code[0] == "1": # 1xx - Informational + msg = _ansi_style(msg, "bold") + elif code == "200": # 2xx - Success + pass + elif code == "304": # 304 - Resource Not Modified + msg = _ansi_style(msg, "cyan") + elif code[0] == "3": # 3xx - Redirection + msg = _ansi_style(msg, "green") + elif code == "404": # 404 - Resource Not Found + msg = _ansi_style(msg, "yellow") + elif code[0] == "4": # 4xx - Client Error + msg = _ansi_style(msg, "bold", "red") + else: # 5xx, or any other response + msg = _ansi_style(msg, "bold", "magenta") + + self.log("info", '"%s" %s %s', msg, code, size) + + def log_error(self, format: str, *args: t.Any) -> None: + self.log("error", format, *args) + + def log_message(self, format: str, *args: t.Any) -> None: + self.log("info", format, *args) + + def log(self, type: str, message: str, *args: t.Any) -> None: + # an IPv6 scoped address contains "%" which breaks logging + address_string = self.address_string().replace("%", "%%") + _log( + type, + f"{address_string} - - [{self.log_date_time_string()}] {message}\n", + *args, + ) + + +def _ansi_style(value: str, *styles: str) -> str: + if not _log_add_style: + return value + + codes = { + "bold": 1, + "red": 31, + "green": 32, + "yellow": 33, + "magenta": 35, + "cyan": 36, + } + + for style in styles: + value = f"\x1b[{codes[style]}m{value}" + + return f"{value}\x1b[0m" + + +def generate_adhoc_ssl_pair( + cn: str | None = None, +) -> tuple[Certificate, RSAPrivateKeyWithSerialization]: + try: + from cryptography import x509 + from cryptography.hazmat.backends import default_backend + from cryptography.hazmat.primitives import hashes + from cryptography.hazmat.primitives.asymmetric import rsa + from cryptography.x509.oid import NameOID + except ImportError: + raise TypeError( + "Using ad-hoc certificates requires the cryptography library." + ) from None + + backend = default_backend() + pkey = rsa.generate_private_key( + public_exponent=65537, key_size=2048, backend=backend + ) + + # pretty damn sure that this is not actually accepted by anyone + if cn is None: + cn = "*" + + subject = x509.Name( + [ + x509.NameAttribute(NameOID.ORGANIZATION_NAME, "Dummy Certificate"), + x509.NameAttribute(NameOID.COMMON_NAME, cn), + ] + ) + + backend = default_backend() + cert = ( + x509.CertificateBuilder() + .subject_name(subject) + .issuer_name(subject) + .public_key(pkey.public_key()) + .serial_number(x509.random_serial_number()) + .not_valid_before(dt.now(timezone.utc)) + .not_valid_after(dt.now(timezone.utc) + timedelta(days=365)) + .add_extension(x509.ExtendedKeyUsage([x509.OID_SERVER_AUTH]), critical=False) + .add_extension( + x509.SubjectAlternativeName([x509.DNSName(cn), x509.DNSName(f"*.{cn}")]), + critical=False, + ) + .sign(pkey, hashes.SHA256(), backend) + ) + return cert, pkey + + +def make_ssl_devcert( + base_path: str, host: str | None = None, cn: str | None = None +) -> tuple[str, str]: + """Creates an SSL key for development. This should be used instead of + the ``'adhoc'`` key which generates a new cert on each server start. + It accepts a path for where it should store the key and cert and + either a host or CN. If a host is given it will use the CN + ``*.host/CN=host``. + + For more information see :func:`run_simple`. + + .. versionadded:: 0.9 + + :param base_path: the path to the certificate and key. The extension + ``.crt`` is added for the certificate, ``.key`` is + added for the key. + :param host: the name of the host. This can be used as an alternative + for the `cn`. + :param cn: the `CN` to use. + """ + + if host is not None: + cn = host + cert, pkey = generate_adhoc_ssl_pair(cn=cn) + + from cryptography.hazmat.primitives import serialization + + cert_file = f"{base_path}.crt" + pkey_file = f"{base_path}.key" + + with open(cert_file, "wb") as f: + f.write(cert.public_bytes(serialization.Encoding.PEM)) + with open(pkey_file, "wb") as f: + f.write( + pkey.private_bytes( + encoding=serialization.Encoding.PEM, + format=serialization.PrivateFormat.TraditionalOpenSSL, + encryption_algorithm=serialization.NoEncryption(), + ) + ) + + return cert_file, pkey_file + + +def generate_adhoc_ssl_context() -> ssl.SSLContext: + """Generates an adhoc SSL context for the development server.""" + import atexit + import tempfile + + cert, pkey = generate_adhoc_ssl_pair() + + from cryptography.hazmat.primitives import serialization + + cert_handle, cert_file = tempfile.mkstemp() + pkey_handle, pkey_file = tempfile.mkstemp() + atexit.register(os.remove, pkey_file) + atexit.register(os.remove, cert_file) + + os.write(cert_handle, cert.public_bytes(serialization.Encoding.PEM)) + os.write( + pkey_handle, + pkey.private_bytes( + encoding=serialization.Encoding.PEM, + format=serialization.PrivateFormat.TraditionalOpenSSL, + encryption_algorithm=serialization.NoEncryption(), + ), + ) + + os.close(cert_handle) + os.close(pkey_handle) + ctx = load_ssl_context(cert_file, pkey_file) + return ctx + + +def load_ssl_context( + cert_file: str, pkey_file: str | None = None, protocol: int | None = None +) -> ssl.SSLContext: + """Loads SSL context from cert/private key files and optional protocol. + Many parameters are directly taken from the API of + :py:class:`ssl.SSLContext`. + + :param cert_file: Path of the certificate to use. + :param pkey_file: Path of the private key to use. If not given, the key + will be obtained from the certificate file. + :param protocol: A ``PROTOCOL`` constant from the :mod:`ssl` module. + Defaults to :data:`ssl.PROTOCOL_TLS_SERVER`. + """ + if protocol is None: + protocol = ssl.PROTOCOL_TLS_SERVER + + ctx = ssl.SSLContext(protocol) + ctx.load_cert_chain(cert_file, pkey_file) + return ctx + + +def is_ssl_error(error: Exception | None = None) -> bool: + """Checks if the given error (or the current one) is an SSL error.""" + if error is None: + error = t.cast(Exception, sys.exc_info()[1]) + return isinstance(error, ssl.SSLError) + + +def select_address_family(host: str, port: int) -> socket.AddressFamily: + """Return ``AF_INET4``, ``AF_INET6``, or ``AF_UNIX`` depending on + the host and port.""" + if host.startswith("unix://"): + return socket.AF_UNIX + elif ":" in host and hasattr(socket, "AF_INET6"): + return socket.AF_INET6 + return socket.AF_INET + + +def get_sockaddr( + host: str, port: int, family: socket.AddressFamily +) -> tuple[str, int] | str: + """Return a fully qualified socket address that can be passed to + :func:`socket.bind`.""" + if family == af_unix: + # Absolute path avoids IDNA encoding error when path starts with dot. + return os.path.abspath(host.partition("://")[2]) + try: + res = socket.getaddrinfo( + host, port, family, socket.SOCK_STREAM, socket.IPPROTO_TCP + ) + except socket.gaierror: + return host, port + return res[0][4] # type: ignore + + +def get_interface_ip(family: socket.AddressFamily) -> str: + """Get the IP address of an external interface. Used when binding to + 0.0.0.0 or ::1 to show a more useful URL. + + :meta private: + """ + # arbitrary private address + host = "fd31:f903:5ab5:1::1" if family == socket.AF_INET6 else "10.253.155.219" + + with socket.socket(family, socket.SOCK_DGRAM) as s: + try: + s.connect((host, 58162)) + except OSError: + return "::1" if family == socket.AF_INET6 else "127.0.0.1" + + return s.getsockname()[0] # type: ignore + + +class BaseWSGIServer(HTTPServer): + """A WSGI server that that handles one request at a time. + + Use :func:`make_server` to create a server instance. + """ + + multithread = False + multiprocess = False + request_queue_size = LISTEN_QUEUE + allow_reuse_address = True + + def __init__( + self, + host: str, + port: int, + app: WSGIApplication, + handler: type[WSGIRequestHandler] | None = None, + passthrough_errors: bool = False, + ssl_context: _TSSLContextArg | None = None, + fd: int | None = None, + ) -> None: + if handler is None: + handler = WSGIRequestHandler + + # If the handler doesn't directly set a protocol version and + # thread or process workers are used, then allow chunked + # responses and keep-alive connections by enabling HTTP/1.1. + if "protocol_version" not in vars(handler) and ( + self.multithread or self.multiprocess + ): + handler.protocol_version = "HTTP/1.1" + + self.host = host + self.port = port + self.app = app + self.passthrough_errors = passthrough_errors + + self.address_family = address_family = select_address_family(host, port) + server_address = get_sockaddr(host, int(port), address_family) + + # Remove a leftover Unix socket file from a previous run. Don't + # remove a file that was set up by run_simple. + if address_family == af_unix and fd is None: + server_address = t.cast(str, server_address) + + if os.path.exists(server_address): + os.unlink(server_address) + + # Bind and activate will be handled manually, it should only + # happen if we're not using a socket that was already set up. + super().__init__( + server_address, # type: ignore[arg-type] + handler, + bind_and_activate=False, + ) + + if fd is None: + # No existing socket descriptor, do bind_and_activate=True. + try: + self.server_bind() + self.server_activate() + except OSError as e: + # Catch connection issues and show them without the traceback. Show + # extra instructions for address not found, and for macOS. + self.server_close() + print(e.strerror, file=sys.stderr) + + if e.errno == errno.EADDRINUSE: + print( + f"Port {port} is in use by another program. Either identify and" + " stop that program, or start the server with a different" + " port.", + file=sys.stderr, + ) + + if sys.platform == "darwin" and port == 5000: + print( + "On macOS, try disabling the 'AirPlay Receiver' service" + " from System Preferences -> General -> AirDrop & Handoff.", + file=sys.stderr, + ) + + sys.exit(1) + except BaseException: + self.server_close() + raise + else: + # TCPServer automatically opens a socket even if bind_and_activate is False. + # Close it to silence a ResourceWarning. + self.server_close() + + # Use the passed in socket directly. + self.socket = socket.fromfd(fd, address_family, socket.SOCK_STREAM) + self.server_address = self.socket.getsockname() + + if address_family != af_unix: + # If port was 0, this will record the bound port. + self.port = self.server_address[1] + + if ssl_context is not None: + if isinstance(ssl_context, tuple): + ssl_context = load_ssl_context(*ssl_context) + elif ssl_context == "adhoc": + ssl_context = generate_adhoc_ssl_context() + + self.socket = ssl_context.wrap_socket(self.socket, server_side=True) + self.ssl_context: ssl.SSLContext | None = ssl_context + else: + self.ssl_context = None + + import importlib.metadata + + self._server_version = f"Werkzeug/{importlib.metadata.version('werkzeug')}" + + def log(self, type: str, message: str, *args: t.Any) -> None: + _log(type, message, *args) + + def serve_forever(self, poll_interval: float = 0.5) -> None: + try: + super().serve_forever(poll_interval=poll_interval) + except KeyboardInterrupt: + pass + finally: + self.server_close() + + def handle_error( + self, request: t.Any, client_address: tuple[str, int] | str + ) -> None: + if self.passthrough_errors: + raise + + return super().handle_error(request, client_address) + + def log_startup(self) -> None: + """Show information about the address when starting the server.""" + dev_warning = ( + "WARNING: This is a development server. Do not use it in a production" + " deployment. Use a production WSGI server instead." + ) + dev_warning = _ansi_style(dev_warning, "bold", "red") + messages = [dev_warning] + + if self.address_family == af_unix: + messages.append(f" * Running on {self.host}") + else: + scheme = "http" if self.ssl_context is None else "https" + display_hostname = self.host + + if self.host in {"0.0.0.0", "::"}: + messages.append(f" * Running on all addresses ({self.host})") + + if self.host == "0.0.0.0": + localhost = "127.0.0.1" + display_hostname = get_interface_ip(socket.AF_INET) + else: + localhost = "[::1]" + display_hostname = get_interface_ip(socket.AF_INET6) + + messages.append(f" * Running on {scheme}://{localhost}:{self.port}") + + if ":" in display_hostname: + display_hostname = f"[{display_hostname}]" + + messages.append(f" * Running on {scheme}://{display_hostname}:{self.port}") + + _log("info", "\n".join(messages)) + + +class ThreadedWSGIServer(socketserver.ThreadingMixIn, BaseWSGIServer): + """A WSGI server that handles concurrent requests in separate + threads. + + Use :func:`make_server` to create a server instance. + """ + + multithread = True + daemon_threads = True + + +class ForkingWSGIServer(ForkingMixIn, BaseWSGIServer): + """A WSGI server that handles concurrent requests in separate forked + processes. + + Use :func:`make_server` to create a server instance. + """ + + multiprocess = True + + def __init__( + self, + host: str, + port: int, + app: WSGIApplication, + processes: int = 40, + handler: type[WSGIRequestHandler] | None = None, + passthrough_errors: bool = False, + ssl_context: _TSSLContextArg | None = None, + fd: int | None = None, + ) -> None: + if not can_fork: + raise ValueError("Your platform does not support forking.") + + super().__init__(host, port, app, handler, passthrough_errors, ssl_context, fd) + self.max_children = processes + + +def make_server( + host: str, + port: int, + app: WSGIApplication, + threaded: bool = False, + processes: int = 1, + request_handler: type[WSGIRequestHandler] | None = None, + passthrough_errors: bool = False, + ssl_context: _TSSLContextArg | None = None, + fd: int | None = None, +) -> BaseWSGIServer: + """Create an appropriate WSGI server instance based on the value of + ``threaded`` and ``processes``. + + This is called from :func:`run_simple`, but can be used separately + to have access to the server object, such as to run it in a separate + thread. + + See :func:`run_simple` for parameter docs. + """ + if threaded and processes > 1: + raise ValueError("Cannot have a multi-thread and multi-process server.") + + if threaded: + return ThreadedWSGIServer( + host, port, app, request_handler, passthrough_errors, ssl_context, fd=fd + ) + + if processes > 1: + return ForkingWSGIServer( + host, + port, + app, + processes, + request_handler, + passthrough_errors, + ssl_context, + fd=fd, + ) + + return BaseWSGIServer( + host, port, app, request_handler, passthrough_errors, ssl_context, fd=fd + ) + + +def is_running_from_reloader() -> bool: + """Check if the server is running as a subprocess within the + Werkzeug reloader. + + .. versionadded:: 0.10 + """ + return os.environ.get("WERKZEUG_RUN_MAIN") == "true" + + +def run_simple( + hostname: str, + port: int, + application: WSGIApplication, + use_reloader: bool = False, + use_debugger: bool = False, + use_evalex: bool = True, + extra_files: t.Iterable[str] | None = None, + exclude_patterns: t.Iterable[str] | None = None, + reloader_interval: int = 1, + reloader_type: str = "auto", + threaded: bool = False, + processes: int = 1, + request_handler: type[WSGIRequestHandler] | None = None, + static_files: dict[str, str | tuple[str, str]] | None = None, + passthrough_errors: bool = False, + ssl_context: _TSSLContextArg | None = None, +) -> None: + """Start a development server for a WSGI application. Various + optional features can be enabled. + + .. warning:: + + Do not use the development server when deploying to production. + It is intended for use only during local development. It is not + designed to be particularly efficient, stable, or secure. + + :param hostname: The host to bind to, for example ``'localhost'``. + Can be a domain, IPv4 or IPv6 address, or file path starting + with ``unix://`` for a Unix socket. + :param port: The port to bind to, for example ``8080``. Using ``0`` + tells the OS to pick a random free port. + :param application: The WSGI application to run. + :param use_reloader: Use a reloader process to restart the server + process when files are changed. + :param use_debugger: Use Werkzeug's debugger, which will show + formatted tracebacks on unhandled exceptions. + :param use_evalex: Make the debugger interactive. A Python terminal + can be opened for any frame in the traceback. Some protection is + provided by requiring a PIN, but this should never be enabled + on a publicly visible server. + :param extra_files: The reloader will watch these files for changes + in addition to Python modules. For example, watch a + configuration file. + :param exclude_patterns: The reloader will ignore changes to any + files matching these :mod:`fnmatch` patterns. For example, + ignore cache files. + :param reloader_interval: How often the reloader tries to check for + changes. + :param reloader_type: The reloader to use. The ``'stat'`` reloader + is built in, but may require significant CPU to watch files. The + ``'watchdog'`` reloader is much more efficient but requires + installing the ``watchdog`` package first. + :param threaded: Handle concurrent requests using threads. Cannot be + used with ``processes``. + :param processes: Handle concurrent requests using up to this number + of processes. Cannot be used with ``threaded``. + :param request_handler: Use a different + :class:`~BaseHTTPServer.BaseHTTPRequestHandler` subclass to + handle requests. + :param static_files: A dict mapping URL prefixes to directories to + serve static files from using + :class:`~werkzeug.middleware.SharedDataMiddleware`. + :param passthrough_errors: Don't catch unhandled exceptions at the + server level, let the server crash instead. If ``use_debugger`` + is enabled, the debugger will still catch such errors. + :param ssl_context: Configure TLS to serve over HTTPS. Can be an + :class:`ssl.SSLContext` object, a ``(cert_file, key_file)`` + tuple to create a typical context, or the string ``'adhoc'`` to + generate a temporary self-signed certificate. + + .. versionchanged:: 2.1 + Instructions are shown for dealing with an "address already in + use" error. + + .. versionchanged:: 2.1 + Running on ``0.0.0.0`` or ``::`` shows the loopback IP in + addition to a real IP. + + .. versionchanged:: 2.1 + The command-line interface was removed. + + .. versionchanged:: 2.0 + Running on ``0.0.0.0`` or ``::`` shows a real IP address that + was bound as well as a warning not to run the development server + in production. + + .. versionchanged:: 2.0 + The ``exclude_patterns`` parameter was added. + + .. versionchanged:: 0.15 + Bind to a Unix socket by passing a ``hostname`` that starts with + ``unix://``. + + .. versionchanged:: 0.10 + Improved the reloader and added support for changing the backend + through the ``reloader_type`` parameter. + + .. versionchanged:: 0.9 + A command-line interface was added. + + .. versionchanged:: 0.8 + ``ssl_context`` can be a tuple of paths to the certificate and + private key files. + + .. versionchanged:: 0.6 + The ``ssl_context`` parameter was added. + + .. versionchanged:: 0.5 + The ``static_files`` and ``passthrough_errors`` parameters were + added. + """ + if not isinstance(port, int): + raise TypeError("port must be an integer") + + if static_files: + from .middleware.shared_data import SharedDataMiddleware + + application = SharedDataMiddleware(application, static_files) + + if use_debugger: + from .debug import DebuggedApplication + + application = DebuggedApplication(application, evalex=use_evalex) + # Allow the specified hostname to use the debugger, in addition to + # localhost domains. + application.trusted_hosts.append(hostname) + + if not is_running_from_reloader(): + fd = None + else: + fd = int(os.environ["WERKZEUG_SERVER_FD"]) + + srv = make_server( + hostname, + port, + application, + threaded, + processes, + request_handler, + passthrough_errors, + ssl_context, + fd=fd, + ) + srv.socket.set_inheritable(True) + os.environ["WERKZEUG_SERVER_FD"] = str(srv.fileno()) + + if not is_running_from_reloader(): + srv.log_startup() + _log("info", _ansi_style("Press CTRL+C to quit", "yellow")) + + if use_reloader: + from ._reloader import run_with_reloader + + try: + run_with_reloader( + srv.serve_forever, + extra_files=extra_files, + exclude_patterns=exclude_patterns, + interval=reloader_interval, + reloader_type=reloader_type, + ) + finally: + srv.server_close() + else: + srv.serve_forever() diff --git a/gestao_raul/Lib/site-packages/werkzeug/test.py b/gestao_raul/Lib/site-packages/werkzeug/test.py new file mode 100644 index 0000000..5c3c608 --- /dev/null +++ b/gestao_raul/Lib/site-packages/werkzeug/test.py @@ -0,0 +1,1464 @@ +from __future__ import annotations + +import dataclasses +import mimetypes +import sys +import typing as t +from collections import defaultdict +from datetime import datetime +from io import BytesIO +from itertools import chain +from random import random +from tempfile import TemporaryFile +from time import time +from urllib.parse import unquote +from urllib.parse import urlsplit +from urllib.parse import urlunsplit + +from ._internal import _get_environ +from ._internal import _wsgi_decoding_dance +from ._internal import _wsgi_encoding_dance +from .datastructures import Authorization +from .datastructures import CallbackDict +from .datastructures import CombinedMultiDict +from .datastructures import EnvironHeaders +from .datastructures import FileMultiDict +from .datastructures import Headers +from .datastructures import MultiDict +from .http import dump_cookie +from .http import dump_options_header +from .http import parse_cookie +from .http import parse_date +from .http import parse_options_header +from .sansio.multipart import Data +from .sansio.multipart import Epilogue +from .sansio.multipart import Field +from .sansio.multipart import File +from .sansio.multipart import MultipartEncoder +from .sansio.multipart import Preamble +from .urls import _urlencode +from .urls import iri_to_uri +from .utils import cached_property +from .utils import get_content_type +from .wrappers.request import Request +from .wrappers.response import Response +from .wsgi import ClosingIterator +from .wsgi import get_current_url + +if t.TYPE_CHECKING: + import typing_extensions as te + from _typeshed.wsgi import WSGIApplication + from _typeshed.wsgi import WSGIEnvironment + + +def stream_encode_multipart( + data: t.Mapping[str, t.Any], + use_tempfile: bool = True, + threshold: int = 1024 * 500, + boundary: str | None = None, +) -> tuple[t.IO[bytes], int, str]: + """Encode a dict of values (either strings or file descriptors or + :class:`FileStorage` objects.) into a multipart encoded string stored + in a file descriptor. + + .. versionchanged:: 3.0 + The ``charset`` parameter was removed. + """ + if boundary is None: + boundary = f"---------------WerkzeugFormPart_{time()}{random()}" + + stream: t.IO[bytes] = BytesIO() + total_length = 0 + on_disk = False + write_binary: t.Callable[[bytes], int] + + if use_tempfile: + + def write_binary(s: bytes) -> int: + nonlocal stream, total_length, on_disk + + if on_disk: + return stream.write(s) + else: + length = len(s) + + if length + total_length <= threshold: + stream.write(s) + else: + new_stream = t.cast(t.IO[bytes], TemporaryFile("wb+")) + new_stream.write(stream.getvalue()) # type: ignore + new_stream.write(s) + stream = new_stream + on_disk = True + + total_length += length + return length + + else: + write_binary = stream.write + + encoder = MultipartEncoder(boundary.encode()) + write_binary(encoder.send_event(Preamble(data=b""))) + for key, value in _iter_data(data): + reader = getattr(value, "read", None) + if reader is not None: + filename = getattr(value, "filename", getattr(value, "name", None)) + content_type = getattr(value, "content_type", None) + if content_type is None: + content_type = ( + filename + and mimetypes.guess_type(filename)[0] + or "application/octet-stream" + ) + headers = value.headers + headers.update([("Content-Type", content_type)]) + if filename is None: + write_binary(encoder.send_event(Field(name=key, headers=headers))) + else: + write_binary( + encoder.send_event( + File(name=key, filename=filename, headers=headers) + ) + ) + while True: + chunk = reader(16384) + + if not chunk: + write_binary(encoder.send_event(Data(data=chunk, more_data=False))) + break + + write_binary(encoder.send_event(Data(data=chunk, more_data=True))) + else: + if not isinstance(value, str): + value = str(value) + write_binary(encoder.send_event(Field(name=key, headers=Headers()))) + write_binary(encoder.send_event(Data(data=value.encode(), more_data=False))) + + write_binary(encoder.send_event(Epilogue(data=b""))) + + length = stream.tell() + stream.seek(0) + return stream, length, boundary + + +def encode_multipart( + values: t.Mapping[str, t.Any], boundary: str | None = None +) -> tuple[str, bytes]: + """Like `stream_encode_multipart` but returns a tuple in the form + (``boundary``, ``data``) where data is bytes. + + .. versionchanged:: 3.0 + The ``charset`` parameter was removed. + """ + stream, length, boundary = stream_encode_multipart( + values, use_tempfile=False, boundary=boundary + ) + return boundary, stream.read() + + +def _iter_data(data: t.Mapping[str, t.Any]) -> t.Iterator[tuple[str, t.Any]]: + """Iterate over a mapping that might have a list of values, yielding + all key, value pairs. Almost like iter_multi_items but only allows + lists, not tuples, of values so tuples can be used for files. + """ + if isinstance(data, MultiDict): + yield from data.items(multi=True) + else: + for key, value in data.items(): + if isinstance(value, list): + for v in value: + yield key, v + else: + yield key, value + + +_TAnyMultiDict = t.TypeVar("_TAnyMultiDict", bound="MultiDict[t.Any, t.Any]") + + +class EnvironBuilder: + """This class can be used to conveniently create a WSGI environment + for testing purposes. It can be used to quickly create WSGI environments + or request objects from arbitrary data. + + The signature of this class is also used in some other places as of + Werkzeug 0.5 (:func:`create_environ`, :meth:`Response.from_values`, + :meth:`Client.open`). Because of this most of the functionality is + available through the constructor alone. + + Files and regular form data can be manipulated independently of each + other with the :attr:`form` and :attr:`files` attributes, but are + passed with the same argument to the constructor: `data`. + + `data` can be any of these values: + + - a `str` or `bytes` object: The object is converted into an + :attr:`input_stream`, the :attr:`content_length` is set and you have to + provide a :attr:`content_type`. + - a `dict` or :class:`MultiDict`: The keys have to be strings. The values + have to be either any of the following objects, or a list of any of the + following objects: + + - a :class:`file`-like object: These are converted into + :class:`FileStorage` objects automatically. + - a `tuple`: The :meth:`~FileMultiDict.add_file` method is called + with the key and the unpacked `tuple` items as positional + arguments. + - a `str`: The string is set as form data for the associated key. + - a file-like object: The object content is loaded in memory and then + handled like a regular `str` or a `bytes`. + + :param path: the path of the request. In the WSGI environment this will + end up as `PATH_INFO`. If the `query_string` is not defined + and there is a question mark in the `path` everything after + it is used as query string. + :param base_url: the base URL is a URL that is used to extract the WSGI + URL scheme, host (server name + server port) and the + script root (`SCRIPT_NAME`). + :param query_string: an optional string or dict with URL parameters. + :param method: the HTTP method to use, defaults to `GET`. + :param input_stream: an optional input stream. Do not specify this and + `data`. As soon as an input stream is set you can't + modify :attr:`args` and :attr:`files` unless you + set the :attr:`input_stream` to `None` again. + :param content_type: The content type for the request. As of 0.5 you + don't have to provide this when specifying files + and form data via `data`. + :param content_length: The content length for the request. You don't + have to specify this when providing data via + `data`. + :param errors_stream: an optional error stream that is used for + `wsgi.errors`. Defaults to :data:`stderr`. + :param multithread: controls `wsgi.multithread`. Defaults to `False`. + :param multiprocess: controls `wsgi.multiprocess`. Defaults to `False`. + :param run_once: controls `wsgi.run_once`. Defaults to `False`. + :param headers: an optional list or :class:`Headers` object of headers. + :param data: a string or dict of form data or a file-object. + See explanation above. + :param json: An object to be serialized and assigned to ``data``. + Defaults the content type to ``"application/json"``. + Serialized with the function assigned to :attr:`json_dumps`. + :param environ_base: an optional dict of environment defaults. + :param environ_overrides: an optional dict of environment overrides. + :param auth: An authorization object to use for the + ``Authorization`` header value. A ``(username, password)`` tuple + is a shortcut for ``Basic`` authorization. + + .. versionchanged:: 3.0 + The ``charset`` parameter was removed. + + .. versionchanged:: 2.1 + ``CONTENT_TYPE`` and ``CONTENT_LENGTH`` are not duplicated as + header keys in the environ. + + .. versionchanged:: 2.0 + ``REQUEST_URI`` and ``RAW_URI`` is the full raw URI including + the query string, not only the path. + + .. versionchanged:: 2.0 + The default :attr:`request_class` is ``Request`` instead of + ``BaseRequest``. + + .. versionadded:: 2.0 + Added the ``auth`` parameter. + + .. versionadded:: 0.15 + The ``json`` param and :meth:`json_dumps` method. + + .. versionadded:: 0.15 + The environ has keys ``REQUEST_URI`` and ``RAW_URI`` containing + the path before percent-decoding. This is not part of the WSGI + PEP, but many WSGI servers include it. + + .. versionchanged:: 0.6 + ``path`` and ``base_url`` can now be unicode strings that are + encoded with :func:`iri_to_uri`. + """ + + #: the server protocol to use. defaults to HTTP/1.1 + server_protocol = "HTTP/1.1" + + #: the wsgi version to use. defaults to (1, 0) + wsgi_version = (1, 0) + + #: The default request class used by :meth:`get_request`. + request_class = Request + + import json + + #: The serialization function used when ``json`` is passed. + json_dumps = staticmethod(json.dumps) + del json + + _args: MultiDict[str, str] | None + _query_string: str | None + _input_stream: t.IO[bytes] | None + _form: MultiDict[str, str] | None + _files: FileMultiDict | None + + def __init__( + self, + path: str = "/", + base_url: str | None = None, + query_string: t.Mapping[str, str] | str | None = None, + method: str = "GET", + input_stream: t.IO[bytes] | None = None, + content_type: str | None = None, + content_length: int | None = None, + errors_stream: t.IO[str] | None = None, + multithread: bool = False, + multiprocess: bool = False, + run_once: bool = False, + headers: Headers | t.Iterable[tuple[str, str]] | None = None, + data: None | (t.IO[bytes] | str | bytes | t.Mapping[str, t.Any]) = None, + environ_base: t.Mapping[str, t.Any] | None = None, + environ_overrides: t.Mapping[str, t.Any] | None = None, + mimetype: str | None = None, + json: t.Mapping[str, t.Any] | None = None, + auth: Authorization | tuple[str, str] | None = None, + ) -> None: + if query_string is not None and "?" in path: + raise ValueError("Query string is defined in the path and as an argument") + request_uri = urlsplit(path) + if query_string is None and "?" in path: + query_string = request_uri.query + + self.path = iri_to_uri(request_uri.path) + self.request_uri = path + if base_url is not None: + base_url = iri_to_uri(base_url) + self.base_url = base_url # type: ignore + if isinstance(query_string, str): + self.query_string = query_string + else: + if query_string is None: + query_string = MultiDict() + elif not isinstance(query_string, MultiDict): + query_string = MultiDict(query_string) + self.args = query_string + self.method = method + if headers is None: + headers = Headers() + elif not isinstance(headers, Headers): + headers = Headers(headers) + self.headers = headers + if content_type is not None: + self.content_type = content_type + if errors_stream is None: + errors_stream = sys.stderr + self.errors_stream = errors_stream + self.multithread = multithread + self.multiprocess = multiprocess + self.run_once = run_once + self.environ_base = environ_base + self.environ_overrides = environ_overrides + self.input_stream = input_stream + self.content_length = content_length + self.closed = False + + if auth is not None: + if isinstance(auth, tuple): + auth = Authorization( + "basic", {"username": auth[0], "password": auth[1]} + ) + + self.headers.set("Authorization", auth.to_header()) + + if json is not None: + if data is not None: + raise TypeError("can't provide both json and data") + + data = self.json_dumps(json) + + if self.content_type is None: + self.content_type = "application/json" + + if data: + if input_stream is not None: + raise TypeError("can't provide input stream and data") + if hasattr(data, "read"): + data = data.read() + if isinstance(data, str): + data = data.encode() + if isinstance(data, bytes): + self.input_stream = BytesIO(data) + if self.content_length is None: + self.content_length = len(data) + else: + for key, value in _iter_data(data): + if isinstance(value, (tuple, dict)) or hasattr(value, "read"): + self._add_file_from_data(key, value) + else: + self.form.setlistdefault(key).append(value) + + if mimetype is not None: + self.mimetype = mimetype + + @classmethod + def from_environ(cls, environ: WSGIEnvironment, **kwargs: t.Any) -> EnvironBuilder: + """Turn an environ dict back into a builder. Any extra kwargs + override the args extracted from the environ. + + .. versionchanged:: 2.0 + Path and query values are passed through the WSGI decoding + dance to avoid double encoding. + + .. versionadded:: 0.15 + """ + headers = Headers(EnvironHeaders(environ)) + out = { + "path": _wsgi_decoding_dance(environ["PATH_INFO"]), + "base_url": cls._make_base_url( + environ["wsgi.url_scheme"], + headers.pop("Host"), + _wsgi_decoding_dance(environ["SCRIPT_NAME"]), + ), + "query_string": _wsgi_decoding_dance(environ["QUERY_STRING"]), + "method": environ["REQUEST_METHOD"], + "input_stream": environ["wsgi.input"], + "content_type": headers.pop("Content-Type", None), + "content_length": headers.pop("Content-Length", None), + "errors_stream": environ["wsgi.errors"], + "multithread": environ["wsgi.multithread"], + "multiprocess": environ["wsgi.multiprocess"], + "run_once": environ["wsgi.run_once"], + "headers": headers, + } + out.update(kwargs) + return cls(**out) + + def _add_file_from_data( + self, + key: str, + value: (t.IO[bytes] | tuple[t.IO[bytes], str] | tuple[t.IO[bytes], str, str]), + ) -> None: + """Called in the EnvironBuilder to add files from the data dict.""" + if isinstance(value, tuple): + self.files.add_file(key, *value) + else: + self.files.add_file(key, value) + + @staticmethod + def _make_base_url(scheme: str, host: str, script_root: str) -> str: + return urlunsplit((scheme, host, script_root, "", "")).rstrip("/") + "/" + + @property + def base_url(self) -> str: + """The base URL is used to extract the URL scheme, host name, + port, and root path. + """ + return self._make_base_url(self.url_scheme, self.host, self.script_root) + + @base_url.setter + def base_url(self, value: str | None) -> None: + if value is None: + scheme = "http" + netloc = "localhost" + script_root = "" + else: + scheme, netloc, script_root, qs, anchor = urlsplit(value) + if qs or anchor: + raise ValueError("base url must not contain a query string or fragment") + self.script_root = script_root.rstrip("/") + self.host = netloc + self.url_scheme = scheme + + @property + def content_type(self) -> str | None: + """The content type for the request. Reflected from and to + the :attr:`headers`. Do not set if you set :attr:`files` or + :attr:`form` for auto detection. + """ + ct = self.headers.get("Content-Type") + if ct is None and not self._input_stream: + if self._files: + return "multipart/form-data" + if self._form: + return "application/x-www-form-urlencoded" + return None + return ct + + @content_type.setter + def content_type(self, value: str | None) -> None: + if value is None: + self.headers.pop("Content-Type", None) + else: + self.headers["Content-Type"] = value + + @property + def mimetype(self) -> str | None: + """The mimetype (content type without charset etc.) + + .. versionadded:: 0.14 + """ + ct = self.content_type + return ct.split(";")[0].strip() if ct else None + + @mimetype.setter + def mimetype(self, value: str) -> None: + self.content_type = get_content_type(value, "utf-8") + + @property + def mimetype_params(self) -> t.Mapping[str, str]: + """The mimetype parameters as dict. For example if the + content type is ``text/html; charset=utf-8`` the params would be + ``{'charset': 'utf-8'}``. + + .. versionadded:: 0.14 + """ + + def on_update(d: CallbackDict[str, str]) -> None: + self.headers["Content-Type"] = dump_options_header(self.mimetype, d) + + d = parse_options_header(self.headers.get("content-type", ""))[1] + return CallbackDict(d, on_update) + + @property + def content_length(self) -> int | None: + """The content length as integer. Reflected from and to the + :attr:`headers`. Do not set if you set :attr:`files` or + :attr:`form` for auto detection. + """ + return self.headers.get("Content-Length", type=int) + + @content_length.setter + def content_length(self, value: int | None) -> None: + if value is None: + self.headers.pop("Content-Length", None) + else: + self.headers["Content-Length"] = str(value) + + def _get_form(self, name: str, storage: type[_TAnyMultiDict]) -> _TAnyMultiDict: + """Common behavior for getting the :attr:`form` and + :attr:`files` properties. + + :param name: Name of the internal cached attribute. + :param storage: Storage class used for the data. + """ + if self.input_stream is not None: + raise AttributeError("an input stream is defined") + + rv = getattr(self, name) + + if rv is None: + rv = storage() + setattr(self, name, rv) + + return rv # type: ignore + + def _set_form(self, name: str, value: MultiDict[str, t.Any]) -> None: + """Common behavior for setting the :attr:`form` and + :attr:`files` properties. + + :param name: Name of the internal cached attribute. + :param value: Value to assign to the attribute. + """ + self._input_stream = None + setattr(self, name, value) + + @property + def form(self) -> MultiDict[str, str]: + """A :class:`MultiDict` of form values.""" + return self._get_form("_form", MultiDict) + + @form.setter + def form(self, value: MultiDict[str, str]) -> None: + self._set_form("_form", value) + + @property + def files(self) -> FileMultiDict: + """A :class:`FileMultiDict` of uploaded files. Use + :meth:`~FileMultiDict.add_file` to add new files. + """ + return self._get_form("_files", FileMultiDict) + + @files.setter + def files(self, value: FileMultiDict) -> None: + self._set_form("_files", value) + + @property + def input_stream(self) -> t.IO[bytes] | None: + """An optional input stream. This is mutually exclusive with + setting :attr:`form` and :attr:`files`, setting it will clear + those. Do not provide this if the method is not ``POST`` or + another method that has a body. + """ + return self._input_stream + + @input_stream.setter + def input_stream(self, value: t.IO[bytes] | None) -> None: + self._input_stream = value + self._form = None + self._files = None + + @property + def query_string(self) -> str: + """The query string. If you set this to a string + :attr:`args` will no longer be available. + """ + if self._query_string is None: + if self._args is not None: + return _urlencode(self._args) + return "" + return self._query_string + + @query_string.setter + def query_string(self, value: str | None) -> None: + self._query_string = value + self._args = None + + @property + def args(self) -> MultiDict[str, str]: + """The URL arguments as :class:`MultiDict`.""" + if self._query_string is not None: + raise AttributeError("a query string is defined") + if self._args is None: + self._args = MultiDict() + return self._args + + @args.setter + def args(self, value: MultiDict[str, str] | None) -> None: + self._query_string = None + self._args = value + + @property + def server_name(self) -> str: + """The server name (read-only, use :attr:`host` to set)""" + return self.host.split(":", 1)[0] + + @property + def server_port(self) -> int: + """The server port as integer (read-only, use :attr:`host` to set)""" + pieces = self.host.split(":", 1) + + if len(pieces) == 2: + try: + return int(pieces[1]) + except ValueError: + pass + + if self.url_scheme == "https": + return 443 + return 80 + + def __del__(self) -> None: + try: + self.close() + except Exception: + pass + + def close(self) -> None: + """Closes all files. If you put real :class:`file` objects into the + :attr:`files` dict you can call this method to automatically close + them all in one go. + """ + if self.closed: + return + try: + files = self.files.values() + except AttributeError: + files = () + for f in files: + try: + f.close() + except Exception: + pass + self.closed = True + + def get_environ(self) -> WSGIEnvironment: + """Return the built environ. + + .. versionchanged:: 0.15 + The content type and length headers are set based on + input stream detection. Previously this only set the WSGI + keys. + """ + input_stream = self.input_stream + content_length = self.content_length + + mimetype = self.mimetype + content_type = self.content_type + + if input_stream is not None: + start_pos = input_stream.tell() + input_stream.seek(0, 2) + end_pos = input_stream.tell() + input_stream.seek(start_pos) + content_length = end_pos - start_pos + elif mimetype == "multipart/form-data": + input_stream, content_length, boundary = stream_encode_multipart( + CombinedMultiDict([self.form, self.files]) + ) + content_type = f'{mimetype}; boundary="{boundary}"' + elif mimetype == "application/x-www-form-urlencoded": + form_encoded = _urlencode(self.form).encode("ascii") + content_length = len(form_encoded) + input_stream = BytesIO(form_encoded) + else: + input_stream = BytesIO() + + result: WSGIEnvironment = {} + if self.environ_base: + result.update(self.environ_base) + + def _path_encode(x: str) -> str: + return _wsgi_encoding_dance(unquote(x)) + + raw_uri = _wsgi_encoding_dance(self.request_uri) + result.update( + { + "REQUEST_METHOD": self.method, + "SCRIPT_NAME": _path_encode(self.script_root), + "PATH_INFO": _path_encode(self.path), + "QUERY_STRING": _wsgi_encoding_dance(self.query_string), + # Non-standard, added by mod_wsgi, uWSGI + "REQUEST_URI": raw_uri, + # Non-standard, added by gunicorn + "RAW_URI": raw_uri, + "SERVER_NAME": self.server_name, + "SERVER_PORT": str(self.server_port), + "HTTP_HOST": self.host, + "SERVER_PROTOCOL": self.server_protocol, + "wsgi.version": self.wsgi_version, + "wsgi.url_scheme": self.url_scheme, + "wsgi.input": input_stream, + "wsgi.errors": self.errors_stream, + "wsgi.multithread": self.multithread, + "wsgi.multiprocess": self.multiprocess, + "wsgi.run_once": self.run_once, + } + ) + + headers = self.headers.copy() + # Don't send these as headers, they're part of the environ. + headers.remove("Content-Type") + headers.remove("Content-Length") + + if content_type is not None: + result["CONTENT_TYPE"] = content_type + + if content_length is not None: + result["CONTENT_LENGTH"] = str(content_length) + + combined_headers = defaultdict(list) + + for key, value in headers.to_wsgi_list(): + combined_headers[f"HTTP_{key.upper().replace('-', '_')}"].append(value) + + for key, values in combined_headers.items(): + result[key] = ", ".join(values) + + if self.environ_overrides: + result.update(self.environ_overrides) + + return result + + def get_request(self, cls: type[Request] | None = None) -> Request: + """Returns a request with the data. If the request class is not + specified :attr:`request_class` is used. + + :param cls: The request wrapper to use. + """ + if cls is None: + cls = self.request_class + + return cls(self.get_environ()) + + +class ClientRedirectError(Exception): + """If a redirect loop is detected when using follow_redirects=True with + the :cls:`Client`, then this exception is raised. + """ + + +class Client: + """Simulate sending requests to a WSGI application without running a WSGI or HTTP + server. + + :param application: The WSGI application to make requests to. + :param response_wrapper: A :class:`.Response` class to wrap response data with. + Defaults to :class:`.TestResponse`. If it's not a subclass of ``TestResponse``, + one will be created. + :param use_cookies: Persist cookies from ``Set-Cookie`` response headers to the + ``Cookie`` header in subsequent requests. Domain and path matching is supported, + but other cookie parameters are ignored. + :param allow_subdomain_redirects: Allow requests to follow redirects to subdomains. + Enable this if the application handles subdomains and redirects between them. + + .. versionchanged:: 2.3 + Simplify cookie implementation, support domain and path matching. + + .. versionchanged:: 2.1 + All data is available as properties on the returned response object. The + response cannot be returned as a tuple. + + .. versionchanged:: 2.0 + ``response_wrapper`` is always a subclass of :class:``TestResponse``. + + .. versionchanged:: 0.5 + Added the ``use_cookies`` parameter. + """ + + def __init__( + self, + application: WSGIApplication, + response_wrapper: type[Response] | None = None, + use_cookies: bool = True, + allow_subdomain_redirects: bool = False, + ) -> None: + self.application = application + + if response_wrapper in {None, Response}: + response_wrapper = TestResponse + elif response_wrapper is not None and not issubclass( + response_wrapper, TestResponse + ): + response_wrapper = type( + "WrapperTestResponse", + (TestResponse, response_wrapper), + {}, + ) + + self.response_wrapper = t.cast(type["TestResponse"], response_wrapper) + + if use_cookies: + self._cookies: dict[tuple[str, str, str], Cookie] | None = {} + else: + self._cookies = None + + self.allow_subdomain_redirects = allow_subdomain_redirects + + def get_cookie( + self, key: str, domain: str = "localhost", path: str = "/" + ) -> Cookie | None: + """Return a :class:`.Cookie` if it exists. Cookies are uniquely identified by + ``(domain, path, key)``. + + :param key: The decoded form of the key for the cookie. + :param domain: The domain the cookie was set for. + :param path: The path the cookie was set for. + + .. versionadded:: 2.3 + """ + if self._cookies is None: + raise TypeError( + "Cookies are disabled. Create a client with 'use_cookies=True'." + ) + + return self._cookies.get((domain, path, key)) + + def set_cookie( + self, + key: str, + value: str = "", + *, + domain: str = "localhost", + origin_only: bool = True, + path: str = "/", + **kwargs: t.Any, + ) -> None: + """Set a cookie to be sent in subsequent requests. + + This is a convenience to skip making a test request to a route that would set + the cookie. To test the cookie, make a test request to a route that uses the + cookie value. + + The client uses ``domain``, ``origin_only``, and ``path`` to determine which + cookies to send with a request. It does not use other cookie parameters that + browsers use, since they're not applicable in tests. + + :param key: The key part of the cookie. + :param value: The value part of the cookie. + :param domain: Send this cookie with requests that match this domain. If + ``origin_only`` is true, it must be an exact match, otherwise it may be a + suffix match. + :param origin_only: Whether the domain must be an exact match to the request. + :param path: Send this cookie with requests that match this path either exactly + or as a prefix. + :param kwargs: Passed to :func:`.dump_cookie`. + + .. versionchanged:: 3.0 + The parameter ``server_name`` is removed. The first parameter is + ``key``. Use the ``domain`` and ``origin_only`` parameters instead. + + .. versionchanged:: 2.3 + The ``origin_only`` parameter was added. + + .. versionchanged:: 2.3 + The ``domain`` parameter defaults to ``localhost``. + """ + if self._cookies is None: + raise TypeError( + "Cookies are disabled. Create a client with 'use_cookies=True'." + ) + + cookie = Cookie._from_response_header( + domain, "/", dump_cookie(key, value, domain=domain, path=path, **kwargs) + ) + cookie.origin_only = origin_only + + if cookie._should_delete: + self._cookies.pop(cookie._storage_key, None) + else: + self._cookies[cookie._storage_key] = cookie + + def delete_cookie( + self, + key: str, + *, + domain: str = "localhost", + path: str = "/", + ) -> None: + """Delete a cookie if it exists. Cookies are uniquely identified by + ``(domain, path, key)``. + + :param key: The decoded form of the key for the cookie. + :param domain: The domain the cookie was set for. + :param path: The path the cookie was set for. + + .. versionchanged:: 3.0 + The ``server_name`` parameter is removed. The first parameter is + ``key``. Use the ``domain`` parameter instead. + + .. versionchanged:: 3.0 + The ``secure``, ``httponly`` and ``samesite`` parameters are removed. + + .. versionchanged:: 2.3 + The ``domain`` parameter defaults to ``localhost``. + """ + if self._cookies is None: + raise TypeError( + "Cookies are disabled. Create a client with 'use_cookies=True'." + ) + + self._cookies.pop((domain, path, key), None) + + def _add_cookies_to_wsgi(self, environ: WSGIEnvironment) -> None: + """If cookies are enabled, set the ``Cookie`` header in the environ to the + cookies that are applicable to the request host and path. + + :meta private: + + .. versionadded:: 2.3 + """ + if self._cookies is None: + return + + url = urlsplit(get_current_url(environ)) + server_name = url.hostname or "localhost" + value = "; ".join( + c._to_request_header() + for c in self._cookies.values() + if c._matches_request(server_name, url.path) + ) + + if value: + environ["HTTP_COOKIE"] = value + else: + environ.pop("HTTP_COOKIE", None) + + def _update_cookies_from_response( + self, server_name: str, path: str, headers: list[str] + ) -> None: + """If cookies are enabled, update the stored cookies from any ``Set-Cookie`` + headers in the response. + + :meta private: + + .. versionadded:: 2.3 + """ + if self._cookies is None: + return + + for header in headers: + cookie = Cookie._from_response_header(server_name, path, header) + + if cookie._should_delete: + self._cookies.pop(cookie._storage_key, None) + else: + self._cookies[cookie._storage_key] = cookie + + def run_wsgi_app( + self, environ: WSGIEnvironment, buffered: bool = False + ) -> tuple[t.Iterable[bytes], str, Headers]: + """Runs the wrapped WSGI app with the given environment. + + :meta private: + """ + self._add_cookies_to_wsgi(environ) + rv = run_wsgi_app(self.application, environ, buffered=buffered) + url = urlsplit(get_current_url(environ)) + self._update_cookies_from_response( + url.hostname or "localhost", url.path, rv[2].getlist("Set-Cookie") + ) + return rv + + def resolve_redirect( + self, response: TestResponse, buffered: bool = False + ) -> TestResponse: + """Perform a new request to the location given by the redirect + response to the previous request. + + :meta private: + """ + scheme, netloc, path, qs, anchor = urlsplit(response.location) + builder = EnvironBuilder.from_environ( + response.request.environ, path=path, query_string=qs + ) + + to_name_parts = netloc.split(":", 1)[0].split(".") + from_name_parts = builder.server_name.split(".") + + if to_name_parts != [""]: + # The new location has a host, use it for the base URL. + builder.url_scheme = scheme + builder.host = netloc + else: + # A local redirect with autocorrect_location_header=False + # doesn't have a host, so use the request's host. + to_name_parts = from_name_parts + + # Explain why a redirect to a different server name won't be followed. + if to_name_parts != from_name_parts: + if to_name_parts[-len(from_name_parts) :] == from_name_parts: + if not self.allow_subdomain_redirects: + raise RuntimeError("Following subdomain redirects is not enabled.") + else: + raise RuntimeError("Following external redirects is not supported.") + + path_parts = path.split("/") + root_parts = builder.script_root.split("/") + + if path_parts[: len(root_parts)] == root_parts: + # Strip the script root from the path. + builder.path = path[len(builder.script_root) :] + else: + # The new location is not under the script root, so use the + # whole path and clear the previous root. + builder.path = path + builder.script_root = "" + + # Only 307 and 308 preserve all of the original request. + if response.status_code not in {307, 308}: + # HEAD is preserved, everything else becomes GET. + if builder.method != "HEAD": + builder.method = "GET" + + # Clear the body and the headers that describe it. + + if builder.input_stream is not None: + builder.input_stream.close() + builder.input_stream = None + + builder.content_type = None + builder.content_length = None + builder.headers.pop("Transfer-Encoding", None) + + return self.open(builder, buffered=buffered) + + def open( + self, + *args: t.Any, + buffered: bool = False, + follow_redirects: bool = False, + **kwargs: t.Any, + ) -> TestResponse: + """Generate an environ dict from the given arguments, make a + request to the application using it, and return the response. + + :param args: Passed to :class:`EnvironBuilder` to create the + environ for the request. If a single arg is passed, it can + be an existing :class:`EnvironBuilder` or an environ dict. + :param buffered: Convert the iterator returned by the app into + a list. If the iterator has a ``close()`` method, it is + called automatically. + :param follow_redirects: Make additional requests to follow HTTP + redirects until a non-redirect status is returned. + :attr:`TestResponse.history` lists the intermediate + responses. + + .. versionchanged:: 2.1 + Removed the ``as_tuple`` parameter. + + .. versionchanged:: 2.0 + The request input stream is closed when calling + ``response.close()``. Input streams for redirects are + automatically closed. + + .. versionchanged:: 0.5 + If a dict is provided as file in the dict for the ``data`` + parameter the content type has to be called ``content_type`` + instead of ``mimetype``. This change was made for + consistency with :class:`werkzeug.FileWrapper`. + + .. versionchanged:: 0.5 + Added the ``follow_redirects`` parameter. + """ + request: Request | None = None + + if not kwargs and len(args) == 1: + arg = args[0] + + if isinstance(arg, EnvironBuilder): + request = arg.get_request() + elif isinstance(arg, dict): + request = EnvironBuilder.from_environ(arg).get_request() + elif isinstance(arg, Request): + request = arg + + if request is None: + builder = EnvironBuilder(*args, **kwargs) + + try: + request = builder.get_request() + finally: + builder.close() + + response_parts = self.run_wsgi_app(request.environ, buffered=buffered) + response = self.response_wrapper(*response_parts, request=request) + + redirects = set() + history: list[TestResponse] = [] + + if not follow_redirects: + return response + + while response.status_code in { + 301, + 302, + 303, + 305, + 307, + 308, + }: + # Exhaust intermediate response bodies to ensure middleware + # that returns an iterator runs any cleanup code. + if not buffered: + response.make_sequence() + response.close() + + new_redirect_entry = (response.location, response.status_code) + + if new_redirect_entry in redirects: + raise ClientRedirectError( + f"Loop detected: A {response.status_code} redirect" + f" to {response.location} was already made." + ) + + redirects.add(new_redirect_entry) + response.history = tuple(history) + history.append(response) + response = self.resolve_redirect(response, buffered=buffered) + else: + # This is the final request after redirects. + response.history = tuple(history) + # Close the input stream when closing the response, in case + # the input is an open temporary file. + response.call_on_close(request.input_stream.close) + return response + + def get(self, *args: t.Any, **kw: t.Any) -> TestResponse: + """Call :meth:`open` with ``method`` set to ``GET``.""" + kw["method"] = "GET" + return self.open(*args, **kw) + + def post(self, *args: t.Any, **kw: t.Any) -> TestResponse: + """Call :meth:`open` with ``method`` set to ``POST``.""" + kw["method"] = "POST" + return self.open(*args, **kw) + + def put(self, *args: t.Any, **kw: t.Any) -> TestResponse: + """Call :meth:`open` with ``method`` set to ``PUT``.""" + kw["method"] = "PUT" + return self.open(*args, **kw) + + def delete(self, *args: t.Any, **kw: t.Any) -> TestResponse: + """Call :meth:`open` with ``method`` set to ``DELETE``.""" + kw["method"] = "DELETE" + return self.open(*args, **kw) + + def patch(self, *args: t.Any, **kw: t.Any) -> TestResponse: + """Call :meth:`open` with ``method`` set to ``PATCH``.""" + kw["method"] = "PATCH" + return self.open(*args, **kw) + + def options(self, *args: t.Any, **kw: t.Any) -> TestResponse: + """Call :meth:`open` with ``method`` set to ``OPTIONS``.""" + kw["method"] = "OPTIONS" + return self.open(*args, **kw) + + def head(self, *args: t.Any, **kw: t.Any) -> TestResponse: + """Call :meth:`open` with ``method`` set to ``HEAD``.""" + kw["method"] = "HEAD" + return self.open(*args, **kw) + + def trace(self, *args: t.Any, **kw: t.Any) -> TestResponse: + """Call :meth:`open` with ``method`` set to ``TRACE``.""" + kw["method"] = "TRACE" + return self.open(*args, **kw) + + def __repr__(self) -> str: + return f"<{type(self).__name__} {self.application!r}>" + + +def create_environ(*args: t.Any, **kwargs: t.Any) -> WSGIEnvironment: + """Create a new WSGI environ dict based on the values passed. The first + parameter should be the path of the request which defaults to '/'. The + second one can either be an absolute path (in that case the host is + localhost:80) or a full path to the request with scheme, netloc port and + the path to the script. + + This accepts the same arguments as the :class:`EnvironBuilder` + constructor. + + .. versionchanged:: 0.5 + This function is now a thin wrapper over :class:`EnvironBuilder` which + was added in 0.5. The `headers`, `environ_base`, `environ_overrides` + and `charset` parameters were added. + """ + builder = EnvironBuilder(*args, **kwargs) + + try: + return builder.get_environ() + finally: + builder.close() + + +def run_wsgi_app( + app: WSGIApplication, environ: WSGIEnvironment, buffered: bool = False +) -> tuple[t.Iterable[bytes], str, Headers]: + """Return a tuple in the form (app_iter, status, headers) of the + application output. This works best if you pass it an application that + returns an iterator all the time. + + Sometimes applications may use the `write()` callable returned + by the `start_response` function. This tries to resolve such edge + cases automatically. But if you don't get the expected output you + should set `buffered` to `True` which enforces buffering. + + If passed an invalid WSGI application the behavior of this function is + undefined. Never pass non-conforming WSGI applications to this function. + + :param app: the application to execute. + :param buffered: set to `True` to enforce buffering. + :return: tuple in the form ``(app_iter, status, headers)`` + """ + # Copy environ to ensure any mutations by the app (ProxyFix, for + # example) don't affect subsequent requests (such as redirects). + environ = _get_environ(environ).copy() + status: str + response: tuple[str, list[tuple[str, str]]] | None = None + buffer: list[bytes] = [] + + def start_response(status, headers, exc_info=None): # type: ignore + nonlocal response + + if exc_info: + try: + raise exc_info[1].with_traceback(exc_info[2]) + finally: + exc_info = None + + response = (status, headers) + return buffer.append + + app_rv = app(environ, start_response) + close_func = getattr(app_rv, "close", None) + app_iter: t.Iterable[bytes] = iter(app_rv) + + # when buffering we emit the close call early and convert the + # application iterator into a regular list + if buffered: + try: + app_iter = list(app_iter) + finally: + if close_func is not None: + close_func() + + # otherwise we iterate the application iter until we have a response, chain + # the already received data with the already collected data and wrap it in + # a new `ClosingIterator` if we need to restore a `close` callable from the + # original return value. + else: + for item in app_iter: + buffer.append(item) + + if response is not None: + break + + if buffer: + app_iter = chain(buffer, app_iter) + + if close_func is not None and app_iter is not app_rv: + app_iter = ClosingIterator(app_iter, close_func) + + status, headers = response # type: ignore + return app_iter, status, Headers(headers) + + +class TestResponse(Response): + """:class:`~werkzeug.wrappers.Response` subclass that provides extra + information about requests made with the test :class:`Client`. + + Test client requests will always return an instance of this class. + If a custom response class is passed to the client, it is + subclassed along with this to support test information. + + If the test request included large files, or if the application is + serving a file, call :meth:`close` to close any open files and + prevent Python showing a ``ResourceWarning``. + + .. versionchanged:: 2.2 + Set the ``default_mimetype`` to None to prevent a mimetype being + assumed if missing. + + .. versionchanged:: 2.1 + Response instances cannot be treated as tuples. + + .. versionadded:: 2.0 + Test client methods always return instances of this class. + """ + + default_mimetype = None + # Don't assume a mimetype, instead use whatever the response provides + + request: Request + """A request object with the environ used to make the request that + resulted in this response. + """ + + history: tuple[TestResponse, ...] + """A list of intermediate responses. Populated when the test request + is made with ``follow_redirects`` enabled. + """ + + # Tell Pytest to ignore this, it's not a test class. + __test__ = False + + def __init__( + self, + response: t.Iterable[bytes], + status: str, + headers: Headers, + request: Request, + history: tuple[TestResponse] = (), # type: ignore + **kwargs: t.Any, + ) -> None: + super().__init__(response, status, headers, **kwargs) + self.request = request + self.history = history + self._compat_tuple = response, status, headers + + @cached_property + def text(self) -> str: + """The response data as text. A shortcut for + ``response.get_data(as_text=True)``. + + .. versionadded:: 2.1 + """ + return self.get_data(as_text=True) + + +@dataclasses.dataclass +class Cookie: + """A cookie key, value, and parameters. + + The class itself is not a public API. Its attributes are documented for inspection + with :meth:`.Client.get_cookie` only. + + .. versionadded:: 2.3 + """ + + key: str + """The cookie key, encoded as a client would see it.""" + + value: str + """The cookie key, encoded as a client would see it.""" + + decoded_key: str + """The cookie key, decoded as the application would set and see it.""" + + decoded_value: str + """The cookie value, decoded as the application would set and see it.""" + + expires: datetime | None + """The time at which the cookie is no longer valid.""" + + max_age: int | None + """The number of seconds from when the cookie was set at which it is + no longer valid. + """ + + domain: str + """The domain that the cookie was set for, or the request domain if not set.""" + + origin_only: bool + """Whether the cookie will be sent for exact domain matches only. This is ``True`` + if the ``Domain`` parameter was not present. + """ + + path: str + """The path that the cookie was set for.""" + + secure: bool | None + """The ``Secure`` parameter.""" + + http_only: bool | None + """The ``HttpOnly`` parameter.""" + + same_site: str | None + """The ``SameSite`` parameter.""" + + def _matches_request(self, server_name: str, path: str) -> bool: + return ( + server_name == self.domain + or ( + not self.origin_only + and server_name.endswith(self.domain) + and server_name[: -len(self.domain)].endswith(".") + ) + ) and ( + path == self.path + or ( + path.startswith(self.path) + and path[len(self.path) - self.path.endswith("/") :].startswith("/") + ) + ) + + def _to_request_header(self) -> str: + return f"{self.key}={self.value}" + + @classmethod + def _from_response_header(cls, server_name: str, path: str, header: str) -> te.Self: + header, _, parameters_str = header.partition(";") + key, _, value = header.partition("=") + decoded_key, decoded_value = next(parse_cookie(header).items()) # type: ignore[call-overload] + params = {} + + for item in parameters_str.split(";"): + k, sep, v = item.partition("=") + params[k.strip().lower()] = v.strip() if sep else None + + return cls( + key=key.strip(), + value=value.strip(), + decoded_key=decoded_key, + decoded_value=decoded_value, + expires=parse_date(params.get("expires")), + max_age=int(params["max-age"] or 0) if "max-age" in params else None, + domain=params.get("domain") or server_name, + origin_only="domain" not in params, + path=params.get("path") or path.rpartition("/")[0] or "/", + secure="secure" in params, + http_only="httponly" in params, + same_site=params.get("samesite"), + ) + + @property + def _storage_key(self) -> tuple[str, str, str]: + return self.domain, self.path, self.decoded_key + + @property + def _should_delete(self) -> bool: + return self.max_age == 0 or ( + self.expires is not None and self.expires.timestamp() == 0 + ) diff --git a/gestao_raul/Lib/site-packages/werkzeug/testapp.py b/gestao_raul/Lib/site-packages/werkzeug/testapp.py new file mode 100644 index 0000000..cdf7fac --- /dev/null +++ b/gestao_raul/Lib/site-packages/werkzeug/testapp.py @@ -0,0 +1,194 @@ +"""A small application that can be used to test a WSGI server and check +it for WSGI compliance. +""" + +from __future__ import annotations + +import importlib.metadata +import os +import sys +import typing as t +from textwrap import wrap + +from markupsafe import escape + +from .wrappers.request import Request +from .wrappers.response import Response + +TEMPLATE = """\ + + +WSGI Information + +
    +

    WSGI Information

    +

    + This page displays all available information about the WSGI server and + the underlying Python interpreter. +

    Python Interpreter

    + + + + + + +
    Python Version + %(python_version)s +
    Platform + %(platform)s [%(os)s] +
    API Version + %(api_version)s +
    Byteorder + %(byteorder)s +
    Werkzeug Version + %(werkzeug_version)s +
    +

    WSGI Environment

    + %(wsgi_env)s
    +

    Installed Eggs

    +

    + The following python packages were installed on the system as + Python eggs: +

      %(python_eggs)s
    +

    System Path

    +

    + The following paths are the current contents of the load path. The + following entries are looked up for Python packages. Note that not + all items in this path are folders. Gray and underlined items are + entries pointing to invalid resources or used by custom import hooks + such as the zip importer. +

    + Items with a bright background were expanded for display from a relative + path. If you encounter such paths in the output you might want to check + your setup as relative paths are usually problematic in multithreaded + environments. +

      %(sys_path)s
    +
    +""" + + +def iter_sys_path() -> t.Iterator[tuple[str, bool, bool]]: + if os.name == "posix": + + def strip(x: str) -> str: + prefix = os.path.expanduser("~") + if x.startswith(prefix): + x = f"~{x[len(prefix) :]}" + return x + + else: + + def strip(x: str) -> str: + return x + + cwd = os.path.abspath(os.getcwd()) + for item in sys.path: + path = os.path.join(cwd, item or os.path.curdir) + yield strip(os.path.normpath(path)), not os.path.isdir(path), path != item + + +@Request.application +def test_app(req: Request) -> Response: + """Simple test application that dumps the environment. You can use + it to check if Werkzeug is working properly: + + .. sourcecode:: pycon + + >>> from werkzeug.serving import run_simple + >>> from werkzeug.testapp import test_app + >>> run_simple('localhost', 3000, test_app) + * Running on http://localhost:3000/ + + The application displays important information from the WSGI environment, + the Python interpreter and the installed libraries. + """ + try: + import pkg_resources + except ImportError: + eggs: t.Iterable[t.Any] = () + else: + eggs = sorted( + pkg_resources.working_set, + key=lambda x: x.project_name.lower(), + ) + python_eggs = [] + for egg in eggs: + try: + version = egg.version + except (ValueError, AttributeError): + version = "unknown" + python_eggs.append( + f"
  • {escape(egg.project_name)} [{escape(version)}]" + ) + + wsgi_env = [] + sorted_environ = sorted(req.environ.items(), key=lambda x: repr(x[0]).lower()) + for key, value in sorted_environ: + value = "".join(wrap(str(escape(repr(value))))) + wsgi_env.append(f"{escape(key)}{value}") + + sys_path = [] + for item, virtual, expanded in iter_sys_path(): + css = [] + if virtual: + css.append("virtual") + if expanded: + css.append("exp") + class_str = f' class="{" ".join(css)}"' if css else "" + sys_path.append(f"{escape(item)}") + + context = { + "python_version": "
    ".join(escape(sys.version).splitlines()), + "platform": escape(sys.platform), + "os": escape(os.name), + "api_version": sys.api_version, + "byteorder": sys.byteorder, + "werkzeug_version": _get_werkzeug_version(), + "python_eggs": "\n".join(python_eggs), + "wsgi_env": "\n".join(wsgi_env), + "sys_path": "\n".join(sys_path), + } + return Response(TEMPLATE % context, mimetype="text/html") + + +_werkzeug_version = "" + + +def _get_werkzeug_version() -> str: + global _werkzeug_version + + if not _werkzeug_version: + _werkzeug_version = importlib.metadata.version("werkzeug") + + return _werkzeug_version + + +if __name__ == "__main__": + from .serving import run_simple + + run_simple("localhost", 5000, test_app, use_reloader=True) diff --git a/gestao_raul/Lib/site-packages/werkzeug/urls.py b/gestao_raul/Lib/site-packages/werkzeug/urls.py new file mode 100644 index 0000000..5bffe39 --- /dev/null +++ b/gestao_raul/Lib/site-packages/werkzeug/urls.py @@ -0,0 +1,203 @@ +from __future__ import annotations + +import codecs +import re +import typing as t +import urllib.parse +from urllib.parse import quote +from urllib.parse import unquote +from urllib.parse import urlencode +from urllib.parse import urlsplit +from urllib.parse import urlunsplit + +from .datastructures import iter_multi_items + + +def _codec_error_url_quote(e: UnicodeError) -> tuple[str, int]: + """Used in :func:`uri_to_iri` after unquoting to re-quote any + invalid bytes. + """ + # the docs state that UnicodeError does have these attributes, + # but mypy isn't picking them up + out = quote(e.object[e.start : e.end], safe="") # type: ignore + return out, e.end # type: ignore + + +codecs.register_error("werkzeug.url_quote", _codec_error_url_quote) + + +def _make_unquote_part(name: str, chars: str) -> t.Callable[[str], str]: + """Create a function that unquotes all percent encoded characters except those + given. This allows working with unquoted characters if possible while not changing + the meaning of a given part of a URL. + """ + choices = "|".join(f"{ord(c):02X}" for c in sorted(chars)) + pattern = re.compile(f"((?:%(?:{choices}))+)", re.I) + + def _unquote_partial(value: str) -> str: + parts = iter(pattern.split(value)) + out = [] + + for part in parts: + out.append(unquote(part, "utf-8", "werkzeug.url_quote")) + out.append(next(parts, "")) + + return "".join(out) + + _unquote_partial.__name__ = f"_unquote_{name}" + return _unquote_partial + + +# characters that should remain quoted in URL parts +# based on https://url.spec.whatwg.org/#percent-encoded-bytes +# always keep all controls, space, and % quoted +_always_unsafe = bytes((*range(0x21), 0x25, 0x7F)).decode() +_unquote_fragment = _make_unquote_part("fragment", _always_unsafe) +_unquote_query = _make_unquote_part("query", _always_unsafe + "&=+#") +_unquote_path = _make_unquote_part("path", _always_unsafe + "/?#") +_unquote_user = _make_unquote_part("user", _always_unsafe + ":@/?#") + + +def uri_to_iri(uri: str) -> str: + """Convert a URI to an IRI. All valid UTF-8 characters are unquoted, + leaving all reserved and invalid characters quoted. If the URL has + a domain, it is decoded from Punycode. + + >>> uri_to_iri("http://xn--n3h.net/p%C3%A5th?q=%C3%A8ry%DF") + 'http://\\u2603.net/p\\xe5th?q=\\xe8ry%DF' + + :param uri: The URI to convert. + + .. versionchanged:: 3.0 + Passing a tuple or bytes, and the ``charset`` and ``errors`` parameters, + are removed. + + .. versionchanged:: 2.3 + Which characters remain quoted is specific to each part of the URL. + + .. versionchanged:: 0.15 + All reserved and invalid characters remain quoted. Previously, + only some reserved characters were preserved, and invalid bytes + were replaced instead of left quoted. + + .. versionadded:: 0.6 + """ + parts = urlsplit(uri) + path = _unquote_path(parts.path) + query = _unquote_query(parts.query) + fragment = _unquote_fragment(parts.fragment) + + if parts.hostname: + netloc = _decode_idna(parts.hostname) + else: + netloc = "" + + if ":" in netloc: + netloc = f"[{netloc}]" + + if parts.port: + netloc = f"{netloc}:{parts.port}" + + if parts.username: + auth = _unquote_user(parts.username) + + if parts.password: + password = _unquote_user(parts.password) + auth = f"{auth}:{password}" + + netloc = f"{auth}@{netloc}" + + return urlunsplit((parts.scheme, netloc, path, query, fragment)) + + +def iri_to_uri(iri: str) -> str: + """Convert an IRI to a URI. All non-ASCII and unsafe characters are + quoted. If the URL has a domain, it is encoded to Punycode. + + >>> iri_to_uri('http://\\u2603.net/p\\xe5th?q=\\xe8ry%DF') + 'http://xn--n3h.net/p%C3%A5th?q=%C3%A8ry%DF' + + :param iri: The IRI to convert. + + .. versionchanged:: 3.0 + Passing a tuple or bytes, the ``charset`` and ``errors`` parameters, + and the ``safe_conversion`` parameter, are removed. + + .. versionchanged:: 2.3 + Which characters remain unquoted is specific to each part of the URL. + + .. versionchanged:: 0.15 + All reserved characters remain unquoted. Previously, only some reserved + characters were left unquoted. + + .. versionchanged:: 0.9.6 + The ``safe_conversion`` parameter was added. + + .. versionadded:: 0.6 + """ + parts = urlsplit(iri) + # safe = https://url.spec.whatwg.org/#url-path-segment-string + # as well as percent for things that are already quoted + path = quote(parts.path, safe="%!$&'()*+,/:;=@") + query = quote(parts.query, safe="%!$&'()*+,/:;=?@") + fragment = quote(parts.fragment, safe="%!#$&'()*+,/:;=?@") + + if parts.hostname: + netloc = parts.hostname.encode("idna").decode("ascii") + else: + netloc = "" + + if ":" in netloc: + netloc = f"[{netloc}]" + + if parts.port: + netloc = f"{netloc}:{parts.port}" + + if parts.username: + auth = quote(parts.username, safe="%!$&'()*+,;=") + + if parts.password: + password = quote(parts.password, safe="%!$&'()*+,;=") + auth = f"{auth}:{password}" + + netloc = f"{auth}@{netloc}" + + return urlunsplit((parts.scheme, netloc, path, query, fragment)) + + +# Python < 3.12 +# itms-services was worked around in previous iri_to_uri implementations, but +# we can tell Python directly that it needs to preserve the //. +if "itms-services" not in urllib.parse.uses_netloc: + urllib.parse.uses_netloc.append("itms-services") + + +def _decode_idna(domain: str) -> str: + try: + data = domain.encode("ascii") + except UnicodeEncodeError: + # If the domain is not ASCII, it's decoded already. + return domain + + try: + # Try decoding in one shot. + return data.decode("idna") + except UnicodeDecodeError: + pass + + # Decode each part separately, leaving invalid parts as punycode. + parts = [] + + for part in data.split(b"."): + try: + parts.append(part.decode("idna")) + except UnicodeDecodeError: + parts.append(part.decode("ascii")) + + return ".".join(parts) + + +def _urlencode(query: t.Mapping[str, str] | t.Iterable[tuple[str, str]]) -> str: + items = [x for x in iter_multi_items(query) if x[1] is not None] + # safe = https://url.spec.whatwg.org/#percent-encoded-bytes + return urlencode(items, safe="!$'()*,/:;?@") diff --git a/gestao_raul/Lib/site-packages/werkzeug/user_agent.py b/gestao_raul/Lib/site-packages/werkzeug/user_agent.py new file mode 100644 index 0000000..17e5d3f --- /dev/null +++ b/gestao_raul/Lib/site-packages/werkzeug/user_agent.py @@ -0,0 +1,47 @@ +from __future__ import annotations + + +class UserAgent: + """Represents a parsed user agent header value. + + The default implementation does no parsing, only the :attr:`string` + attribute is set. A subclass may parse the string to set the + common attributes or expose other information. Set + :attr:`werkzeug.wrappers.Request.user_agent_class` to use a + subclass. + + :param string: The header value to parse. + + .. versionadded:: 2.0 + This replaces the previous ``useragents`` module, but does not + provide a built-in parser. + """ + + platform: str | None = None + """The OS name, if it could be parsed from the string.""" + + browser: str | None = None + """The browser name, if it could be parsed from the string.""" + + version: str | None = None + """The browser version, if it could be parsed from the string.""" + + language: str | None = None + """The browser language, if it could be parsed from the string.""" + + def __init__(self, string: str) -> None: + self.string: str = string + """The original header value.""" + + def __repr__(self) -> str: + return f"<{type(self).__name__} {self.browser}/{self.version}>" + + def __str__(self) -> str: + return self.string + + def __bool__(self) -> bool: + return bool(self.browser) + + def to_header(self) -> str: + """Convert to a header value.""" + return self.string diff --git a/gestao_raul/Lib/site-packages/werkzeug/utils.py b/gestao_raul/Lib/site-packages/werkzeug/utils.py new file mode 100644 index 0000000..3d3bbf0 --- /dev/null +++ b/gestao_raul/Lib/site-packages/werkzeug/utils.py @@ -0,0 +1,691 @@ +from __future__ import annotations + +import io +import mimetypes +import os +import pkgutil +import re +import sys +import typing as t +import unicodedata +from datetime import datetime +from time import time +from urllib.parse import quote +from zlib import adler32 + +from markupsafe import escape + +from ._internal import _DictAccessorProperty +from ._internal import _missing +from ._internal import _TAccessorValue +from .datastructures import Headers +from .exceptions import NotFound +from .exceptions import RequestedRangeNotSatisfiable +from .security import safe_join +from .wsgi import wrap_file + +if t.TYPE_CHECKING: + from _typeshed.wsgi import WSGIEnvironment + + from .wrappers.request import Request + from .wrappers.response import Response + +_T = t.TypeVar("_T") + +_entity_re = re.compile(r"&([^;]+);") +_filename_ascii_strip_re = re.compile(r"[^A-Za-z0-9_.-]") +_windows_device_files = { + "CON", + "PRN", + "AUX", + "NUL", + *(f"COM{i}" for i in range(10)), + *(f"LPT{i}" for i in range(10)), +} + + +class cached_property(property, t.Generic[_T]): + """A :func:`property` that is only evaluated once. Subsequent access + returns the cached value. Setting the property sets the cached + value. Deleting the property clears the cached value, accessing it + again will evaluate it again. + + .. code-block:: python + + class Example: + @cached_property + def value(self): + # calculate something important here + return 42 + + e = Example() + e.value # evaluates + e.value # uses cache + e.value = 16 # sets cache + del e.value # clears cache + + If the class defines ``__slots__``, it must add ``_cache_{name}`` as + a slot. Alternatively, it can add ``__dict__``, but that's usually + not desirable. + + .. versionchanged:: 2.1 + Works with ``__slots__``. + + .. versionchanged:: 2.0 + ``del obj.name`` clears the cached value. + """ + + def __init__( + self, + fget: t.Callable[[t.Any], _T], + name: str | None = None, + doc: str | None = None, + ) -> None: + super().__init__(fget, doc=doc) + self.__name__ = name or fget.__name__ + self.slot_name = f"_cache_{self.__name__}" + self.__module__ = fget.__module__ + + def __set__(self, obj: object, value: _T) -> None: + if hasattr(obj, "__dict__"): + obj.__dict__[self.__name__] = value + else: + setattr(obj, self.slot_name, value) + + def __get__(self, obj: object, type: type = None) -> _T: # type: ignore + if obj is None: + return self # type: ignore + + obj_dict = getattr(obj, "__dict__", None) + + if obj_dict is not None: + value: _T = obj_dict.get(self.__name__, _missing) + else: + value = getattr(obj, self.slot_name, _missing) # type: ignore[arg-type] + + if value is _missing: + value = self.fget(obj) # type: ignore + + if obj_dict is not None: + obj.__dict__[self.__name__] = value + else: + setattr(obj, self.slot_name, value) + + return value + + def __delete__(self, obj: object) -> None: + if hasattr(obj, "__dict__"): + del obj.__dict__[self.__name__] + else: + setattr(obj, self.slot_name, _missing) + + +class environ_property(_DictAccessorProperty[_TAccessorValue]): + """Maps request attributes to environment variables. This works not only + for the Werkzeug request object, but also any other class with an + environ attribute: + + >>> class Test(object): + ... environ = {'key': 'value'} + ... test = environ_property('key') + >>> var = Test() + >>> var.test + 'value' + + If you pass it a second value it's used as default if the key does not + exist, the third one can be a converter that takes a value and converts + it. If it raises :exc:`ValueError` or :exc:`TypeError` the default value + is used. If no default value is provided `None` is used. + + Per default the property is read only. You have to explicitly enable it + by passing ``read_only=False`` to the constructor. + """ + + read_only = True + + def lookup(self, obj: Request) -> WSGIEnvironment: + return obj.environ + + +class header_property(_DictAccessorProperty[_TAccessorValue]): + """Like `environ_property` but for headers.""" + + def lookup(self, obj: Request | Response) -> Headers: # type: ignore[override] + return obj.headers + + +# https://cgit.freedesktop.org/xdg/shared-mime-info/tree/freedesktop.org.xml.in +# https://www.iana.org/assignments/media-types/media-types.xhtml +# Types listed in the XDG mime info that have a charset in the IANA registration. +_charset_mimetypes = { + "application/ecmascript", + "application/javascript", + "application/sql", + "application/xml", + "application/xml-dtd", + "application/xml-external-parsed-entity", +} + + +def get_content_type(mimetype: str, charset: str) -> str: + """Returns the full content type string with charset for a mimetype. + + If the mimetype represents text, the charset parameter will be + appended, otherwise the mimetype is returned unchanged. + + :param mimetype: The mimetype to be used as content type. + :param charset: The charset to be appended for text mimetypes. + :return: The content type. + + .. versionchanged:: 0.15 + Any type that ends with ``+xml`` gets a charset, not just those + that start with ``application/``. Known text types such as + ``application/javascript`` are also given charsets. + """ + if ( + mimetype.startswith("text/") + or mimetype in _charset_mimetypes + or mimetype.endswith("+xml") + ): + mimetype += f"; charset={charset}" + + return mimetype + + +def secure_filename(filename: str) -> str: + r"""Pass it a filename and it will return a secure version of it. This + filename can then safely be stored on a regular file system and passed + to :func:`os.path.join`. The filename returned is an ASCII only string + for maximum portability. + + On windows systems the function also makes sure that the file is not + named after one of the special device files. + + >>> secure_filename("My cool movie.mov") + 'My_cool_movie.mov' + >>> secure_filename("../../../etc/passwd") + 'etc_passwd' + >>> secure_filename('i contain cool \xfcml\xe4uts.txt') + 'i_contain_cool_umlauts.txt' + + The function might return an empty filename. It's your responsibility + to ensure that the filename is unique and that you abort or + generate a random filename if the function returned an empty one. + + .. versionadded:: 0.5 + + :param filename: the filename to secure + """ + filename = unicodedata.normalize("NFKD", filename) + filename = filename.encode("ascii", "ignore").decode("ascii") + + for sep in os.sep, os.path.altsep: + if sep: + filename = filename.replace(sep, " ") + filename = str(_filename_ascii_strip_re.sub("", "_".join(filename.split()))).strip( + "._" + ) + + # on nt a couple of special files are present in each folder. We + # have to ensure that the target file is not such a filename. In + # this case we prepend an underline + if ( + os.name == "nt" + and filename + and filename.split(".")[0].upper() in _windows_device_files + ): + filename = f"_{filename}" + + return filename + + +def redirect( + location: str, code: int = 302, Response: type[Response] | None = None +) -> Response: + """Returns a response object (a WSGI application) that, if called, + redirects the client to the target location. Supported codes are + 301, 302, 303, 305, 307, and 308. 300 is not supported because + it's not a real redirect and 304 because it's the answer for a + request with a request with defined If-Modified-Since headers. + + .. versionadded:: 0.6 + The location can now be a unicode string that is encoded using + the :func:`iri_to_uri` function. + + .. versionadded:: 0.10 + The class used for the Response object can now be passed in. + + :param location: the location the response should redirect to. + :param code: the redirect status code. defaults to 302. + :param class Response: a Response class to use when instantiating a + response. The default is :class:`werkzeug.wrappers.Response` if + unspecified. + """ + if Response is None: + from .wrappers import Response + + html_location = escape(location) + response = Response( # type: ignore[misc] + "\n" + "\n" + "Redirecting...\n" + "

    Redirecting...

    \n" + "

    You should be redirected automatically to the target URL: " + f'{html_location}. If not, click the link.\n', + code, + mimetype="text/html", + ) + response.headers["Location"] = location + return response + + +def append_slash_redirect(environ: WSGIEnvironment, code: int = 308) -> Response: + """Redirect to the current URL with a slash appended. + + If the current URL is ``/user/42``, the redirect URL will be + ``42/``. When joined to the current URL during response + processing or by the browser, this will produce ``/user/42/``. + + The behavior is undefined if the path ends with a slash already. If + called unconditionally on a URL, it may produce a redirect loop. + + :param environ: Use the path and query from this WSGI environment + to produce the redirect URL. + :param code: the status code for the redirect. + + .. versionchanged:: 2.1 + Produce a relative URL that only modifies the last segment. + Relevant when the current path has multiple segments. + + .. versionchanged:: 2.1 + The default status code is 308 instead of 301. This preserves + the request method and body. + """ + tail = environ["PATH_INFO"].rpartition("/")[2] + + if not tail: + new_path = "./" + else: + new_path = f"{tail}/" + + query_string = environ.get("QUERY_STRING") + + if query_string: + new_path = f"{new_path}?{query_string}" + + return redirect(new_path, code) + + +def send_file( + path_or_file: os.PathLike[str] | str | t.IO[bytes], + environ: WSGIEnvironment, + mimetype: str | None = None, + as_attachment: bool = False, + download_name: str | None = None, + conditional: bool = True, + etag: bool | str = True, + last_modified: datetime | int | float | None = None, + max_age: None | (int | t.Callable[[str | None], int | None]) = None, + use_x_sendfile: bool = False, + response_class: type[Response] | None = None, + _root_path: os.PathLike[str] | str | None = None, +) -> Response: + """Send the contents of a file to the client. + + The first argument can be a file path or a file-like object. Paths + are preferred in most cases because Werkzeug can manage the file and + get extra information from the path. Passing a file-like object + requires that the file is opened in binary mode, and is mostly + useful when building a file in memory with :class:`io.BytesIO`. + + Never pass file paths provided by a user. The path is assumed to be + trusted, so a user could craft a path to access a file you didn't + intend. Use :func:`send_from_directory` to safely serve user-provided paths. + + If the WSGI server sets a ``file_wrapper`` in ``environ``, it is + used, otherwise Werkzeug's built-in wrapper is used. Alternatively, + if the HTTP server supports ``X-Sendfile``, ``use_x_sendfile=True`` + will tell the server to send the given path, which is much more + efficient than reading it in Python. + + :param path_or_file: The path to the file to send, relative to the + current working directory if a relative path is given. + Alternatively, a file-like object opened in binary mode. Make + sure the file pointer is seeked to the start of the data. + :param environ: The WSGI environ for the current request. + :param mimetype: The MIME type to send for the file. If not + provided, it will try to detect it from the file name. + :param as_attachment: Indicate to a browser that it should offer to + save the file instead of displaying it. + :param download_name: The default name browsers will use when saving + the file. Defaults to the passed file name. + :param conditional: Enable conditional and range responses based on + request headers. Requires passing a file path and ``environ``. + :param etag: Calculate an ETag for the file, which requires passing + a file path. Can also be a string to use instead. + :param last_modified: The last modified time to send for the file, + in seconds. If not provided, it will try to detect it from the + file path. + :param max_age: How long the client should cache the file, in + seconds. If set, ``Cache-Control`` will be ``public``, otherwise + it will be ``no-cache`` to prefer conditional caching. + :param use_x_sendfile: Set the ``X-Sendfile`` header to let the + server to efficiently send the file. Requires support from the + HTTP server. Requires passing a file path. + :param response_class: Build the response using this class. Defaults + to :class:`~werkzeug.wrappers.Response`. + :param _root_path: Do not use. For internal use only. Use + :func:`send_from_directory` to safely send files under a path. + + .. versionchanged:: 2.0.2 + ``send_file`` only sets a detected ``Content-Encoding`` if + ``as_attachment`` is disabled. + + .. versionadded:: 2.0 + Adapted from Flask's implementation. + + .. versionchanged:: 2.0 + ``download_name`` replaces Flask's ``attachment_filename`` + parameter. If ``as_attachment=False``, it is passed with + ``Content-Disposition: inline`` instead. + + .. versionchanged:: 2.0 + ``max_age`` replaces Flask's ``cache_timeout`` parameter. + ``conditional`` is enabled and ``max_age`` is not set by + default. + + .. versionchanged:: 2.0 + ``etag`` replaces Flask's ``add_etags`` parameter. It can be a + string to use instead of generating one. + + .. versionchanged:: 2.0 + If an encoding is returned when guessing ``mimetype`` from + ``download_name``, set the ``Content-Encoding`` header. + """ + if response_class is None: + from .wrappers import Response + + response_class = Response + + path: str | None = None + file: t.IO[bytes] | None = None + size: int | None = None + mtime: float | None = None + headers = Headers() + + if isinstance(path_or_file, (os.PathLike, str)) or hasattr( + path_or_file, "__fspath__" + ): + path_or_file = t.cast("t.Union[os.PathLike[str], str]", path_or_file) + + # Flask will pass app.root_path, allowing its send_file wrapper + # to not have to deal with paths. + if _root_path is not None: + path = os.path.join(_root_path, path_or_file) + else: + path = os.path.abspath(path_or_file) + + stat = os.stat(path) + size = stat.st_size + mtime = stat.st_mtime + else: + file = path_or_file + + if download_name is None and path is not None: + download_name = os.path.basename(path) + + if mimetype is None: + if download_name is None: + raise TypeError( + "Unable to detect the MIME type because a file name is" + " not available. Either set 'download_name', pass a" + " path instead of a file, or set 'mimetype'." + ) + + mimetype, encoding = mimetypes.guess_type(download_name) + + if mimetype is None: + mimetype = "application/octet-stream" + + # Don't send encoding for attachments, it causes browsers to + # save decompress tar.gz files. + if encoding is not None and not as_attachment: + headers.set("Content-Encoding", encoding) + + if download_name is not None: + try: + download_name.encode("ascii") + except UnicodeEncodeError: + simple = unicodedata.normalize("NFKD", download_name) + simple = simple.encode("ascii", "ignore").decode("ascii") + # safe = RFC 5987 attr-char + quoted = quote(download_name, safe="!#$&+-.^_`|~") + names = {"filename": simple, "filename*": f"UTF-8''{quoted}"} + else: + names = {"filename": download_name} + + value = "attachment" if as_attachment else "inline" + headers.set("Content-Disposition", value, **names) + elif as_attachment: + raise TypeError( + "No name provided for attachment. Either set" + " 'download_name' or pass a path instead of a file." + ) + + if use_x_sendfile and path is not None: + headers["X-Sendfile"] = path + data = None + else: + if file is None: + file = open(path, "rb") # type: ignore + elif isinstance(file, io.BytesIO): + size = file.getbuffer().nbytes + elif isinstance(file, io.TextIOBase): + raise ValueError("Files must be opened in binary mode or use BytesIO.") + + data = wrap_file(environ, file) + + rv = response_class( + data, mimetype=mimetype, headers=headers, direct_passthrough=True + ) + + if size is not None: + rv.content_length = size + + if last_modified is not None: + rv.last_modified = last_modified # type: ignore + elif mtime is not None: + rv.last_modified = mtime # type: ignore + + rv.cache_control.no_cache = True + + # Flask will pass app.get_send_file_max_age, allowing its send_file + # wrapper to not have to deal with paths. + if callable(max_age): + max_age = max_age(path) + + if max_age is not None: + if max_age > 0: + rv.cache_control.no_cache = None + rv.cache_control.public = True + + rv.cache_control.max_age = max_age + rv.expires = int(time() + max_age) # type: ignore + + if isinstance(etag, str): + rv.set_etag(etag) + elif etag and path is not None: + check = adler32(path.encode()) & 0xFFFFFFFF + rv.set_etag(f"{mtime}-{size}-{check}") + + if conditional: + try: + rv = rv.make_conditional(environ, accept_ranges=True, complete_length=size) + except RequestedRangeNotSatisfiable: + if file is not None: + file.close() + + raise + + # Some x-sendfile implementations incorrectly ignore the 304 + # status code and send the file anyway. + if rv.status_code == 304: + rv.headers.pop("x-sendfile", None) + + return rv + + +def send_from_directory( + directory: os.PathLike[str] | str, + path: os.PathLike[str] | str, + environ: WSGIEnvironment, + **kwargs: t.Any, +) -> Response: + """Send a file from within a directory using :func:`send_file`. + + This is a secure way to serve files from a folder, such as static + files or uploads. Uses :func:`~werkzeug.security.safe_join` to + ensure the path coming from the client is not maliciously crafted to + point outside the specified directory. + + If the final path does not point to an existing regular file, + returns a 404 :exc:`~werkzeug.exceptions.NotFound` error. + + :param directory: The directory that ``path`` must be located under. This *must not* + be a value provided by the client, otherwise it becomes insecure. + :param path: The path to the file to send, relative to ``directory``. This is the + part of the path provided by the client, which is checked for security. + :param environ: The WSGI environ for the current request. + :param kwargs: Arguments to pass to :func:`send_file`. + + .. versionadded:: 2.0 + Adapted from Flask's implementation. + """ + path_str = safe_join(os.fspath(directory), os.fspath(path)) + + if path_str is None: + raise NotFound() + + # Flask will pass app.root_path, allowing its send_from_directory + # wrapper to not have to deal with paths. + if "_root_path" in kwargs: + path_str = os.path.join(kwargs["_root_path"], path_str) + + if not os.path.isfile(path_str): + raise NotFound() + + return send_file(path_str, environ, **kwargs) + + +def import_string(import_name: str, silent: bool = False) -> t.Any: + """Imports an object based on a string. This is useful if you want to + use import paths as endpoints or something similar. An import path can + be specified either in dotted notation (``xml.sax.saxutils.escape``) + or with a colon as object delimiter (``xml.sax.saxutils:escape``). + + If `silent` is True the return value will be `None` if the import fails. + + :param import_name: the dotted name for the object to import. + :param silent: if set to `True` import errors are ignored and + `None` is returned instead. + :return: imported object + """ + import_name = import_name.replace(":", ".") + try: + try: + __import__(import_name) + except ImportError: + if "." not in import_name: + raise + else: + return sys.modules[import_name] + + module_name, obj_name = import_name.rsplit(".", 1) + module = __import__(module_name, globals(), locals(), [obj_name]) + try: + return getattr(module, obj_name) + except AttributeError as e: + raise ImportError(e) from None + + except ImportError as e: + if not silent: + raise ImportStringError(import_name, e).with_traceback( + sys.exc_info()[2] + ) from None + + return None + + +def find_modules( + import_path: str, include_packages: bool = False, recursive: bool = False +) -> t.Iterator[str]: + """Finds all the modules below a package. This can be useful to + automatically import all views / controllers so that their metaclasses / + function decorators have a chance to register themselves on the + application. + + Packages are not returned unless `include_packages` is `True`. This can + also recursively list modules but in that case it will import all the + packages to get the correct load path of that module. + + :param import_path: the dotted name for the package to find child modules. + :param include_packages: set to `True` if packages should be returned, too. + :param recursive: set to `True` if recursion should happen. + :return: generator + """ + module = import_string(import_path) + path = getattr(module, "__path__", None) + if path is None: + raise ValueError(f"{import_path!r} is not a package") + basename = f"{module.__name__}." + for _importer, modname, ispkg in pkgutil.iter_modules(path): + modname = basename + modname + if ispkg: + if include_packages: + yield modname + if recursive: + yield from find_modules(modname, include_packages, True) + else: + yield modname + + +class ImportStringError(ImportError): + """Provides information about a failed :func:`import_string` attempt.""" + + #: String in dotted notation that failed to be imported. + import_name: str + #: Wrapped exception. + exception: BaseException + + def __init__(self, import_name: str, exception: BaseException) -> None: + self.import_name = import_name + self.exception = exception + msg = import_name + name = "" + tracked = [] + for part in import_name.replace(":", ".").split("."): + name = f"{name}.{part}" if name else part + imported = import_string(name, silent=True) + if imported: + tracked.append((name, getattr(imported, "__file__", None))) + else: + track = [f"- {n!r} found in {i!r}." for n, i in tracked] + track.append(f"- {name!r} not found.") + track_str = "\n".join(track) + msg = ( + f"import_string() failed for {import_name!r}. Possible reasons" + f" are:\n\n" + "- missing __init__.py in a package;\n" + "- package or module path not included in sys.path;\n" + "- duplicated package or module name taking precedence in" + " sys.path;\n" + "- missing module, class, function or variable;\n\n" + f"Debugged import:\n\n{track_str}\n\n" + f"Original exception:\n\n{type(exception).__name__}: {exception}" + ) + break + + super().__init__(msg) + + def __repr__(self) -> str: + return f"<{type(self).__name__}({self.import_name!r}, {self.exception!r})>" diff --git a/gestao_raul/Lib/site-packages/werkzeug/wrappers/__init__.py b/gestao_raul/Lib/site-packages/werkzeug/wrappers/__init__.py new file mode 100644 index 0000000..b36f228 --- /dev/null +++ b/gestao_raul/Lib/site-packages/werkzeug/wrappers/__init__.py @@ -0,0 +1,3 @@ +from .request import Request as Request +from .response import Response as Response +from .response import ResponseStream as ResponseStream diff --git a/gestao_raul/Lib/site-packages/werkzeug/wrappers/__pycache__/__init__.cpython-310.pyc b/gestao_raul/Lib/site-packages/werkzeug/wrappers/__pycache__/__init__.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..78d88df84b307810d7ea5c995c2462323ddf024f GIT binary patch literal 300 zcmYk1!Ait15QdYsYm4lPk6{n%-aLqixOx+XE?!C?#O+YZCQY3rEcyt(iTFmndh!+a zMo(?Z#abau|G+f3%xC4?YoAP7+4PyUL5&!@I literal 0 HcmV?d00001 diff --git a/gestao_raul/Lib/site-packages/werkzeug/wrappers/__pycache__/request.cpython-310.pyc b/gestao_raul/Lib/site-packages/werkzeug/wrappers/__pycache__/request.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..3b7c4f7405eb9da5011e6ff375a0a018bb8a2fa1 GIT binary patch literal 21780 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 literal 0 HcmV?d00001 diff --git a/gestao_raul/Lib/site-packages/werkzeug/wrappers/request.py b/gestao_raul/Lib/site-packages/werkzeug/wrappers/request.py new file mode 100644 index 0000000..719a3bc --- /dev/null +++ b/gestao_raul/Lib/site-packages/werkzeug/wrappers/request.py @@ -0,0 +1,650 @@ +from __future__ import annotations + +import collections.abc as cabc +import functools +import json +import typing as t +from io import BytesIO + +from .._internal import _wsgi_decoding_dance +from ..datastructures import CombinedMultiDict +from ..datastructures import EnvironHeaders +from ..datastructures import FileStorage +from ..datastructures import ImmutableMultiDict +from ..datastructures import iter_multi_items +from ..datastructures import MultiDict +from ..exceptions import BadRequest +from ..exceptions import UnsupportedMediaType +from ..formparser import default_stream_factory +from ..formparser import FormDataParser +from ..sansio.request import Request as _SansIORequest +from ..utils import cached_property +from ..utils import environ_property +from ..wsgi import _get_server +from ..wsgi import get_input_stream + +if t.TYPE_CHECKING: + from _typeshed.wsgi import WSGIApplication + from _typeshed.wsgi import WSGIEnvironment + + +class Request(_SansIORequest): + """Represents an incoming WSGI HTTP request, with headers and body + taken from the WSGI environment. Has properties and methods for + using the functionality defined by various HTTP specs. The data in + requests object is read-only. + + Text data is assumed to use UTF-8 encoding, which should be true for + the vast majority of modern clients. Using an encoding set by the + client is unsafe in Python due to extra encodings it provides, such + as ``zip``. To change the assumed encoding, subclass and replace + :attr:`charset`. + + :param environ: The WSGI environ is generated by the WSGI server and + contains information about the server configuration and client + request. + :param populate_request: Add this request object to the WSGI environ + as ``environ['werkzeug.request']``. Can be useful when + debugging. + :param shallow: Makes reading from :attr:`stream` (and any method + that would read from it) raise a :exc:`RuntimeError`. Useful to + prevent consuming the form data in middleware, which would make + it unavailable to the final application. + + .. versionchanged:: 3.0 + The ``charset``, ``url_charset``, and ``encoding_errors`` parameters + were removed. + + .. versionchanged:: 2.1 + Old ``BaseRequest`` and mixin classes were removed. + + .. versionchanged:: 2.1 + Remove the ``disable_data_descriptor`` attribute. + + .. versionchanged:: 2.0 + Combine ``BaseRequest`` and mixins into a single ``Request`` + class. + + .. versionchanged:: 0.5 + Read-only mode is enforced with immutable classes for all data. + """ + + #: the maximum content length. This is forwarded to the form data + #: parsing function (:func:`parse_form_data`). When set and the + #: :attr:`form` or :attr:`files` attribute is accessed and the + #: parsing fails because more than the specified value is transmitted + #: a :exc:`~werkzeug.exceptions.RequestEntityTooLarge` exception is raised. + #: + #: .. versionadded:: 0.5 + max_content_length: int | None = None + + #: the maximum form field size. This is forwarded to the form data + #: parsing function (:func:`parse_form_data`). When set and the + #: :attr:`form` or :attr:`files` attribute is accessed and the + #: data in memory for post data is longer than the specified value a + #: :exc:`~werkzeug.exceptions.RequestEntityTooLarge` exception is raised. + #: + #: .. versionchanged:: 3.1 + #: Defaults to 500kB instead of unlimited. + #: + #: .. versionadded:: 0.5 + max_form_memory_size: int | None = 500_000 + + #: The maximum number of multipart parts to parse, passed to + #: :attr:`form_data_parser_class`. Parsing form data with more than this + #: many parts will raise :exc:`~.RequestEntityTooLarge`. + #: + #: .. versionadded:: 2.2.3 + max_form_parts = 1000 + + #: The form data parser that should be used. Can be replaced to customize + #: the form date parsing. + form_data_parser_class: type[FormDataParser] = FormDataParser + + #: The WSGI environment containing HTTP headers and information from + #: the WSGI server. + environ: WSGIEnvironment + + #: Set when creating the request object. If ``True``, reading from + #: the request body will cause a ``RuntimeException``. Useful to + #: prevent modifying the stream from middleware. + shallow: bool + + def __init__( + self, + environ: WSGIEnvironment, + populate_request: bool = True, + shallow: bool = False, + ) -> None: + super().__init__( + method=environ.get("REQUEST_METHOD", "GET"), + scheme=environ.get("wsgi.url_scheme", "http"), + server=_get_server(environ), + root_path=_wsgi_decoding_dance(environ.get("SCRIPT_NAME") or ""), + path=_wsgi_decoding_dance(environ.get("PATH_INFO") or ""), + query_string=environ.get("QUERY_STRING", "").encode("latin1"), + headers=EnvironHeaders(environ), + remote_addr=environ.get("REMOTE_ADDR"), + ) + self.environ = environ + self.shallow = shallow + + if populate_request and not shallow: + self.environ["werkzeug.request"] = self + + @classmethod + def from_values(cls, *args: t.Any, **kwargs: t.Any) -> Request: + """Create a new request object based on the values provided. If + environ is given missing values are filled from there. This method is + useful for small scripts when you need to simulate a request from an URL. + Do not use this method for unittesting, there is a full featured client + object (:class:`Client`) that allows to create multipart requests, + support for cookies etc. + + This accepts the same options as the + :class:`~werkzeug.test.EnvironBuilder`. + + .. versionchanged:: 0.5 + This method now accepts the same arguments as + :class:`~werkzeug.test.EnvironBuilder`. Because of this the + `environ` parameter is now called `environ_overrides`. + + :return: request object + """ + from ..test import EnvironBuilder + + builder = EnvironBuilder(*args, **kwargs) + try: + return builder.get_request(cls) + finally: + builder.close() + + @classmethod + def application(cls, f: t.Callable[[Request], WSGIApplication]) -> WSGIApplication: + """Decorate a function as responder that accepts the request as + the last argument. This works like the :func:`responder` + decorator but the function is passed the request object as the + last argument and the request object will be closed + automatically:: + + @Request.application + def my_wsgi_app(request): + return Response('Hello World!') + + As of Werkzeug 0.14 HTTP exceptions are automatically caught and + converted to responses instead of failing. + + :param f: the WSGI callable to decorate + :return: a new WSGI callable + """ + #: return a callable that wraps the -2nd argument with the request + #: and calls the function with all the arguments up to that one and + #: the request. The return value is then called with the latest + #: two arguments. This makes it possible to use this decorator for + #: both standalone WSGI functions as well as bound methods and + #: partially applied functions. + from ..exceptions import HTTPException + + @functools.wraps(f) + def application(*args: t.Any) -> cabc.Iterable[bytes]: + request = cls(args[-2]) + with request: + try: + resp = f(*args[:-2] + (request,)) + except HTTPException as e: + resp = t.cast("WSGIApplication", e.get_response(args[-2])) + return resp(*args[-2:]) + + return t.cast("WSGIApplication", application) + + def _get_file_stream( + self, + total_content_length: int | None, + content_type: str | None, + filename: str | None = None, + content_length: int | None = None, + ) -> t.IO[bytes]: + """Called to get a stream for the file upload. + + This must provide a file-like class with `read()`, `readline()` + and `seek()` methods that is both writeable and readable. + + The default implementation returns a temporary file if the total + content length is higher than 500KB. Because many browsers do not + provide a content length for the files only the total content + length matters. + + :param total_content_length: the total content length of all the + data in the request combined. This value + is guaranteed to be there. + :param content_type: the mimetype of the uploaded file. + :param filename: the filename of the uploaded file. May be `None`. + :param content_length: the length of this file. This value is usually + not provided because webbrowsers do not provide + this value. + """ + return default_stream_factory( + total_content_length=total_content_length, + filename=filename, + content_type=content_type, + content_length=content_length, + ) + + @property + def want_form_data_parsed(self) -> bool: + """``True`` if the request method carries content. By default + this is true if a ``Content-Type`` is sent. + + .. versionadded:: 0.8 + """ + return bool(self.environ.get("CONTENT_TYPE")) + + def make_form_data_parser(self) -> FormDataParser: + """Creates the form data parser. Instantiates the + :attr:`form_data_parser_class` with some parameters. + + .. versionadded:: 0.8 + """ + return self.form_data_parser_class( + stream_factory=self._get_file_stream, + max_form_memory_size=self.max_form_memory_size, + max_content_length=self.max_content_length, + max_form_parts=self.max_form_parts, + cls=self.parameter_storage_class, + ) + + def _load_form_data(self) -> None: + """Method used internally to retrieve submitted data. After calling + this sets `form` and `files` on the request object to multi dicts + filled with the incoming form data. As a matter of fact the input + stream will be empty afterwards. You can also call this method to + force the parsing of the form data. + + .. versionadded:: 0.8 + """ + # abort early if we have already consumed the stream + if "form" in self.__dict__: + return + + if self.want_form_data_parsed: + parser = self.make_form_data_parser() + data = parser.parse( + self._get_stream_for_parsing(), + self.mimetype, + self.content_length, + self.mimetype_params, + ) + else: + data = ( + self.stream, + self.parameter_storage_class(), + self.parameter_storage_class(), + ) + + # inject the values into the instance dict so that we bypass + # our cached_property non-data descriptor. + d = self.__dict__ + d["stream"], d["form"], d["files"] = data + + def _get_stream_for_parsing(self) -> t.IO[bytes]: + """This is the same as accessing :attr:`stream` with the difference + that if it finds cached data from calling :meth:`get_data` first it + will create a new stream out of the cached data. + + .. versionadded:: 0.9.3 + """ + cached_data = getattr(self, "_cached_data", None) + if cached_data is not None: + return BytesIO(cached_data) + return self.stream + + def close(self) -> None: + """Closes associated resources of this request object. This + closes all file handles explicitly. You can also use the request + object in a with statement which will automatically close it. + + .. versionadded:: 0.9 + """ + files = self.__dict__.get("files") + for _key, value in iter_multi_items(files or ()): + value.close() + + def __enter__(self) -> Request: + return self + + def __exit__(self, exc_type, exc_value, tb) -> None: # type: ignore + self.close() + + @cached_property + def stream(self) -> t.IO[bytes]: + """The WSGI input stream, with safety checks. This stream can only be consumed + once. + + Use :meth:`get_data` to get the full data as bytes or text. The :attr:`data` + attribute will contain the full bytes only if they do not represent form data. + The :attr:`form` attribute will contain the parsed form data in that case. + + Unlike :attr:`input_stream`, this stream guards against infinite streams or + reading past :attr:`content_length` or :attr:`max_content_length`. + + If ``max_content_length`` is set, it can be enforced on streams if + ``wsgi.input_terminated`` is set. Otherwise, an empty stream is returned. + + If the limit is reached before the underlying stream is exhausted (such as a + file that is too large, or an infinite stream), the remaining contents of the + stream cannot be read safely. Depending on how the server handles this, clients + may show a "connection reset" failure instead of seeing the 413 response. + + .. versionchanged:: 2.3 + Check ``max_content_length`` preemptively and while reading. + + .. versionchanged:: 0.9 + The stream is always set (but may be consumed) even if form parsing was + accessed first. + """ + if self.shallow: + raise RuntimeError( + "This request was created with 'shallow=True', reading" + " from the input stream is disabled." + ) + + return get_input_stream( + self.environ, max_content_length=self.max_content_length + ) + + input_stream = environ_property[t.IO[bytes]]( + "wsgi.input", + doc="""The raw WSGI input stream, without any safety checks. + + This is dangerous to use. It does not guard against infinite streams or reading + past :attr:`content_length` or :attr:`max_content_length`. + + Use :attr:`stream` instead. + """, + ) + + @cached_property + def data(self) -> bytes: + """The raw data read from :attr:`stream`. Will be empty if the request + represents form data. + + To get the raw data even if it represents form data, use :meth:`get_data`. + """ + return self.get_data(parse_form_data=True) + + @t.overload + def get_data( + self, + cache: bool = True, + as_text: t.Literal[False] = False, + parse_form_data: bool = False, + ) -> bytes: ... + + @t.overload + def get_data( + self, + cache: bool = True, + as_text: t.Literal[True] = ..., + parse_form_data: bool = False, + ) -> str: ... + + def get_data( + self, cache: bool = True, as_text: bool = False, parse_form_data: bool = False + ) -> bytes | str: + """This reads the buffered incoming data from the client into one + bytes object. By default this is cached but that behavior can be + changed by setting `cache` to `False`. + + Usually it's a bad idea to call this method without checking the + content length first as a client could send dozens of megabytes or more + to cause memory problems on the server. + + Note that if the form data was already parsed this method will not + return anything as form data parsing does not cache the data like + this method does. To implicitly invoke form data parsing function + set `parse_form_data` to `True`. When this is done the return value + of this method will be an empty string if the form parser handles + the data. This generally is not necessary as if the whole data is + cached (which is the default) the form parser will used the cached + data to parse the form data. Please be generally aware of checking + the content length first in any case before calling this method + to avoid exhausting server memory. + + If `as_text` is set to `True` the return value will be a decoded + string. + + .. versionadded:: 0.9 + """ + rv = getattr(self, "_cached_data", None) + if rv is None: + if parse_form_data: + self._load_form_data() + rv = self.stream.read() + if cache: + self._cached_data = rv + if as_text: + rv = rv.decode(errors="replace") + return rv + + @cached_property + def form(self) -> ImmutableMultiDict[str, str]: + """The form parameters. By default an + :class:`~werkzeug.datastructures.ImmutableMultiDict` + is returned from this function. This can be changed by setting + :attr:`parameter_storage_class` to a different type. This might + be necessary if the order of the form data is important. + + Please keep in mind that file uploads will not end up here, but instead + in the :attr:`files` attribute. + + .. versionchanged:: 0.9 + + Previous to Werkzeug 0.9 this would only contain form data for POST + and PUT requests. + """ + self._load_form_data() + return self.form + + @cached_property + def values(self) -> CombinedMultiDict[str, str]: + """A :class:`werkzeug.datastructures.CombinedMultiDict` that + combines :attr:`args` and :attr:`form`. + + For GET requests, only ``args`` are present, not ``form``. + + .. versionchanged:: 2.0 + For GET requests, only ``args`` are present, not ``form``. + """ + sources = [self.args] + + if self.method != "GET": + # GET requests can have a body, and some caching proxies + # might not treat that differently than a normal GET + # request, allowing form data to "invisibly" affect the + # cache without indication in the query string / URL. + sources.append(self.form) + + args = [] + + for d in sources: + if not isinstance(d, MultiDict): + d = MultiDict(d) + + args.append(d) + + return CombinedMultiDict(args) + + @cached_property + def files(self) -> ImmutableMultiDict[str, FileStorage]: + """:class:`~werkzeug.datastructures.MultiDict` object containing + all uploaded files. Each key in :attr:`files` is the name from the + ````. Each value in :attr:`files` is a + Werkzeug :class:`~werkzeug.datastructures.FileStorage` object. + + It basically behaves like a standard file object you know from Python, + with the difference that it also has a + :meth:`~werkzeug.datastructures.FileStorage.save` function that can + store the file on the filesystem. + + Note that :attr:`files` will only contain data if the request method was + POST, PUT or PATCH and the ``

    `` that posted to the request had + ``enctype="multipart/form-data"``. It will be empty otherwise. + + See the :class:`~werkzeug.datastructures.MultiDict` / + :class:`~werkzeug.datastructures.FileStorage` documentation for + more details about the used data structure. + """ + self._load_form_data() + return self.files + + @property + def script_root(self) -> str: + """Alias for :attr:`self.root_path`. ``environ["SCRIPT_ROOT"]`` + without a trailing slash. + """ + return self.root_path + + @cached_property + def url_root(self) -> str: + """Alias for :attr:`root_url`. The URL with scheme, host, and + root path. For example, ``https://example.com/app/``. + """ + return self.root_url + + remote_user = environ_property[str]( + "REMOTE_USER", + doc="""If the server supports user authentication, and the + script is protected, this attribute contains the username the + user has authenticated as.""", + ) + is_multithread = environ_property[bool]( + "wsgi.multithread", + doc="""boolean that is `True` if the application is served by a + multithreaded WSGI server.""", + ) + is_multiprocess = environ_property[bool]( + "wsgi.multiprocess", + doc="""boolean that is `True` if the application is served by a + WSGI server that spawns multiple processes.""", + ) + is_run_once = environ_property[bool]( + "wsgi.run_once", + doc="""boolean that is `True` if the application will be + executed only once in a process lifetime. This is the case for + CGI for example, but it's not guaranteed that the execution only + happens one time.""", + ) + + # JSON + + #: A module or other object that has ``dumps`` and ``loads`` + #: functions that match the API of the built-in :mod:`json` module. + json_module = json + + @property + def json(self) -> t.Any | None: + """The parsed JSON data if :attr:`mimetype` indicates JSON + (:mimetype:`application/json`, see :attr:`is_json`). + + Calls :meth:`get_json` with default arguments. + + If the request content type is not ``application/json``, this + will raise a 415 Unsupported Media Type error. + + .. versionchanged:: 2.3 + Raise a 415 error instead of 400. + + .. versionchanged:: 2.1 + Raise a 400 error if the content type is incorrect. + """ + return self.get_json() + + # Cached values for ``(silent=False, silent=True)``. Initialized + # with sentinel values. + _cached_json: tuple[t.Any, t.Any] = (Ellipsis, Ellipsis) + + @t.overload + def get_json( + self, force: bool = ..., silent: t.Literal[False] = ..., cache: bool = ... + ) -> t.Any: ... + + @t.overload + def get_json( + self, force: bool = ..., silent: bool = ..., cache: bool = ... + ) -> t.Any | None: ... + + def get_json( + self, force: bool = False, silent: bool = False, cache: bool = True + ) -> t.Any | None: + """Parse :attr:`data` as JSON. + + If the mimetype does not indicate JSON + (:mimetype:`application/json`, see :attr:`is_json`), or parsing + fails, :meth:`on_json_loading_failed` is called and + its return value is used as the return value. By default this + raises a 415 Unsupported Media Type resp. + + :param force: Ignore the mimetype and always try to parse JSON. + :param silent: Silence mimetype and parsing errors, and + return ``None`` instead. + :param cache: Store the parsed JSON to return for subsequent + calls. + + .. versionchanged:: 2.3 + Raise a 415 error instead of 400. + + .. versionchanged:: 2.1 + Raise a 400 error if the content type is incorrect. + """ + if cache and self._cached_json[silent] is not Ellipsis: + return self._cached_json[silent] + + if not (force or self.is_json): + if not silent: + return self.on_json_loading_failed(None) + else: + return None + + data = self.get_data(cache=cache) + + try: + rv = self.json_module.loads(data) + except ValueError as e: + if silent: + rv = None + + if cache: + normal_rv, _ = self._cached_json + self._cached_json = (normal_rv, rv) + else: + rv = self.on_json_loading_failed(e) + + if cache: + _, silent_rv = self._cached_json + self._cached_json = (rv, silent_rv) + else: + if cache: + self._cached_json = (rv, rv) + + return rv + + def on_json_loading_failed(self, e: ValueError | None) -> t.Any: + """Called if :meth:`get_json` fails and isn't silenced. + + If this method returns a value, it is used as the return value + for :meth:`get_json`. The default implementation raises + :exc:`~werkzeug.exceptions.BadRequest`. + + :param e: If parsing failed, this is the exception. It will be + ``None`` if the content type wasn't ``application/json``. + + .. versionchanged:: 2.3 + Raise a 415 error instead of 400. + """ + if e is not None: + raise BadRequest(f"Failed to decode JSON object: {e}") + + raise UnsupportedMediaType( + "Did not attempt to load JSON data because the request" + " Content-Type was not 'application/json'." + ) diff --git a/gestao_raul/Lib/site-packages/werkzeug/wrappers/response.py b/gestao_raul/Lib/site-packages/werkzeug/wrappers/response.py new file mode 100644 index 0000000..7f01287 --- /dev/null +++ b/gestao_raul/Lib/site-packages/werkzeug/wrappers/response.py @@ -0,0 +1,831 @@ +from __future__ import annotations + +import json +import typing as t +from http import HTTPStatus +from urllib.parse import urljoin + +from .._internal import _get_environ +from ..datastructures import Headers +from ..http import generate_etag +from ..http import http_date +from ..http import is_resource_modified +from ..http import parse_etags +from ..http import parse_range_header +from ..http import remove_entity_headers +from ..sansio.response import Response as _SansIOResponse +from ..urls import iri_to_uri +from ..utils import cached_property +from ..wsgi import _RangeWrapper +from ..wsgi import ClosingIterator +from ..wsgi import get_current_url + +if t.TYPE_CHECKING: + from _typeshed.wsgi import StartResponse + from _typeshed.wsgi import WSGIApplication + from _typeshed.wsgi import WSGIEnvironment + + from .request import Request + + +def _iter_encoded(iterable: t.Iterable[str | bytes]) -> t.Iterator[bytes]: + for item in iterable: + if isinstance(item, str): + yield item.encode() + else: + yield item + + +class Response(_SansIOResponse): + """Represents an outgoing WSGI HTTP response with body, status, and + headers. Has properties and methods for using the functionality + defined by various HTTP specs. + + The response body is flexible to support different use cases. The + simple form is passing bytes, or a string which will be encoded as + UTF-8. Passing an iterable of bytes or strings makes this a + streaming response. A generator is particularly useful for building + a CSV file in memory or using SSE (Server Sent Events). A file-like + object is also iterable, although the + :func:`~werkzeug.utils.send_file` helper should be used in that + case. + + The response object is itself a WSGI application callable. When + called (:meth:`__call__`) with ``environ`` and ``start_response``, + it will pass its status and headers to ``start_response`` then + return its body as an iterable. + + .. code-block:: python + + from werkzeug.wrappers.response import Response + + def index(): + return Response("Hello, World!") + + def application(environ, start_response): + path = environ.get("PATH_INFO") or "/" + + if path == "/": + response = index() + else: + response = Response("Not Found", status=404) + + return response(environ, start_response) + + :param response: The data for the body of the response. A string or + bytes, or tuple or list of strings or bytes, for a fixed-length + response, or any other iterable of strings or bytes for a + streaming response. Defaults to an empty body. + :param status: The status code for the response. Either an int, in + which case the default status message is added, or a string in + the form ``{code} {message}``, like ``404 Not Found``. Defaults + to 200. + :param headers: A :class:`~werkzeug.datastructures.Headers` object, + or a list of ``(key, value)`` tuples that will be converted to a + ``Headers`` object. + :param mimetype: The mime type (content type without charset or + other parameters) of the response. If the value starts with + ``text/`` (or matches some other special cases), the charset + will be added to create the ``content_type``. + :param content_type: The full content type of the response. + Overrides building the value from ``mimetype``. + :param direct_passthrough: Pass the response body directly through + as the WSGI iterable. This can be used when the body is a binary + file or other iterator of bytes, to skip some unnecessary + checks. Use :func:`~werkzeug.utils.send_file` instead of setting + this manually. + + .. versionchanged:: 2.1 + Old ``BaseResponse`` and mixin classes were removed. + + .. versionchanged:: 2.0 + Combine ``BaseResponse`` and mixins into a single ``Response`` + class. + + .. versionchanged:: 0.5 + The ``direct_passthrough`` parameter was added. + """ + + #: if set to `False` accessing properties on the response object will + #: not try to consume the response iterator and convert it into a list. + #: + #: .. versionadded:: 0.6.2 + #: + #: That attribute was previously called `implicit_seqence_conversion`. + #: (Notice the typo). If you did use this feature, you have to adapt + #: your code to the name change. + implicit_sequence_conversion = True + + #: If a redirect ``Location`` header is a relative URL, make it an + #: absolute URL, including scheme and domain. + #: + #: .. versionchanged:: 2.1 + #: This is disabled by default, so responses will send relative + #: redirects. + #: + #: .. versionadded:: 0.8 + autocorrect_location_header = False + + #: Should this response object automatically set the content-length + #: header if possible? This is true by default. + #: + #: .. versionadded:: 0.8 + automatically_set_content_length = True + + #: The response body to send as the WSGI iterable. A list of strings + #: or bytes represents a fixed-length response, any other iterable + #: is a streaming response. Strings are encoded to bytes as UTF-8. + #: + #: Do not set to a plain string or bytes, that will cause sending + #: the response to be very inefficient as it will iterate one byte + #: at a time. + response: t.Iterable[str] | t.Iterable[bytes] + + def __init__( + self, + response: t.Iterable[bytes] | bytes | t.Iterable[str] | str | None = None, + status: int | str | HTTPStatus | None = None, + headers: t.Mapping[str, str | t.Iterable[str]] + | t.Iterable[tuple[str, str]] + | None = None, + mimetype: str | None = None, + content_type: str | None = None, + direct_passthrough: bool = False, + ) -> None: + super().__init__( + status=status, + headers=headers, + mimetype=mimetype, + content_type=content_type, + ) + + #: Pass the response body directly through as the WSGI iterable. + #: This can be used when the body is a binary file or other + #: iterator of bytes, to skip some unnecessary checks. Use + #: :func:`~werkzeug.utils.send_file` instead of setting this + #: manually. + self.direct_passthrough = direct_passthrough + self._on_close: list[t.Callable[[], t.Any]] = [] + + # we set the response after the headers so that if a class changes + # the charset attribute, the data is set in the correct charset. + if response is None: + self.response = [] + elif isinstance(response, (str, bytes, bytearray)): + self.set_data(response) + else: + self.response = response + + def call_on_close(self, func: t.Callable[[], t.Any]) -> t.Callable[[], t.Any]: + """Adds a function to the internal list of functions that should + be called as part of closing down the response. Since 0.7 this + function also returns the function that was passed so that this + can be used as a decorator. + + .. versionadded:: 0.6 + """ + self._on_close.append(func) + return func + + def __repr__(self) -> str: + if self.is_sequence: + body_info = f"{sum(map(len, self.iter_encoded()))} bytes" + else: + body_info = "streamed" if self.is_streamed else "likely-streamed" + return f"<{type(self).__name__} {body_info} [{self.status}]>" + + @classmethod + def force_type( + cls, response: Response, environ: WSGIEnvironment | None = None + ) -> Response: + """Enforce that the WSGI response is a response object of the current + type. Werkzeug will use the :class:`Response` internally in many + situations like the exceptions. If you call :meth:`get_response` on an + exception you will get back a regular :class:`Response` object, even + if you are using a custom subclass. + + This method can enforce a given response type, and it will also + convert arbitrary WSGI callables into response objects if an environ + is provided:: + + # convert a Werkzeug response object into an instance of the + # MyResponseClass subclass. + response = MyResponseClass.force_type(response) + + # convert any WSGI application into a response object + response = MyResponseClass.force_type(response, environ) + + This is especially useful if you want to post-process responses in + the main dispatcher and use functionality provided by your subclass. + + Keep in mind that this will modify response objects in place if + possible! + + :param response: a response object or wsgi application. + :param environ: a WSGI environment object. + :return: a response object. + """ + if not isinstance(response, Response): + if environ is None: + raise TypeError( + "cannot convert WSGI application into response" + " objects without an environ" + ) + + from ..test import run_wsgi_app + + response = Response(*run_wsgi_app(response, environ)) + + response.__class__ = cls + return response + + @classmethod + def from_app( + cls, app: WSGIApplication, environ: WSGIEnvironment, buffered: bool = False + ) -> Response: + """Create a new response object from an application output. This + works best if you pass it an application that returns a generator all + the time. Sometimes applications may use the `write()` callable + returned by the `start_response` function. This tries to resolve such + edge cases automatically. But if you don't get the expected output + you should set `buffered` to `True` which enforces buffering. + + :param app: the WSGI application to execute. + :param environ: the WSGI environment to execute against. + :param buffered: set to `True` to enforce buffering. + :return: a response object. + """ + from ..test import run_wsgi_app + + return cls(*run_wsgi_app(app, environ, buffered)) + + @t.overload + def get_data(self, as_text: t.Literal[False] = False) -> bytes: ... + + @t.overload + def get_data(self, as_text: t.Literal[True]) -> str: ... + + def get_data(self, as_text: bool = False) -> bytes | str: + """The string representation of the response body. Whenever you call + this property the response iterable is encoded and flattened. This + can lead to unwanted behavior if you stream big data. + + This behavior can be disabled by setting + :attr:`implicit_sequence_conversion` to `False`. + + If `as_text` is set to `True` the return value will be a decoded + string. + + .. versionadded:: 0.9 + """ + self._ensure_sequence() + rv = b"".join(self.iter_encoded()) + + if as_text: + return rv.decode() + + return rv + + def set_data(self, value: bytes | str) -> None: + """Sets a new string as response. The value must be a string or + bytes. If a string is set it's encoded to the charset of the + response (utf-8 by default). + + .. versionadded:: 0.9 + """ + if isinstance(value, str): + value = value.encode() + self.response = [value] + if self.automatically_set_content_length: + self.headers["Content-Length"] = str(len(value)) + + data = property( + get_data, + set_data, + doc="A descriptor that calls :meth:`get_data` and :meth:`set_data`.", + ) + + def calculate_content_length(self) -> int | None: + """Returns the content length if available or `None` otherwise.""" + try: + self._ensure_sequence() + except RuntimeError: + return None + return sum(len(x) for x in self.iter_encoded()) + + def _ensure_sequence(self, mutable: bool = False) -> None: + """This method can be called by methods that need a sequence. If + `mutable` is true, it will also ensure that the response sequence + is a standard Python list. + + .. versionadded:: 0.6 + """ + if self.is_sequence: + # if we need a mutable object, we ensure it's a list. + if mutable and not isinstance(self.response, list): + self.response = list(self.response) # type: ignore + return + if self.direct_passthrough: + raise RuntimeError( + "Attempted implicit sequence conversion but the" + " response object is in direct passthrough mode." + ) + if not self.implicit_sequence_conversion: + raise RuntimeError( + "The response object required the iterable to be a" + " sequence, but the implicit conversion was disabled." + " Call make_sequence() yourself." + ) + self.make_sequence() + + def make_sequence(self) -> None: + """Converts the response iterator in a list. By default this happens + automatically if required. If `implicit_sequence_conversion` is + disabled, this method is not automatically called and some properties + might raise exceptions. This also encodes all the items. + + .. versionadded:: 0.6 + """ + if not self.is_sequence: + # if we consume an iterable we have to ensure that the close + # method of the iterable is called if available when we tear + # down the response + close = getattr(self.response, "close", None) + self.response = list(self.iter_encoded()) + if close is not None: + self.call_on_close(close) + + def iter_encoded(self) -> t.Iterator[bytes]: + """Iter the response encoded with the encoding of the response. + If the response object is invoked as WSGI application the return + value of this method is used as application iterator unless + :attr:`direct_passthrough` was activated. + """ + # Encode in a separate function so that self.response is fetched + # early. This allows us to wrap the response with the return + # value from get_app_iter or iter_encoded. + return _iter_encoded(self.response) + + @property + def is_streamed(self) -> bool: + """If the response is streamed (the response is not an iterable with + a length information) this property is `True`. In this case streamed + means that there is no information about the number of iterations. + This is usually `True` if a generator is passed to the response object. + + This is useful for checking before applying some sort of post + filtering that should not take place for streamed responses. + """ + try: + len(self.response) # type: ignore + except (TypeError, AttributeError): + return True + return False + + @property + def is_sequence(self) -> bool: + """If the iterator is buffered, this property will be `True`. A + response object will consider an iterator to be buffered if the + response attribute is a list or tuple. + + .. versionadded:: 0.6 + """ + return isinstance(self.response, (tuple, list)) + + def close(self) -> None: + """Close the wrapped response if possible. You can also use the object + in a with statement which will automatically close it. + + .. versionadded:: 0.9 + Can now be used in a with statement. + """ + if hasattr(self.response, "close"): + self.response.close() + for func in self._on_close: + func() + + def __enter__(self) -> Response: + return self + + def __exit__(self, exc_type, exc_value, tb): # type: ignore + self.close() + + def freeze(self) -> None: + """Make the response object ready to be pickled. Does the + following: + + * Buffer the response into a list, ignoring + :attr:`implicity_sequence_conversion` and + :attr:`direct_passthrough`. + * Set the ``Content-Length`` header. + * Generate an ``ETag`` header if one is not already set. + + .. versionchanged:: 2.1 + Removed the ``no_etag`` parameter. + + .. versionchanged:: 2.0 + An ``ETag`` header is always added. + + .. versionchanged:: 0.6 + The ``Content-Length`` header is set. + """ + # Always freeze the encoded response body, ignore + # implicit_sequence_conversion and direct_passthrough. + self.response = list(self.iter_encoded()) + self.headers["Content-Length"] = str(sum(map(len, self.response))) + self.add_etag() + + def get_wsgi_headers(self, environ: WSGIEnvironment) -> Headers: + """This is automatically called right before the response is started + and returns headers modified for the given environment. It returns a + copy of the headers from the response with some modifications applied + if necessary. + + For example the location header (if present) is joined with the root + URL of the environment. Also the content length is automatically set + to zero here for certain status codes. + + .. versionchanged:: 0.6 + Previously that function was called `fix_headers` and modified + the response object in place. Also since 0.6, IRIs in location + and content-location headers are handled properly. + + Also starting with 0.6, Werkzeug will attempt to set the content + length if it is able to figure it out on its own. This is the + case if all the strings in the response iterable are already + encoded and the iterable is buffered. + + :param environ: the WSGI environment of the request. + :return: returns a new :class:`~werkzeug.datastructures.Headers` + object. + """ + headers = Headers(self.headers) + location: str | None = None + content_location: str | None = None + content_length: str | int | None = None + status = self.status_code + + # iterate over the headers to find all values in one go. Because + # get_wsgi_headers is used each response that gives us a tiny + # speedup. + for key, value in headers: + ikey = key.lower() + if ikey == "location": + location = value + elif ikey == "content-location": + content_location = value + elif ikey == "content-length": + content_length = value + + if location is not None: + location = iri_to_uri(location) + + if self.autocorrect_location_header: + # Make the location header an absolute URL. + current_url = get_current_url(environ, strip_querystring=True) + current_url = iri_to_uri(current_url) + location = urljoin(current_url, location) + + headers["Location"] = location + + # make sure the content location is a URL + if content_location is not None: + headers["Content-Location"] = iri_to_uri(content_location) + + if 100 <= status < 200 or status == 204: + # Per section 3.3.2 of RFC 7230, "a server MUST NOT send a + # Content-Length header field in any response with a status + # code of 1xx (Informational) or 204 (No Content)." + headers.remove("Content-Length") + elif status == 304: + remove_entity_headers(headers) + + # if we can determine the content length automatically, we + # should try to do that. But only if this does not involve + # flattening the iterator or encoding of strings in the + # response. We however should not do that if we have a 304 + # response. + if ( + self.automatically_set_content_length + and self.is_sequence + and content_length is None + and status not in (204, 304) + and not (100 <= status < 200) + ): + content_length = sum(len(x) for x in self.iter_encoded()) + headers["Content-Length"] = str(content_length) + + return headers + + def get_app_iter(self, environ: WSGIEnvironment) -> t.Iterable[bytes]: + """Returns the application iterator for the given environ. Depending + on the request method and the current status code the return value + might be an empty response rather than the one from the response. + + If the request method is `HEAD` or the status code is in a range + where the HTTP specification requires an empty response, an empty + iterable is returned. + + .. versionadded:: 0.6 + + :param environ: the WSGI environment of the request. + :return: a response iterable. + """ + status = self.status_code + if ( + environ["REQUEST_METHOD"] == "HEAD" + or 100 <= status < 200 + or status in (204, 304) + ): + iterable: t.Iterable[bytes] = () + elif self.direct_passthrough: + return self.response # type: ignore + else: + iterable = self.iter_encoded() + return ClosingIterator(iterable, self.close) + + def get_wsgi_response( + self, environ: WSGIEnvironment + ) -> tuple[t.Iterable[bytes], str, list[tuple[str, str]]]: + """Returns the final WSGI response as tuple. The first item in + the tuple is the application iterator, the second the status and + the third the list of headers. The response returned is created + specially for the given environment. For example if the request + method in the WSGI environment is ``'HEAD'`` the response will + be empty and only the headers and status code will be present. + + .. versionadded:: 0.6 + + :param environ: the WSGI environment of the request. + :return: an ``(app_iter, status, headers)`` tuple. + """ + headers = self.get_wsgi_headers(environ) + app_iter = self.get_app_iter(environ) + return app_iter, self.status, headers.to_wsgi_list() + + def __call__( + self, environ: WSGIEnvironment, start_response: StartResponse + ) -> t.Iterable[bytes]: + """Process this response as WSGI application. + + :param environ: the WSGI environment. + :param start_response: the response callable provided by the WSGI + server. + :return: an application iterator + """ + app_iter, status, headers = self.get_wsgi_response(environ) + start_response(status, headers) + return app_iter + + # JSON + + #: A module or other object that has ``dumps`` and ``loads`` + #: functions that match the API of the built-in :mod:`json` module. + json_module = json + + @property + def json(self) -> t.Any | None: + """The parsed JSON data if :attr:`mimetype` indicates JSON + (:mimetype:`application/json`, see :attr:`is_json`). + + Calls :meth:`get_json` with default arguments. + """ + return self.get_json() + + @t.overload + def get_json(self, force: bool = ..., silent: t.Literal[False] = ...) -> t.Any: ... + + @t.overload + def get_json(self, force: bool = ..., silent: bool = ...) -> t.Any | None: ... + + def get_json(self, force: bool = False, silent: bool = False) -> t.Any | None: + """Parse :attr:`data` as JSON. Useful during testing. + + If the mimetype does not indicate JSON + (:mimetype:`application/json`, see :attr:`is_json`), this + returns ``None``. + + Unlike :meth:`Request.get_json`, the result is not cached. + + :param force: Ignore the mimetype and always try to parse JSON. + :param silent: Silence parsing errors and return ``None`` + instead. + """ + if not (force or self.is_json): + return None + + data = self.get_data() + + try: + return self.json_module.loads(data) + except ValueError: + if not silent: + raise + + return None + + # Stream + + @cached_property + def stream(self) -> ResponseStream: + """The response iterable as write-only stream.""" + return ResponseStream(self) + + def _wrap_range_response(self, start: int, length: int) -> None: + """Wrap existing Response in case of Range Request context.""" + if self.status_code == 206: + self.response = _RangeWrapper(self.response, start, length) # type: ignore + + def _is_range_request_processable(self, environ: WSGIEnvironment) -> bool: + """Return ``True`` if `Range` header is present and if underlying + resource is considered unchanged when compared with `If-Range` header. + """ + return ( + "HTTP_IF_RANGE" not in environ + or not is_resource_modified( + environ, + self.headers.get("etag"), + None, + self.headers.get("last-modified"), + ignore_if_range=False, + ) + ) and "HTTP_RANGE" in environ + + def _process_range_request( + self, + environ: WSGIEnvironment, + complete_length: int | None, + accept_ranges: bool | str, + ) -> bool: + """Handle Range Request related headers (RFC7233). If `Accept-Ranges` + header is valid, and Range Request is processable, we set the headers + as described by the RFC, and wrap the underlying response in a + RangeWrapper. + + Returns ``True`` if Range Request can be fulfilled, ``False`` otherwise. + + :raises: :class:`~werkzeug.exceptions.RequestedRangeNotSatisfiable` + if `Range` header could not be parsed or satisfied. + + .. versionchanged:: 2.0 + Returns ``False`` if the length is 0. + """ + from ..exceptions import RequestedRangeNotSatisfiable + + if ( + not accept_ranges + or complete_length is None + or complete_length == 0 + or not self._is_range_request_processable(environ) + ): + return False + + if accept_ranges is True: + accept_ranges = "bytes" + + parsed_range = parse_range_header(environ.get("HTTP_RANGE")) + + if parsed_range is None: + raise RequestedRangeNotSatisfiable(complete_length) + + range_tuple = parsed_range.range_for_length(complete_length) + content_range_header = parsed_range.to_content_range_header(complete_length) + + if range_tuple is None or content_range_header is None: + raise RequestedRangeNotSatisfiable(complete_length) + + content_length = range_tuple[1] - range_tuple[0] + self.headers["Content-Length"] = str(content_length) + self.headers["Accept-Ranges"] = accept_ranges + self.content_range = content_range_header # type: ignore + self.status_code = 206 + self._wrap_range_response(range_tuple[0], content_length) + return True + + def make_conditional( + self, + request_or_environ: WSGIEnvironment | Request, + accept_ranges: bool | str = False, + complete_length: int | None = None, + ) -> Response: + """Make the response conditional to the request. This method works + best if an etag was defined for the response already. The `add_etag` + method can be used to do that. If called without etag just the date + header is set. + + This does nothing if the request method in the request or environ is + anything but GET or HEAD. + + For optimal performance when handling range requests, it's recommended + that your response data object implements `seekable`, `seek` and `tell` + methods as described by :py:class:`io.IOBase`. Objects returned by + :meth:`~werkzeug.wsgi.wrap_file` automatically implement those methods. + + It does not remove the body of the response because that's something + the :meth:`__call__` function does for us automatically. + + Returns self so that you can do ``return resp.make_conditional(req)`` + but modifies the object in-place. + + :param request_or_environ: a request object or WSGI environment to be + used to make the response conditional + against. + :param accept_ranges: This parameter dictates the value of + `Accept-Ranges` header. If ``False`` (default), + the header is not set. If ``True``, it will be set + to ``"bytes"``. If it's a string, it will use this + value. + :param complete_length: Will be used only in valid Range Requests. + It will set `Content-Range` complete length + value and compute `Content-Length` real value. + This parameter is mandatory for successful + Range Requests completion. + :raises: :class:`~werkzeug.exceptions.RequestedRangeNotSatisfiable` + if `Range` header could not be parsed or satisfied. + + .. versionchanged:: 2.0 + Range processing is skipped if length is 0 instead of + raising a 416 Range Not Satisfiable error. + """ + environ = _get_environ(request_or_environ) + if environ["REQUEST_METHOD"] in ("GET", "HEAD"): + # if the date is not in the headers, add it now. We however + # will not override an already existing header. Unfortunately + # this header will be overridden by many WSGI servers including + # wsgiref. + if "date" not in self.headers: + self.headers["Date"] = http_date() + is206 = self._process_range_request(environ, complete_length, accept_ranges) + if not is206 and not is_resource_modified( + environ, + self.headers.get("etag"), + None, + self.headers.get("last-modified"), + ): + if parse_etags(environ.get("HTTP_IF_MATCH")): + self.status_code = 412 + else: + self.status_code = 304 + if ( + self.automatically_set_content_length + and "content-length" not in self.headers + ): + length = self.calculate_content_length() + if length is not None: + self.headers["Content-Length"] = str(length) + return self + + def add_etag(self, overwrite: bool = False, weak: bool = False) -> None: + """Add an etag for the current response if there is none yet. + + .. versionchanged:: 2.0 + SHA-1 is used to generate the value. MD5 may not be + available in some environments. + """ + if overwrite or "etag" not in self.headers: + self.set_etag(generate_etag(self.get_data()), weak) + + +class ResponseStream: + """A file descriptor like object used by :meth:`Response.stream` to + represent the body of the stream. It directly pushes into the + response iterable of the response object. + """ + + mode = "wb+" + + def __init__(self, response: Response): + self.response = response + self.closed = False + + def write(self, value: bytes) -> int: + if self.closed: + raise ValueError("I/O operation on closed file") + self.response._ensure_sequence(mutable=True) + self.response.response.append(value) # type: ignore + self.response.headers.pop("Content-Length", None) + return len(value) + + def writelines(self, seq: t.Iterable[bytes]) -> None: + for item in seq: + self.write(item) + + def close(self) -> None: + self.closed = True + + def flush(self) -> None: + if self.closed: + raise ValueError("I/O operation on closed file") + + def isatty(self) -> bool: + if self.closed: + raise ValueError("I/O operation on closed file") + return False + + def tell(self) -> int: + self.response._ensure_sequence() + return sum(map(len, self.response.response)) + + @property + def encoding(self) -> str: + return "utf-8" diff --git a/gestao_raul/Lib/site-packages/werkzeug/wsgi.py b/gestao_raul/Lib/site-packages/werkzeug/wsgi.py new file mode 100644 index 0000000..01d40af --- /dev/null +++ b/gestao_raul/Lib/site-packages/werkzeug/wsgi.py @@ -0,0 +1,595 @@ +from __future__ import annotations + +import io +import typing as t +from functools import partial +from functools import update_wrapper + +from .exceptions import ClientDisconnected +from .exceptions import RequestEntityTooLarge +from .sansio import utils as _sansio_utils +from .sansio.utils import host_is_trusted # noqa: F401 # Imported as part of API + +if t.TYPE_CHECKING: + from _typeshed.wsgi import WSGIApplication + from _typeshed.wsgi import WSGIEnvironment + + +def responder(f: t.Callable[..., WSGIApplication]) -> WSGIApplication: + """Marks a function as responder. Decorate a function with it and it + will automatically call the return value as WSGI application. + + Example:: + + @responder + def application(environ, start_response): + return Response('Hello World!') + """ + return update_wrapper(lambda *a: f(*a)(*a[-2:]), f) + + +def get_current_url( + environ: WSGIEnvironment, + root_only: bool = False, + strip_querystring: bool = False, + host_only: bool = False, + trusted_hosts: t.Iterable[str] | None = None, +) -> str: + """Recreate the URL for a request from the parts in a WSGI + environment. + + The URL is an IRI, not a URI, so it may contain Unicode characters. + Use :func:`~werkzeug.urls.iri_to_uri` to convert it to ASCII. + + :param environ: The WSGI environment to get the URL parts from. + :param root_only: Only build the root path, don't include the + remaining path or query string. + :param strip_querystring: Don't include the query string. + :param host_only: Only build the scheme and host. + :param trusted_hosts: A list of trusted host names to validate the + host against. + """ + parts = { + "scheme": environ["wsgi.url_scheme"], + "host": get_host(environ, trusted_hosts), + } + + if not host_only: + parts["root_path"] = environ.get("SCRIPT_NAME", "") + + if not root_only: + parts["path"] = environ.get("PATH_INFO", "") + + if not strip_querystring: + parts["query_string"] = environ.get("QUERY_STRING", "").encode("latin1") + + return _sansio_utils.get_current_url(**parts) + + +def _get_server( + environ: WSGIEnvironment, +) -> tuple[str, int | None] | None: + name = environ.get("SERVER_NAME") + + if name is None: + return None + + try: + port: int | None = int(environ.get("SERVER_PORT", None)) + except (TypeError, ValueError): + # unix socket + port = None + + return name, port + + +def get_host( + environ: WSGIEnvironment, trusted_hosts: t.Iterable[str] | None = None +) -> str: + """Return the host for the given WSGI environment. + + The ``Host`` header is preferred, then ``SERVER_NAME`` if it's not + set. The returned host will only contain the port if it is different + than the standard port for the protocol. + + Optionally, verify that the host is trusted using + :func:`host_is_trusted` and raise a + :exc:`~werkzeug.exceptions.SecurityError` if it is not. + + :param environ: A WSGI environment dict. + :param trusted_hosts: A list of trusted host names. + + :return: Host, with port if necessary. + :raise ~werkzeug.exceptions.SecurityError: If the host is not + trusted. + """ + return _sansio_utils.get_host( + environ["wsgi.url_scheme"], + environ.get("HTTP_HOST"), + _get_server(environ), + trusted_hosts, + ) + + +def get_content_length(environ: WSGIEnvironment) -> int | None: + """Return the ``Content-Length`` header value as an int. If the header is not given + or the ``Transfer-Encoding`` header is ``chunked``, ``None`` is returned to indicate + a streaming request. If the value is not an integer, or negative, 0 is returned. + + :param environ: The WSGI environ to get the content length from. + + .. versionadded:: 0.9 + """ + return _sansio_utils.get_content_length( + http_content_length=environ.get("CONTENT_LENGTH"), + http_transfer_encoding=environ.get("HTTP_TRANSFER_ENCODING"), + ) + + +def get_input_stream( + environ: WSGIEnvironment, + safe_fallback: bool = True, + max_content_length: int | None = None, +) -> t.IO[bytes]: + """Return the WSGI input stream, wrapped so that it may be read safely without going + past the ``Content-Length`` header value or ``max_content_length``. + + If ``Content-Length`` exceeds ``max_content_length``, a + :exc:`RequestEntityTooLarge`` ``413 Content Too Large`` error is raised. + + If the WSGI server sets ``environ["wsgi.input_terminated"]``, it indicates that the + server handles terminating the stream, so it is safe to read directly. For example, + a server that knows how to handle chunked requests safely would set this. + + If ``max_content_length`` is set, it can be enforced on streams if + ``wsgi.input_terminated`` is set. Otherwise, an empty stream is returned unless the + user explicitly disables this safe fallback. + + If the limit is reached before the underlying stream is exhausted (such as a file + that is too large, or an infinite stream), the remaining contents of the stream + cannot be read safely. Depending on how the server handles this, clients may show a + "connection reset" failure instead of seeing the 413 response. + + :param environ: The WSGI environ containing the stream. + :param safe_fallback: Return an empty stream when ``Content-Length`` is not set. + Disabling this allows infinite streams, which can be a denial-of-service risk. + :param max_content_length: The maximum length that content-length or streaming + requests may not exceed. + + .. versionchanged:: 2.3.2 + ``max_content_length`` is only applied to streaming requests if the server sets + ``wsgi.input_terminated``. + + .. versionchanged:: 2.3 + Check ``max_content_length`` and raise an error if it is exceeded. + + .. versionadded:: 0.9 + """ + stream = t.cast(t.IO[bytes], environ["wsgi.input"]) + content_length = get_content_length(environ) + + if content_length is not None and max_content_length is not None: + if content_length > max_content_length: + raise RequestEntityTooLarge() + + # A WSGI server can set this to indicate that it terminates the input stream. In + # that case the stream is safe without wrapping, or can enforce a max length. + if "wsgi.input_terminated" in environ: + if max_content_length is not None: + # If this is moved above, it can cause the stream to hang if a read attempt + # is made when the client sends no data. For example, the development server + # does not handle buffering except for chunked encoding. + return t.cast( + t.IO[bytes], LimitedStream(stream, max_content_length, is_max=True) + ) + + return stream + + # No limit given, return an empty stream unless the user explicitly allows the + # potentially infinite stream. An infinite stream is dangerous if it's not expected, + # as it can tie up a worker indefinitely. + if content_length is None: + return io.BytesIO() if safe_fallback else stream + + return t.cast(t.IO[bytes], LimitedStream(stream, content_length)) + + +def get_path_info(environ: WSGIEnvironment) -> str: + """Return ``PATH_INFO`` from the WSGI environment. + + :param environ: WSGI environment to get the path from. + + .. versionchanged:: 3.0 + The ``charset`` and ``errors`` parameters were removed. + + .. versionadded:: 0.9 + """ + path: bytes = environ.get("PATH_INFO", "").encode("latin1") + return path.decode(errors="replace") + + +class ClosingIterator: + """The WSGI specification requires that all middlewares and gateways + respect the `close` callback of the iterable returned by the application. + Because it is useful to add another close action to a returned iterable + and adding a custom iterable is a boring task this class can be used for + that:: + + return ClosingIterator(app(environ, start_response), [cleanup_session, + cleanup_locals]) + + If there is just one close function it can be passed instead of the list. + + A closing iterator is not needed if the application uses response objects + and finishes the processing if the response is started:: + + try: + return response(environ, start_response) + finally: + cleanup_session() + cleanup_locals() + """ + + def __init__( + self, + iterable: t.Iterable[bytes], + callbacks: None + | (t.Callable[[], None] | t.Iterable[t.Callable[[], None]]) = None, + ) -> None: + iterator = iter(iterable) + self._next = t.cast(t.Callable[[], bytes], partial(next, iterator)) + if callbacks is None: + callbacks = [] + elif callable(callbacks): + callbacks = [callbacks] + else: + callbacks = list(callbacks) + iterable_close = getattr(iterable, "close", None) + if iterable_close: + callbacks.insert(0, iterable_close) + self._callbacks = callbacks + + def __iter__(self) -> ClosingIterator: + return self + + def __next__(self) -> bytes: + return self._next() + + def close(self) -> None: + for callback in self._callbacks: + callback() + + +def wrap_file( + environ: WSGIEnvironment, file: t.IO[bytes], buffer_size: int = 8192 +) -> t.Iterable[bytes]: + """Wraps a file. This uses the WSGI server's file wrapper if available + or otherwise the generic :class:`FileWrapper`. + + .. versionadded:: 0.5 + + If the file wrapper from the WSGI server is used it's important to not + iterate over it from inside the application but to pass it through + unchanged. If you want to pass out a file wrapper inside a response + object you have to set :attr:`Response.direct_passthrough` to `True`. + + More information about file wrappers are available in :pep:`333`. + + :param file: a :class:`file`-like object with a :meth:`~file.read` method. + :param buffer_size: number of bytes for one iteration. + """ + return environ.get("wsgi.file_wrapper", FileWrapper)( # type: ignore + file, buffer_size + ) + + +class FileWrapper: + """This class can be used to convert a :class:`file`-like object into + an iterable. It yields `buffer_size` blocks until the file is fully + read. + + You should not use this class directly but rather use the + :func:`wrap_file` function that uses the WSGI server's file wrapper + support if it's available. + + .. versionadded:: 0.5 + + If you're using this object together with a :class:`Response` you have + to use the `direct_passthrough` mode. + + :param file: a :class:`file`-like object with a :meth:`~file.read` method. + :param buffer_size: number of bytes for one iteration. + """ + + def __init__(self, file: t.IO[bytes], buffer_size: int = 8192) -> None: + self.file = file + self.buffer_size = buffer_size + + def close(self) -> None: + if hasattr(self.file, "close"): + self.file.close() + + def seekable(self) -> bool: + if hasattr(self.file, "seekable"): + return self.file.seekable() + if hasattr(self.file, "seek"): + return True + return False + + def seek(self, *args: t.Any) -> None: + if hasattr(self.file, "seek"): + self.file.seek(*args) + + def tell(self) -> int | None: + if hasattr(self.file, "tell"): + return self.file.tell() + return None + + def __iter__(self) -> FileWrapper: + return self + + def __next__(self) -> bytes: + data = self.file.read(self.buffer_size) + if data: + return data + raise StopIteration() + + +class _RangeWrapper: + # private for now, but should we make it public in the future ? + + """This class can be used to convert an iterable object into + an iterable that will only yield a piece of the underlying content. + It yields blocks until the underlying stream range is fully read. + The yielded blocks will have a size that can't exceed the original + iterator defined block size, but that can be smaller. + + If you're using this object together with a :class:`Response` you have + to use the `direct_passthrough` mode. + + :param iterable: an iterable object with a :meth:`__next__` method. + :param start_byte: byte from which read will start. + :param byte_range: how many bytes to read. + """ + + def __init__( + self, + iterable: t.Iterable[bytes] | t.IO[bytes], + start_byte: int = 0, + byte_range: int | None = None, + ): + self.iterable = iter(iterable) + self.byte_range = byte_range + self.start_byte = start_byte + self.end_byte = None + + if byte_range is not None: + self.end_byte = start_byte + byte_range + + self.read_length = 0 + self.seekable = hasattr(iterable, "seekable") and iterable.seekable() + self.end_reached = False + + def __iter__(self) -> _RangeWrapper: + return self + + def _next_chunk(self) -> bytes: + try: + chunk = next(self.iterable) + self.read_length += len(chunk) + return chunk + except StopIteration: + self.end_reached = True + raise + + def _first_iteration(self) -> tuple[bytes | None, int]: + chunk = None + if self.seekable: + self.iterable.seek(self.start_byte) # type: ignore + self.read_length = self.iterable.tell() # type: ignore + contextual_read_length = self.read_length + else: + while self.read_length <= self.start_byte: + chunk = self._next_chunk() + if chunk is not None: + chunk = chunk[self.start_byte - self.read_length :] + contextual_read_length = self.start_byte + return chunk, contextual_read_length + + def _next(self) -> bytes: + if self.end_reached: + raise StopIteration() + chunk = None + contextual_read_length = self.read_length + if self.read_length == 0: + chunk, contextual_read_length = self._first_iteration() + if chunk is None: + chunk = self._next_chunk() + if self.end_byte is not None and self.read_length >= self.end_byte: + self.end_reached = True + return chunk[: self.end_byte - contextual_read_length] + return chunk + + def __next__(self) -> bytes: + chunk = self._next() + if chunk: + return chunk + self.end_reached = True + raise StopIteration() + + def close(self) -> None: + if hasattr(self.iterable, "close"): + self.iterable.close() + + +class LimitedStream(io.RawIOBase): + """Wrap a stream so that it doesn't read more than a given limit. This is used to + limit ``wsgi.input`` to the ``Content-Length`` header value or + :attr:`.Request.max_content_length`. + + When attempting to read after the limit has been reached, :meth:`on_exhausted` is + called. When the limit is a maximum, this raises :exc:`.RequestEntityTooLarge`. + + If reading from the stream returns zero bytes or raises an error, + :meth:`on_disconnect` is called, which raises :exc:`.ClientDisconnected`. When the + limit is a maximum and zero bytes were read, no error is raised, since it may be the + end of the stream. + + If the limit is reached before the underlying stream is exhausted (such as a file + that is too large, or an infinite stream), the remaining contents of the stream + cannot be read safely. Depending on how the server handles this, clients may show a + "connection reset" failure instead of seeing the 413 response. + + :param stream: The stream to read from. Must be a readable binary IO object. + :param limit: The limit in bytes to not read past. Should be either the + ``Content-Length`` header value or ``request.max_content_length``. + :param is_max: Whether the given ``limit`` is ``request.max_content_length`` instead + of the ``Content-Length`` header value. This changes how exhausted and + disconnect events are handled. + + .. versionchanged:: 2.3 + Handle ``max_content_length`` differently than ``Content-Length``. + + .. versionchanged:: 2.3 + Implements ``io.RawIOBase`` rather than ``io.IOBase``. + """ + + def __init__(self, stream: t.IO[bytes], limit: int, is_max: bool = False) -> None: + self._stream = stream + self._pos = 0 + self.limit = limit + self._limit_is_max = is_max + + @property + def is_exhausted(self) -> bool: + """Whether the current stream position has reached the limit.""" + return self._pos >= self.limit + + def on_exhausted(self) -> None: + """Called when attempting to read after the limit has been reached. + + The default behavior is to do nothing, unless the limit is a maximum, in which + case it raises :exc:`.RequestEntityTooLarge`. + + .. versionchanged:: 2.3 + Raises ``RequestEntityTooLarge`` if the limit is a maximum. + + .. versionchanged:: 2.3 + Any return value is ignored. + """ + if self._limit_is_max: + raise RequestEntityTooLarge() + + def on_disconnect(self, error: Exception | None = None) -> None: + """Called when an attempted read receives zero bytes before the limit was + reached. This indicates that the client disconnected before sending the full + request body. + + The default behavior is to raise :exc:`.ClientDisconnected`, unless the limit is + a maximum and no error was raised. + + .. versionchanged:: 2.3 + Added the ``error`` parameter. Do nothing if the limit is a maximum and no + error was raised. + + .. versionchanged:: 2.3 + Any return value is ignored. + """ + if not self._limit_is_max or error is not None: + raise ClientDisconnected() + + # If the limit is a maximum, then we may have read zero bytes because the + # streaming body is complete. There's no way to distinguish that from the + # client disconnecting early. + + def exhaust(self) -> bytes: + """Exhaust the stream by reading until the limit is reached or the client + disconnects, returning the remaining data. + + .. versionchanged:: 2.3 + Return the remaining data. + + .. versionchanged:: 2.2.3 + Handle case where wrapped stream returns fewer bytes than requested. + """ + if not self.is_exhausted: + return self.readall() + + return b"" + + def readinto(self, b: bytearray) -> int | None: # type: ignore[override] + size = len(b) + remaining = self.limit - self._pos + + if remaining <= 0: + self.on_exhausted() + return 0 + + if hasattr(self._stream, "readinto"): + # Use stream.readinto if it's available. + if size <= remaining: + # The size fits in the remaining limit, use the buffer directly. + try: + out_size: int | None = self._stream.readinto(b) + except (OSError, ValueError) as e: + self.on_disconnect(error=e) + return 0 + else: + # Use a temp buffer with the remaining limit as the size. + temp_b = bytearray(remaining) + + try: + out_size = self._stream.readinto(temp_b) + except (OSError, ValueError) as e: + self.on_disconnect(error=e) + return 0 + + if out_size: + b[:out_size] = temp_b + else: + # WSGI requires that stream.read is available. + try: + data = self._stream.read(min(size, remaining)) + except (OSError, ValueError) as e: + self.on_disconnect(error=e) + return 0 + + out_size = len(data) + b[:out_size] = data + + if not out_size: + # Read zero bytes from the stream. + self.on_disconnect() + return 0 + + self._pos += out_size + return out_size + + def readall(self) -> bytes: + if self.is_exhausted: + self.on_exhausted() + return b"" + + out = bytearray() + + # The parent implementation uses "while True", which results in an extra read. + while not self.is_exhausted: + data = self.read(1024 * 64) + + # Stream may return empty before a max limit is reached. + if not data: + break + + out.extend(data) + + return bytes(out) + + def tell(self) -> int: + """Return the current stream position. + + .. versionadded:: 0.9 + """ + return self._pos + + def readable(self) -> bool: + return True diff --git a/gestao_raul/Scripts/pip.exe b/gestao_raul/Scripts/pip.exe index 562c34d258d2dfb6258b299253bb8040839b0d9b..06fa97badacbc7b2528a21319b9f80a06b5be6df 100644 GIT binary patch delta 42 ucmeA=&(?CDtziqJ^fK01xXubyy|`c}GnTTgLbi!t!3uXb%8OwGSKs delta 48 zcmZoU&(?LGtziqJ^fK=B)Z&uF{P?28(wylE%NTW7eA+r9rw1%!{0L#WE@!j{0MNY> AiU0rr diff --git a/gestao_raul/Scripts/pip3.10.exe b/gestao_raul/Scripts/pip3.10.exe index 562c34d258d2dfb6258b299253bb8040839b0d9b..06fa97badacbc7b2528a21319b9f80a06b5be6df 100644 GIT binary patch delta 42 ucmeA=&(?CDtziqJ^fK01xXubyy|`c}GnTTgLbi!t!3uXb%8OwGSKs delta 48 zcmZoU&(?LGtziqJ^fK=B)Z&uF{P?28(wylE%NTW7eA+r9rw1%!{0L#WE@!j{0MNY> AiU0rr diff --git a/gestao_raul/Scripts/pip3.exe b/gestao_raul/Scripts/pip3.exe index 562c34d258d2dfb6258b299253bb8040839b0d9b..06fa97badacbc7b2528a21319b9f80a06b5be6df 100644 GIT binary patch delta 42 ucmeA=&(?CDtziqJ^fK01xXubyy|`c}GnTTgLbi!t!3uXb%8OwGSKs delta 48 zcmZoU&(?LGtziqJ^fK=B)Z&uF{P?28(wylE%NTW7eA+r9rw1%!{0L#WE@!j{0MNY> AiU0rr diff --git a/requirements.txt b/requirements.txt deleted file mode 100644 index 0b1896410863f180e47cf8b6308aea43e0180d98..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 400 zcmYk2K?{OF6ols-^jAdJqAuM!79Biv3^6S;(pH1&$5%7YB3T~0>ij|w*u621$j`DGEqnX4f?qeI@74sRZ3`romkBWI_CXZ3X`i{=WA)8dNrfTK?8 zqD(!fv$;ykyCdz+8O3b5iQ4XdMs2C@uPHh_v1huDCEbzgY!5wkYndy$a!z_Mk5Xx` Hu_gNeAh0_;
  • >_l-OZS@Y_3PsU*|KtO(fc zt#C@zxV>1~J*1>8tde6Col);F9*Tv2kY zAlZ|eJlA~S#Lm>w*uJyjxW$=c1dG+iLi5B9thXTDZC3lxfIt@%UKTd&2iDz&dIyLw ztat>mxT9ei#==RTZ{Q-ygw6R{OZteDcXXvbi^~PFBKC1jhVRyZ7`(YgtuD8ysEvjj zdC-ii7BEKUEcgZ*@V?b&5x~?!5fR(9*q)2C)g`SV>YLC6W*xF8=N>t1 z6x_7a-bJ3WcYch#LocLxZ|Lznd;Iic z%fnY#UpW&va_lhzSk>D>C~#Pauk|hH0<$a3eV4%o*3XFWmSgv6E-nF@Cri5PVaCbY z+p(0}9}YvUZ%+&?-g>)%wWA54hiQHRJrbhf1N6J>VI31@_RC4-kl~^v*7E>nlj>W~ z15rxB%<;JLaA&98@lHEexiE_!kK7fHEhhv)*GGx8Ar_NZdG1yU0>%a7gPK`u#sx4O z9OZXRZ_9q<16Z)fcOnlx8W52XiW2qnQkp>NHz0a!>`?;W4$?mdz3+X95+Zy*f-n;i zA~YFcLdp!b!`Qu^>v`!hi5`BFJ<9i{y>w^Bm8>V$dl;NYc(rfdT-B8F2j^W#Pa7eC z-7)uZd-t2QFyv*we{z4mR?mxWkcS#-Oq+6F>o2i7Wkz51!e-TR`wyN%b4!bGxXw;! z+%i(*J;YF*HxsU4f@)ERJq#Vj>1G4g(^{h*7KgfG0tLks#77I%77YxCTrx+S7ORct zJ6mnc&j;03nLS?N3FlP}lrH}e6RtVo3r%$UoW0!OZG)bRh; z_&Ai79RobkKh^+O@CKl9@-#l7gF6AYfL%7BEpewKV_@K$^F+%0En^~QeP4sa8F-STwVsGQl@u zY)8p5XRi$5s+IJNSi%;EIwO2_y{3%dVFcz`D?^Icx@lt+fWAJZJ!DsFeXc9ro+b>f z?1_23o@Puh=#g?3J(x0r0LPToUo(C5DETX-v-+<(v@+G1mDEUK1eOib(W@nNbk}__ zmusJs)^IdoZDf|h;T`I53-o3N6%>@t4I6_7%^6>ZTSb6E*4PpaD-t8?8w_R<#C9Ou zHlUV~TZtwFNf3KQVv`g7@FNz;(J$DVwulXEpnn2+-{t9NMSmk?5Oyy&br4o7^?uM` ztZ`Rhj&pAXcjJ@}Zo~5t6h@$gR$5iq4RCW1IU+g&!&MpBWT9d*j0_NbE+*11lPub< zXv9;&o!F~3ns>EgwulBXX&q+;55|_Bf}0TPgu|hz>)HC!M)N|P8<@b?I8S!gwS5iS z&)VDUT`)8dVs8U5V4V8;a{v)OzPEw<_t=v#L=aL8|M%^?+B*k0dtiVn!9n+r6YQCR zc4O!+@}2A8-WtR;4gpc`p^~$lSWZR|-nVUCpw)4O)<;@n9im$z`h!}ZgYcZ#MT$a$g^+g=V^bRY$h*T0I`nYI`n9)XMmQ#!8 zKn=x33S~!1?s8h_Nvk0o=ywbatQ{p)b^_4in6-E%N-G}s`=Htf)pzB36KX+?FBlx5 zp=O|63i|S}%*{0#K!i)TF!CrqCSKsF{t>~4;N#S?4MR1g&#K*rkRRCkr%~g9qi^A> z=#)1CWW9j=-^LyYG9I_uFKn`jux?fAO74UHqu#~GZI9M8-9S$R>_^7oz6+sahzOwx z0{OXq7!M-l%+I09MlK|IKj@M-W>7dhe5G@8tzHq{H}c@CsQK98!$CblJ5m2C$)M|N zRNIV*{{$j*9b@3`6>8rnwMz)dHISv&!jm7c@IDK3oy8M&2n!hl?Z3wIh~+LC z7ju*eQZdBct$&uKgr2y>*QEnA3E780L6p#Tv4PBZi($FG-TFR=4r%opbv%!X^rWZ& zo-0Z>fqoL)3(n>ZK1M#j$1=}p@BZXtFu>2m$CR#eRsT2aIyj1E-6S}Nmo)4(U6B8w zt(yRi?hbOeXPnHp9OTX*MXQf@+d}H9q@3F}<23RzEtf7^u{9v%Tq1lMoRt($1hm>Y z;Tf8KAuq_uNpQF~2gqDbEuIF4QWCf-VYpOiO5P`EcI$s<@(EwV9lQo^qTJPmG!$l*S8MT z%RH`LkAe~@z$_1KLIY=?i83p&?D3+nQvvj&p&nfrS1c1U8&Vd-rbWOn6-8BS;bZp@2?`R|USZT6XX<;dB z<=?5?4)T>2Y={-4`m4A1|9{pj!VyLTV7Xk_(xy$COU*3F_;7GQ|qj)Z9IWdF!}X#+4C*w+D_heEU`NJ|i;5T5-Ol3&D;?paX) zFuvAF!{06`xCSX2ln1*(f@VUnld->OGDAn0LB#48aI9$rbQhoQD`796@1!Y=6R3Gs zC6^O*KrZy>g`cZW)}QLuP}B&n0!Vof9j1R*rIB}|{)Dh6G->3MVqaxMcy&fyr!3ru zaVR2DOIR-xC8%Xd8ae^463mIzQfx!JLK<}UtxD*N*aGeW0s_;EvGginqg(^sD@Olr zE4Px1;1pq>a+M5>s`^G<{AQGtcAU#!54LL!8`|iM>8BENgdo{rsVo5BUw7-k5IZD- zt#3a4HN!t&{HDsSj2I_v1i(u$ODoRGC>^#CbS4g`Z7&YTE#vJ}YfA(t&T`@!g#Bfh zOj~0g+IJ7zFtyU@1o0^APp>-Ge_SjYsQtFoe%C5Y7;Oqq{KQ46M4X%}I!7-Qo#!uz z*WrqoG1^<-tjxn#u>ki%r|x7y@KU3IpwXuRiYpjb z0HppU#A1&l#_6+nszH+$oURpk-4011S4`J~K*5DfA1vrvns3RoBQyt{8xf(;K3On{ z)e7H1dk=DIHzX7#9;Fp!)hPaH1E%~-;^V-q16lUJvs*?**~|WAW+&wuRlza&-sX%! z7LGl1?rlSV{1->AH~ewOdc4t@+ofXwH}WkRO*|Cz;cb`R5F@bY|AT*;{s$N!!eJ4E z@Sze3cAWk68qz=tUk3CwZ#jiHZu2uhk2ijLISr3US_DBBf`E8yh#uCtB$)Fhpb>kq zfSi;e=_noH6|6BN6Vm~UWc5On zRYZ$KA*_>CsV?SQ97XNF9D5jfuIJ(NL`GQ2w!6x&*#j&dQ^>3sLK4d$_O9G2zLiYfcFa{EcT6X=M#F|*6Z;J>2XDR{3XnL z%c_O544nq!ZKOkl`{JH7Y2j$!#hD$8#4j(kyXP#~J!e43|CakJW;I*{)ZO_A=G^%U z-A6E2&WRh^ynhrA81Ry%FCd6hwR&}aNd?4zrb(Pwf`w|Pn5fP0D_NUiGInY+kWBNn z8Dj+>fze!4WtHE{T$Y7FdoVl1BVzc>YBTN8{_4zu1b&%B@J*ahV(j9pOp3)!WU;8{ z0w&*Mfgn$j&%eRscNqLD1|qI0sbjaf5Xbul7>?7HWzE zzL>7f@EIMR2NYAa89ZXH-ZG{{0jXEf0`IPB+W39Ub2RGw#Z+Tn@gaf!b@nXUKu;xz zeR&@=8`KF6!#_g}=bjJmxCe*Qu#-e+{xd+Gl*Yctw?NLlag=1B!n2;wx+3LSLTTSk z@tYpM!Ca=G_TwJFTU7KwUm@>;u?=bQ74~ZIt}q5elMk=qz3om0=((FuO4sx7MB7bz zq-dDfdE@(~{&{28=8t>HEs{IpXK(`HF}FiGw|GtS9voGKH*irwdw#N$qQ-90unN*3 zMvGIgo}-K4KLSYD7{zUHtOM69ysmNd3vh$2gUn8y@IWhJ-rR`SIti--oJ6oe+VqMO z;&q@KVRK3)XX&^C>;fG3>dy?&<>;jzHGs=(%li%xt=kHB3tA;HqP&^mh`iZuoPaAZ z4d(@|p)Md`vVEwPf&FmkK8))0#!G3IAeUAO{Vn#olEVWje-$Qlk!vZol)C}icmR_lcmJb-l5bm!%kNsCruW)Lq(-h|jF(p{A|Lp4rM-O}EAH(` ziTtstsi_m2V?x~ef(iA9h!|G*24i!*WREjMS^htSeZPRh_T&KU>kPFS>NBEe*Cup< zWATU&u5|q^_Bhr9e|WN|f57kfIW zs5k}o=X0SrS*znG3@!cdSSxk@;#t0J?pgzT5HI$-?~A0**lt3gN_$ULS{1zVWMVU) zzou;a3rY+MXqfRJ0X!f*@Ui2;DNR%dO!u*$psRWtIGyG`$_aA5gAdKd*++ z&YH^s9AbWDJizV55>k>eBf;o&6D@LPRB8D`Q%`0@fc3+{`km6mK${=*axIlJrZX8e zv3L{f3bDa;4gYAMXIK9z<}%!w%M$1?Yvx4BelV*5RihkwfwAlsAyNTQ(GlNcH|J>> z*K!@ehdn@@6mwV$xd~;!n&e@=|D{vAn=h?9bqN_w54~LI_~;2bejgR#Uv_pm3$2)| zkNtuEoxbl0ScXwhyoryT6LVTjh`Dd!+)auC4%%|rh`4Uq+j6>~8;|vS8t>tFi#mL+ zeRR5!UubC9&AO&FIR5YA(cS!fREi@oHa)O#Lc z(kQ$82bd8M3lD=f6MAhIGWSYxs9gTysq(3}-nd*YfAleagU}v7Ux!XuQ=pp`!|pu9 zllq7$vrDJEap}65aC>o^J02W(PX!l#qSU_Fqkr4$mG00&ygXJYjN;iQ9#cRb*Q-IC zH7^b2;o)WdMXrem+*cSAa3^R^WU>H0fq7z4T$jmTX62tl5D#5wG;S?5jl}J!KPR^ij}B9kKWuN^kiXi1Yz2AW;NoOuam=NI$voWfzFIViD$ic`k8yrZ;}i1L z7A*Vn>n*-wrw;%r2y#5>k~f?#uG`r<*i^1tJ&gw4$Elw}+$aryz}VpS(M1nmeT_77 zI0E1ev`K|W_@sCF@uajz)AAD_TD8R23F_ut=*4)@b`3NxIuJhI-KWf|!q*JLXIJnT z`V;uU3zQKd+~_qVHqKpcHJayPKB|a)$T51#)ko)HUKVl|^tw7YE<7a8kFze}y7S`= za}xc;jQoT?#qM5bz{S?DF%T9MZRtFd?=TP*Y@PAQX@pt(z`3EyE_^)R^V|~^4{OA31!`WQ|rJr7Z4gu7|aEiYx(Z9vA6d$irS$vTdjxu#-C}*U Z`|nrjL-FB=MhIC+JMrAmeYTv*S@rWfv0{ef#aOyq0*U|Z)R3AyQ|fw&g^VN!L?rc>*fB8qWmqLlg>d3vOxw<(G-U$#9<0^gd#jm(>y~nJWI2Df==*B zI?1Q#6rZNke1^{OSvt#eG{^Ha&*$hIpQrPDfiCbxy2zL45?`jve1)#?Rl3U8=o&B3 z0x!}cFVPY&(=uPD>wJT5@CvQ)Dy{Mwt#Op1Y?8?_igBFce3Nc+f)bphB&R6Fx9Aq% zrrUgn?(ki@%jr%>$mnIeR&j%ce6d!cU^QQ`DrDsH-{f-^8HG}=W|v&8-D?m8bb9RWcmk25ba%8-t)R%GK;DX}0BR+pyafY1T8+il}Klt7Ys8MZ8v? zLm~7VBXsnT8JU(7mI!75fMoUeCuM9L1AE^nL*ho!{)D@uNNL?MNzXH7&Xd4>?ZEI_wi=h|}v{fXQ zM(V~$-9l;;Daa;dX>+7*4gw+uoPw-KCk~JR*ucoZmK?e&!$YZFY@%jd#4!Th6DTLr zkSN52>_B!QKSO>QsW)MgBlXLX`e6qz3IvT|wGm1LWG@~LuOqgjeXr>p3iyrzo9QBL*@I)4v7t7I|7ea{k z?l3Au(lldfu{^jKwav6x`!uz-r{Zg$ToMN%SxD~+)KGb)=*lYL2O@MN{hV z@#$!T6DbjkCWoReyTnqi8ZmV@*lPaN?7Bv4zujzi+~C_r>#*qt_d18|{(IF``|p+R z3TlsP*+-(*Yj%6$$7ZYF5xLIZ;hSc=-xH4W*vg8R&0fFJsdpQPEn)9}FM9j^X5yf+ z_qu_MIC!^r(CFgv)IsZAYOmjU-E8-g2k+c)zb+3L4(?mI3?1r%rmNjGfKOH%K+s$5 z9Kd9?{P8M{R4N%0?SJL&m|AxMrn@NBb*bc1e6M3;?2sZ3E&Cu(6qk}KY>S%anCGT zcx>k<;U4E76ggrbytN7QAbdnesQrP5;Cx^rY?jYOcyhu>t--ORiDCDz~+(5}sehLgls4?LvxnKBYU;^Wxh8*SnHe~hjj{}oF`gM3` z&^rgmj*WMKyt5P9c+=s-R&z_9v|bA;6xNq@^?%*^XGaAP4S4tGs`we`P+-RR56=Y> AN&o-= literal 0 HcmV?d00001 diff --git a/gestao_raul/Lib/site-packages/pycparser/ply/__pycache__/lex.cpython-310.pyc b/gestao_raul/Lib/site-packages/pycparser/ply/__pycache__/lex.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..2d71304b20b7a286969eac438b9bc2d8ce0be3b4 GIT binary patch literal 21408 zcmbt+36LDudEWFf_w4L_FMz>~A;BdmQltcd2M7WrBydRqkSLCpnhdsk7cpCB;Z& zzVClMGdqh#*-o(N*RS7w{O`ZtH2V57G5mYvgY zd<@5M%w@A=%G)Yg^0rI1yyK;~yc4B_ypyG5Gv(SfKIuiXlzAyu@3UiWcHab z_A&kCSlzf0bIq;1W8F4N{m;f6+ljv#bK>s6rd1lmcfv{HJLwMLdl=s-Cynp4e2?He z<7DxjmG4n}=bS!#_idV`F(>czzZxrzI|I%j-V@G{GmQ77GvbWmJ>`r!<9JUy6V4>w zGpIe~Or!R+w6@1F@i&9NJ?>uDtnJ%05NDdXm~r+x`(8Cl1?P}caP}j%-#OqML@Ni} z1EqtGc_~&r+_WE_edxp+T-&*3|HnRBd7ydvfzpWw-dld<{zD5)-u}h;_E5`y8A= zB`>sn_oiR8Lfdnf7sKR=>v@$WH#EFEF_lK`w?260evq56ZX%Nq|ayEkW7 zH^Nl8T&-9Aa``03Xd_4&8KXJap3iJMe~z;(m+O@kw_FZ03ySzl&6S1zxuSC(~- z%AyGw?Y4k`tGE#F#iKikgR*z8wqs+}0g71lgsl4I#x=LTfCJI_$9No% ztoj5Z4%WOD!^1aLzGf}jV_5s5IoBM;M5T#ihrQ#6)$zj){ueP<+uvAq!}#^e^12%) zmaBEQ-oV?vx!UmV7%G8wcg!$Mmdl>6%H`9@dy~_hFq#AH_OXzXdDl=o0FputAH&=< zF2xiZnn~clL#?Q0^)^dj^>v+eqnMlgXenojX^Is~oHMF~~C*V=&2pFtsg^ zT^c~zQ+VFw1XE}w zT(!U%wEr>AM>de73gpo6xX8NPF+yXpXzD%KgZ!P7APio>BkKZa9_sYd0q33$3HE$m zU>!mX;bqG}x8@k2XFPV>Fo0|YVnQQx$5iY!jNec=V0Ua8NNBBiONy<8iEB4_o_CBY zOf8^zb)mA%Zqzt}?E`CP-Ze0SGHb|z&;tWN%h1MSj=61c)?73F(&>wH=jWb1Sx|e~ z%RUDC8FV+BD;g#-#Co;9bP*o{t1|$f?lMKW_Z*BmjCw_Mm^^#&;tLo5-0tEok>iIr zkfR8i{oSr4XResu38#Wc4zb1&2FDPDcD26P2;+`>WqoPejAU*CzSAi60X!Z-o#30Y z_-9)wLox53V66I)3zU+XTVGzj2TT&N5GLQ`E(dLBlyOAR7}~^w+eRj9Jy0$$xqij> zRrSic50v>aHbMxujplT>LjY%QxgK0$p*%+*&~qFSISaaXOP>XfOC4meW4D1V0C&sf za)p@>B4`fx^s94s!4|WuaH6-#?sDIcj8~XB#eiRTEii}u6do@?a2KA~BW#5MjJ{WJ zgaKTUb~3~jPS(lcopkz~Jl-j%-x3YcxRkpX9Vx8GwO`topZ*W3B3E9NoNZ0 zyff|0;N9=`mj;AN?+fEV#=tdP#r8kOJGkc4_;9eZWgQw-#!U$=3Bgq%CBDS;gp^E5 zdP>5ygc*m#JuA66iT6pEmy~`92P7PHER-CQa9C1C92+U4P8{KwAe_Wpm^?ps{_^?L z7Zk@D#@^uTTyZ>%gBU3{Ov{U`LzqDn9Dwg4Ip2*-UVrzSFzSV=c0$!>vYX=s9`q8%*Lu;U8y$R-3X-cAwEiagy4jcu<`tb{y;DC7YHXE zS~1sy21!nN0?x4UuOskdTY!h#M#~Hg}t)}GH=J8iM?`i-fY<|KujwU#PNLu z-^o@A-{~NQ?>((dkWoj1jAKm3yyHQ7%L+0iH*0$t_ibQ$$*aXTO~lN}*rKWP*T#Yb zN+$zw@=OU5ffd-NVrzN4%`&0aEGICQL^PH@8B12$%u0J^Eg>~7lb)250l4Ek)|>#E zB3&=0LVKaHx}hG!M;OOutaxFfvbyTloiG_8D~-6HKne96>*O>&Of;_4+yy^07D|b_ zd&93>39W1HMk!9Bxl)QFO}Qm&0YPH1T6f%=r8LrXR1;X!UEGPu;tR`-y89aX@$N&A zG3mhO!vk&w%&Tb>4D-ABct*B+$QZ%fHkw(zsZw7(jJiFn`XCZIyZVPXV&KFK z->8|Jrpow`sy2;Jg6eMB4%XVSCb7$Y94m`83#{9wV~@vLwx0^Xnr@mu_O(_#h;OAG z?1-OP1QQ|q!<3|-^>drXwv-f7`usfhseco_^yH=eEYb&h(lU}Z*prr(w4rtyV37Mh zyfq>)c&rO^{%DXw&RCF~1kBdP`QEeuhlBGLN@ZHvR<6|t$eRdq{$!91Ag@L6b|Xjw z!jgb5SLT*OpNV#llF}!mm};kC6r9y`Gzvmrveh5-t1k!rwV67^pCB*o{k+u9qjr8< z-2v3yb64Hp?9?5Qx?hvJ{ixenrI&!cZTxLonrV9|=KaYHoDcrJj7RY5z+CglOO5(b zztFhuDq-Xb?#-&_gC{Bgw*XuV8sCJ*>>KakU(=$zWZY=J|6t*;hxlya^3|$WSgbC) zh040$Sg8nix4cmROalo!g)19{7cabAIEEg)YNL*7#o59$(yQxK{r#Eda2Xx7vkQgC zQ6$rxD02XU4-5GBc)@dhh$lrBM^1!aC5Oc&v5hF(ZAhZf0%Gx~;clXGJJm0Ep19MVZOX=m5>_u*H@Pzlz9z>RaR$FO+Cfn zSq7&V5ML>Z0HM{auB!L&lftKZo@xE%#r67vSN0ns&wA={W(fu(c2`d#C=NzwOanuh zZmj#O>%LP}rM@c_>`3KG1Rp6v0BLGy`irGFGDwwWMJ3f*#&_H&)(b66I<(n)DWO~; z%tc-uP-#}9uN@pIf6B!Q=s03eJCDKFX5#=!r)~Dp$!gY z0qTJb@L3uTJvGPNE6mNFm#*Z@l`>s)B4-7?cd>{ZoKlV{Z4@HM2u-`baE2NYl_5Tq z`nsqBNJUOsslS^h=tG|+Ie!FC-I*K)<;scFN6^HXNG>#1R&jQ49)%_4d6a`GM{!%r z8Ux9(+%^Vb9phKrrE0yHmBU&};$-kNhVezGy5OrNuE;e8%M4aHprn6O&Z4U0D@?OP z>0Zv=PId!_v*Mu9-$vQ!xFw97nK1@T$d-I?s2GyB>4MbtyZ1!Cc zo-%5$hohv3#79mW7cBs7bd2u@uh%lchnT*xX?p!W^qZOs!MT9q5uxql+-*`Ofiwd3 zggqy0TXXR2%~kMTAVHM^G)SOn!qXL#0!Cr>lB5we15baLDlP#PbsC*(cHII>Q%~cw z7|E7I2kJ!zJ7mjvwGO=ae~{x5d2(^|a^yQamz3z4GDR**t1@K=5ip?8xm-6?+J{P8 zrb(S0kP0SeBF~EA5Rhu|tpt|Hyp41)t+854zGLzYG*ioL`_8iEa!!^9`ilM!fzt$! ziKWp%NlviXrwPViMO?j`0e3+?%7COHw7}}BbNmz{!BGn|s%IFZ>J&O5YRo|3ME>es zBNZSk2{h^rAj0*@;cr0xAZ|pQsX+2wt7M^utkMi3m>cy{&|(Th83X%ov{8&!8QSW7 zC?{u3#wA^=?`K-?n8M8Jx_1>iNpLD792&PH4^kp3OGrQ6?7IZ!&dyP?1ES-&MBwQi zi={i~fI#>ftGmf*VHz2F6w@390b|5y_UqHq$-8R^D65x+tIlQV=uGvrchi~nEvzdL zTVHp#zujHJXb$V{dh+kR6Qaon_!2%JgZ6;xf^PR*leRj@sP9~L+q+g>J=*Si$Y^GC z*G%r2B+pW^J;|F`7EZFoy{DiF2oN#TYEeKmuf<+7R3<B$&c z$RI5nWW1MyR4uD6p;ivHXwgWSV688qJX2aAd-X50;{n_4Be4a+=V^=uXlK)CWrM8e zqdz?_%m}qUgYSOtGeMS<vyT;WPdq6eyY65Euf6BM3*CPc1&@;>3t5H%$m=*=Q7c zB|zM<7GH^GsMEI3FjY&*eDqAQV&lN`x86}{-lHb`6N~rL?s;&l}8SHCl5O( z3m0MbDI7iQ9W8)^T~|bley!fPQ7;I)P@o7PWkhe=JaTEFQm4APAf$Y@aDI8& zU8*b>7OqxQ1%ygT;pTze(+d^9AR21l#nx_WEz2=#+ecvAI2fDEnF4rMi^gGjrCQE#M#L1-luRRic18V_pR zTvejxOxHcn@;4a}Z_z%s&~RuI%PxSGX^RDU`B0v(tw>s5BC?7Q64H<`cX7QAZI-6P zkqYJBL#K*P21o8CG$2=C*+ZkM8fZ(aTN>APqMo>H4Gg_8?{A}6!qoaO@G9VAOe1em zg<={BDdj-G{h~|v{8~ZD1g{+XH5I;l$}QoYm)(hY6c||Aaa@= zV4V#9rqD0@L9V&iNd4W^hxItxrC5*r6I$(%Mj3ezdc-V%Z!`^1#}Vmj!*?Y!*cz%5 z%jKUzEv*6XYWXCir+IECAECSxh>*$=uMyj<$Dk4tbx<4Yo9d@fChWW9H&)M6W9dWO z?+^ih=T6vl$oD_XjUZRW867kg`21$4%+*2YGzZq$w6yW0SUWb1sZ4cgekp<)OertEtmiD3^Ae?*sy{mD^7U0n!S7;mR4nBLhk2n&@=g8d1 zhC<|}U;x^%X@a&-f-;j6u+%ifZ}0$ko0vUPwkeFEsze&xIiOq?Rj+zKn!+}?cnQZ? zjF(cxD9aE-!xUvQi9u80tuOmBJM{ny_s&f%BJJy(2;r3K*c_A%Ip7S*>6r>aqcas^ zK29ZwVG`3|Xe>1qO<)RxB`K8Ykg3@=5nJ-~L=eZ;$wUl22V4CDnpG_ZzsTT680;AF z_aW^Mx+5k-KBGs>oCS`u{f{)EqYIfwodCS@5(uMXV1xuPySeCt{UwP8TNQU=ONMU+ z@tVCAzYYBeZL}lQ$U;WbOa%26$W4eQ<8f>rwH79H$tedyOe+IDa%R);)6k8i!RDA? zVx9xb1a^bke==jxU4Uidd+jK!0NIqj4nwUwjSj$>c5)jZe;DZh3U`qrKnP!oBJ z<`Mt}Pjbmvv|hrz?3mxT@dd3f_4CxuU=E3Cgk;#zs;ORe%vRQih8AsR$$Vj_pal?t-&A{^n=mr3kDG8gTe9GqLqMV_EPLdteBj8%Lqh>4U^gq zR2I?ojyX5?2G2gQ;m7b&8w{EVV0f?G3^PK&g(ijxaoX^-w&7KlBMBGfNtina_$GE1 zy=3Nj*T33uByQ945T?)GTySAmYScrkTKCl_*#q>24Yg8U0ZV|>tK8xcwRdthpdb)y zm-=}YOo32|Dns37k0MHb7O@gdY%(~VOFW_eCTk?FR_YFL!sqxAUuK)4s{l%oqA-^* ztzi#K#nF1>*32h)bV*=!P2!wP5Bv=#WJl+GQd20-*B+E8{e#V$G z%(oQV=sBnadEyx4OZxDAZ;Mu+4 z>5a7k7)A_$<8dEg0%~9j$8NL|b(l_C32@R00QsZHh3t=S;AIgRfnF9Qg0ZCJCyI~ zeSkJv`A{h{!z-nQ;b8e4hy&_rDI)o!fJcv(Z?5~=!o=q z!eqxUB7%b}vMoYGOy1Z##Ib*lS!Ev7Pn$r2P(CpoG(~u$Lw<^=OVm<80gz~@r;!*H zRNSsGT?Lg{_rR~81GCGsQ_6^FAPT@RA?xd@e<)>T#c9S+H}I|2860CU%|PfiHqJr) z&{}RR6}3Z-w5oocMcB-ajTHOvgWN!>WHbk=dDnz-z!0~v&RTU0!95HI4qSJ+4&g(y zh_J(g@wg4<6mQsowzOB4bT<10X@ku$9P-$s&h0LhH2&~h+E#SJZ+NM;3!UV z8U%52k|br#k?mVO8x_0v=*j2Zd-OH1ZS8UQ1GQGk^t1;**h%QjAm2&SLzk`EO&^o% z6vQM>_f7&znaQ3>Y%kk06M`&3SHN~vW?v%Jrb1>cCcFpwI7ahv@X9>TMkE31mwh=`WNW8IRSZ8_Ow8hU4U&cQZ-&~?$vu; zSXoEL6}M2)MH;Y>(3aKgkMdE+U0L-vfU|fg)T;~xhGi9L1PE;*5(~^>w~?43@tr{a zuaW;87naIHh;x7q3SW7ur}4I##+i=MBg@ z0f&OM7E_tVIn4x z!*msqW+B?&$rjupaA4>VF$ne+bXq9-9^`}3bxfH4kS6=hLlR%JX^0ngGP&`vW+$Vv z-9r|CS;~O%i|BfD_IzEI5(h-4PFs87`OdL{nRyB7r;gs}a`XI-3SPm3?E{;?AX4~j zyCHAe;q%*5nAn3ch(!tT2Z`_H;*|5ux0`!+2cTUyhTzkYo4$(=Zc7`>VYvl_R1+HmT<3!@ z3s&2UFZifz!+e6VSO!P7ge}EJ`Zl(77BUC7l%nzbqFQkuO5kla^X}fOoq%JSoQLr=G1ckmk6FAy!og?pd zd$c*F>x$yF0+)h{(?Ng{3#F+A7e-r)7a02;23-&qh$b9s0RNYWwfQBUdlBzTX_+`j zxf87a4a(3M;XQ%~t(yY?Wne}#0&iePI2;hr!44B!67=;Os*N}7_%4J-I`ewa5Cxnh zo-=s75%fov^HqWQXDEki&&*x?GsQX|mylNeB%nOkGReF`@nfEXwgEA~E(p$^2;wcs zvxNBcR>skYiQboxsi}%b{X1f4f$R)xtPMXS!eesN#5tfjg}p!&Iu-MC5LXg7Nk0ua zA8@bWC575aXg9=UDSghbJ&s(Q20;7v+=S#_liW0NKONY$zFHn)58wST&*<^NYyzp@ zt_|F_K~`m)sKb^pOO(MJCu3WK6rCb(hu78~_lE-8AI8XjAAPg+f6~)82s2jWj*|^+ zoWg%BJ&ic<(BLVQ5pg!Z5sjcvr|;4?R&__;Uq@{{Zg?chnQo65Bi$Mm?MH@MpW2vq z?sWz~Mdj4DP|J$)vzV8O{2@C3LNFTs6i4-4A&?_;JwO965$=SFQLli2n~jA5)oPp5 z9TQUlAM)4DHOi83btG0Onc%Vsa=3|O&YsYEu3i~C%$y}9IB5Yhwn^(1xchoAbX+YQoj>~4(Tg3!&aTZ- zGf2fq^9Wk2H~jW63xaLixkOvKw7$Jc?4@>!?lrU6zFmuKFd`vgsd(dlh6GN+}|{TN#RU2#BhZ?P=WKE- z6(lGv5`Ph|wUR#cuYR_c10Fr$7_Af(SJ2x^D}B)3!ekEh)^jMI-|B~OL*uO#;c5Ex z_pfE8OiY!cGE|h^RmKPI-ZZ@Bs0_^Ycb94I_lLHIVdgb;X)zDSY9rJf2brx=2gY6X zqfra#yIXiEww8sCcc|9C@lTCdD{I7>hoaJ%cIhB{I}Qqy)jfbNd^swSYnKoTBr|&n zx?2bBd_21bB@f>>aCa2t$D$R#i4~_;G1oH3wG42n1Bm$dqc-zFPN;)kr`N?RZyYMb z@4$gz!s&-5d*E6OUwUn+KTh7ZFuJIGb5FD$xd3-pVJhFT7BFZ-8!h`Xw7n;+!|Qq- zUNbgMMJqvZhC4WnUb4~)e4ww>DE?rSGt%2eXYQ}}%w3@EHN(4vTCxsNoNbTNPS74d z@+Y^ZNTRTR`5=#;elExhRs0LUXBR3_FSr+6BJane(eDD88ZM<@J@?%pQ@9?So)pgq zd@JR2yk@NZf>7cyO-Qx#893A(egZ&WkmwtQl}df1fU9x(((2{r;k!yI2xe87o9I!{ zF4%lmRE(t4U0PqRD7b2`qLesQw@DuPX;N0v5xkW-_T-DF4tr0)ZCX1E;6sncI)1=J(~}7>GSqEi|<7w@}dnuV2-P`HU-Y8dhAPV7(5g6&BAMOh zCHwdBDQ*}5qlE^XE4B$iLN`Cp@*OLZ))9-c=$p)-W=;JA27k=pRRm#I`KdcE_6u!Q zKfuiRA_=JG9sfJ4e2b}xXqf*EA0;pbYrGgrO9bzSQg09%uE<=Wp-OR=Ou|mO`&%gW zd!)NRhX^b>po|oRgMTue~a-nVH^p`_e@xitU{1Z_cZSG{F^cPL4VkQU4) zAjGk@37VXfH2W4^S1GvZ(h~`mq;m)F*y!H#bmKtZy8Vpq`BsKbBkwe)d+2pXH71O2 zkCll#L54(#_CH6YnHIY}yc#u`#t#%^fTYchVXZ-G>x+ERFVgrbG1{ac_5nG;F&2Jr z5JrHk9-{ySD}NHX@bvN?3F!S6eJS{`ZNYMZJi3g-n2Hz(sP`5T%e3!7kK5q;{37Z1aj|A z_wIXKW6#Ihc#5bDjJ9&4gECuq5sYQEvF>#>p9NehA;$*4sLSwy{xd9Kn1>YNHP+Pv z43u?P4oXPe2Im6eKgKkH>Ap^B;rTj>g0>6N|74SKX{jWyddXVky)6$xS`HSl`&A_% zPa~#=W*g}Fx~lSf2h02>(w+i$Cin7802o!#U5R*)e;GMv;FZFb8NlKj)=ko>DYX3Wo2){A=n0FP5^uQK_8Gf6ig;)!>`y8tZ zVDn>e$%F(R0342rJ$z(?hC?G0B%S}I;j9tbzfloaO{WR4e^7qMQHMz z_^T;D{zH&tL}$_m1#KVdXW%B70e5vC?IqzmfE!?t!{Bk?Bu>TZwx6c!pKy{HherZD ziE^O#uyJqAR1WlWHflRT-pRmzukXF}!8-w*rjz}Y#T#B*d9i!pb^_x4w*h|sfP-6a zaL}~W=K@=Ot_dy|Cbq0eG|5z}(DK4HOZCJpMx0pBdsC- zK9+zlM;yD^U%OwtIi_0Et(kx`KF->~G-3}(YzDDeiLt$#{)53ZA?+33^V`$fEA5X2 zL&2V4FUOBD)bN}QvRfxa^K$~_hFbfAAt+@mwD5&s9~=hQ))#bd&?Y^^7(IVvoYHfY z`oOkSj3P>%ZKtBAj{{Zb%I|8ofcV3ROFhIv3J|^<^L!NV$B^?F^na!^ic18!@_Uf} zUc688E$O^mkSo6r<=zKQ{*Q1&@{}_sqw23cj+`e@^6_mYpX|)@dCaqbdG2$@F*{RD z2868lUN;a2(Lp;CK|!FG>5oeKIQn@H^2a3~HJFb%eLGqsQ$4Y*mD!$Aa^wZ>0s52PgR}LZh2jYrlWCc5dt0 zU_VMGn~)N>o&#=3a@H^542u!z{A=dMmm#Gcg1kB)>oS8fhuV-INuh^6eu(9PO%W40 z6ko+XbNVXKyMTGs*AVn*4uH?awlYk-On(kh9Hyx_^np)d12Gp(tuhp%0FBTbNPs~2H@FfKBF)2qs+JofF zNI_4(&RqI2GzZUAcy0B{dUe_1O;uMlhwwV7Ie)KEDBu=pJFRU?+McHM?NK=)nd(p3 z@G)uSwByiETO=v49}hgCZLZoDqFMCjK`Hq-{uQ1-ed+Sqi-n74pFR7LONDbUT)6PU zO9kdM4@jXdXJ5dNgwTugqlcYWFdW)3v}86#vw2xGVY=I{;avTD4(uTm*fpEVQ;33* zWhSzwu;J#rP(>?CcQ$#?I{Md16gxb4rm?>4aFzANV9W$}z@q!WSX@eX#rKQvt2&Pg zT}Kr4ukaaKxFs6e;sv_S>~|R4VL+Zs3n^qEgi%l(&II?eHlU-`KP08SdVh+gHW_?| z!F2{j1|pw)gE7$>iet=Ke*O;zzr$dG!5{;1n0uD7n+$f5t+W>L^UVDwgRe3WiRv-N z-oxO%4E`B|3kaaQyotMtjylDZcQbgD!BY&V+|(BV&oTDL44zY*c_{vsdE>W~LWC31u4f92AXscq%x#o~!lb7bgd6`AsfIDg zwEq{rG>UnfG2$8cJGnQ@7Vu08tS^4&#;|SeN1uxLY4FWVwZ}1HDgoJ3Q-TD zq!#E>CLIQ;%!OCJ_`#a**eJz6wv;yptQpiFG7}b^+u-9XV(1u3v&|u>YU$~3LjX+J z;EF}?q{jqPp~Ag207dSY{Mok>5M0??%7POjAC%*J06j4WzQb%Oim^78&2V1fNa83B z1#<>&cD(WowK7I$+XLU5q5N>m{GM&8jIqO+F^RR}(h~fY-y6GbXb%OOA z+%4{;BR$iKBOPHH92WR{*bcpO6d9v7?H~a=ccPZV(}yR|>rLb^)}HJ*M?82DW?!P` zMb%g#zNNZ~z~q{d8?rIp3fZrM)aJks}a) z3p4?d^8`x5q3BQWl1mBN^LGZH;0omM%S>gGY22ySR~eq>G?~UTg8MY@;QGhJf8%1Wj|D}@-ow9dI8)*ZkRva{sk+64>iHW_>~Pf%!(tn`duWbUuHnA zM+sKu%4_m?KVuIu_&kF<3>F!DAA_$lc%8woG589CF!|xL7oUFN(pfprvcoc~Fn*c7 zVA~+5yTYkcS{d*Jchh@60((ENE)kCOpJ@#c{g~$4nfQP`kQ~Sk4CTjSpNM@Tbq=>$ b`cnO=fz&Ywfk??b3@z9@c%M!kNM-&n9J4>D literal 0 HcmV?d00001 diff --git a/gestao_raul/Lib/site-packages/pycparser/ply/__pycache__/yacc.cpython-310.pyc b/gestao_raul/Lib/site-packages/pycparser/ply/__pycache__/yacc.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..a1bee0da2dff04adf44c6500709c32fc97927b2c GIT binary patch literal 52651 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 literal 0 HcmV?d00001 diff --git a/gestao_raul/Lib/site-packages/pycparser/ply/__pycache__/ygen.cpython-310.pyc b/gestao_raul/Lib/site-packages/pycparser/ply/__pycache__/ygen.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..264dd5bd03250596c5640971a0d17e871b3b8570 GIT binary patch literal 1807 zcmZuxTW{Mo6eg*wW!cR`kYrn1WH$`PkYp|PGz7txq$q|B8IUv>Cb$q3k#W^1l0wo* zZOFg?w|gD-5A4TbKV|=buY2lW*h_XuUzT1-kUTe1N9TO!l&w~PV0``4U%kJ5g#OXY z?LmO~7M9q9jUtM36k&6ch)_bUmngERO&vIG>QWC*hq=_hAp9P4#t6fm6SF#v*YE~9 zO7)wI0pCP6tOHnr!X{CT#&|?1uJIZgS(KR5uE`;K+Uk;#GjeNpf~ROgYHN!5M;I0O zs=d^EOTAUwp#Re7@7E5s)=}-9lM~djkA|&Jx3)gs{9J4anQ%F5E?8F3*BJch*s8&b z{w3pyWXcheXO#+!vAE9UGv$M&p*p^D@~mJ&Su*KGzTl~0qlU4Lwa^1&Lo{cytf1_L zvb9|VpP{i4{E4{E#=pl0-*is}{=|_87cU#ysig-5;~F zuE-?Ys*>~~0Zq3Wq*cP<`c9P(b_P9GY*z!d(ql3fWuK=EE*3r3(h=W)&BuC%q>XJ% zZbEBu@(`47B+CWCGFkh;^pH-}tt25x((1^moe6>jVUvLM+6p0&S3zy@`!#{IIa7=g z@H!RN(UYM!4}Qnu`g!iarre~eATk}7ds?P}61C5>Tr$pRJPWv&6=~k5O!*MxSh5$A zH?*;i;%sXIrRLXS!BUx(#a)nzRoHC!WBu=KST+tY`PIgJ1r#Z)<OnwhX0PTrCh1mTJC1t}LTL4o30TMgc z5E(sxfh8L?q4t;n=&g}$ILB~M0)}%9=Z*XtN};x2kq^+QA%nU>y)hXDKn2tXs#!O| z!mIsPWEa&C_u8plP16PqULsvOy5!#SwF$nqjIVH8XY3tse|y8*kcMNhq6o6uIvRR| zBuxQ%!{(gWK1(hX=22kKN!eK+ip9`nC5I~uYO5$E2P`Y+@X`M1*=9!2Zu4|1geh7}HAbGa$u4pC(LtM{TL*v&H`)AF*~ z)6GukPi&y!#$}Qf+q-$0Cb`%HVqv84_3+MVMWH{?&G|oeT8flH*;N7^!lM~4l1o5m z90PD!94l8m>&q-xPFhxjhsu6lW`(j#0J>^$mQVw0Q+Ni4D!ArQ+cU5`70(LU3HgWM zn8N3#E~2K1TWs1&)R-|)Hc@*K&$%jG@>;vL } +# ??- ~ +# ----------------------------------------------------------------------------- + +_trigraph_pat = re.compile(r'''\?\?[=/\'\(\)\!<>\-]''') +_trigraph_rep = { + '=':'#', + '/':'\\', + "'":'^', + '(':'[', + ')':']', + '!':'|', + '<':'{', + '>':'}', + '-':'~' +} + +def trigraph(input): + return _trigraph_pat.sub(lambda g: _trigraph_rep[g.group()[-1]],input) + +# ------------------------------------------------------------------ +# Macro object +# +# This object holds information about preprocessor macros +# +# .name - Macro name (string) +# .value - Macro value (a list of tokens) +# .arglist - List of argument names +# .variadic - Boolean indicating whether or not variadic macro +# .vararg - Name of the variadic parameter +# +# When a macro is created, the macro replacement token sequence is +# pre-scanned and used to create patch lists that are later used +# during macro expansion +# ------------------------------------------------------------------ + +class Macro(object): + def __init__(self,name,value,arglist=None,variadic=False): + self.name = name + self.value = value + self.arglist = arglist + self.variadic = variadic + if variadic: + self.vararg = arglist[-1] + self.source = None + +# ------------------------------------------------------------------ +# Preprocessor object +# +# Object representing a preprocessor. Contains macro definitions, +# include directories, and other information +# ------------------------------------------------------------------ + +class Preprocessor(object): + def __init__(self,lexer=None): + if lexer is None: + lexer = lex.lexer + self.lexer = lexer + self.macros = { } + self.path = [] + self.temp_path = [] + + # Probe the lexer for selected tokens + self.lexprobe() + + tm = time.localtime() + self.define("__DATE__ \"%s\"" % time.strftime("%b %d %Y",tm)) + self.define("__TIME__ \"%s\"" % time.strftime("%H:%M:%S",tm)) + self.parser = None + + # ----------------------------------------------------------------------------- + # tokenize() + # + # Utility function. Given a string of text, tokenize into a list of tokens + # ----------------------------------------------------------------------------- + + def tokenize(self,text): + tokens = [] + self.lexer.input(text) + while True: + tok = self.lexer.token() + if not tok: break + tokens.append(tok) + return tokens + + # --------------------------------------------------------------------- + # error() + # + # Report a preprocessor error/warning of some kind + # ---------------------------------------------------------------------- + + def error(self,file,line,msg): + print("%s:%d %s" % (file,line,msg)) + + # ---------------------------------------------------------------------- + # lexprobe() + # + # This method probes the preprocessor lexer object to discover + # the token types of symbols that are important to the preprocessor. + # If this works right, the preprocessor will simply "work" + # with any suitable lexer regardless of how tokens have been named. + # ---------------------------------------------------------------------- + + def lexprobe(self): + + # Determine the token type for identifiers + self.lexer.input("identifier") + tok = self.lexer.token() + if not tok or tok.value != "identifier": + print("Couldn't determine identifier type") + else: + self.t_ID = tok.type + + # Determine the token type for integers + self.lexer.input("12345") + tok = self.lexer.token() + if not tok or int(tok.value) != 12345: + print("Couldn't determine integer type") + else: + self.t_INTEGER = tok.type + self.t_INTEGER_TYPE = type(tok.value) + + # Determine the token type for strings enclosed in double quotes + self.lexer.input("\"filename\"") + tok = self.lexer.token() + if not tok or tok.value != "\"filename\"": + print("Couldn't determine string type") + else: + self.t_STRING = tok.type + + # Determine the token type for whitespace--if any + self.lexer.input(" ") + tok = self.lexer.token() + if not tok or tok.value != " ": + self.t_SPACE = None + else: + self.t_SPACE = tok.type + + # Determine the token type for newlines + self.lexer.input("\n") + tok = self.lexer.token() + if not tok or tok.value != "\n": + self.t_NEWLINE = None + print("Couldn't determine token for newlines") + else: + self.t_NEWLINE = tok.type + + self.t_WS = (self.t_SPACE, self.t_NEWLINE) + + # Check for other characters used by the preprocessor + chars = [ '<','>','#','##','\\','(',')',',','.'] + for c in chars: + self.lexer.input(c) + tok = self.lexer.token() + if not tok or tok.value != c: + print("Unable to lex '%s' required for preprocessor" % c) + + # ---------------------------------------------------------------------- + # add_path() + # + # Adds a search path to the preprocessor. + # ---------------------------------------------------------------------- + + def add_path(self,path): + self.path.append(path) + + # ---------------------------------------------------------------------- + # group_lines() + # + # Given an input string, this function splits it into lines. Trailing whitespace + # is removed. Any line ending with \ is grouped with the next line. This + # function forms the lowest level of the preprocessor---grouping into text into + # a line-by-line format. + # ---------------------------------------------------------------------- + + def group_lines(self,input): + lex = self.lexer.clone() + lines = [x.rstrip() for x in input.splitlines()] + for i in xrange(len(lines)): + j = i+1 + while lines[i].endswith('\\') and (j < len(lines)): + lines[i] = lines[i][:-1]+lines[j] + lines[j] = "" + j += 1 + + input = "\n".join(lines) + lex.input(input) + lex.lineno = 1 + + current_line = [] + while True: + tok = lex.token() + if not tok: + break + current_line.append(tok) + if tok.type in self.t_WS and '\n' in tok.value: + yield current_line + current_line = [] + + if current_line: + yield current_line + + # ---------------------------------------------------------------------- + # tokenstrip() + # + # Remove leading/trailing whitespace tokens from a token list + # ---------------------------------------------------------------------- + + def tokenstrip(self,tokens): + i = 0 + while i < len(tokens) and tokens[i].type in self.t_WS: + i += 1 + del tokens[:i] + i = len(tokens)-1 + while i >= 0 and tokens[i].type in self.t_WS: + i -= 1 + del tokens[i+1:] + return tokens + + + # ---------------------------------------------------------------------- + # collect_args() + # + # Collects comma separated arguments from a list of tokens. The arguments + # must be enclosed in parenthesis. Returns a tuple (tokencount,args,positions) + # where tokencount is the number of tokens consumed, args is a list of arguments, + # and positions is a list of integers containing the starting index of each + # argument. Each argument is represented by a list of tokens. + # + # When collecting arguments, leading and trailing whitespace is removed + # from each argument. + # + # This function properly handles nested parenthesis and commas---these do not + # define new arguments. + # ---------------------------------------------------------------------- + + def collect_args(self,tokenlist): + args = [] + positions = [] + current_arg = [] + nesting = 1 + tokenlen = len(tokenlist) + + # Search for the opening '('. + i = 0 + while (i < tokenlen) and (tokenlist[i].type in self.t_WS): + i += 1 + + if (i < tokenlen) and (tokenlist[i].value == '('): + positions.append(i+1) + else: + self.error(self.source,tokenlist[0].lineno,"Missing '(' in macro arguments") + return 0, [], [] + + i += 1 + + while i < tokenlen: + t = tokenlist[i] + if t.value == '(': + current_arg.append(t) + nesting += 1 + elif t.value == ')': + nesting -= 1 + if nesting == 0: + if current_arg: + args.append(self.tokenstrip(current_arg)) + positions.append(i) + return i+1,args,positions + current_arg.append(t) + elif t.value == ',' and nesting == 1: + args.append(self.tokenstrip(current_arg)) + positions.append(i+1) + current_arg = [] + else: + current_arg.append(t) + i += 1 + + # Missing end argument + self.error(self.source,tokenlist[-1].lineno,"Missing ')' in macro arguments") + return 0, [],[] + + # ---------------------------------------------------------------------- + # macro_prescan() + # + # Examine the macro value (token sequence) and identify patch points + # This is used to speed up macro expansion later on---we'll know + # right away where to apply patches to the value to form the expansion + # ---------------------------------------------------------------------- + + def macro_prescan(self,macro): + macro.patch = [] # Standard macro arguments + macro.str_patch = [] # String conversion expansion + macro.var_comma_patch = [] # Variadic macro comma patch + i = 0 + while i < len(macro.value): + if macro.value[i].type == self.t_ID and macro.value[i].value in macro.arglist: + argnum = macro.arglist.index(macro.value[i].value) + # Conversion of argument to a string + if i > 0 and macro.value[i-1].value == '#': + macro.value[i] = copy.copy(macro.value[i]) + macro.value[i].type = self.t_STRING + del macro.value[i-1] + macro.str_patch.append((argnum,i-1)) + continue + # Concatenation + elif (i > 0 and macro.value[i-1].value == '##'): + macro.patch.append(('c',argnum,i-1)) + del macro.value[i-1] + continue + elif ((i+1) < len(macro.value) and macro.value[i+1].value == '##'): + macro.patch.append(('c',argnum,i)) + i += 1 + continue + # Standard expansion + else: + macro.patch.append(('e',argnum,i)) + elif macro.value[i].value == '##': + if macro.variadic and (i > 0) and (macro.value[i-1].value == ',') and \ + ((i+1) < len(macro.value)) and (macro.value[i+1].type == self.t_ID) and \ + (macro.value[i+1].value == macro.vararg): + macro.var_comma_patch.append(i-1) + i += 1 + macro.patch.sort(key=lambda x: x[2],reverse=True) + + # ---------------------------------------------------------------------- + # macro_expand_args() + # + # Given a Macro and list of arguments (each a token list), this method + # returns an expanded version of a macro. The return value is a token sequence + # representing the replacement macro tokens + # ---------------------------------------------------------------------- + + def macro_expand_args(self,macro,args): + # Make a copy of the macro token sequence + rep = [copy.copy(_x) for _x in macro.value] + + # Make string expansion patches. These do not alter the length of the replacement sequence + + str_expansion = {} + for argnum, i in macro.str_patch: + if argnum not in str_expansion: + str_expansion[argnum] = ('"%s"' % "".join([x.value for x in args[argnum]])).replace("\\","\\\\") + rep[i] = copy.copy(rep[i]) + rep[i].value = str_expansion[argnum] + + # Make the variadic macro comma patch. If the variadic macro argument is empty, we get rid + comma_patch = False + if macro.variadic and not args[-1]: + for i in macro.var_comma_patch: + rep[i] = None + comma_patch = True + + # Make all other patches. The order of these matters. It is assumed that the patch list + # has been sorted in reverse order of patch location since replacements will cause the + # size of the replacement sequence to expand from the patch point. + + expanded = { } + for ptype, argnum, i in macro.patch: + # Concatenation. Argument is left unexpanded + if ptype == 'c': + rep[i:i+1] = args[argnum] + # Normal expansion. Argument is macro expanded first + elif ptype == 'e': + if argnum not in expanded: + expanded[argnum] = self.expand_macros(args[argnum]) + rep[i:i+1] = expanded[argnum] + + # Get rid of removed comma if necessary + if comma_patch: + rep = [_i for _i in rep if _i] + + return rep + + + # ---------------------------------------------------------------------- + # expand_macros() + # + # Given a list of tokens, this function performs macro expansion. + # The expanded argument is a dictionary that contains macros already + # expanded. This is used to prevent infinite recursion. + # ---------------------------------------------------------------------- + + def expand_macros(self,tokens,expanded=None): + if expanded is None: + expanded = {} + i = 0 + while i < len(tokens): + t = tokens[i] + if t.type == self.t_ID: + if t.value in self.macros and t.value not in expanded: + # Yes, we found a macro match + expanded[t.value] = True + + m = self.macros[t.value] + if not m.arglist: + # A simple macro + ex = self.expand_macros([copy.copy(_x) for _x in m.value],expanded) + for e in ex: + e.lineno = t.lineno + tokens[i:i+1] = ex + i += len(ex) + else: + # A macro with arguments + j = i + 1 + while j < len(tokens) and tokens[j].type in self.t_WS: + j += 1 + if tokens[j].value == '(': + tokcount,args,positions = self.collect_args(tokens[j:]) + if not m.variadic and len(args) != len(m.arglist): + self.error(self.source,t.lineno,"Macro %s requires %d arguments" % (t.value,len(m.arglist))) + i = j + tokcount + elif m.variadic and len(args) < len(m.arglist)-1: + if len(m.arglist) > 2: + self.error(self.source,t.lineno,"Macro %s must have at least %d arguments" % (t.value, len(m.arglist)-1)) + else: + self.error(self.source,t.lineno,"Macro %s must have at least %d argument" % (t.value, len(m.arglist)-1)) + i = j + tokcount + else: + if m.variadic: + if len(args) == len(m.arglist)-1: + args.append([]) + else: + args[len(m.arglist)-1] = tokens[j+positions[len(m.arglist)-1]:j+tokcount-1] + del args[len(m.arglist):] + + # Get macro replacement text + rep = self.macro_expand_args(m,args) + rep = self.expand_macros(rep,expanded) + for r in rep: + r.lineno = t.lineno + tokens[i:j+tokcount] = rep + i += len(rep) + del expanded[t.value] + continue + elif t.value == '__LINE__': + t.type = self.t_INTEGER + t.value = self.t_INTEGER_TYPE(t.lineno) + + i += 1 + return tokens + + # ---------------------------------------------------------------------- + # evalexpr() + # + # Evaluate an expression token sequence for the purposes of evaluating + # integral expressions. + # ---------------------------------------------------------------------- + + def evalexpr(self,tokens): + # tokens = tokenize(line) + # Search for defined macros + i = 0 + while i < len(tokens): + if tokens[i].type == self.t_ID and tokens[i].value == 'defined': + j = i + 1 + needparen = False + result = "0L" + while j < len(tokens): + if tokens[j].type in self.t_WS: + j += 1 + continue + elif tokens[j].type == self.t_ID: + if tokens[j].value in self.macros: + result = "1L" + else: + result = "0L" + if not needparen: break + elif tokens[j].value == '(': + needparen = True + elif tokens[j].value == ')': + break + else: + self.error(self.source,tokens[i].lineno,"Malformed defined()") + j += 1 + tokens[i].type = self.t_INTEGER + tokens[i].value = self.t_INTEGER_TYPE(result) + del tokens[i+1:j+1] + i += 1 + tokens = self.expand_macros(tokens) + for i,t in enumerate(tokens): + if t.type == self.t_ID: + tokens[i] = copy.copy(t) + tokens[i].type = self.t_INTEGER + tokens[i].value = self.t_INTEGER_TYPE("0L") + elif t.type == self.t_INTEGER: + tokens[i] = copy.copy(t) + # Strip off any trailing suffixes + tokens[i].value = str(tokens[i].value) + while tokens[i].value[-1] not in "0123456789abcdefABCDEF": + tokens[i].value = tokens[i].value[:-1] + + expr = "".join([str(x.value) for x in tokens]) + expr = expr.replace("&&"," and ") + expr = expr.replace("||"," or ") + expr = expr.replace("!"," not ") + try: + result = eval(expr) + except Exception: + self.error(self.source,tokens[0].lineno,"Couldn't evaluate expression") + result = 0 + return result + + # ---------------------------------------------------------------------- + # parsegen() + # + # Parse an input string/ + # ---------------------------------------------------------------------- + def parsegen(self,input,source=None): + + # Replace trigraph sequences + t = trigraph(input) + lines = self.group_lines(t) + + if not source: + source = "" + + self.define("__FILE__ \"%s\"" % source) + + self.source = source + chunk = [] + enable = True + iftrigger = False + ifstack = [] + + for x in lines: + for i,tok in enumerate(x): + if tok.type not in self.t_WS: break + if tok.value == '#': + # Preprocessor directive + + # insert necessary whitespace instead of eaten tokens + for tok in x: + if tok.type in self.t_WS and '\n' in tok.value: + chunk.append(tok) + + dirtokens = self.tokenstrip(x[i+1:]) + if dirtokens: + name = dirtokens[0].value + args = self.tokenstrip(dirtokens[1:]) + else: + name = "" + args = [] + + if name == 'define': + if enable: + for tok in self.expand_macros(chunk): + yield tok + chunk = [] + self.define(args) + elif name == 'include': + if enable: + for tok in self.expand_macros(chunk): + yield tok + chunk = [] + oldfile = self.macros['__FILE__'] + for tok in self.include(args): + yield tok + self.macros['__FILE__'] = oldfile + self.source = source + elif name == 'undef': + if enable: + for tok in self.expand_macros(chunk): + yield tok + chunk = [] + self.undef(args) + elif name == 'ifdef': + ifstack.append((enable,iftrigger)) + if enable: + if not args[0].value in self.macros: + enable = False + iftrigger = False + else: + iftrigger = True + elif name == 'ifndef': + ifstack.append((enable,iftrigger)) + if enable: + if args[0].value in self.macros: + enable = False + iftrigger = False + else: + iftrigger = True + elif name == 'if': + ifstack.append((enable,iftrigger)) + if enable: + result = self.evalexpr(args) + if not result: + enable = False + iftrigger = False + else: + iftrigger = True + elif name == 'elif': + if ifstack: + if ifstack[-1][0]: # We only pay attention if outer "if" allows this + if enable: # If already true, we flip enable False + enable = False + elif not iftrigger: # If False, but not triggered yet, we'll check expression + result = self.evalexpr(args) + if result: + enable = True + iftrigger = True + else: + self.error(self.source,dirtokens[0].lineno,"Misplaced #elif") + + elif name == 'else': + if ifstack: + if ifstack[-1][0]: + if enable: + enable = False + elif not iftrigger: + enable = True + iftrigger = True + else: + self.error(self.source,dirtokens[0].lineno,"Misplaced #else") + + elif name == 'endif': + if ifstack: + enable,iftrigger = ifstack.pop() + else: + self.error(self.source,dirtokens[0].lineno,"Misplaced #endif") + else: + # Unknown preprocessor directive + pass + + else: + # Normal text + if enable: + chunk.extend(x) + + for tok in self.expand_macros(chunk): + yield tok + chunk = [] + + # ---------------------------------------------------------------------- + # include() + # + # Implementation of file-inclusion + # ---------------------------------------------------------------------- + + def include(self,tokens): + # Try to extract the filename and then process an include file + if not tokens: + return + if tokens: + if tokens[0].value != '<' and tokens[0].type != self.t_STRING: + tokens = self.expand_macros(tokens) + + if tokens[0].value == '<': + # Include <...> + i = 1 + while i < len(tokens): + if tokens[i].value == '>': + break + i += 1 + else: + print("Malformed #include <...>") + return + filename = "".join([x.value for x in tokens[1:i]]) + path = self.path + [""] + self.temp_path + elif tokens[0].type == self.t_STRING: + filename = tokens[0].value[1:-1] + path = self.temp_path + [""] + self.path + else: + print("Malformed #include statement") + return + for p in path: + iname = os.path.join(p,filename) + try: + data = open(iname,"r").read() + dname = os.path.dirname(iname) + if dname: + self.temp_path.insert(0,dname) + for tok in self.parsegen(data,filename): + yield tok + if dname: + del self.temp_path[0] + break + except IOError: + pass + else: + print("Couldn't find '%s'" % filename) + + # ---------------------------------------------------------------------- + # define() + # + # Define a new macro + # ---------------------------------------------------------------------- + + def define(self,tokens): + if isinstance(tokens,STRING_TYPES): + tokens = self.tokenize(tokens) + + linetok = tokens + try: + name = linetok[0] + if len(linetok) > 1: + mtype = linetok[1] + else: + mtype = None + if not mtype: + m = Macro(name.value,[]) + self.macros[name.value] = m + elif mtype.type in self.t_WS: + # A normal macro + m = Macro(name.value,self.tokenstrip(linetok[2:])) + self.macros[name.value] = m + elif mtype.value == '(': + # A macro with arguments + tokcount, args, positions = self.collect_args(linetok[1:]) + variadic = False + for a in args: + if variadic: + print("No more arguments may follow a variadic argument") + break + astr = "".join([str(_i.value) for _i in a]) + if astr == "...": + variadic = True + a[0].type = self.t_ID + a[0].value = '__VA_ARGS__' + variadic = True + del a[1:] + continue + elif astr[-3:] == "..." and a[0].type == self.t_ID: + variadic = True + del a[1:] + # If, for some reason, "." is part of the identifier, strip off the name for the purposes + # of macro expansion + if a[0].value[-3:] == '...': + a[0].value = a[0].value[:-3] + continue + if len(a) > 1 or a[0].type != self.t_ID: + print("Invalid macro argument") + break + else: + mvalue = self.tokenstrip(linetok[1+tokcount:]) + i = 0 + while i < len(mvalue): + if i+1 < len(mvalue): + if mvalue[i].type in self.t_WS and mvalue[i+1].value == '##': + del mvalue[i] + continue + elif mvalue[i].value == '##' and mvalue[i+1].type in self.t_WS: + del mvalue[i+1] + i += 1 + m = Macro(name.value,mvalue,[x[0].value for x in args],variadic) + self.macro_prescan(m) + self.macros[name.value] = m + else: + print("Bad macro definition") + except LookupError: + print("Bad macro definition") + + # ---------------------------------------------------------------------- + # undef() + # + # Undefine a macro + # ---------------------------------------------------------------------- + + def undef(self,tokens): + id = tokens[0].value + try: + del self.macros[id] + except LookupError: + pass + + # ---------------------------------------------------------------------- + # parse() + # + # Parse input text. + # ---------------------------------------------------------------------- + def parse(self,input,source=None,ignore={}): + self.ignore = ignore + self.parser = self.parsegen(input,source) + + # ---------------------------------------------------------------------- + # token() + # + # Method to return individual tokens + # ---------------------------------------------------------------------- + def token(self): + try: + while True: + tok = next(self.parser) + if tok.type not in self.ignore: return tok + except StopIteration: + self.parser = None + return None + +if __name__ == '__main__': + import ply.lex as lex + lexer = lex.lex() + + # Run a preprocessor + import sys + f = open(sys.argv[1]) + input = f.read() + + p = Preprocessor(lexer) + p.parse(input,sys.argv[1]) + while True: + tok = p.token() + if not tok: break + print(p.source, tok) diff --git a/gestao_raul/Lib/site-packages/pycparser/ply/ctokens.py b/gestao_raul/Lib/site-packages/pycparser/ply/ctokens.py new file mode 100644 index 0000000..f6f6952 --- /dev/null +++ b/gestao_raul/Lib/site-packages/pycparser/ply/ctokens.py @@ -0,0 +1,133 @@ +# ---------------------------------------------------------------------- +# ctokens.py +# +# Token specifications for symbols in ANSI C and C++. This file is +# meant to be used as a library in other tokenizers. +# ---------------------------------------------------------------------- + +# Reserved words + +tokens = [ + # Literals (identifier, integer constant, float constant, string constant, char const) + 'ID', 'TYPEID', 'INTEGER', 'FLOAT', 'STRING', 'CHARACTER', + + # Operators (+,-,*,/,%,|,&,~,^,<<,>>, ||, &&, !, <, <=, >, >=, ==, !=) + 'PLUS', 'MINUS', 'TIMES', 'DIVIDE', 'MODULO', + 'OR', 'AND', 'NOT', 'XOR', 'LSHIFT', 'RSHIFT', + 'LOR', 'LAND', 'LNOT', + 'LT', 'LE', 'GT', 'GE', 'EQ', 'NE', + + # Assignment (=, *=, /=, %=, +=, -=, <<=, >>=, &=, ^=, |=) + 'EQUALS', 'TIMESEQUAL', 'DIVEQUAL', 'MODEQUAL', 'PLUSEQUAL', 'MINUSEQUAL', + 'LSHIFTEQUAL','RSHIFTEQUAL', 'ANDEQUAL', 'XOREQUAL', 'OREQUAL', + + # Increment/decrement (++,--) + 'INCREMENT', 'DECREMENT', + + # Structure dereference (->) + 'ARROW', + + # Ternary operator (?) + 'TERNARY', + + # Delimeters ( ) [ ] { } , . ; : + 'LPAREN', 'RPAREN', + 'LBRACKET', 'RBRACKET', + 'LBRACE', 'RBRACE', + 'COMMA', 'PERIOD', 'SEMI', 'COLON', + + # Ellipsis (...) + 'ELLIPSIS', +] + +# Operators +t_PLUS = r'\+' +t_MINUS = r'-' +t_TIMES = r'\*' +t_DIVIDE = r'/' +t_MODULO = r'%' +t_OR = r'\|' +t_AND = r'&' +t_NOT = r'~' +t_XOR = r'\^' +t_LSHIFT = r'<<' +t_RSHIFT = r'>>' +t_LOR = r'\|\|' +t_LAND = r'&&' +t_LNOT = r'!' +t_LT = r'<' +t_GT = r'>' +t_LE = r'<=' +t_GE = r'>=' +t_EQ = r'==' +t_NE = r'!=' + +# Assignment operators + +t_EQUALS = r'=' +t_TIMESEQUAL = r'\*=' +t_DIVEQUAL = r'/=' +t_MODEQUAL = r'%=' +t_PLUSEQUAL = r'\+=' +t_MINUSEQUAL = r'-=' +t_LSHIFTEQUAL = r'<<=' +t_RSHIFTEQUAL = r'>>=' +t_ANDEQUAL = r'&=' +t_OREQUAL = r'\|=' +t_XOREQUAL = r'\^=' + +# Increment/decrement +t_INCREMENT = r'\+\+' +t_DECREMENT = r'--' + +# -> +t_ARROW = r'->' + +# ? +t_TERNARY = r'\?' + +# Delimeters +t_LPAREN = r'\(' +t_RPAREN = r'\)' +t_LBRACKET = r'\[' +t_RBRACKET = r'\]' +t_LBRACE = r'\{' +t_RBRACE = r'\}' +t_COMMA = r',' +t_PERIOD = r'\.' +t_SEMI = r';' +t_COLON = r':' +t_ELLIPSIS = r'\.\.\.' + +# Identifiers +t_ID = r'[A-Za-z_][A-Za-z0-9_]*' + +# Integer literal +t_INTEGER = r'\d+([uU]|[lL]|[uU][lL]|[lL][uU])?' + +# Floating literal +t_FLOAT = r'((\d+)(\.\d+)(e(\+|-)?(\d+))? | (\d+)e(\+|-)?(\d+))([lL]|[fF])?' + +# String literal +t_STRING = r'\"([^\\\n]|(\\.))*?\"' + +# Character constant 'c' or L'c' +t_CHARACTER = r'(L)?\'([^\\\n]|(\\.))*?\'' + +# Comment (C-Style) +def t_COMMENT(t): + r'/\*(.|\n)*?\*/' + t.lexer.lineno += t.value.count('\n') + return t + +# Comment (C++-Style) +def t_CPPCOMMENT(t): + r'//.*\n' + t.lexer.lineno += 1 + return t + + + + + + diff --git a/gestao_raul/Lib/site-packages/pycparser/ply/lex.py b/gestao_raul/Lib/site-packages/pycparser/ply/lex.py new file mode 100644 index 0000000..dfc5139 --- /dev/null +++ b/gestao_raul/Lib/site-packages/pycparser/ply/lex.py @@ -0,0 +1,1099 @@ +# ----------------------------------------------------------------------------- +# ply: lex.py +# +# Copyright (C) 2001-2017 +# David M. Beazley (Dabeaz LLC) +# 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 David Beazley or Dabeaz LLC 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. +# ----------------------------------------------------------------------------- + +__version__ = '3.10' +__tabversion__ = '3.10' + +import re +import sys +import types +import copy +import os +import inspect + +# This tuple contains known string types +try: + # Python 2.6 + StringTypes = (types.StringType, types.UnicodeType) +except AttributeError: + # Python 3.0 + StringTypes = (str, bytes) + +# This regular expression is used to match valid token names +_is_identifier = re.compile(r'^[a-zA-Z0-9_]+$') + +# Exception thrown when invalid token encountered and no default error +# handler is defined. +class LexError(Exception): + def __init__(self, message, s): + self.args = (message,) + self.text = s + + +# Token class. This class is used to represent the tokens produced. +class LexToken(object): + def __str__(self): + return 'LexToken(%s,%r,%d,%d)' % (self.type, self.value, self.lineno, self.lexpos) + + def __repr__(self): + return str(self) + + +# This object is a stand-in for a logging object created by the +# logging module. + +class PlyLogger(object): + def __init__(self, f): + self.f = f + + def critical(self, msg, *args, **kwargs): + self.f.write((msg % args) + '\n') + + def warning(self, msg, *args, **kwargs): + self.f.write('WARNING: ' + (msg % args) + '\n') + + def error(self, msg, *args, **kwargs): + self.f.write('ERROR: ' + (msg % args) + '\n') + + info = critical + debug = critical + + +# Null logger is used when no output is generated. Does nothing. +class NullLogger(object): + def __getattribute__(self, name): + return self + + def __call__(self, *args, **kwargs): + return self + + +# ----------------------------------------------------------------------------- +# === Lexing Engine === +# +# The following Lexer class implements the lexer runtime. There are only +# a few public methods and attributes: +# +# input() - Store a new string in the lexer +# token() - Get the next token +# clone() - Clone the lexer +# +# lineno - Current line number +# lexpos - Current position in the input string +# ----------------------------------------------------------------------------- + +class Lexer: + def __init__(self): + self.lexre = None # Master regular expression. This is a list of + # tuples (re, findex) where re is a compiled + # regular expression and findex is a list + # mapping regex group numbers to rules + self.lexretext = None # Current regular expression strings + self.lexstatere = {} # Dictionary mapping lexer states to master regexs + self.lexstateretext = {} # Dictionary mapping lexer states to regex strings + self.lexstaterenames = {} # Dictionary mapping lexer states to symbol names + self.lexstate = 'INITIAL' # Current lexer state + self.lexstatestack = [] # Stack of lexer states + self.lexstateinfo = None # State information + self.lexstateignore = {} # Dictionary of ignored characters for each state + self.lexstateerrorf = {} # Dictionary of error functions for each state + self.lexstateeoff = {} # Dictionary of eof functions for each state + self.lexreflags = 0 # Optional re compile flags + self.lexdata = None # Actual input data (as a string) + self.lexpos = 0 # Current position in input text + self.lexlen = 0 # Length of the input text + self.lexerrorf = None # Error rule (if any) + self.lexeoff = None # EOF rule (if any) + self.lextokens = None # List of valid tokens + self.lexignore = '' # Ignored characters + self.lexliterals = '' # Literal characters that can be passed through + self.lexmodule = None # Module + self.lineno = 1 # Current line number + self.lexoptimize = False # Optimized mode + + def clone(self, object=None): + c = copy.copy(self) + + # If the object parameter has been supplied, it means we are attaching the + # lexer to a new object. In this case, we have to rebind all methods in + # the lexstatere and lexstateerrorf tables. + + if object: + newtab = {} + for key, ritem in self.lexstatere.items(): + newre = [] + for cre, findex in ritem: + newfindex = [] + for f in findex: + if not f or not f[0]: + newfindex.append(f) + continue + newfindex.append((getattr(object, f[0].__name__), f[1])) + newre.append((cre, newfindex)) + newtab[key] = newre + c.lexstatere = newtab + c.lexstateerrorf = {} + for key, ef in self.lexstateerrorf.items(): + c.lexstateerrorf[key] = getattr(object, ef.__name__) + c.lexmodule = object + return c + + # ------------------------------------------------------------ + # writetab() - Write lexer information to a table file + # ------------------------------------------------------------ + def writetab(self, lextab, outputdir=''): + if isinstance(lextab, types.ModuleType): + raise IOError("Won't overwrite existing lextab module") + basetabmodule = lextab.split('.')[-1] + filename = os.path.join(outputdir, basetabmodule) + '.py' + with open(filename, 'w') as tf: + tf.write('# %s.py. This file automatically created by PLY (version %s). Don\'t edit!\n' % (basetabmodule, __version__)) + tf.write('_tabversion = %s\n' % repr(__tabversion__)) + tf.write('_lextokens = set(%s)\n' % repr(tuple(sorted(self.lextokens)))) + tf.write('_lexreflags = %s\n' % repr(self.lexreflags)) + tf.write('_lexliterals = %s\n' % repr(self.lexliterals)) + tf.write('_lexstateinfo = %s\n' % repr(self.lexstateinfo)) + + # Rewrite the lexstatere table, replacing function objects with function names + tabre = {} + for statename, lre in self.lexstatere.items(): + titem = [] + for (pat, func), retext, renames in zip(lre, self.lexstateretext[statename], self.lexstaterenames[statename]): + titem.append((retext, _funcs_to_names(func, renames))) + tabre[statename] = titem + + tf.write('_lexstatere = %s\n' % repr(tabre)) + tf.write('_lexstateignore = %s\n' % repr(self.lexstateignore)) + + taberr = {} + for statename, ef in self.lexstateerrorf.items(): + taberr[statename] = ef.__name__ if ef else None + tf.write('_lexstateerrorf = %s\n' % repr(taberr)) + + tabeof = {} + for statename, ef in self.lexstateeoff.items(): + tabeof[statename] = ef.__name__ if ef else None + tf.write('_lexstateeoff = %s\n' % repr(tabeof)) + + # ------------------------------------------------------------ + # readtab() - Read lexer information from a tab file + # ------------------------------------------------------------ + def readtab(self, tabfile, fdict): + if isinstance(tabfile, types.ModuleType): + lextab = tabfile + else: + exec('import %s' % tabfile) + lextab = sys.modules[tabfile] + + if getattr(lextab, '_tabversion', '0.0') != __tabversion__: + raise ImportError('Inconsistent PLY version') + + self.lextokens = lextab._lextokens + self.lexreflags = lextab._lexreflags + self.lexliterals = lextab._lexliterals + self.lextokens_all = self.lextokens | set(self.lexliterals) + self.lexstateinfo = lextab._lexstateinfo + self.lexstateignore = lextab._lexstateignore + self.lexstatere = {} + self.lexstateretext = {} + for statename, lre in lextab._lexstatere.items(): + titem = [] + txtitem = [] + for pat, func_name in lre: + titem.append((re.compile(pat, lextab._lexreflags), _names_to_funcs(func_name, fdict))) + + self.lexstatere[statename] = titem + self.lexstateretext[statename] = txtitem + + self.lexstateerrorf = {} + for statename, ef in lextab._lexstateerrorf.items(): + self.lexstateerrorf[statename] = fdict[ef] + + self.lexstateeoff = {} + for statename, ef in lextab._lexstateeoff.items(): + self.lexstateeoff[statename] = fdict[ef] + + self.begin('INITIAL') + + # ------------------------------------------------------------ + # input() - Push a new string into the lexer + # ------------------------------------------------------------ + def input(self, s): + # Pull off the first character to see if s looks like a string + c = s[:1] + if not isinstance(c, StringTypes): + raise ValueError('Expected a string') + self.lexdata = s + self.lexpos = 0 + self.lexlen = len(s) + + # ------------------------------------------------------------ + # begin() - Changes the lexing state + # ------------------------------------------------------------ + def begin(self, state): + if state not in self.lexstatere: + raise ValueError('Undefined state') + self.lexre = self.lexstatere[state] + self.lexretext = self.lexstateretext[state] + self.lexignore = self.lexstateignore.get(state, '') + self.lexerrorf = self.lexstateerrorf.get(state, None) + self.lexeoff = self.lexstateeoff.get(state, None) + self.lexstate = state + + # ------------------------------------------------------------ + # push_state() - Changes the lexing state and saves old on stack + # ------------------------------------------------------------ + def push_state(self, state): + self.lexstatestack.append(self.lexstate) + self.begin(state) + + # ------------------------------------------------------------ + # pop_state() - Restores the previous state + # ------------------------------------------------------------ + def pop_state(self): + self.begin(self.lexstatestack.pop()) + + # ------------------------------------------------------------ + # current_state() - Returns the current lexing state + # ------------------------------------------------------------ + def current_state(self): + return self.lexstate + + # ------------------------------------------------------------ + # skip() - Skip ahead n characters + # ------------------------------------------------------------ + def skip(self, n): + self.lexpos += n + + # ------------------------------------------------------------ + # opttoken() - Return the next token from the Lexer + # + # Note: This function has been carefully implemented to be as fast + # as possible. Don't make changes unless you really know what + # you are doing + # ------------------------------------------------------------ + def token(self): + # Make local copies of frequently referenced attributes + lexpos = self.lexpos + lexlen = self.lexlen + lexignore = self.lexignore + lexdata = self.lexdata + + while lexpos < lexlen: + # This code provides some short-circuit code for whitespace, tabs, and other ignored characters + if lexdata[lexpos] in lexignore: + lexpos += 1 + continue + + # Look for a regular expression match + for lexre, lexindexfunc in self.lexre: + m = lexre.match(lexdata, lexpos) + if not m: + continue + + # Create a token for return + tok = LexToken() + tok.value = m.group() + tok.lineno = self.lineno + tok.lexpos = lexpos + + i = m.lastindex + func, tok.type = lexindexfunc[i] + + if not func: + # If no token type was set, it's an ignored token + if tok.type: + self.lexpos = m.end() + return tok + else: + lexpos = m.end() + break + + lexpos = m.end() + + # If token is processed by a function, call it + + tok.lexer = self # Set additional attributes useful in token rules + self.lexmatch = m + self.lexpos = lexpos + + newtok = func(tok) + + # Every function must return a token, if nothing, we just move to next token + if not newtok: + lexpos = self.lexpos # This is here in case user has updated lexpos. + lexignore = self.lexignore # This is here in case there was a state change + break + + # Verify type of the token. If not in the token map, raise an error + if not self.lexoptimize: + if newtok.type not in self.lextokens_all: + raise LexError("%s:%d: Rule '%s' returned an unknown token type '%s'" % ( + func.__code__.co_filename, func.__code__.co_firstlineno, + func.__name__, newtok.type), lexdata[lexpos:]) + + return newtok + else: + # No match, see if in literals + if lexdata[lexpos] in self.lexliterals: + tok = LexToken() + tok.value = lexdata[lexpos] + tok.lineno = self.lineno + tok.type = tok.value + tok.lexpos = lexpos + self.lexpos = lexpos + 1 + return tok + + # No match. Call t_error() if defined. + if self.lexerrorf: + tok = LexToken() + tok.value = self.lexdata[lexpos:] + tok.lineno = self.lineno + tok.type = 'error' + tok.lexer = self + tok.lexpos = lexpos + self.lexpos = lexpos + newtok = self.lexerrorf(tok) + if lexpos == self.lexpos: + # Error method didn't change text position at all. This is an error. + raise LexError("Scanning error. Illegal character '%s'" % (lexdata[lexpos]), lexdata[lexpos:]) + lexpos = self.lexpos + if not newtok: + continue + return newtok + + self.lexpos = lexpos + raise LexError("Illegal character '%s' at index %d" % (lexdata[lexpos], lexpos), lexdata[lexpos:]) + + if self.lexeoff: + tok = LexToken() + tok.type = 'eof' + tok.value = '' + tok.lineno = self.lineno + tok.lexpos = lexpos + tok.lexer = self + self.lexpos = lexpos + newtok = self.lexeoff(tok) + return newtok + + self.lexpos = lexpos + 1 + if self.lexdata is None: + raise RuntimeError('No input string given with input()') + return None + + # Iterator interface + def __iter__(self): + return self + + def next(self): + t = self.token() + if t is None: + raise StopIteration + return t + + __next__ = next + +# ----------------------------------------------------------------------------- +# ==== Lex Builder === +# +# The functions and classes below are used to collect lexing information +# and build a Lexer object from it. +# ----------------------------------------------------------------------------- + +# ----------------------------------------------------------------------------- +# _get_regex(func) +# +# Returns the regular expression assigned to a function either as a doc string +# or as a .regex attribute attached by the @TOKEN decorator. +# ----------------------------------------------------------------------------- +def _get_regex(func): + return getattr(func, 'regex', func.__doc__) + +# ----------------------------------------------------------------------------- +# get_caller_module_dict() +# +# This function returns a dictionary containing all of the symbols defined within +# a caller further down the call stack. This is used to get the environment +# associated with the yacc() call if none was provided. +# ----------------------------------------------------------------------------- +def get_caller_module_dict(levels): + f = sys._getframe(levels) + ldict = f.f_globals.copy() + if f.f_globals != f.f_locals: + ldict.update(f.f_locals) + return ldict + +# ----------------------------------------------------------------------------- +# _funcs_to_names() +# +# Given a list of regular expression functions, this converts it to a list +# suitable for output to a table file +# ----------------------------------------------------------------------------- +def _funcs_to_names(funclist, namelist): + result = [] + for f, name in zip(funclist, namelist): + if f and f[0]: + result.append((name, f[1])) + else: + result.append(f) + return result + +# ----------------------------------------------------------------------------- +# _names_to_funcs() +# +# Given a list of regular expression function names, this converts it back to +# functions. +# ----------------------------------------------------------------------------- +def _names_to_funcs(namelist, fdict): + result = [] + for n in namelist: + if n and n[0]: + result.append((fdict[n[0]], n[1])) + else: + result.append(n) + return result + +# ----------------------------------------------------------------------------- +# _form_master_re() +# +# This function takes a list of all of the regex components and attempts to +# form the master regular expression. Given limitations in the Python re +# module, it may be necessary to break the master regex into separate expressions. +# ----------------------------------------------------------------------------- +def _form_master_re(relist, reflags, ldict, toknames): + if not relist: + return [] + regex = '|'.join(relist) + try: + lexre = re.compile(regex, reflags) + + # Build the index to function map for the matching engine + lexindexfunc = [None] * (max(lexre.groupindex.values()) + 1) + lexindexnames = lexindexfunc[:] + + for f, i in lexre.groupindex.items(): + handle = ldict.get(f, None) + if type(handle) in (types.FunctionType, types.MethodType): + lexindexfunc[i] = (handle, toknames[f]) + lexindexnames[i] = f + elif handle is not None: + lexindexnames[i] = f + if f.find('ignore_') > 0: + lexindexfunc[i] = (None, None) + else: + lexindexfunc[i] = (None, toknames[f]) + + return [(lexre, lexindexfunc)], [regex], [lexindexnames] + except Exception: + m = int(len(relist)/2) + if m == 0: + m = 1 + llist, lre, lnames = _form_master_re(relist[:m], reflags, ldict, toknames) + rlist, rre, rnames = _form_master_re(relist[m:], reflags, ldict, toknames) + return (llist+rlist), (lre+rre), (lnames+rnames) + +# ----------------------------------------------------------------------------- +# def _statetoken(s,names) +# +# Given a declaration name s of the form "t_" and a dictionary whose keys are +# state names, this function returns a tuple (states,tokenname) where states +# is a tuple of state names and tokenname is the name of the token. For example, +# calling this with s = "t_foo_bar_SPAM" might return (('foo','bar'),'SPAM') +# ----------------------------------------------------------------------------- +def _statetoken(s, names): + nonstate = 1 + parts = s.split('_') + for i, part in enumerate(parts[1:], 1): + if part not in names and part != 'ANY': + break + + if i > 1: + states = tuple(parts[1:i]) + else: + states = ('INITIAL',) + + if 'ANY' in states: + states = tuple(names) + + tokenname = '_'.join(parts[i:]) + return (states, tokenname) + + +# ----------------------------------------------------------------------------- +# LexerReflect() +# +# This class represents information needed to build a lexer as extracted from a +# user's input file. +# ----------------------------------------------------------------------------- +class LexerReflect(object): + def __init__(self, ldict, log=None, reflags=0): + self.ldict = ldict + self.error_func = None + self.tokens = [] + self.reflags = reflags + self.stateinfo = {'INITIAL': 'inclusive'} + self.modules = set() + self.error = False + self.log = PlyLogger(sys.stderr) if log is None else log + + # Get all of the basic information + def get_all(self): + self.get_tokens() + self.get_literals() + self.get_states() + self.get_rules() + + # Validate all of the information + def validate_all(self): + self.validate_tokens() + self.validate_literals() + self.validate_rules() + return self.error + + # Get the tokens map + def get_tokens(self): + tokens = self.ldict.get('tokens', None) + if not tokens: + self.log.error('No token list is defined') + self.error = True + return + + if not isinstance(tokens, (list, tuple)): + self.log.error('tokens must be a list or tuple') + self.error = True + return + + if not tokens: + self.log.error('tokens is empty') + self.error = True + return + + self.tokens = tokens + + # Validate the tokens + def validate_tokens(self): + terminals = {} + for n in self.tokens: + if not _is_identifier.match(n): + self.log.error("Bad token name '%s'", n) + self.error = True + if n in terminals: + self.log.warning("Token '%s' multiply defined", n) + terminals[n] = 1 + + # Get the literals specifier + def get_literals(self): + self.literals = self.ldict.get('literals', '') + if not self.literals: + self.literals = '' + + # Validate literals + def validate_literals(self): + try: + for c in self.literals: + if not isinstance(c, StringTypes) or len(c) > 1: + self.log.error('Invalid literal %s. Must be a single character', repr(c)) + self.error = True + + except TypeError: + self.log.error('Invalid literals specification. literals must be a sequence of characters') + self.error = True + + def get_states(self): + self.states = self.ldict.get('states', None) + # Build statemap + if self.states: + if not isinstance(self.states, (tuple, list)): + self.log.error('states must be defined as a tuple or list') + self.error = True + else: + for s in self.states: + if not isinstance(s, tuple) or len(s) != 2: + self.log.error("Invalid state specifier %s. Must be a tuple (statename,'exclusive|inclusive')", repr(s)) + self.error = True + continue + name, statetype = s + if not isinstance(name, StringTypes): + self.log.error('State name %s must be a string', repr(name)) + self.error = True + continue + if not (statetype == 'inclusive' or statetype == 'exclusive'): + self.log.error("State type for state %s must be 'inclusive' or 'exclusive'", name) + self.error = True + continue + if name in self.stateinfo: + self.log.error("State '%s' already defined", name) + self.error = True + continue + self.stateinfo[name] = statetype + + # Get all of the symbols with a t_ prefix and sort them into various + # categories (functions, strings, error functions, and ignore characters) + + def get_rules(self): + tsymbols = [f for f in self.ldict if f[:2] == 't_'] + + # Now build up a list of functions and a list of strings + self.toknames = {} # Mapping of symbols to token names + self.funcsym = {} # Symbols defined as functions + self.strsym = {} # Symbols defined as strings + self.ignore = {} # Ignore strings by state + self.errorf = {} # Error functions by state + self.eoff = {} # EOF functions by state + + for s in self.stateinfo: + self.funcsym[s] = [] + self.strsym[s] = [] + + if len(tsymbols) == 0: + self.log.error('No rules of the form t_rulename are defined') + self.error = True + return + + for f in tsymbols: + t = self.ldict[f] + states, tokname = _statetoken(f, self.stateinfo) + self.toknames[f] = tokname + + if hasattr(t, '__call__'): + if tokname == 'error': + for s in states: + self.errorf[s] = t + elif tokname == 'eof': + for s in states: + self.eoff[s] = t + elif tokname == 'ignore': + line = t.__code__.co_firstlineno + file = t.__code__.co_filename + self.log.error("%s:%d: Rule '%s' must be defined as a string", file, line, t.__name__) + self.error = True + else: + for s in states: + self.funcsym[s].append((f, t)) + elif isinstance(t, StringTypes): + if tokname == 'ignore': + for s in states: + self.ignore[s] = t + if '\\' in t: + self.log.warning("%s contains a literal backslash '\\'", f) + + elif tokname == 'error': + self.log.error("Rule '%s' must be defined as a function", f) + self.error = True + else: + for s in states: + self.strsym[s].append((f, t)) + else: + self.log.error('%s not defined as a function or string', f) + self.error = True + + # Sort the functions by line number + for f in self.funcsym.values(): + f.sort(key=lambda x: x[1].__code__.co_firstlineno) + + # Sort the strings by regular expression length + for s in self.strsym.values(): + s.sort(key=lambda x: len(x[1]), reverse=True) + + # Validate all of the t_rules collected + def validate_rules(self): + for state in self.stateinfo: + # Validate all rules defined by functions + + for fname, f in self.funcsym[state]: + line = f.__code__.co_firstlineno + file = f.__code__.co_filename + module = inspect.getmodule(f) + self.modules.add(module) + + tokname = self.toknames[fname] + if isinstance(f, types.MethodType): + reqargs = 2 + else: + reqargs = 1 + nargs = f.__code__.co_argcount + if nargs > reqargs: + self.log.error("%s:%d: Rule '%s' has too many arguments", file, line, f.__name__) + self.error = True + continue + + if nargs < reqargs: + self.log.error("%s:%d: Rule '%s' requires an argument", file, line, f.__name__) + self.error = True + continue + + if not _get_regex(f): + self.log.error("%s:%d: No regular expression defined for rule '%s'", file, line, f.__name__) + self.error = True + continue + + try: + c = re.compile('(?P<%s>%s)' % (fname, _get_regex(f)), self.reflags) + if c.match(''): + self.log.error("%s:%d: Regular expression for rule '%s' matches empty string", file, line, f.__name__) + self.error = True + except re.error as e: + self.log.error("%s:%d: Invalid regular expression for rule '%s'. %s", file, line, f.__name__, e) + if '#' in _get_regex(f): + self.log.error("%s:%d. Make sure '#' in rule '%s' is escaped with '\\#'", file, line, f.__name__) + self.error = True + + # Validate all rules defined by strings + for name, r in self.strsym[state]: + tokname = self.toknames[name] + if tokname == 'error': + self.log.error("Rule '%s' must be defined as a function", name) + self.error = True + continue + + if tokname not in self.tokens and tokname.find('ignore_') < 0: + self.log.error("Rule '%s' defined for an unspecified token %s", name, tokname) + self.error = True + continue + + try: + c = re.compile('(?P<%s>%s)' % (name, r), self.reflags) + if (c.match('')): + self.log.error("Regular expression for rule '%s' matches empty string", name) + self.error = True + except re.error as e: + self.log.error("Invalid regular expression for rule '%s'. %s", name, e) + if '#' in r: + self.log.error("Make sure '#' in rule '%s' is escaped with '\\#'", name) + self.error = True + + if not self.funcsym[state] and not self.strsym[state]: + self.log.error("No rules defined for state '%s'", state) + self.error = True + + # Validate the error function + efunc = self.errorf.get(state, None) + if efunc: + f = efunc + line = f.__code__.co_firstlineno + file = f.__code__.co_filename + module = inspect.getmodule(f) + self.modules.add(module) + + if isinstance(f, types.MethodType): + reqargs = 2 + else: + reqargs = 1 + nargs = f.__code__.co_argcount + if nargs > reqargs: + self.log.error("%s:%d: Rule '%s' has too many arguments", file, line, f.__name__) + self.error = True + + if nargs < reqargs: + self.log.error("%s:%d: Rule '%s' requires an argument", file, line, f.__name__) + self.error = True + + for module in self.modules: + self.validate_module(module) + + # ----------------------------------------------------------------------------- + # validate_module() + # + # This checks to see if there are duplicated t_rulename() functions or strings + # in the parser input file. This is done using a simple regular expression + # match on each line in the source code of the given module. + # ----------------------------------------------------------------------------- + + def validate_module(self, module): + try: + lines, linen = inspect.getsourcelines(module) + except IOError: + return + + fre = re.compile(r'\s*def\s+(t_[a-zA-Z_0-9]*)\(') + sre = re.compile(r'\s*(t_[a-zA-Z_0-9]*)\s*=') + + counthash = {} + linen += 1 + for line in lines: + m = fre.match(line) + if not m: + m = sre.match(line) + if m: + name = m.group(1) + prev = counthash.get(name) + if not prev: + counthash[name] = linen + else: + filename = inspect.getsourcefile(module) + self.log.error('%s:%d: Rule %s redefined. Previously defined on line %d', filename, linen, name, prev) + self.error = True + linen += 1 + +# ----------------------------------------------------------------------------- +# lex(module) +# +# Build all of the regular expression rules from definitions in the supplied module +# ----------------------------------------------------------------------------- +def lex(module=None, object=None, debug=False, optimize=False, lextab='lextab', + reflags=int(re.VERBOSE), nowarn=False, outputdir=None, debuglog=None, errorlog=None): + + if lextab is None: + lextab = 'lextab' + + global lexer + + ldict = None + stateinfo = {'INITIAL': 'inclusive'} + lexobj = Lexer() + lexobj.lexoptimize = optimize + global token, input + + if errorlog is None: + errorlog = PlyLogger(sys.stderr) + + if debug: + if debuglog is None: + debuglog = PlyLogger(sys.stderr) + + # Get the module dictionary used for the lexer + if object: + module = object + + # Get the module dictionary used for the parser + if module: + _items = [(k, getattr(module, k)) for k in dir(module)] + ldict = dict(_items) + # If no __file__ attribute is available, try to obtain it from the __module__ instead + if '__file__' not in ldict: + ldict['__file__'] = sys.modules[ldict['__module__']].__file__ + else: + ldict = get_caller_module_dict(2) + + # Determine if the module is package of a package or not. + # If so, fix the tabmodule setting so that tables load correctly + pkg = ldict.get('__package__') + if pkg and isinstance(lextab, str): + if '.' not in lextab: + lextab = pkg + '.' + lextab + + # Collect parser information from the dictionary + linfo = LexerReflect(ldict, log=errorlog, reflags=reflags) + linfo.get_all() + if not optimize: + if linfo.validate_all(): + raise SyntaxError("Can't build lexer") + + if optimize and lextab: + try: + lexobj.readtab(lextab, ldict) + token = lexobj.token + input = lexobj.input + lexer = lexobj + return lexobj + + except ImportError: + pass + + # Dump some basic debugging information + if debug: + debuglog.info('lex: tokens = %r', linfo.tokens) + debuglog.info('lex: literals = %r', linfo.literals) + debuglog.info('lex: states = %r', linfo.stateinfo) + + # Build a dictionary of valid token names + lexobj.lextokens = set() + for n in linfo.tokens: + lexobj.lextokens.add(n) + + # Get literals specification + if isinstance(linfo.literals, (list, tuple)): + lexobj.lexliterals = type(linfo.literals[0])().join(linfo.literals) + else: + lexobj.lexliterals = linfo.literals + + lexobj.lextokens_all = lexobj.lextokens | set(lexobj.lexliterals) + + # Get the stateinfo dictionary + stateinfo = linfo.stateinfo + + regexs = {} + # Build the master regular expressions + for state in stateinfo: + regex_list = [] + + # Add rules defined by functions first + for fname, f in linfo.funcsym[state]: + line = f.__code__.co_firstlineno + file = f.__code__.co_filename + regex_list.append('(?P<%s>%s)' % (fname, _get_regex(f))) + if debug: + debuglog.info("lex: Adding rule %s -> '%s' (state '%s')", fname, _get_regex(f), state) + + # Now add all of the simple rules + for name, r in linfo.strsym[state]: + regex_list.append('(?P<%s>%s)' % (name, r)) + if debug: + debuglog.info("lex: Adding rule %s -> '%s' (state '%s')", name, r, state) + + regexs[state] = regex_list + + # Build the master regular expressions + + if debug: + debuglog.info('lex: ==== MASTER REGEXS FOLLOW ====') + + for state in regexs: + lexre, re_text, re_names = _form_master_re(regexs[state], reflags, ldict, linfo.toknames) + lexobj.lexstatere[state] = lexre + lexobj.lexstateretext[state] = re_text + lexobj.lexstaterenames[state] = re_names + if debug: + for i, text in enumerate(re_text): + debuglog.info("lex: state '%s' : regex[%d] = '%s'", state, i, text) + + # For inclusive states, we need to add the regular expressions from the INITIAL state + for state, stype in stateinfo.items(): + if state != 'INITIAL' and stype == 'inclusive': + lexobj.lexstatere[state].extend(lexobj.lexstatere['INITIAL']) + lexobj.lexstateretext[state].extend(lexobj.lexstateretext['INITIAL']) + lexobj.lexstaterenames[state].extend(lexobj.lexstaterenames['INITIAL']) + + lexobj.lexstateinfo = stateinfo + lexobj.lexre = lexobj.lexstatere['INITIAL'] + lexobj.lexretext = lexobj.lexstateretext['INITIAL'] + lexobj.lexreflags = reflags + + # Set up ignore variables + lexobj.lexstateignore = linfo.ignore + lexobj.lexignore = lexobj.lexstateignore.get('INITIAL', '') + + # Set up error functions + lexobj.lexstateerrorf = linfo.errorf + lexobj.lexerrorf = linfo.errorf.get('INITIAL', None) + if not lexobj.lexerrorf: + errorlog.warning('No t_error rule is defined') + + # Set up eof functions + lexobj.lexstateeoff = linfo.eoff + lexobj.lexeoff = linfo.eoff.get('INITIAL', None) + + # Check state information for ignore and error rules + for s, stype in stateinfo.items(): + if stype == 'exclusive': + if s not in linfo.errorf: + errorlog.warning("No error rule is defined for exclusive state '%s'", s) + if s not in linfo.ignore and lexobj.lexignore: + errorlog.warning("No ignore rule is defined for exclusive state '%s'", s) + elif stype == 'inclusive': + if s not in linfo.errorf: + linfo.errorf[s] = linfo.errorf.get('INITIAL', None) + if s not in linfo.ignore: + linfo.ignore[s] = linfo.ignore.get('INITIAL', '') + + # Create global versions of the token() and input() functions + token = lexobj.token + input = lexobj.input + lexer = lexobj + + # If in optimize mode, we write the lextab + if lextab and optimize: + if outputdir is None: + # If no output directory is set, the location of the output files + # is determined according to the following rules: + # - If lextab specifies a package, files go into that package directory + # - Otherwise, files go in the same directory as the specifying module + if isinstance(lextab, types.ModuleType): + srcfile = lextab.__file__ + else: + if '.' not in lextab: + srcfile = ldict['__file__'] + else: + parts = lextab.split('.') + pkgname = '.'.join(parts[:-1]) + exec('import %s' % pkgname) + srcfile = getattr(sys.modules[pkgname], '__file__', '') + outputdir = os.path.dirname(srcfile) + try: + lexobj.writetab(lextab, outputdir) + except IOError as e: + errorlog.warning("Couldn't write lextab module %r. %s" % (lextab, e)) + + return lexobj + +# ----------------------------------------------------------------------------- +# runmain() +# +# This runs the lexer as a main program +# ----------------------------------------------------------------------------- + +def runmain(lexer=None, data=None): + if not data: + try: + filename = sys.argv[1] + f = open(filename) + data = f.read() + f.close() + except IndexError: + sys.stdout.write('Reading from standard input (type EOF to end):\n') + data = sys.stdin.read() + + if lexer: + _input = lexer.input + else: + _input = input + _input(data) + if lexer: + _token = lexer.token + else: + _token = token + + while True: + tok = _token() + if not tok: + break + sys.stdout.write('(%s,%r,%d,%d)\n' % (tok.type, tok.value, tok.lineno, tok.lexpos)) + +# ----------------------------------------------------------------------------- +# @TOKEN(regex) +# +# This decorator function can be used to set the regex expression on a function +# when its docstring might need to be set in an alternative way +# ----------------------------------------------------------------------------- + +def TOKEN(r): + def set_regex(f): + if hasattr(r, '__call__'): + f.regex = _get_regex(r) + else: + f.regex = r + return f + return set_regex + +# Alternative spelling of the TOKEN decorator +Token = TOKEN diff --git a/gestao_raul/Lib/site-packages/pycparser/ply/yacc.py b/gestao_raul/Lib/site-packages/pycparser/ply/yacc.py new file mode 100644 index 0000000..20b4f28 --- /dev/null +++ b/gestao_raul/Lib/site-packages/pycparser/ply/yacc.py @@ -0,0 +1,3494 @@ +# ----------------------------------------------------------------------------- +# ply: yacc.py +# +# Copyright (C) 2001-2017 +# David M. Beazley (Dabeaz LLC) +# 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 David Beazley or Dabeaz LLC 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. +# ----------------------------------------------------------------------------- +# +# This implements an LR parser that is constructed from grammar rules defined +# as Python functions. The grammer is specified by supplying the BNF inside +# Python documentation strings. The inspiration for this technique was borrowed +# from John Aycock's Spark parsing system. PLY might be viewed as cross between +# Spark and the GNU bison utility. +# +# The current implementation is only somewhat object-oriented. The +# LR parser itself is defined in terms of an object (which allows multiple +# parsers to co-exist). However, most of the variables used during table +# construction are defined in terms of global variables. Users shouldn't +# notice unless they are trying to define multiple parsers at the same +# time using threads (in which case they should have their head examined). +# +# This implementation supports both SLR and LALR(1) parsing. LALR(1) +# support was originally implemented by Elias Ioup (ezioup@alumni.uchicago.edu), +# using the algorithm found in Aho, Sethi, and Ullman "Compilers: Principles, +# Techniques, and Tools" (The Dragon Book). LALR(1) has since been replaced +# by the more efficient DeRemer and Pennello algorithm. +# +# :::::::: WARNING ::::::: +# +# Construction of LR parsing tables is fairly complicated and expensive. +# To make this module run fast, a *LOT* of work has been put into +# optimization---often at the expensive of readability and what might +# consider to be good Python "coding style." Modify the code at your +# own risk! +# ---------------------------------------------------------------------------- + +import re +import types +import sys +import os.path +import inspect +import base64 +import warnings + +__version__ = '3.10' +__tabversion__ = '3.10' + +#----------------------------------------------------------------------------- +# === User configurable parameters === +# +# Change these to modify the default behavior of yacc (if you wish) +#----------------------------------------------------------------------------- + +yaccdebug = True # Debugging mode. If set, yacc generates a + # a 'parser.out' file in the current directory + +debug_file = 'parser.out' # Default name of the debugging file +tab_module = 'parsetab' # Default name of the table module +default_lr = 'LALR' # Default LR table generation method + +error_count = 3 # Number of symbols that must be shifted to leave recovery mode + +yaccdevel = False # Set to True if developing yacc. This turns off optimized + # implementations of certain functions. + +resultlimit = 40 # Size limit of results when running in debug mode. + +pickle_protocol = 0 # Protocol to use when writing pickle files + +# String type-checking compatibility +if sys.version_info[0] < 3: + string_types = basestring +else: + string_types = str + +MAXINT = sys.maxsize + +# This object is a stand-in for a logging object created by the +# logging module. PLY will use this by default to create things +# such as the parser.out file. If a user wants more detailed +# information, they can create their own logging object and pass +# it into PLY. + +class PlyLogger(object): + def __init__(self, f): + self.f = f + + def debug(self, msg, *args, **kwargs): + self.f.write((msg % args) + '\n') + + info = debug + + def warning(self, msg, *args, **kwargs): + self.f.write('WARNING: ' + (msg % args) + '\n') + + def error(self, msg, *args, **kwargs): + self.f.write('ERROR: ' + (msg % args) + '\n') + + critical = debug + +# Null logger is used when no output is generated. Does nothing. +class NullLogger(object): + def __getattribute__(self, name): + return self + + def __call__(self, *args, **kwargs): + return self + +# Exception raised for yacc-related errors +class YaccError(Exception): + pass + +# Format the result message that the parser produces when running in debug mode. +def format_result(r): + repr_str = repr(r) + if '\n' in repr_str: + repr_str = repr(repr_str) + if len(repr_str) > resultlimit: + repr_str = repr_str[:resultlimit] + ' ...' + result = '<%s @ 0x%x> (%s)' % (type(r).__name__, id(r), repr_str) + return result + +# Format stack entries when the parser is running in debug mode +def format_stack_entry(r): + repr_str = repr(r) + if '\n' in repr_str: + repr_str = repr(repr_str) + if len(repr_str) < 16: + return repr_str + else: + return '<%s @ 0x%x>' % (type(r).__name__, id(r)) + +# Panic mode error recovery support. This feature is being reworked--much of the +# code here is to offer a deprecation/backwards compatible transition + +_errok = None +_token = None +_restart = None +_warnmsg = '''PLY: Don't use global functions errok(), token(), and restart() in p_error(). +Instead, invoke the methods on the associated parser instance: + + def p_error(p): + ... + # Use parser.errok(), parser.token(), parser.restart() + ... + + parser = yacc.yacc() +''' + +def errok(): + warnings.warn(_warnmsg) + return _errok() + +def restart(): + warnings.warn(_warnmsg) + return _restart() + +def token(): + warnings.warn(_warnmsg) + return _token() + +# Utility function to call the p_error() function with some deprecation hacks +def call_errorfunc(errorfunc, token, parser): + global _errok, _token, _restart + _errok = parser.errok + _token = parser.token + _restart = parser.restart + r = errorfunc(token) + try: + del _errok, _token, _restart + except NameError: + pass + return r + +#----------------------------------------------------------------------------- +# === LR Parsing Engine === +# +# The following classes are used for the LR parser itself. These are not +# used during table construction and are independent of the actual LR +# table generation algorithm +#----------------------------------------------------------------------------- + +# This class is used to hold non-terminal grammar symbols during parsing. +# It normally has the following attributes set: +# .type = Grammar symbol type +# .value = Symbol value +# .lineno = Starting line number +# .endlineno = Ending line number (optional, set automatically) +# .lexpos = Starting lex position +# .endlexpos = Ending lex position (optional, set automatically) + +class YaccSymbol: + def __str__(self): + return self.type + + def __repr__(self): + return str(self) + +# This class is a wrapper around the objects actually passed to each +# grammar rule. Index lookup and assignment actually assign the +# .value attribute of the underlying YaccSymbol object. +# The lineno() method returns the line number of a given +# item (or 0 if not defined). The linespan() method returns +# a tuple of (startline,endline) representing the range of lines +# for a symbol. The lexspan() method returns a tuple (lexpos,endlexpos) +# representing the range of positional information for a symbol. + +class YaccProduction: + def __init__(self, s, stack=None): + self.slice = s + self.stack = stack + self.lexer = None + self.parser = None + + def __getitem__(self, n): + if isinstance(n, slice): + return [s.value for s in self.slice[n]] + elif n >= 0: + return self.slice[n].value + else: + return self.stack[n].value + + def __setitem__(self, n, v): + self.slice[n].value = v + + def __getslice__(self, i, j): + return [s.value for s in self.slice[i:j]] + + def __len__(self): + return len(self.slice) + + def lineno(self, n): + return getattr(self.slice[n], 'lineno', 0) + + def set_lineno(self, n, lineno): + self.slice[n].lineno = lineno + + def linespan(self, n): + startline = getattr(self.slice[n], 'lineno', 0) + endline = getattr(self.slice[n], 'endlineno', startline) + return startline, endline + + def lexpos(self, n): + return getattr(self.slice[n], 'lexpos', 0) + + def lexspan(self, n): + startpos = getattr(self.slice[n], 'lexpos', 0) + endpos = getattr(self.slice[n], 'endlexpos', startpos) + return startpos, endpos + + def error(self): + raise SyntaxError + +# ----------------------------------------------------------------------------- +# == LRParser == +# +# The LR Parsing engine. +# ----------------------------------------------------------------------------- + +class LRParser: + def __init__(self, lrtab, errorf): + self.productions = lrtab.lr_productions + self.action = lrtab.lr_action + self.goto = lrtab.lr_goto + self.errorfunc = errorf + self.set_defaulted_states() + self.errorok = True + + def errok(self): + self.errorok = True + + def restart(self): + del self.statestack[:] + del self.symstack[:] + sym = YaccSymbol() + sym.type = '$end' + self.symstack.append(sym) + self.statestack.append(0) + + # Defaulted state support. + # This method identifies parser states where there is only one possible reduction action. + # For such states, the parser can make a choose to make a rule reduction without consuming + # the next look-ahead token. This delayed invocation of the tokenizer can be useful in + # certain kinds of advanced parsing situations where the lexer and parser interact with + # each other or change states (i.e., manipulation of scope, lexer states, etc.). + # + # See: https://www.gnu.org/software/bison/manual/html_node/Default-Reductions.html#Default-Reductions + def set_defaulted_states(self): + self.defaulted_states = {} + for state, actions in self.action.items(): + rules = list(actions.values()) + if len(rules) == 1 and rules[0] < 0: + self.defaulted_states[state] = rules[0] + + def disable_defaulted_states(self): + self.defaulted_states = {} + + def parse(self, input=None, lexer=None, debug=False, tracking=False, tokenfunc=None): + if debug or yaccdevel: + if isinstance(debug, int): + debug = PlyLogger(sys.stderr) + return self.parsedebug(input, lexer, debug, tracking, tokenfunc) + elif tracking: + return self.parseopt(input, lexer, debug, tracking, tokenfunc) + else: + return self.parseopt_notrack(input, lexer, debug, tracking, tokenfunc) + + + # !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + # parsedebug(). + # + # This is the debugging enabled version of parse(). All changes made to the + # parsing engine should be made here. Optimized versions of this function + # are automatically created by the ply/ygen.py script. This script cuts out + # sections enclosed in markers such as this: + # + # #--! DEBUG + # statements + # #--! DEBUG + # + # !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + + def parsedebug(self, input=None, lexer=None, debug=False, tracking=False, tokenfunc=None): + #--! parsedebug-start + lookahead = None # Current lookahead symbol + lookaheadstack = [] # Stack of lookahead symbols + actions = self.action # Local reference to action table (to avoid lookup on self.) + goto = self.goto # Local reference to goto table (to avoid lookup on self.) + prod = self.productions # Local reference to production list (to avoid lookup on self.) + defaulted_states = self.defaulted_states # Local reference to defaulted states + pslice = YaccProduction(None) # Production object passed to grammar rules + errorcount = 0 # Used during error recovery + + #--! DEBUG + debug.info('PLY: PARSE DEBUG START') + #--! DEBUG + + # If no lexer was given, we will try to use the lex module + if not lexer: + from . import lex + lexer = lex.lexer + + # Set up the lexer and parser objects on pslice + pslice.lexer = lexer + pslice.parser = self + + # If input was supplied, pass to lexer + if input is not None: + lexer.input(input) + + if tokenfunc is None: + # Tokenize function + get_token = lexer.token + else: + get_token = tokenfunc + + # Set the parser() token method (sometimes used in error recovery) + self.token = get_token + + # Set up the state and symbol stacks + + statestack = [] # Stack of parsing states + self.statestack = statestack + symstack = [] # Stack of grammar symbols + self.symstack = symstack + + pslice.stack = symstack # Put in the production + errtoken = None # Err token + + # The start state is assumed to be (0,$end) + + statestack.append(0) + sym = YaccSymbol() + sym.type = '$end' + symstack.append(sym) + state = 0 + while True: + # Get the next symbol on the input. If a lookahead symbol + # is already set, we just use that. Otherwise, we'll pull + # the next token off of the lookaheadstack or from the lexer + + #--! DEBUG + debug.debug('') + debug.debug('State : %s', state) + #--! DEBUG + + if state not in defaulted_states: + if not lookahead: + if not lookaheadstack: + lookahead = get_token() # Get the next token + else: + lookahead = lookaheadstack.pop() + if not lookahead: + lookahead = YaccSymbol() + lookahead.type = '$end' + + # Check the action table + ltype = lookahead.type + t = actions[state].get(ltype) + else: + t = defaulted_states[state] + #--! DEBUG + debug.debug('Defaulted state %s: Reduce using %d', state, -t) + #--! DEBUG + + #--! DEBUG + debug.debug('Stack : %s', + ('%s . %s' % (' '.join([xx.type for xx in symstack][1:]), str(lookahead))).lstrip()) + #--! DEBUG + + if t is not None: + if t > 0: + # shift a symbol on the stack + statestack.append(t) + state = t + + #--! DEBUG + debug.debug('Action : Shift and goto state %s', t) + #--! DEBUG + + symstack.append(lookahead) + lookahead = None + + # Decrease error count on successful shift + if errorcount: + errorcount -= 1 + continue + + if t < 0: + # reduce a symbol on the stack, emit a production + p = prod[-t] + pname = p.name + plen = p.len + + # Get production function + sym = YaccSymbol() + sym.type = pname # Production name + sym.value = None + + #--! DEBUG + if plen: + debug.info('Action : Reduce rule [%s] with %s and goto state %d', p.str, + '['+','.join([format_stack_entry(_v.value) for _v in symstack[-plen:]])+']', + goto[statestack[-1-plen]][pname]) + else: + debug.info('Action : Reduce rule [%s] with %s and goto state %d', p.str, [], + goto[statestack[-1]][pname]) + + #--! DEBUG + + if plen: + targ = symstack[-plen-1:] + targ[0] = sym + + #--! TRACKING + if tracking: + t1 = targ[1] + sym.lineno = t1.lineno + sym.lexpos = t1.lexpos + t1 = targ[-1] + sym.endlineno = getattr(t1, 'endlineno', t1.lineno) + sym.endlexpos = getattr(t1, 'endlexpos', t1.lexpos) + #--! TRACKING + + # !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + # The code enclosed in this section is duplicated + # below as a performance optimization. Make sure + # changes get made in both locations. + + pslice.slice = targ + + try: + # Call the grammar rule with our special slice object + del symstack[-plen:] + self.state = state + p.callable(pslice) + del statestack[-plen:] + #--! DEBUG + debug.info('Result : %s', format_result(pslice[0])) + #--! DEBUG + symstack.append(sym) + state = goto[statestack[-1]][pname] + statestack.append(state) + except SyntaxError: + # If an error was set. Enter error recovery state + lookaheadstack.append(lookahead) # Save the current lookahead token + symstack.extend(targ[1:-1]) # Put the production slice back on the stack + statestack.pop() # Pop back one state (before the reduce) + state = statestack[-1] + sym.type = 'error' + sym.value = 'error' + lookahead = sym + errorcount = error_count + self.errorok = False + + continue + # !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + + else: + + #--! TRACKING + if tracking: + sym.lineno = lexer.lineno + sym.lexpos = lexer.lexpos + #--! TRACKING + + targ = [sym] + + # !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + # The code enclosed in this section is duplicated + # above as a performance optimization. Make sure + # changes get made in both locations. + + pslice.slice = targ + + try: + # Call the grammar rule with our special slice object + self.state = state + p.callable(pslice) + #--! DEBUG + debug.info('Result : %s', format_result(pslice[0])) + #--! DEBUG + symstack.append(sym) + state = goto[statestack[-1]][pname] + statestack.append(state) + except SyntaxError: + # If an error was set. Enter error recovery state + lookaheadstack.append(lookahead) # Save the current lookahead token + statestack.pop() # Pop back one state (before the reduce) + state = statestack[-1] + sym.type = 'error' + sym.value = 'error' + lookahead = sym + errorcount = error_count + self.errorok = False + + continue + # !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + + if t == 0: + n = symstack[-1] + result = getattr(n, 'value', None) + #--! DEBUG + debug.info('Done : Returning %s', format_result(result)) + debug.info('PLY: PARSE DEBUG END') + #--! DEBUG + return result + + if t is None: + + #--! DEBUG + debug.error('Error : %s', + ('%s . %s' % (' '.join([xx.type for xx in symstack][1:]), str(lookahead))).lstrip()) + #--! DEBUG + + # We have some kind of parsing error here. To handle + # this, we are going to push the current token onto + # the tokenstack and replace it with an 'error' token. + # If there are any synchronization rules, they may + # catch it. + # + # In addition to pushing the error token, we call call + # the user defined p_error() function if this is the + # first syntax error. This function is only called if + # errorcount == 0. + if errorcount == 0 or self.errorok: + errorcount = error_count + self.errorok = False + errtoken = lookahead + if errtoken.type == '$end': + errtoken = None # End of file! + if self.errorfunc: + if errtoken and not hasattr(errtoken, 'lexer'): + errtoken.lexer = lexer + self.state = state + tok = call_errorfunc(self.errorfunc, errtoken, self) + if self.errorok: + # User must have done some kind of panic + # mode recovery on their own. The + # returned token is the next lookahead + lookahead = tok + errtoken = None + continue + else: + if errtoken: + if hasattr(errtoken, 'lineno'): + lineno = lookahead.lineno + else: + lineno = 0 + if lineno: + sys.stderr.write('yacc: Syntax error at line %d, token=%s\n' % (lineno, errtoken.type)) + else: + sys.stderr.write('yacc: Syntax error, token=%s' % errtoken.type) + else: + sys.stderr.write('yacc: Parse error in input. EOF\n') + return + + else: + errorcount = error_count + + # case 1: the statestack only has 1 entry on it. If we're in this state, the + # entire parse has been rolled back and we're completely hosed. The token is + # discarded and we just keep going. + + if len(statestack) <= 1 and lookahead.type != '$end': + lookahead = None + errtoken = None + state = 0 + # Nuke the pushback stack + del lookaheadstack[:] + continue + + # case 2: the statestack has a couple of entries on it, but we're + # at the end of the file. nuke the top entry and generate an error token + + # Start nuking entries on the stack + if lookahead.type == '$end': + # Whoa. We're really hosed here. Bail out + return + + if lookahead.type != 'error': + sym = symstack[-1] + if sym.type == 'error': + # Hmmm. Error is on top of stack, we'll just nuke input + # symbol and continue + #--! TRACKING + if tracking: + sym.endlineno = getattr(lookahead, 'lineno', sym.lineno) + sym.endlexpos = getattr(lookahead, 'lexpos', sym.lexpos) + #--! TRACKING + lookahead = None + continue + + # Create the error symbol for the first time and make it the new lookahead symbol + t = YaccSymbol() + t.type = 'error' + + if hasattr(lookahead, 'lineno'): + t.lineno = t.endlineno = lookahead.lineno + if hasattr(lookahead, 'lexpos'): + t.lexpos = t.endlexpos = lookahead.lexpos + t.value = lookahead + lookaheadstack.append(lookahead) + lookahead = t + else: + sym = symstack.pop() + #--! TRACKING + if tracking: + lookahead.lineno = sym.lineno + lookahead.lexpos = sym.lexpos + #--! TRACKING + statestack.pop() + state = statestack[-1] + + continue + + # Call an error function here + raise RuntimeError('yacc: internal parser error!!!\n') + + #--! parsedebug-end + + # !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + # parseopt(). + # + # Optimized version of parse() method. DO NOT EDIT THIS CODE DIRECTLY! + # This code is automatically generated by the ply/ygen.py script. Make + # changes to the parsedebug() method instead. + # !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + + def parseopt(self, input=None, lexer=None, debug=False, tracking=False, tokenfunc=None): + #--! parseopt-start + lookahead = None # Current lookahead symbol + lookaheadstack = [] # Stack of lookahead symbols + actions = self.action # Local reference to action table (to avoid lookup on self.) + goto = self.goto # Local reference to goto table (to avoid lookup on self.) + prod = self.productions # Local reference to production list (to avoid lookup on self.) + defaulted_states = self.defaulted_states # Local reference to defaulted states + pslice = YaccProduction(None) # Production object passed to grammar rules + errorcount = 0 # Used during error recovery + + + # If no lexer was given, we will try to use the lex module + if not lexer: + from . import lex + lexer = lex.lexer + + # Set up the lexer and parser objects on pslice + pslice.lexer = lexer + pslice.parser = self + + # If input was supplied, pass to lexer + if input is not None: + lexer.input(input) + + if tokenfunc is None: + # Tokenize function + get_token = lexer.token + else: + get_token = tokenfunc + + # Set the parser() token method (sometimes used in error recovery) + self.token = get_token + + # Set up the state and symbol stacks + + statestack = [] # Stack of parsing states + self.statestack = statestack + symstack = [] # Stack of grammar symbols + self.symstack = symstack + + pslice.stack = symstack # Put in the production + errtoken = None # Err token + + # The start state is assumed to be (0,$end) + + statestack.append(0) + sym = YaccSymbol() + sym.type = '$end' + symstack.append(sym) + state = 0 + while True: + # Get the next symbol on the input. If a lookahead symbol + # is already set, we just use that. Otherwise, we'll pull + # the next token off of the lookaheadstack or from the lexer + + + if state not in defaulted_states: + if not lookahead: + if not lookaheadstack: + lookahead = get_token() # Get the next token + else: + lookahead = lookaheadstack.pop() + if not lookahead: + lookahead = YaccSymbol() + lookahead.type = '$end' + + # Check the action table + ltype = lookahead.type + t = actions[state].get(ltype) + else: + t = defaulted_states[state] + + + if t is not None: + if t > 0: + # shift a symbol on the stack + statestack.append(t) + state = t + + + symstack.append(lookahead) + lookahead = None + + # Decrease error count on successful shift + if errorcount: + errorcount -= 1 + continue + + if t < 0: + # reduce a symbol on the stack, emit a production + p = prod[-t] + pname = p.name + plen = p.len + + # Get production function + sym = YaccSymbol() + sym.type = pname # Production name + sym.value = None + + + if plen: + targ = symstack[-plen-1:] + targ[0] = sym + + #--! TRACKING + if tracking: + t1 = targ[1] + sym.lineno = t1.lineno + sym.lexpos = t1.lexpos + t1 = targ[-1] + sym.endlineno = getattr(t1, 'endlineno', t1.lineno) + sym.endlexpos = getattr(t1, 'endlexpos', t1.lexpos) + #--! TRACKING + + # !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + # The code enclosed in this section is duplicated + # below as a performance optimization. Make sure + # changes get made in both locations. + + pslice.slice = targ + + try: + # Call the grammar rule with our special slice object + del symstack[-plen:] + self.state = state + p.callable(pslice) + del statestack[-plen:] + symstack.append(sym) + state = goto[statestack[-1]][pname] + statestack.append(state) + except SyntaxError: + # If an error was set. Enter error recovery state + lookaheadstack.append(lookahead) # Save the current lookahead token + symstack.extend(targ[1:-1]) # Put the production slice back on the stack + statestack.pop() # Pop back one state (before the reduce) + state = statestack[-1] + sym.type = 'error' + sym.value = 'error' + lookahead = sym + errorcount = error_count + self.errorok = False + + continue + # !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + + else: + + #--! TRACKING + if tracking: + sym.lineno = lexer.lineno + sym.lexpos = lexer.lexpos + #--! TRACKING + + targ = [sym] + + # !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + # The code enclosed in this section is duplicated + # above as a performance optimization. Make sure + # changes get made in both locations. + + pslice.slice = targ + + try: + # Call the grammar rule with our special slice object + self.state = state + p.callable(pslice) + symstack.append(sym) + state = goto[statestack[-1]][pname] + statestack.append(state) + except SyntaxError: + # If an error was set. Enter error recovery state + lookaheadstack.append(lookahead) # Save the current lookahead token + statestack.pop() # Pop back one state (before the reduce) + state = statestack[-1] + sym.type = 'error' + sym.value = 'error' + lookahead = sym + errorcount = error_count + self.errorok = False + + continue + # !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + + if t == 0: + n = symstack[-1] + result = getattr(n, 'value', None) + return result + + if t is None: + + + # We have some kind of parsing error here. To handle + # this, we are going to push the current token onto + # the tokenstack and replace it with an 'error' token. + # If there are any synchronization rules, they may + # catch it. + # + # In addition to pushing the error token, we call call + # the user defined p_error() function if this is the + # first syntax error. This function is only called if + # errorcount == 0. + if errorcount == 0 or self.errorok: + errorcount = error_count + self.errorok = False + errtoken = lookahead + if errtoken.type == '$end': + errtoken = None # End of file! + if self.errorfunc: + if errtoken and not hasattr(errtoken, 'lexer'): + errtoken.lexer = lexer + self.state = state + tok = call_errorfunc(self.errorfunc, errtoken, self) + if self.errorok: + # User must have done some kind of panic + # mode recovery on their own. The + # returned token is the next lookahead + lookahead = tok + errtoken = None + continue + else: + if errtoken: + if hasattr(errtoken, 'lineno'): + lineno = lookahead.lineno + else: + lineno = 0 + if lineno: + sys.stderr.write('yacc: Syntax error at line %d, token=%s\n' % (lineno, errtoken.type)) + else: + sys.stderr.write('yacc: Syntax error, token=%s' % errtoken.type) + else: + sys.stderr.write('yacc: Parse error in input. EOF\n') + return + + else: + errorcount = error_count + + # case 1: the statestack only has 1 entry on it. If we're in this state, the + # entire parse has been rolled back and we're completely hosed. The token is + # discarded and we just keep going. + + if len(statestack) <= 1 and lookahead.type != '$end': + lookahead = None + errtoken = None + state = 0 + # Nuke the pushback stack + del lookaheadstack[:] + continue + + # case 2: the statestack has a couple of entries on it, but we're + # at the end of the file. nuke the top entry and generate an error token + + # Start nuking entries on the stack + if lookahead.type == '$end': + # Whoa. We're really hosed here. Bail out + return + + if lookahead.type != 'error': + sym = symstack[-1] + if sym.type == 'error': + # Hmmm. Error is on top of stack, we'll just nuke input + # symbol and continue + #--! TRACKING + if tracking: + sym.endlineno = getattr(lookahead, 'lineno', sym.lineno) + sym.endlexpos = getattr(lookahead, 'lexpos', sym.lexpos) + #--! TRACKING + lookahead = None + continue + + # Create the error symbol for the first time and make it the new lookahead symbol + t = YaccSymbol() + t.type = 'error' + + if hasattr(lookahead, 'lineno'): + t.lineno = t.endlineno = lookahead.lineno + if hasattr(lookahead, 'lexpos'): + t.lexpos = t.endlexpos = lookahead.lexpos + t.value = lookahead + lookaheadstack.append(lookahead) + lookahead = t + else: + sym = symstack.pop() + #--! TRACKING + if tracking: + lookahead.lineno = sym.lineno + lookahead.lexpos = sym.lexpos + #--! TRACKING + statestack.pop() + state = statestack[-1] + + continue + + # Call an error function here + raise RuntimeError('yacc: internal parser error!!!\n') + + #--! parseopt-end + + # !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + # parseopt_notrack(). + # + # Optimized version of parseopt() with line number tracking removed. + # DO NOT EDIT THIS CODE DIRECTLY. This code is automatically generated + # by the ply/ygen.py script. Make changes to the parsedebug() method instead. + # !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + + def parseopt_notrack(self, input=None, lexer=None, debug=False, tracking=False, tokenfunc=None): + #--! parseopt-notrack-start + lookahead = None # Current lookahead symbol + lookaheadstack = [] # Stack of lookahead symbols + actions = self.action # Local reference to action table (to avoid lookup on self.) + goto = self.goto # Local reference to goto table (to avoid lookup on self.) + prod = self.productions # Local reference to production list (to avoid lookup on self.) + defaulted_states = self.defaulted_states # Local reference to defaulted states + pslice = YaccProduction(None) # Production object passed to grammar rules + errorcount = 0 # Used during error recovery + + + # If no lexer was given, we will try to use the lex module + if not lexer: + from . import lex + lexer = lex.lexer + + # Set up the lexer and parser objects on pslice + pslice.lexer = lexer + pslice.parser = self + + # If input was supplied, pass to lexer + if input is not None: + lexer.input(input) + + if tokenfunc is None: + # Tokenize function + get_token = lexer.token + else: + get_token = tokenfunc + + # Set the parser() token method (sometimes used in error recovery) + self.token = get_token + + # Set up the state and symbol stacks + + statestack = [] # Stack of parsing states + self.statestack = statestack + symstack = [] # Stack of grammar symbols + self.symstack = symstack + + pslice.stack = symstack # Put in the production + errtoken = None # Err token + + # The start state is assumed to be (0,$end) + + statestack.append(0) + sym = YaccSymbol() + sym.type = '$end' + symstack.append(sym) + state = 0 + while True: + # Get the next symbol on the input. If a lookahead symbol + # is already set, we just use that. Otherwise, we'll pull + # the next token off of the lookaheadstack or from the lexer + + + if state not in defaulted_states: + if not lookahead: + if not lookaheadstack: + lookahead = get_token() # Get the next token + else: + lookahead = lookaheadstack.pop() + if not lookahead: + lookahead = YaccSymbol() + lookahead.type = '$end' + + # Check the action table + ltype = lookahead.type + t = actions[state].get(ltype) + else: + t = defaulted_states[state] + + + if t is not None: + if t > 0: + # shift a symbol on the stack + statestack.append(t) + state = t + + + symstack.append(lookahead) + lookahead = None + + # Decrease error count on successful shift + if errorcount: + errorcount -= 1 + continue + + if t < 0: + # reduce a symbol on the stack, emit a production + p = prod[-t] + pname = p.name + plen = p.len + + # Get production function + sym = YaccSymbol() + sym.type = pname # Production name + sym.value = None + + + if plen: + targ = symstack[-plen-1:] + targ[0] = sym + + + # !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + # The code enclosed in this section is duplicated + # below as a performance optimization. Make sure + # changes get made in both locations. + + pslice.slice = targ + + try: + # Call the grammar rule with our special slice object + del symstack[-plen:] + self.state = state + p.callable(pslice) + del statestack[-plen:] + symstack.append(sym) + state = goto[statestack[-1]][pname] + statestack.append(state) + except SyntaxError: + # If an error was set. Enter error recovery state + lookaheadstack.append(lookahead) # Save the current lookahead token + symstack.extend(targ[1:-1]) # Put the production slice back on the stack + statestack.pop() # Pop back one state (before the reduce) + state = statestack[-1] + sym.type = 'error' + sym.value = 'error' + lookahead = sym + errorcount = error_count + self.errorok = False + + continue + # !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + + else: + + + targ = [sym] + + # !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + # The code enclosed in this section is duplicated + # above as a performance optimization. Make sure + # changes get made in both locations. + + pslice.slice = targ + + try: + # Call the grammar rule with our special slice object + self.state = state + p.callable(pslice) + symstack.append(sym) + state = goto[statestack[-1]][pname] + statestack.append(state) + except SyntaxError: + # If an error was set. Enter error recovery state + lookaheadstack.append(lookahead) # Save the current lookahead token + statestack.pop() # Pop back one state (before the reduce) + state = statestack[-1] + sym.type = 'error' + sym.value = 'error' + lookahead = sym + errorcount = error_count + self.errorok = False + + continue + # !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + + if t == 0: + n = symstack[-1] + result = getattr(n, 'value', None) + return result + + if t is None: + + + # We have some kind of parsing error here. To handle + # this, we are going to push the current token onto + # the tokenstack and replace it with an 'error' token. + # If there are any synchronization rules, they may + # catch it. + # + # In addition to pushing the error token, we call call + # the user defined p_error() function if this is the + # first syntax error. This function is only called if + # errorcount == 0. + if errorcount == 0 or self.errorok: + errorcount = error_count + self.errorok = False + errtoken = lookahead + if errtoken.type == '$end': + errtoken = None # End of file! + if self.errorfunc: + if errtoken and not hasattr(errtoken, 'lexer'): + errtoken.lexer = lexer + self.state = state + tok = call_errorfunc(self.errorfunc, errtoken, self) + if self.errorok: + # User must have done some kind of panic + # mode recovery on their own. The + # returned token is the next lookahead + lookahead = tok + errtoken = None + continue + else: + if errtoken: + if hasattr(errtoken, 'lineno'): + lineno = lookahead.lineno + else: + lineno = 0 + if lineno: + sys.stderr.write('yacc: Syntax error at line %d, token=%s\n' % (lineno, errtoken.type)) + else: + sys.stderr.write('yacc: Syntax error, token=%s' % errtoken.type) + else: + sys.stderr.write('yacc: Parse error in input. EOF\n') + return + + else: + errorcount = error_count + + # case 1: the statestack only has 1 entry on it. If we're in this state, the + # entire parse has been rolled back and we're completely hosed. The token is + # discarded and we just keep going. + + if len(statestack) <= 1 and lookahead.type != '$end': + lookahead = None + errtoken = None + state = 0 + # Nuke the pushback stack + del lookaheadstack[:] + continue + + # case 2: the statestack has a couple of entries on it, but we're + # at the end of the file. nuke the top entry and generate an error token + + # Start nuking entries on the stack + if lookahead.type == '$end': + # Whoa. We're really hosed here. Bail out + return + + if lookahead.type != 'error': + sym = symstack[-1] + if sym.type == 'error': + # Hmmm. Error is on top of stack, we'll just nuke input + # symbol and continue + lookahead = None + continue + + # Create the error symbol for the first time and make it the new lookahead symbol + t = YaccSymbol() + t.type = 'error' + + if hasattr(lookahead, 'lineno'): + t.lineno = t.endlineno = lookahead.lineno + if hasattr(lookahead, 'lexpos'): + t.lexpos = t.endlexpos = lookahead.lexpos + t.value = lookahead + lookaheadstack.append(lookahead) + lookahead = t + else: + sym = symstack.pop() + statestack.pop() + state = statestack[-1] + + continue + + # Call an error function here + raise RuntimeError('yacc: internal parser error!!!\n') + + #--! parseopt-notrack-end + +# ----------------------------------------------------------------------------- +# === Grammar Representation === +# +# The following functions, classes, and variables are used to represent and +# manipulate the rules that make up a grammar. +# ----------------------------------------------------------------------------- + +# regex matching identifiers +_is_identifier = re.compile(r'^[a-zA-Z0-9_-]+$') + +# ----------------------------------------------------------------------------- +# class Production: +# +# This class stores the raw information about a single production or grammar rule. +# A grammar rule refers to a specification such as this: +# +# expr : expr PLUS term +# +# Here are the basic attributes defined on all productions +# +# name - Name of the production. For example 'expr' +# prod - A list of symbols on the right side ['expr','PLUS','term'] +# prec - Production precedence level +# number - Production number. +# func - Function that executes on reduce +# file - File where production function is defined +# lineno - Line number where production function is defined +# +# The following attributes are defined or optional. +# +# len - Length of the production (number of symbols on right hand side) +# usyms - Set of unique symbols found in the production +# ----------------------------------------------------------------------------- + +class Production(object): + reduced = 0 + def __init__(self, number, name, prod, precedence=('right', 0), func=None, file='', line=0): + self.name = name + self.prod = tuple(prod) + self.number = number + self.func = func + self.callable = None + self.file = file + self.line = line + self.prec = precedence + + # Internal settings used during table construction + + self.len = len(self.prod) # Length of the production + + # Create a list of unique production symbols used in the production + self.usyms = [] + for s in self.prod: + if s not in self.usyms: + self.usyms.append(s) + + # List of all LR items for the production + self.lr_items = [] + self.lr_next = None + + # Create a string representation + if self.prod: + self.str = '%s -> %s' % (self.name, ' '.join(self.prod)) + else: + self.str = '%s -> ' % self.name + + def __str__(self): + return self.str + + def __repr__(self): + return 'Production(' + str(self) + ')' + + def __len__(self): + return len(self.prod) + + def __nonzero__(self): + return 1 + + def __getitem__(self, index): + return self.prod[index] + + # Return the nth lr_item from the production (or None if at the end) + def lr_item(self, n): + if n > len(self.prod): + return None + p = LRItem(self, n) + # Precompute the list of productions immediately following. + try: + p.lr_after = Prodnames[p.prod[n+1]] + except (IndexError, KeyError): + p.lr_after = [] + try: + p.lr_before = p.prod[n-1] + except IndexError: + p.lr_before = None + return p + + # Bind the production function name to a callable + def bind(self, pdict): + if self.func: + self.callable = pdict[self.func] + +# This class serves as a minimal standin for Production objects when +# reading table data from files. It only contains information +# actually used by the LR parsing engine, plus some additional +# debugging information. +class MiniProduction(object): + def __init__(self, str, name, len, func, file, line): + self.name = name + self.len = len + self.func = func + self.callable = None + self.file = file + self.line = line + self.str = str + + def __str__(self): + return self.str + + def __repr__(self): + return 'MiniProduction(%s)' % self.str + + # Bind the production function name to a callable + def bind(self, pdict): + if self.func: + self.callable = pdict[self.func] + + +# ----------------------------------------------------------------------------- +# class LRItem +# +# This class represents a specific stage of parsing a production rule. For +# example: +# +# expr : expr . PLUS term +# +# In the above, the "." represents the current location of the parse. Here +# basic attributes: +# +# name - Name of the production. For example 'expr' +# prod - A list of symbols on the right side ['expr','.', 'PLUS','term'] +# number - Production number. +# +# lr_next Next LR item. Example, if we are ' expr -> expr . PLUS term' +# then lr_next refers to 'expr -> expr PLUS . term' +# lr_index - LR item index (location of the ".") in the prod list. +# lookaheads - LALR lookahead symbols for this item +# len - Length of the production (number of symbols on right hand side) +# lr_after - List of all productions that immediately follow +# lr_before - Grammar symbol immediately before +# ----------------------------------------------------------------------------- + +class LRItem(object): + def __init__(self, p, n): + self.name = p.name + self.prod = list(p.prod) + self.number = p.number + self.lr_index = n + self.lookaheads = {} + self.prod.insert(n, '.') + self.prod = tuple(self.prod) + self.len = len(self.prod) + self.usyms = p.usyms + + def __str__(self): + if self.prod: + s = '%s -> %s' % (self.name, ' '.join(self.prod)) + else: + s = '%s -> ' % self.name + return s + + def __repr__(self): + return 'LRItem(' + str(self) + ')' + +# ----------------------------------------------------------------------------- +# rightmost_terminal() +# +# Return the rightmost terminal from a list of symbols. Used in add_production() +# ----------------------------------------------------------------------------- +def rightmost_terminal(symbols, terminals): + i = len(symbols) - 1 + while i >= 0: + if symbols[i] in terminals: + return symbols[i] + i -= 1 + return None + +# ----------------------------------------------------------------------------- +# === GRAMMAR CLASS === +# +# The following class represents the contents of the specified grammar along +# with various computed properties such as first sets, follow sets, LR items, etc. +# This data is used for critical parts of the table generation process later. +# ----------------------------------------------------------------------------- + +class GrammarError(YaccError): + pass + +class Grammar(object): + def __init__(self, terminals): + self.Productions = [None] # A list of all of the productions. The first + # entry is always reserved for the purpose of + # building an augmented grammar + + self.Prodnames = {} # A dictionary mapping the names of nonterminals to a list of all + # productions of that nonterminal. + + self.Prodmap = {} # A dictionary that is only used to detect duplicate + # productions. + + self.Terminals = {} # A dictionary mapping the names of terminal symbols to a + # list of the rules where they are used. + + for term in terminals: + self.Terminals[term] = [] + + self.Terminals['error'] = [] + + self.Nonterminals = {} # A dictionary mapping names of nonterminals to a list + # of rule numbers where they are used. + + self.First = {} # A dictionary of precomputed FIRST(x) symbols + + self.Follow = {} # A dictionary of precomputed FOLLOW(x) symbols + + self.Precedence = {} # Precedence rules for each terminal. Contains tuples of the + # form ('right',level) or ('nonassoc', level) or ('left',level) + + self.UsedPrecedence = set() # Precedence rules that were actually used by the grammer. + # This is only used to provide error checking and to generate + # a warning about unused precedence rules. + + self.Start = None # Starting symbol for the grammar + + + def __len__(self): + return len(self.Productions) + + def __getitem__(self, index): + return self.Productions[index] + + # ----------------------------------------------------------------------------- + # set_precedence() + # + # Sets the precedence for a given terminal. assoc is the associativity such as + # 'left','right', or 'nonassoc'. level is a numeric level. + # + # ----------------------------------------------------------------------------- + + def set_precedence(self, term, assoc, level): + assert self.Productions == [None], 'Must call set_precedence() before add_production()' + if term in self.Precedence: + raise GrammarError('Precedence already specified for terminal %r' % term) + if assoc not in ['left', 'right', 'nonassoc']: + raise GrammarError("Associativity must be one of 'left','right', or 'nonassoc'") + self.Precedence[term] = (assoc, level) + + # ----------------------------------------------------------------------------- + # add_production() + # + # Given an action function, this function assembles a production rule and + # computes its precedence level. + # + # The production rule is supplied as a list of symbols. For example, + # a rule such as 'expr : expr PLUS term' has a production name of 'expr' and + # symbols ['expr','PLUS','term']. + # + # Precedence is determined by the precedence of the right-most non-terminal + # or the precedence of a terminal specified by %prec. + # + # A variety of error checks are performed to make sure production symbols + # are valid and that %prec is used correctly. + # ----------------------------------------------------------------------------- + + def add_production(self, prodname, syms, func=None, file='', line=0): + + if prodname in self.Terminals: + raise GrammarError('%s:%d: Illegal rule name %r. Already defined as a token' % (file, line, prodname)) + if prodname == 'error': + raise GrammarError('%s:%d: Illegal rule name %r. error is a reserved word' % (file, line, prodname)) + if not _is_identifier.match(prodname): + raise GrammarError('%s:%d: Illegal rule name %r' % (file, line, prodname)) + + # Look for literal tokens + for n, s in enumerate(syms): + if s[0] in "'\"": + try: + c = eval(s) + if (len(c) > 1): + raise GrammarError('%s:%d: Literal token %s in rule %r may only be a single character' % + (file, line, s, prodname)) + if c not in self.Terminals: + self.Terminals[c] = [] + syms[n] = c + continue + except SyntaxError: + pass + if not _is_identifier.match(s) and s != '%prec': + raise GrammarError('%s:%d: Illegal name %r in rule %r' % (file, line, s, prodname)) + + # Determine the precedence level + if '%prec' in syms: + if syms[-1] == '%prec': + raise GrammarError('%s:%d: Syntax error. Nothing follows %%prec' % (file, line)) + if syms[-2] != '%prec': + raise GrammarError('%s:%d: Syntax error. %%prec can only appear at the end of a grammar rule' % + (file, line)) + precname = syms[-1] + prodprec = self.Precedence.get(precname) + if not prodprec: + raise GrammarError('%s:%d: Nothing known about the precedence of %r' % (file, line, precname)) + else: + self.UsedPrecedence.add(precname) + del syms[-2:] # Drop %prec from the rule + else: + # If no %prec, precedence is determined by the rightmost terminal symbol + precname = rightmost_terminal(syms, self.Terminals) + prodprec = self.Precedence.get(precname, ('right', 0)) + + # See if the rule is already in the rulemap + map = '%s -> %s' % (prodname, syms) + if map in self.Prodmap: + m = self.Prodmap[map] + raise GrammarError('%s:%d: Duplicate rule %s. ' % (file, line, m) + + 'Previous definition at %s:%d' % (m.file, m.line)) + + # From this point on, everything is valid. Create a new Production instance + pnumber = len(self.Productions) + if prodname not in self.Nonterminals: + self.Nonterminals[prodname] = [] + + # Add the production number to Terminals and Nonterminals + for t in syms: + if t in self.Terminals: + self.Terminals[t].append(pnumber) + else: + if t not in self.Nonterminals: + self.Nonterminals[t] = [] + self.Nonterminals[t].append(pnumber) + + # Create a production and add it to the list of productions + p = Production(pnumber, prodname, syms, prodprec, func, file, line) + self.Productions.append(p) + self.Prodmap[map] = p + + # Add to the global productions list + try: + self.Prodnames[prodname].append(p) + except KeyError: + self.Prodnames[prodname] = [p] + + # ----------------------------------------------------------------------------- + # set_start() + # + # Sets the starting symbol and creates the augmented grammar. Production + # rule 0 is S' -> start where start is the start symbol. + # ----------------------------------------------------------------------------- + + def set_start(self, start=None): + if not start: + start = self.Productions[1].name + if start not in self.Nonterminals: + raise GrammarError('start symbol %s undefined' % start) + self.Productions[0] = Production(0, "S'", [start]) + self.Nonterminals[start].append(0) + self.Start = start + + # ----------------------------------------------------------------------------- + # find_unreachable() + # + # Find all of the nonterminal symbols that can't be reached from the starting + # symbol. Returns a list of nonterminals that can't be reached. + # ----------------------------------------------------------------------------- + + def find_unreachable(self): + + # Mark all symbols that are reachable from a symbol s + def mark_reachable_from(s): + if s in reachable: + return + reachable.add(s) + for p in self.Prodnames.get(s, []): + for r in p.prod: + mark_reachable_from(r) + + reachable = set() + mark_reachable_from(self.Productions[0].prod[0]) + return [s for s in self.Nonterminals if s not in reachable] + + # ----------------------------------------------------------------------------- + # infinite_cycles() + # + # This function looks at the various parsing rules and tries to detect + # infinite recursion cycles (grammar rules where there is no possible way + # to derive a string of only terminals). + # ----------------------------------------------------------------------------- + + def infinite_cycles(self): + terminates = {} + + # Terminals: + for t in self.Terminals: + terminates[t] = True + + terminates['$end'] = True + + # Nonterminals: + + # Initialize to false: + for n in self.Nonterminals: + terminates[n] = False + + # Then propagate termination until no change: + while True: + some_change = False + for (n, pl) in self.Prodnames.items(): + # Nonterminal n terminates iff any of its productions terminates. + for p in pl: + # Production p terminates iff all of its rhs symbols terminate. + for s in p.prod: + if not terminates[s]: + # The symbol s does not terminate, + # so production p does not terminate. + p_terminates = False + break + else: + # didn't break from the loop, + # so every symbol s terminates + # so production p terminates. + p_terminates = True + + if p_terminates: + # symbol n terminates! + if not terminates[n]: + terminates[n] = True + some_change = True + # Don't need to consider any more productions for this n. + break + + if not some_change: + break + + infinite = [] + for (s, term) in terminates.items(): + if not term: + if s not in self.Prodnames and s not in self.Terminals and s != 'error': + # s is used-but-not-defined, and we've already warned of that, + # so it would be overkill to say that it's also non-terminating. + pass + else: + infinite.append(s) + + return infinite + + # ----------------------------------------------------------------------------- + # undefined_symbols() + # + # Find all symbols that were used the grammar, but not defined as tokens or + # grammar rules. Returns a list of tuples (sym, prod) where sym in the symbol + # and prod is the production where the symbol was used. + # ----------------------------------------------------------------------------- + def undefined_symbols(self): + result = [] + for p in self.Productions: + if not p: + continue + + for s in p.prod: + if s not in self.Prodnames and s not in self.Terminals and s != 'error': + result.append((s, p)) + return result + + # ----------------------------------------------------------------------------- + # unused_terminals() + # + # Find all terminals that were defined, but not used by the grammar. Returns + # a list of all symbols. + # ----------------------------------------------------------------------------- + def unused_terminals(self): + unused_tok = [] + for s, v in self.Terminals.items(): + if s != 'error' and not v: + unused_tok.append(s) + + return unused_tok + + # ------------------------------------------------------------------------------ + # unused_rules() + # + # Find all grammar rules that were defined, but not used (maybe not reachable) + # Returns a list of productions. + # ------------------------------------------------------------------------------ + + def unused_rules(self): + unused_prod = [] + for s, v in self.Nonterminals.items(): + if not v: + p = self.Prodnames[s][0] + unused_prod.append(p) + return unused_prod + + # ----------------------------------------------------------------------------- + # unused_precedence() + # + # Returns a list of tuples (term,precedence) corresponding to precedence + # rules that were never used by the grammar. term is the name of the terminal + # on which precedence was applied and precedence is a string such as 'left' or + # 'right' corresponding to the type of precedence. + # ----------------------------------------------------------------------------- + + def unused_precedence(self): + unused = [] + for termname in self.Precedence: + if not (termname in self.Terminals or termname in self.UsedPrecedence): + unused.append((termname, self.Precedence[termname][0])) + + return unused + + # ------------------------------------------------------------------------- + # _first() + # + # Compute the value of FIRST1(beta) where beta is a tuple of symbols. + # + # During execution of compute_first1, the result may be incomplete. + # Afterward (e.g., when called from compute_follow()), it will be complete. + # ------------------------------------------------------------------------- + def _first(self, beta): + + # We are computing First(x1,x2,x3,...,xn) + result = [] + for x in beta: + x_produces_empty = False + + # Add all the non- symbols of First[x] to the result. + for f in self.First[x]: + if f == '': + x_produces_empty = True + else: + if f not in result: + result.append(f) + + if x_produces_empty: + # We have to consider the next x in beta, + # i.e. stay in the loop. + pass + else: + # We don't have to consider any further symbols in beta. + break + else: + # There was no 'break' from the loop, + # so x_produces_empty was true for all x in beta, + # so beta produces empty as well. + result.append('') + + return result + + # ------------------------------------------------------------------------- + # compute_first() + # + # Compute the value of FIRST1(X) for all symbols + # ------------------------------------------------------------------------- + def compute_first(self): + if self.First: + return self.First + + # Terminals: + for t in self.Terminals: + self.First[t] = [t] + + self.First['$end'] = ['$end'] + + # Nonterminals: + + # Initialize to the empty set: + for n in self.Nonterminals: + self.First[n] = [] + + # Then propagate symbols until no change: + while True: + some_change = False + for n in self.Nonterminals: + for p in self.Prodnames[n]: + for f in self._first(p.prod): + if f not in self.First[n]: + self.First[n].append(f) + some_change = True + if not some_change: + break + + return self.First + + # --------------------------------------------------------------------- + # compute_follow() + # + # Computes all of the follow sets for every non-terminal symbol. The + # follow set is the set of all symbols that might follow a given + # non-terminal. See the Dragon book, 2nd Ed. p. 189. + # --------------------------------------------------------------------- + def compute_follow(self, start=None): + # If already computed, return the result + if self.Follow: + return self.Follow + + # If first sets not computed yet, do that first. + if not self.First: + self.compute_first() + + # Add '$end' to the follow list of the start symbol + for k in self.Nonterminals: + self.Follow[k] = [] + + if not start: + start = self.Productions[1].name + + self.Follow[start] = ['$end'] + + while True: + didadd = False + for p in self.Productions[1:]: + # Here is the production set + for i, B in enumerate(p.prod): + if B in self.Nonterminals: + # Okay. We got a non-terminal in a production + fst = self._first(p.prod[i+1:]) + hasempty = False + for f in fst: + if f != '' and f not in self.Follow[B]: + self.Follow[B].append(f) + didadd = True + if f == '': + hasempty = True + if hasempty or i == (len(p.prod)-1): + # Add elements of follow(a) to follow(b) + for f in self.Follow[p.name]: + if f not in self.Follow[B]: + self.Follow[B].append(f) + didadd = True + if not didadd: + break + return self.Follow + + + # ----------------------------------------------------------------------------- + # build_lritems() + # + # This function walks the list of productions and builds a complete set of the + # LR items. The LR items are stored in two ways: First, they are uniquely + # numbered and placed in the list _lritems. Second, a linked list of LR items + # is built for each production. For example: + # + # E -> E PLUS E + # + # Creates the list + # + # [E -> . E PLUS E, E -> E . PLUS E, E -> E PLUS . E, E -> E PLUS E . ] + # ----------------------------------------------------------------------------- + + def build_lritems(self): + for p in self.Productions: + lastlri = p + i = 0 + lr_items = [] + while True: + if i > len(p): + lri = None + else: + lri = LRItem(p, i) + # Precompute the list of productions immediately following + try: + lri.lr_after = self.Prodnames[lri.prod[i+1]] + except (IndexError, KeyError): + lri.lr_after = [] + try: + lri.lr_before = lri.prod[i-1] + except IndexError: + lri.lr_before = None + + lastlri.lr_next = lri + if not lri: + break + lr_items.append(lri) + lastlri = lri + i += 1 + p.lr_items = lr_items + +# ----------------------------------------------------------------------------- +# == Class LRTable == +# +# This basic class represents a basic table of LR parsing information. +# Methods for generating the tables are not defined here. They are defined +# in the derived class LRGeneratedTable. +# ----------------------------------------------------------------------------- + +class VersionError(YaccError): + pass + +class LRTable(object): + def __init__(self): + self.lr_action = None + self.lr_goto = None + self.lr_productions = None + self.lr_method = None + + def read_table(self, module): + if isinstance(module, types.ModuleType): + parsetab = module + else: + exec('import %s' % module) + parsetab = sys.modules[module] + + if parsetab._tabversion != __tabversion__: + raise VersionError('yacc table file version is out of date') + + self.lr_action = parsetab._lr_action + self.lr_goto = parsetab._lr_goto + + self.lr_productions = [] + for p in parsetab._lr_productions: + self.lr_productions.append(MiniProduction(*p)) + + self.lr_method = parsetab._lr_method + return parsetab._lr_signature + + def read_pickle(self, filename): + try: + import cPickle as pickle + except ImportError: + import pickle + + if not os.path.exists(filename): + raise ImportError + + in_f = open(filename, 'rb') + + tabversion = pickle.load(in_f) + if tabversion != __tabversion__: + raise VersionError('yacc table file version is out of date') + self.lr_method = pickle.load(in_f) + signature = pickle.load(in_f) + self.lr_action = pickle.load(in_f) + self.lr_goto = pickle.load(in_f) + productions = pickle.load(in_f) + + self.lr_productions = [] + for p in productions: + self.lr_productions.append(MiniProduction(*p)) + + in_f.close() + return signature + + # Bind all production function names to callable objects in pdict + def bind_callables(self, pdict): + for p in self.lr_productions: + p.bind(pdict) + + +# ----------------------------------------------------------------------------- +# === LR Generator === +# +# The following classes and functions are used to generate LR parsing tables on +# a grammar. +# ----------------------------------------------------------------------------- + +# ----------------------------------------------------------------------------- +# digraph() +# traverse() +# +# The following two functions are used to compute set valued functions +# of the form: +# +# F(x) = F'(x) U U{F(y) | x R y} +# +# This is used to compute the values of Read() sets as well as FOLLOW sets +# in LALR(1) generation. +# +# Inputs: X - An input set +# R - A relation +# FP - Set-valued function +# ------------------------------------------------------------------------------ + +def digraph(X, R, FP): + N = {} + for x in X: + N[x] = 0 + stack = [] + F = {} + for x in X: + if N[x] == 0: + traverse(x, N, stack, F, X, R, FP) + return F + +def traverse(x, N, stack, F, X, R, FP): + stack.append(x) + d = len(stack) + N[x] = d + F[x] = FP(x) # F(X) <- F'(x) + + rel = R(x) # Get y's related to x + for y in rel: + if N[y] == 0: + traverse(y, N, stack, F, X, R, FP) + N[x] = min(N[x], N[y]) + for a in F.get(y, []): + if a not in F[x]: + F[x].append(a) + if N[x] == d: + N[stack[-1]] = MAXINT + F[stack[-1]] = F[x] + element = stack.pop() + while element != x: + N[stack[-1]] = MAXINT + F[stack[-1]] = F[x] + element = stack.pop() + +class LALRError(YaccError): + pass + +# ----------------------------------------------------------------------------- +# == LRGeneratedTable == +# +# This class implements the LR table generation algorithm. There are no +# public methods except for write() +# ----------------------------------------------------------------------------- + +class LRGeneratedTable(LRTable): + def __init__(self, grammar, method='LALR', log=None): + if method not in ['SLR', 'LALR']: + raise LALRError('Unsupported method %s' % method) + + self.grammar = grammar + self.lr_method = method + + # Set up the logger + if not log: + log = NullLogger() + self.log = log + + # Internal attributes + self.lr_action = {} # Action table + self.lr_goto = {} # Goto table + self.lr_productions = grammar.Productions # Copy of grammar Production array + self.lr_goto_cache = {} # Cache of computed gotos + self.lr0_cidhash = {} # Cache of closures + + self._add_count = 0 # Internal counter used to detect cycles + + # Diagonistic information filled in by the table generator + self.sr_conflict = 0 + self.rr_conflict = 0 + self.conflicts = [] # List of conflicts + + self.sr_conflicts = [] + self.rr_conflicts = [] + + # Build the tables + self.grammar.build_lritems() + self.grammar.compute_first() + self.grammar.compute_follow() + self.lr_parse_table() + + # Compute the LR(0) closure operation on I, where I is a set of LR(0) items. + + def lr0_closure(self, I): + self._add_count += 1 + + # Add everything in I to J + J = I[:] + didadd = True + while didadd: + didadd = False + for j in J: + for x in j.lr_after: + if getattr(x, 'lr0_added', 0) == self._add_count: + continue + # Add B --> .G to J + J.append(x.lr_next) + x.lr0_added = self._add_count + didadd = True + + return J + + # Compute the LR(0) goto function goto(I,X) where I is a set + # of LR(0) items and X is a grammar symbol. This function is written + # in a way that guarantees uniqueness of the generated goto sets + # (i.e. the same goto set will never be returned as two different Python + # objects). With uniqueness, we can later do fast set comparisons using + # id(obj) instead of element-wise comparison. + + def lr0_goto(self, I, x): + # First we look for a previously cached entry + g = self.lr_goto_cache.get((id(I), x)) + if g: + return g + + # Now we generate the goto set in a way that guarantees uniqueness + # of the result + + s = self.lr_goto_cache.get(x) + if not s: + s = {} + self.lr_goto_cache[x] = s + + gs = [] + for p in I: + n = p.lr_next + if n and n.lr_before == x: + s1 = s.get(id(n)) + if not s1: + s1 = {} + s[id(n)] = s1 + gs.append(n) + s = s1 + g = s.get('$end') + if not g: + if gs: + g = self.lr0_closure(gs) + s['$end'] = g + else: + s['$end'] = gs + self.lr_goto_cache[(id(I), x)] = g + return g + + # Compute the LR(0) sets of item function + def lr0_items(self): + C = [self.lr0_closure([self.grammar.Productions[0].lr_next])] + i = 0 + for I in C: + self.lr0_cidhash[id(I)] = i + i += 1 + + # Loop over the items in C and each grammar symbols + i = 0 + while i < len(C): + I = C[i] + i += 1 + + # Collect all of the symbols that could possibly be in the goto(I,X) sets + asyms = {} + for ii in I: + for s in ii.usyms: + asyms[s] = None + + for x in asyms: + g = self.lr0_goto(I, x) + if not g or id(g) in self.lr0_cidhash: + continue + self.lr0_cidhash[id(g)] = len(C) + C.append(g) + + return C + + # ----------------------------------------------------------------------------- + # ==== LALR(1) Parsing ==== + # + # LALR(1) parsing is almost exactly the same as SLR except that instead of + # relying upon Follow() sets when performing reductions, a more selective + # lookahead set that incorporates the state of the LR(0) machine is utilized. + # Thus, we mainly just have to focus on calculating the lookahead sets. + # + # The method used here is due to DeRemer and Pennelo (1982). + # + # DeRemer, F. L., and T. J. Pennelo: "Efficient Computation of LALR(1) + # Lookahead Sets", ACM Transactions on Programming Languages and Systems, + # Vol. 4, No. 4, Oct. 1982, pp. 615-649 + # + # Further details can also be found in: + # + # J. Tremblay and P. Sorenson, "The Theory and Practice of Compiler Writing", + # McGraw-Hill Book Company, (1985). + # + # ----------------------------------------------------------------------------- + + # ----------------------------------------------------------------------------- + # compute_nullable_nonterminals() + # + # Creates a dictionary containing all of the non-terminals that might produce + # an empty production. + # ----------------------------------------------------------------------------- + + def compute_nullable_nonterminals(self): + nullable = set() + num_nullable = 0 + while True: + for p in self.grammar.Productions[1:]: + if p.len == 0: + nullable.add(p.name) + continue + for t in p.prod: + if t not in nullable: + break + else: + nullable.add(p.name) + if len(nullable) == num_nullable: + break + num_nullable = len(nullable) + return nullable + + # ----------------------------------------------------------------------------- + # find_nonterminal_trans(C) + # + # Given a set of LR(0) items, this functions finds all of the non-terminal + # transitions. These are transitions in which a dot appears immediately before + # a non-terminal. Returns a list of tuples of the form (state,N) where state + # is the state number and N is the nonterminal symbol. + # + # The input C is the set of LR(0) items. + # ----------------------------------------------------------------------------- + + def find_nonterminal_transitions(self, C): + trans = [] + for stateno, state in enumerate(C): + for p in state: + if p.lr_index < p.len - 1: + t = (stateno, p.prod[p.lr_index+1]) + if t[1] in self.grammar.Nonterminals: + if t not in trans: + trans.append(t) + return trans + + # ----------------------------------------------------------------------------- + # dr_relation() + # + # Computes the DR(p,A) relationships for non-terminal transitions. The input + # is a tuple (state,N) where state is a number and N is a nonterminal symbol. + # + # Returns a list of terminals. + # ----------------------------------------------------------------------------- + + def dr_relation(self, C, trans, nullable): + dr_set = {} + state, N = trans + terms = [] + + g = self.lr0_goto(C[state], N) + for p in g: + if p.lr_index < p.len - 1: + a = p.prod[p.lr_index+1] + if a in self.grammar.Terminals: + if a not in terms: + terms.append(a) + + # This extra bit is to handle the start state + if state == 0 and N == self.grammar.Productions[0].prod[0]: + terms.append('$end') + + return terms + + # ----------------------------------------------------------------------------- + # reads_relation() + # + # Computes the READS() relation (p,A) READS (t,C). + # ----------------------------------------------------------------------------- + + def reads_relation(self, C, trans, empty): + # Look for empty transitions + rel = [] + state, N = trans + + g = self.lr0_goto(C[state], N) + j = self.lr0_cidhash.get(id(g), -1) + for p in g: + if p.lr_index < p.len - 1: + a = p.prod[p.lr_index + 1] + if a in empty: + rel.append((j, a)) + + return rel + + # ----------------------------------------------------------------------------- + # compute_lookback_includes() + # + # Determines the lookback and includes relations + # + # LOOKBACK: + # + # This relation is determined by running the LR(0) state machine forward. + # For example, starting with a production "N : . A B C", we run it forward + # to obtain "N : A B C ." We then build a relationship between this final + # state and the starting state. These relationships are stored in a dictionary + # lookdict. + # + # INCLUDES: + # + # Computes the INCLUDE() relation (p,A) INCLUDES (p',B). + # + # This relation is used to determine non-terminal transitions that occur + # inside of other non-terminal transition states. (p,A) INCLUDES (p', B) + # if the following holds: + # + # B -> LAT, where T -> epsilon and p' -L-> p + # + # L is essentially a prefix (which may be empty), T is a suffix that must be + # able to derive an empty string. State p' must lead to state p with the string L. + # + # ----------------------------------------------------------------------------- + + def compute_lookback_includes(self, C, trans, nullable): + lookdict = {} # Dictionary of lookback relations + includedict = {} # Dictionary of include relations + + # Make a dictionary of non-terminal transitions + dtrans = {} + for t in trans: + dtrans[t] = 1 + + # Loop over all transitions and compute lookbacks and includes + for state, N in trans: + lookb = [] + includes = [] + for p in C[state]: + if p.name != N: + continue + + # Okay, we have a name match. We now follow the production all the way + # through the state machine until we get the . on the right hand side + + lr_index = p.lr_index + j = state + while lr_index < p.len - 1: + lr_index = lr_index + 1 + t = p.prod[lr_index] + + # Check to see if this symbol and state are a non-terminal transition + if (j, t) in dtrans: + # Yes. Okay, there is some chance that this is an includes relation + # the only way to know for certain is whether the rest of the + # production derives empty + + li = lr_index + 1 + while li < p.len: + if p.prod[li] in self.grammar.Terminals: + break # No forget it + if p.prod[li] not in nullable: + break + li = li + 1 + else: + # Appears to be a relation between (j,t) and (state,N) + includes.append((j, t)) + + g = self.lr0_goto(C[j], t) # Go to next set + j = self.lr0_cidhash.get(id(g), -1) # Go to next state + + # When we get here, j is the final state, now we have to locate the production + for r in C[j]: + if r.name != p.name: + continue + if r.len != p.len: + continue + i = 0 + # This look is comparing a production ". A B C" with "A B C ." + while i < r.lr_index: + if r.prod[i] != p.prod[i+1]: + break + i = i + 1 + else: + lookb.append((j, r)) + for i in includes: + if i not in includedict: + includedict[i] = [] + includedict[i].append((state, N)) + lookdict[(state, N)] = lookb + + return lookdict, includedict + + # ----------------------------------------------------------------------------- + # compute_read_sets() + # + # Given a set of LR(0) items, this function computes the read sets. + # + # Inputs: C = Set of LR(0) items + # ntrans = Set of nonterminal transitions + # nullable = Set of empty transitions + # + # Returns a set containing the read sets + # ----------------------------------------------------------------------------- + + def compute_read_sets(self, C, ntrans, nullable): + FP = lambda x: self.dr_relation(C, x, nullable) + R = lambda x: self.reads_relation(C, x, nullable) + F = digraph(ntrans, R, FP) + return F + + # ----------------------------------------------------------------------------- + # compute_follow_sets() + # + # Given a set of LR(0) items, a set of non-terminal transitions, a readset, + # and an include set, this function computes the follow sets + # + # Follow(p,A) = Read(p,A) U U {Follow(p',B) | (p,A) INCLUDES (p',B)} + # + # Inputs: + # ntrans = Set of nonterminal transitions + # readsets = Readset (previously computed) + # inclsets = Include sets (previously computed) + # + # Returns a set containing the follow sets + # ----------------------------------------------------------------------------- + + def compute_follow_sets(self, ntrans, readsets, inclsets): + FP = lambda x: readsets[x] + R = lambda x: inclsets.get(x, []) + F = digraph(ntrans, R, FP) + return F + + # ----------------------------------------------------------------------------- + # add_lookaheads() + # + # Attaches the lookahead symbols to grammar rules. + # + # Inputs: lookbacks - Set of lookback relations + # followset - Computed follow set + # + # This function directly attaches the lookaheads to productions contained + # in the lookbacks set + # ----------------------------------------------------------------------------- + + def add_lookaheads(self, lookbacks, followset): + for trans, lb in lookbacks.items(): + # Loop over productions in lookback + for state, p in lb: + if state not in p.lookaheads: + p.lookaheads[state] = [] + f = followset.get(trans, []) + for a in f: + if a not in p.lookaheads[state]: + p.lookaheads[state].append(a) + + # ----------------------------------------------------------------------------- + # add_lalr_lookaheads() + # + # This function does all of the work of adding lookahead information for use + # with LALR parsing + # ----------------------------------------------------------------------------- + + def add_lalr_lookaheads(self, C): + # Determine all of the nullable nonterminals + nullable = self.compute_nullable_nonterminals() + + # Find all non-terminal transitions + trans = self.find_nonterminal_transitions(C) + + # Compute read sets + readsets = self.compute_read_sets(C, trans, nullable) + + # Compute lookback/includes relations + lookd, included = self.compute_lookback_includes(C, trans, nullable) + + # Compute LALR FOLLOW sets + followsets = self.compute_follow_sets(trans, readsets, included) + + # Add all of the lookaheads + self.add_lookaheads(lookd, followsets) + + # ----------------------------------------------------------------------------- + # lr_parse_table() + # + # This function constructs the parse tables for SLR or LALR + # ----------------------------------------------------------------------------- + def lr_parse_table(self): + Productions = self.grammar.Productions + Precedence = self.grammar.Precedence + goto = self.lr_goto # Goto array + action = self.lr_action # Action array + log = self.log # Logger for output + + actionp = {} # Action production array (temporary) + + log.info('Parsing method: %s', self.lr_method) + + # Step 1: Construct C = { I0, I1, ... IN}, collection of LR(0) items + # This determines the number of states + + C = self.lr0_items() + + if self.lr_method == 'LALR': + self.add_lalr_lookaheads(C) + + # Build the parser table, state by state + st = 0 + for I in C: + # Loop over each production in I + actlist = [] # List of actions + st_action = {} + st_actionp = {} + st_goto = {} + log.info('') + log.info('state %d', st) + log.info('') + for p in I: + log.info(' (%d) %s', p.number, p) + log.info('') + + for p in I: + if p.len == p.lr_index + 1: + if p.name == "S'": + # Start symbol. Accept! + st_action['$end'] = 0 + st_actionp['$end'] = p + else: + # We are at the end of a production. Reduce! + if self.lr_method == 'LALR': + laheads = p.lookaheads[st] + else: + laheads = self.grammar.Follow[p.name] + for a in laheads: + actlist.append((a, p, 'reduce using rule %d (%s)' % (p.number, p))) + r = st_action.get(a) + if r is not None: + # Whoa. Have a shift/reduce or reduce/reduce conflict + if r > 0: + # Need to decide on shift or reduce here + # By default we favor shifting. Need to add + # some precedence rules here. + + # Shift precedence comes from the token + sprec, slevel = Precedence.get(a, ('right', 0)) + + # Reduce precedence comes from rule being reduced (p) + rprec, rlevel = Productions[p.number].prec + + if (slevel < rlevel) or ((slevel == rlevel) and (rprec == 'left')): + # We really need to reduce here. + st_action[a] = -p.number + st_actionp[a] = p + if not slevel and not rlevel: + log.info(' ! shift/reduce conflict for %s resolved as reduce', a) + self.sr_conflicts.append((st, a, 'reduce')) + Productions[p.number].reduced += 1 + elif (slevel == rlevel) and (rprec == 'nonassoc'): + st_action[a] = None + else: + # Hmmm. Guess we'll keep the shift + if not rlevel: + log.info(' ! shift/reduce conflict for %s resolved as shift', a) + self.sr_conflicts.append((st, a, 'shift')) + elif r < 0: + # Reduce/reduce conflict. In this case, we favor the rule + # that was defined first in the grammar file + oldp = Productions[-r] + pp = Productions[p.number] + if oldp.line > pp.line: + st_action[a] = -p.number + st_actionp[a] = p + chosenp, rejectp = pp, oldp + Productions[p.number].reduced += 1 + Productions[oldp.number].reduced -= 1 + else: + chosenp, rejectp = oldp, pp + self.rr_conflicts.append((st, chosenp, rejectp)) + log.info(' ! reduce/reduce conflict for %s resolved using rule %d (%s)', + a, st_actionp[a].number, st_actionp[a]) + else: + raise LALRError('Unknown conflict in state %d' % st) + else: + st_action[a] = -p.number + st_actionp[a] = p + Productions[p.number].reduced += 1 + else: + i = p.lr_index + a = p.prod[i+1] # Get symbol right after the "." + if a in self.grammar.Terminals: + g = self.lr0_goto(I, a) + j = self.lr0_cidhash.get(id(g), -1) + if j >= 0: + # We are in a shift state + actlist.append((a, p, 'shift and go to state %d' % j)) + r = st_action.get(a) + if r is not None: + # Whoa have a shift/reduce or shift/shift conflict + if r > 0: + if r != j: + raise LALRError('Shift/shift conflict in state %d' % st) + elif r < 0: + # Do a precedence check. + # - if precedence of reduce rule is higher, we reduce. + # - if precedence of reduce is same and left assoc, we reduce. + # - otherwise we shift + + # Shift precedence comes from the token + sprec, slevel = Precedence.get(a, ('right', 0)) + + # Reduce precedence comes from the rule that could have been reduced + rprec, rlevel = Productions[st_actionp[a].number].prec + + if (slevel > rlevel) or ((slevel == rlevel) and (rprec == 'right')): + # We decide to shift here... highest precedence to shift + Productions[st_actionp[a].number].reduced -= 1 + st_action[a] = j + st_actionp[a] = p + if not rlevel: + log.info(' ! shift/reduce conflict for %s resolved as shift', a) + self.sr_conflicts.append((st, a, 'shift')) + elif (slevel == rlevel) and (rprec == 'nonassoc'): + st_action[a] = None + else: + # Hmmm. Guess we'll keep the reduce + if not slevel and not rlevel: + log.info(' ! shift/reduce conflict for %s resolved as reduce', a) + self.sr_conflicts.append((st, a, 'reduce')) + + else: + raise LALRError('Unknown conflict in state %d' % st) + else: + st_action[a] = j + st_actionp[a] = p + + # Print the actions associated with each terminal + _actprint = {} + for a, p, m in actlist: + if a in st_action: + if p is st_actionp[a]: + log.info(' %-15s %s', a, m) + _actprint[(a, m)] = 1 + log.info('') + # Print the actions that were not used. (debugging) + not_used = 0 + for a, p, m in actlist: + if a in st_action: + if p is not st_actionp[a]: + if not (a, m) in _actprint: + log.debug(' ! %-15s [ %s ]', a, m) + not_used = 1 + _actprint[(a, m)] = 1 + if not_used: + log.debug('') + + # Construct the goto table for this state + + nkeys = {} + for ii in I: + for s in ii.usyms: + if s in self.grammar.Nonterminals: + nkeys[s] = None + for n in nkeys: + g = self.lr0_goto(I, n) + j = self.lr0_cidhash.get(id(g), -1) + if j >= 0: + st_goto[n] = j + log.info(' %-30s shift and go to state %d', n, j) + + action[st] = st_action + actionp[st] = st_actionp + goto[st] = st_goto + st += 1 + + # ----------------------------------------------------------------------------- + # write() + # + # This function writes the LR parsing tables to a file + # ----------------------------------------------------------------------------- + + def write_table(self, tabmodule, outputdir='', signature=''): + if isinstance(tabmodule, types.ModuleType): + raise IOError("Won't overwrite existing tabmodule") + + basemodulename = tabmodule.split('.')[-1] + filename = os.path.join(outputdir, basemodulename) + '.py' + try: + f = open(filename, 'w') + + f.write(''' +# %s +# This file is automatically generated. Do not edit. +_tabversion = %r + +_lr_method = %r + +_lr_signature = %r + ''' % (os.path.basename(filename), __tabversion__, self.lr_method, signature)) + + # Change smaller to 0 to go back to original tables + smaller = 1 + + # Factor out names to try and make smaller + if smaller: + items = {} + + for s, nd in self.lr_action.items(): + for name, v in nd.items(): + i = items.get(name) + if not i: + i = ([], []) + items[name] = i + i[0].append(s) + i[1].append(v) + + f.write('\n_lr_action_items = {') + for k, v in items.items(): + f.write('%r:([' % k) + for i in v[0]: + f.write('%r,' % i) + f.write('],[') + for i in v[1]: + f.write('%r,' % i) + + f.write(']),') + f.write('}\n') + + f.write(''' +_lr_action = {} +for _k, _v in _lr_action_items.items(): + for _x,_y in zip(_v[0],_v[1]): + if not _x in _lr_action: _lr_action[_x] = {} + _lr_action[_x][_k] = _y +del _lr_action_items +''') + + else: + f.write('\n_lr_action = { ') + for k, v in self.lr_action.items(): + f.write('(%r,%r):%r,' % (k[0], k[1], v)) + f.write('}\n') + + if smaller: + # Factor out names to try and make smaller + items = {} + + for s, nd in self.lr_goto.items(): + for name, v in nd.items(): + i = items.get(name) + if not i: + i = ([], []) + items[name] = i + i[0].append(s) + i[1].append(v) + + f.write('\n_lr_goto_items = {') + for k, v in items.items(): + f.write('%r:([' % k) + for i in v[0]: + f.write('%r,' % i) + f.write('],[') + for i in v[1]: + f.write('%r,' % i) + + f.write(']),') + f.write('}\n') + + f.write(''' +_lr_goto = {} +for _k, _v in _lr_goto_items.items(): + for _x, _y in zip(_v[0], _v[1]): + if not _x in _lr_goto: _lr_goto[_x] = {} + _lr_goto[_x][_k] = _y +del _lr_goto_items +''') + else: + f.write('\n_lr_goto = { ') + for k, v in self.lr_goto.items(): + f.write('(%r,%r):%r,' % (k[0], k[1], v)) + f.write('}\n') + + # Write production table + f.write('_lr_productions = [\n') + for p in self.lr_productions: + if p.func: + f.write(' (%r,%r,%d,%r,%r,%d),\n' % (p.str, p.name, p.len, + p.func, os.path.basename(p.file), p.line)) + else: + f.write(' (%r,%r,%d,None,None,None),\n' % (str(p), p.name, p.len)) + f.write(']\n') + f.close() + + except IOError as e: + raise + + + # ----------------------------------------------------------------------------- + # pickle_table() + # + # This function pickles the LR parsing tables to a supplied file object + # ----------------------------------------------------------------------------- + + def pickle_table(self, filename, signature=''): + try: + import cPickle as pickle + except ImportError: + import pickle + with open(filename, 'wb') as outf: + pickle.dump(__tabversion__, outf, pickle_protocol) + pickle.dump(self.lr_method, outf, pickle_protocol) + pickle.dump(signature, outf, pickle_protocol) + pickle.dump(self.lr_action, outf, pickle_protocol) + pickle.dump(self.lr_goto, outf, pickle_protocol) + + outp = [] + for p in self.lr_productions: + if p.func: + outp.append((p.str, p.name, p.len, p.func, os.path.basename(p.file), p.line)) + else: + outp.append((str(p), p.name, p.len, None, None, None)) + pickle.dump(outp, outf, pickle_protocol) + +# ----------------------------------------------------------------------------- +# === INTROSPECTION === +# +# The following functions and classes are used to implement the PLY +# introspection features followed by the yacc() function itself. +# ----------------------------------------------------------------------------- + +# ----------------------------------------------------------------------------- +# get_caller_module_dict() +# +# This function returns a dictionary containing all of the symbols defined within +# a caller further down the call stack. This is used to get the environment +# associated with the yacc() call if none was provided. +# ----------------------------------------------------------------------------- + +def get_caller_module_dict(levels): + f = sys._getframe(levels) + ldict = f.f_globals.copy() + if f.f_globals != f.f_locals: + ldict.update(f.f_locals) + return ldict + +# ----------------------------------------------------------------------------- +# parse_grammar() +# +# This takes a raw grammar rule string and parses it into production data +# ----------------------------------------------------------------------------- +def parse_grammar(doc, file, line): + grammar = [] + # Split the doc string into lines + pstrings = doc.splitlines() + lastp = None + dline = line + for ps in pstrings: + dline += 1 + p = ps.split() + if not p: + continue + try: + if p[0] == '|': + # This is a continuation of a previous rule + if not lastp: + raise SyntaxError("%s:%d: Misplaced '|'" % (file, dline)) + prodname = lastp + syms = p[1:] + else: + prodname = p[0] + lastp = prodname + syms = p[2:] + assign = p[1] + if assign != ':' and assign != '::=': + raise SyntaxError("%s:%d: Syntax error. Expected ':'" % (file, dline)) + + grammar.append((file, dline, prodname, syms)) + except SyntaxError: + raise + except Exception: + raise SyntaxError('%s:%d: Syntax error in rule %r' % (file, dline, ps.strip())) + + return grammar + +# ----------------------------------------------------------------------------- +# ParserReflect() +# +# This class represents information extracted for building a parser including +# start symbol, error function, tokens, precedence list, action functions, +# etc. +# ----------------------------------------------------------------------------- +class ParserReflect(object): + def __init__(self, pdict, log=None): + self.pdict = pdict + self.start = None + self.error_func = None + self.tokens = None + self.modules = set() + self.grammar = [] + self.error = False + + if log is None: + self.log = PlyLogger(sys.stderr) + else: + self.log = log + + # Get all of the basic information + def get_all(self): + self.get_start() + self.get_error_func() + self.get_tokens() + self.get_precedence() + self.get_pfunctions() + + # Validate all of the information + def validate_all(self): + self.validate_start() + self.validate_error_func() + self.validate_tokens() + self.validate_precedence() + self.validate_pfunctions() + self.validate_modules() + return self.error + + # Compute a signature over the grammar + def signature(self): + parts = [] + try: + if self.start: + parts.append(self.start) + if self.prec: + parts.append(''.join([''.join(p) for p in self.prec])) + if self.tokens: + parts.append(' '.join(self.tokens)) + for f in self.pfuncs: + if f[3]: + parts.append(f[3]) + except (TypeError, ValueError): + pass + return ''.join(parts) + + # ----------------------------------------------------------------------------- + # validate_modules() + # + # This method checks to see if there are duplicated p_rulename() functions + # in the parser module file. Without this function, it is really easy for + # users to make mistakes by cutting and pasting code fragments (and it's a real + # bugger to try and figure out why the resulting parser doesn't work). Therefore, + # we just do a little regular expression pattern matching of def statements + # to try and detect duplicates. + # ----------------------------------------------------------------------------- + + def validate_modules(self): + # Match def p_funcname( + fre = re.compile(r'\s*def\s+(p_[a-zA-Z_0-9]*)\(') + + for module in self.modules: + try: + lines, linen = inspect.getsourcelines(module) + except IOError: + continue + + counthash = {} + for linen, line in enumerate(lines): + linen += 1 + m = fre.match(line) + if m: + name = m.group(1) + prev = counthash.get(name) + if not prev: + counthash[name] = linen + else: + filename = inspect.getsourcefile(module) + self.log.warning('%s:%d: Function %s redefined. Previously defined on line %d', + filename, linen, name, prev) + + # Get the start symbol + def get_start(self): + self.start = self.pdict.get('start') + + # Validate the start symbol + def validate_start(self): + if self.start is not None: + if not isinstance(self.start, string_types): + self.log.error("'start' must be a string") + + # Look for error handler + def get_error_func(self): + self.error_func = self.pdict.get('p_error') + + # Validate the error function + def validate_error_func(self): + if self.error_func: + if isinstance(self.error_func, types.FunctionType): + ismethod = 0 + elif isinstance(self.error_func, types.MethodType): + ismethod = 1 + else: + self.log.error("'p_error' defined, but is not a function or method") + self.error = True + return + + eline = self.error_func.__code__.co_firstlineno + efile = self.error_func.__code__.co_filename + module = inspect.getmodule(self.error_func) + self.modules.add(module) + + argcount = self.error_func.__code__.co_argcount - ismethod + if argcount != 1: + self.log.error('%s:%d: p_error() requires 1 argument', efile, eline) + self.error = True + + # Get the tokens map + def get_tokens(self): + tokens = self.pdict.get('tokens') + if not tokens: + self.log.error('No token list is defined') + self.error = True + return + + if not isinstance(tokens, (list, tuple)): + self.log.error('tokens must be a list or tuple') + self.error = True + return + + if not tokens: + self.log.error('tokens is empty') + self.error = True + return + + self.tokens = tokens + + # Validate the tokens + def validate_tokens(self): + # Validate the tokens. + if 'error' in self.tokens: + self.log.error("Illegal token name 'error'. Is a reserved word") + self.error = True + return + + terminals = set() + for n in self.tokens: + if n in terminals: + self.log.warning('Token %r multiply defined', n) + terminals.add(n) + + # Get the precedence map (if any) + def get_precedence(self): + self.prec = self.pdict.get('precedence') + + # Validate and parse the precedence map + def validate_precedence(self): + preclist = [] + if self.prec: + if not isinstance(self.prec, (list, tuple)): + self.log.error('precedence must be a list or tuple') + self.error = True + return + for level, p in enumerate(self.prec): + if not isinstance(p, (list, tuple)): + self.log.error('Bad precedence table') + self.error = True + return + + if len(p) < 2: + self.log.error('Malformed precedence entry %s. Must be (assoc, term, ..., term)', p) + self.error = True + return + assoc = p[0] + if not isinstance(assoc, string_types): + self.log.error('precedence associativity must be a string') + self.error = True + return + for term in p[1:]: + if not isinstance(term, string_types): + self.log.error('precedence items must be strings') + self.error = True + return + preclist.append((term, assoc, level+1)) + self.preclist = preclist + + # Get all p_functions from the grammar + def get_pfunctions(self): + p_functions = [] + for name, item in self.pdict.items(): + if not name.startswith('p_') or name == 'p_error': + continue + if isinstance(item, (types.FunctionType, types.MethodType)): + line = getattr(item, 'co_firstlineno', item.__code__.co_firstlineno) + module = inspect.getmodule(item) + p_functions.append((line, module, name, item.__doc__)) + + # Sort all of the actions by line number; make sure to stringify + # modules to make them sortable, since `line` may not uniquely sort all + # p functions + p_functions.sort(key=lambda p_function: ( + p_function[0], + str(p_function[1]), + p_function[2], + p_function[3])) + self.pfuncs = p_functions + + # Validate all of the p_functions + def validate_pfunctions(self): + grammar = [] + # Check for non-empty symbols + if len(self.pfuncs) == 0: + self.log.error('no rules of the form p_rulename are defined') + self.error = True + return + + for line, module, name, doc in self.pfuncs: + file = inspect.getsourcefile(module) + func = self.pdict[name] + if isinstance(func, types.MethodType): + reqargs = 2 + else: + reqargs = 1 + if func.__code__.co_argcount > reqargs: + self.log.error('%s:%d: Rule %r has too many arguments', file, line, func.__name__) + self.error = True + elif func.__code__.co_argcount < reqargs: + self.log.error('%s:%d: Rule %r requires an argument', file, line, func.__name__) + self.error = True + elif not func.__doc__: + self.log.warning('%s:%d: No documentation string specified in function %r (ignored)', + file, line, func.__name__) + else: + try: + parsed_g = parse_grammar(doc, file, line) + for g in parsed_g: + grammar.append((name, g)) + except SyntaxError as e: + self.log.error(str(e)) + self.error = True + + # Looks like a valid grammar rule + # Mark the file in which defined. + self.modules.add(module) + + # Secondary validation step that looks for p_ definitions that are not functions + # or functions that look like they might be grammar rules. + + for n, v in self.pdict.items(): + if n.startswith('p_') and isinstance(v, (types.FunctionType, types.MethodType)): + continue + if n.startswith('t_'): + continue + if n.startswith('p_') and n != 'p_error': + self.log.warning('%r not defined as a function', n) + if ((isinstance(v, types.FunctionType) and v.__code__.co_argcount == 1) or + (isinstance(v, types.MethodType) and v.__func__.__code__.co_argcount == 2)): + if v.__doc__: + try: + doc = v.__doc__.split(' ') + if doc[1] == ':': + self.log.warning('%s:%d: Possible grammar rule %r defined without p_ prefix', + v.__code__.co_filename, v.__code__.co_firstlineno, n) + except IndexError: + pass + + self.grammar = grammar + +# ----------------------------------------------------------------------------- +# yacc(module) +# +# Build a parser +# ----------------------------------------------------------------------------- + +def yacc(method='LALR', debug=yaccdebug, module=None, tabmodule=tab_module, start=None, + check_recursion=True, optimize=False, write_tables=True, debugfile=debug_file, + outputdir=None, debuglog=None, errorlog=None, picklefile=None): + + if tabmodule is None: + tabmodule = tab_module + + # Reference to the parsing method of the last built parser + global parse + + # If pickling is enabled, table files are not created + if picklefile: + write_tables = 0 + + if errorlog is None: + errorlog = PlyLogger(sys.stderr) + + # Get the module dictionary used for the parser + if module: + _items = [(k, getattr(module, k)) for k in dir(module)] + pdict = dict(_items) + # If no __file__ attribute is available, try to obtain it from the __module__ instead + if '__file__' not in pdict: + pdict['__file__'] = sys.modules[pdict['__module__']].__file__ + else: + pdict = get_caller_module_dict(2) + + if outputdir is None: + # If no output directory is set, the location of the output files + # is determined according to the following rules: + # - If tabmodule specifies a package, files go into that package directory + # - Otherwise, files go in the same directory as the specifying module + if isinstance(tabmodule, types.ModuleType): + srcfile = tabmodule.__file__ + else: + if '.' not in tabmodule: + srcfile = pdict['__file__'] + else: + parts = tabmodule.split('.') + pkgname = '.'.join(parts[:-1]) + exec('import %s' % pkgname) + srcfile = getattr(sys.modules[pkgname], '__file__', '') + outputdir = os.path.dirname(srcfile) + + # Determine if the module is package of a package or not. + # If so, fix the tabmodule setting so that tables load correctly + pkg = pdict.get('__package__') + if pkg and isinstance(tabmodule, str): + if '.' not in tabmodule: + tabmodule = pkg + '.' + tabmodule + + + + # Set start symbol if it's specified directly using an argument + if start is not None: + pdict['start'] = start + + # Collect parser information from the dictionary + pinfo = ParserReflect(pdict, log=errorlog) + pinfo.get_all() + + if pinfo.error: + raise YaccError('Unable to build parser') + + # Check signature against table files (if any) + signature = pinfo.signature() + + # Read the tables + try: + lr = LRTable() + if picklefile: + read_signature = lr.read_pickle(picklefile) + else: + read_signature = lr.read_table(tabmodule) + if optimize or (read_signature == signature): + try: + lr.bind_callables(pinfo.pdict) + parser = LRParser(lr, pinfo.error_func) + parse = parser.parse + return parser + except Exception as e: + errorlog.warning('There was a problem loading the table file: %r', e) + except VersionError as e: + errorlog.warning(str(e)) + except ImportError: + pass + + if debuglog is None: + if debug: + try: + debuglog = PlyLogger(open(os.path.join(outputdir, debugfile), 'w')) + except IOError as e: + errorlog.warning("Couldn't open %r. %s" % (debugfile, e)) + debuglog = NullLogger() + else: + debuglog = NullLogger() + + debuglog.info('Created by PLY version %s (http://www.dabeaz.com/ply)', __version__) + + errors = False + + # Validate the parser information + if pinfo.validate_all(): + raise YaccError('Unable to build parser') + + if not pinfo.error_func: + errorlog.warning('no p_error() function is defined') + + # Create a grammar object + grammar = Grammar(pinfo.tokens) + + # Set precedence level for terminals + for term, assoc, level in pinfo.preclist: + try: + grammar.set_precedence(term, assoc, level) + except GrammarError as e: + errorlog.warning('%s', e) + + # Add productions to the grammar + for funcname, gram in pinfo.grammar: + file, line, prodname, syms = gram + try: + grammar.add_production(prodname, syms, funcname, file, line) + except GrammarError as e: + errorlog.error('%s', e) + errors = True + + # Set the grammar start symbols + try: + if start is None: + grammar.set_start(pinfo.start) + else: + grammar.set_start(start) + except GrammarError as e: + errorlog.error(str(e)) + errors = True + + if errors: + raise YaccError('Unable to build parser') + + # Verify the grammar structure + undefined_symbols = grammar.undefined_symbols() + for sym, prod in undefined_symbols: + errorlog.error('%s:%d: Symbol %r used, but not defined as a token or a rule', prod.file, prod.line, sym) + errors = True + + unused_terminals = grammar.unused_terminals() + if unused_terminals: + debuglog.info('') + debuglog.info('Unused terminals:') + debuglog.info('') + for term in unused_terminals: + errorlog.warning('Token %r defined, but not used', term) + debuglog.info(' %s', term) + + # Print out all productions to the debug log + if debug: + debuglog.info('') + debuglog.info('Grammar') + debuglog.info('') + for n, p in enumerate(grammar.Productions): + debuglog.info('Rule %-5d %s', n, p) + + # Find unused non-terminals + unused_rules = grammar.unused_rules() + for prod in unused_rules: + errorlog.warning('%s:%d: Rule %r defined, but not used', prod.file, prod.line, prod.name) + + if len(unused_terminals) == 1: + errorlog.warning('There is 1 unused token') + if len(unused_terminals) > 1: + errorlog.warning('There are %d unused tokens', len(unused_terminals)) + + if len(unused_rules) == 1: + errorlog.warning('There is 1 unused rule') + if len(unused_rules) > 1: + errorlog.warning('There are %d unused rules', len(unused_rules)) + + if debug: + debuglog.info('') + debuglog.info('Terminals, with rules where they appear') + debuglog.info('') + terms = list(grammar.Terminals) + terms.sort() + for term in terms: + debuglog.info('%-20s : %s', term, ' '.join([str(s) for s in grammar.Terminals[term]])) + + debuglog.info('') + debuglog.info('Nonterminals, with rules where they appear') + debuglog.info('') + nonterms = list(grammar.Nonterminals) + nonterms.sort() + for nonterm in nonterms: + debuglog.info('%-20s : %s', nonterm, ' '.join([str(s) for s in grammar.Nonterminals[nonterm]])) + debuglog.info('') + + if check_recursion: + unreachable = grammar.find_unreachable() + for u in unreachable: + errorlog.warning('Symbol %r is unreachable', u) + + infinite = grammar.infinite_cycles() + for inf in infinite: + errorlog.error('Infinite recursion detected for symbol %r', inf) + errors = True + + unused_prec = grammar.unused_precedence() + for term, assoc in unused_prec: + errorlog.error('Precedence rule %r defined for unknown symbol %r', assoc, term) + errors = True + + if errors: + raise YaccError('Unable to build parser') + + # Run the LRGeneratedTable on the grammar + if debug: + errorlog.debug('Generating %s tables', method) + + lr = LRGeneratedTable(grammar, method, debuglog) + + if debug: + num_sr = len(lr.sr_conflicts) + + # Report shift/reduce and reduce/reduce conflicts + if num_sr == 1: + errorlog.warning('1 shift/reduce conflict') + elif num_sr > 1: + errorlog.warning('%d shift/reduce conflicts', num_sr) + + num_rr = len(lr.rr_conflicts) + if num_rr == 1: + errorlog.warning('1 reduce/reduce conflict') + elif num_rr > 1: + errorlog.warning('%d reduce/reduce conflicts', num_rr) + + # Write out conflicts to the output file + if debug and (lr.sr_conflicts or lr.rr_conflicts): + debuglog.warning('') + debuglog.warning('Conflicts:') + debuglog.warning('') + + for state, tok, resolution in lr.sr_conflicts: + debuglog.warning('shift/reduce conflict for %s in state %d resolved as %s', tok, state, resolution) + + already_reported = set() + for state, rule, rejected in lr.rr_conflicts: + if (state, id(rule), id(rejected)) in already_reported: + continue + debuglog.warning('reduce/reduce conflict in state %d resolved using rule (%s)', state, rule) + debuglog.warning('rejected rule (%s) in state %d', rejected, state) + errorlog.warning('reduce/reduce conflict in state %d resolved using rule (%s)', state, rule) + errorlog.warning('rejected rule (%s) in state %d', rejected, state) + already_reported.add((state, id(rule), id(rejected))) + + warned_never = [] + for state, rule, rejected in lr.rr_conflicts: + if not rejected.reduced and (rejected not in warned_never): + debuglog.warning('Rule (%s) is never reduced', rejected) + errorlog.warning('Rule (%s) is never reduced', rejected) + warned_never.append(rejected) + + # Write the table file if requested + if write_tables: + try: + lr.write_table(tabmodule, outputdir, signature) + except IOError as e: + errorlog.warning("Couldn't create %r. %s" % (tabmodule, e)) + + # Write a pickled version of the tables + if picklefile: + try: + lr.pickle_table(picklefile, signature) + except IOError as e: + errorlog.warning("Couldn't create %r. %s" % (picklefile, e)) + + # Build the parser + lr.bind_callables(pinfo.pdict) + parser = LRParser(lr, pinfo.error_func) + + parse = parser.parse + return parser diff --git a/gestao_raul/Lib/site-packages/pycparser/ply/ygen.py b/gestao_raul/Lib/site-packages/pycparser/ply/ygen.py new file mode 100644 index 0000000..acf5ca1 --- /dev/null +++ b/gestao_raul/Lib/site-packages/pycparser/ply/ygen.py @@ -0,0 +1,74 @@ +# ply: ygen.py +# +# This is a support program that auto-generates different versions of the YACC parsing +# function with different features removed for the purposes of performance. +# +# Users should edit the method LParser.parsedebug() in yacc.py. The source code +# for that method is then used to create the other methods. See the comments in +# yacc.py for further details. + +import os.path +import shutil + +def get_source_range(lines, tag): + srclines = enumerate(lines) + start_tag = '#--! %s-start' % tag + end_tag = '#--! %s-end' % tag + + for start_index, line in srclines: + if line.strip().startswith(start_tag): + break + + for end_index, line in srclines: + if line.strip().endswith(end_tag): + break + + return (start_index + 1, end_index) + +def filter_section(lines, tag): + filtered_lines = [] + include = True + tag_text = '#--! %s' % tag + for line in lines: + if line.strip().startswith(tag_text): + include = not include + elif include: + filtered_lines.append(line) + return filtered_lines + +def main(): + dirname = os.path.dirname(__file__) + shutil.copy2(os.path.join(dirname, 'yacc.py'), os.path.join(dirname, 'yacc.py.bak')) + with open(os.path.join(dirname, 'yacc.py'), 'r') as f: + lines = f.readlines() + + parse_start, parse_end = get_source_range(lines, 'parsedebug') + parseopt_start, parseopt_end = get_source_range(lines, 'parseopt') + parseopt_notrack_start, parseopt_notrack_end = get_source_range(lines, 'parseopt-notrack') + + # Get the original source + orig_lines = lines[parse_start:parse_end] + + # Filter the DEBUG sections out + parseopt_lines = filter_section(orig_lines, 'DEBUG') + + # Filter the TRACKING sections out + parseopt_notrack_lines = filter_section(parseopt_lines, 'TRACKING') + + # Replace the parser source sections with updated versions + lines[parseopt_notrack_start:parseopt_notrack_end] = parseopt_notrack_lines + lines[parseopt_start:parseopt_end] = parseopt_lines + + lines = [line.rstrip()+'\n' for line in lines] + with open(os.path.join(dirname, 'yacc.py'), 'w') as f: + f.writelines(lines) + + print('Updated yacc.py') + +if __name__ == '__main__': + main() + + + + + diff --git a/gestao_raul/Lib/site-packages/pycparser/plyparser.py b/gestao_raul/Lib/site-packages/pycparser/plyparser.py new file mode 100644 index 0000000..b8f4c43 --- /dev/null +++ b/gestao_raul/Lib/site-packages/pycparser/plyparser.py @@ -0,0 +1,133 @@ +#----------------------------------------------------------------- +# plyparser.py +# +# PLYParser class and other utilities for simplifying programming +# parsers with PLY +# +# Eli Bendersky [https://eli.thegreenplace.net/] +# License: BSD +#----------------------------------------------------------------- + +import warnings + +class Coord(object): + """ Coordinates of a syntactic element. Consists of: + - File name + - Line number + - (optional) column number, for the Lexer + """ + __slots__ = ('file', 'line', 'column', '__weakref__') + def __init__(self, file, line, column=None): + self.file = file + self.line = line + self.column = column + + def __str__(self): + str = "%s:%s" % (self.file, self.line) + if self.column: str += ":%s" % self.column + return str + + +class ParseError(Exception): pass + + +class PLYParser(object): + def _create_opt_rule(self, rulename): + """ Given a rule name, creates an optional ply.yacc rule + for it. The name of the optional rule is + _opt + """ + optname = rulename + '_opt' + + def optrule(self, p): + p[0] = p[1] + + optrule.__doc__ = '%s : empty\n| %s' % (optname, rulename) + optrule.__name__ = 'p_%s' % optname + setattr(self.__class__, optrule.__name__, optrule) + + def _coord(self, lineno, column=None): + return Coord( + file=self.clex.filename, + line=lineno, + column=column) + + def _token_coord(self, p, token_idx): + """ Returns the coordinates for the YaccProduction object 'p' indexed + with 'token_idx'. The coordinate includes the 'lineno' and + 'column'. Both follow the lex semantic, starting from 1. + """ + last_cr = p.lexer.lexer.lexdata.rfind('\n', 0, p.lexpos(token_idx)) + if last_cr < 0: + last_cr = -1 + column = (p.lexpos(token_idx) - (last_cr)) + return self._coord(p.lineno(token_idx), column) + + def _parse_error(self, msg, coord): + raise ParseError("%s: %s" % (coord, msg)) + + +def parameterized(*params): + """ Decorator to create parameterized rules. + + Parameterized rule methods must be named starting with 'p_' and contain + 'xxx', and their docstrings may contain 'xxx' and 'yyy'. These will be + replaced by the given parameter tuples. For example, ``p_xxx_rule()`` with + docstring 'xxx_rule : yyy' when decorated with + ``@parameterized(('id', 'ID'))`` produces ``p_id_rule()`` with the docstring + 'id_rule : ID'. Using multiple tuples produces multiple rules. + """ + def decorate(rule_func): + rule_func._params = params + return rule_func + return decorate + + +def template(cls): + """ Class decorator to generate rules from parameterized rule templates. + + See `parameterized` for more information on parameterized rules. + """ + issued_nodoc_warning = False + for attr_name in dir(cls): + if attr_name.startswith('p_'): + method = getattr(cls, attr_name) + if hasattr(method, '_params'): + # Remove the template method + delattr(cls, attr_name) + # Create parameterized rules from this method; only run this if + # the method has a docstring. This is to address an issue when + # pycparser's users are installed in -OO mode which strips + # docstrings away. + # See: https://github.com/eliben/pycparser/pull/198/ and + # https://github.com/eliben/pycparser/issues/197 + # for discussion. + if method.__doc__ is not None: + _create_param_rules(cls, method) + elif not issued_nodoc_warning: + warnings.warn( + 'parsing methods must have __doc__ for pycparser to work properly', + RuntimeWarning, + stacklevel=2) + issued_nodoc_warning = True + return cls + + +def _create_param_rules(cls, func): + """ Create ply.yacc rules based on a parameterized rule function + + Generates new methods (one per each pair of parameters) based on the + template rule function `func`, and attaches them to `cls`. The rule + function's parameters must be accessible via its `_params` attribute. + """ + for xxx, yyy in func._params: + # Use the template method's body for each new method + def param_rule(self, p): + func(self, p) + + # Substitute in the params for the grammar rule and function name + param_rule.__doc__ = func.__doc__.replace('xxx', xxx).replace('yyy', yyy) + param_rule.__name__ = func.__name__.replace('xxx', xxx) + + # Attach the new method to the class + setattr(cls, param_rule.__name__, param_rule) diff --git a/gestao_raul/Lib/site-packages/pycparser/yacctab.py b/gestao_raul/Lib/site-packages/pycparser/yacctab.py new file mode 100644 index 0000000..68b1466 --- /dev/null +++ b/gestao_raul/Lib/site-packages/pycparser/yacctab.py @@ -0,0 +1,369 @@ + +# yacctab.py +# This file is automatically generated. Do not edit. +_tabversion = '3.10' + +_lr_method = 'LALR' + +_lr_signature = 'translation_unit_or_emptyleftLORleftLANDleftORleftXORleftANDleftEQNEleftGTGELTLEleftRSHIFTLSHIFTleftPLUSMINUSleftTIMESDIVIDEMODAUTO BREAK CASE CHAR CONST CONTINUE DEFAULT DO DOUBLE ELSE ENUM EXTERN FLOAT FOR GOTO IF INLINE INT LONG REGISTER OFFSETOF RESTRICT RETURN SHORT SIGNED SIZEOF STATIC STRUCT SWITCH TYPEDEF UNION UNSIGNED VOID VOLATILE WHILE __INT128 _BOOL _COMPLEX _NORETURN _THREAD_LOCAL _STATIC_ASSERT _ATOMIC _ALIGNOF _ALIGNAS _PRAGMA ID TYPEID INT_CONST_DEC INT_CONST_OCT INT_CONST_HEX INT_CONST_BIN INT_CONST_CHAR FLOAT_CONST HEX_FLOAT_CONST CHAR_CONST WCHAR_CONST U8CHAR_CONST U16CHAR_CONST U32CHAR_CONST STRING_LITERAL WSTRING_LITERAL U8STRING_LITERAL U16STRING_LITERAL U32STRING_LITERAL PLUS MINUS TIMES DIVIDE MOD OR AND NOT XOR LSHIFT RSHIFT LOR LAND LNOT LT LE GT GE EQ NE EQUALS TIMESEQUAL DIVEQUAL MODEQUAL PLUSEQUAL MINUSEQUAL LSHIFTEQUAL RSHIFTEQUAL ANDEQUAL XOREQUAL OREQUAL PLUSPLUS MINUSMINUS ARROW CONDOP LPAREN RPAREN LBRACKET RBRACKET LBRACE RBRACE COMMA PERIOD SEMI COLON ELLIPSIS PPHASH PPPRAGMA PPPRAGMASTRabstract_declarator_opt : empty\n| abstract_declaratorassignment_expression_opt : empty\n| assignment_expressionblock_item_list_opt : empty\n| block_item_listdeclaration_list_opt : empty\n| declaration_listdeclaration_specifiers_no_type_opt : empty\n| declaration_specifiers_no_typedesignation_opt : empty\n| designationexpression_opt : empty\n| expressionid_init_declarator_list_opt : empty\n| id_init_declarator_listidentifier_list_opt : empty\n| identifier_listinit_declarator_list_opt : empty\n| init_declarator_listinitializer_list_opt : empty\n| initializer_listparameter_type_list_opt : empty\n| parameter_type_liststruct_declarator_list_opt : empty\n| struct_declarator_listtype_qualifier_list_opt : empty\n| type_qualifier_list direct_id_declarator : ID\n direct_id_declarator : LPAREN id_declarator RPAREN\n direct_id_declarator : direct_id_declarator LBRACKET type_qualifier_list_opt assignment_expression_opt RBRACKET\n direct_id_declarator : direct_id_declarator LBRACKET STATIC type_qualifier_list_opt assignment_expression RBRACKET\n | direct_id_declarator LBRACKET type_qualifier_list STATIC assignment_expression RBRACKET\n direct_id_declarator : direct_id_declarator LBRACKET type_qualifier_list_opt TIMES RBRACKET\n direct_id_declarator : direct_id_declarator LPAREN parameter_type_list RPAREN\n | direct_id_declarator LPAREN identifier_list_opt RPAREN\n direct_typeid_declarator : TYPEID\n direct_typeid_declarator : LPAREN typeid_declarator RPAREN\n direct_typeid_declarator : direct_typeid_declarator LBRACKET type_qualifier_list_opt assignment_expression_opt RBRACKET\n direct_typeid_declarator : direct_typeid_declarator LBRACKET STATIC type_qualifier_list_opt assignment_expression RBRACKET\n | direct_typeid_declarator LBRACKET type_qualifier_list STATIC assignment_expression RBRACKET\n direct_typeid_declarator : direct_typeid_declarator LBRACKET type_qualifier_list_opt TIMES RBRACKET\n direct_typeid_declarator : direct_typeid_declarator LPAREN parameter_type_list RPAREN\n | direct_typeid_declarator LPAREN identifier_list_opt RPAREN\n direct_typeid_noparen_declarator : TYPEID\n direct_typeid_noparen_declarator : direct_typeid_noparen_declarator LBRACKET type_qualifier_list_opt assignment_expression_opt RBRACKET\n direct_typeid_noparen_declarator : direct_typeid_noparen_declarator LBRACKET STATIC type_qualifier_list_opt assignment_expression RBRACKET\n | direct_typeid_noparen_declarator LBRACKET type_qualifier_list STATIC assignment_expression RBRACKET\n direct_typeid_noparen_declarator : direct_typeid_noparen_declarator LBRACKET type_qualifier_list_opt TIMES RBRACKET\n direct_typeid_noparen_declarator : direct_typeid_noparen_declarator LPAREN parameter_type_list RPAREN\n | direct_typeid_noparen_declarator LPAREN identifier_list_opt RPAREN\n id_declarator : direct_id_declarator\n id_declarator : pointer direct_id_declarator\n typeid_declarator : direct_typeid_declarator\n typeid_declarator : pointer direct_typeid_declarator\n typeid_noparen_declarator : direct_typeid_noparen_declarator\n typeid_noparen_declarator : pointer direct_typeid_noparen_declarator\n translation_unit_or_empty : translation_unit\n | empty\n translation_unit : external_declaration\n translation_unit : translation_unit external_declaration\n external_declaration : function_definition\n external_declaration : declaration\n external_declaration : pp_directive\n | pppragma_directive\n external_declaration : SEMI\n external_declaration : static_assert\n static_assert : _STATIC_ASSERT LPAREN constant_expression COMMA unified_string_literal RPAREN\n | _STATIC_ASSERT LPAREN constant_expression RPAREN\n pp_directive : PPHASH\n pppragma_directive : PPPRAGMA\n | PPPRAGMA PPPRAGMASTR\n | _PRAGMA LPAREN unified_string_literal RPAREN\n pppragma_directive_list : pppragma_directive\n | pppragma_directive_list pppragma_directive\n function_definition : id_declarator declaration_list_opt compound_statement\n function_definition : declaration_specifiers id_declarator declaration_list_opt compound_statement\n statement : labeled_statement\n | expression_statement\n | compound_statement\n | selection_statement\n | iteration_statement\n | jump_statement\n | pppragma_directive\n | static_assert\n pragmacomp_or_statement : pppragma_directive_list statement\n | statement\n decl_body : declaration_specifiers init_declarator_list_opt\n | declaration_specifiers_no_type id_init_declarator_list_opt\n declaration : decl_body SEMI\n declaration_list : declaration\n | declaration_list declaration\n declaration_specifiers_no_type : type_qualifier declaration_specifiers_no_type_opt\n declaration_specifiers_no_type : storage_class_specifier declaration_specifiers_no_type_opt\n declaration_specifiers_no_type : function_specifier declaration_specifiers_no_type_opt\n declaration_specifiers_no_type : atomic_specifier declaration_specifiers_no_type_opt\n declaration_specifiers_no_type : alignment_specifier declaration_specifiers_no_type_opt\n declaration_specifiers : declaration_specifiers type_qualifier\n declaration_specifiers : declaration_specifiers storage_class_specifier\n declaration_specifiers : declaration_specifiers function_specifier\n declaration_specifiers : declaration_specifiers type_specifier_no_typeid\n declaration_specifiers : type_specifier\n declaration_specifiers : declaration_specifiers_no_type type_specifier\n declaration_specifiers : declaration_specifiers alignment_specifier\n storage_class_specifier : AUTO\n | REGISTER\n | STATIC\n | EXTERN\n | TYPEDEF\n | _THREAD_LOCAL\n function_specifier : INLINE\n | _NORETURN\n type_specifier_no_typeid : VOID\n | _BOOL\n | CHAR\n | SHORT\n | INT\n | LONG\n | FLOAT\n | DOUBLE\n | _COMPLEX\n | SIGNED\n | UNSIGNED\n | __INT128\n type_specifier : typedef_name\n | enum_specifier\n | struct_or_union_specifier\n | type_specifier_no_typeid\n | atomic_specifier\n atomic_specifier : _ATOMIC LPAREN type_name RPAREN\n type_qualifier : CONST\n | RESTRICT\n | VOLATILE\n | _ATOMIC\n init_declarator_list : init_declarator\n | init_declarator_list COMMA init_declarator\n init_declarator : declarator\n | declarator EQUALS initializer\n id_init_declarator_list : id_init_declarator\n | id_init_declarator_list COMMA init_declarator\n id_init_declarator : id_declarator\n | id_declarator EQUALS initializer\n specifier_qualifier_list : specifier_qualifier_list type_specifier_no_typeid\n specifier_qualifier_list : specifier_qualifier_list type_qualifier\n specifier_qualifier_list : type_specifier\n specifier_qualifier_list : type_qualifier_list type_specifier\n specifier_qualifier_list : alignment_specifier\n specifier_qualifier_list : specifier_qualifier_list alignment_specifier\n struct_or_union_specifier : struct_or_union ID\n | struct_or_union TYPEID\n struct_or_union_specifier : struct_or_union brace_open struct_declaration_list brace_close\n | struct_or_union brace_open brace_close\n struct_or_union_specifier : struct_or_union ID brace_open struct_declaration_list brace_close\n | struct_or_union ID brace_open brace_close\n | struct_or_union TYPEID brace_open struct_declaration_list brace_close\n | struct_or_union TYPEID brace_open brace_close\n struct_or_union : STRUCT\n | UNION\n struct_declaration_list : struct_declaration\n | struct_declaration_list struct_declaration\n struct_declaration : specifier_qualifier_list struct_declarator_list_opt SEMI\n struct_declaration : SEMI\n struct_declaration : pppragma_directive\n struct_declarator_list : struct_declarator\n | struct_declarator_list COMMA struct_declarator\n struct_declarator : declarator\n struct_declarator : declarator COLON constant_expression\n | COLON constant_expression\n enum_specifier : ENUM ID\n | ENUM TYPEID\n enum_specifier : ENUM brace_open enumerator_list brace_close\n enum_specifier : ENUM ID brace_open enumerator_list brace_close\n | ENUM TYPEID brace_open enumerator_list brace_close\n enumerator_list : enumerator\n | enumerator_list COMMA\n | enumerator_list COMMA enumerator\n alignment_specifier : _ALIGNAS LPAREN type_name RPAREN\n | _ALIGNAS LPAREN constant_expression RPAREN\n enumerator : ID\n | ID EQUALS constant_expression\n declarator : id_declarator\n | typeid_declarator\n pointer : TIMES type_qualifier_list_opt\n | TIMES type_qualifier_list_opt pointer\n type_qualifier_list : type_qualifier\n | type_qualifier_list type_qualifier\n parameter_type_list : parameter_list\n | parameter_list COMMA ELLIPSIS\n parameter_list : parameter_declaration\n | parameter_list COMMA parameter_declaration\n parameter_declaration : declaration_specifiers id_declarator\n | declaration_specifiers typeid_noparen_declarator\n parameter_declaration : declaration_specifiers abstract_declarator_opt\n identifier_list : identifier\n | identifier_list COMMA identifier\n initializer : assignment_expression\n initializer : brace_open initializer_list_opt brace_close\n | brace_open initializer_list COMMA brace_close\n initializer_list : designation_opt initializer\n | initializer_list COMMA designation_opt initializer\n designation : designator_list EQUALS\n designator_list : designator\n | designator_list designator\n designator : LBRACKET constant_expression RBRACKET\n | PERIOD identifier\n type_name : specifier_qualifier_list abstract_declarator_opt\n abstract_declarator : pointer\n abstract_declarator : pointer direct_abstract_declarator\n abstract_declarator : direct_abstract_declarator\n direct_abstract_declarator : LPAREN abstract_declarator RPAREN direct_abstract_declarator : direct_abstract_declarator LBRACKET assignment_expression_opt RBRACKET\n direct_abstract_declarator : LBRACKET type_qualifier_list_opt assignment_expression_opt RBRACKET\n direct_abstract_declarator : direct_abstract_declarator LBRACKET TIMES RBRACKET\n direct_abstract_declarator : LBRACKET TIMES RBRACKET\n direct_abstract_declarator : direct_abstract_declarator LPAREN parameter_type_list_opt RPAREN\n direct_abstract_declarator : LPAREN parameter_type_list_opt RPAREN\n block_item : declaration\n | statement\n block_item_list : block_item\n | block_item_list block_item\n compound_statement : brace_open block_item_list_opt brace_close labeled_statement : ID COLON pragmacomp_or_statement labeled_statement : CASE constant_expression COLON pragmacomp_or_statement labeled_statement : DEFAULT COLON pragmacomp_or_statement selection_statement : IF LPAREN expression RPAREN pragmacomp_or_statement selection_statement : IF LPAREN expression RPAREN statement ELSE pragmacomp_or_statement selection_statement : SWITCH LPAREN expression RPAREN pragmacomp_or_statement iteration_statement : WHILE LPAREN expression RPAREN pragmacomp_or_statement iteration_statement : DO pragmacomp_or_statement WHILE LPAREN expression RPAREN SEMI iteration_statement : FOR LPAREN expression_opt SEMI expression_opt SEMI expression_opt RPAREN pragmacomp_or_statement iteration_statement : FOR LPAREN declaration expression_opt SEMI expression_opt RPAREN pragmacomp_or_statement jump_statement : GOTO ID SEMI jump_statement : BREAK SEMI jump_statement : CONTINUE SEMI jump_statement : RETURN expression SEMI\n | RETURN SEMI\n expression_statement : expression_opt SEMI expression : assignment_expression\n | expression COMMA assignment_expression\n assignment_expression : LPAREN compound_statement RPAREN typedef_name : TYPEID assignment_expression : conditional_expression\n | unary_expression assignment_operator assignment_expression\n assignment_operator : EQUALS\n | XOREQUAL\n | TIMESEQUAL\n | DIVEQUAL\n | MODEQUAL\n | PLUSEQUAL\n | MINUSEQUAL\n | LSHIFTEQUAL\n | RSHIFTEQUAL\n | ANDEQUAL\n | OREQUAL\n constant_expression : conditional_expression conditional_expression : binary_expression\n | binary_expression CONDOP expression COLON conditional_expression\n binary_expression : cast_expression\n | binary_expression TIMES binary_expression\n | binary_expression DIVIDE binary_expression\n | binary_expression MOD binary_expression\n | binary_expression PLUS binary_expression\n | binary_expression MINUS binary_expression\n | binary_expression RSHIFT binary_expression\n | binary_expression LSHIFT binary_expression\n | binary_expression LT binary_expression\n | binary_expression LE binary_expression\n | binary_expression GE binary_expression\n | binary_expression GT binary_expression\n | binary_expression EQ binary_expression\n | binary_expression NE binary_expression\n | binary_expression AND binary_expression\n | binary_expression OR binary_expression\n | binary_expression XOR binary_expression\n | binary_expression LAND binary_expression\n | binary_expression LOR binary_expression\n cast_expression : unary_expression cast_expression : LPAREN type_name RPAREN cast_expression unary_expression : postfix_expression unary_expression : PLUSPLUS unary_expression\n | MINUSMINUS unary_expression\n | unary_operator cast_expression\n unary_expression : SIZEOF unary_expression\n | SIZEOF LPAREN type_name RPAREN\n | _ALIGNOF LPAREN type_name RPAREN\n unary_operator : AND\n | TIMES\n | PLUS\n | MINUS\n | NOT\n | LNOT\n postfix_expression : primary_expression postfix_expression : postfix_expression LBRACKET expression RBRACKET postfix_expression : postfix_expression LPAREN argument_expression_list RPAREN\n | postfix_expression LPAREN RPAREN\n postfix_expression : postfix_expression PERIOD ID\n | postfix_expression PERIOD TYPEID\n | postfix_expression ARROW ID\n | postfix_expression ARROW TYPEID\n postfix_expression : postfix_expression PLUSPLUS\n | postfix_expression MINUSMINUS\n postfix_expression : LPAREN type_name RPAREN brace_open initializer_list brace_close\n | LPAREN type_name RPAREN brace_open initializer_list COMMA brace_close\n primary_expression : identifier primary_expression : constant primary_expression : unified_string_literal\n | unified_wstring_literal\n primary_expression : LPAREN expression RPAREN primary_expression : OFFSETOF LPAREN type_name COMMA offsetof_member_designator RPAREN\n offsetof_member_designator : identifier\n | offsetof_member_designator PERIOD identifier\n | offsetof_member_designator LBRACKET expression RBRACKET\n argument_expression_list : assignment_expression\n | argument_expression_list COMMA assignment_expression\n identifier : ID constant : INT_CONST_DEC\n | INT_CONST_OCT\n | INT_CONST_HEX\n | INT_CONST_BIN\n | INT_CONST_CHAR\n constant : FLOAT_CONST\n | HEX_FLOAT_CONST\n constant : CHAR_CONST\n | WCHAR_CONST\n | U8CHAR_CONST\n | U16CHAR_CONST\n | U32CHAR_CONST\n unified_string_literal : STRING_LITERAL\n | unified_string_literal STRING_LITERAL\n unified_wstring_literal : WSTRING_LITERAL\n | U8STRING_LITERAL\n | U16STRING_LITERAL\n | U32STRING_LITERAL\n | unified_wstring_literal WSTRING_LITERAL\n | unified_wstring_literal U8STRING_LITERAL\n | unified_wstring_literal U16STRING_LITERAL\n | unified_wstring_literal U32STRING_LITERAL\n brace_open : LBRACE\n brace_close : RBRACE\n empty : ' + +_lr_action_items = {'$end':([0,1,2,3,4,5,6,7,8,9,10,14,15,64,90,91,127,208,251,262,267,355,499,],[-340,0,-58,-59,-60,-62,-63,-64,-65,-66,-67,-70,-71,-61,-90,-72,-76,-339,-77,-73,-69,-221,-68,]),'SEMI':([0,2,4,5,6,7,8,9,10,12,13,14,15,19,21,22,23,24,25,26,27,28,29,31,32,33,34,35,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,64,69,70,71,72,73,74,75,76,77,78,79,81,83,84,85,86,87,88,89,90,91,97,98,99,100,101,102,103,104,105,106,107,108,110,111,112,117,118,119,121,122,123,124,127,128,130,132,139,140,143,144,145,146,151,152,158,159,162,163,164,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,203,204,205,206,207,208,209,210,211,212,214,220,221,222,223,224,225,226,227,228,229,230,231,232,233,236,239,242,245,246,247,248,249,250,251,252,253,254,255,262,263,267,291,292,293,295,296,297,300,301,302,303,311,312,326,327,330,333,334,335,336,337,338,339,340,341,342,343,344,345,346,348,349,353,354,355,356,357,358,360,361,369,370,371,372,373,374,375,376,377,403,404,406,409,410,411,412,413,414,415,416,417,418,419,420,421,422,423,424,425,426,429,431,432,433,434,439,440,459,460,463,464,465,468,469,470,471,473,475,479,480,481,482,483,484,485,486,493,494,497,499,501,502,505,506,508,509,522,523,524,525,526,527,529,530,531,535,536,538,552,553,554,555,556,558,561,563,570,571,574,579,580,582,584,585,586,],[9,9,-60,-62,-63,-64,-65,-66,-67,-340,90,-70,-71,-52,-340,-340,-340,-128,-102,-340,-340,-29,-107,-125,-126,-127,-129,-241,-113,-114,-115,-116,-117,-118,-119,-120,-121,-122,-123,-124,-134,-131,-132,-133,-105,-106,-108,-109,-110,-111,-112,-61,-340,-340,-129,-134,-181,-98,-99,-100,-101,-104,-88,-134,-19,-20,-135,-137,-182,-54,-37,-90,-72,-53,-93,-9,-10,-340,-94,-95,-103,-89,-129,-15,-16,-139,-141,-97,-96,-169,-170,-338,-149,-150,210,-76,-340,-181,-55,-328,-30,-306,-255,-256,-258,-277,-279,-292,-315,-304,-305,-307,-316,-317,-318,-319,-320,-321,-322,-323,-324,-325,-326,-327,-330,-331,-332,-333,210,210,210,-152,-159,-339,-340,-162,-163,-145,-147,-13,-340,-219,-217,-218,-78,-79,-80,-81,-82,-83,-84,-85,-315,361,-14,-340,374,375,377,-238,-242,-277,-77,-38,-136,-138,-196,-73,-329,-69,-300,-301,-280,-281,-282,-283,-334,-335,-336,-337,-35,-36,-140,-142,-171,210,-154,210,-156,-151,-160,465,-143,-144,-148,-25,-26,-164,-166,-146,-130,-177,-178,-221,-220,-13,-340,-340,-237,-340,-87,-74,-340,483,-233,-234,484,-236,-43,-44,-308,-259,-260,-261,-262,-263,-264,-265,-266,-267,-268,-269,-270,-271,-272,-273,-274,-275,-276,-295,-296,-297,-298,-299,-31,-34,-172,-173,-153,-155,-161,-168,-222,-340,-224,-240,-239,-86,-75,529,-340,-232,-235,-243,-197,-39,-42,-278,-68,-293,-294,-284,-285,-32,-33,-165,-167,-223,-340,-340,-340,-340,559,-198,-40,-41,-257,-225,-87,-74,-227,-228,572,-302,-309,-340,580,-303,-226,-229,-340,-340,-231,-230,]),'PPHASH':([0,2,4,5,6,7,8,9,10,14,15,64,90,91,127,208,251,262,267,355,499,],[14,14,-60,-62,-63,-64,-65,-66,-67,-70,-71,-61,-90,-72,-76,-339,-77,-73,-69,-221,-68,]),'PPPRAGMA':([0,2,4,5,6,7,8,9,10,14,15,64,90,91,121,124,127,128,203,204,205,207,208,210,211,221,222,223,224,225,226,227,228,229,230,231,232,242,251,262,267,333,335,338,355,356,358,360,361,369,370,371,374,375,377,465,469,470,471,479,480,483,484,499,524,525,526,527,552,553,554,555,556,570,579,580,582,584,585,586,],[15,15,-60,-62,-63,-64,-65,-66,-67,-70,-71,-61,-90,-72,-338,15,-76,15,15,15,15,-159,-339,-162,-163,15,-219,-217,-218,-78,-79,-80,-81,-82,-83,-84,-85,15,-77,-73,-69,15,15,-160,-221,-220,15,15,-237,15,-87,-74,-233,-234,-236,-161,-222,15,-224,-86,-75,-232,-235,-68,-223,15,15,15,-225,-87,-74,-227,-228,15,-226,-229,15,15,-231,-230,]),'_PRAGMA':([0,2,4,5,6,7,8,9,10,14,15,64,90,91,121,124,127,128,203,204,205,207,208,210,211,221,222,223,224,225,226,227,228,229,230,231,232,242,251,262,267,333,335,338,355,356,358,360,361,369,370,371,374,375,377,465,469,470,471,479,480,483,484,499,524,525,526,527,552,553,554,555,556,570,579,580,582,584,585,586,],[16,16,-60,-62,-63,-64,-65,-66,-67,-70,-71,-61,-90,-72,-338,16,-76,16,16,16,16,-159,-339,-162,-163,16,-219,-217,-218,-78,-79,-80,-81,-82,-83,-84,-85,16,-77,-73,-69,16,16,-160,-221,-220,16,16,-237,16,-87,-74,-233,-234,-236,-161,-222,16,-224,-86,-75,-232,-235,-68,-223,16,16,16,-225,-87,-74,-227,-228,16,-226,-229,16,16,-231,-230,]),'_STATIC_ASSERT':([0,2,4,5,6,7,8,9,10,14,15,64,90,91,121,127,128,208,221,222,223,224,225,226,227,228,229,230,231,232,242,251,262,267,355,356,358,360,361,369,370,371,374,375,377,469,470,471,479,480,483,484,499,524,525,526,527,552,553,554,555,556,570,579,580,582,584,585,586,],[18,18,-60,-62,-63,-64,-65,-66,-67,-70,-71,-61,-90,-72,-338,-76,18,-339,18,-219,-217,-218,-78,-79,-80,-81,-82,-83,-84,-85,18,-77,-73,-69,-221,-220,18,18,-237,18,-87,-74,-233,-234,-236,-222,18,-224,-86,-75,-232,-235,-68,-223,18,18,18,-225,-87,-74,-227,-228,18,-226,-229,18,18,-231,-230,]),'ID':([0,2,4,5,6,7,8,9,10,12,14,15,17,20,21,22,23,24,25,26,27,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,62,63,64,69,70,71,72,74,75,76,77,78,80,81,82,90,91,94,95,96,98,99,100,101,102,103,104,106,112,113,114,115,116,117,118,119,120,121,122,123,126,127,128,134,135,136,137,141,147,148,149,150,153,154,155,156,160,161,182,183,184,192,194,195,196,197,198,199,206,208,209,212,214,221,222,223,224,225,226,227,228,229,230,231,232,234,238,242,244,247,251,256,257,258,259,262,267,268,269,270,271,272,273,274,275,276,277,278,279,280,281,282,283,284,285,286,287,288,289,290,294,298,306,309,310,314,318,322,323,330,331,332,334,336,337,340,341,342,347,348,349,353,354,355,356,358,360,361,362,365,366,367,369,370,371,372,374,375,377,378,379,380,381,382,383,384,385,386,387,388,389,392,393,394,397,398,400,401,402,405,448,449,452,455,457,459,460,463,464,466,467,469,470,471,474,479,480,482,483,484,487,489,498,499,500,503,507,510,511,512,520,524,525,526,527,528,529,532,533,543,544,545,552,553,554,555,556,559,562,564,565,570,572,579,580,582,584,585,586,],[28,28,-60,-62,-63,-64,-65,-66,-67,28,-70,-71,28,28,-340,-340,-340,-128,-102,28,-340,-107,-340,-125,-126,-127,-129,-241,118,122,-113,-114,-115,-116,-117,-118,-119,-120,-121,-122,-123,-124,-134,-131,-132,-133,-105,-106,-108,-109,-110,-111,-112,-157,-158,-61,28,28,-129,-134,-98,-99,-100,-101,-104,28,-134,28,-90,-72,159,-340,159,-93,-9,-10,-340,-94,-95,-103,-129,-97,-183,-27,-28,-185,-96,-169,-170,202,-338,-149,-150,159,-76,233,28,159,-340,159,159,-287,-288,-289,-286,159,159,159,159,-290,-291,159,-340,-28,28,28,159,-184,-186,202,202,-152,-339,28,-145,-147,233,-219,-217,-218,-78,-79,-80,-81,-82,-83,-84,-85,159,159,233,373,159,-77,-340,159,-340,-28,-73,-69,159,159,159,159,159,159,159,159,159,159,159,159,159,159,159,159,159,159,159,159,159,431,433,159,159,-287,159,159,159,28,28,-340,-171,202,159,-154,-156,-151,-143,-144,-148,159,-146,-130,-177,-178,-221,-220,233,233,-237,159,159,159,159,233,-87,-74,159,-233,-234,-236,159,-244,-245,-246,-247,-248,-249,-250,-251,-252,-253,-254,-11,159,-12,159,159,-287,159,159,159,-340,159,28,159,159,-172,-173,-153,-155,28,159,-222,233,-224,159,-86,-75,159,-232,-235,-340,-201,-340,-68,159,159,159,159,-340,-28,-287,-223,233,233,233,159,159,159,-11,-287,159,159,-225,-87,-74,-227,-228,159,-340,159,159,233,159,-226,-229,233,233,-231,-230,]),'LPAREN':([0,2,4,5,6,7,8,9,10,12,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,64,69,70,71,72,74,75,76,77,78,80,81,82,88,89,90,91,94,95,97,98,99,100,101,102,103,104,106,109,112,113,114,115,116,117,118,119,121,122,123,126,127,128,132,134,135,136,139,140,141,143,147,148,149,150,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,192,194,195,196,197,206,208,209,212,214,216,221,222,223,224,225,226,227,228,229,230,231,232,233,234,237,238,240,241,242,243,247,251,252,256,257,258,259,262,263,267,268,269,270,271,272,273,274,275,276,277,278,279,280,281,282,283,284,285,286,287,288,291,292,294,298,300,301,302,303,306,309,310,311,312,318,319,322,323,324,325,330,332,334,336,337,340,341,342,347,348,349,351,352,353,354,355,356,358,360,361,362,365,366,367,369,370,371,372,374,375,377,378,379,380,381,382,383,384,385,386,387,388,389,392,393,394,397,400,401,402,403,404,405,406,429,431,432,433,434,439,440,446,447,448,452,455,457,459,460,463,464,466,467,469,470,471,474,478,479,480,482,483,484,487,489,493,494,498,499,500,501,502,503,508,509,510,511,512,515,516,518,520,524,525,526,527,528,529,532,533,535,536,543,544,545,546,547,548,549,550,551,552,553,554,555,556,559,561,562,563,565,566,567,570,572,574,577,578,579,580,582,584,585,586,],[17,17,-60,-62,-63,-64,-65,-66,-67,82,-70,-71,92,17,94,96,17,-340,-340,-340,-128,-102,17,-340,-29,-107,-340,-125,-126,-127,-129,-241,-113,-114,-115,-116,-117,-118,-119,-120,-121,-122,-123,-124,125,-131,-132,-133,-105,-106,-108,-109,-110,-111,-112,126,-61,82,17,-129,125,-98,-99,-100,-101,-104,82,-134,82,137,-37,-90,-72,141,-340,96,-93,-9,-10,-340,-94,-95,-103,-129,125,-97,-183,-27,-28,-185,-96,-169,-170,-338,-149,-150,141,-76,238,137,82,238,-340,-328,-30,238,-306,-287,-288,-289,-286,288,294,294,141,298,299,-292,-315,-290,-291,-304,-305,-307,304,-316,-317,-318,-319,-320,-321,-322,-323,-324,-325,-326,-327,-330,-331,-332,-333,238,-340,-28,322,82,238,-184,-186,-152,-339,82,-145,-147,351,238,-219,-217,-218,-78,-79,-80,-81,-82,-83,-84,-85,-315,141,362,238,366,367,238,372,238,-77,-38,-340,238,-340,-28,-73,-329,-69,238,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,238,238,-300,-301,238,238,-334,-335,-336,-337,-287,238,238,-35,-36,322,449,322,-340,-45,458,-171,141,-154,-156,-151,-143,-144,-148,141,-146,-130,351,351,-177,-178,-221,-220,238,238,-237,238,238,238,238,238,-87,-74,238,-233,-234,-236,238,-244,-245,-246,-247,-248,-249,-250,-251,-252,-253,-254,-11,238,-12,141,-287,238,238,-43,-44,141,-308,-295,-296,-297,-298,-299,-31,-34,449,458,-340,322,238,238,-172,-173,-153,-155,82,141,-222,238,-224,141,528,-86,-75,238,-232,-235,-340,-201,-39,-42,-340,-68,141,-293,-294,238,-32,-33,238,-340,-28,-210,-216,-214,-287,-223,238,238,238,238,238,238,-11,-40,-41,-287,238,238,-50,-51,-212,-211,-213,-215,-225,-87,-74,-227,-228,238,-302,-340,-309,238,-46,-49,238,238,-303,-47,-48,-226,-229,238,238,-231,-230,]),'TIMES':([0,2,4,5,6,7,8,9,10,12,14,15,17,21,22,23,24,25,26,27,29,30,31,32,33,34,35,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,64,69,70,71,72,74,75,76,77,78,81,82,90,91,94,95,98,99,100,101,102,103,104,106,112,113,114,115,116,117,118,119,121,122,123,126,127,128,134,135,136,139,141,143,145,146,147,148,149,150,151,152,153,154,155,156,158,159,160,161,162,163,164,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,192,194,195,197,206,208,209,212,214,216,221,222,223,224,225,226,227,228,229,230,231,232,233,234,238,242,247,250,251,256,257,258,259,262,263,267,268,269,270,271,272,273,274,275,276,277,278,279,280,281,282,283,284,285,286,287,288,291,292,293,294,295,296,297,298,300,301,302,303,306,309,310,322,323,330,332,334,336,337,340,341,342,347,348,349,351,353,354,355,356,358,360,361,362,365,366,367,369,370,371,372,374,375,377,378,379,380,381,382,383,384,385,386,387,388,389,392,393,394,397,400,401,402,405,406,409,410,411,412,413,414,415,416,417,418,419,420,421,422,423,424,425,426,429,431,432,433,434,448,455,457,459,460,463,464,466,467,469,470,471,474,479,480,482,483,484,487,489,497,498,499,500,501,502,503,505,506,510,511,512,520,524,525,526,527,528,529,532,533,543,544,545,552,553,554,555,556,559,561,562,563,565,570,572,574,579,580,582,584,585,586,],[30,30,-60,-62,-63,-64,-65,-66,-67,30,-70,-71,30,-340,-340,-340,-128,-102,30,-340,-107,-340,-125,-126,-127,-129,-241,-113,-114,-115,-116,-117,-118,-119,-120,-121,-122,-123,-124,-134,-131,-132,-133,-105,-106,-108,-109,-110,-111,-112,-61,30,30,-129,-134,-98,-99,-100,-101,-104,-134,30,-90,-72,147,-340,-93,-9,-10,-340,-94,-95,-103,-129,-97,30,-27,-28,-185,-96,-169,-170,-338,-149,-150,147,-76,147,30,147,-340,-328,147,-306,269,-258,-287,-288,-289,-286,-277,-279,147,147,147,147,-292,-315,-290,-291,-304,-305,-307,-316,-317,-318,-319,-320,-321,-322,-323,-324,-325,-326,-327,-330,-331,-332,-333,306,-340,-28,30,30,147,-186,-152,-339,30,-145,-147,30,147,-219,-217,-218,-78,-79,-80,-81,-82,-83,-84,-85,-315,147,147,147,147,-277,-77,-340,400,-340,-28,-73,-329,-69,147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,-300,-301,-280,147,-281,-282,-283,147,-334,-335,-336,-337,-287,147,147,30,456,-171,147,-154,-156,-151,-143,-144,-148,147,-146,-130,30,-177,-178,-221,-220,147,147,-237,147,147,147,147,147,-87,-74,147,-233,-234,-236,147,-244,-245,-246,-247,-248,-249,-250,-251,-252,-253,-254,-11,147,-12,147,-287,147,147,147,-308,-259,-260,-261,269,269,269,269,269,269,269,269,269,269,269,269,269,269,269,-295,-296,-297,-298,-299,-340,147,520,-172,-173,-153,-155,30,147,-222,147,-224,147,-86,-75,147,-232,-235,-340,-201,-278,-340,-68,147,-293,-294,147,-284,-285,543,-340,-28,-287,-223,147,147,147,147,147,147,-11,-287,147,147,-225,-87,-74,-227,-228,147,-302,-340,-309,147,147,147,-303,-226,-229,147,147,-231,-230,]),'TYPEID':([0,2,4,5,6,7,8,9,10,11,12,14,15,19,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,62,63,64,67,68,69,70,71,72,73,74,75,76,77,78,80,81,82,90,91,96,97,98,99,100,101,102,103,104,106,112,113,114,115,116,117,118,119,121,122,123,124,125,126,127,128,129,134,137,140,141,192,193,194,196,197,203,204,205,206,207,208,209,210,211,212,213,214,221,222,223,224,225,226,227,228,229,230,231,232,238,251,262,267,289,290,294,298,299,304,311,312,313,318,322,330,333,334,335,336,337,338,340,341,342,348,349,351,353,354,355,356,361,370,371,372,374,375,377,439,440,449,458,459,460,463,464,465,466,469,471,479,480,483,484,499,508,509,524,552,553,554,555,556,579,580,585,586,],[35,35,-60,-62,-63,-64,-65,-66,-67,35,89,-70,-71,-52,-340,-340,-340,-128,-102,35,-340,-29,-107,-340,-125,-126,-127,-129,-241,119,123,-113,-114,-115,-116,-117,-118,-119,-120,-121,-122,-123,-124,-134,-131,-132,-133,-105,-106,-108,-109,-110,-111,-112,-157,-158,-61,35,-91,89,35,-129,-134,35,-98,-99,-100,-101,-104,89,-134,89,-90,-72,35,-53,-93,-9,-10,-340,-94,-95,-103,-129,-97,-183,-27,-28,-185,-96,-169,-170,-338,-149,-150,35,35,35,-76,35,-92,89,35,-30,35,324,35,89,-184,-186,35,35,35,-152,-159,-339,89,-162,-163,-145,35,-147,35,-219,-217,-218,-78,-79,-80,-81,-82,-83,-84,-85,35,-77,-73,-69,432,434,35,35,35,35,-35,-36,35,324,35,-171,35,-154,35,-156,-151,-160,-143,-144,-148,-146,-130,35,-177,-178,-221,-220,-237,-87,-84,35,-233,-234,-236,-31,-34,35,35,-172,-173,-153,-155,-161,89,-222,-224,-86,-84,-232,-235,-68,-32,-33,-223,-225,-87,-84,-227,-228,-226,-229,-231,-230,]),'ENUM':([0,2,4,5,6,7,8,9,10,11,14,15,19,21,22,23,26,27,28,29,34,50,51,52,53,54,55,56,57,58,59,60,64,67,68,70,71,72,73,90,91,96,97,98,99,100,101,102,103,112,116,117,121,124,125,126,127,128,129,137,140,141,193,197,203,204,205,207,208,210,211,213,221,222,223,224,225,226,227,228,229,230,231,232,238,251,262,267,294,298,299,304,311,312,313,322,333,335,338,349,351,353,354,355,356,361,370,371,372,374,375,377,439,440,449,458,465,469,471,479,480,483,484,499,508,509,524,552,553,554,555,556,579,580,585,586,],[36,36,-60,-62,-63,-64,-65,-66,-67,36,-70,-71,-52,-340,-340,-340,36,-340,-29,-107,-340,-134,-131,-132,-133,-105,-106,-108,-109,-110,-111,-112,-61,36,-91,36,-340,-134,36,-90,-72,36,-53,-93,-9,-10,-340,-94,-95,-97,-185,-96,-338,36,36,36,-76,36,-92,36,-30,36,36,-186,36,36,36,-159,-339,-162,-163,36,36,-219,-217,-218,-78,-79,-80,-81,-82,-83,-84,-85,36,-77,-73,-69,36,36,36,36,-35,-36,36,36,36,36,-160,-130,36,-177,-178,-221,-220,-237,-87,-84,36,-233,-234,-236,-31,-34,36,36,-161,-222,-224,-86,-84,-232,-235,-68,-32,-33,-223,-225,-87,-84,-227,-228,-226,-229,-231,-230,]),'VOID':([0,2,4,5,6,7,8,9,10,11,12,14,15,19,21,22,23,24,25,26,27,28,29,31,32,33,34,35,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,64,67,68,69,70,71,72,73,74,75,76,77,78,81,90,91,96,97,98,99,100,101,102,103,104,106,112,116,117,118,119,121,122,123,124,125,126,127,128,129,137,140,141,192,193,197,203,204,205,206,207,208,209,210,211,212,213,214,216,221,222,223,224,225,226,227,228,229,230,231,232,238,251,262,267,294,298,299,304,311,312,313,322,330,333,334,335,336,337,338,340,341,342,348,349,351,353,354,355,356,361,370,371,372,374,375,377,439,440,449,458,459,460,463,464,465,469,471,479,480,483,484,499,508,509,524,552,553,554,555,556,579,580,585,586,],[38,38,-60,-62,-63,-64,-65,-66,-67,38,38,-70,-71,-52,-340,-340,-340,-128,-102,38,-340,-29,-107,-125,-126,-127,-129,-241,-113,-114,-115,-116,-117,-118,-119,-120,-121,-122,-123,-124,-134,-131,-132,-133,-105,-106,-108,-109,-110,-111,-112,-61,38,-91,38,38,-129,-134,38,-98,-99,-100,-101,-104,-134,-90,-72,38,-53,-93,-9,-10,-340,-94,-95,-103,-129,-97,-185,-96,-169,-170,-338,-149,-150,38,38,38,-76,38,-92,38,-30,38,38,38,-186,38,38,38,-152,-159,-339,38,-162,-163,-145,38,-147,38,38,-219,-217,-218,-78,-79,-80,-81,-82,-83,-84,-85,38,-77,-73,-69,38,38,38,38,-35,-36,38,38,-171,38,-154,38,-156,-151,-160,-143,-144,-148,-146,-130,38,-177,-178,-221,-220,-237,-87,-84,38,-233,-234,-236,-31,-34,38,38,-172,-173,-153,-155,-161,-222,-224,-86,-84,-232,-235,-68,-32,-33,-223,-225,-87,-84,-227,-228,-226,-229,-231,-230,]),'_BOOL':([0,2,4,5,6,7,8,9,10,11,12,14,15,19,21,22,23,24,25,26,27,28,29,31,32,33,34,35,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,64,67,68,69,70,71,72,73,74,75,76,77,78,81,90,91,96,97,98,99,100,101,102,103,104,106,112,116,117,118,119,121,122,123,124,125,126,127,128,129,137,140,141,192,193,197,203,204,205,206,207,208,209,210,211,212,213,214,216,221,222,223,224,225,226,227,228,229,230,231,232,238,251,262,267,294,298,299,304,311,312,313,322,330,333,334,335,336,337,338,340,341,342,348,349,351,353,354,355,356,361,370,371,372,374,375,377,439,440,449,458,459,460,463,464,465,469,471,479,480,483,484,499,508,509,524,552,553,554,555,556,579,580,585,586,],[39,39,-60,-62,-63,-64,-65,-66,-67,39,39,-70,-71,-52,-340,-340,-340,-128,-102,39,-340,-29,-107,-125,-126,-127,-129,-241,-113,-114,-115,-116,-117,-118,-119,-120,-121,-122,-123,-124,-134,-131,-132,-133,-105,-106,-108,-109,-110,-111,-112,-61,39,-91,39,39,-129,-134,39,-98,-99,-100,-101,-104,-134,-90,-72,39,-53,-93,-9,-10,-340,-94,-95,-103,-129,-97,-185,-96,-169,-170,-338,-149,-150,39,39,39,-76,39,-92,39,-30,39,39,39,-186,39,39,39,-152,-159,-339,39,-162,-163,-145,39,-147,39,39,-219,-217,-218,-78,-79,-80,-81,-82,-83,-84,-85,39,-77,-73,-69,39,39,39,39,-35,-36,39,39,-171,39,-154,39,-156,-151,-160,-143,-144,-148,-146,-130,39,-177,-178,-221,-220,-237,-87,-84,39,-233,-234,-236,-31,-34,39,39,-172,-173,-153,-155,-161,-222,-224,-86,-84,-232,-235,-68,-32,-33,-223,-225,-87,-84,-227,-228,-226,-229,-231,-230,]),'CHAR':([0,2,4,5,6,7,8,9,10,11,12,14,15,19,21,22,23,24,25,26,27,28,29,31,32,33,34,35,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,64,67,68,69,70,71,72,73,74,75,76,77,78,81,90,91,96,97,98,99,100,101,102,103,104,106,112,116,117,118,119,121,122,123,124,125,126,127,128,129,137,140,141,192,193,197,203,204,205,206,207,208,209,210,211,212,213,214,216,221,222,223,224,225,226,227,228,229,230,231,232,238,251,262,267,294,298,299,304,311,312,313,322,330,333,334,335,336,337,338,340,341,342,348,349,351,353,354,355,356,361,370,371,372,374,375,377,439,440,449,458,459,460,463,464,465,469,471,479,480,483,484,499,508,509,524,552,553,554,555,556,579,580,585,586,],[40,40,-60,-62,-63,-64,-65,-66,-67,40,40,-70,-71,-52,-340,-340,-340,-128,-102,40,-340,-29,-107,-125,-126,-127,-129,-241,-113,-114,-115,-116,-117,-118,-119,-120,-121,-122,-123,-124,-134,-131,-132,-133,-105,-106,-108,-109,-110,-111,-112,-61,40,-91,40,40,-129,-134,40,-98,-99,-100,-101,-104,-134,-90,-72,40,-53,-93,-9,-10,-340,-94,-95,-103,-129,-97,-185,-96,-169,-170,-338,-149,-150,40,40,40,-76,40,-92,40,-30,40,40,40,-186,40,40,40,-152,-159,-339,40,-162,-163,-145,40,-147,40,40,-219,-217,-218,-78,-79,-80,-81,-82,-83,-84,-85,40,-77,-73,-69,40,40,40,40,-35,-36,40,40,-171,40,-154,40,-156,-151,-160,-143,-144,-148,-146,-130,40,-177,-178,-221,-220,-237,-87,-84,40,-233,-234,-236,-31,-34,40,40,-172,-173,-153,-155,-161,-222,-224,-86,-84,-232,-235,-68,-32,-33,-223,-225,-87,-84,-227,-228,-226,-229,-231,-230,]),'SHORT':([0,2,4,5,6,7,8,9,10,11,12,14,15,19,21,22,23,24,25,26,27,28,29,31,32,33,34,35,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,64,67,68,69,70,71,72,73,74,75,76,77,78,81,90,91,96,97,98,99,100,101,102,103,104,106,112,116,117,118,119,121,122,123,124,125,126,127,128,129,137,140,141,192,193,197,203,204,205,206,207,208,209,210,211,212,213,214,216,221,222,223,224,225,226,227,228,229,230,231,232,238,251,262,267,294,298,299,304,311,312,313,322,330,333,334,335,336,337,338,340,341,342,348,349,351,353,354,355,356,361,370,371,372,374,375,377,439,440,449,458,459,460,463,464,465,469,471,479,480,483,484,499,508,509,524,552,553,554,555,556,579,580,585,586,],[41,41,-60,-62,-63,-64,-65,-66,-67,41,41,-70,-71,-52,-340,-340,-340,-128,-102,41,-340,-29,-107,-125,-126,-127,-129,-241,-113,-114,-115,-116,-117,-118,-119,-120,-121,-122,-123,-124,-134,-131,-132,-133,-105,-106,-108,-109,-110,-111,-112,-61,41,-91,41,41,-129,-134,41,-98,-99,-100,-101,-104,-134,-90,-72,41,-53,-93,-9,-10,-340,-94,-95,-103,-129,-97,-185,-96,-169,-170,-338,-149,-150,41,41,41,-76,41,-92,41,-30,41,41,41,-186,41,41,41,-152,-159,-339,41,-162,-163,-145,41,-147,41,41,-219,-217,-218,-78,-79,-80,-81,-82,-83,-84,-85,41,-77,-73,-69,41,41,41,41,-35,-36,41,41,-171,41,-154,41,-156,-151,-160,-143,-144,-148,-146,-130,41,-177,-178,-221,-220,-237,-87,-84,41,-233,-234,-236,-31,-34,41,41,-172,-173,-153,-155,-161,-222,-224,-86,-84,-232,-235,-68,-32,-33,-223,-225,-87,-84,-227,-228,-226,-229,-231,-230,]),'INT':([0,2,4,5,6,7,8,9,10,11,12,14,15,19,21,22,23,24,25,26,27,28,29,31,32,33,34,35,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,64,67,68,69,70,71,72,73,74,75,76,77,78,81,90,91,96,97,98,99,100,101,102,103,104,106,112,116,117,118,119,121,122,123,124,125,126,127,128,129,137,140,141,192,193,197,203,204,205,206,207,208,209,210,211,212,213,214,216,221,222,223,224,225,226,227,228,229,230,231,232,238,251,262,267,294,298,299,304,311,312,313,322,330,333,334,335,336,337,338,340,341,342,348,349,351,353,354,355,356,361,370,371,372,374,375,377,439,440,449,458,459,460,463,464,465,469,471,479,480,483,484,499,508,509,524,552,553,554,555,556,579,580,585,586,],[42,42,-60,-62,-63,-64,-65,-66,-67,42,42,-70,-71,-52,-340,-340,-340,-128,-102,42,-340,-29,-107,-125,-126,-127,-129,-241,-113,-114,-115,-116,-117,-118,-119,-120,-121,-122,-123,-124,-134,-131,-132,-133,-105,-106,-108,-109,-110,-111,-112,-61,42,-91,42,42,-129,-134,42,-98,-99,-100,-101,-104,-134,-90,-72,42,-53,-93,-9,-10,-340,-94,-95,-103,-129,-97,-185,-96,-169,-170,-338,-149,-150,42,42,42,-76,42,-92,42,-30,42,42,42,-186,42,42,42,-152,-159,-339,42,-162,-163,-145,42,-147,42,42,-219,-217,-218,-78,-79,-80,-81,-82,-83,-84,-85,42,-77,-73,-69,42,42,42,42,-35,-36,42,42,-171,42,-154,42,-156,-151,-160,-143,-144,-148,-146,-130,42,-177,-178,-221,-220,-237,-87,-84,42,-233,-234,-236,-31,-34,42,42,-172,-173,-153,-155,-161,-222,-224,-86,-84,-232,-235,-68,-32,-33,-223,-225,-87,-84,-227,-228,-226,-229,-231,-230,]),'LONG':([0,2,4,5,6,7,8,9,10,11,12,14,15,19,21,22,23,24,25,26,27,28,29,31,32,33,34,35,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,64,67,68,69,70,71,72,73,74,75,76,77,78,81,90,91,96,97,98,99,100,101,102,103,104,106,112,116,117,118,119,121,122,123,124,125,126,127,128,129,137,140,141,192,193,197,203,204,205,206,207,208,209,210,211,212,213,214,216,221,222,223,224,225,226,227,228,229,230,231,232,238,251,262,267,294,298,299,304,311,312,313,322,330,333,334,335,336,337,338,340,341,342,348,349,351,353,354,355,356,361,370,371,372,374,375,377,439,440,449,458,459,460,463,464,465,469,471,479,480,483,484,499,508,509,524,552,553,554,555,556,579,580,585,586,],[43,43,-60,-62,-63,-64,-65,-66,-67,43,43,-70,-71,-52,-340,-340,-340,-128,-102,43,-340,-29,-107,-125,-126,-127,-129,-241,-113,-114,-115,-116,-117,-118,-119,-120,-121,-122,-123,-124,-134,-131,-132,-133,-105,-106,-108,-109,-110,-111,-112,-61,43,-91,43,43,-129,-134,43,-98,-99,-100,-101,-104,-134,-90,-72,43,-53,-93,-9,-10,-340,-94,-95,-103,-129,-97,-185,-96,-169,-170,-338,-149,-150,43,43,43,-76,43,-92,43,-30,43,43,43,-186,43,43,43,-152,-159,-339,43,-162,-163,-145,43,-147,43,43,-219,-217,-218,-78,-79,-80,-81,-82,-83,-84,-85,43,-77,-73,-69,43,43,43,43,-35,-36,43,43,-171,43,-154,43,-156,-151,-160,-143,-144,-148,-146,-130,43,-177,-178,-221,-220,-237,-87,-84,43,-233,-234,-236,-31,-34,43,43,-172,-173,-153,-155,-161,-222,-224,-86,-84,-232,-235,-68,-32,-33,-223,-225,-87,-84,-227,-228,-226,-229,-231,-230,]),'FLOAT':([0,2,4,5,6,7,8,9,10,11,12,14,15,19,21,22,23,24,25,26,27,28,29,31,32,33,34,35,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,64,67,68,69,70,71,72,73,74,75,76,77,78,81,90,91,96,97,98,99,100,101,102,103,104,106,112,116,117,118,119,121,122,123,124,125,126,127,128,129,137,140,141,192,193,197,203,204,205,206,207,208,209,210,211,212,213,214,216,221,222,223,224,225,226,227,228,229,230,231,232,238,251,262,267,294,298,299,304,311,312,313,322,330,333,334,335,336,337,338,340,341,342,348,349,351,353,354,355,356,361,370,371,372,374,375,377,439,440,449,458,459,460,463,464,465,469,471,479,480,483,484,499,508,509,524,552,553,554,555,556,579,580,585,586,],[44,44,-60,-62,-63,-64,-65,-66,-67,44,44,-70,-71,-52,-340,-340,-340,-128,-102,44,-340,-29,-107,-125,-126,-127,-129,-241,-113,-114,-115,-116,-117,-118,-119,-120,-121,-122,-123,-124,-134,-131,-132,-133,-105,-106,-108,-109,-110,-111,-112,-61,44,-91,44,44,-129,-134,44,-98,-99,-100,-101,-104,-134,-90,-72,44,-53,-93,-9,-10,-340,-94,-95,-103,-129,-97,-185,-96,-169,-170,-338,-149,-150,44,44,44,-76,44,-92,44,-30,44,44,44,-186,44,44,44,-152,-159,-339,44,-162,-163,-145,44,-147,44,44,-219,-217,-218,-78,-79,-80,-81,-82,-83,-84,-85,44,-77,-73,-69,44,44,44,44,-35,-36,44,44,-171,44,-154,44,-156,-151,-160,-143,-144,-148,-146,-130,44,-177,-178,-221,-220,-237,-87,-84,44,-233,-234,-236,-31,-34,44,44,-172,-173,-153,-155,-161,-222,-224,-86,-84,-232,-235,-68,-32,-33,-223,-225,-87,-84,-227,-228,-226,-229,-231,-230,]),'DOUBLE':([0,2,4,5,6,7,8,9,10,11,12,14,15,19,21,22,23,24,25,26,27,28,29,31,32,33,34,35,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,64,67,68,69,70,71,72,73,74,75,76,77,78,81,90,91,96,97,98,99,100,101,102,103,104,106,112,116,117,118,119,121,122,123,124,125,126,127,128,129,137,140,141,192,193,197,203,204,205,206,207,208,209,210,211,212,213,214,216,221,222,223,224,225,226,227,228,229,230,231,232,238,251,262,267,294,298,299,304,311,312,313,322,330,333,334,335,336,337,338,340,341,342,348,349,351,353,354,355,356,361,370,371,372,374,375,377,439,440,449,458,459,460,463,464,465,469,471,479,480,483,484,499,508,509,524,552,553,554,555,556,579,580,585,586,],[45,45,-60,-62,-63,-64,-65,-66,-67,45,45,-70,-71,-52,-340,-340,-340,-128,-102,45,-340,-29,-107,-125,-126,-127,-129,-241,-113,-114,-115,-116,-117,-118,-119,-120,-121,-122,-123,-124,-134,-131,-132,-133,-105,-106,-108,-109,-110,-111,-112,-61,45,-91,45,45,-129,-134,45,-98,-99,-100,-101,-104,-134,-90,-72,45,-53,-93,-9,-10,-340,-94,-95,-103,-129,-97,-185,-96,-169,-170,-338,-149,-150,45,45,45,-76,45,-92,45,-30,45,45,45,-186,45,45,45,-152,-159,-339,45,-162,-163,-145,45,-147,45,45,-219,-217,-218,-78,-79,-80,-81,-82,-83,-84,-85,45,-77,-73,-69,45,45,45,45,-35,-36,45,45,-171,45,-154,45,-156,-151,-160,-143,-144,-148,-146,-130,45,-177,-178,-221,-220,-237,-87,-84,45,-233,-234,-236,-31,-34,45,45,-172,-173,-153,-155,-161,-222,-224,-86,-84,-232,-235,-68,-32,-33,-223,-225,-87,-84,-227,-228,-226,-229,-231,-230,]),'_COMPLEX':([0,2,4,5,6,7,8,9,10,11,12,14,15,19,21,22,23,24,25,26,27,28,29,31,32,33,34,35,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,64,67,68,69,70,71,72,73,74,75,76,77,78,81,90,91,96,97,98,99,100,101,102,103,104,106,112,116,117,118,119,121,122,123,124,125,126,127,128,129,137,140,141,192,193,197,203,204,205,206,207,208,209,210,211,212,213,214,216,221,222,223,224,225,226,227,228,229,230,231,232,238,251,262,267,294,298,299,304,311,312,313,322,330,333,334,335,336,337,338,340,341,342,348,349,351,353,354,355,356,361,370,371,372,374,375,377,439,440,449,458,459,460,463,464,465,469,471,479,480,483,484,499,508,509,524,552,553,554,555,556,579,580,585,586,],[46,46,-60,-62,-63,-64,-65,-66,-67,46,46,-70,-71,-52,-340,-340,-340,-128,-102,46,-340,-29,-107,-125,-126,-127,-129,-241,-113,-114,-115,-116,-117,-118,-119,-120,-121,-122,-123,-124,-134,-131,-132,-133,-105,-106,-108,-109,-110,-111,-112,-61,46,-91,46,46,-129,-134,46,-98,-99,-100,-101,-104,-134,-90,-72,46,-53,-93,-9,-10,-340,-94,-95,-103,-129,-97,-185,-96,-169,-170,-338,-149,-150,46,46,46,-76,46,-92,46,-30,46,46,46,-186,46,46,46,-152,-159,-339,46,-162,-163,-145,46,-147,46,46,-219,-217,-218,-78,-79,-80,-81,-82,-83,-84,-85,46,-77,-73,-69,46,46,46,46,-35,-36,46,46,-171,46,-154,46,-156,-151,-160,-143,-144,-148,-146,-130,46,-177,-178,-221,-220,-237,-87,-84,46,-233,-234,-236,-31,-34,46,46,-172,-173,-153,-155,-161,-222,-224,-86,-84,-232,-235,-68,-32,-33,-223,-225,-87,-84,-227,-228,-226,-229,-231,-230,]),'SIGNED':([0,2,4,5,6,7,8,9,10,11,12,14,15,19,21,22,23,24,25,26,27,28,29,31,32,33,34,35,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,64,67,68,69,70,71,72,73,74,75,76,77,78,81,90,91,96,97,98,99,100,101,102,103,104,106,112,116,117,118,119,121,122,123,124,125,126,127,128,129,137,140,141,192,193,197,203,204,205,206,207,208,209,210,211,212,213,214,216,221,222,223,224,225,226,227,228,229,230,231,232,238,251,262,267,294,298,299,304,311,312,313,322,330,333,334,335,336,337,338,340,341,342,348,349,351,353,354,355,356,361,370,371,372,374,375,377,439,440,449,458,459,460,463,464,465,469,471,479,480,483,484,499,508,509,524,552,553,554,555,556,579,580,585,586,],[47,47,-60,-62,-63,-64,-65,-66,-67,47,47,-70,-71,-52,-340,-340,-340,-128,-102,47,-340,-29,-107,-125,-126,-127,-129,-241,-113,-114,-115,-116,-117,-118,-119,-120,-121,-122,-123,-124,-134,-131,-132,-133,-105,-106,-108,-109,-110,-111,-112,-61,47,-91,47,47,-129,-134,47,-98,-99,-100,-101,-104,-134,-90,-72,47,-53,-93,-9,-10,-340,-94,-95,-103,-129,-97,-185,-96,-169,-170,-338,-149,-150,47,47,47,-76,47,-92,47,-30,47,47,47,-186,47,47,47,-152,-159,-339,47,-162,-163,-145,47,-147,47,47,-219,-217,-218,-78,-79,-80,-81,-82,-83,-84,-85,47,-77,-73,-69,47,47,47,47,-35,-36,47,47,-171,47,-154,47,-156,-151,-160,-143,-144,-148,-146,-130,47,-177,-178,-221,-220,-237,-87,-84,47,-233,-234,-236,-31,-34,47,47,-172,-173,-153,-155,-161,-222,-224,-86,-84,-232,-235,-68,-32,-33,-223,-225,-87,-84,-227,-228,-226,-229,-231,-230,]),'UNSIGNED':([0,2,4,5,6,7,8,9,10,11,12,14,15,19,21,22,23,24,25,26,27,28,29,31,32,33,34,35,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,64,67,68,69,70,71,72,73,74,75,76,77,78,81,90,91,96,97,98,99,100,101,102,103,104,106,112,116,117,118,119,121,122,123,124,125,126,127,128,129,137,140,141,192,193,197,203,204,205,206,207,208,209,210,211,212,213,214,216,221,222,223,224,225,226,227,228,229,230,231,232,238,251,262,267,294,298,299,304,311,312,313,322,330,333,334,335,336,337,338,340,341,342,348,349,351,353,354,355,356,361,370,371,372,374,375,377,439,440,449,458,459,460,463,464,465,469,471,479,480,483,484,499,508,509,524,552,553,554,555,556,579,580,585,586,],[48,48,-60,-62,-63,-64,-65,-66,-67,48,48,-70,-71,-52,-340,-340,-340,-128,-102,48,-340,-29,-107,-125,-126,-127,-129,-241,-113,-114,-115,-116,-117,-118,-119,-120,-121,-122,-123,-124,-134,-131,-132,-133,-105,-106,-108,-109,-110,-111,-112,-61,48,-91,48,48,-129,-134,48,-98,-99,-100,-101,-104,-134,-90,-72,48,-53,-93,-9,-10,-340,-94,-95,-103,-129,-97,-185,-96,-169,-170,-338,-149,-150,48,48,48,-76,48,-92,48,-30,48,48,48,-186,48,48,48,-152,-159,-339,48,-162,-163,-145,48,-147,48,48,-219,-217,-218,-78,-79,-80,-81,-82,-83,-84,-85,48,-77,-73,-69,48,48,48,48,-35,-36,48,48,-171,48,-154,48,-156,-151,-160,-143,-144,-148,-146,-130,48,-177,-178,-221,-220,-237,-87,-84,48,-233,-234,-236,-31,-34,48,48,-172,-173,-153,-155,-161,-222,-224,-86,-84,-232,-235,-68,-32,-33,-223,-225,-87,-84,-227,-228,-226,-229,-231,-230,]),'__INT128':([0,2,4,5,6,7,8,9,10,11,12,14,15,19,21,22,23,24,25,26,27,28,29,31,32,33,34,35,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,64,67,68,69,70,71,72,73,74,75,76,77,78,81,90,91,96,97,98,99,100,101,102,103,104,106,112,116,117,118,119,121,122,123,124,125,126,127,128,129,137,140,141,192,193,197,203,204,205,206,207,208,209,210,211,212,213,214,216,221,222,223,224,225,226,227,228,229,230,231,232,238,251,262,267,294,298,299,304,311,312,313,322,330,333,334,335,336,337,338,340,341,342,348,349,351,353,354,355,356,361,370,371,372,374,375,377,439,440,449,458,459,460,463,464,465,469,471,479,480,483,484,499,508,509,524,552,553,554,555,556,579,580,585,586,],[49,49,-60,-62,-63,-64,-65,-66,-67,49,49,-70,-71,-52,-340,-340,-340,-128,-102,49,-340,-29,-107,-125,-126,-127,-129,-241,-113,-114,-115,-116,-117,-118,-119,-120,-121,-122,-123,-124,-134,-131,-132,-133,-105,-106,-108,-109,-110,-111,-112,-61,49,-91,49,49,-129,-134,49,-98,-99,-100,-101,-104,-134,-90,-72,49,-53,-93,-9,-10,-340,-94,-95,-103,-129,-97,-185,-96,-169,-170,-338,-149,-150,49,49,49,-76,49,-92,49,-30,49,49,49,-186,49,49,49,-152,-159,-339,49,-162,-163,-145,49,-147,49,49,-219,-217,-218,-78,-79,-80,-81,-82,-83,-84,-85,49,-77,-73,-69,49,49,49,49,-35,-36,49,49,-171,49,-154,49,-156,-151,-160,-143,-144,-148,-146,-130,49,-177,-178,-221,-220,-237,-87,-84,49,-233,-234,-236,-31,-34,49,49,-172,-173,-153,-155,-161,-222,-224,-86,-84,-232,-235,-68,-32,-33,-223,-225,-87,-84,-227,-228,-226,-229,-231,-230,]),'_ATOMIC':([0,2,4,5,6,7,8,9,10,11,12,14,15,19,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,64,67,68,69,70,71,72,73,74,75,76,77,78,81,90,91,95,96,97,98,99,100,101,102,103,104,106,112,115,116,117,118,119,121,122,123,124,125,126,127,128,129,136,137,140,141,183,184,192,193,197,203,204,205,206,207,208,209,210,211,212,213,214,216,221,222,223,224,225,226,227,228,229,230,231,232,238,251,258,259,262,267,294,298,299,304,311,312,313,322,323,330,333,334,335,336,337,338,340,341,342,348,349,351,353,354,355,356,361,370,371,372,374,375,377,439,440,448,449,458,459,460,463,464,465,469,471,479,480,483,484,499,508,509,511,512,524,552,553,554,555,556,579,580,585,586,],[50,50,-60,-62,-63,-64,-65,-66,-67,72,81,-70,-71,-52,72,72,72,-128,-102,109,72,-29,-107,81,-125,-126,-127,72,-241,-113,-114,-115,-116,-117,-118,-119,-120,-121,-122,-123,-124,-134,-131,-132,-133,-105,-106,-108,-109,-110,-111,-112,-61,72,-91,81,109,72,-134,72,-98,-99,-100,-101,-104,-134,-90,-72,81,50,-53,-93,-9,-10,72,-94,-95,-103,-129,-97,81,-185,-96,-169,-170,-338,-149,-150,50,50,50,-76,72,-92,81,50,-30,50,81,81,81,109,-186,50,50,50,-152,-159,-339,81,-162,-163,-145,72,-147,81,72,-219,-217,-218,-78,-79,-80,-81,-82,-83,-84,-85,50,-77,81,81,-73,-69,50,50,50,50,-35,-36,50,50,81,-171,50,-154,50,-156,-151,-160,-143,-144,-148,-146,-130,50,-177,-178,-221,-220,-237,-87,-84,72,-233,-234,-236,-31,-34,81,50,50,-172,-173,-153,-155,-161,-222,-224,-86,-84,-232,-235,-68,-32,-33,81,81,-223,-225,-87,-84,-227,-228,-226,-229,-231,-230,]),'CONST':([0,2,4,5,6,7,8,9,10,11,12,14,15,19,21,22,23,24,25,27,28,29,30,31,32,33,34,35,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,64,67,68,69,71,72,73,74,75,76,77,78,81,90,91,95,96,97,101,104,106,115,116,118,119,121,122,123,124,125,126,127,128,129,136,137,140,141,183,184,192,197,203,204,205,206,207,208,209,210,211,212,213,214,216,221,222,223,224,225,226,227,228,229,230,231,232,238,251,258,259,262,267,294,298,299,304,311,312,313,322,323,330,333,334,335,336,337,338,340,341,342,348,349,351,353,354,355,356,361,370,371,372,374,375,377,439,440,448,449,458,459,460,463,464,465,469,471,479,480,483,484,499,508,509,511,512,524,552,553,554,555,556,579,580,585,586,],[51,51,-60,-62,-63,-64,-65,-66,-67,51,51,-70,-71,-52,51,51,51,-128,-102,51,-29,-107,51,-125,-126,-127,51,-241,-113,-114,-115,-116,-117,-118,-119,-120,-121,-122,-123,-124,-134,-131,-132,-133,-105,-106,-108,-109,-110,-111,-112,-61,51,-91,51,51,-134,51,-98,-99,-100,-101,-104,-134,-90,-72,51,51,-53,51,-103,-129,51,-185,-169,-170,-338,-149,-150,51,51,51,-76,51,-92,51,51,-30,51,51,51,51,-186,51,51,51,-152,-159,-339,51,-162,-163,-145,51,-147,51,51,-219,-217,-218,-78,-79,-80,-81,-82,-83,-84,-85,51,-77,51,51,-73,-69,51,51,51,51,-35,-36,51,51,51,-171,51,-154,51,-156,-151,-160,-143,-144,-148,-146,-130,51,-177,-178,-221,-220,-237,-87,-84,51,-233,-234,-236,-31,-34,51,51,51,-172,-173,-153,-155,-161,-222,-224,-86,-84,-232,-235,-68,-32,-33,51,51,-223,-225,-87,-84,-227,-228,-226,-229,-231,-230,]),'RESTRICT':([0,2,4,5,6,7,8,9,10,11,12,14,15,19,21,22,23,24,25,27,28,29,30,31,32,33,34,35,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,64,67,68,69,71,72,73,74,75,76,77,78,81,90,91,95,96,97,101,104,106,115,116,118,119,121,122,123,124,125,126,127,128,129,136,137,140,141,183,184,192,197,203,204,205,206,207,208,209,210,211,212,213,214,216,221,222,223,224,225,226,227,228,229,230,231,232,238,251,258,259,262,267,294,298,299,304,311,312,313,322,323,330,333,334,335,336,337,338,340,341,342,348,349,351,353,354,355,356,361,370,371,372,374,375,377,439,440,448,449,458,459,460,463,464,465,469,471,479,480,483,484,499,508,509,511,512,524,552,553,554,555,556,579,580,585,586,],[52,52,-60,-62,-63,-64,-65,-66,-67,52,52,-70,-71,-52,52,52,52,-128,-102,52,-29,-107,52,-125,-126,-127,52,-241,-113,-114,-115,-116,-117,-118,-119,-120,-121,-122,-123,-124,-134,-131,-132,-133,-105,-106,-108,-109,-110,-111,-112,-61,52,-91,52,52,-134,52,-98,-99,-100,-101,-104,-134,-90,-72,52,52,-53,52,-103,-129,52,-185,-169,-170,-338,-149,-150,52,52,52,-76,52,-92,52,52,-30,52,52,52,52,-186,52,52,52,-152,-159,-339,52,-162,-163,-145,52,-147,52,52,-219,-217,-218,-78,-79,-80,-81,-82,-83,-84,-85,52,-77,52,52,-73,-69,52,52,52,52,-35,-36,52,52,52,-171,52,-154,52,-156,-151,-160,-143,-144,-148,-146,-130,52,-177,-178,-221,-220,-237,-87,-84,52,-233,-234,-236,-31,-34,52,52,52,-172,-173,-153,-155,-161,-222,-224,-86,-84,-232,-235,-68,-32,-33,52,52,-223,-225,-87,-84,-227,-228,-226,-229,-231,-230,]),'VOLATILE':([0,2,4,5,6,7,8,9,10,11,12,14,15,19,21,22,23,24,25,27,28,29,30,31,32,33,34,35,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,64,67,68,69,71,72,73,74,75,76,77,78,81,90,91,95,96,97,101,104,106,115,116,118,119,121,122,123,124,125,126,127,128,129,136,137,140,141,183,184,192,197,203,204,205,206,207,208,209,210,211,212,213,214,216,221,222,223,224,225,226,227,228,229,230,231,232,238,251,258,259,262,267,294,298,299,304,311,312,313,322,323,330,333,334,335,336,337,338,340,341,342,348,349,351,353,354,355,356,361,370,371,372,374,375,377,439,440,448,449,458,459,460,463,464,465,469,471,479,480,483,484,499,508,509,511,512,524,552,553,554,555,556,579,580,585,586,],[53,53,-60,-62,-63,-64,-65,-66,-67,53,53,-70,-71,-52,53,53,53,-128,-102,53,-29,-107,53,-125,-126,-127,53,-241,-113,-114,-115,-116,-117,-118,-119,-120,-121,-122,-123,-124,-134,-131,-132,-133,-105,-106,-108,-109,-110,-111,-112,-61,53,-91,53,53,-134,53,-98,-99,-100,-101,-104,-134,-90,-72,53,53,-53,53,-103,-129,53,-185,-169,-170,-338,-149,-150,53,53,53,-76,53,-92,53,53,-30,53,53,53,53,-186,53,53,53,-152,-159,-339,53,-162,-163,-145,53,-147,53,53,-219,-217,-218,-78,-79,-80,-81,-82,-83,-84,-85,53,-77,53,53,-73,-69,53,53,53,53,-35,-36,53,53,53,-171,53,-154,53,-156,-151,-160,-143,-144,-148,-146,-130,53,-177,-178,-221,-220,-237,-87,-84,53,-233,-234,-236,-31,-34,53,53,53,-172,-173,-153,-155,-161,-222,-224,-86,-84,-232,-235,-68,-32,-33,53,53,-223,-225,-87,-84,-227,-228,-226,-229,-231,-230,]),'AUTO':([0,2,4,5,6,7,8,9,10,11,12,14,15,19,21,22,23,24,25,27,28,29,31,32,33,34,35,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,64,67,68,69,71,72,73,74,75,76,77,78,81,90,91,96,97,101,104,106,118,119,121,122,123,127,128,129,137,140,192,206,208,221,222,223,224,225,226,227,228,229,230,231,232,251,262,267,311,312,313,322,330,334,336,337,349,351,353,354,355,356,361,370,371,372,374,375,377,439,440,449,458,459,460,463,464,469,471,479,480,483,484,499,508,509,524,552,553,554,555,556,579,580,585,586,],[54,54,-60,-62,-63,-64,-65,-66,-67,54,54,-70,-71,-52,54,54,54,-128,-102,54,-29,-107,-125,-126,-127,54,-241,-113,-114,-115,-116,-117,-118,-119,-120,-121,-122,-123,-124,-134,-131,-132,-133,-105,-106,-108,-109,-110,-111,-112,-61,54,-91,54,54,-134,54,-98,-99,-100,-101,-104,-134,-90,-72,54,-53,54,-103,-129,-169,-170,-338,-149,-150,-76,54,-92,54,-30,54,-152,-339,54,-219,-217,-218,-78,-79,-80,-81,-82,-83,-84,-85,-77,-73,-69,-35,-36,54,54,-171,-154,-156,-151,-130,54,-177,-178,-221,-220,-237,-87,-84,54,-233,-234,-236,-31,-34,54,54,-172,-173,-153,-155,-222,-224,-86,-84,-232,-235,-68,-32,-33,-223,-225,-87,-84,-227,-228,-226,-229,-231,-230,]),'REGISTER':([0,2,4,5,6,7,8,9,10,11,12,14,15,19,21,22,23,24,25,27,28,29,31,32,33,34,35,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,64,67,68,69,71,72,73,74,75,76,77,78,81,90,91,96,97,101,104,106,118,119,121,122,123,127,128,129,137,140,192,206,208,221,222,223,224,225,226,227,228,229,230,231,232,251,262,267,311,312,313,322,330,334,336,337,349,351,353,354,355,356,361,370,371,372,374,375,377,439,440,449,458,459,460,463,464,469,471,479,480,483,484,499,508,509,524,552,553,554,555,556,579,580,585,586,],[55,55,-60,-62,-63,-64,-65,-66,-67,55,55,-70,-71,-52,55,55,55,-128,-102,55,-29,-107,-125,-126,-127,55,-241,-113,-114,-115,-116,-117,-118,-119,-120,-121,-122,-123,-124,-134,-131,-132,-133,-105,-106,-108,-109,-110,-111,-112,-61,55,-91,55,55,-134,55,-98,-99,-100,-101,-104,-134,-90,-72,55,-53,55,-103,-129,-169,-170,-338,-149,-150,-76,55,-92,55,-30,55,-152,-339,55,-219,-217,-218,-78,-79,-80,-81,-82,-83,-84,-85,-77,-73,-69,-35,-36,55,55,-171,-154,-156,-151,-130,55,-177,-178,-221,-220,-237,-87,-84,55,-233,-234,-236,-31,-34,55,55,-172,-173,-153,-155,-222,-224,-86,-84,-232,-235,-68,-32,-33,-223,-225,-87,-84,-227,-228,-226,-229,-231,-230,]),'STATIC':([0,2,4,5,6,7,8,9,10,11,12,14,15,19,21,22,23,24,25,27,28,29,31,32,33,34,35,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,64,67,68,69,71,72,73,74,75,76,77,78,81,90,91,95,96,97,101,104,106,116,118,119,121,122,123,127,128,129,136,137,140,184,192,197,206,208,221,222,223,224,225,226,227,228,229,230,231,232,251,259,262,267,311,312,313,322,330,334,336,337,349,351,353,354,355,356,361,370,371,372,374,375,377,439,440,448,449,458,459,460,463,464,469,471,479,480,483,484,499,508,509,512,524,552,553,554,555,556,579,580,585,586,],[29,29,-60,-62,-63,-64,-65,-66,-67,29,29,-70,-71,-52,29,29,29,-128,-102,29,-29,-107,-125,-126,-127,29,-241,-113,-114,-115,-116,-117,-118,-119,-120,-121,-122,-123,-124,-134,-131,-132,-133,-105,-106,-108,-109,-110,-111,-112,-61,29,-91,29,29,-134,29,-98,-99,-100,-101,-104,-134,-90,-72,183,29,-53,29,-103,-129,-185,-169,-170,-338,-149,-150,-76,29,-92,258,29,-30,310,29,-186,-152,-339,29,-219,-217,-218,-78,-79,-80,-81,-82,-83,-84,-85,-77,402,-73,-69,-35,-36,29,29,-171,-154,-156,-151,-130,29,-177,-178,-221,-220,-237,-87,-84,29,-233,-234,-236,-31,-34,511,29,29,-172,-173,-153,-155,-222,-224,-86,-84,-232,-235,-68,-32,-33,545,-223,-225,-87,-84,-227,-228,-226,-229,-231,-230,]),'EXTERN':([0,2,4,5,6,7,8,9,10,11,12,14,15,19,21,22,23,24,25,27,28,29,31,32,33,34,35,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,64,67,68,69,71,72,73,74,75,76,77,78,81,90,91,96,97,101,104,106,118,119,121,122,123,127,128,129,137,140,192,206,208,221,222,223,224,225,226,227,228,229,230,231,232,251,262,267,311,312,313,322,330,334,336,337,349,351,353,354,355,356,361,370,371,372,374,375,377,439,440,449,458,459,460,463,464,469,471,479,480,483,484,499,508,509,524,552,553,554,555,556,579,580,585,586,],[56,56,-60,-62,-63,-64,-65,-66,-67,56,56,-70,-71,-52,56,56,56,-128,-102,56,-29,-107,-125,-126,-127,56,-241,-113,-114,-115,-116,-117,-118,-119,-120,-121,-122,-123,-124,-134,-131,-132,-133,-105,-106,-108,-109,-110,-111,-112,-61,56,-91,56,56,-134,56,-98,-99,-100,-101,-104,-134,-90,-72,56,-53,56,-103,-129,-169,-170,-338,-149,-150,-76,56,-92,56,-30,56,-152,-339,56,-219,-217,-218,-78,-79,-80,-81,-82,-83,-84,-85,-77,-73,-69,-35,-36,56,56,-171,-154,-156,-151,-130,56,-177,-178,-221,-220,-237,-87,-84,56,-233,-234,-236,-31,-34,56,56,-172,-173,-153,-155,-222,-224,-86,-84,-232,-235,-68,-32,-33,-223,-225,-87,-84,-227,-228,-226,-229,-231,-230,]),'TYPEDEF':([0,2,4,5,6,7,8,9,10,11,12,14,15,19,21,22,23,24,25,27,28,29,31,32,33,34,35,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,64,67,68,69,71,72,73,74,75,76,77,78,81,90,91,96,97,101,104,106,118,119,121,122,123,127,128,129,137,140,192,206,208,221,222,223,224,225,226,227,228,229,230,231,232,251,262,267,311,312,313,322,330,334,336,337,349,351,353,354,355,356,361,370,371,372,374,375,377,439,440,449,458,459,460,463,464,469,471,479,480,483,484,499,508,509,524,552,553,554,555,556,579,580,585,586,],[57,57,-60,-62,-63,-64,-65,-66,-67,57,57,-70,-71,-52,57,57,57,-128,-102,57,-29,-107,-125,-126,-127,57,-241,-113,-114,-115,-116,-117,-118,-119,-120,-121,-122,-123,-124,-134,-131,-132,-133,-105,-106,-108,-109,-110,-111,-112,-61,57,-91,57,57,-134,57,-98,-99,-100,-101,-104,-134,-90,-72,57,-53,57,-103,-129,-169,-170,-338,-149,-150,-76,57,-92,57,-30,57,-152,-339,57,-219,-217,-218,-78,-79,-80,-81,-82,-83,-84,-85,-77,-73,-69,-35,-36,57,57,-171,-154,-156,-151,-130,57,-177,-178,-221,-220,-237,-87,-84,57,-233,-234,-236,-31,-34,57,57,-172,-173,-153,-155,-222,-224,-86,-84,-232,-235,-68,-32,-33,-223,-225,-87,-84,-227,-228,-226,-229,-231,-230,]),'_THREAD_LOCAL':([0,2,4,5,6,7,8,9,10,11,12,14,15,19,21,22,23,24,25,27,28,29,31,32,33,34,35,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,64,67,68,69,71,72,73,74,75,76,77,78,81,90,91,96,97,101,104,106,118,119,121,122,123,127,128,129,137,140,192,206,208,221,222,223,224,225,226,227,228,229,230,231,232,251,262,267,311,312,313,322,330,334,336,337,349,351,353,354,355,356,361,370,371,372,374,375,377,439,440,449,458,459,460,463,464,469,471,479,480,483,484,499,508,509,524,552,553,554,555,556,579,580,585,586,],[58,58,-60,-62,-63,-64,-65,-66,-67,58,58,-70,-71,-52,58,58,58,-128,-102,58,-29,-107,-125,-126,-127,58,-241,-113,-114,-115,-116,-117,-118,-119,-120,-121,-122,-123,-124,-134,-131,-132,-133,-105,-106,-108,-109,-110,-111,-112,-61,58,-91,58,58,-134,58,-98,-99,-100,-101,-104,-134,-90,-72,58,-53,58,-103,-129,-169,-170,-338,-149,-150,-76,58,-92,58,-30,58,-152,-339,58,-219,-217,-218,-78,-79,-80,-81,-82,-83,-84,-85,-77,-73,-69,-35,-36,58,58,-171,-154,-156,-151,-130,58,-177,-178,-221,-220,-237,-87,-84,58,-233,-234,-236,-31,-34,58,58,-172,-173,-153,-155,-222,-224,-86,-84,-232,-235,-68,-32,-33,-223,-225,-87,-84,-227,-228,-226,-229,-231,-230,]),'INLINE':([0,2,4,5,6,7,8,9,10,11,12,14,15,19,21,22,23,24,25,27,28,29,31,32,33,34,35,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,64,67,68,69,71,72,73,74,75,76,77,78,81,90,91,96,97,101,104,106,118,119,121,122,123,127,128,129,137,140,192,206,208,221,222,223,224,225,226,227,228,229,230,231,232,251,262,267,311,312,313,322,330,334,336,337,349,351,353,354,355,356,361,370,371,372,374,375,377,439,440,449,458,459,460,463,464,469,471,479,480,483,484,499,508,509,524,552,553,554,555,556,579,580,585,586,],[59,59,-60,-62,-63,-64,-65,-66,-67,59,59,-70,-71,-52,59,59,59,-128,-102,59,-29,-107,-125,-126,-127,59,-241,-113,-114,-115,-116,-117,-118,-119,-120,-121,-122,-123,-124,-134,-131,-132,-133,-105,-106,-108,-109,-110,-111,-112,-61,59,-91,59,59,-134,59,-98,-99,-100,-101,-104,-134,-90,-72,59,-53,59,-103,-129,-169,-170,-338,-149,-150,-76,59,-92,59,-30,59,-152,-339,59,-219,-217,-218,-78,-79,-80,-81,-82,-83,-84,-85,-77,-73,-69,-35,-36,59,59,-171,-154,-156,-151,-130,59,-177,-178,-221,-220,-237,-87,-84,59,-233,-234,-236,-31,-34,59,59,-172,-173,-153,-155,-222,-224,-86,-84,-232,-235,-68,-32,-33,-223,-225,-87,-84,-227,-228,-226,-229,-231,-230,]),'_NORETURN':([0,2,4,5,6,7,8,9,10,11,12,14,15,19,21,22,23,24,25,27,28,29,31,32,33,34,35,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,64,67,68,69,71,72,73,74,75,76,77,78,81,90,91,96,97,101,104,106,118,119,121,122,123,127,128,129,137,140,192,206,208,221,222,223,224,225,226,227,228,229,230,231,232,251,262,267,311,312,313,322,330,334,336,337,349,351,353,354,355,356,361,370,371,372,374,375,377,439,440,449,458,459,460,463,464,469,471,479,480,483,484,499,508,509,524,552,553,554,555,556,579,580,585,586,],[60,60,-60,-62,-63,-64,-65,-66,-67,60,60,-70,-71,-52,60,60,60,-128,-102,60,-29,-107,-125,-126,-127,60,-241,-113,-114,-115,-116,-117,-118,-119,-120,-121,-122,-123,-124,-134,-131,-132,-133,-105,-106,-108,-109,-110,-111,-112,-61,60,-91,60,60,-134,60,-98,-99,-100,-101,-104,-134,-90,-72,60,-53,60,-103,-129,-169,-170,-338,-149,-150,-76,60,-92,60,-30,60,-152,-339,60,-219,-217,-218,-78,-79,-80,-81,-82,-83,-84,-85,-77,-73,-69,-35,-36,60,60,-171,-154,-156,-151,-130,60,-177,-178,-221,-220,-237,-87,-84,60,-233,-234,-236,-31,-34,60,60,-172,-173,-153,-155,-222,-224,-86,-84,-232,-235,-68,-32,-33,-223,-225,-87,-84,-227,-228,-226,-229,-231,-230,]),'_ALIGNAS':([0,2,4,5,6,7,8,9,10,11,12,14,15,19,21,22,23,24,25,27,28,29,31,32,33,34,35,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,64,67,68,69,71,72,73,74,75,76,77,78,81,90,91,96,97,101,104,106,118,119,121,122,123,124,125,126,127,128,129,137,140,141,192,203,204,205,206,207,208,209,210,211,212,214,216,221,222,223,224,225,226,227,228,229,230,231,232,238,251,262,267,294,298,299,304,311,312,313,322,330,333,334,335,336,337,338,340,341,342,348,349,351,353,354,355,356,361,370,371,372,374,375,377,439,440,449,458,459,460,463,464,465,469,471,479,480,483,484,499,508,509,524,552,553,554,555,556,579,580,585,586,],[61,61,-60,-62,-63,-64,-65,-66,-67,61,61,-70,-71,-52,61,61,61,-128,-102,61,-29,-107,-125,-126,-127,61,-241,-113,-114,-115,-116,-117,-118,-119,-120,-121,-122,-123,-124,-134,-131,-132,-133,-105,-106,-108,-109,-110,-111,-112,-61,61,-91,61,61,-134,61,-98,-99,-100,-101,-104,-134,-90,-72,61,-53,61,-103,-129,-169,-170,-338,-149,-150,61,61,61,-76,61,-92,61,-30,61,61,61,61,61,-152,-159,-339,61,-162,-163,-145,-147,61,61,-219,-217,-218,-78,-79,-80,-81,-82,-83,-84,-85,61,-77,-73,-69,61,61,61,61,-35,-36,61,61,-171,61,-154,61,-156,-151,-160,-143,-144,-148,-146,-130,61,-177,-178,-221,-220,-237,-87,-84,61,-233,-234,-236,-31,-34,61,61,-172,-173,-153,-155,-161,-222,-224,-86,-84,-232,-235,-68,-32,-33,-223,-225,-87,-84,-227,-228,-226,-229,-231,-230,]),'STRUCT':([0,2,4,5,6,7,8,9,10,11,14,15,19,21,22,23,26,27,28,29,34,50,51,52,53,54,55,56,57,58,59,60,64,67,68,70,71,72,73,90,91,96,97,98,99,100,101,102,103,112,116,117,121,124,125,126,127,128,129,137,140,141,193,197,203,204,205,207,208,210,211,213,221,222,223,224,225,226,227,228,229,230,231,232,238,251,262,267,294,298,299,304,311,312,313,322,333,335,338,349,351,353,354,355,356,361,370,371,372,374,375,377,439,440,449,458,465,469,471,479,480,483,484,499,508,509,524,552,553,554,555,556,579,580,585,586,],[62,62,-60,-62,-63,-64,-65,-66,-67,62,-70,-71,-52,-340,-340,-340,62,-340,-29,-107,-340,-134,-131,-132,-133,-105,-106,-108,-109,-110,-111,-112,-61,62,-91,62,-340,-134,62,-90,-72,62,-53,-93,-9,-10,-340,-94,-95,-97,-185,-96,-338,62,62,62,-76,62,-92,62,-30,62,62,-186,62,62,62,-159,-339,-162,-163,62,62,-219,-217,-218,-78,-79,-80,-81,-82,-83,-84,-85,62,-77,-73,-69,62,62,62,62,-35,-36,62,62,62,62,-160,-130,62,-177,-178,-221,-220,-237,-87,-84,62,-233,-234,-236,-31,-34,62,62,-161,-222,-224,-86,-84,-232,-235,-68,-32,-33,-223,-225,-87,-84,-227,-228,-226,-229,-231,-230,]),'UNION':([0,2,4,5,6,7,8,9,10,11,14,15,19,21,22,23,26,27,28,29,34,50,51,52,53,54,55,56,57,58,59,60,64,67,68,70,71,72,73,90,91,96,97,98,99,100,101,102,103,112,116,117,121,124,125,126,127,128,129,137,140,141,193,197,203,204,205,207,208,210,211,213,221,222,223,224,225,226,227,228,229,230,231,232,238,251,262,267,294,298,299,304,311,312,313,322,333,335,338,349,351,353,354,355,356,361,370,371,372,374,375,377,439,440,449,458,465,469,471,479,480,483,484,499,508,509,524,552,553,554,555,556,579,580,585,586,],[63,63,-60,-62,-63,-64,-65,-66,-67,63,-70,-71,-52,-340,-340,-340,63,-340,-29,-107,-340,-134,-131,-132,-133,-105,-106,-108,-109,-110,-111,-112,-61,63,-91,63,-340,-134,63,-90,-72,63,-53,-93,-9,-10,-340,-94,-95,-97,-185,-96,-338,63,63,63,-76,63,-92,63,-30,63,63,-186,63,63,63,-159,-339,-162,-163,63,63,-219,-217,-218,-78,-79,-80,-81,-82,-83,-84,-85,63,-77,-73,-69,63,63,63,63,-35,-36,63,63,63,63,-160,-130,63,-177,-178,-221,-220,-237,-87,-84,63,-233,-234,-236,-31,-34,63,63,-161,-222,-224,-86,-84,-232,-235,-68,-32,-33,-223,-225,-87,-84,-227,-228,-226,-229,-231,-230,]),'LBRACE':([11,15,19,28,36,37,62,63,65,66,67,68,73,90,91,97,118,119,121,122,123,128,129,131,135,140,195,208,221,222,223,224,225,226,227,228,229,230,231,232,238,242,256,262,267,311,312,355,356,358,360,361,369,370,371,374,375,377,392,393,394,405,439,440,469,470,471,474,479,480,483,484,487,489,498,499,504,505,508,509,524,525,526,527,532,533,552,553,554,555,556,562,570,579,580,582,584,585,586,],[-340,-71,-52,-29,121,121,-157,-158,121,-7,-8,-91,-340,-90,-72,-53,121,121,-338,121,121,121,-92,121,121,-30,121,-339,121,-219,-217,-218,-78,-79,-80,-81,-82,-83,-84,-85,121,121,-340,-73,-69,-35,-36,-221,-220,121,121,-237,121,-87,-74,-233,-234,-236,-11,121,-12,121,-31,-34,-222,121,-224,121,-86,-75,-232,-235,-340,-201,-340,-68,121,121,-32,-33,-223,121,121,121,121,-11,-225,-87,-74,-227,-228,-340,121,-226,-229,121,121,-231,-230,]),'RBRACE':([15,90,91,121,124,128,139,143,144,145,146,151,152,158,159,162,163,164,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,200,201,202,203,204,205,207,208,210,211,219,220,221,222,223,224,225,226,227,228,229,230,231,232,249,250,255,256,262,263,267,291,292,293,295,296,297,300,301,302,303,328,329,331,333,335,338,355,356,361,370,371,374,375,377,390,391,392,406,409,410,411,412,413,414,415,416,417,418,419,420,421,422,423,424,425,426,429,431,432,433,434,461,462,465,469,471,473,479,480,483,484,485,486,487,488,497,499,501,502,505,506,524,531,537,538,552,553,554,555,556,560,561,562,563,574,579,580,585,586,],[-71,-90,-72,-338,208,-340,-328,-306,-255,-256,-258,-277,-279,-292,-315,-304,-305,-307,-316,-317,-318,-319,-320,-321,-322,-323,-324,-325,-326,-327,-330,-331,-332,-333,208,-174,-179,208,208,208,-159,-339,-162,-163,208,-5,-6,-219,-217,-218,-78,-79,-80,-81,-82,-83,-84,-85,-242,-277,-196,-340,-73,-329,-69,-300,-301,-280,-281,-282,-283,-334,-335,-336,-337,208,208,-175,208,208,-160,-221,-220,-237,-87,-84,-233,-234,-236,208,-22,-21,-308,-259,-260,-261,-262,-263,-264,-265,-266,-267,-268,-269,-270,-271,-272,-273,-274,-275,-276,-295,-296,-297,-298,-299,-176,-180,-161,-222,-224,-240,-86,-84,-232,-235,-243,-197,208,-199,-278,-68,-293,-294,-284,-285,-223,-198,208,-257,-225,-87,-84,-227,-228,-200,-302,208,-309,-303,-226,-229,-231,-230,]),'CASE':([15,90,91,121,128,208,221,222,223,224,225,226,227,228,229,230,231,232,242,262,267,355,356,358,360,361,369,370,371,374,375,377,469,470,471,479,480,483,484,499,524,525,526,527,552,553,554,555,556,570,579,580,582,584,585,586,],[-71,-90,-72,-338,234,-339,234,-219,-217,-218,-78,-79,-80,-81,-82,-83,-84,-85,234,-73,-69,-221,-220,234,234,-237,234,-87,-74,-233,-234,-236,-222,234,-224,-86,-75,-232,-235,-68,-223,234,234,234,-225,-87,-74,-227,-228,234,-226,-229,234,234,-231,-230,]),'DEFAULT':([15,90,91,121,128,208,221,222,223,224,225,226,227,228,229,230,231,232,242,262,267,355,356,358,360,361,369,370,371,374,375,377,469,470,471,479,480,483,484,499,524,525,526,527,552,553,554,555,556,570,579,580,582,584,585,586,],[-71,-90,-72,-338,235,-339,235,-219,-217,-218,-78,-79,-80,-81,-82,-83,-84,-85,235,-73,-69,-221,-220,235,235,-237,235,-87,-74,-233,-234,-236,-222,235,-224,-86,-75,-232,-235,-68,-223,235,235,235,-225,-87,-74,-227,-228,235,-226,-229,235,235,-231,-230,]),'IF':([15,90,91,121,128,208,221,222,223,224,225,226,227,228,229,230,231,232,242,262,267,355,356,358,360,361,369,370,371,374,375,377,469,470,471,479,480,483,484,499,524,525,526,527,552,553,554,555,556,570,579,580,582,584,585,586,],[-71,-90,-72,-338,237,-339,237,-219,-217,-218,-78,-79,-80,-81,-82,-83,-84,-85,237,-73,-69,-221,-220,237,237,-237,237,-87,-74,-233,-234,-236,-222,237,-224,-86,-75,-232,-235,-68,-223,237,237,237,-225,-87,-74,-227,-228,237,-226,-229,237,237,-231,-230,]),'SWITCH':([15,90,91,121,128,208,221,222,223,224,225,226,227,228,229,230,231,232,242,262,267,355,356,358,360,361,369,370,371,374,375,377,469,470,471,479,480,483,484,499,524,525,526,527,552,553,554,555,556,570,579,580,582,584,585,586,],[-71,-90,-72,-338,240,-339,240,-219,-217,-218,-78,-79,-80,-81,-82,-83,-84,-85,240,-73,-69,-221,-220,240,240,-237,240,-87,-74,-233,-234,-236,-222,240,-224,-86,-75,-232,-235,-68,-223,240,240,240,-225,-87,-74,-227,-228,240,-226,-229,240,240,-231,-230,]),'WHILE':([15,90,91,121,128,208,221,222,223,224,225,226,227,228,229,230,231,232,242,262,267,355,356,358,360,361,368,369,370,371,374,375,377,469,470,471,479,480,483,484,499,524,525,526,527,552,553,554,555,556,570,579,580,582,584,585,586,],[-71,-90,-72,-338,241,-339,241,-219,-217,-218,-78,-79,-80,-81,-82,-83,-84,-85,241,-73,-69,-221,-220,241,241,-237,478,241,-87,-74,-233,-234,-236,-222,241,-224,-86,-75,-232,-235,-68,-223,241,241,241,-225,-87,-74,-227,-228,241,-226,-229,241,241,-231,-230,]),'DO':([15,90,91,121,128,208,221,222,223,224,225,226,227,228,229,230,231,232,242,262,267,355,356,358,360,361,369,370,371,374,375,377,469,470,471,479,480,483,484,499,524,525,526,527,552,553,554,555,556,570,579,580,582,584,585,586,],[-71,-90,-72,-338,242,-339,242,-219,-217,-218,-78,-79,-80,-81,-82,-83,-84,-85,242,-73,-69,-221,-220,242,242,-237,242,-87,-74,-233,-234,-236,-222,242,-224,-86,-75,-232,-235,-68,-223,242,242,242,-225,-87,-74,-227,-228,242,-226,-229,242,242,-231,-230,]),'FOR':([15,90,91,121,128,208,221,222,223,224,225,226,227,228,229,230,231,232,242,262,267,355,356,358,360,361,369,370,371,374,375,377,469,470,471,479,480,483,484,499,524,525,526,527,552,553,554,555,556,570,579,580,582,584,585,586,],[-71,-90,-72,-338,243,-339,243,-219,-217,-218,-78,-79,-80,-81,-82,-83,-84,-85,243,-73,-69,-221,-220,243,243,-237,243,-87,-74,-233,-234,-236,-222,243,-224,-86,-75,-232,-235,-68,-223,243,243,243,-225,-87,-74,-227,-228,243,-226,-229,243,243,-231,-230,]),'GOTO':([15,90,91,121,128,208,221,222,223,224,225,226,227,228,229,230,231,232,242,262,267,355,356,358,360,361,369,370,371,374,375,377,469,470,471,479,480,483,484,499,524,525,526,527,552,553,554,555,556,570,579,580,582,584,585,586,],[-71,-90,-72,-338,244,-339,244,-219,-217,-218,-78,-79,-80,-81,-82,-83,-84,-85,244,-73,-69,-221,-220,244,244,-237,244,-87,-74,-233,-234,-236,-222,244,-224,-86,-75,-232,-235,-68,-223,244,244,244,-225,-87,-74,-227,-228,244,-226,-229,244,244,-231,-230,]),'BREAK':([15,90,91,121,128,208,221,222,223,224,225,226,227,228,229,230,231,232,242,262,267,355,356,358,360,361,369,370,371,374,375,377,469,470,471,479,480,483,484,499,524,525,526,527,552,553,554,555,556,570,579,580,582,584,585,586,],[-71,-90,-72,-338,245,-339,245,-219,-217,-218,-78,-79,-80,-81,-82,-83,-84,-85,245,-73,-69,-221,-220,245,245,-237,245,-87,-74,-233,-234,-236,-222,245,-224,-86,-75,-232,-235,-68,-223,245,245,245,-225,-87,-74,-227,-228,245,-226,-229,245,245,-231,-230,]),'CONTINUE':([15,90,91,121,128,208,221,222,223,224,225,226,227,228,229,230,231,232,242,262,267,355,356,358,360,361,369,370,371,374,375,377,469,470,471,479,480,483,484,499,524,525,526,527,552,553,554,555,556,570,579,580,582,584,585,586,],[-71,-90,-72,-338,246,-339,246,-219,-217,-218,-78,-79,-80,-81,-82,-83,-84,-85,246,-73,-69,-221,-220,246,246,-237,246,-87,-74,-233,-234,-236,-222,246,-224,-86,-75,-232,-235,-68,-223,246,246,246,-225,-87,-74,-227,-228,246,-226,-229,246,246,-231,-230,]),'RETURN':([15,90,91,121,128,208,221,222,223,224,225,226,227,228,229,230,231,232,242,262,267,355,356,358,360,361,369,370,371,374,375,377,469,470,471,479,480,483,484,499,524,525,526,527,552,553,554,555,556,570,579,580,582,584,585,586,],[-71,-90,-72,-338,247,-339,247,-219,-217,-218,-78,-79,-80,-81,-82,-83,-84,-85,247,-73,-69,-221,-220,247,247,-237,247,-87,-74,-233,-234,-236,-222,247,-224,-86,-75,-232,-235,-68,-223,247,247,247,-225,-87,-74,-227,-228,247,-226,-229,247,247,-231,-230,]),'PLUSPLUS':([15,51,52,53,81,90,91,94,95,114,115,116,121,126,128,135,136,139,141,143,147,148,149,150,152,153,154,155,156,158,159,160,161,162,163,164,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,195,197,208,221,222,223,224,225,226,227,228,229,230,231,232,233,234,238,242,247,256,257,258,259,262,263,267,268,269,270,271,272,273,274,275,276,277,278,279,280,281,282,283,284,285,286,287,288,291,292,294,298,300,301,302,303,306,309,310,323,332,347,355,356,358,360,361,362,365,366,367,369,370,371,372,374,375,377,378,379,380,381,382,383,384,385,386,387,388,389,392,393,394,397,400,401,402,405,406,429,431,432,433,434,448,455,457,467,469,470,471,474,479,480,482,483,484,487,489,498,499,500,501,502,503,510,511,512,520,524,525,526,527,528,529,532,533,543,544,545,552,553,554,555,556,559,561,562,563,565,570,572,574,579,580,582,584,585,586,],[-71,-131,-132,-133,-134,-90,-72,153,-340,-27,-28,-185,-338,153,153,153,-340,-328,153,-306,-287,-288,-289,-286,291,153,153,153,153,-292,-315,-290,-291,-304,-305,-307,-316,-317,-318,-319,-320,-321,-322,-323,-324,-325,-326,-327,-330,-331,-332,-333,153,-340,-28,153,-186,-339,153,-219,-217,-218,-78,-79,-80,-81,-82,-83,-84,-85,-315,153,153,153,153,-340,153,-340,-28,-73,-329,-69,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,-300,-301,153,153,-334,-335,-336,-337,-287,153,153,-340,153,153,-221,-220,153,153,-237,153,153,153,153,153,-87,-74,153,-233,-234,-236,153,-244,-245,-246,-247,-248,-249,-250,-251,-252,-253,-254,-11,153,-12,153,-287,153,153,153,-308,-295,-296,-297,-298,-299,-340,153,153,153,-222,153,-224,153,-86,-75,153,-232,-235,-340,-201,-340,-68,153,-293,-294,153,153,-340,-28,-287,-223,153,153,153,153,153,153,-11,-287,153,153,-225,-87,-74,-227,-228,153,-302,-340,-309,153,153,153,-303,-226,-229,153,153,-231,-230,]),'MINUSMINUS':([15,51,52,53,81,90,91,94,95,114,115,116,121,126,128,135,136,139,141,143,147,148,149,150,152,153,154,155,156,158,159,160,161,162,163,164,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,195,197,208,221,222,223,224,225,226,227,228,229,230,231,232,233,234,238,242,247,256,257,258,259,262,263,267,268,269,270,271,272,273,274,275,276,277,278,279,280,281,282,283,284,285,286,287,288,291,292,294,298,300,301,302,303,306,309,310,323,332,347,355,356,358,360,361,362,365,366,367,369,370,371,372,374,375,377,378,379,380,381,382,383,384,385,386,387,388,389,392,393,394,397,400,401,402,405,406,429,431,432,433,434,448,455,457,467,469,470,471,474,479,480,482,483,484,487,489,498,499,500,501,502,503,510,511,512,520,524,525,526,527,528,529,532,533,543,544,545,552,553,554,555,556,559,561,562,563,565,570,572,574,579,580,582,584,585,586,],[-71,-131,-132,-133,-134,-90,-72,154,-340,-27,-28,-185,-338,154,154,154,-340,-328,154,-306,-287,-288,-289,-286,292,154,154,154,154,-292,-315,-290,-291,-304,-305,-307,-316,-317,-318,-319,-320,-321,-322,-323,-324,-325,-326,-327,-330,-331,-332,-333,154,-340,-28,154,-186,-339,154,-219,-217,-218,-78,-79,-80,-81,-82,-83,-84,-85,-315,154,154,154,154,-340,154,-340,-28,-73,-329,-69,154,154,154,154,154,154,154,154,154,154,154,154,154,154,154,154,154,154,154,154,154,-300,-301,154,154,-334,-335,-336,-337,-287,154,154,-340,154,154,-221,-220,154,154,-237,154,154,154,154,154,-87,-74,154,-233,-234,-236,154,-244,-245,-246,-247,-248,-249,-250,-251,-252,-253,-254,-11,154,-12,154,-287,154,154,154,-308,-295,-296,-297,-298,-299,-340,154,154,154,-222,154,-224,154,-86,-75,154,-232,-235,-340,-201,-340,-68,154,-293,-294,154,154,-340,-28,-287,-223,154,154,154,154,154,154,-11,-287,154,154,-225,-87,-74,-227,-228,154,-302,-340,-309,154,154,154,-303,-226,-229,154,154,-231,-230,]),'SIZEOF':([15,51,52,53,81,90,91,94,95,114,115,116,121,126,128,135,136,141,147,148,149,150,153,154,155,156,160,161,182,183,184,195,197,208,221,222,223,224,225,226,227,228,229,230,231,232,234,238,242,247,256,257,258,259,262,267,268,269,270,271,272,273,274,275,276,277,278,279,280,281,282,283,284,285,286,287,288,294,298,306,309,310,323,332,347,355,356,358,360,361,362,365,366,367,369,370,371,372,374,375,377,378,379,380,381,382,383,384,385,386,387,388,389,392,393,394,397,400,401,402,405,448,455,457,467,469,470,471,474,479,480,482,483,484,487,489,498,499,500,503,510,511,512,520,524,525,526,527,528,529,532,533,543,544,545,552,553,554,555,556,559,562,565,570,572,579,580,582,584,585,586,],[-71,-131,-132,-133,-134,-90,-72,156,-340,-27,-28,-185,-338,156,156,156,-340,156,-287,-288,-289,-286,156,156,156,156,-290,-291,156,-340,-28,156,-186,-339,156,-219,-217,-218,-78,-79,-80,-81,-82,-83,-84,-85,156,156,156,156,-340,156,-340,-28,-73,-69,156,156,156,156,156,156,156,156,156,156,156,156,156,156,156,156,156,156,156,156,156,156,156,-287,156,156,-340,156,156,-221,-220,156,156,-237,156,156,156,156,156,-87,-74,156,-233,-234,-236,156,-244,-245,-246,-247,-248,-249,-250,-251,-252,-253,-254,-11,156,-12,156,-287,156,156,156,-340,156,156,156,-222,156,-224,156,-86,-75,156,-232,-235,-340,-201,-340,-68,156,156,156,-340,-28,-287,-223,156,156,156,156,156,156,-11,-287,156,156,-225,-87,-74,-227,-228,156,-340,156,156,156,-226,-229,156,156,-231,-230,]),'_ALIGNOF':([15,51,52,53,81,90,91,94,95,114,115,116,121,126,128,135,136,141,147,148,149,150,153,154,155,156,160,161,182,183,184,195,197,208,221,222,223,224,225,226,227,228,229,230,231,232,234,238,242,247,256,257,258,259,262,267,268,269,270,271,272,273,274,275,276,277,278,279,280,281,282,283,284,285,286,287,288,294,298,306,309,310,323,332,347,355,356,358,360,361,362,365,366,367,369,370,371,372,374,375,377,378,379,380,381,382,383,384,385,386,387,388,389,392,393,394,397,400,401,402,405,448,455,457,467,469,470,471,474,479,480,482,483,484,487,489,498,499,500,503,510,511,512,520,524,525,526,527,528,529,532,533,543,544,545,552,553,554,555,556,559,562,565,570,572,579,580,582,584,585,586,],[-71,-131,-132,-133,-134,-90,-72,157,-340,-27,-28,-185,-338,157,157,157,-340,157,-287,-288,-289,-286,157,157,157,157,-290,-291,157,-340,-28,157,-186,-339,157,-219,-217,-218,-78,-79,-80,-81,-82,-83,-84,-85,157,157,157,157,-340,157,-340,-28,-73,-69,157,157,157,157,157,157,157,157,157,157,157,157,157,157,157,157,157,157,157,157,157,157,157,-287,157,157,-340,157,157,-221,-220,157,157,-237,157,157,157,157,157,-87,-74,157,-233,-234,-236,157,-244,-245,-246,-247,-248,-249,-250,-251,-252,-253,-254,-11,157,-12,157,-287,157,157,157,-340,157,157,157,-222,157,-224,157,-86,-75,157,-232,-235,-340,-201,-340,-68,157,157,157,-340,-28,-287,-223,157,157,157,157,157,157,-11,-287,157,157,-225,-87,-74,-227,-228,157,-340,157,157,157,-226,-229,157,157,-231,-230,]),'AND':([15,51,52,53,81,90,91,94,95,114,115,116,121,126,128,135,136,139,141,143,145,146,147,148,149,150,151,152,153,154,155,156,158,159,160,161,162,163,164,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,195,197,208,221,222,223,224,225,226,227,228,229,230,231,232,233,234,238,242,247,250,256,257,258,259,262,263,267,268,269,270,271,272,273,274,275,276,277,278,279,280,281,282,283,284,285,286,287,288,291,292,293,294,295,296,297,298,300,301,302,303,306,309,310,323,332,347,355,356,358,360,361,362,365,366,367,369,370,371,372,374,375,377,378,379,380,381,382,383,384,385,386,387,388,389,392,393,394,397,400,401,402,405,406,409,410,411,412,413,414,415,416,417,418,419,420,421,422,423,424,425,426,429,431,432,433,434,448,455,457,467,469,470,471,474,479,480,482,483,484,487,489,497,498,499,500,501,502,503,505,506,510,511,512,520,524,525,526,527,528,529,532,533,543,544,545,552,553,554,555,556,559,561,562,563,565,570,572,574,579,580,582,584,585,586,],[-71,-131,-132,-133,-134,-90,-72,150,-340,-27,-28,-185,-338,150,150,150,-340,-328,150,-306,282,-258,-287,-288,-289,-286,-277,-279,150,150,150,150,-292,-315,-290,-291,-304,-305,-307,-316,-317,-318,-319,-320,-321,-322,-323,-324,-325,-326,-327,-330,-331,-332,-333,150,-340,-28,150,-186,-339,150,-219,-217,-218,-78,-79,-80,-81,-82,-83,-84,-85,-315,150,150,150,150,-277,-340,150,-340,-28,-73,-329,-69,150,150,150,150,150,150,150,150,150,150,150,150,150,150,150,150,150,150,150,150,150,-300,-301,-280,150,-281,-282,-283,150,-334,-335,-336,-337,-287,150,150,-340,150,150,-221,-220,150,150,-237,150,150,150,150,150,-87,-74,150,-233,-234,-236,150,-244,-245,-246,-247,-248,-249,-250,-251,-252,-253,-254,-11,150,-12,150,-287,150,150,150,-308,-259,-260,-261,-262,-263,-264,-265,-266,-267,-268,-269,-270,-271,-272,282,282,282,282,-295,-296,-297,-298,-299,-340,150,150,150,-222,150,-224,150,-86,-75,150,-232,-235,-340,-201,-278,-340,-68,150,-293,-294,150,-284,-285,150,-340,-28,-287,-223,150,150,150,150,150,150,-11,-287,150,150,-225,-87,-74,-227,-228,150,-302,-340,-309,150,150,150,-303,-226,-229,150,150,-231,-230,]),'PLUS':([15,51,52,53,81,90,91,94,95,114,115,116,121,126,128,135,136,139,141,143,145,146,147,148,149,150,151,152,153,154,155,156,158,159,160,161,162,163,164,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,195,197,208,221,222,223,224,225,226,227,228,229,230,231,232,233,234,238,242,247,250,256,257,258,259,262,263,267,268,269,270,271,272,273,274,275,276,277,278,279,280,281,282,283,284,285,286,287,288,291,292,293,294,295,296,297,298,300,301,302,303,306,309,310,323,332,347,355,356,358,360,361,362,365,366,367,369,370,371,372,374,375,377,378,379,380,381,382,383,384,385,386,387,388,389,392,393,394,397,400,401,402,405,406,409,410,411,412,413,414,415,416,417,418,419,420,421,422,423,424,425,426,429,431,432,433,434,448,455,457,467,469,470,471,474,479,480,482,483,484,487,489,497,498,499,500,501,502,503,505,506,510,511,512,520,524,525,526,527,528,529,532,533,543,544,545,552,553,554,555,556,559,561,562,563,565,570,572,574,579,580,582,584,585,586,],[-71,-131,-132,-133,-134,-90,-72,148,-340,-27,-28,-185,-338,148,148,148,-340,-328,148,-306,272,-258,-287,-288,-289,-286,-277,-279,148,148,148,148,-292,-315,-290,-291,-304,-305,-307,-316,-317,-318,-319,-320,-321,-322,-323,-324,-325,-326,-327,-330,-331,-332,-333,148,-340,-28,148,-186,-339,148,-219,-217,-218,-78,-79,-80,-81,-82,-83,-84,-85,-315,148,148,148,148,-277,-340,148,-340,-28,-73,-329,-69,148,148,148,148,148,148,148,148,148,148,148,148,148,148,148,148,148,148,148,148,148,-300,-301,-280,148,-281,-282,-283,148,-334,-335,-336,-337,-287,148,148,-340,148,148,-221,-220,148,148,-237,148,148,148,148,148,-87,-74,148,-233,-234,-236,148,-244,-245,-246,-247,-248,-249,-250,-251,-252,-253,-254,-11,148,-12,148,-287,148,148,148,-308,-259,-260,-261,-262,-263,272,272,272,272,272,272,272,272,272,272,272,272,272,-295,-296,-297,-298,-299,-340,148,148,148,-222,148,-224,148,-86,-75,148,-232,-235,-340,-201,-278,-340,-68,148,-293,-294,148,-284,-285,148,-340,-28,-287,-223,148,148,148,148,148,148,-11,-287,148,148,-225,-87,-74,-227,-228,148,-302,-340,-309,148,148,148,-303,-226,-229,148,148,-231,-230,]),'MINUS':([15,51,52,53,81,90,91,94,95,114,115,116,121,126,128,135,136,139,141,143,145,146,147,148,149,150,151,152,153,154,155,156,158,159,160,161,162,163,164,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,195,197,208,221,222,223,224,225,226,227,228,229,230,231,232,233,234,238,242,247,250,256,257,258,259,262,263,267,268,269,270,271,272,273,274,275,276,277,278,279,280,281,282,283,284,285,286,287,288,291,292,293,294,295,296,297,298,300,301,302,303,306,309,310,323,332,347,355,356,358,360,361,362,365,366,367,369,370,371,372,374,375,377,378,379,380,381,382,383,384,385,386,387,388,389,392,393,394,397,400,401,402,405,406,409,410,411,412,413,414,415,416,417,418,419,420,421,422,423,424,425,426,429,431,432,433,434,448,455,457,467,469,470,471,474,479,480,482,483,484,487,489,497,498,499,500,501,502,503,505,506,510,511,512,520,524,525,526,527,528,529,532,533,543,544,545,552,553,554,555,556,559,561,562,563,565,570,572,574,579,580,582,584,585,586,],[-71,-131,-132,-133,-134,-90,-72,149,-340,-27,-28,-185,-338,149,149,149,-340,-328,149,-306,273,-258,-287,-288,-289,-286,-277,-279,149,149,149,149,-292,-315,-290,-291,-304,-305,-307,-316,-317,-318,-319,-320,-321,-322,-323,-324,-325,-326,-327,-330,-331,-332,-333,149,-340,-28,149,-186,-339,149,-219,-217,-218,-78,-79,-80,-81,-82,-83,-84,-85,-315,149,149,149,149,-277,-340,149,-340,-28,-73,-329,-69,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,-300,-301,-280,149,-281,-282,-283,149,-334,-335,-336,-337,-287,149,149,-340,149,149,-221,-220,149,149,-237,149,149,149,149,149,-87,-74,149,-233,-234,-236,149,-244,-245,-246,-247,-248,-249,-250,-251,-252,-253,-254,-11,149,-12,149,-287,149,149,149,-308,-259,-260,-261,-262,-263,273,273,273,273,273,273,273,273,273,273,273,273,273,-295,-296,-297,-298,-299,-340,149,149,149,-222,149,-224,149,-86,-75,149,-232,-235,-340,-201,-278,-340,-68,149,-293,-294,149,-284,-285,149,-340,-28,-287,-223,149,149,149,149,149,149,-11,-287,149,149,-225,-87,-74,-227,-228,149,-302,-340,-309,149,149,149,-303,-226,-229,149,149,-231,-230,]),'NOT':([15,51,52,53,81,90,91,94,95,114,115,116,121,126,128,135,136,141,147,148,149,150,153,154,155,156,160,161,182,183,184,195,197,208,221,222,223,224,225,226,227,228,229,230,231,232,234,238,242,247,256,257,258,259,262,267,268,269,270,271,272,273,274,275,276,277,278,279,280,281,282,283,284,285,286,287,288,294,298,306,309,310,323,332,347,355,356,358,360,361,362,365,366,367,369,370,371,372,374,375,377,378,379,380,381,382,383,384,385,386,387,388,389,392,393,394,397,400,401,402,405,448,455,457,467,469,470,471,474,479,480,482,483,484,487,489,498,499,500,503,510,511,512,520,524,525,526,527,528,529,532,533,543,544,545,552,553,554,555,556,559,562,565,570,572,579,580,582,584,585,586,],[-71,-131,-132,-133,-134,-90,-72,160,-340,-27,-28,-185,-338,160,160,160,-340,160,-287,-288,-289,-286,160,160,160,160,-290,-291,160,-340,-28,160,-186,-339,160,-219,-217,-218,-78,-79,-80,-81,-82,-83,-84,-85,160,160,160,160,-340,160,-340,-28,-73,-69,160,160,160,160,160,160,160,160,160,160,160,160,160,160,160,160,160,160,160,160,160,160,160,-287,160,160,-340,160,160,-221,-220,160,160,-237,160,160,160,160,160,-87,-74,160,-233,-234,-236,160,-244,-245,-246,-247,-248,-249,-250,-251,-252,-253,-254,-11,160,-12,160,-287,160,160,160,-340,160,160,160,-222,160,-224,160,-86,-75,160,-232,-235,-340,-201,-340,-68,160,160,160,-340,-28,-287,-223,160,160,160,160,160,160,-11,-287,160,160,-225,-87,-74,-227,-228,160,-340,160,160,160,-226,-229,160,160,-231,-230,]),'LNOT':([15,51,52,53,81,90,91,94,95,114,115,116,121,126,128,135,136,141,147,148,149,150,153,154,155,156,160,161,182,183,184,195,197,208,221,222,223,224,225,226,227,228,229,230,231,232,234,238,242,247,256,257,258,259,262,267,268,269,270,271,272,273,274,275,276,277,278,279,280,281,282,283,284,285,286,287,288,294,298,306,309,310,323,332,347,355,356,358,360,361,362,365,366,367,369,370,371,372,374,375,377,378,379,380,381,382,383,384,385,386,387,388,389,392,393,394,397,400,401,402,405,448,455,457,467,469,470,471,474,479,480,482,483,484,487,489,498,499,500,503,510,511,512,520,524,525,526,527,528,529,532,533,543,544,545,552,553,554,555,556,559,562,565,570,572,579,580,582,584,585,586,],[-71,-131,-132,-133,-134,-90,-72,161,-340,-27,-28,-185,-338,161,161,161,-340,161,-287,-288,-289,-286,161,161,161,161,-290,-291,161,-340,-28,161,-186,-339,161,-219,-217,-218,-78,-79,-80,-81,-82,-83,-84,-85,161,161,161,161,-340,161,-340,-28,-73,-69,161,161,161,161,161,161,161,161,161,161,161,161,161,161,161,161,161,161,161,161,161,161,161,-287,161,161,-340,161,161,-221,-220,161,161,-237,161,161,161,161,161,-87,-74,161,-233,-234,-236,161,-244,-245,-246,-247,-248,-249,-250,-251,-252,-253,-254,-11,161,-12,161,-287,161,161,161,-340,161,161,161,-222,161,-224,161,-86,-75,161,-232,-235,-340,-201,-340,-68,161,161,161,-340,-28,-287,-223,161,161,161,161,161,161,-11,-287,161,161,-225,-87,-74,-227,-228,161,-340,161,161,161,-226,-229,161,161,-231,-230,]),'OFFSETOF':([15,51,52,53,81,90,91,94,95,114,115,116,121,126,128,135,136,141,147,148,149,150,153,154,155,156,160,161,182,183,184,195,197,208,221,222,223,224,225,226,227,228,229,230,231,232,234,238,242,247,256,257,258,259,262,267,268,269,270,271,272,273,274,275,276,277,278,279,280,281,282,283,284,285,286,287,288,294,298,306,309,310,323,332,347,355,356,358,360,361,362,365,366,367,369,370,371,372,374,375,377,378,379,380,381,382,383,384,385,386,387,388,389,392,393,394,397,400,401,402,405,448,455,457,467,469,470,471,474,479,480,482,483,484,487,489,498,499,500,503,510,511,512,520,524,525,526,527,528,529,532,533,543,544,545,552,553,554,555,556,559,562,565,570,572,579,580,582,584,585,586,],[-71,-131,-132,-133,-134,-90,-72,165,-340,-27,-28,-185,-338,165,165,165,-340,165,-287,-288,-289,-286,165,165,165,165,-290,-291,165,-340,-28,165,-186,-339,165,-219,-217,-218,-78,-79,-80,-81,-82,-83,-84,-85,165,165,165,165,-340,165,-340,-28,-73,-69,165,165,165,165,165,165,165,165,165,165,165,165,165,165,165,165,165,165,165,165,165,165,165,-287,165,165,-340,165,165,-221,-220,165,165,-237,165,165,165,165,165,-87,-74,165,-233,-234,-236,165,-244,-245,-246,-247,-248,-249,-250,-251,-252,-253,-254,-11,165,-12,165,-287,165,165,165,-340,165,165,165,-222,165,-224,165,-86,-75,165,-232,-235,-340,-201,-340,-68,165,165,165,-340,-28,-287,-223,165,165,165,165,165,165,-11,-287,165,165,-225,-87,-74,-227,-228,165,-340,165,165,165,-226,-229,165,165,-231,-230,]),'INT_CONST_DEC':([15,51,52,53,81,90,91,94,95,114,115,116,121,126,128,135,136,141,147,148,149,150,153,154,155,156,160,161,182,183,184,195,197,208,221,222,223,224,225,226,227,228,229,230,231,232,234,238,242,247,256,257,258,259,262,267,268,269,270,271,272,273,274,275,276,277,278,279,280,281,282,283,284,285,286,287,288,294,298,306,309,310,323,332,347,355,356,358,360,361,362,365,366,367,369,370,371,372,374,375,377,378,379,380,381,382,383,384,385,386,387,388,389,392,393,394,397,400,401,402,405,448,455,457,467,469,470,471,474,479,480,482,483,484,487,489,498,499,500,503,510,511,512,520,524,525,526,527,528,529,532,533,543,544,545,552,553,554,555,556,559,562,565,570,572,579,580,582,584,585,586,],[-71,-131,-132,-133,-134,-90,-72,166,-340,-27,-28,-185,-338,166,166,166,-340,166,-287,-288,-289,-286,166,166,166,166,-290,-291,166,-340,-28,166,-186,-339,166,-219,-217,-218,-78,-79,-80,-81,-82,-83,-84,-85,166,166,166,166,-340,166,-340,-28,-73,-69,166,166,166,166,166,166,166,166,166,166,166,166,166,166,166,166,166,166,166,166,166,166,166,-287,166,166,-340,166,166,-221,-220,166,166,-237,166,166,166,166,166,-87,-74,166,-233,-234,-236,166,-244,-245,-246,-247,-248,-249,-250,-251,-252,-253,-254,-11,166,-12,166,-287,166,166,166,-340,166,166,166,-222,166,-224,166,-86,-75,166,-232,-235,-340,-201,-340,-68,166,166,166,-340,-28,-287,-223,166,166,166,166,166,166,-11,-287,166,166,-225,-87,-74,-227,-228,166,-340,166,166,166,-226,-229,166,166,-231,-230,]),'INT_CONST_OCT':([15,51,52,53,81,90,91,94,95,114,115,116,121,126,128,135,136,141,147,148,149,150,153,154,155,156,160,161,182,183,184,195,197,208,221,222,223,224,225,226,227,228,229,230,231,232,234,238,242,247,256,257,258,259,262,267,268,269,270,271,272,273,274,275,276,277,278,279,280,281,282,283,284,285,286,287,288,294,298,306,309,310,323,332,347,355,356,358,360,361,362,365,366,367,369,370,371,372,374,375,377,378,379,380,381,382,383,384,385,386,387,388,389,392,393,394,397,400,401,402,405,448,455,457,467,469,470,471,474,479,480,482,483,484,487,489,498,499,500,503,510,511,512,520,524,525,526,527,528,529,532,533,543,544,545,552,553,554,555,556,559,562,565,570,572,579,580,582,584,585,586,],[-71,-131,-132,-133,-134,-90,-72,167,-340,-27,-28,-185,-338,167,167,167,-340,167,-287,-288,-289,-286,167,167,167,167,-290,-291,167,-340,-28,167,-186,-339,167,-219,-217,-218,-78,-79,-80,-81,-82,-83,-84,-85,167,167,167,167,-340,167,-340,-28,-73,-69,167,167,167,167,167,167,167,167,167,167,167,167,167,167,167,167,167,167,167,167,167,167,167,-287,167,167,-340,167,167,-221,-220,167,167,-237,167,167,167,167,167,-87,-74,167,-233,-234,-236,167,-244,-245,-246,-247,-248,-249,-250,-251,-252,-253,-254,-11,167,-12,167,-287,167,167,167,-340,167,167,167,-222,167,-224,167,-86,-75,167,-232,-235,-340,-201,-340,-68,167,167,167,-340,-28,-287,-223,167,167,167,167,167,167,-11,-287,167,167,-225,-87,-74,-227,-228,167,-340,167,167,167,-226,-229,167,167,-231,-230,]),'INT_CONST_HEX':([15,51,52,53,81,90,91,94,95,114,115,116,121,126,128,135,136,141,147,148,149,150,153,154,155,156,160,161,182,183,184,195,197,208,221,222,223,224,225,226,227,228,229,230,231,232,234,238,242,247,256,257,258,259,262,267,268,269,270,271,272,273,274,275,276,277,278,279,280,281,282,283,284,285,286,287,288,294,298,306,309,310,323,332,347,355,356,358,360,361,362,365,366,367,369,370,371,372,374,375,377,378,379,380,381,382,383,384,385,386,387,388,389,392,393,394,397,400,401,402,405,448,455,457,467,469,470,471,474,479,480,482,483,484,487,489,498,499,500,503,510,511,512,520,524,525,526,527,528,529,532,533,543,544,545,552,553,554,555,556,559,562,565,570,572,579,580,582,584,585,586,],[-71,-131,-132,-133,-134,-90,-72,168,-340,-27,-28,-185,-338,168,168,168,-340,168,-287,-288,-289,-286,168,168,168,168,-290,-291,168,-340,-28,168,-186,-339,168,-219,-217,-218,-78,-79,-80,-81,-82,-83,-84,-85,168,168,168,168,-340,168,-340,-28,-73,-69,168,168,168,168,168,168,168,168,168,168,168,168,168,168,168,168,168,168,168,168,168,168,168,-287,168,168,-340,168,168,-221,-220,168,168,-237,168,168,168,168,168,-87,-74,168,-233,-234,-236,168,-244,-245,-246,-247,-248,-249,-250,-251,-252,-253,-254,-11,168,-12,168,-287,168,168,168,-340,168,168,168,-222,168,-224,168,-86,-75,168,-232,-235,-340,-201,-340,-68,168,168,168,-340,-28,-287,-223,168,168,168,168,168,168,-11,-287,168,168,-225,-87,-74,-227,-228,168,-340,168,168,168,-226,-229,168,168,-231,-230,]),'INT_CONST_BIN':([15,51,52,53,81,90,91,94,95,114,115,116,121,126,128,135,136,141,147,148,149,150,153,154,155,156,160,161,182,183,184,195,197,208,221,222,223,224,225,226,227,228,229,230,231,232,234,238,242,247,256,257,258,259,262,267,268,269,270,271,272,273,274,275,276,277,278,279,280,281,282,283,284,285,286,287,288,294,298,306,309,310,323,332,347,355,356,358,360,361,362,365,366,367,369,370,371,372,374,375,377,378,379,380,381,382,383,384,385,386,387,388,389,392,393,394,397,400,401,402,405,448,455,457,467,469,470,471,474,479,480,482,483,484,487,489,498,499,500,503,510,511,512,520,524,525,526,527,528,529,532,533,543,544,545,552,553,554,555,556,559,562,565,570,572,579,580,582,584,585,586,],[-71,-131,-132,-133,-134,-90,-72,169,-340,-27,-28,-185,-338,169,169,169,-340,169,-287,-288,-289,-286,169,169,169,169,-290,-291,169,-340,-28,169,-186,-339,169,-219,-217,-218,-78,-79,-80,-81,-82,-83,-84,-85,169,169,169,169,-340,169,-340,-28,-73,-69,169,169,169,169,169,169,169,169,169,169,169,169,169,169,169,169,169,169,169,169,169,169,169,-287,169,169,-340,169,169,-221,-220,169,169,-237,169,169,169,169,169,-87,-74,169,-233,-234,-236,169,-244,-245,-246,-247,-248,-249,-250,-251,-252,-253,-254,-11,169,-12,169,-287,169,169,169,-340,169,169,169,-222,169,-224,169,-86,-75,169,-232,-235,-340,-201,-340,-68,169,169,169,-340,-28,-287,-223,169,169,169,169,169,169,-11,-287,169,169,-225,-87,-74,-227,-228,169,-340,169,169,169,-226,-229,169,169,-231,-230,]),'INT_CONST_CHAR':([15,51,52,53,81,90,91,94,95,114,115,116,121,126,128,135,136,141,147,148,149,150,153,154,155,156,160,161,182,183,184,195,197,208,221,222,223,224,225,226,227,228,229,230,231,232,234,238,242,247,256,257,258,259,262,267,268,269,270,271,272,273,274,275,276,277,278,279,280,281,282,283,284,285,286,287,288,294,298,306,309,310,323,332,347,355,356,358,360,361,362,365,366,367,369,370,371,372,374,375,377,378,379,380,381,382,383,384,385,386,387,388,389,392,393,394,397,400,401,402,405,448,455,457,467,469,470,471,474,479,480,482,483,484,487,489,498,499,500,503,510,511,512,520,524,525,526,527,528,529,532,533,543,544,545,552,553,554,555,556,559,562,565,570,572,579,580,582,584,585,586,],[-71,-131,-132,-133,-134,-90,-72,170,-340,-27,-28,-185,-338,170,170,170,-340,170,-287,-288,-289,-286,170,170,170,170,-290,-291,170,-340,-28,170,-186,-339,170,-219,-217,-218,-78,-79,-80,-81,-82,-83,-84,-85,170,170,170,170,-340,170,-340,-28,-73,-69,170,170,170,170,170,170,170,170,170,170,170,170,170,170,170,170,170,170,170,170,170,170,170,-287,170,170,-340,170,170,-221,-220,170,170,-237,170,170,170,170,170,-87,-74,170,-233,-234,-236,170,-244,-245,-246,-247,-248,-249,-250,-251,-252,-253,-254,-11,170,-12,170,-287,170,170,170,-340,170,170,170,-222,170,-224,170,-86,-75,170,-232,-235,-340,-201,-340,-68,170,170,170,-340,-28,-287,-223,170,170,170,170,170,170,-11,-287,170,170,-225,-87,-74,-227,-228,170,-340,170,170,170,-226,-229,170,170,-231,-230,]),'FLOAT_CONST':([15,51,52,53,81,90,91,94,95,114,115,116,121,126,128,135,136,141,147,148,149,150,153,154,155,156,160,161,182,183,184,195,197,208,221,222,223,224,225,226,227,228,229,230,231,232,234,238,242,247,256,257,258,259,262,267,268,269,270,271,272,273,274,275,276,277,278,279,280,281,282,283,284,285,286,287,288,294,298,306,309,310,323,332,347,355,356,358,360,361,362,365,366,367,369,370,371,372,374,375,377,378,379,380,381,382,383,384,385,386,387,388,389,392,393,394,397,400,401,402,405,448,455,457,467,469,470,471,474,479,480,482,483,484,487,489,498,499,500,503,510,511,512,520,524,525,526,527,528,529,532,533,543,544,545,552,553,554,555,556,559,562,565,570,572,579,580,582,584,585,586,],[-71,-131,-132,-133,-134,-90,-72,171,-340,-27,-28,-185,-338,171,171,171,-340,171,-287,-288,-289,-286,171,171,171,171,-290,-291,171,-340,-28,171,-186,-339,171,-219,-217,-218,-78,-79,-80,-81,-82,-83,-84,-85,171,171,171,171,-340,171,-340,-28,-73,-69,171,171,171,171,171,171,171,171,171,171,171,171,171,171,171,171,171,171,171,171,171,171,171,-287,171,171,-340,171,171,-221,-220,171,171,-237,171,171,171,171,171,-87,-74,171,-233,-234,-236,171,-244,-245,-246,-247,-248,-249,-250,-251,-252,-253,-254,-11,171,-12,171,-287,171,171,171,-340,171,171,171,-222,171,-224,171,-86,-75,171,-232,-235,-340,-201,-340,-68,171,171,171,-340,-28,-287,-223,171,171,171,171,171,171,-11,-287,171,171,-225,-87,-74,-227,-228,171,-340,171,171,171,-226,-229,171,171,-231,-230,]),'HEX_FLOAT_CONST':([15,51,52,53,81,90,91,94,95,114,115,116,121,126,128,135,136,141,147,148,149,150,153,154,155,156,160,161,182,183,184,195,197,208,221,222,223,224,225,226,227,228,229,230,231,232,234,238,242,247,256,257,258,259,262,267,268,269,270,271,272,273,274,275,276,277,278,279,280,281,282,283,284,285,286,287,288,294,298,306,309,310,323,332,347,355,356,358,360,361,362,365,366,367,369,370,371,372,374,375,377,378,379,380,381,382,383,384,385,386,387,388,389,392,393,394,397,400,401,402,405,448,455,457,467,469,470,471,474,479,480,482,483,484,487,489,498,499,500,503,510,511,512,520,524,525,526,527,528,529,532,533,543,544,545,552,553,554,555,556,559,562,565,570,572,579,580,582,584,585,586,],[-71,-131,-132,-133,-134,-90,-72,172,-340,-27,-28,-185,-338,172,172,172,-340,172,-287,-288,-289,-286,172,172,172,172,-290,-291,172,-340,-28,172,-186,-339,172,-219,-217,-218,-78,-79,-80,-81,-82,-83,-84,-85,172,172,172,172,-340,172,-340,-28,-73,-69,172,172,172,172,172,172,172,172,172,172,172,172,172,172,172,172,172,172,172,172,172,172,172,-287,172,172,-340,172,172,-221,-220,172,172,-237,172,172,172,172,172,-87,-74,172,-233,-234,-236,172,-244,-245,-246,-247,-248,-249,-250,-251,-252,-253,-254,-11,172,-12,172,-287,172,172,172,-340,172,172,172,-222,172,-224,172,-86,-75,172,-232,-235,-340,-201,-340,-68,172,172,172,-340,-28,-287,-223,172,172,172,172,172,172,-11,-287,172,172,-225,-87,-74,-227,-228,172,-340,172,172,172,-226,-229,172,172,-231,-230,]),'CHAR_CONST':([15,51,52,53,81,90,91,94,95,114,115,116,121,126,128,135,136,141,147,148,149,150,153,154,155,156,160,161,182,183,184,195,197,208,221,222,223,224,225,226,227,228,229,230,231,232,234,238,242,247,256,257,258,259,262,267,268,269,270,271,272,273,274,275,276,277,278,279,280,281,282,283,284,285,286,287,288,294,298,306,309,310,323,332,347,355,356,358,360,361,362,365,366,367,369,370,371,372,374,375,377,378,379,380,381,382,383,384,385,386,387,388,389,392,393,394,397,400,401,402,405,448,455,457,467,469,470,471,474,479,480,482,483,484,487,489,498,499,500,503,510,511,512,520,524,525,526,527,528,529,532,533,543,544,545,552,553,554,555,556,559,562,565,570,572,579,580,582,584,585,586,],[-71,-131,-132,-133,-134,-90,-72,173,-340,-27,-28,-185,-338,173,173,173,-340,173,-287,-288,-289,-286,173,173,173,173,-290,-291,173,-340,-28,173,-186,-339,173,-219,-217,-218,-78,-79,-80,-81,-82,-83,-84,-85,173,173,173,173,-340,173,-340,-28,-73,-69,173,173,173,173,173,173,173,173,173,173,173,173,173,173,173,173,173,173,173,173,173,173,173,-287,173,173,-340,173,173,-221,-220,173,173,-237,173,173,173,173,173,-87,-74,173,-233,-234,-236,173,-244,-245,-246,-247,-248,-249,-250,-251,-252,-253,-254,-11,173,-12,173,-287,173,173,173,-340,173,173,173,-222,173,-224,173,-86,-75,173,-232,-235,-340,-201,-340,-68,173,173,173,-340,-28,-287,-223,173,173,173,173,173,173,-11,-287,173,173,-225,-87,-74,-227,-228,173,-340,173,173,173,-226,-229,173,173,-231,-230,]),'WCHAR_CONST':([15,51,52,53,81,90,91,94,95,114,115,116,121,126,128,135,136,141,147,148,149,150,153,154,155,156,160,161,182,183,184,195,197,208,221,222,223,224,225,226,227,228,229,230,231,232,234,238,242,247,256,257,258,259,262,267,268,269,270,271,272,273,274,275,276,277,278,279,280,281,282,283,284,285,286,287,288,294,298,306,309,310,323,332,347,355,356,358,360,361,362,365,366,367,369,370,371,372,374,375,377,378,379,380,381,382,383,384,385,386,387,388,389,392,393,394,397,400,401,402,405,448,455,457,467,469,470,471,474,479,480,482,483,484,487,489,498,499,500,503,510,511,512,520,524,525,526,527,528,529,532,533,543,544,545,552,553,554,555,556,559,562,565,570,572,579,580,582,584,585,586,],[-71,-131,-132,-133,-134,-90,-72,174,-340,-27,-28,-185,-338,174,174,174,-340,174,-287,-288,-289,-286,174,174,174,174,-290,-291,174,-340,-28,174,-186,-339,174,-219,-217,-218,-78,-79,-80,-81,-82,-83,-84,-85,174,174,174,174,-340,174,-340,-28,-73,-69,174,174,174,174,174,174,174,174,174,174,174,174,174,174,174,174,174,174,174,174,174,174,174,-287,174,174,-340,174,174,-221,-220,174,174,-237,174,174,174,174,174,-87,-74,174,-233,-234,-236,174,-244,-245,-246,-247,-248,-249,-250,-251,-252,-253,-254,-11,174,-12,174,-287,174,174,174,-340,174,174,174,-222,174,-224,174,-86,-75,174,-232,-235,-340,-201,-340,-68,174,174,174,-340,-28,-287,-223,174,174,174,174,174,174,-11,-287,174,174,-225,-87,-74,-227,-228,174,-340,174,174,174,-226,-229,174,174,-231,-230,]),'U8CHAR_CONST':([15,51,52,53,81,90,91,94,95,114,115,116,121,126,128,135,136,141,147,148,149,150,153,154,155,156,160,161,182,183,184,195,197,208,221,222,223,224,225,226,227,228,229,230,231,232,234,238,242,247,256,257,258,259,262,267,268,269,270,271,272,273,274,275,276,277,278,279,280,281,282,283,284,285,286,287,288,294,298,306,309,310,323,332,347,355,356,358,360,361,362,365,366,367,369,370,371,372,374,375,377,378,379,380,381,382,383,384,385,386,387,388,389,392,393,394,397,400,401,402,405,448,455,457,467,469,470,471,474,479,480,482,483,484,487,489,498,499,500,503,510,511,512,520,524,525,526,527,528,529,532,533,543,544,545,552,553,554,555,556,559,562,565,570,572,579,580,582,584,585,586,],[-71,-131,-132,-133,-134,-90,-72,175,-340,-27,-28,-185,-338,175,175,175,-340,175,-287,-288,-289,-286,175,175,175,175,-290,-291,175,-340,-28,175,-186,-339,175,-219,-217,-218,-78,-79,-80,-81,-82,-83,-84,-85,175,175,175,175,-340,175,-340,-28,-73,-69,175,175,175,175,175,175,175,175,175,175,175,175,175,175,175,175,175,175,175,175,175,175,175,-287,175,175,-340,175,175,-221,-220,175,175,-237,175,175,175,175,175,-87,-74,175,-233,-234,-236,175,-244,-245,-246,-247,-248,-249,-250,-251,-252,-253,-254,-11,175,-12,175,-287,175,175,175,-340,175,175,175,-222,175,-224,175,-86,-75,175,-232,-235,-340,-201,-340,-68,175,175,175,-340,-28,-287,-223,175,175,175,175,175,175,-11,-287,175,175,-225,-87,-74,-227,-228,175,-340,175,175,175,-226,-229,175,175,-231,-230,]),'U16CHAR_CONST':([15,51,52,53,81,90,91,94,95,114,115,116,121,126,128,135,136,141,147,148,149,150,153,154,155,156,160,161,182,183,184,195,197,208,221,222,223,224,225,226,227,228,229,230,231,232,234,238,242,247,256,257,258,259,262,267,268,269,270,271,272,273,274,275,276,277,278,279,280,281,282,283,284,285,286,287,288,294,298,306,309,310,323,332,347,355,356,358,360,361,362,365,366,367,369,370,371,372,374,375,377,378,379,380,381,382,383,384,385,386,387,388,389,392,393,394,397,400,401,402,405,448,455,457,467,469,470,471,474,479,480,482,483,484,487,489,498,499,500,503,510,511,512,520,524,525,526,527,528,529,532,533,543,544,545,552,553,554,555,556,559,562,565,570,572,579,580,582,584,585,586,],[-71,-131,-132,-133,-134,-90,-72,176,-340,-27,-28,-185,-338,176,176,176,-340,176,-287,-288,-289,-286,176,176,176,176,-290,-291,176,-340,-28,176,-186,-339,176,-219,-217,-218,-78,-79,-80,-81,-82,-83,-84,-85,176,176,176,176,-340,176,-340,-28,-73,-69,176,176,176,176,176,176,176,176,176,176,176,176,176,176,176,176,176,176,176,176,176,176,176,-287,176,176,-340,176,176,-221,-220,176,176,-237,176,176,176,176,176,-87,-74,176,-233,-234,-236,176,-244,-245,-246,-247,-248,-249,-250,-251,-252,-253,-254,-11,176,-12,176,-287,176,176,176,-340,176,176,176,-222,176,-224,176,-86,-75,176,-232,-235,-340,-201,-340,-68,176,176,176,-340,-28,-287,-223,176,176,176,176,176,176,-11,-287,176,176,-225,-87,-74,-227,-228,176,-340,176,176,176,-226,-229,176,176,-231,-230,]),'U32CHAR_CONST':([15,51,52,53,81,90,91,94,95,114,115,116,121,126,128,135,136,141,147,148,149,150,153,154,155,156,160,161,182,183,184,195,197,208,221,222,223,224,225,226,227,228,229,230,231,232,234,238,242,247,256,257,258,259,262,267,268,269,270,271,272,273,274,275,276,277,278,279,280,281,282,283,284,285,286,287,288,294,298,306,309,310,323,332,347,355,356,358,360,361,362,365,366,367,369,370,371,372,374,375,377,378,379,380,381,382,383,384,385,386,387,388,389,392,393,394,397,400,401,402,405,448,455,457,467,469,470,471,474,479,480,482,483,484,487,489,498,499,500,503,510,511,512,520,524,525,526,527,528,529,532,533,543,544,545,552,553,554,555,556,559,562,565,570,572,579,580,582,584,585,586,],[-71,-131,-132,-133,-134,-90,-72,177,-340,-27,-28,-185,-338,177,177,177,-340,177,-287,-288,-289,-286,177,177,177,177,-290,-291,177,-340,-28,177,-186,-339,177,-219,-217,-218,-78,-79,-80,-81,-82,-83,-84,-85,177,177,177,177,-340,177,-340,-28,-73,-69,177,177,177,177,177,177,177,177,177,177,177,177,177,177,177,177,177,177,177,177,177,177,177,-287,177,177,-340,177,177,-221,-220,177,177,-237,177,177,177,177,177,-87,-74,177,-233,-234,-236,177,-244,-245,-246,-247,-248,-249,-250,-251,-252,-253,-254,-11,177,-12,177,-287,177,177,177,-340,177,177,177,-222,177,-224,177,-86,-75,177,-232,-235,-340,-201,-340,-68,177,177,177,-340,-28,-287,-223,177,177,177,177,177,177,-11,-287,177,177,-225,-87,-74,-227,-228,177,-340,177,177,177,-226,-229,177,177,-231,-230,]),'STRING_LITERAL':([15,51,52,53,81,90,91,92,94,95,114,115,116,121,126,128,135,136,138,139,141,143,147,148,149,150,153,154,155,156,160,161,182,183,184,195,197,208,221,222,223,224,225,226,227,228,229,230,231,232,234,238,242,247,256,257,258,259,262,263,266,267,268,269,270,271,272,273,274,275,276,277,278,279,280,281,282,283,284,285,286,287,288,294,298,306,309,310,323,332,347,355,356,358,360,361,362,365,366,367,369,370,371,372,374,375,377,378,379,380,381,382,383,384,385,386,387,388,389,392,393,394,397,400,401,402,405,407,448,455,457,467,469,470,471,474,479,480,482,483,484,487,489,498,499,500,503,510,511,512,520,524,525,526,527,528,529,532,533,543,544,545,552,553,554,555,556,559,562,565,570,572,579,580,582,584,585,586,],[-71,-131,-132,-133,-134,-90,-72,139,139,-340,-27,-28,-185,-338,139,139,139,-340,263,-328,139,263,-287,-288,-289,-286,139,139,139,139,-290,-291,139,-340,-28,139,-186,-339,139,-219,-217,-218,-78,-79,-80,-81,-82,-83,-84,-85,139,139,139,139,-340,139,-340,-28,-73,-329,139,-69,139,139,139,139,139,139,139,139,139,139,139,139,139,139,139,139,139,139,139,139,139,139,139,-287,139,139,-340,139,139,-221,-220,139,139,-237,139,139,139,139,139,-87,-74,139,-233,-234,-236,139,-244,-245,-246,-247,-248,-249,-250,-251,-252,-253,-254,-11,139,-12,139,-287,139,139,139,263,-340,139,139,139,-222,139,-224,139,-86,-75,139,-232,-235,-340,-201,-340,-68,139,139,139,-340,-28,-287,-223,139,139,139,139,139,139,-11,-287,139,139,-225,-87,-74,-227,-228,139,-340,139,139,139,-226,-229,139,139,-231,-230,]),'WSTRING_LITERAL':([15,51,52,53,81,90,91,94,95,114,115,116,121,126,128,135,136,141,147,148,149,150,153,154,155,156,160,161,164,178,179,180,181,182,183,184,195,197,208,221,222,223,224,225,226,227,228,229,230,231,232,234,238,242,247,256,257,258,259,262,267,268,269,270,271,272,273,274,275,276,277,278,279,280,281,282,283,284,285,286,287,288,294,298,300,301,302,303,306,309,310,323,332,347,355,356,358,360,361,362,365,366,367,369,370,371,372,374,375,377,378,379,380,381,382,383,384,385,386,387,388,389,392,393,394,397,400,401,402,405,448,455,457,467,469,470,471,474,479,480,482,483,484,487,489,498,499,500,503,510,511,512,520,524,525,526,527,528,529,532,533,543,544,545,552,553,554,555,556,559,562,565,570,572,579,580,582,584,585,586,],[-71,-131,-132,-133,-134,-90,-72,178,-340,-27,-28,-185,-338,178,178,178,-340,178,-287,-288,-289,-286,178,178,178,178,-290,-291,300,-330,-331,-332,-333,178,-340,-28,178,-186,-339,178,-219,-217,-218,-78,-79,-80,-81,-82,-83,-84,-85,178,178,178,178,-340,178,-340,-28,-73,-69,178,178,178,178,178,178,178,178,178,178,178,178,178,178,178,178,178,178,178,178,178,178,178,-334,-335,-336,-337,-287,178,178,-340,178,178,-221,-220,178,178,-237,178,178,178,178,178,-87,-74,178,-233,-234,-236,178,-244,-245,-246,-247,-248,-249,-250,-251,-252,-253,-254,-11,178,-12,178,-287,178,178,178,-340,178,178,178,-222,178,-224,178,-86,-75,178,-232,-235,-340,-201,-340,-68,178,178,178,-340,-28,-287,-223,178,178,178,178,178,178,-11,-287,178,178,-225,-87,-74,-227,-228,178,-340,178,178,178,-226,-229,178,178,-231,-230,]),'U8STRING_LITERAL':([15,51,52,53,81,90,91,94,95,114,115,116,121,126,128,135,136,141,147,148,149,150,153,154,155,156,160,161,164,178,179,180,181,182,183,184,195,197,208,221,222,223,224,225,226,227,228,229,230,231,232,234,238,242,247,256,257,258,259,262,267,268,269,270,271,272,273,274,275,276,277,278,279,280,281,282,283,284,285,286,287,288,294,298,300,301,302,303,306,309,310,323,332,347,355,356,358,360,361,362,365,366,367,369,370,371,372,374,375,377,378,379,380,381,382,383,384,385,386,387,388,389,392,393,394,397,400,401,402,405,448,455,457,467,469,470,471,474,479,480,482,483,484,487,489,498,499,500,503,510,511,512,520,524,525,526,527,528,529,532,533,543,544,545,552,553,554,555,556,559,562,565,570,572,579,580,582,584,585,586,],[-71,-131,-132,-133,-134,-90,-72,179,-340,-27,-28,-185,-338,179,179,179,-340,179,-287,-288,-289,-286,179,179,179,179,-290,-291,301,-330,-331,-332,-333,179,-340,-28,179,-186,-339,179,-219,-217,-218,-78,-79,-80,-81,-82,-83,-84,-85,179,179,179,179,-340,179,-340,-28,-73,-69,179,179,179,179,179,179,179,179,179,179,179,179,179,179,179,179,179,179,179,179,179,179,179,-334,-335,-336,-337,-287,179,179,-340,179,179,-221,-220,179,179,-237,179,179,179,179,179,-87,-74,179,-233,-234,-236,179,-244,-245,-246,-247,-248,-249,-250,-251,-252,-253,-254,-11,179,-12,179,-287,179,179,179,-340,179,179,179,-222,179,-224,179,-86,-75,179,-232,-235,-340,-201,-340,-68,179,179,179,-340,-28,-287,-223,179,179,179,179,179,179,-11,-287,179,179,-225,-87,-74,-227,-228,179,-340,179,179,179,-226,-229,179,179,-231,-230,]),'U16STRING_LITERAL':([15,51,52,53,81,90,91,94,95,114,115,116,121,126,128,135,136,141,147,148,149,150,153,154,155,156,160,161,164,178,179,180,181,182,183,184,195,197,208,221,222,223,224,225,226,227,228,229,230,231,232,234,238,242,247,256,257,258,259,262,267,268,269,270,271,272,273,274,275,276,277,278,279,280,281,282,283,284,285,286,287,288,294,298,300,301,302,303,306,309,310,323,332,347,355,356,358,360,361,362,365,366,367,369,370,371,372,374,375,377,378,379,380,381,382,383,384,385,386,387,388,389,392,393,394,397,400,401,402,405,448,455,457,467,469,470,471,474,479,480,482,483,484,487,489,498,499,500,503,510,511,512,520,524,525,526,527,528,529,532,533,543,544,545,552,553,554,555,556,559,562,565,570,572,579,580,582,584,585,586,],[-71,-131,-132,-133,-134,-90,-72,180,-340,-27,-28,-185,-338,180,180,180,-340,180,-287,-288,-289,-286,180,180,180,180,-290,-291,302,-330,-331,-332,-333,180,-340,-28,180,-186,-339,180,-219,-217,-218,-78,-79,-80,-81,-82,-83,-84,-85,180,180,180,180,-340,180,-340,-28,-73,-69,180,180,180,180,180,180,180,180,180,180,180,180,180,180,180,180,180,180,180,180,180,180,180,-334,-335,-336,-337,-287,180,180,-340,180,180,-221,-220,180,180,-237,180,180,180,180,180,-87,-74,180,-233,-234,-236,180,-244,-245,-246,-247,-248,-249,-250,-251,-252,-253,-254,-11,180,-12,180,-287,180,180,180,-340,180,180,180,-222,180,-224,180,-86,-75,180,-232,-235,-340,-201,-340,-68,180,180,180,-340,-28,-287,-223,180,180,180,180,180,180,-11,-287,180,180,-225,-87,-74,-227,-228,180,-340,180,180,180,-226,-229,180,180,-231,-230,]),'U32STRING_LITERAL':([15,51,52,53,81,90,91,94,95,114,115,116,121,126,128,135,136,141,147,148,149,150,153,154,155,156,160,161,164,178,179,180,181,182,183,184,195,197,208,221,222,223,224,225,226,227,228,229,230,231,232,234,238,242,247,256,257,258,259,262,267,268,269,270,271,272,273,274,275,276,277,278,279,280,281,282,283,284,285,286,287,288,294,298,300,301,302,303,306,309,310,323,332,347,355,356,358,360,361,362,365,366,367,369,370,371,372,374,375,377,378,379,380,381,382,383,384,385,386,387,388,389,392,393,394,397,400,401,402,405,448,455,457,467,469,470,471,474,479,480,482,483,484,487,489,498,499,500,503,510,511,512,520,524,525,526,527,528,529,532,533,543,544,545,552,553,554,555,556,559,562,565,570,572,579,580,582,584,585,586,],[-71,-131,-132,-133,-134,-90,-72,181,-340,-27,-28,-185,-338,181,181,181,-340,181,-287,-288,-289,-286,181,181,181,181,-290,-291,303,-330,-331,-332,-333,181,-340,-28,181,-186,-339,181,-219,-217,-218,-78,-79,-80,-81,-82,-83,-84,-85,181,181,181,181,-340,181,-340,-28,-73,-69,181,181,181,181,181,181,181,181,181,181,181,181,181,181,181,181,181,181,181,181,181,181,181,-334,-335,-336,-337,-287,181,181,-340,181,181,-221,-220,181,181,-237,181,181,181,181,181,-87,-74,181,-233,-234,-236,181,-244,-245,-246,-247,-248,-249,-250,-251,-252,-253,-254,-11,181,-12,181,-287,181,181,181,-340,181,181,181,-222,181,-224,181,-86,-75,181,-232,-235,-340,-201,-340,-68,181,181,181,-340,-28,-287,-223,181,181,181,181,181,181,-11,-287,181,181,-225,-87,-74,-227,-228,181,-340,181,181,181,-226,-229,181,181,-231,-230,]),'ELSE':([15,91,208,225,226,227,228,229,230,232,262,267,355,361,370,371,374,375,377,469,471,479,480,483,484,499,524,552,553,554,555,556,579,580,585,586,],[-71,-72,-339,-78,-79,-80,-81,-82,-83,-85,-73,-69,-221,-237,-87,-84,-233,-234,-236,-222,-224,-86,-84,-232,-235,-68,-223,-225,570,-84,-227,-228,-226,-229,-231,-230,]),'PPPRAGMASTR':([15,],[91,]),'EQUALS':([19,28,73,86,87,88,89,97,111,130,132,139,140,143,151,152,158,159,162,163,164,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,202,208,233,250,252,263,291,292,293,295,296,297,300,301,302,303,311,312,395,396,403,404,406,429,431,432,433,434,439,440,490,492,493,494,497,501,502,505,506,508,509,534,535,536,561,563,574,],[-52,-29,-181,135,-182,-54,-37,-53,195,-181,-55,-328,-30,-306,-277,-279,-292,-315,-304,-305,-307,-316,-317,-318,-319,-320,-321,-322,-323,-324,-325,-326,-327,-330,-331,-332,-333,332,-339,-315,379,-38,-329,-300,-301,-280,-281,-282,-283,-334,-335,-336,-337,-35,-36,489,-202,-43,-44,-308,-295,-296,-297,-298,-299,-31,-34,-203,-205,-39,-42,-278,-293,-294,-284,-285,-32,-33,-204,-40,-41,-302,-309,-303,]),'COMMA':([19,24,25,28,29,30,31,32,33,34,35,38,39,40,41,42,43,44,45,46,47,48,49,51,52,53,54,55,56,57,58,59,60,73,74,75,76,77,78,81,84,85,86,87,88,89,97,104,106,108,110,111,113,114,115,116,118,119,122,123,130,132,139,140,142,143,144,145,146,151,152,158,159,162,163,164,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,187,189,190,191,192,196,197,200,201,202,206,208,212,214,216,233,239,248,249,250,252,253,254,255,263,265,291,292,293,295,296,297,300,301,302,303,311,312,315,316,317,318,319,320,321,324,325,326,327,328,329,330,331,334,336,337,340,341,342,344,345,346,348,349,350,352,353,354,376,391,403,404,406,408,409,410,411,412,413,414,415,416,417,418,419,420,421,422,423,424,425,426,427,428,429,430,431,432,433,434,438,439,440,444,445,446,447,459,460,461,462,463,464,468,472,473,475,476,477,485,486,488,493,494,497,501,502,505,506,508,509,515,516,518,522,523,531,535,536,537,538,539,546,547,548,549,550,551,557,560,561,563,566,567,574,576,577,578,],[-52,-128,-102,-29,-107,-340,-125,-126,-127,-129,-241,-113,-114,-115,-116,-117,-118,-119,-120,-121,-122,-123,-124,-131,-132,-133,-105,-106,-108,-109,-110,-111,-112,-181,-98,-99,-100,-101,-104,-134,134,-135,-137,-182,-54,-37,-53,-103,-129,194,-139,-141,-183,-27,-28,-185,-169,-170,-149,-150,-181,-55,-328,-30,266,-306,-255,-256,-258,-277,-279,-292,-315,-304,-305,-307,-316,-317,-318,-319,-320,-321,-322,-323,-324,-325,-326,-327,-330,-331,-332,-333,313,314,-189,-194,-340,-184,-186,331,-174,-179,-152,-339,-145,-147,-340,-315,365,-238,-242,-277,-38,-136,-138,-196,-329,365,-300,-301,-280,-281,-282,-283,-334,-335,-336,-337,-35,-36,-191,-192,-193,-207,-56,-1,-2,-45,-209,-140,-142,331,331,-171,-175,-154,-156,-151,-143,-144,-148,466,-164,-166,-146,-130,-206,-207,-177,-178,365,487,-43,-44,-308,365,-259,-260,-261,-262,-263,-264,-265,-266,-267,-268,-269,-270,-271,-272,-273,-274,-275,-276,365,503,-295,-313,-296,-297,-298,-299,507,-31,-34,-190,-195,-57,-208,-172,-173,-176,-180,-153,-155,-168,365,-240,-239,365,365,-243,-197,-199,-39,-42,-278,-293,-294,-284,-285,-32,-33,-210,-216,-214,-165,-167,-198,-40,-41,562,-257,-314,-50,-51,-212,-211,-213,-215,365,-200,-302,-309,-46,-49,-303,365,-47,-48,]),'RPAREN':([19,24,25,28,29,30,31,32,33,34,35,38,39,40,41,42,43,44,45,46,47,48,49,51,52,53,54,55,56,57,58,59,60,74,75,76,77,78,81,88,89,93,96,97,104,106,113,114,115,116,118,119,122,123,132,133,137,138,139,140,142,143,144,145,146,151,152,158,159,162,163,164,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,185,186,187,188,189,190,191,192,196,197,206,208,212,214,215,216,217,218,239,248,249,250,252,260,261,263,264,265,288,291,292,293,295,296,297,300,301,302,303,311,312,315,316,317,318,319,320,321,322,324,325,330,334,336,337,340,341,342,348,349,350,351,352,353,354,355,357,363,364,403,404,406,407,409,410,411,412,413,414,415,416,417,418,419,420,421,422,423,424,425,426,428,429,430,431,432,433,434,435,436,437,439,440,443,444,445,446,447,449,450,451,452,453,454,458,459,460,463,464,472,473,475,476,477,485,493,494,497,501,502,505,506,508,509,513,514,515,516,518,521,535,536,538,539,540,541,546,547,548,549,550,551,557,559,561,563,566,567,572,573,574,575,577,578,581,583,],[-52,-128,-102,-29,-107,-340,-125,-126,-127,-129,-241,-113,-114,-115,-116,-117,-118,-119,-120,-121,-122,-123,-124,-131,-132,-133,-105,-106,-108,-109,-110,-111,-112,-98,-99,-100,-101,-104,-134,-54,-37,140,-340,-53,-103,-129,-183,-27,-28,-185,-169,-170,-149,-150,-55,252,-340,262,-328,-30,267,-306,-255,-256,-258,-277,-279,-292,-315,-304,-305,-307,-316,-317,-318,-319,-320,-321,-322,-323,-324,-325,-326,-327,-330,-331,-332,-333,311,312,-187,-17,-18,-189,-194,-340,-184,-186,-152,-339,-145,-147,349,-340,353,354,-14,-238,-242,-277,-38,403,404,-329,405,406,429,-300,-301,-280,-281,-282,-283,-334,-335,-336,-337,-35,-36,-191,-192,-193,-207,-56,-1,-2,-340,-45,-209,-171,-154,-156,-151,-143,-144,-148,-146,-130,-206,-340,-207,-177,-178,-221,-13,473,474,-43,-44,-308,499,-259,-260,-261,-262,-263,-264,-265,-266,-267,-268,-269,-270,-271,-272,-273,-274,-275,-276,502,-295,-313,-296,-297,-298,-299,504,505,506,-31,-34,-188,-190,-195,-57,-208,-340,515,516,-207,-23,-24,-340,-172,-173,-153,-155,525,-240,-239,526,527,-243,-39,-42,-278,-293,-294,-284,-285,-32,-33,546,547,-210,-216,-214,551,-40,-41,-257,-314,563,-310,-50,-51,-212,-211,-213,-215,571,-340,-302,-309,-46,-49,-340,582,-303,-311,-47,-48,584,-312,]),'COLON':([19,24,28,31,32,33,35,38,39,40,41,42,43,44,45,46,47,48,49,51,52,53,81,87,88,89,97,106,118,119,122,123,130,132,139,140,143,144,145,146,151,152,158,159,162,163,164,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,206,208,209,212,214,233,235,248,249,250,252,263,291,292,293,295,296,297,300,301,302,303,311,312,330,334,336,337,340,341,342,346,348,349,353,354,359,403,404,406,408,409,410,411,412,413,414,415,416,417,418,419,420,421,422,423,424,425,426,429,431,432,433,434,439,440,459,460,463,464,466,473,475,485,493,494,497,501,502,505,506,508,509,535,536,538,561,563,574,],[-52,-128,-29,-125,-126,-127,-241,-113,-114,-115,-116,-117,-118,-119,-120,-121,-122,-123,-124,-131,-132,-133,-134,-182,-54,-37,-53,-129,-169,-170,-149,-150,-181,-55,-328,-30,-306,-255,-256,-258,-277,-279,-292,-315,-304,-305,-307,-316,-317,-318,-319,-320,-321,-322,-323,-324,-325,-326,-327,-330,-331,-332,-333,-152,-339,347,-145,-147,358,360,-238,-242,-277,-38,-329,-300,-301,-280,-281,-282,-283,-334,-335,-336,-337,-35,-36,-171,-154,-156,-151,-143,-144,-148,467,-146,-130,-177,-178,470,-43,-44,-308,500,-259,-260,-261,-262,-263,-264,-265,-266,-267,-268,-269,-270,-271,-272,-273,-274,-275,-276,-295,-296,-297,-298,-299,-31,-34,-172,-173,-153,-155,347,-240,-239,-243,-39,-42,-278,-293,-294,-284,-285,-32,-33,-40,-41,-257,-302,-309,-303,]),'LBRACKET':([19,24,25,28,29,30,31,32,33,34,35,38,39,40,41,42,43,44,45,46,47,48,49,51,52,53,54,55,56,57,58,59,60,74,75,76,77,78,81,88,89,97,104,106,113,114,115,116,118,119,121,122,123,132,139,140,143,152,158,159,162,163,164,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,192,196,197,206,208,212,214,216,233,252,256,263,291,292,300,301,302,303,311,312,318,319,322,324,325,330,334,336,337,340,341,342,348,349,351,352,353,354,395,396,403,404,406,429,431,432,433,434,439,440,446,447,452,459,460,463,464,487,490,492,493,494,498,501,502,508,509,515,516,518,534,535,536,540,541,546,547,548,549,550,551,561,562,563,566,567,574,575,577,578,583,],[95,-128,-102,-29,-107,-340,-125,-126,-127,-129,-241,-113,-114,-115,-116,-117,-118,-119,-120,-121,-122,-123,-124,-131,-132,-133,-105,-106,-108,-109,-110,-111,-112,-98,-99,-100,-101,-104,-134,136,-37,95,-103,-129,-183,-27,-28,-185,-169,-170,-338,-149,-150,136,-328,-30,-306,287,-292,-315,-304,-305,-307,-316,-317,-318,-319,-320,-321,-322,-323,-324,-325,-326,-327,-330,-331,-332,-333,323,-184,-186,-152,-339,-145,-147,323,-315,-38,397,-329,-300,-301,-334,-335,-336,-337,-35,-36,323,448,323,-45,457,-171,-154,-156,-151,-143,-144,-148,-146,-130,323,323,-177,-178,397,-202,-43,-44,-308,-295,-296,-297,-298,-299,-31,-34,448,457,323,-172,-173,-153,-155,397,-203,-205,-39,-42,397,-293,-294,-32,-33,-210,-216,-214,-204,-40,-41,565,-310,-50,-51,-212,-211,-213,-215,-302,397,-309,-46,-49,-303,-311,-47,-48,-312,]),'RBRACKET':([51,52,53,81,95,114,115,116,136,139,143,144,145,146,151,152,158,159,162,163,164,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,184,197,208,248,249,250,257,259,263,291,292,293,295,296,297,300,301,302,303,305,306,307,308,323,399,400,406,409,410,411,412,413,414,415,416,417,418,419,420,421,422,423,424,425,426,427,429,431,432,433,434,441,442,448,455,456,457,473,475,485,491,495,496,497,501,502,505,506,510,512,517,519,520,538,542,543,561,563,568,569,574,576,],[-131,-132,-133,-134,-340,-27,-28,-185,-340,-328,-306,-255,-256,-258,-277,-279,-292,-315,-304,-305,-307,-316,-317,-318,-319,-320,-321,-322,-323,-324,-325,-326,-327,-330,-331,-332,-333,-340,-28,-186,-339,-238,-242,-277,-340,-28,-329,-300,-301,-280,-281,-282,-283,-334,-335,-336,-337,439,440,-3,-4,-340,493,494,-308,-259,-260,-261,-262,-263,-264,-265,-266,-267,-268,-269,-270,-271,-272,-273,-274,-275,-276,501,-295,-296,-297,-298,-299,508,509,-340,-340,518,-340,-240,-239,-243,534,535,536,-278,-293,-294,-284,-285,-340,-28,548,549,550,-257,566,567,-302,-309,577,578,-303,583,]),'PERIOD':([121,139,143,152,158,159,162,163,164,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,208,233,256,263,291,292,300,301,302,303,395,396,406,429,431,432,433,434,487,490,492,498,501,502,534,540,541,561,562,563,574,575,583,],[-338,-328,-306,289,-292,-315,-304,-305,-307,-316,-317,-318,-319,-320,-321,-322,-323,-324,-325,-326,-327,-330,-331,-332,-333,-339,-315,398,-329,-300,-301,-334,-335,-336,-337,398,-202,-308,-295,-296,-297,-298,-299,398,-203,-205,398,-293,-294,-204,564,-310,-302,398,-309,-303,-311,-312,]),'ARROW':([139,143,152,158,159,162,163,164,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,208,233,263,291,292,300,301,302,303,406,429,431,432,433,434,501,502,561,563,574,],[-328,-306,290,-292,-315,-304,-305,-307,-316,-317,-318,-319,-320,-321,-322,-323,-324,-325,-326,-327,-330,-331,-332,-333,-339,-315,-329,-300,-301,-334,-335,-336,-337,-308,-295,-296,-297,-298,-299,-293,-294,-302,-309,-303,]),'CONDOP':([139,143,145,146,151,152,158,159,162,163,164,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,208,233,250,263,291,292,293,295,296,297,300,301,302,303,406,409,410,411,412,413,414,415,416,417,418,419,420,421,422,423,424,425,426,429,431,432,433,434,497,501,502,505,506,561,563,574,],[-328,-306,268,-258,-277,-279,-292,-315,-304,-305,-307,-316,-317,-318,-319,-320,-321,-322,-323,-324,-325,-326,-327,-330,-331,-332,-333,-339,-315,-277,-329,-300,-301,-280,-281,-282,-283,-334,-335,-336,-337,-308,-259,-260,-261,-262,-263,-264,-265,-266,-267,-268,-269,-270,-271,-272,-273,-274,-275,-276,-295,-296,-297,-298,-299,-278,-293,-294,-284,-285,-302,-309,-303,]),'DIVIDE':([139,143,145,146,151,152,158,159,162,163,164,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,208,233,250,263,291,292,293,295,296,297,300,301,302,303,406,409,410,411,412,413,414,415,416,417,418,419,420,421,422,423,424,425,426,429,431,432,433,434,497,501,502,505,506,561,563,574,],[-328,-306,270,-258,-277,-279,-292,-315,-304,-305,-307,-316,-317,-318,-319,-320,-321,-322,-323,-324,-325,-326,-327,-330,-331,-332,-333,-339,-315,-277,-329,-300,-301,-280,-281,-282,-283,-334,-335,-336,-337,-308,-259,-260,-261,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,-295,-296,-297,-298,-299,-278,-293,-294,-284,-285,-302,-309,-303,]),'MOD':([139,143,145,146,151,152,158,159,162,163,164,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,208,233,250,263,291,292,293,295,296,297,300,301,302,303,406,409,410,411,412,413,414,415,416,417,418,419,420,421,422,423,424,425,426,429,431,432,433,434,497,501,502,505,506,561,563,574,],[-328,-306,271,-258,-277,-279,-292,-315,-304,-305,-307,-316,-317,-318,-319,-320,-321,-322,-323,-324,-325,-326,-327,-330,-331,-332,-333,-339,-315,-277,-329,-300,-301,-280,-281,-282,-283,-334,-335,-336,-337,-308,-259,-260,-261,271,271,271,271,271,271,271,271,271,271,271,271,271,271,271,-295,-296,-297,-298,-299,-278,-293,-294,-284,-285,-302,-309,-303,]),'RSHIFT':([139,143,145,146,151,152,158,159,162,163,164,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,208,233,250,263,291,292,293,295,296,297,300,301,302,303,406,409,410,411,412,413,414,415,416,417,418,419,420,421,422,423,424,425,426,429,431,432,433,434,497,501,502,505,506,561,563,574,],[-328,-306,274,-258,-277,-279,-292,-315,-304,-305,-307,-316,-317,-318,-319,-320,-321,-322,-323,-324,-325,-326,-327,-330,-331,-332,-333,-339,-315,-277,-329,-300,-301,-280,-281,-282,-283,-334,-335,-336,-337,-308,-259,-260,-261,-262,-263,-264,-265,274,274,274,274,274,274,274,274,274,274,274,-295,-296,-297,-298,-299,-278,-293,-294,-284,-285,-302,-309,-303,]),'LSHIFT':([139,143,145,146,151,152,158,159,162,163,164,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,208,233,250,263,291,292,293,295,296,297,300,301,302,303,406,409,410,411,412,413,414,415,416,417,418,419,420,421,422,423,424,425,426,429,431,432,433,434,497,501,502,505,506,561,563,574,],[-328,-306,275,-258,-277,-279,-292,-315,-304,-305,-307,-316,-317,-318,-319,-320,-321,-322,-323,-324,-325,-326,-327,-330,-331,-332,-333,-339,-315,-277,-329,-300,-301,-280,-281,-282,-283,-334,-335,-336,-337,-308,-259,-260,-261,-262,-263,-264,-265,275,275,275,275,275,275,275,275,275,275,275,-295,-296,-297,-298,-299,-278,-293,-294,-284,-285,-302,-309,-303,]),'LT':([139,143,145,146,151,152,158,159,162,163,164,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,208,233,250,263,291,292,293,295,296,297,300,301,302,303,406,409,410,411,412,413,414,415,416,417,418,419,420,421,422,423,424,425,426,429,431,432,433,434,497,501,502,505,506,561,563,574,],[-328,-306,276,-258,-277,-279,-292,-315,-304,-305,-307,-316,-317,-318,-319,-320,-321,-322,-323,-324,-325,-326,-327,-330,-331,-332,-333,-339,-315,-277,-329,-300,-301,-280,-281,-282,-283,-334,-335,-336,-337,-308,-259,-260,-261,-262,-263,-264,-265,-266,-267,-268,-269,276,276,276,276,276,276,276,-295,-296,-297,-298,-299,-278,-293,-294,-284,-285,-302,-309,-303,]),'LE':([139,143,145,146,151,152,158,159,162,163,164,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,208,233,250,263,291,292,293,295,296,297,300,301,302,303,406,409,410,411,412,413,414,415,416,417,418,419,420,421,422,423,424,425,426,429,431,432,433,434,497,501,502,505,506,561,563,574,],[-328,-306,277,-258,-277,-279,-292,-315,-304,-305,-307,-316,-317,-318,-319,-320,-321,-322,-323,-324,-325,-326,-327,-330,-331,-332,-333,-339,-315,-277,-329,-300,-301,-280,-281,-282,-283,-334,-335,-336,-337,-308,-259,-260,-261,-262,-263,-264,-265,-266,-267,-268,-269,277,277,277,277,277,277,277,-295,-296,-297,-298,-299,-278,-293,-294,-284,-285,-302,-309,-303,]),'GE':([139,143,145,146,151,152,158,159,162,163,164,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,208,233,250,263,291,292,293,295,296,297,300,301,302,303,406,409,410,411,412,413,414,415,416,417,418,419,420,421,422,423,424,425,426,429,431,432,433,434,497,501,502,505,506,561,563,574,],[-328,-306,278,-258,-277,-279,-292,-315,-304,-305,-307,-316,-317,-318,-319,-320,-321,-322,-323,-324,-325,-326,-327,-330,-331,-332,-333,-339,-315,-277,-329,-300,-301,-280,-281,-282,-283,-334,-335,-336,-337,-308,-259,-260,-261,-262,-263,-264,-265,-266,-267,-268,-269,278,278,278,278,278,278,278,-295,-296,-297,-298,-299,-278,-293,-294,-284,-285,-302,-309,-303,]),'GT':([139,143,145,146,151,152,158,159,162,163,164,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,208,233,250,263,291,292,293,295,296,297,300,301,302,303,406,409,410,411,412,413,414,415,416,417,418,419,420,421,422,423,424,425,426,429,431,432,433,434,497,501,502,505,506,561,563,574,],[-328,-306,279,-258,-277,-279,-292,-315,-304,-305,-307,-316,-317,-318,-319,-320,-321,-322,-323,-324,-325,-326,-327,-330,-331,-332,-333,-339,-315,-277,-329,-300,-301,-280,-281,-282,-283,-334,-335,-336,-337,-308,-259,-260,-261,-262,-263,-264,-265,-266,-267,-268,-269,279,279,279,279,279,279,279,-295,-296,-297,-298,-299,-278,-293,-294,-284,-285,-302,-309,-303,]),'EQ':([139,143,145,146,151,152,158,159,162,163,164,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,208,233,250,263,291,292,293,295,296,297,300,301,302,303,406,409,410,411,412,413,414,415,416,417,418,419,420,421,422,423,424,425,426,429,431,432,433,434,497,501,502,505,506,561,563,574,],[-328,-306,280,-258,-277,-279,-292,-315,-304,-305,-307,-316,-317,-318,-319,-320,-321,-322,-323,-324,-325,-326,-327,-330,-331,-332,-333,-339,-315,-277,-329,-300,-301,-280,-281,-282,-283,-334,-335,-336,-337,-308,-259,-260,-261,-262,-263,-264,-265,-266,-267,-268,-269,-270,-271,280,280,280,280,280,-295,-296,-297,-298,-299,-278,-293,-294,-284,-285,-302,-309,-303,]),'NE':([139,143,145,146,151,152,158,159,162,163,164,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,208,233,250,263,291,292,293,295,296,297,300,301,302,303,406,409,410,411,412,413,414,415,416,417,418,419,420,421,422,423,424,425,426,429,431,432,433,434,497,501,502,505,506,561,563,574,],[-328,-306,281,-258,-277,-279,-292,-315,-304,-305,-307,-316,-317,-318,-319,-320,-321,-322,-323,-324,-325,-326,-327,-330,-331,-332,-333,-339,-315,-277,-329,-300,-301,-280,-281,-282,-283,-334,-335,-336,-337,-308,-259,-260,-261,-262,-263,-264,-265,-266,-267,-268,-269,-270,-271,281,281,281,281,281,-295,-296,-297,-298,-299,-278,-293,-294,-284,-285,-302,-309,-303,]),'OR':([139,143,145,146,151,152,158,159,162,163,164,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,208,233,250,263,291,292,293,295,296,297,300,301,302,303,406,409,410,411,412,413,414,415,416,417,418,419,420,421,422,423,424,425,426,429,431,432,433,434,497,501,502,505,506,561,563,574,],[-328,-306,283,-258,-277,-279,-292,-315,-304,-305,-307,-316,-317,-318,-319,-320,-321,-322,-323,-324,-325,-326,-327,-330,-331,-332,-333,-339,-315,-277,-329,-300,-301,-280,-281,-282,-283,-334,-335,-336,-337,-308,-259,-260,-261,-262,-263,-264,-265,-266,-267,-268,-269,-270,-271,-272,-273,-274,283,283,-295,-296,-297,-298,-299,-278,-293,-294,-284,-285,-302,-309,-303,]),'XOR':([139,143,145,146,151,152,158,159,162,163,164,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,208,233,250,263,291,292,293,295,296,297,300,301,302,303,406,409,410,411,412,413,414,415,416,417,418,419,420,421,422,423,424,425,426,429,431,432,433,434,497,501,502,505,506,561,563,574,],[-328,-306,284,-258,-277,-279,-292,-315,-304,-305,-307,-316,-317,-318,-319,-320,-321,-322,-323,-324,-325,-326,-327,-330,-331,-332,-333,-339,-315,-277,-329,-300,-301,-280,-281,-282,-283,-334,-335,-336,-337,-308,-259,-260,-261,-262,-263,-264,-265,-266,-267,-268,-269,-270,-271,-272,284,-274,284,284,-295,-296,-297,-298,-299,-278,-293,-294,-284,-285,-302,-309,-303,]),'LAND':([139,143,145,146,151,152,158,159,162,163,164,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,208,233,250,263,291,292,293,295,296,297,300,301,302,303,406,409,410,411,412,413,414,415,416,417,418,419,420,421,422,423,424,425,426,429,431,432,433,434,497,501,502,505,506,561,563,574,],[-328,-306,285,-258,-277,-279,-292,-315,-304,-305,-307,-316,-317,-318,-319,-320,-321,-322,-323,-324,-325,-326,-327,-330,-331,-332,-333,-339,-315,-277,-329,-300,-301,-280,-281,-282,-283,-334,-335,-336,-337,-308,-259,-260,-261,-262,-263,-264,-265,-266,-267,-268,-269,-270,-271,-272,-273,-274,-275,285,-295,-296,-297,-298,-299,-278,-293,-294,-284,-285,-302,-309,-303,]),'LOR':([139,143,145,146,151,152,158,159,162,163,164,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,208,233,250,263,291,292,293,295,296,297,300,301,302,303,406,409,410,411,412,413,414,415,416,417,418,419,420,421,422,423,424,425,426,429,431,432,433,434,497,501,502,505,506,561,563,574,],[-328,-306,286,-258,-277,-279,-292,-315,-304,-305,-307,-316,-317,-318,-319,-320,-321,-322,-323,-324,-325,-326,-327,-330,-331,-332,-333,-339,-315,-277,-329,-300,-301,-280,-281,-282,-283,-334,-335,-336,-337,-308,-259,-260,-261,-262,-263,-264,-265,-266,-267,-268,-269,-270,-271,-272,-273,-274,-275,-276,-295,-296,-297,-298,-299,-278,-293,-294,-284,-285,-302,-309,-303,]),'XOREQUAL':([139,143,151,152,158,159,162,163,164,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,208,233,250,263,291,292,293,295,296,297,300,301,302,303,406,429,431,432,433,434,497,501,502,505,506,561,563,574,],[-328,-306,-277,-279,-292,-315,-304,-305,-307,-316,-317,-318,-319,-320,-321,-322,-323,-324,-325,-326,-327,-330,-331,-332,-333,-339,-315,380,-329,-300,-301,-280,-281,-282,-283,-334,-335,-336,-337,-308,-295,-296,-297,-298,-299,-278,-293,-294,-284,-285,-302,-309,-303,]),'TIMESEQUAL':([139,143,151,152,158,159,162,163,164,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,208,233,250,263,291,292,293,295,296,297,300,301,302,303,406,429,431,432,433,434,497,501,502,505,506,561,563,574,],[-328,-306,-277,-279,-292,-315,-304,-305,-307,-316,-317,-318,-319,-320,-321,-322,-323,-324,-325,-326,-327,-330,-331,-332,-333,-339,-315,381,-329,-300,-301,-280,-281,-282,-283,-334,-335,-336,-337,-308,-295,-296,-297,-298,-299,-278,-293,-294,-284,-285,-302,-309,-303,]),'DIVEQUAL':([139,143,151,152,158,159,162,163,164,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,208,233,250,263,291,292,293,295,296,297,300,301,302,303,406,429,431,432,433,434,497,501,502,505,506,561,563,574,],[-328,-306,-277,-279,-292,-315,-304,-305,-307,-316,-317,-318,-319,-320,-321,-322,-323,-324,-325,-326,-327,-330,-331,-332,-333,-339,-315,382,-329,-300,-301,-280,-281,-282,-283,-334,-335,-336,-337,-308,-295,-296,-297,-298,-299,-278,-293,-294,-284,-285,-302,-309,-303,]),'MODEQUAL':([139,143,151,152,158,159,162,163,164,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,208,233,250,263,291,292,293,295,296,297,300,301,302,303,406,429,431,432,433,434,497,501,502,505,506,561,563,574,],[-328,-306,-277,-279,-292,-315,-304,-305,-307,-316,-317,-318,-319,-320,-321,-322,-323,-324,-325,-326,-327,-330,-331,-332,-333,-339,-315,383,-329,-300,-301,-280,-281,-282,-283,-334,-335,-336,-337,-308,-295,-296,-297,-298,-299,-278,-293,-294,-284,-285,-302,-309,-303,]),'PLUSEQUAL':([139,143,151,152,158,159,162,163,164,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,208,233,250,263,291,292,293,295,296,297,300,301,302,303,406,429,431,432,433,434,497,501,502,505,506,561,563,574,],[-328,-306,-277,-279,-292,-315,-304,-305,-307,-316,-317,-318,-319,-320,-321,-322,-323,-324,-325,-326,-327,-330,-331,-332,-333,-339,-315,384,-329,-300,-301,-280,-281,-282,-283,-334,-335,-336,-337,-308,-295,-296,-297,-298,-299,-278,-293,-294,-284,-285,-302,-309,-303,]),'MINUSEQUAL':([139,143,151,152,158,159,162,163,164,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,208,233,250,263,291,292,293,295,296,297,300,301,302,303,406,429,431,432,433,434,497,501,502,505,506,561,563,574,],[-328,-306,-277,-279,-292,-315,-304,-305,-307,-316,-317,-318,-319,-320,-321,-322,-323,-324,-325,-326,-327,-330,-331,-332,-333,-339,-315,385,-329,-300,-301,-280,-281,-282,-283,-334,-335,-336,-337,-308,-295,-296,-297,-298,-299,-278,-293,-294,-284,-285,-302,-309,-303,]),'LSHIFTEQUAL':([139,143,151,152,158,159,162,163,164,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,208,233,250,263,291,292,293,295,296,297,300,301,302,303,406,429,431,432,433,434,497,501,502,505,506,561,563,574,],[-328,-306,-277,-279,-292,-315,-304,-305,-307,-316,-317,-318,-319,-320,-321,-322,-323,-324,-325,-326,-327,-330,-331,-332,-333,-339,-315,386,-329,-300,-301,-280,-281,-282,-283,-334,-335,-336,-337,-308,-295,-296,-297,-298,-299,-278,-293,-294,-284,-285,-302,-309,-303,]),'RSHIFTEQUAL':([139,143,151,152,158,159,162,163,164,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,208,233,250,263,291,292,293,295,296,297,300,301,302,303,406,429,431,432,433,434,497,501,502,505,506,561,563,574,],[-328,-306,-277,-279,-292,-315,-304,-305,-307,-316,-317,-318,-319,-320,-321,-322,-323,-324,-325,-326,-327,-330,-331,-332,-333,-339,-315,387,-329,-300,-301,-280,-281,-282,-283,-334,-335,-336,-337,-308,-295,-296,-297,-298,-299,-278,-293,-294,-284,-285,-302,-309,-303,]),'ANDEQUAL':([139,143,151,152,158,159,162,163,164,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,208,233,250,263,291,292,293,295,296,297,300,301,302,303,406,429,431,432,433,434,497,501,502,505,506,561,563,574,],[-328,-306,-277,-279,-292,-315,-304,-305,-307,-316,-317,-318,-319,-320,-321,-322,-323,-324,-325,-326,-327,-330,-331,-332,-333,-339,-315,388,-329,-300,-301,-280,-281,-282,-283,-334,-335,-336,-337,-308,-295,-296,-297,-298,-299,-278,-293,-294,-284,-285,-302,-309,-303,]),'OREQUAL':([139,143,151,152,158,159,162,163,164,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,208,233,250,263,291,292,293,295,296,297,300,301,302,303,406,429,431,432,433,434,497,501,502,505,506,561,563,574,],[-328,-306,-277,-279,-292,-315,-304,-305,-307,-316,-317,-318,-319,-320,-321,-322,-323,-324,-325,-326,-327,-330,-331,-332,-333,-339,-315,389,-329,-300,-301,-280,-281,-282,-283,-334,-335,-336,-337,-308,-295,-296,-297,-298,-299,-278,-293,-294,-284,-285,-302,-309,-303,]),'ELLIPSIS':([313,],[443,]),} + +_lr_action = {} +for _k, _v in _lr_action_items.items(): + for _x,_y in zip(_v[0],_v[1]): + if not _x in _lr_action: _lr_action[_x] = {} + _lr_action[_x][_k] = _y +del _lr_action_items + +_lr_goto_items = {'translation_unit_or_empty':([0,],[1,]),'translation_unit':([0,],[2,]),'empty':([0,11,12,21,22,23,26,27,30,34,69,70,71,73,95,96,101,128,136,137,182,183,192,209,216,221,242,256,257,258,322,323,351,358,360,369,372,448,449,455,457,458,470,482,487,498,510,511,525,526,527,529,559,562,570,572,582,584,],[3,66,83,99,99,99,107,99,114,99,83,107,99,66,114,188,99,220,114,188,307,114,320,343,320,357,357,392,307,114,453,114,453,357,357,357,357,114,188,307,307,453,357,357,533,533,307,114,357,357,357,357,357,533,357,357,357,357,]),'external_declaration':([0,2,],[4,64,]),'function_definition':([0,2,],[5,5,]),'declaration':([0,2,11,67,73,128,221,372,],[6,6,68,129,68,223,223,482,]),'pp_directive':([0,2,],[7,7,]),'pppragma_directive':([0,2,124,128,203,204,205,221,242,333,335,358,360,369,470,525,526,527,570,582,584,],[8,8,211,231,211,211,211,231,371,211,211,371,371,480,371,554,371,371,371,371,371,]),'static_assert':([0,2,128,221,242,358,360,369,470,525,526,527,570,582,584,],[10,10,232,232,232,232,232,232,232,232,232,232,232,232,232,]),'id_declarator':([0,2,12,17,26,69,70,82,134,192,194,209,322,466,],[11,11,73,93,111,130,111,93,130,315,130,130,93,130,]),'declaration_specifiers':([0,2,11,67,73,96,128,137,221,313,322,351,372,449,458,],[12,12,69,69,69,192,69,192,69,192,192,192,69,192,192,]),'decl_body':([0,2,11,67,73,128,221,372,],[13,13,13,13,13,13,13,13,]),'direct_id_declarator':([0,2,12,17,20,26,69,70,80,82,134,192,194,209,318,322,452,466,],[19,19,19,19,97,19,19,19,97,19,19,19,19,19,97,19,97,19,]),'pointer':([0,2,12,17,26,69,70,82,113,134,192,194,209,216,322,351,466,],[20,20,80,20,20,80,20,80,196,80,318,80,80,352,452,352,80,]),'type_qualifier':([0,2,11,12,21,22,23,27,30,34,67,69,71,73,95,96,101,115,124,125,126,128,136,137,141,183,184,192,203,204,205,209,213,216,221,238,258,259,294,298,299,304,313,322,323,333,335,351,372,448,449,458,511,512,],[21,21,21,74,21,21,21,21,116,21,21,74,21,21,116,21,21,197,116,116,116,21,116,21,116,116,197,74,116,116,116,341,197,341,21,116,116,197,116,116,116,116,21,21,116,116,116,21,21,116,21,21,116,197,]),'storage_class_specifier':([0,2,11,12,21,22,23,27,34,67,69,71,73,96,101,128,137,192,221,313,322,351,372,449,458,],[22,22,22,75,22,22,22,22,22,22,75,22,22,22,22,22,22,75,22,22,22,22,22,22,22,]),'function_specifier':([0,2,11,12,21,22,23,27,34,67,69,71,73,96,101,128,137,192,221,313,322,351,372,449,458,],[23,23,23,76,23,23,23,23,23,23,76,23,23,23,23,23,23,76,23,23,23,23,23,23,23,]),'type_specifier_no_typeid':([0,2,11,12,26,67,69,70,73,96,124,125,126,128,137,141,192,193,203,204,205,209,213,216,221,238,294,298,299,304,313,322,333,335,351,372,449,458,],[24,24,24,77,24,24,77,24,24,24,24,24,24,24,24,24,77,24,24,24,24,340,24,340,24,24,24,24,24,24,24,24,24,24,24,24,24,24,]),'type_specifier':([0,2,11,26,67,70,73,96,124,125,126,128,137,141,193,203,204,205,213,221,238,294,298,299,304,313,322,333,335,351,372,449,458,],[25,25,25,104,25,104,25,25,212,212,212,25,25,212,104,212,212,212,348,25,212,212,212,212,212,25,25,212,212,25,25,25,25,]),'declaration_specifiers_no_type':([0,2,11,21,22,23,27,34,67,71,73,96,101,128,137,221,313,322,351,372,449,458,],[26,26,70,100,100,100,100,100,70,100,70,193,100,70,193,70,193,193,193,70,193,193,]),'alignment_specifier':([0,2,11,12,21,22,23,27,34,67,69,71,73,96,101,124,125,126,128,137,141,192,203,204,205,209,216,221,238,294,298,299,304,313,322,333,335,351,372,449,458,],[27,27,27,78,27,27,27,27,27,27,78,27,27,27,27,214,214,214,27,27,214,78,214,214,214,342,342,27,214,214,214,214,214,27,27,214,214,27,27,27,27,]),'typedef_name':([0,2,11,26,67,70,73,96,124,125,126,128,137,141,193,203,204,205,213,221,238,294,298,299,304,313,322,333,335,351,372,449,458,],[31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,]),'enum_specifier':([0,2,11,26,67,70,73,96,124,125,126,128,137,141,193,203,204,205,213,221,238,294,298,299,304,313,322,333,335,351,372,449,458,],[32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,]),'struct_or_union_specifier':([0,2,11,26,67,70,73,96,124,125,126,128,137,141,193,203,204,205,213,221,238,294,298,299,304,313,322,333,335,351,372,449,458,],[33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,]),'atomic_specifier':([0,2,11,21,22,23,26,27,34,67,70,71,73,96,101,124,125,126,128,137,141,193,203,204,205,213,221,238,294,298,299,304,313,322,333,335,351,372,449,458,],[34,34,71,101,101,101,106,101,101,71,106,101,71,34,101,106,106,106,71,34,106,106,106,106,106,106,71,106,106,106,106,106,34,34,106,106,34,71,34,34,]),'struct_or_union':([0,2,11,26,67,70,73,96,124,125,126,128,137,141,193,203,204,205,213,221,238,294,298,299,304,313,322,333,335,351,372,449,458,],[37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,]),'declaration_list_opt':([11,73,],[65,131,]),'declaration_list':([11,73,],[67,67,]),'init_declarator_list_opt':([12,69,],[79,79,]),'init_declarator_list':([12,69,],[84,84,]),'init_declarator':([12,69,134,194,],[85,85,253,326,]),'declarator':([12,69,134,194,209,466,],[86,86,86,86,346,346,]),'typeid_declarator':([12,69,82,134,194,209,466,],[87,87,133,87,87,87,87,]),'direct_typeid_declarator':([12,69,80,82,134,194,209,466,],[88,88,132,88,88,88,88,88,]),'declaration_specifiers_no_type_opt':([21,22,23,27,34,71,101,],[98,102,103,112,117,117,117,]),'id_init_declarator_list_opt':([26,70,],[105,105,]),'id_init_declarator_list':([26,70,],[108,108,]),'id_init_declarator':([26,70,],[110,110,]),'type_qualifier_list_opt':([30,95,136,183,258,323,448,511,],[113,182,257,309,401,455,510,544,]),'type_qualifier_list':([30,95,124,125,126,136,141,183,203,204,205,238,258,294,298,299,304,323,333,335,448,511,],[115,184,213,213,213,259,213,115,213,213,213,213,115,213,213,213,213,115,213,213,512,115,]),'brace_open':([36,37,65,118,119,122,123,128,131,135,195,221,238,242,358,360,369,393,405,470,474,504,505,525,526,527,532,570,582,584,],[120,124,128,198,199,203,204,128,128,256,256,128,128,128,128,128,128,256,498,128,498,498,498,128,128,128,256,128,128,128,]),'compound_statement':([65,128,131,221,238,242,358,360,369,470,525,526,527,570,582,584,],[127,227,251,227,363,227,227,227,227,227,227,227,227,227,227,227,]),'unified_string_literal':([92,94,126,128,135,141,153,154,155,156,182,195,221,234,238,242,247,257,266,268,269,270,271,272,273,274,275,276,277,278,279,280,281,282,283,284,285,286,287,288,294,298,309,310,332,347,358,360,362,365,366,367,369,372,378,393,397,401,402,405,455,457,467,470,474,482,500,503,510,525,526,527,528,529,532,544,545,559,565,570,572,582,584,],[138,143,143,143,143,143,143,143,143,143,143,143,143,143,143,143,143,143,407,143,143,143,143,143,143,143,143,143,143,143,143,143,143,143,143,143,143,143,143,143,143,143,143,143,143,143,143,143,143,143,143,143,143,143,143,143,143,143,143,143,143,143,143,143,143,143,143,143,143,143,143,143,143,143,143,143,143,143,143,143,143,143,143,]),'constant_expression':([94,126,234,332,347,397,467,],[142,218,359,462,468,491,523,]),'conditional_expression':([94,126,128,135,141,182,195,221,234,238,242,247,257,268,287,288,294,298,309,310,332,347,358,360,362,365,366,367,369,372,378,393,397,401,402,455,457,467,470,482,500,503,510,525,526,527,528,529,532,544,545,559,565,570,572,582,584,],[144,144,249,249,249,249,249,249,144,249,249,249,249,249,249,249,249,249,249,249,144,144,249,249,249,249,249,249,249,249,249,249,144,249,249,249,249,144,249,249,538,249,249,249,249,249,249,249,249,249,249,249,249,249,249,249,249,]),'binary_expression':([94,126,128,135,141,182,195,221,234,238,242,247,257,268,269,270,271,272,273,274,275,276,277,278,279,280,281,282,283,284,285,286,287,288,294,298,309,310,332,347,358,360,362,365,366,367,369,372,378,393,397,401,402,455,457,467,470,482,500,503,510,525,526,527,528,529,532,544,545,559,565,570,572,582,584,],[145,145,145,145,145,145,145,145,145,145,145,145,145,145,409,410,411,412,413,414,415,416,417,418,419,420,421,422,423,424,425,426,145,145,145,145,145,145,145,145,145,145,145,145,145,145,145,145,145,145,145,145,145,145,145,145,145,145,145,145,145,145,145,145,145,145,145,145,145,145,145,145,145,145,145,]),'cast_expression':([94,126,128,135,141,155,182,195,221,234,238,242,247,257,268,269,270,271,272,273,274,275,276,277,278,279,280,281,282,283,284,285,286,287,288,294,298,309,310,332,347,358,360,362,365,366,367,369,372,378,393,397,401,402,405,455,457,467,470,474,482,500,503,510,525,526,527,528,529,532,544,545,559,565,570,572,582,584,],[146,146,146,146,146,296,146,146,146,146,146,146,146,146,146,146,146,146,146,146,146,146,146,146,146,146,146,146,146,146,146,146,146,146,146,146,146,146,146,146,146,146,146,146,146,146,146,146,146,146,146,146,146,146,497,146,146,146,146,497,146,146,146,146,146,146,146,146,146,146,146,146,146,146,146,146,146,146,]),'unary_expression':([94,126,128,135,141,153,154,155,156,182,195,221,234,238,242,247,257,268,269,270,271,272,273,274,275,276,277,278,279,280,281,282,283,284,285,286,287,288,294,298,309,310,332,347,358,360,362,365,366,367,369,372,378,393,397,401,402,405,455,457,467,470,474,482,500,503,510,525,526,527,528,529,532,544,545,559,565,570,572,582,584,],[151,151,250,250,250,293,295,151,297,250,250,250,151,250,250,250,250,250,151,151,151,151,151,151,151,151,151,151,151,151,151,151,151,151,151,151,250,250,250,250,250,250,151,151,250,250,250,250,250,250,250,250,250,250,151,250,250,151,250,250,151,250,151,250,151,250,250,250,250,250,250,250,250,250,250,250,250,250,250,250,250,]),'postfix_expression':([94,126,128,135,141,153,154,155,156,182,195,221,234,238,242,247,257,268,269,270,271,272,273,274,275,276,277,278,279,280,281,282,283,284,285,286,287,288,294,298,309,310,332,347,358,360,362,365,366,367,369,372,378,393,397,401,402,405,455,457,467,470,474,482,500,503,510,525,526,527,528,529,532,544,545,559,565,570,572,582,584,],[152,152,152,152,152,152,152,152,152,152,152,152,152,152,152,152,152,152,152,152,152,152,152,152,152,152,152,152,152,152,152,152,152,152,152,152,152,152,152,152,152,152,152,152,152,152,152,152,152,152,152,152,152,152,152,152,152,152,152,152,152,152,152,152,152,152,152,152,152,152,152,152,152,152,152,152,152,152,152,152,152,]),'unary_operator':([94,126,128,135,141,153,154,155,156,182,195,221,234,238,242,247,257,268,269,270,271,272,273,274,275,276,277,278,279,280,281,282,283,284,285,286,287,288,294,298,309,310,332,347,358,360,362,365,366,367,369,372,378,393,397,401,402,405,455,457,467,470,474,482,500,503,510,525,526,527,528,529,532,544,545,559,565,570,572,582,584,],[155,155,155,155,155,155,155,155,155,155,155,155,155,155,155,155,155,155,155,155,155,155,155,155,155,155,155,155,155,155,155,155,155,155,155,155,155,155,155,155,155,155,155,155,155,155,155,155,155,155,155,155,155,155,155,155,155,155,155,155,155,155,155,155,155,155,155,155,155,155,155,155,155,155,155,155,155,155,155,155,155,]),'primary_expression':([94,126,128,135,141,153,154,155,156,182,195,221,234,238,242,247,257,268,269,270,271,272,273,274,275,276,277,278,279,280,281,282,283,284,285,286,287,288,294,298,309,310,332,347,358,360,362,365,366,367,369,372,378,393,397,401,402,405,455,457,467,470,474,482,500,503,510,525,526,527,528,529,532,544,545,559,565,570,572,582,584,],[158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,]),'identifier':([94,96,126,128,135,137,141,153,154,155,156,182,195,221,234,238,242,247,257,268,269,270,271,272,273,274,275,276,277,278,279,280,281,282,283,284,285,286,287,288,294,298,309,310,314,332,347,358,360,362,365,366,367,369,372,378,393,397,398,401,402,405,449,455,457,467,470,474,482,500,503,507,510,525,526,527,528,529,532,544,545,559,564,565,570,572,582,584,],[162,191,162,162,162,191,162,162,162,162,162,162,162,162,162,162,162,162,162,162,162,162,162,162,162,162,162,162,162,162,162,162,162,162,162,162,162,162,162,162,162,162,162,162,445,162,162,162,162,162,162,162,162,162,162,162,162,162,492,162,162,162,191,162,162,162,162,162,162,162,162,541,162,162,162,162,162,162,162,162,162,162,575,162,162,162,162,162,]),'constant':([94,126,128,135,141,153,154,155,156,182,195,221,234,238,242,247,257,268,269,270,271,272,273,274,275,276,277,278,279,280,281,282,283,284,285,286,287,288,294,298,309,310,332,347,358,360,362,365,366,367,369,372,378,393,397,401,402,405,455,457,467,470,474,482,500,503,510,525,526,527,528,529,532,544,545,559,565,570,572,582,584,],[163,163,163,163,163,163,163,163,163,163,163,163,163,163,163,163,163,163,163,163,163,163,163,163,163,163,163,163,163,163,163,163,163,163,163,163,163,163,163,163,163,163,163,163,163,163,163,163,163,163,163,163,163,163,163,163,163,163,163,163,163,163,163,163,163,163,163,163,163,163,163,163,163,163,163,163,163,163,163,163,163,]),'unified_wstring_literal':([94,126,128,135,141,153,154,155,156,182,195,221,234,238,242,247,257,268,269,270,271,272,273,274,275,276,277,278,279,280,281,282,283,284,285,286,287,288,294,298,309,310,332,347,358,360,362,365,366,367,369,372,378,393,397,401,402,405,455,457,467,470,474,482,500,503,510,525,526,527,528,529,532,544,545,559,565,570,572,582,584,],[164,164,164,164,164,164,164,164,164,164,164,164,164,164,164,164,164,164,164,164,164,164,164,164,164,164,164,164,164,164,164,164,164,164,164,164,164,164,164,164,164,164,164,164,164,164,164,164,164,164,164,164,164,164,164,164,164,164,164,164,164,164,164,164,164,164,164,164,164,164,164,164,164,164,164,164,164,164,164,164,164,]),'parameter_type_list':([96,137,322,351,449,458,],[185,260,454,454,513,454,]),'identifier_list_opt':([96,137,449,],[186,261,514,]),'parameter_list':([96,137,322,351,449,458,],[187,187,187,187,187,187,]),'identifier_list':([96,137,449,],[189,189,189,]),'parameter_declaration':([96,137,313,322,351,449,458,],[190,190,444,190,190,190,190,]),'enumerator_list':([120,198,199,],[200,328,329,]),'enumerator':([120,198,199,331,],[201,201,201,461,]),'struct_declaration_list':([124,203,204,],[205,333,335,]),'brace_close':([124,200,203,204,205,219,328,329,333,335,390,487,537,562,],[206,330,334,336,337,355,459,460,463,464,486,531,561,574,]),'struct_declaration':([124,203,204,205,333,335,],[207,207,207,338,338,338,]),'specifier_qualifier_list':([124,125,126,141,203,204,205,238,294,298,299,304,333,335,],[209,216,216,216,209,209,209,216,216,216,216,216,209,209,]),'type_name':([125,126,141,238,294,298,299,304,],[215,217,264,364,435,436,437,438,]),'block_item_list_opt':([128,],[219,]),'block_item_list':([128,],[221,]),'block_item':([128,221,],[222,356,]),'statement':([128,221,242,358,360,369,470,525,526,527,570,582,584,],[224,224,370,370,370,479,370,553,370,370,370,370,370,]),'labeled_statement':([128,221,242,358,360,369,470,525,526,527,570,582,584,],[225,225,225,225,225,225,225,225,225,225,225,225,225,]),'expression_statement':([128,221,242,358,360,369,470,525,526,527,570,582,584,],[226,226,226,226,226,226,226,226,226,226,226,226,226,]),'selection_statement':([128,221,242,358,360,369,470,525,526,527,570,582,584,],[228,228,228,228,228,228,228,228,228,228,228,228,228,]),'iteration_statement':([128,221,242,358,360,369,470,525,526,527,570,582,584,],[229,229,229,229,229,229,229,229,229,229,229,229,229,]),'jump_statement':([128,221,242,358,360,369,470,525,526,527,570,582,584,],[230,230,230,230,230,230,230,230,230,230,230,230,230,]),'expression_opt':([128,221,242,358,360,369,372,470,482,525,526,527,529,559,570,572,582,584,],[236,236,236,236,236,236,481,236,530,236,236,236,558,573,236,581,236,236,]),'expression':([128,141,221,238,242,247,268,287,294,298,358,360,362,366,367,369,372,470,482,525,526,527,528,529,559,565,570,572,582,584,],[239,265,239,265,239,376,408,427,265,265,239,239,472,476,477,239,239,239,239,239,239,239,557,239,239,576,239,239,239,239,]),'assignment_expression':([128,135,141,182,195,221,238,242,247,257,268,287,288,294,298,309,310,358,360,362,365,366,367,369,372,378,393,401,402,455,457,470,482,503,510,525,526,527,528,529,532,544,545,559,565,570,572,582,584,],[248,255,248,308,255,248,248,248,248,308,248,248,430,248,248,441,442,248,248,248,475,248,248,248,248,485,255,495,496,308,308,248,248,539,308,248,248,248,248,248,255,568,569,248,248,248,248,248,248,]),'initializer':([135,195,393,532,],[254,327,488,560,]),'assignment_expression_opt':([182,257,455,457,510,],[305,399,517,519,542,]),'typeid_noparen_declarator':([192,],[316,]),'abstract_declarator_opt':([192,216,],[317,350,]),'direct_typeid_noparen_declarator':([192,318,],[319,446,]),'abstract_declarator':([192,216,322,351,],[321,321,450,450,]),'direct_abstract_declarator':([192,216,318,322,351,352,452,],[325,325,447,325,325,447,447,]),'struct_declarator_list_opt':([209,],[339,]),'struct_declarator_list':([209,],[344,]),'struct_declarator':([209,466,],[345,522,]),'pragmacomp_or_statement':([242,358,360,470,525,526,527,570,582,584,],[368,469,471,524,552,555,556,579,585,586,]),'pppragma_directive_list':([242,358,360,470,525,526,527,570,582,584,],[369,369,369,369,369,369,369,369,369,369,]),'assignment_operator':([250,],[378,]),'initializer_list_opt':([256,],[390,]),'initializer_list':([256,498,],[391,537,]),'designation_opt':([256,487,498,562,],[393,532,393,532,]),'designation':([256,487,498,562,],[394,394,394,394,]),'designator_list':([256,487,498,562,],[395,395,395,395,]),'designator':([256,395,487,498,562,],[396,490,396,396,396,]),'argument_expression_list':([288,],[428,]),'parameter_type_list_opt':([322,351,458,],[451,451,521,]),'offsetof_member_designator':([507,],[540,]),} + +_lr_goto = {} +for _k, _v in _lr_goto_items.items(): + for _x, _y in zip(_v[0], _v[1]): + if not _x in _lr_goto: _lr_goto[_x] = {} + _lr_goto[_x][_k] = _y +del _lr_goto_items +_lr_productions = [ + ("S' -> translation_unit_or_empty","S'",1,None,None,None), + ('abstract_declarator_opt -> empty','abstract_declarator_opt',1,'p_abstract_declarator_opt','plyparser.py',43), + ('abstract_declarator_opt -> abstract_declarator','abstract_declarator_opt',1,'p_abstract_declarator_opt','plyparser.py',44), + ('assignment_expression_opt -> empty','assignment_expression_opt',1,'p_assignment_expression_opt','plyparser.py',43), + ('assignment_expression_opt -> assignment_expression','assignment_expression_opt',1,'p_assignment_expression_opt','plyparser.py',44), + ('block_item_list_opt -> empty','block_item_list_opt',1,'p_block_item_list_opt','plyparser.py',43), + ('block_item_list_opt -> block_item_list','block_item_list_opt',1,'p_block_item_list_opt','plyparser.py',44), + ('declaration_list_opt -> empty','declaration_list_opt',1,'p_declaration_list_opt','plyparser.py',43), + ('declaration_list_opt -> declaration_list','declaration_list_opt',1,'p_declaration_list_opt','plyparser.py',44), + ('declaration_specifiers_no_type_opt -> empty','declaration_specifiers_no_type_opt',1,'p_declaration_specifiers_no_type_opt','plyparser.py',43), + ('declaration_specifiers_no_type_opt -> declaration_specifiers_no_type','declaration_specifiers_no_type_opt',1,'p_declaration_specifiers_no_type_opt','plyparser.py',44), + ('designation_opt -> empty','designation_opt',1,'p_designation_opt','plyparser.py',43), + ('designation_opt -> designation','designation_opt',1,'p_designation_opt','plyparser.py',44), + ('expression_opt -> empty','expression_opt',1,'p_expression_opt','plyparser.py',43), + ('expression_opt -> expression','expression_opt',1,'p_expression_opt','plyparser.py',44), + ('id_init_declarator_list_opt -> empty','id_init_declarator_list_opt',1,'p_id_init_declarator_list_opt','plyparser.py',43), + ('id_init_declarator_list_opt -> id_init_declarator_list','id_init_declarator_list_opt',1,'p_id_init_declarator_list_opt','plyparser.py',44), + ('identifier_list_opt -> empty','identifier_list_opt',1,'p_identifier_list_opt','plyparser.py',43), + ('identifier_list_opt -> identifier_list','identifier_list_opt',1,'p_identifier_list_opt','plyparser.py',44), + ('init_declarator_list_opt -> empty','init_declarator_list_opt',1,'p_init_declarator_list_opt','plyparser.py',43), + ('init_declarator_list_opt -> init_declarator_list','init_declarator_list_opt',1,'p_init_declarator_list_opt','plyparser.py',44), + ('initializer_list_opt -> empty','initializer_list_opt',1,'p_initializer_list_opt','plyparser.py',43), + ('initializer_list_opt -> initializer_list','initializer_list_opt',1,'p_initializer_list_opt','plyparser.py',44), + ('parameter_type_list_opt -> empty','parameter_type_list_opt',1,'p_parameter_type_list_opt','plyparser.py',43), + ('parameter_type_list_opt -> parameter_type_list','parameter_type_list_opt',1,'p_parameter_type_list_opt','plyparser.py',44), + ('struct_declarator_list_opt -> empty','struct_declarator_list_opt',1,'p_struct_declarator_list_opt','plyparser.py',43), + ('struct_declarator_list_opt -> struct_declarator_list','struct_declarator_list_opt',1,'p_struct_declarator_list_opt','plyparser.py',44), + ('type_qualifier_list_opt -> empty','type_qualifier_list_opt',1,'p_type_qualifier_list_opt','plyparser.py',43), + ('type_qualifier_list_opt -> type_qualifier_list','type_qualifier_list_opt',1,'p_type_qualifier_list_opt','plyparser.py',44), + ('direct_id_declarator -> ID','direct_id_declarator',1,'p_direct_id_declarator_1','plyparser.py',126), + ('direct_id_declarator -> LPAREN id_declarator RPAREN','direct_id_declarator',3,'p_direct_id_declarator_2','plyparser.py',126), + ('direct_id_declarator -> direct_id_declarator LBRACKET type_qualifier_list_opt assignment_expression_opt RBRACKET','direct_id_declarator',5,'p_direct_id_declarator_3','plyparser.py',126), + ('direct_id_declarator -> direct_id_declarator LBRACKET STATIC type_qualifier_list_opt assignment_expression RBRACKET','direct_id_declarator',6,'p_direct_id_declarator_4','plyparser.py',126), + ('direct_id_declarator -> direct_id_declarator LBRACKET type_qualifier_list STATIC assignment_expression RBRACKET','direct_id_declarator',6,'p_direct_id_declarator_4','plyparser.py',127), + ('direct_id_declarator -> direct_id_declarator LBRACKET type_qualifier_list_opt TIMES RBRACKET','direct_id_declarator',5,'p_direct_id_declarator_5','plyparser.py',126), + ('direct_id_declarator -> direct_id_declarator LPAREN parameter_type_list RPAREN','direct_id_declarator',4,'p_direct_id_declarator_6','plyparser.py',126), + ('direct_id_declarator -> direct_id_declarator LPAREN identifier_list_opt RPAREN','direct_id_declarator',4,'p_direct_id_declarator_6','plyparser.py',127), + ('direct_typeid_declarator -> TYPEID','direct_typeid_declarator',1,'p_direct_typeid_declarator_1','plyparser.py',126), + ('direct_typeid_declarator -> LPAREN typeid_declarator RPAREN','direct_typeid_declarator',3,'p_direct_typeid_declarator_2','plyparser.py',126), + ('direct_typeid_declarator -> direct_typeid_declarator LBRACKET type_qualifier_list_opt assignment_expression_opt RBRACKET','direct_typeid_declarator',5,'p_direct_typeid_declarator_3','plyparser.py',126), + ('direct_typeid_declarator -> direct_typeid_declarator LBRACKET STATIC type_qualifier_list_opt assignment_expression RBRACKET','direct_typeid_declarator',6,'p_direct_typeid_declarator_4','plyparser.py',126), + ('direct_typeid_declarator -> direct_typeid_declarator LBRACKET type_qualifier_list STATIC assignment_expression RBRACKET','direct_typeid_declarator',6,'p_direct_typeid_declarator_4','plyparser.py',127), + ('direct_typeid_declarator -> direct_typeid_declarator LBRACKET type_qualifier_list_opt TIMES RBRACKET','direct_typeid_declarator',5,'p_direct_typeid_declarator_5','plyparser.py',126), + ('direct_typeid_declarator -> direct_typeid_declarator LPAREN parameter_type_list RPAREN','direct_typeid_declarator',4,'p_direct_typeid_declarator_6','plyparser.py',126), + ('direct_typeid_declarator -> direct_typeid_declarator LPAREN identifier_list_opt RPAREN','direct_typeid_declarator',4,'p_direct_typeid_declarator_6','plyparser.py',127), + ('direct_typeid_noparen_declarator -> TYPEID','direct_typeid_noparen_declarator',1,'p_direct_typeid_noparen_declarator_1','plyparser.py',126), + ('direct_typeid_noparen_declarator -> direct_typeid_noparen_declarator LBRACKET type_qualifier_list_opt assignment_expression_opt RBRACKET','direct_typeid_noparen_declarator',5,'p_direct_typeid_noparen_declarator_3','plyparser.py',126), + ('direct_typeid_noparen_declarator -> direct_typeid_noparen_declarator LBRACKET STATIC type_qualifier_list_opt assignment_expression RBRACKET','direct_typeid_noparen_declarator',6,'p_direct_typeid_noparen_declarator_4','plyparser.py',126), + ('direct_typeid_noparen_declarator -> direct_typeid_noparen_declarator LBRACKET type_qualifier_list STATIC assignment_expression RBRACKET','direct_typeid_noparen_declarator',6,'p_direct_typeid_noparen_declarator_4','plyparser.py',127), + ('direct_typeid_noparen_declarator -> direct_typeid_noparen_declarator LBRACKET type_qualifier_list_opt TIMES RBRACKET','direct_typeid_noparen_declarator',5,'p_direct_typeid_noparen_declarator_5','plyparser.py',126), + ('direct_typeid_noparen_declarator -> direct_typeid_noparen_declarator LPAREN parameter_type_list RPAREN','direct_typeid_noparen_declarator',4,'p_direct_typeid_noparen_declarator_6','plyparser.py',126), + ('direct_typeid_noparen_declarator -> direct_typeid_noparen_declarator LPAREN identifier_list_opt RPAREN','direct_typeid_noparen_declarator',4,'p_direct_typeid_noparen_declarator_6','plyparser.py',127), + ('id_declarator -> direct_id_declarator','id_declarator',1,'p_id_declarator_1','plyparser.py',126), + ('id_declarator -> pointer direct_id_declarator','id_declarator',2,'p_id_declarator_2','plyparser.py',126), + ('typeid_declarator -> direct_typeid_declarator','typeid_declarator',1,'p_typeid_declarator_1','plyparser.py',126), + ('typeid_declarator -> pointer direct_typeid_declarator','typeid_declarator',2,'p_typeid_declarator_2','plyparser.py',126), + ('typeid_noparen_declarator -> direct_typeid_noparen_declarator','typeid_noparen_declarator',1,'p_typeid_noparen_declarator_1','plyparser.py',126), + ('typeid_noparen_declarator -> pointer direct_typeid_noparen_declarator','typeid_noparen_declarator',2,'p_typeid_noparen_declarator_2','plyparser.py',126), + ('translation_unit_or_empty -> translation_unit','translation_unit_or_empty',1,'p_translation_unit_or_empty','c_parser.py',509), + ('translation_unit_or_empty -> empty','translation_unit_or_empty',1,'p_translation_unit_or_empty','c_parser.py',510), + ('translation_unit -> external_declaration','translation_unit',1,'p_translation_unit_1','c_parser.py',518), + ('translation_unit -> translation_unit external_declaration','translation_unit',2,'p_translation_unit_2','c_parser.py',524), + ('external_declaration -> function_definition','external_declaration',1,'p_external_declaration_1','c_parser.py',534), + ('external_declaration -> declaration','external_declaration',1,'p_external_declaration_2','c_parser.py',539), + ('external_declaration -> pp_directive','external_declaration',1,'p_external_declaration_3','c_parser.py',544), + ('external_declaration -> pppragma_directive','external_declaration',1,'p_external_declaration_3','c_parser.py',545), + ('external_declaration -> SEMI','external_declaration',1,'p_external_declaration_4','c_parser.py',550), + ('external_declaration -> static_assert','external_declaration',1,'p_external_declaration_5','c_parser.py',555), + ('static_assert -> _STATIC_ASSERT LPAREN constant_expression COMMA unified_string_literal RPAREN','static_assert',6,'p_static_assert_declaration','c_parser.py',560), + ('static_assert -> _STATIC_ASSERT LPAREN constant_expression RPAREN','static_assert',4,'p_static_assert_declaration','c_parser.py',561), + ('pp_directive -> PPHASH','pp_directive',1,'p_pp_directive','c_parser.py',569), + ('pppragma_directive -> PPPRAGMA','pppragma_directive',1,'p_pppragma_directive','c_parser.py',580), + ('pppragma_directive -> PPPRAGMA PPPRAGMASTR','pppragma_directive',2,'p_pppragma_directive','c_parser.py',581), + ('pppragma_directive -> _PRAGMA LPAREN unified_string_literal RPAREN','pppragma_directive',4,'p_pppragma_directive','c_parser.py',582), + ('pppragma_directive_list -> pppragma_directive','pppragma_directive_list',1,'p_pppragma_directive_list','c_parser.py',592), + ('pppragma_directive_list -> pppragma_directive_list pppragma_directive','pppragma_directive_list',2,'p_pppragma_directive_list','c_parser.py',593), + ('function_definition -> id_declarator declaration_list_opt compound_statement','function_definition',3,'p_function_definition_1','c_parser.py',600), + ('function_definition -> declaration_specifiers id_declarator declaration_list_opt compound_statement','function_definition',4,'p_function_definition_2','c_parser.py',618), + ('statement -> labeled_statement','statement',1,'p_statement','c_parser.py',633), + ('statement -> expression_statement','statement',1,'p_statement','c_parser.py',634), + ('statement -> compound_statement','statement',1,'p_statement','c_parser.py',635), + ('statement -> selection_statement','statement',1,'p_statement','c_parser.py',636), + ('statement -> iteration_statement','statement',1,'p_statement','c_parser.py',637), + ('statement -> jump_statement','statement',1,'p_statement','c_parser.py',638), + ('statement -> pppragma_directive','statement',1,'p_statement','c_parser.py',639), + ('statement -> static_assert','statement',1,'p_statement','c_parser.py',640), + ('pragmacomp_or_statement -> pppragma_directive_list statement','pragmacomp_or_statement',2,'p_pragmacomp_or_statement','c_parser.py',688), + ('pragmacomp_or_statement -> statement','pragmacomp_or_statement',1,'p_pragmacomp_or_statement','c_parser.py',689), + ('decl_body -> declaration_specifiers init_declarator_list_opt','decl_body',2,'p_decl_body','c_parser.py',708), + ('decl_body -> declaration_specifiers_no_type id_init_declarator_list_opt','decl_body',2,'p_decl_body','c_parser.py',709), + ('declaration -> decl_body SEMI','declaration',2,'p_declaration','c_parser.py',769), + ('declaration_list -> declaration','declaration_list',1,'p_declaration_list','c_parser.py',778), + ('declaration_list -> declaration_list declaration','declaration_list',2,'p_declaration_list','c_parser.py',779), + ('declaration_specifiers_no_type -> type_qualifier declaration_specifiers_no_type_opt','declaration_specifiers_no_type',2,'p_declaration_specifiers_no_type_1','c_parser.py',789), + ('declaration_specifiers_no_type -> storage_class_specifier declaration_specifiers_no_type_opt','declaration_specifiers_no_type',2,'p_declaration_specifiers_no_type_2','c_parser.py',794), + ('declaration_specifiers_no_type -> function_specifier declaration_specifiers_no_type_opt','declaration_specifiers_no_type',2,'p_declaration_specifiers_no_type_3','c_parser.py',799), + ('declaration_specifiers_no_type -> atomic_specifier declaration_specifiers_no_type_opt','declaration_specifiers_no_type',2,'p_declaration_specifiers_no_type_4','c_parser.py',806), + ('declaration_specifiers_no_type -> alignment_specifier declaration_specifiers_no_type_opt','declaration_specifiers_no_type',2,'p_declaration_specifiers_no_type_5','c_parser.py',811), + ('declaration_specifiers -> declaration_specifiers type_qualifier','declaration_specifiers',2,'p_declaration_specifiers_1','c_parser.py',816), + ('declaration_specifiers -> declaration_specifiers storage_class_specifier','declaration_specifiers',2,'p_declaration_specifiers_2','c_parser.py',821), + ('declaration_specifiers -> declaration_specifiers function_specifier','declaration_specifiers',2,'p_declaration_specifiers_3','c_parser.py',826), + ('declaration_specifiers -> declaration_specifiers type_specifier_no_typeid','declaration_specifiers',2,'p_declaration_specifiers_4','c_parser.py',831), + ('declaration_specifiers -> type_specifier','declaration_specifiers',1,'p_declaration_specifiers_5','c_parser.py',836), + ('declaration_specifiers -> declaration_specifiers_no_type type_specifier','declaration_specifiers',2,'p_declaration_specifiers_6','c_parser.py',841), + ('declaration_specifiers -> declaration_specifiers alignment_specifier','declaration_specifiers',2,'p_declaration_specifiers_7','c_parser.py',846), + ('storage_class_specifier -> AUTO','storage_class_specifier',1,'p_storage_class_specifier','c_parser.py',851), + ('storage_class_specifier -> REGISTER','storage_class_specifier',1,'p_storage_class_specifier','c_parser.py',852), + ('storage_class_specifier -> STATIC','storage_class_specifier',1,'p_storage_class_specifier','c_parser.py',853), + ('storage_class_specifier -> EXTERN','storage_class_specifier',1,'p_storage_class_specifier','c_parser.py',854), + ('storage_class_specifier -> TYPEDEF','storage_class_specifier',1,'p_storage_class_specifier','c_parser.py',855), + ('storage_class_specifier -> _THREAD_LOCAL','storage_class_specifier',1,'p_storage_class_specifier','c_parser.py',856), + ('function_specifier -> INLINE','function_specifier',1,'p_function_specifier','c_parser.py',861), + ('function_specifier -> _NORETURN','function_specifier',1,'p_function_specifier','c_parser.py',862), + ('type_specifier_no_typeid -> VOID','type_specifier_no_typeid',1,'p_type_specifier_no_typeid','c_parser.py',867), + ('type_specifier_no_typeid -> _BOOL','type_specifier_no_typeid',1,'p_type_specifier_no_typeid','c_parser.py',868), + ('type_specifier_no_typeid -> CHAR','type_specifier_no_typeid',1,'p_type_specifier_no_typeid','c_parser.py',869), + ('type_specifier_no_typeid -> SHORT','type_specifier_no_typeid',1,'p_type_specifier_no_typeid','c_parser.py',870), + ('type_specifier_no_typeid -> INT','type_specifier_no_typeid',1,'p_type_specifier_no_typeid','c_parser.py',871), + ('type_specifier_no_typeid -> LONG','type_specifier_no_typeid',1,'p_type_specifier_no_typeid','c_parser.py',872), + ('type_specifier_no_typeid -> FLOAT','type_specifier_no_typeid',1,'p_type_specifier_no_typeid','c_parser.py',873), + ('type_specifier_no_typeid -> DOUBLE','type_specifier_no_typeid',1,'p_type_specifier_no_typeid','c_parser.py',874), + ('type_specifier_no_typeid -> _COMPLEX','type_specifier_no_typeid',1,'p_type_specifier_no_typeid','c_parser.py',875), + ('type_specifier_no_typeid -> SIGNED','type_specifier_no_typeid',1,'p_type_specifier_no_typeid','c_parser.py',876), + ('type_specifier_no_typeid -> UNSIGNED','type_specifier_no_typeid',1,'p_type_specifier_no_typeid','c_parser.py',877), + ('type_specifier_no_typeid -> __INT128','type_specifier_no_typeid',1,'p_type_specifier_no_typeid','c_parser.py',878), + ('type_specifier -> typedef_name','type_specifier',1,'p_type_specifier','c_parser.py',883), + ('type_specifier -> enum_specifier','type_specifier',1,'p_type_specifier','c_parser.py',884), + ('type_specifier -> struct_or_union_specifier','type_specifier',1,'p_type_specifier','c_parser.py',885), + ('type_specifier -> type_specifier_no_typeid','type_specifier',1,'p_type_specifier','c_parser.py',886), + ('type_specifier -> atomic_specifier','type_specifier',1,'p_type_specifier','c_parser.py',887), + ('atomic_specifier -> _ATOMIC LPAREN type_name RPAREN','atomic_specifier',4,'p_atomic_specifier','c_parser.py',893), + ('type_qualifier -> CONST','type_qualifier',1,'p_type_qualifier','c_parser.py',900), + ('type_qualifier -> RESTRICT','type_qualifier',1,'p_type_qualifier','c_parser.py',901), + ('type_qualifier -> VOLATILE','type_qualifier',1,'p_type_qualifier','c_parser.py',902), + ('type_qualifier -> _ATOMIC','type_qualifier',1,'p_type_qualifier','c_parser.py',903), + ('init_declarator_list -> init_declarator','init_declarator_list',1,'p_init_declarator_list','c_parser.py',908), + ('init_declarator_list -> init_declarator_list COMMA init_declarator','init_declarator_list',3,'p_init_declarator_list','c_parser.py',909), + ('init_declarator -> declarator','init_declarator',1,'p_init_declarator','c_parser.py',917), + ('init_declarator -> declarator EQUALS initializer','init_declarator',3,'p_init_declarator','c_parser.py',918), + ('id_init_declarator_list -> id_init_declarator','id_init_declarator_list',1,'p_id_init_declarator_list','c_parser.py',923), + ('id_init_declarator_list -> id_init_declarator_list COMMA init_declarator','id_init_declarator_list',3,'p_id_init_declarator_list','c_parser.py',924), + ('id_init_declarator -> id_declarator','id_init_declarator',1,'p_id_init_declarator','c_parser.py',929), + ('id_init_declarator -> id_declarator EQUALS initializer','id_init_declarator',3,'p_id_init_declarator','c_parser.py',930), + ('specifier_qualifier_list -> specifier_qualifier_list type_specifier_no_typeid','specifier_qualifier_list',2,'p_specifier_qualifier_list_1','c_parser.py',937), + ('specifier_qualifier_list -> specifier_qualifier_list type_qualifier','specifier_qualifier_list',2,'p_specifier_qualifier_list_2','c_parser.py',942), + ('specifier_qualifier_list -> type_specifier','specifier_qualifier_list',1,'p_specifier_qualifier_list_3','c_parser.py',947), + ('specifier_qualifier_list -> type_qualifier_list type_specifier','specifier_qualifier_list',2,'p_specifier_qualifier_list_4','c_parser.py',952), + ('specifier_qualifier_list -> alignment_specifier','specifier_qualifier_list',1,'p_specifier_qualifier_list_5','c_parser.py',957), + ('specifier_qualifier_list -> specifier_qualifier_list alignment_specifier','specifier_qualifier_list',2,'p_specifier_qualifier_list_6','c_parser.py',962), + ('struct_or_union_specifier -> struct_or_union ID','struct_or_union_specifier',2,'p_struct_or_union_specifier_1','c_parser.py',970), + ('struct_or_union_specifier -> struct_or_union TYPEID','struct_or_union_specifier',2,'p_struct_or_union_specifier_1','c_parser.py',971), + ('struct_or_union_specifier -> struct_or_union brace_open struct_declaration_list brace_close','struct_or_union_specifier',4,'p_struct_or_union_specifier_2','c_parser.py',981), + ('struct_or_union_specifier -> struct_or_union brace_open brace_close','struct_or_union_specifier',3,'p_struct_or_union_specifier_2','c_parser.py',982), + ('struct_or_union_specifier -> struct_or_union ID brace_open struct_declaration_list brace_close','struct_or_union_specifier',5,'p_struct_or_union_specifier_3','c_parser.py',999), + ('struct_or_union_specifier -> struct_or_union ID brace_open brace_close','struct_or_union_specifier',4,'p_struct_or_union_specifier_3','c_parser.py',1000), + ('struct_or_union_specifier -> struct_or_union TYPEID brace_open struct_declaration_list brace_close','struct_or_union_specifier',5,'p_struct_or_union_specifier_3','c_parser.py',1001), + ('struct_or_union_specifier -> struct_or_union TYPEID brace_open brace_close','struct_or_union_specifier',4,'p_struct_or_union_specifier_3','c_parser.py',1002), + ('struct_or_union -> STRUCT','struct_or_union',1,'p_struct_or_union','c_parser.py',1018), + ('struct_or_union -> UNION','struct_or_union',1,'p_struct_or_union','c_parser.py',1019), + ('struct_declaration_list -> struct_declaration','struct_declaration_list',1,'p_struct_declaration_list','c_parser.py',1026), + ('struct_declaration_list -> struct_declaration_list struct_declaration','struct_declaration_list',2,'p_struct_declaration_list','c_parser.py',1027), + ('struct_declaration -> specifier_qualifier_list struct_declarator_list_opt SEMI','struct_declaration',3,'p_struct_declaration_1','c_parser.py',1035), + ('struct_declaration -> SEMI','struct_declaration',1,'p_struct_declaration_2','c_parser.py',1073), + ('struct_declaration -> pppragma_directive','struct_declaration',1,'p_struct_declaration_3','c_parser.py',1078), + ('struct_declarator_list -> struct_declarator','struct_declarator_list',1,'p_struct_declarator_list','c_parser.py',1083), + ('struct_declarator_list -> struct_declarator_list COMMA struct_declarator','struct_declarator_list',3,'p_struct_declarator_list','c_parser.py',1084), + ('struct_declarator -> declarator','struct_declarator',1,'p_struct_declarator_1','c_parser.py',1092), + ('struct_declarator -> declarator COLON constant_expression','struct_declarator',3,'p_struct_declarator_2','c_parser.py',1097), + ('struct_declarator -> COLON constant_expression','struct_declarator',2,'p_struct_declarator_2','c_parser.py',1098), + ('enum_specifier -> ENUM ID','enum_specifier',2,'p_enum_specifier_1','c_parser.py',1106), + ('enum_specifier -> ENUM TYPEID','enum_specifier',2,'p_enum_specifier_1','c_parser.py',1107), + ('enum_specifier -> ENUM brace_open enumerator_list brace_close','enum_specifier',4,'p_enum_specifier_2','c_parser.py',1112), + ('enum_specifier -> ENUM ID brace_open enumerator_list brace_close','enum_specifier',5,'p_enum_specifier_3','c_parser.py',1117), + ('enum_specifier -> ENUM TYPEID brace_open enumerator_list brace_close','enum_specifier',5,'p_enum_specifier_3','c_parser.py',1118), + ('enumerator_list -> enumerator','enumerator_list',1,'p_enumerator_list','c_parser.py',1123), + ('enumerator_list -> enumerator_list COMMA','enumerator_list',2,'p_enumerator_list','c_parser.py',1124), + ('enumerator_list -> enumerator_list COMMA enumerator','enumerator_list',3,'p_enumerator_list','c_parser.py',1125), + ('alignment_specifier -> _ALIGNAS LPAREN type_name RPAREN','alignment_specifier',4,'p_alignment_specifier','c_parser.py',1136), + ('alignment_specifier -> _ALIGNAS LPAREN constant_expression RPAREN','alignment_specifier',4,'p_alignment_specifier','c_parser.py',1137), + ('enumerator -> ID','enumerator',1,'p_enumerator','c_parser.py',1142), + ('enumerator -> ID EQUALS constant_expression','enumerator',3,'p_enumerator','c_parser.py',1143), + ('declarator -> id_declarator','declarator',1,'p_declarator','c_parser.py',1158), + ('declarator -> typeid_declarator','declarator',1,'p_declarator','c_parser.py',1159), + ('pointer -> TIMES type_qualifier_list_opt','pointer',2,'p_pointer','c_parser.py',1271), + ('pointer -> TIMES type_qualifier_list_opt pointer','pointer',3,'p_pointer','c_parser.py',1272), + ('type_qualifier_list -> type_qualifier','type_qualifier_list',1,'p_type_qualifier_list','c_parser.py',1301), + ('type_qualifier_list -> type_qualifier_list type_qualifier','type_qualifier_list',2,'p_type_qualifier_list','c_parser.py',1302), + ('parameter_type_list -> parameter_list','parameter_type_list',1,'p_parameter_type_list','c_parser.py',1307), + ('parameter_type_list -> parameter_list COMMA ELLIPSIS','parameter_type_list',3,'p_parameter_type_list','c_parser.py',1308), + ('parameter_list -> parameter_declaration','parameter_list',1,'p_parameter_list','c_parser.py',1316), + ('parameter_list -> parameter_list COMMA parameter_declaration','parameter_list',3,'p_parameter_list','c_parser.py',1317), + ('parameter_declaration -> declaration_specifiers id_declarator','parameter_declaration',2,'p_parameter_declaration_1','c_parser.py',1336), + ('parameter_declaration -> declaration_specifiers typeid_noparen_declarator','parameter_declaration',2,'p_parameter_declaration_1','c_parser.py',1337), + ('parameter_declaration -> declaration_specifiers abstract_declarator_opt','parameter_declaration',2,'p_parameter_declaration_2','c_parser.py',1348), + ('identifier_list -> identifier','identifier_list',1,'p_identifier_list','c_parser.py',1380), + ('identifier_list -> identifier_list COMMA identifier','identifier_list',3,'p_identifier_list','c_parser.py',1381), + ('initializer -> assignment_expression','initializer',1,'p_initializer_1','c_parser.py',1390), + ('initializer -> brace_open initializer_list_opt brace_close','initializer',3,'p_initializer_2','c_parser.py',1395), + ('initializer -> brace_open initializer_list COMMA brace_close','initializer',4,'p_initializer_2','c_parser.py',1396), + ('initializer_list -> designation_opt initializer','initializer_list',2,'p_initializer_list','c_parser.py',1404), + ('initializer_list -> initializer_list COMMA designation_opt initializer','initializer_list',4,'p_initializer_list','c_parser.py',1405), + ('designation -> designator_list EQUALS','designation',2,'p_designation','c_parser.py',1416), + ('designator_list -> designator','designator_list',1,'p_designator_list','c_parser.py',1424), + ('designator_list -> designator_list designator','designator_list',2,'p_designator_list','c_parser.py',1425), + ('designator -> LBRACKET constant_expression RBRACKET','designator',3,'p_designator','c_parser.py',1430), + ('designator -> PERIOD identifier','designator',2,'p_designator','c_parser.py',1431), + ('type_name -> specifier_qualifier_list abstract_declarator_opt','type_name',2,'p_type_name','c_parser.py',1436), + ('abstract_declarator -> pointer','abstract_declarator',1,'p_abstract_declarator_1','c_parser.py',1448), + ('abstract_declarator -> pointer direct_abstract_declarator','abstract_declarator',2,'p_abstract_declarator_2','c_parser.py',1456), + ('abstract_declarator -> direct_abstract_declarator','abstract_declarator',1,'p_abstract_declarator_3','c_parser.py',1461), + ('direct_abstract_declarator -> LPAREN abstract_declarator RPAREN','direct_abstract_declarator',3,'p_direct_abstract_declarator_1','c_parser.py',1471), + ('direct_abstract_declarator -> direct_abstract_declarator LBRACKET assignment_expression_opt RBRACKET','direct_abstract_declarator',4,'p_direct_abstract_declarator_2','c_parser.py',1475), + ('direct_abstract_declarator -> LBRACKET type_qualifier_list_opt assignment_expression_opt RBRACKET','direct_abstract_declarator',4,'p_direct_abstract_declarator_3','c_parser.py',1486), + ('direct_abstract_declarator -> direct_abstract_declarator LBRACKET TIMES RBRACKET','direct_abstract_declarator',4,'p_direct_abstract_declarator_4','c_parser.py',1496), + ('direct_abstract_declarator -> LBRACKET TIMES RBRACKET','direct_abstract_declarator',3,'p_direct_abstract_declarator_5','c_parser.py',1507), + ('direct_abstract_declarator -> direct_abstract_declarator LPAREN parameter_type_list_opt RPAREN','direct_abstract_declarator',4,'p_direct_abstract_declarator_6','c_parser.py',1516), + ('direct_abstract_declarator -> LPAREN parameter_type_list_opt RPAREN','direct_abstract_declarator',3,'p_direct_abstract_declarator_7','c_parser.py',1526), + ('block_item -> declaration','block_item',1,'p_block_item','c_parser.py',1537), + ('block_item -> statement','block_item',1,'p_block_item','c_parser.py',1538), + ('block_item_list -> block_item','block_item_list',1,'p_block_item_list','c_parser.py',1545), + ('block_item_list -> block_item_list block_item','block_item_list',2,'p_block_item_list','c_parser.py',1546), + ('compound_statement -> brace_open block_item_list_opt brace_close','compound_statement',3,'p_compound_statement_1','c_parser.py',1552), + ('labeled_statement -> ID COLON pragmacomp_or_statement','labeled_statement',3,'p_labeled_statement_1','c_parser.py',1558), + ('labeled_statement -> CASE constant_expression COLON pragmacomp_or_statement','labeled_statement',4,'p_labeled_statement_2','c_parser.py',1562), + ('labeled_statement -> DEFAULT COLON pragmacomp_or_statement','labeled_statement',3,'p_labeled_statement_3','c_parser.py',1566), + ('selection_statement -> IF LPAREN expression RPAREN pragmacomp_or_statement','selection_statement',5,'p_selection_statement_1','c_parser.py',1570), + ('selection_statement -> IF LPAREN expression RPAREN statement ELSE pragmacomp_or_statement','selection_statement',7,'p_selection_statement_2','c_parser.py',1574), + ('selection_statement -> SWITCH LPAREN expression RPAREN pragmacomp_or_statement','selection_statement',5,'p_selection_statement_3','c_parser.py',1578), + ('iteration_statement -> WHILE LPAREN expression RPAREN pragmacomp_or_statement','iteration_statement',5,'p_iteration_statement_1','c_parser.py',1583), + ('iteration_statement -> DO pragmacomp_or_statement WHILE LPAREN expression RPAREN SEMI','iteration_statement',7,'p_iteration_statement_2','c_parser.py',1587), + ('iteration_statement -> FOR LPAREN expression_opt SEMI expression_opt SEMI expression_opt RPAREN pragmacomp_or_statement','iteration_statement',9,'p_iteration_statement_3','c_parser.py',1591), + ('iteration_statement -> FOR LPAREN declaration expression_opt SEMI expression_opt RPAREN pragmacomp_or_statement','iteration_statement',8,'p_iteration_statement_4','c_parser.py',1595), + ('jump_statement -> GOTO ID SEMI','jump_statement',3,'p_jump_statement_1','c_parser.py',1600), + ('jump_statement -> BREAK SEMI','jump_statement',2,'p_jump_statement_2','c_parser.py',1604), + ('jump_statement -> CONTINUE SEMI','jump_statement',2,'p_jump_statement_3','c_parser.py',1608), + ('jump_statement -> RETURN expression SEMI','jump_statement',3,'p_jump_statement_4','c_parser.py',1612), + ('jump_statement -> RETURN SEMI','jump_statement',2,'p_jump_statement_4','c_parser.py',1613), + ('expression_statement -> expression_opt SEMI','expression_statement',2,'p_expression_statement','c_parser.py',1618), + ('expression -> assignment_expression','expression',1,'p_expression','c_parser.py',1625), + ('expression -> expression COMMA assignment_expression','expression',3,'p_expression','c_parser.py',1626), + ('assignment_expression -> LPAREN compound_statement RPAREN','assignment_expression',3,'p_parenthesized_compound_expression','c_parser.py',1638), + ('typedef_name -> TYPEID','typedef_name',1,'p_typedef_name','c_parser.py',1642), + ('assignment_expression -> conditional_expression','assignment_expression',1,'p_assignment_expression','c_parser.py',1646), + ('assignment_expression -> unary_expression assignment_operator assignment_expression','assignment_expression',3,'p_assignment_expression','c_parser.py',1647), + ('assignment_operator -> EQUALS','assignment_operator',1,'p_assignment_operator','c_parser.py',1660), + ('assignment_operator -> XOREQUAL','assignment_operator',1,'p_assignment_operator','c_parser.py',1661), + ('assignment_operator -> TIMESEQUAL','assignment_operator',1,'p_assignment_operator','c_parser.py',1662), + ('assignment_operator -> DIVEQUAL','assignment_operator',1,'p_assignment_operator','c_parser.py',1663), + ('assignment_operator -> MODEQUAL','assignment_operator',1,'p_assignment_operator','c_parser.py',1664), + ('assignment_operator -> PLUSEQUAL','assignment_operator',1,'p_assignment_operator','c_parser.py',1665), + ('assignment_operator -> MINUSEQUAL','assignment_operator',1,'p_assignment_operator','c_parser.py',1666), + ('assignment_operator -> LSHIFTEQUAL','assignment_operator',1,'p_assignment_operator','c_parser.py',1667), + ('assignment_operator -> RSHIFTEQUAL','assignment_operator',1,'p_assignment_operator','c_parser.py',1668), + ('assignment_operator -> ANDEQUAL','assignment_operator',1,'p_assignment_operator','c_parser.py',1669), + ('assignment_operator -> OREQUAL','assignment_operator',1,'p_assignment_operator','c_parser.py',1670), + ('constant_expression -> conditional_expression','constant_expression',1,'p_constant_expression','c_parser.py',1675), + ('conditional_expression -> binary_expression','conditional_expression',1,'p_conditional_expression','c_parser.py',1679), + ('conditional_expression -> binary_expression CONDOP expression COLON conditional_expression','conditional_expression',5,'p_conditional_expression','c_parser.py',1680), + ('binary_expression -> cast_expression','binary_expression',1,'p_binary_expression','c_parser.py',1688), + ('binary_expression -> binary_expression TIMES binary_expression','binary_expression',3,'p_binary_expression','c_parser.py',1689), + ('binary_expression -> binary_expression DIVIDE binary_expression','binary_expression',3,'p_binary_expression','c_parser.py',1690), + ('binary_expression -> binary_expression MOD binary_expression','binary_expression',3,'p_binary_expression','c_parser.py',1691), + ('binary_expression -> binary_expression PLUS binary_expression','binary_expression',3,'p_binary_expression','c_parser.py',1692), + ('binary_expression -> binary_expression MINUS binary_expression','binary_expression',3,'p_binary_expression','c_parser.py',1693), + ('binary_expression -> binary_expression RSHIFT binary_expression','binary_expression',3,'p_binary_expression','c_parser.py',1694), + ('binary_expression -> binary_expression LSHIFT binary_expression','binary_expression',3,'p_binary_expression','c_parser.py',1695), + ('binary_expression -> binary_expression LT binary_expression','binary_expression',3,'p_binary_expression','c_parser.py',1696), + ('binary_expression -> binary_expression LE binary_expression','binary_expression',3,'p_binary_expression','c_parser.py',1697), + ('binary_expression -> binary_expression GE binary_expression','binary_expression',3,'p_binary_expression','c_parser.py',1698), + ('binary_expression -> binary_expression GT binary_expression','binary_expression',3,'p_binary_expression','c_parser.py',1699), + ('binary_expression -> binary_expression EQ binary_expression','binary_expression',3,'p_binary_expression','c_parser.py',1700), + ('binary_expression -> binary_expression NE binary_expression','binary_expression',3,'p_binary_expression','c_parser.py',1701), + ('binary_expression -> binary_expression AND binary_expression','binary_expression',3,'p_binary_expression','c_parser.py',1702), + ('binary_expression -> binary_expression OR binary_expression','binary_expression',3,'p_binary_expression','c_parser.py',1703), + ('binary_expression -> binary_expression XOR binary_expression','binary_expression',3,'p_binary_expression','c_parser.py',1704), + ('binary_expression -> binary_expression LAND binary_expression','binary_expression',3,'p_binary_expression','c_parser.py',1705), + ('binary_expression -> binary_expression LOR binary_expression','binary_expression',3,'p_binary_expression','c_parser.py',1706), + ('cast_expression -> unary_expression','cast_expression',1,'p_cast_expression_1','c_parser.py',1714), + ('cast_expression -> LPAREN type_name RPAREN cast_expression','cast_expression',4,'p_cast_expression_2','c_parser.py',1718), + ('unary_expression -> postfix_expression','unary_expression',1,'p_unary_expression_1','c_parser.py',1722), + ('unary_expression -> PLUSPLUS unary_expression','unary_expression',2,'p_unary_expression_2','c_parser.py',1726), + ('unary_expression -> MINUSMINUS unary_expression','unary_expression',2,'p_unary_expression_2','c_parser.py',1727), + ('unary_expression -> unary_operator cast_expression','unary_expression',2,'p_unary_expression_2','c_parser.py',1728), + ('unary_expression -> SIZEOF unary_expression','unary_expression',2,'p_unary_expression_3','c_parser.py',1733), + ('unary_expression -> SIZEOF LPAREN type_name RPAREN','unary_expression',4,'p_unary_expression_3','c_parser.py',1734), + ('unary_expression -> _ALIGNOF LPAREN type_name RPAREN','unary_expression',4,'p_unary_expression_3','c_parser.py',1735), + ('unary_operator -> AND','unary_operator',1,'p_unary_operator','c_parser.py',1743), + ('unary_operator -> TIMES','unary_operator',1,'p_unary_operator','c_parser.py',1744), + ('unary_operator -> PLUS','unary_operator',1,'p_unary_operator','c_parser.py',1745), + ('unary_operator -> MINUS','unary_operator',1,'p_unary_operator','c_parser.py',1746), + ('unary_operator -> NOT','unary_operator',1,'p_unary_operator','c_parser.py',1747), + ('unary_operator -> LNOT','unary_operator',1,'p_unary_operator','c_parser.py',1748), + ('postfix_expression -> primary_expression','postfix_expression',1,'p_postfix_expression_1','c_parser.py',1753), + ('postfix_expression -> postfix_expression LBRACKET expression RBRACKET','postfix_expression',4,'p_postfix_expression_2','c_parser.py',1757), + ('postfix_expression -> postfix_expression LPAREN argument_expression_list RPAREN','postfix_expression',4,'p_postfix_expression_3','c_parser.py',1761), + ('postfix_expression -> postfix_expression LPAREN RPAREN','postfix_expression',3,'p_postfix_expression_3','c_parser.py',1762), + ('postfix_expression -> postfix_expression PERIOD ID','postfix_expression',3,'p_postfix_expression_4','c_parser.py',1767), + ('postfix_expression -> postfix_expression PERIOD TYPEID','postfix_expression',3,'p_postfix_expression_4','c_parser.py',1768), + ('postfix_expression -> postfix_expression ARROW ID','postfix_expression',3,'p_postfix_expression_4','c_parser.py',1769), + ('postfix_expression -> postfix_expression ARROW TYPEID','postfix_expression',3,'p_postfix_expression_4','c_parser.py',1770), + ('postfix_expression -> postfix_expression PLUSPLUS','postfix_expression',2,'p_postfix_expression_5','c_parser.py',1776), + ('postfix_expression -> postfix_expression MINUSMINUS','postfix_expression',2,'p_postfix_expression_5','c_parser.py',1777), + ('postfix_expression -> LPAREN type_name RPAREN brace_open initializer_list brace_close','postfix_expression',6,'p_postfix_expression_6','c_parser.py',1782), + ('postfix_expression -> LPAREN type_name RPAREN brace_open initializer_list COMMA brace_close','postfix_expression',7,'p_postfix_expression_6','c_parser.py',1783), + ('primary_expression -> identifier','primary_expression',1,'p_primary_expression_1','c_parser.py',1788), + ('primary_expression -> constant','primary_expression',1,'p_primary_expression_2','c_parser.py',1792), + ('primary_expression -> unified_string_literal','primary_expression',1,'p_primary_expression_3','c_parser.py',1796), + ('primary_expression -> unified_wstring_literal','primary_expression',1,'p_primary_expression_3','c_parser.py',1797), + ('primary_expression -> LPAREN expression RPAREN','primary_expression',3,'p_primary_expression_4','c_parser.py',1802), + ('primary_expression -> OFFSETOF LPAREN type_name COMMA offsetof_member_designator RPAREN','primary_expression',6,'p_primary_expression_5','c_parser.py',1806), + ('offsetof_member_designator -> identifier','offsetof_member_designator',1,'p_offsetof_member_designator','c_parser.py',1814), + ('offsetof_member_designator -> offsetof_member_designator PERIOD identifier','offsetof_member_designator',3,'p_offsetof_member_designator','c_parser.py',1815), + ('offsetof_member_designator -> offsetof_member_designator LBRACKET expression RBRACKET','offsetof_member_designator',4,'p_offsetof_member_designator','c_parser.py',1816), + ('argument_expression_list -> assignment_expression','argument_expression_list',1,'p_argument_expression_list','c_parser.py',1828), + ('argument_expression_list -> argument_expression_list COMMA assignment_expression','argument_expression_list',3,'p_argument_expression_list','c_parser.py',1829), + ('identifier -> ID','identifier',1,'p_identifier','c_parser.py',1838), + ('constant -> INT_CONST_DEC','constant',1,'p_constant_1','c_parser.py',1842), + ('constant -> INT_CONST_OCT','constant',1,'p_constant_1','c_parser.py',1843), + ('constant -> INT_CONST_HEX','constant',1,'p_constant_1','c_parser.py',1844), + ('constant -> INT_CONST_BIN','constant',1,'p_constant_1','c_parser.py',1845), + ('constant -> INT_CONST_CHAR','constant',1,'p_constant_1','c_parser.py',1846), + ('constant -> FLOAT_CONST','constant',1,'p_constant_2','c_parser.py',1865), + ('constant -> HEX_FLOAT_CONST','constant',1,'p_constant_2','c_parser.py',1866), + ('constant -> CHAR_CONST','constant',1,'p_constant_3','c_parser.py',1882), + ('constant -> WCHAR_CONST','constant',1,'p_constant_3','c_parser.py',1883), + ('constant -> U8CHAR_CONST','constant',1,'p_constant_3','c_parser.py',1884), + ('constant -> U16CHAR_CONST','constant',1,'p_constant_3','c_parser.py',1885), + ('constant -> U32CHAR_CONST','constant',1,'p_constant_3','c_parser.py',1886), + ('unified_string_literal -> STRING_LITERAL','unified_string_literal',1,'p_unified_string_literal','c_parser.py',1897), + ('unified_string_literal -> unified_string_literal STRING_LITERAL','unified_string_literal',2,'p_unified_string_literal','c_parser.py',1898), + ('unified_wstring_literal -> WSTRING_LITERAL','unified_wstring_literal',1,'p_unified_wstring_literal','c_parser.py',1908), + ('unified_wstring_literal -> U8STRING_LITERAL','unified_wstring_literal',1,'p_unified_wstring_literal','c_parser.py',1909), + ('unified_wstring_literal -> U16STRING_LITERAL','unified_wstring_literal',1,'p_unified_wstring_literal','c_parser.py',1910), + ('unified_wstring_literal -> U32STRING_LITERAL','unified_wstring_literal',1,'p_unified_wstring_literal','c_parser.py',1911), + ('unified_wstring_literal -> unified_wstring_literal WSTRING_LITERAL','unified_wstring_literal',2,'p_unified_wstring_literal','c_parser.py',1912), + ('unified_wstring_literal -> unified_wstring_literal U8STRING_LITERAL','unified_wstring_literal',2,'p_unified_wstring_literal','c_parser.py',1913), + ('unified_wstring_literal -> unified_wstring_literal U16STRING_LITERAL','unified_wstring_literal',2,'p_unified_wstring_literal','c_parser.py',1914), + ('unified_wstring_literal -> unified_wstring_literal U32STRING_LITERAL','unified_wstring_literal',2,'p_unified_wstring_literal','c_parser.py',1915), + ('brace_open -> LBRACE','brace_open',1,'p_brace_open','c_parser.py',1925), + ('brace_close -> RBRACE','brace_close',1,'p_brace_close','c_parser.py',1931), + ('empty -> ','empty',0,'p_empty','c_parser.py',1937), +] diff --git a/gestao_raul/Lib/site-packages/rust/Cargo.toml b/gestao_raul/Lib/site-packages/rust/Cargo.toml new file mode 100644 index 0000000..9eb165a --- /dev/null +++ b/gestao_raul/Lib/site-packages/rust/Cargo.toml @@ -0,0 +1,35 @@ +[package] +name = "cryptography-rust" +version.workspace = true +authors.workspace = true +edition.workspace = true +publish.workspace = true +rust-version.workspace = true + +[dependencies] +once_cell = "1" +cfg-if = "1" +pyo3.workspace = true +asn1.workspace = true +cryptography-cffi = { path = "cryptography-cffi" } +cryptography-keepalive = { path = "cryptography-keepalive" } +cryptography-key-parsing = { path = "cryptography-key-parsing" } +cryptography-x509 = { path = "cryptography-x509" } +cryptography-x509-verification = { path = "cryptography-x509-verification" } +cryptography-openssl = { path = "cryptography-openssl" } +pem = { version = "3", default-features = false } +openssl = "0.10.68" +openssl-sys = "0.9.104" +foreign-types-shared = "0.1" +self_cell = "1" + +[features] +extension-module = ["pyo3/extension-module"] +default = ["extension-module"] + +[lib] +name = "cryptography_rust" +crate-type = ["cdylib"] + +[lints.rust] +unexpected_cfgs = { level = "warn", check-cfg = ['cfg(CRYPTOGRAPHY_OPENSSL_300_OR_GREATER)', 'cfg(CRYPTOGRAPHY_OPENSSL_309_OR_GREATER)', 'cfg(CRYPTOGRAPHY_OPENSSL_320_OR_GREATER)', 'cfg(CRYPTOGRAPHY_IS_LIBRESSL)', 'cfg(CRYPTOGRAPHY_IS_BORINGSSL)', 'cfg(CRYPTOGRAPHY_OSSLCONF, values("OPENSSL_NO_IDEA", "OPENSSL_NO_CAST", "OPENSSL_NO_BF", "OPENSSL_NO_CAMELLIA", "OPENSSL_NO_SEED", "OPENSSL_NO_SM4"))'] } diff --git a/gestao_raul/Lib/site-packages/rust/cryptography-cffi/Cargo.toml b/gestao_raul/Lib/site-packages/rust/cryptography-cffi/Cargo.toml new file mode 100644 index 0000000..9408de8 --- /dev/null +++ b/gestao_raul/Lib/site-packages/rust/cryptography-cffi/Cargo.toml @@ -0,0 +1,17 @@ +[package] +name = "cryptography-cffi" +version.workspace = true +authors.workspace = true +edition.workspace = true +publish.workspace = true +rust-version.workspace = true + +[dependencies] +pyo3.workspace = true +openssl-sys = "0.9.104" + +[build-dependencies] +cc = "1.2.1" + +[lints.rust] +unexpected_cfgs = { level = "warn", check-cfg = ['cfg(python_implementation, values("CPython", "PyPy"))'] } diff --git a/gestao_raul/Lib/site-packages/rust/cryptography-keepalive/Cargo.toml b/gestao_raul/Lib/site-packages/rust/cryptography-keepalive/Cargo.toml new file mode 100644 index 0000000..baf8d93 --- /dev/null +++ b/gestao_raul/Lib/site-packages/rust/cryptography-keepalive/Cargo.toml @@ -0,0 +1,10 @@ +[package] +name = "cryptography-keepalive" +version.workspace = true +authors.workspace = true +edition.workspace = true +publish.workspace = true +rust-version.workspace = true + +[dependencies] +pyo3.workspace = true diff --git a/gestao_raul/Lib/site-packages/rust/cryptography-key-parsing/Cargo.toml b/gestao_raul/Lib/site-packages/rust/cryptography-key-parsing/Cargo.toml new file mode 100644 index 0000000..9b96b73 --- /dev/null +++ b/gestao_raul/Lib/site-packages/rust/cryptography-key-parsing/Cargo.toml @@ -0,0 +1,17 @@ +[package] +name = "cryptography-key-parsing" +version.workspace = true +authors.workspace = true +edition.workspace = true +publish.workspace = true +rust-version.workspace = true + +[dependencies] +asn1.workspace = true +cfg-if = "1" +openssl = "0.10.68" +openssl-sys = "0.9.104" +cryptography-x509 = { path = "../cryptography-x509" } + +[lints.rust] +unexpected_cfgs = { level = "warn", check-cfg = ['cfg(CRYPTOGRAPHY_IS_LIBRESSL)', 'cfg(CRYPTOGRAPHY_IS_BORINGSSL)'] } diff --git a/gestao_raul/Lib/site-packages/rust/cryptography-openssl/Cargo.toml b/gestao_raul/Lib/site-packages/rust/cryptography-openssl/Cargo.toml new file mode 100644 index 0000000..3d4c17e --- /dev/null +++ b/gestao_raul/Lib/site-packages/rust/cryptography-openssl/Cargo.toml @@ -0,0 +1,17 @@ +[package] +name = "cryptography-openssl" +version.workspace = true +authors.workspace = true +edition.workspace = true +publish.workspace = true +rust-version.workspace = true + +[dependencies] +cfg-if = "1" +openssl = "0.10.68" +ffi = { package = "openssl-sys", version = "0.9.101" } +foreign-types = "0.3" +foreign-types-shared = "0.1" + +[lints.rust] +unexpected_cfgs = { level = "warn", check-cfg = ['cfg(CRYPTOGRAPHY_OPENSSL_300_OR_GREATER)', 'cfg(CRYPTOGRAPHY_OPENSSL_320_OR_GREATER)', 'cfg(CRYPTOGRAPHY_IS_LIBRESSL)', 'cfg(CRYPTOGRAPHY_IS_BORINGSSL)'] } diff --git a/gestao_raul/Lib/site-packages/rust/cryptography-x509-verification/Cargo.toml b/gestao_raul/Lib/site-packages/rust/cryptography-x509-verification/Cargo.toml new file mode 100644 index 0000000..2cc2ff4 --- /dev/null +++ b/gestao_raul/Lib/site-packages/rust/cryptography-x509-verification/Cargo.toml @@ -0,0 +1,16 @@ +[package] +name = "cryptography-x509-verification" +version.workspace = true +authors.workspace = true +edition.workspace = true +publish.workspace = true +rust-version.workspace = true + +[dependencies] +asn1.workspace = true +cryptography-x509 = { path = "../cryptography-x509" } +cryptography-key-parsing = { path = "../cryptography-key-parsing" } +once_cell = "1" + +[dev-dependencies] +pem = { version = "3", default-features = false } diff --git a/gestao_raul/Lib/site-packages/rust/cryptography-x509/Cargo.toml b/gestao_raul/Lib/site-packages/rust/cryptography-x509/Cargo.toml new file mode 100644 index 0000000..03f2c26 --- /dev/null +++ b/gestao_raul/Lib/site-packages/rust/cryptography-x509/Cargo.toml @@ -0,0 +1,11 @@ +[package] +name = "cryptography-x509" +version = "0.1.0" +authors = ["The cryptography developers "] +edition = "2021" +publish = false +# This specifies the MSRV +rust-version = "1.65.0" + +[dependencies] +asn1.workspace = true diff --git a/gestao_raul/Lib/site-packages/werkzeug-3.1.3.dist-info/INSTALLER b/gestao_raul/Lib/site-packages/werkzeug-3.1.3.dist-info/INSTALLER new file mode 100644 index 0000000..a1b589e --- /dev/null +++ b/gestao_raul/Lib/site-packages/werkzeug-3.1.3.dist-info/INSTALLER @@ -0,0 +1 @@ +pip diff --git a/gestao_raul/Lib/site-packages/werkzeug-3.1.3.dist-info/LICENSE.txt b/gestao_raul/Lib/site-packages/werkzeug-3.1.3.dist-info/LICENSE.txt new file mode 100644 index 0000000..c37cae4 --- /dev/null +++ b/gestao_raul/Lib/site-packages/werkzeug-3.1.3.dist-info/LICENSE.txt @@ -0,0 +1,28 @@ +Copyright 2007 Pallets + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + +1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + +2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + +3. Neither the name of the copyright holder nor the names of its + contributors may be used to endorse or promote products derived from + this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A +PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED +TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/gestao_raul/Lib/site-packages/werkzeug-3.1.3.dist-info/METADATA b/gestao_raul/Lib/site-packages/werkzeug-3.1.3.dist-info/METADATA new file mode 100644 index 0000000..e495b3d --- /dev/null +++ b/gestao_raul/Lib/site-packages/werkzeug-3.1.3.dist-info/METADATA @@ -0,0 +1,99 @@ +Metadata-Version: 2.3 +Name: Werkzeug +Version: 3.1.3 +Summary: The comprehensive WSGI web application library. +Maintainer-email: Pallets +Requires-Python: >=3.9 +Description-Content-Type: text/markdown +Classifier: Development Status :: 5 - Production/Stable +Classifier: Environment :: Web Environment +Classifier: Intended Audience :: Developers +Classifier: License :: OSI Approved :: BSD License +Classifier: Operating System :: OS Independent +Classifier: Programming Language :: Python +Classifier: Topic :: Internet :: WWW/HTTP :: Dynamic Content +Classifier: Topic :: Internet :: WWW/HTTP :: WSGI +Classifier: Topic :: Internet :: WWW/HTTP :: WSGI :: Application +Classifier: Topic :: Internet :: WWW/HTTP :: WSGI :: Middleware +Classifier: Topic :: Software Development :: Libraries :: Application Frameworks +Classifier: Typing :: Typed +Requires-Dist: MarkupSafe>=2.1.1 +Requires-Dist: watchdog>=2.3 ; extra == "watchdog" +Project-URL: Changes, https://werkzeug.palletsprojects.com/changes/ +Project-URL: Chat, https://discord.gg/pallets +Project-URL: Documentation, https://werkzeug.palletsprojects.com/ +Project-URL: Donate, https://palletsprojects.com/donate +Project-URL: Issue Tracker, https://github.com/pallets/werkzeug/issues/ +Project-URL: Source Code, https://github.com/pallets/werkzeug/ +Provides-Extra: watchdog + +# Werkzeug + +*werkzeug* German noun: "tool". Etymology: *werk* ("work"), *zeug* ("stuff") + +Werkzeug is a comprehensive [WSGI][] web application library. It began as +a simple collection of various utilities for WSGI applications and has +become one of the most advanced WSGI utility libraries. + +It includes: + +- An interactive debugger that allows inspecting stack traces and + source code in the browser with an interactive interpreter for any + frame in the stack. +- A full-featured request object with objects to interact with + headers, query args, form data, files, and cookies. +- A response object that can wrap other WSGI applications and handle + streaming data. +- A routing system for matching URLs to endpoints and generating URLs + for endpoints, with an extensible system for capturing variables + from URLs. +- HTTP utilities to handle entity tags, cache control, dates, user + agents, cookies, files, and more. +- A threaded WSGI server for use while developing applications + locally. +- A test client for simulating HTTP requests during testing without + requiring running a server. + +Werkzeug doesn't enforce any dependencies. It is up to the developer to +choose a template engine, database adapter, and even how to handle +requests. It can be used to build all sorts of end user applications +such as blogs, wikis, or bulletin boards. + +[Flask][] wraps Werkzeug, using it to handle the details of WSGI while +providing more structure and patterns for defining powerful +applications. + +[WSGI]: https://wsgi.readthedocs.io/en/latest/ +[Flask]: https://www.palletsprojects.com/p/flask/ + + +## A Simple Example + +```python +# save this as app.py +from werkzeug.wrappers import Request, Response + +@Request.application +def application(request: Request) -> Response: + return Response("Hello, World!") + +if __name__ == "__main__": + from werkzeug.serving import run_simple + run_simple("127.0.0.1", 5000, application) +``` + +``` +$ python -m app + * Running on http://127.0.0.1:5000/ (Press CTRL+C to quit) +``` + + +## Donate + +The Pallets organization develops and supports Werkzeug and other +popular packages. In order to grow the community of contributors and +users, and allow the maintainers to devote more time to the projects, +[please donate today][]. + +[please donate today]: https://palletsprojects.com/donate + diff --git a/gestao_raul/Lib/site-packages/werkzeug-3.1.3.dist-info/RECORD b/gestao_raul/Lib/site-packages/werkzeug-3.1.3.dist-info/RECORD new file mode 100644 index 0000000..77e4857 --- /dev/null +++ b/gestao_raul/Lib/site-packages/werkzeug-3.1.3.dist-info/RECORD @@ -0,0 +1,117 @@ +werkzeug-3.1.3.dist-info/INSTALLER,sha256=zuuue4knoyJ-UwPPXg8fezS7VCrXJQrAP7zeNuwvFQg,4 +werkzeug-3.1.3.dist-info/LICENSE.txt,sha256=O0nc7kEF6ze6wQ-vG-JgQI_oXSUrjp3y4JefweCUQ3s,1475 +werkzeug-3.1.3.dist-info/METADATA,sha256=9d8uO6J-ck8mHyFjxFUs5nCVy5iN3XdTYcJfz2QBr0I,3682 +werkzeug-3.1.3.dist-info/RECORD,, +werkzeug-3.1.3.dist-info/REQUESTED,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +werkzeug-3.1.3.dist-info/WHEEL,sha256=CpUCUxeHQbRN5UGRQHYRJorO5Af-Qy_fHMctcQ8DSGI,82 +werkzeug/__init__.py,sha256=CejNWfCZKDaJ_FmshZFw8dFgjNAlu6q15ec7DwWJlM8,165 +werkzeug/__pycache__/__init__.cpython-310.pyc,, +werkzeug/__pycache__/_internal.cpython-310.pyc,, +werkzeug/__pycache__/_reloader.cpython-310.pyc,, +werkzeug/__pycache__/exceptions.cpython-310.pyc,, +werkzeug/__pycache__/formparser.cpython-310.pyc,, +werkzeug/__pycache__/http.cpython-310.pyc,, +werkzeug/__pycache__/local.cpython-310.pyc,, +werkzeug/__pycache__/security.cpython-310.pyc,, +werkzeug/__pycache__/serving.cpython-310.pyc,, +werkzeug/__pycache__/test.cpython-310.pyc,, +werkzeug/__pycache__/testapp.cpython-310.pyc,, +werkzeug/__pycache__/urls.cpython-310.pyc,, +werkzeug/__pycache__/user_agent.cpython-310.pyc,, +werkzeug/__pycache__/utils.cpython-310.pyc,, +werkzeug/__pycache__/wsgi.cpython-310.pyc,, +werkzeug/_internal.py,sha256=su1olkbHMkzt0VKcEkPLCha8sdVzXNBuqW6YVpp8GHg,5545 +werkzeug/_reloader.py,sha256=QuMO-UwuD-cHsUpwSEUr7iYNbv_ziHFhgNDAiv25J80,15429 +werkzeug/datastructures/__init__.py,sha256=0Vt8Lt8KUYSoAe8ADt1jIE-w3Ib9tkrk0HEhBOktqUw,2615 +werkzeug/datastructures/__pycache__/__init__.cpython-310.pyc,, +werkzeug/datastructures/__pycache__/accept.cpython-310.pyc,, +werkzeug/datastructures/__pycache__/auth.cpython-310.pyc,, +werkzeug/datastructures/__pycache__/cache_control.cpython-310.pyc,, +werkzeug/datastructures/__pycache__/csp.cpython-310.pyc,, +werkzeug/datastructures/__pycache__/etag.cpython-310.pyc,, +werkzeug/datastructures/__pycache__/file_storage.cpython-310.pyc,, +werkzeug/datastructures/__pycache__/headers.cpython-310.pyc,, +werkzeug/datastructures/__pycache__/mixins.cpython-310.pyc,, +werkzeug/datastructures/__pycache__/range.cpython-310.pyc,, +werkzeug/datastructures/__pycache__/structures.cpython-310.pyc,, +werkzeug/datastructures/accept.py,sha256=xoDD4qwZeTjew_1Ze0gyyKWkbhtowwR5tHTWnobPeGI,12177 +werkzeug/datastructures/auth.py,sha256=Zcqdr8-uUpq6_czg1672S2XthG0UakhUHOuummzqz64,10055 +werkzeug/datastructures/cache_control.py,sha256=hh-0nlj8CWDTrWcDvprMkmHZ8HW_Afo4853vl0LuFU4,9697 +werkzeug/datastructures/csp.py,sha256=2UDhFNqBzjhpA45m11HDg6LnhBSSWWdkfFzPq7ikfho,3816 +werkzeug/datastructures/etag.py,sha256=N2dFqhFsLR0k5hgjol3QTGpcSltJhpgLWeyz6Va80G8,3278 +werkzeug/datastructures/file_storage.py,sha256=2P-4PEkR_kY37g3hc1S30YH_15VrwRnQ13sBFreZyc4,6701 +werkzeug/datastructures/headers.py,sha256=_VjcQCrLxjNKxPL8xSoFnEJnZ5tRc1zdL9spQf4c758,21554 +werkzeug/datastructures/mixins.py,sha256=sYJeA8kZuAOvzlfrRWRN2dyuNrBev4yFxWH8coZyrec,9027 +werkzeug/datastructures/range.py,sha256=5c1Mo5jBkkVhQyLoD9lPdjETKo0iw9g-lFYOqF1ZQvY,7020 +werkzeug/datastructures/structures.py,sha256=IG5WpAj5RZSUfyxYXXHvIgtlOx5PQeZ9YmQO87FJr08,41359 +werkzeug/debug/__init__.py,sha256=80vaavVZYwV21ItrsOLQudEUi2uKDlxcjm5cCmeU1u4,20016 +werkzeug/debug/__pycache__/__init__.cpython-310.pyc,, +werkzeug/debug/__pycache__/console.cpython-310.pyc,, +werkzeug/debug/__pycache__/repr.cpython-310.pyc,, +werkzeug/debug/__pycache__/tbtools.cpython-310.pyc,, +werkzeug/debug/console.py,sha256=t4hZ0Qg1p6Uu2MWimqoMDi7S3WYZvLMjnc8v_dPaxAo,6089 +werkzeug/debug/repr.py,sha256=iHMYny8whiiMDasvUqj0nm4-1VHVvwe697KleiZVK1s,9303 +werkzeug/debug/shared/ICON_LICENSE.md,sha256=DhA6Y1gUl5Jwfg0NFN9Rj4VWITt8tUx0IvdGf0ux9-s,222 +werkzeug/debug/shared/console.png,sha256=bxax6RXXlvOij_KeqvSNX0ojJf83YbnZ7my-3Gx9w2A,507 +werkzeug/debug/shared/debugger.js,sha256=SRL9YZ9FTVngaYD-INQNincEVdZ-kBHa_-VJx0U7-rg,10068 +werkzeug/debug/shared/less.png,sha256=-4-kNRaXJSONVLahrQKUxMwXGm9R4OnZ9SxDGpHlIR4,191 +werkzeug/debug/shared/more.png,sha256=GngN7CioHQoV58rH6ojnkYi8c_qED2Aka5FO5UXrReY,200 +werkzeug/debug/shared/style.css,sha256=-xSxzUEZGw_IqlDR5iZxitNl8LQUjBM-_Y4UAvXVH8g,6078 +werkzeug/debug/tbtools.py,sha256=4JDhZT_2gm9sMgfiMieEyxRsV196i3kp_0b3MOjy1KY,13560 +werkzeug/exceptions.py,sha256=cpwKKTfe1_yFrBpRHjp2bqwDhtUdHnGoDKcWOXR_SIE,26455 +werkzeug/formparser.py,sha256=v0-F9OcmNHuPLqXePW_b0asWzpH-Z_ZlGj8ao0CMmuo,15847 +werkzeug/http.py,sha256=PRpjIrbvIIiAMlmxwVIo9MMxaNX8vSOSn58rwAThEWM,44880 +werkzeug/local.py,sha256=KUFuAm8BAayQouzVg0MGqW_hiwY8Z_lY5l7d1Scvsx8,22492 +werkzeug/middleware/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +werkzeug/middleware/__pycache__/__init__.cpython-310.pyc,, +werkzeug/middleware/__pycache__/dispatcher.cpython-310.pyc,, +werkzeug/middleware/__pycache__/http_proxy.cpython-310.pyc,, +werkzeug/middleware/__pycache__/lint.cpython-310.pyc,, +werkzeug/middleware/__pycache__/profiler.cpython-310.pyc,, +werkzeug/middleware/__pycache__/proxy_fix.cpython-310.pyc,, +werkzeug/middleware/__pycache__/shared_data.cpython-310.pyc,, +werkzeug/middleware/dispatcher.py,sha256=zWN5_lqJr_sc9UDv-PPoSlDHN_zR33z6B74F_4Cxpo8,2602 +werkzeug/middleware/http_proxy.py,sha256=sdk-V6GoZ6aMny-D0QNKNf5MWD2OTO3AGbBg6upp4Hc,7834 +werkzeug/middleware/lint.py,sha256=jVdyljRxpkz18MiMR8N7YdiElna8DJVvO4CCjZsnSQI,14476 +werkzeug/middleware/profiler.py,sha256=1ZAHlDeYNdhgp8THOXkV5lgmcLl307phAr2Ufy30-lY,5562 +werkzeug/middleware/proxy_fix.py,sha256=n-HW-MRWJquCIhmqiZKoGdbbEeHuWJqPRHhFpuj4pzY,6755 +werkzeug/middleware/shared_data.py,sha256=gsjmgeEFLzDdKsgd19pMhI7BfU_TbL6AyEyZPG2ykfQ,9542 +werkzeug/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +werkzeug/routing/__init__.py,sha256=d8TRxsk24IWu2BdoOYUfL--deolHwiGVCBJqLoEe3YM,4820 +werkzeug/routing/__pycache__/__init__.cpython-310.pyc,, +werkzeug/routing/__pycache__/converters.cpython-310.pyc,, +werkzeug/routing/__pycache__/exceptions.cpython-310.pyc,, +werkzeug/routing/__pycache__/map.cpython-310.pyc,, +werkzeug/routing/__pycache__/matcher.cpython-310.pyc,, +werkzeug/routing/__pycache__/rules.cpython-310.pyc,, +werkzeug/routing/converters.py,sha256=iqpee_mAjr1oGbq0etujYF9PiDv5U7DgNkARHXnMId0,7297 +werkzeug/routing/exceptions.py,sha256=wNBiUmUk4OtFOpbdDSr7KKKUjH7yn84JqwBicUup8p8,4846 +werkzeug/routing/map.py,sha256=mEXlHOyinkg1Jtx5L0UDYsvoX4eVLiEuEVQzD5LVAz8,36515 +werkzeug/routing/matcher.py,sha256=nfBbl37eGAkZ1dQlumshFcPuyfggmFjPuSSQOE6GuYs,7849 +werkzeug/routing/rules.py,sha256=eGi6PD-COG2As_HY0nAw-nxYxLTH0FsuqRaSy8d9FjQ,32510 +werkzeug/sansio/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +werkzeug/sansio/__pycache__/__init__.cpython-310.pyc,, +werkzeug/sansio/__pycache__/http.cpython-310.pyc,, +werkzeug/sansio/__pycache__/multipart.cpython-310.pyc,, +werkzeug/sansio/__pycache__/request.cpython-310.pyc,, +werkzeug/sansio/__pycache__/response.cpython-310.pyc,, +werkzeug/sansio/__pycache__/utils.cpython-310.pyc,, +werkzeug/sansio/http.py,sha256=OYlTJn8fJhHA0CDOOmerekpsyGyIQVm9LvVRO3lH0TA,5337 +werkzeug/sansio/multipart.py,sha256=fMGgY9CvMDRgNgKozz2cBIp0iN2EME2IIOBh306_Ecs,11637 +werkzeug/sansio/request.py,sha256=ijwestWQS-dpb61uKl0NRntzNtH6C72OXCNomx-XKxc,19832 +werkzeug/sansio/response.py,sha256=8pE2fiHDroOOCtBWJWig4Lnv3VztD5szkSzeQELIlcQ,27965 +werkzeug/sansio/utils.py,sha256=3-Gr0Qsa_Rx48mUm7zdFJZNNKMzHfPAknywujHnkhPs,5256 +werkzeug/security.py,sha256=WctngEBHBo8e-gXf6lMURhs1t0tmEjJjBYZi2MXoWss,5581 +werkzeug/serving.py,sha256=k30NzIKq6mkNONk7B5rTyEuLrLZo__Kz2_XGXLjVUic,39857 +werkzeug/test.py,sha256=2G08IExd_x3T1P69mz57LYYQrqk31nxmkgHY5M5HYZU,52795 +werkzeug/testapp.py,sha256=5_IS5Dh_WfWfNcTLmbydj01lomgcKA_4l9PPCNZnmdI,6332 +werkzeug/urls.py,sha256=XyNKwHvK5IC37-wuIDMYWkiCJ3yLTLGv7wn2GF3ndqI,6430 +werkzeug/user_agent.py,sha256=lSlLYKCcbzCUSkbdAoO8zPk2UR-8Mdn6iu_iA2kYPBA,1416 +werkzeug/utils.py,sha256=1StUqI45bcxJx4sj81qVPQH5X8VuWgtICViJI_BKg-c,24725 +werkzeug/wrappers/__init__.py,sha256=b78jCM8x96kJUGLZ5FYFR3zlK-3pnFAmP9RJIGU0ses,138 +werkzeug/wrappers/__pycache__/__init__.cpython-310.pyc,, +werkzeug/wrappers/__pycache__/request.cpython-310.pyc,, +werkzeug/wrappers/__pycache__/response.cpython-310.pyc,, +werkzeug/wrappers/request.py,sha256=2eJKd8yBU4zc0FIm2T6SROeuZERkP9m_Yx1Z7MeMs-Y,24737 +werkzeug/wrappers/response.py,sha256=u6zg7VpNYrCeEjpIgf8VqgfaSi9yR_9wi9ly2uudglg,32459 +werkzeug/wsgi.py,sha256=P7jB0VpG6X6miies4uk7Zgm7NVm4Yz8Ra6Inr5q_FMs,20894 diff --git a/gestao_raul/Lib/site-packages/werkzeug-3.1.3.dist-info/REQUESTED b/gestao_raul/Lib/site-packages/werkzeug-3.1.3.dist-info/REQUESTED new file mode 100644 index 0000000..e69de29 diff --git a/gestao_raul/Lib/site-packages/werkzeug-3.1.3.dist-info/WHEEL b/gestao_raul/Lib/site-packages/werkzeug-3.1.3.dist-info/WHEEL new file mode 100644 index 0000000..e3c6fee --- /dev/null +++ b/gestao_raul/Lib/site-packages/werkzeug-3.1.3.dist-info/WHEEL @@ -0,0 +1,4 @@ +Wheel-Version: 1.0 +Generator: flit 3.10.1 +Root-Is-Purelib: true +Tag: py3-none-any diff --git a/gestao_raul/Lib/site-packages/werkzeug/__init__.py b/gestao_raul/Lib/site-packages/werkzeug/__init__.py new file mode 100644 index 0000000..0b248fd --- /dev/null +++ b/gestao_raul/Lib/site-packages/werkzeug/__init__.py @@ -0,0 +1,4 @@ +from .serving import run_simple as run_simple +from .test import Client as Client +from .wrappers import Request as Request +from .wrappers import Response as Response diff --git a/gestao_raul/Lib/site-packages/werkzeug/__pycache__/__init__.cpython-310.pyc b/gestao_raul/Lib/site-packages/werkzeug/__pycache__/__init__.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..e82d093dd8dbbc738264aa2af45e59b993d65b88 GIT binary patch literal 322 zcmYk1%}T^D6or%iGjzb$=tA9y3lR~kJ5j8-34u_jml7svV$wM1`?wI_s9RUQf-7%k z<%OJlhveLwnDu%^uukv4#t+=TqxoM6noC^%1Z5xtRYX%pY2-vDI%VmeQ>%xQKu86-rHNTGIpi2OQ5*s{jB1 literal 0 HcmV?d00001 diff --git a/gestao_raul/Lib/site-packages/werkzeug/__pycache__/_internal.cpython-310.pyc b/gestao_raul/Lib/site-packages/werkzeug/__pycache__/_internal.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..f80b13fb84c1eb400990bd30cb30cd7d72c5625a GIT binary patch literal 7052 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 Qg-mV;I#Z^wZ)C^+0ksMQ9RL6T literal 0 HcmV?d00001 diff --git a/gestao_raul/Lib/site-packages/werkzeug/__pycache__/formparser.cpython-310.pyc b/gestao_raul/Lib/site-packages/werkzeug/__pycache__/formparser.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..a2622ceb65230b34135dacce1379149fc53d423b GIT binary patch literal 12812 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 literal 0 HcmV?d00001 diff --git a/gestao_raul/Lib/site-packages/werkzeug/__pycache__/local.cpython-310.pyc b/gestao_raul/Lib/site-packages/werkzeug/__pycache__/local.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..c5ef75a3194d0c63b8db5212c7aa684552c2a43f GIT binary patch literal 21039 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�DnL1+<3 zEP97AzKsC{8zGBp7=vJeCGd#Rm&iP0d~2X*fWfk!kxl7_MS-V^_V|A^;qmhz8JnAt z0CR$nJoM@Vg939Mn2;_Q>tcw0FGe~XC?TFWm0v(H`z4IA27pNWee-yST1-1=x!M2~ ztmkrAm<{h$A#?)h#4<57)3j|wzn>e00Ukp(4C}mBq4}Ueyo3Y8pc<32NaXkt;+SaT zsFHBeO%P2F6y$gaF}ms@?Y1Qd!K=(uPDIO;^&2P%#{(4W$*|hXZMKeWGoTS@RJhOg z3Ymkx0HLCxvxt@rwBYx!)~MEJp@jrv;QFeeC>+y8gyUIff*OT{qxE5JoL>|?qGU8yhW*Be~fh8c|BKSnq z>CVp{aj@ec`U6QzGKWqEidK3ocnnk`a2AP6D?KMbX_mAy+BVBZqj$1ZRD@8-Mq9!z z1%YKOf_Ly%j9$fiiFfGO%El=CMN`1W&r`bQX}%kkrgfh-)!`#EHy2@nh_OpffgXczx%N;DhYUqj&_hGh^6mPTo4s z*XT1Zp7+*Crs$j~4q$q>aGm!a=hqrO5c>5lUQ!{Y-J(9t6w#7Ck&56RS^|Oy#H);o z%QG~v&m+P8ThRLUfrna+)o@j|Kby?0&(a%mje)pVx$hV^8)<~oTO@mByvX#xx3K{# z$)|F^N2hX&*@unmjdb64j4qvXK)=IW-vP5GrDco8s@%(&flLx{AlZ^CK9N7H(AaKb z$BjrtHjH6gm~3jshB0x0>9O91-nQ@0g1Y1%MTn85W;5+Ful46HyJli%Fs+$2*ROpn zv|#-ev4j#6>w$>G?c0!eJ5IBu?UkOL^hksq7o=pSS0&ehuy9|2h32Y06`2af7umFFh9zQ$!l=M z4kQKi3riLc!E`sl^dFIkEFQy5UWl2giG;dOPL@a^z|8$_sF^OL^vMz#>}TAq7#kpk zotAslTD4AgTHf#Ox$H4>-B+sz)Lz+R$^DAGxMSenKDA#BVc(_PbMG9$zDwL;9_)r3 zQKNF6MIYZlJrAkvxWoM3orCID?~denSl!O+VxM|M-Kk!Omh@wv$A`iFkJce`Q5W@ugcHVAOW}v7Mt7=rRAj=9NiaEu&Jcd9RawUh*2&tD?gBB^R zlb(^2aI3^j-XGJz2bvSgBO!Yl!HIL1BfK@p^~AhQNO}=eHsOV1UYnu~3bcEjO$%7^ zJ+PBU-|~&*c7$Yh@ zh+ovag|t`D8|ky%w87(^;xr6S=Q&c2$R$dd-(cih$;PNA)F};4jHVPho{qPxyKfsf@?x% z5r1=Sz*$G+9IkACb(7+Yl!krEGyOC-bDxq<@&0ML2OCY&`uG&h*NF>aCTjo9!H&3E zWp)eevr2CmK~Yq5i?3{GiMp{WIT*(~R5%)*#oWvR4hEE(9SxG6f+raKz`+WhF78pa z{^_<@q@k+ikOtR60R4oO7pB553Yj%~5cW0YDaJBG*_k;x1P>gA4*AFl3d_-Ob(n+O z5D!1>m@=melS_&DIZhj8(`*L*2rp+1f|ev73$Mpu0pa;+^+?E%#cI!DlMVVY#ae`tfK%QXrXI!(CvWoGIC zj-SPY4-z=~@Gz6nd;GC!;bka_2Eu?s#HN+yS`omqC`U&?htN&%5zr9`kMsOo*_gl+ zT4f^w-5PB*M`@1&vi7{pqT@(3R1SMBg^bmY(WS476Ww^Q7*9Wy z9jDRU8v9!{n-)RHwX-rM)CyuQ{CNoss?plPB`_asJV6d2{g_^?Jo=T6M(on0T1z-AFqF;TAB+L&xkPcqum_k>M$oew4Gw!Ovts zN7jYsE|hEK>7u!Vf+7)-bu(Obhw;5BQ-(NV4te%g3Oh!vW)4E zF@$rVH}tYho@CyRwL-A@?&OLC_gGzBeW#GMIu``>rEW_P@bdRfi4g^meV8Y7?4yQmc!kiEx)3gO% z2axAdAxJjmkk?2E#fVj#wgkN^O$ShbtNEE=%Zq1xij+XKfPG|SU4t{=?Ae;;ts-p$ z>*7JZSc&K!uA>={XBNk0A5Sg2-5FIhxJk+@-CYS@yIjmAmS}wrqhFk^PZMDXr9KB1 z=}KW(962iRMP8=)epxlW_lbr?nAe4K?C=I4@#E>vn2P8Ch%2>UkQwkhCR5whO7?Z@36{A)xDf{Z$F!>{52 zPg2lskEtm4se80|<6ev4T%BvbnY6R#`?`HHDnyg_RaR69B?+73p<}Y17 zBM$VIovcv=u0*TDu1mzm`BU70AYBKHHqUVz#<(=w3|dFN&-Ja6JqHj_5yu9)6AjW9#dB~Im=b)ML1pwCcndVPAC}|u(lJ(@$vt7pDVda zx$Z_Js1c_wT*4G|b6+^U%`GSoL@SP<|0JXB`}7WPqHG)t0hbPs0d`{+x~i{0IT%K? zHVx_`r?$|R%Wgz&@@}20leVMY6xvV0+IWWBr_X@*bMqVEhp#6PIa)QrP68+F|Bhv2O-&&U1Z2B5%`jQ@KXp4AJtFt z%F5$N$9}@lBrp(7P4C8uUWB3vLp&D{cx*la?`q==&iDc>CE9mT3ZN5Ph_GWQ!Vn`; zR3ryM$XBDm_(DgrNY4{sCA1Yeit%|+qV(W;cAEB(0dd5_9)pOo#?1xFD#9{t=z(Hg z)JCFWM>BpIW$1};jqd&nXb@#KF^+3XHKpUr@dL2h3aJ)b`;|q3J6SsA0UX$T#rK45 z4@~6p9=Z4{)kU^EWL6K}Nn1j^rF}xd#Q^WO1*6jO{5M&WJimc;E_p7kyF&TD<-ad& zc0CD*uQ0*{W$UX<4=!tdqB+>f9C@FQPK2 zG=33j5Mi@~)k`*aO_=La{n>ruAXs?5C&z5(ZRt>vq5dTsJB2tWBndZOgB`ZW+0>UYO zsDPV+Y-w_qx2+FgbagOXYPp43^W|RFBHR_Sl7#7oqkx z_qdL3+*_pv@iYtjr9QZ$2lv*g^|+T)ci^y(Ymn-tO%tL2HqpXq_N&e628nt*pzcC6 z+9BjvrS4XYT$@A;SXez_FTE9cSBt&#UK!E$79GlbxtSFC%RS-49@D1G{$Qd7Kq71m zKtD!SW-kYVqo!?|fp1pa$;q@S9MlNT(E1YcgvQ=CzU;%Wi&T=umb0Voa?uU7eAA1w z)@@q}{^=pk)7n4`axcFKDN9&&E^xN+1?r0Q&U-|JLj*Z2;&}TyKc+S{h$=iTu)XX8 z8sy=i66W}_D`1hgUoPsq^*zY>Ai81=BS-uC&W?DC2ir4I^wQYoUPG;~<8?G` zbTo`Kn*|Vk_^Z=z=sVfkzhnyo7?*M8gGcT(m^QlEYdVY{{7EX(i-1&Lm=M03%#X z!$Ok4HsHimMkQ<5GI$~OiTHaU*dx*z^r59J*yv;lVU_Tmn@>W>NVV^LkP$VxDuoBY zi74EqCq7zG@PYWMzb~(8Lc|{7DoP<#YbUHA^ zF@Kbs=-@&iZ^M{}*wsW8lw@=(yka92yP~dZWjDRrI`$go^H0Mr1O!%HSlW)xcLVH1 z3E$tD1`RAXJ}oU-x+heoqwpi9bqbz2bT>fYrD_%0LMSU4iju|&3GpCNjKxr{&lnLl z#|O1tk*?D50rrkOynY&(D1ljyY^c51{DoEuisj=YPac2h@K|a8gAbPW?%Dg${z!3Q z0qShUs)+>^!>JFKLjqOl!%wg!BUDLXHsnOQ2ix@Oh<5PsugV@Q>uX%U-v`)rGA+#C zIjb_`q+w)*3Ic~4b8*fHhhqIU@>svauN{2lPxcT0gkNB zqmi8f4_2Gl+)aqCVHw%$QA7^A!;{$X4~yg~S*MU;Fc`S&LV^sIXSvdVXa7* z11CkiU@xxnLoXd`Sw||ZQzs*+hD(^zB5993fdpmTnUsXfK^X0+#1tao(JHqmQl$!Y>W6b?QwV&OMpu zvLDh~I$Akc4K~ZN08WDM%@X*_CSQtYJZ!Vz7%|tvj1k-a=M>kwW%*wAJSDV$u7KslQ^2cW?yL<(}- zESq02$D|QBAerOMD55ZnqF!A9i*k2$p~ZDwsR)^IkK&Q+{N2?ngngsB6H$ZkpP@c3r| zVzK^#nC2h(PR{L*x=t^-65~r?%8Fl*jAi(!;CyH5v2IhKs6g#zG)Po`XJ2a)jiQE%A6&Tj7G9GKwc1_fxlsD+yeBDQ@>OmOB^%5O#z#P0^bMVfE9yWA^ou z>e?N%wyPu@=h1Pd8w%@Z0S#1Csm>Z_Z<|yzT?9rWGFf8*abrPHC&edRI935Z>kiG$TGMC>)d| zfYGt`H}(fB%^O70d?B`2x^jN&Hqk>vlY${VJ6q=pBE=;Mma*V&X7rG8^ks`N;mBL_ zBB2U`8G4!(EDRU&dz(O7+?5Tlc-jc`)C64|;=D;o1*AF`3EknilslP+h{n}p7={b7 zM6hA^TL4{y%Dzo6QST#)n{x*D;5ay-x+v4oS~PIjfg zjhz_((H`k!#;=4e$hl0b4}+tqZ8Nq*5KYTn=d89OZdZVKt^g14L6VP? zI!)6xckJ+Sp@-x+K-0WD0q3F3Z}jxjP7CCO2;`hnE%1kW5ezJ`0ke7D$U_|RriB9? zha;>7i*fw`JRm9iW9XJ4ixlni_#`k@qPf8`*D)J3MaQa@L6Na?Et-B&mJYEW!Zs3E|AE`qxA5hps;97WJevpAUsjx7FEK|{<>K^&VC@TBQRHN^ z{c9Lo>BaUn-Xwd9u261SqY+~d>Iigg zT{$3W(i)dIBA0d+)iaXU+sL^n%f!xZF3l>?IStS{^aNv1`%?+1U>^|}SVLmD+=+0@ zJnq}~)2y3rU5?>MvzkMEI z3z_r1iPt*+@c7fD?eSy`q%8(r^iYOOcXJlUyZD7OOos(W09rODAzC%OB~UIO^lCZc zGP5#xlzqwC3&%k$LgMHb=da2@6dqx)L{48rU_h{hKmdFOH5=-aP+PnQL)?bKE`3N% z1jC?{f+;j5CgRlS2M7gi!5I*fvp7u{e6k*8zhNs?=HUR3&TAiPx_)-n7y{>^v1ZHM zp}XTsIU!X*0Kt0Hg`08**IPV(yF3dE52p#RrB+FZv!vf|-#LOSNuQz2Vf0H{p@*R} zY1(&c<&fLfj&}0AA)sI%FZ&hKJDu#hH3y_2lEG!y^iMvZ17%t7#l7Dls-ngrfe&|^1+KQkjhWOybs^w2Y}Z6A=szEB|3TDkbB(&YZqD| z2q7w%TvInH0{zlt>1e_v459ZH#9AsI^eTobiAQg1IX6r`Q7*msL%|_Mf}EIbh!iB^ zxV+~PcB(x!b*qBwumE9_5t40_#8gvnzj0c;WAK*_DO5Pr(1PK@mc@_dQOW!3(=RCK z6*NZmSq9pbC5`j=8k69CT~0?<8H#Xu23c#tP(?#K5iCu0Z^v>+A3__2faJXBnss)enkv;!sD2+H z?wf>aQqg2?sSRNXDg%KRGf&jE1OxjrcLV)BRN7)}rzRTS5o8BY&_8hX(KIDevh`26 z#9d(>$Pa7&fhjCZS(B3Yk90Qa&Q_KnCEw1wYnC-^iqOBG1wP8`G)C!zIcY_)Xqd3x z%CC3ui!#3T0=}Fa<%(L>-C0iN-%4@_i3uzYTxc-aA-%Qr14!-Sh;BxL#!|$FFd(ld z@h^h|s596Vex0!aJH)Tft{GS_w#O>6M*hI2XvH2S4YK9x_@%g-mG~= zXP}e2X!nG24ac1>gp%Uxm}21{|D7Y6;7IqESgEV_K&8tLELFY#?t$vsw5Wa~8V-~c z7&Wv>lgF}9e|ZV|2zd6q7ji4~3-scLQ^9x*Y9)kJ({>yeIe78UBHli1wbtr$=P35z z3ID;vLn`$d=*q$6Shec50u|@bR6*jvvIpgMl?tv#4-t^}hNSPGYe27z?ph>S9_Y6cs=T{|L)e`vHM~S3icH zW49h)dD-e>kD6$Y)yK8ek1qrw;ktGPp%AN{uE1Mj(%T*3bUm(*%X0bKI@VtN3*TOY9h^AI7~dP;2e1mmEMe-W+0-7%y3T5*aNFXCPv~5f@O2(OpcBhC6Ch zgjrWZrOvqY7)J!y#pW`VWW1S$L<5d6yt|N4IE9k23O*A17&f5LdIlSr@sXH9{CV6X zC}t`dv>ICiC9sj^`LN@c3PpF&%HkkO`pdgu)0?xCnzg_G{`*1ru%E=sI#dGw2ag*X zx1lZD3%A`qI}UTu?5$gdbqvX!?%3&v1!bPyzSXX9>lQRx1wXS60`cl=8GTjdZyA1V z<&Kt?D>mBZ*H-2ow-vVTT4peCKU!=7nO;j{Pa!yyoETGAuiWN>x{83^sf5thxbwE#YzKZ+39*xLoRreo<~DJ}u2)m%w~csth%pG>&p55nY? zgaWKDZe5S^BI_xFinrq>+Lt|44E(|?P%`2d_X?|rSD{U-{M8-jq^Mqv~ZK!8Iwq8B7nUU?np>jN@b6SsIz z!fmYFdk$H+_l!a%#OO0u>YwhNM~t=zbGJqK^H-)rua*jxw&?IEG! z$f>_K&}H`9{h?7TjGo+TWiZi^G5jKL#AQf2V9NS92I6*(AI2;;n3n4$!{+Nb$tVU$ zSO#p~A22fS^dhDr*~OPyS%zVwam~|^jUwh`Wd<4$K=X7kaG<}PV-(onqcnR<$tBf7 zsiePF1AVjxIrAM5@}JP=on8-fDT~*zCu8y={bc{?6SkM6c^?vO>{>?rX0gdqQANT$ zw+RuMai`r!&uu8M_zipR69^YCQJLd!0uzWWX!vCuW^gy!4EH#xB*YAeMCY~qkq5TO z-?{znh^|LRdbt;q-kOC4L(CrGlO-UQ;JgNwQw;4g);)1~-~u`!}JxPTcGqt54v)eH<&U4+A0clc~P%(r%6&i#UwT;&Tz1Bf36< zhd*>Q-nX+{TjXg#dkwBFm$QL6YYyJ$3keKiO4H-{#IqR2g~Xc@GGIpgPlYA%V+d8Q zFi^V3E~{P1k2jlC@nDD~qAi7Nt{^?A{z9VK4XY`nVsne(;U4+Wm~q>k`!4dkHZ zM7qXN6!4Y-HrEO*aLW|a&HR=b7%g##Ok;8jbZct1?nWBoxp853N*9hp+8>pWLDpvh z!cMQtQn~jwW1=vjoG-n88QaIYk(V8C&N)BIxg(QpWElEw03XcT%K{Ho+>ZPuaJ8Gz z{t^;b@Ch~G4@&<~dK4S*2u&kRuj1VZSJeaG%?#q`FrrRUBI*pP)ktL#Lr2Hf=|L== z^=bp|<-{)(hn6Ci&UNZ~-04G19r}kd?#%&pgSru^0p!0)-Hg;K!!J!ls zzvK(hlXgqN`m*D&*-h(W90Zt;go1$+kV%}N6YA|G##A=ARfB%L{@Gbw0A4{qh z(eK;L)CEb8l9kh=L09bIo(hgF?1Vc?@23cNL<4Ov^E`^R&K;O(dT4PP2fcEA{OO~~tMvQt~ z5_nlR!Q&BVi04M0OX7p8n}O3+YfY!?fjM}>A3SXBVM~^44jnI>Y|dBMoczko0XukQ z*Gj)xYfzFN8KPL8ycum+k{kQ2Z5*H#M@ia?5{2roNxVYCfXG&a#21z{C*Ii{?5hto z=YeG=Z7=Sf<0$Xp7p)?9# zcAd9H*T99@3Frm9wZJK)J|PX>pS!Y_89T3UktU|_j!&^qyh0Nf674k4&85uj((&Zn zD5!W6R2*KV$=DQ5dc(BQ3)Uz@=0=4XuWb_`<}MD*rJG|vBH+Ji&SXWyM>Zm<=6 z0sMI_vRSO#!q6?5&0BHr`&IzFaP=i}aCT%aSwG$saIg^@N;#F^ZYv1Ca z09RAZ$FNNrLDHn;PL&>!-B%ouJ5bffI3g@Q4KWv0ndOdDt}mA;z(Zk#`bvwy7vEgb&{_w;lthZAkUM_x!QbhUbM2qduK z1&9S?SQx*t-Z$O90714jK)+a(K`pCLM|?gtk;FMUJaZVR$1R~7B_Mo#P{MG}SUaN+ z;kLK6cOJtT2Q#hw)B4UPYe7t5I=UcmkvDKeMo-&jeS%(~;?9h$ZKF5q#IuX>UTZ5R z$Vr;#&8me#rB)(Ur6aar7;HKuO4jEPa749pv#faPheCwNXSS?G6+|9MGE8Is=xtd=a*pRG_>)_8fG*8lFM17Rs5~WV3-@WkU zaO4u!)=3h#S}fClLGE<0R&PR8A14GBkYE5ChJxUZk>tyRX`)YVKjR0dsu^jbQs($> zErRmM;dXLPq1aYiUC#g0m2=K&elXD zqC(;rdYpjG)j}H~7<5oWxatD^on^%2BvB-+hU;5hUJ5xR2o`M__O%p9m28LCckN*> zr*)h6wtX88_Jf_{*?0?kd?4|Oy+fte#acZV=wgU6hSQaYFr}hS$>T53L20$3EPmm> zAlzb?ilszjqWzoTB^0t)pK7&c>>b;-!INTkrUf;NU7(JmP-|{88{6pDZMU|~oSyV2 zz%HC>P1kP#2-K=DVroP)s<)K{J8@{vpvNcH>wRz`Z%x$BL+@n{ZGo3J?{5i?+48cY ziFUyj`5br*U^TQw>qR^Ap0#FBW^}ri2NQpMSOs1i+A`5>ZX2&yh1U62N2$~>4e1sK zO@qNG6d}YfrBK-R8Vh1f>PTyJO$A!}t)ZYozl#6Q75LpnWAXnrbow>7m18mS+Un2) z>yOA2(CaabiujkFXS?&UBN!-R(jdLeHZZ^*1ICzhX-l0|o`Pqo~7bhmbuEO*gLY|9}|hzT&^83IzC zcz`6l0wH(61Tw>1?!dh>FvHXx1{j#Rz!yj$gv5$%-QR!hb57N%E*Ud0-#6XT>GRx= zwbx#I?e(nKa&jm6k<8^}cv!O8@z@8)Tf-pBO+-n)1Ky@ZreD6LNs-N_?z;1T`^MgT za(w!Pw}SKo5%niM#|_Qi_*6$n(Pip*o<2}Lq~OR0!(@rLw2y zwix33h&L-EU||@h36n6*GE=fHnqpSIB2f(l=PA zN7Hupg-FirF6-kq4)9?X$3M{GSf=*D+ZFt)7zD2sv%xF5Je*)~9jRIgWg))rwfed@ zLVXvoQd&fJNh*CKCw@~217iL#$20PZk=c!8D0ssllCa1**^x$3yJU%G>)Zc9Mlll8 znmz3d)}kBYZ#NEYAUd-`MdEY^9Ccx4X#}kB`mjYO~&m&dmZV z=ZxW5qR*4!J#=kH8?BA%_a4=3k{J^fOWy0u1zy5UFZz@K&zbDX_CU7jkx0WE zbZIm1&A7CQ_4z);XgiYuG`GFIx+ffS0&5HM85&wt07>b`g@Nk0x8suU6|%1!)?C@% z?xK!`-oa-xn{fCCBVev7rKhDHTqgT>JKfU(bMKg1bAhMDEG z648da;UcbRZEe1h_iSmSgm7w9as(sA8W0o5H*(Y3ix<@oJ!bUH-8sj36?x^c1^!LP z`E;lH1KM}>XB9WLzH(1%k5V8J>X_x$0-z@y^va`{j-n>QJBcfG5!sZ~M&_PD0xQNm z7`ar$k$mgEk-ZNhp-oV=QPloUnj&XZ!nRnV5~O>h*KTH}){$aP^U8g3clu04*)~8C zWZbx5*294WQFp6X_vo-ghkZI2Arf?)$^EU__fFL<@s~n0 z5h^Y>P%x}sFkQgUt{uYB`#DKXm*t_RN{*?r+$Kwo$%4p=Ns}iCj!!gFK;SN;w|-P zq&L(Woj>u#KZ}gl(mWzbd&0!sc*wB4}7vQrV5)PC+&uHrWs_B^;z0s|SIFXV8 zLH%#^Fh0l7HsH`JD2UqRL}^%z2uitf0VLwLM_fhVj=008IBz1Io7AI49VuZOGi7|4 zu~46-?e4tFX^v3ROrt_0YM?aTB8RY1S!1BGV&d)j1dmcbLaZG^s@ zz9Emr$dZuMW)RGxMHM5tp~V#I!b(J9s($yg6jdLNDGc&H1o7Sk%0i}?52_@*VyP5K z3u#kiWMOM+3i0VIxa+aVZBhTFU-kX(L<&yv?io$C?P|pGJ*2swi(5jnt?^Sw!|}U4 z&D}vkuU{9d<<}|Zb*j^_oKZ$TWJ+FEqaU9kp~CQ~&Q-`Bxavq`Wmg>nCex`wN2yI<2g;i^z% zhI)xEWlGylO4j-HJrqFDsERX5&Z&AX0Gmv@`UBV!eXOzXlfRh zv8hR+SN%HU&WRX;4Vb@&XW^8Rp4)?_=SvDBG&@9g`Rf^ncy;>F)$eaftM|OIxx1lc zP&PAIH)5Pk5##Gq#8?LExp4?}Q=ogV+EZ3|So7U7uZgKsQzyq2L&2oxG~W}r#0jnG zXgwj-6^U%U^a1HS^lBWtLV`h@!LE%bRm5wRGEmuv=~9%<7oo8AUjk*xLRx%Pq99)r zUcQwG=*k;skl0pchfGQ1W%>BADm8afk|wuLoI@`1lL`u9zOKla<#ASyB!5k@TMC82 z8&h4}DwvD6eTHqsktGtQ<1S$9#>D`LW2bqM__D2e``kf3Ru&Y~&>46174)+X6& zu|*yO;zsaMBX!rshWROBv*9QYKOAEvdoXM!ORpjVd5sKy>s!%j*l?#q@;)kW6c{EI z+$ivg)~H5Ne6^Sm_c3Z<$<-p{QSJa8^euRvmYR1{quWaVfEpssuhi3<$#>_!oiD8W zR()V$Ge$gDUFf)$*pl&rihd=jsW~C7*YD-&bE+(6qv>^~IN)^u(hU#bi74NNRK4*W zQZR@K%1!+wQ*{%!Tc_&V&|`$z=g@{!a_6&f*^7+N&M{?snGU7KV5iFJ>kY5sN972* z$vlqq8Vj0{rS=`dA?fYoW@u%rAZNnfG0R_zkxA8g_dV+DDowq^4AYjlmSMWB=|a}) zxX-wn!YW|Yf2uZhsxsoVaJG=uWIb+_;x7cHPYS?dhkDVq64vv>)Yl|BenI+P?xo0& zAgTYm)QyKYX>I}}zwlGwcn%H_2KC8I^=ip5R${+1A0X>k2jhwr59UcS13-z-9@nHC z1ex;hDUfWY{%A69#bT9}gEOL#ku{G5;IRoaF5*$xljd7dECyqsT7>k(s7*E~Oaauq zws%%AgGNz-Lml|GBzs=G_V zZBg{r{&018EnC{9W~uQrg`lYqf=vl0NknvGjTW>unXVEuXvNY#hbhSFCGpeo9I>GA zHjrW+p;Om!9C6&WM0_gf9LpF>td12y3HBuJV&ro2KbS0&xt` z(i&=err${Bor3Z~&jys2d}Rtkt?#G6#85V=nt{p8s4!PzL+H2KH2`%rl373#5K0fT zSU`h8lLya*yq=rNpa7U8*9%&~^jlQmK0+UnG+BSG=T-H*375p&#(h+8Msm9%t@a|m zpU~@VK*&o_TdV%Nc*6H)2Qt^G=USDUxM44)cp6Av(}uKPm_e6)SC34K>x5wYDaD+DSu^5`1WFq6ELzJkE)lSZzjl zi40tAEy-TQ8Z-Q_hid`>1TO5T(R zJ;W@DL)tjx;}JxJ#Jd!gWxeIocMj7RWAPYQ6H-c#gQH$jP;ExwYYduguMwE!S=E_D z^JDsAX&fsnc?x>_*L?}_1GWH}R>u@97ljQ!tV1VnVX064vyegpBXU)k(x?{+{vbwE zgOXX_&^jb3iBH`56uyXxXqxO2)msw{hLjkJCZ~x~3t0R`SID-gEDO-%K&l5Jnm_yz zXE38ZDu1*J2iNG4$I_@4T_hqp=1-l_U*0mbw+LT3z3Tp@z|^CM+&negj&k12+KPk5 zTj~EJo)dYtacty>o7dW98#d8x}%Ry_W>< zfmJeCJYBLo1mD!8GK`b?BEG|><>|&yu~@ySMq)}S8tYF1(BA4DT$|z%lDtTF_>MFc z!rOC@UB~+`EcIVw?igGc zm@i7RP+NvcBPNuSfka%?G{|*9Go#*9yGrM}|0uunsAh0Z>zVsWFT1lIEmvLc(=Dy} z@H}qUkC`VHZ(JRAv#@-+wt{k0TT){4t!KN=`f@+-%cTt~FCr{>%xc8BEk9DfdkvdA zAJJ-!E#JB(tj&D#uxJJqX&E+*(qlmIqn;Ry;7w0E& zfFa<>DLlF?)DADQM^yY1f?#^v%_O_&nigM`HN*9u;dLlkW>)I*zXLmlRy8n* zCJyIQ?$er>39spA`WD^$oDQE5GB1Agp?wGUj2?J+|NaLbI@l;Yc)(UYPe;B^an4A? zBB^;IKSi`Ur%ot{IGT71@Y~cNV<}3^(u!NI>6TL^*KpRzPgOPDJdIebX9{!?+jAN< zF+yTAkwc3;*~k-U5lFVpJ?rb&G}#VPzKks=pW+l9jy|U`2J9? z{*GjW6Zsa(+DYz!u_ngAE`*H(#7Tf*n9Xux50eu1n&5u~BaQ^OS}^Ym8cy5bC{m)4 z(jU|uo;(^EZnUcB{kQ80n$|Rz9y2mt+_MKm$$d5UVoeEKyk2WwovOP+caBj&HUhl znw>H~h;q-haut2x#AZi*0k8)`q#NgZzI zxY1jvb7pRrr=n8;g8KoW*lhf3WE-l5*}YX;6ZYWQ5V3?g*6fbsRh08N`>DlV4)BO<$Gf9jPlux#}_n?@77#azLn@`y~8PPNIgBF(8 zIH1FV=KBTBC^C1J0&G*<=r+dHY?3f@Xh*G|1Gx7HxN880tie5U=_odbm>=k0bC&>i z0g>6?weiHBP;aK*1$zOZnL)YCi4hRVEIeN?8`~wu2Vh6=B&%<%jJ!Z=d?(ee7&DA% zw`r7SlFbKezZx&jsyDM7+usy6yq*%&^eJ(>gzT*?37oY=jc`A%LtDj?iXWt6_a!QB zhe?&;OM!!zn=?*RSQb;NFq&5YMml|S!TD_-Gf&>D@wDo*I}C0WU3Fzd)&u$Fe3&V1F;kC z4^*P~4{u>*7E!it7{?-F?L@Qu_}!*6;fvE)If2lrTdt-<6TnRa2nk?*NxZ-oPQ3Y) z@^;G%qR7(D%AUpDCDYqeyuH|8?CD*~o&+PRfvkycCip1zqlvgfJC6G}i6vBKQPeb% zh^>jP4ol%;N;~$;#ja6n2G+O_nirl~9X-C(`H}OEy(68%rR^98<6=~Ux zN6C^f_4~#Bj^5=|nI?Pztko;;7A@SvJKZ#d^@(4j5CmRTI29hfIPj z?&8U~sVoUAQ%z+_NLrd|kd_d>@`Lb5+@P%a*4RF>W*k9?dLit7Asbm}NM@3Sab*wY zEi|T!u&gPiAf(=$@z@_qJ(wSH|0h7K6EL*t(-x`s;*MG%nK)~kd$R^bx-TpzisVU{ zk!@llkF_0!^{n@QMPoe&YFHvR6k&_(zTbsZsd&6BIgh-AVD!b6?Q2%>7 zE`PSvX|{VuNiz~wmyK0#!4jKvHs7=kgaU}zb2Cs`kyZ9(}-EEsa4Fkarzn{huj#)Y8Uk6O_DMiCTE-qKP-brzL7+jc4Htx6S;u5;+{O-GVOsti8g zE&a5TL81|`I%(+^0a44P)v-OPZA(Isw#Th*2{663{P46aA6Xk|aVyx{psChTb4O@y zCFa!D**P6CEE8;-V2$f+hm_!>GPfkqK0Y%wy)n7HA+~&tL&%l+>CpXQNurXJ49)L5 z^;$*vsbg!HOlDIe5@9g+JaIG8KdZy2$u>t(_ryDzz(@Dc=kaF7=A&-3OeUL0nt2yB zk3=-{Z1C$>wIWQiny0m$R+8HIV&}}1HlJ;>HV;;vX4VU;PO<FUJ_3o~asY&j2=x-r9xr>s~%ctr-GovS#e&Vm@=+bZw>yL?#Z9*=Qf{ zb}P`p<=JNQT-Rn1U7Xf4_Ew_^Y%lak3>umIZ{1~FT^TKS%&a!)2w1^`dTfPLaU;-1 zQ_M8=N~Ul!m191#YPWH;y|?XNWa139we|JiUtx4#6u7l)^dZj6vt2DBzA?M%7-lVl z95^dRAaegtxj4=Y!u8QrEwKRsyX|?e8j4*T4!!x4rzq2!=nd}G?sNJ@Y1sOLU?n*sA|IOg5^ok5r~O zP;2%@om^Aim@3goXtb9ZiV{b3Y#_UZadSTOk>W9kgtC$dNxO%p?}!>{yAib~Zlzgr zjT7K~OW7Pzs^zgU4Mp6~F?xWlm);;IAGzrymbZqP-KCLO6+B!nD|^7$SlX{wa1-;V z_bAHDGL@YNtq*a|MhG+bdmdkZUzqiu(&%NF^-B!XuL!ev)>SGvUE|6|d84WqY4-HV zxzs3Y-X?Qb);W@LnC+aLG?4Y0Rx6N^%6T!unfkELJl_i2*v#It+C4cnULH%T9D{;h zMX~N{I#~O2?mw&P4IMOF;+wy0J@E5%y`-w4j-=kt58thx^(c6#l6?m{2pqD&~mg70Yij>J*^ zJAhq48&w!xf(N=Jj5+j6Su>?uYeu|<`VPY(O?cyj#3)1fJYjxo8BfJ3kXPOoa>s!x zWGO>c;@|aK*m`dG>=P&b9)^9XxMv@zEV$GQ7gVhouXL#=VVj1Q8ZFh%C9KL|&=V+= z0ZYJv=(}}U_AY2ARcv#wCo746sluy46u ziH(sAvj38HI+7HkvZDS}9SE3gzq?lW{asuW*|NX7GfS1reXR5}+5 z&$FB&rX-Sq$8M!5OPtb*wW7W1!i_YkuOv^HlVK3lG5PIJWlvAQOXt$k9IEM9RW=T)p2$8>F!G!cnVqixX~W^ip7 zvquPVzq(UYS|_1=qY%CAvHdHmPwPO0PEj`$@1-gYXz+BA(EK@+0|Ph_=W@$~QdW9M zcz($Rn#cZZCN~X0&G6ph!q9dbVZO>0M z3L`VS8K^2FWay+J@r#)%JhUkCP1NS|P>Bm`zpfeut~$}Czom@@^jpQxC%fYKb9Bjg_)MG3^UVKSH-@On?eBg3tr3C+#jl<`57muY(? z8qWU$|BI8^Co^vSv*=9YV9NRi;a)SG@;*ZXbeA#}5g)ICP6^FLb9@#knT0Vks^qjG z8*DSmf@e3P491bo@madlShBz3P7x|0HgRkWjLg(_?v9g=?y*S9zo0j};RU9dEPKd6 zw|n11jr^XSyLRn4z~7Mv_lz8jg=6b@w`~aB*SNPyfYvk*(73aVXL9+zZ!7v>?`0gt zo({fkZ>7L3>Mu&iT*_3R;6#h6muEx8ymLBc+t8@%YJ`E6t*BB;ST4~O5*ySMpwV2I zr^P0+pvtR`64=pF0t+jKOfZ-jP%dH_&S~8;IVpCeni-hV^a9Qa<#L{=v<9VcW;$b3 zYn3`ISo$SJ0zBt*X=}}&>FlRfmba?Lqflhy)o#V)vqMdluYj#z))z0dp{Uuz0V!Lbh%42^+Yl{~3$N<{7MW8DpAQ@185pdxj}6M|RsI;c3KX zLjI_%T|SGNa>0w|(WKFAB6@bRIw@I|Ei375vUOMUN)k_)e64hN<5#c(12?QBKfxA^ zhtSuYbZ+FtSf#$0RWd|`BV>otfn|zP)4a@QO)_}$zohBii8R@=C@whOK{`l5ov=z5VYrWAF4U$*=G zCM7+hrj_VTkr3-aCa=uF8K)R)=QE)v7@bE0aD8TkA+{j0G-|%pkikJ`Xv!MeiN~ zpz(Q2=qSm4*EU^an%`;e5kKBoN81OqfkowcaK(6F)|HlxO{+c=FEUSyTNU~1k=sw2 zYk6*a*T3;&&eDU+$CgxR6U=yDWHgaaR-PoGp>@fGU|veaBqt@4Pa&&HjR>^3_;{y+ zs0khfA1%s9Z?cCJbI^y%_e#hZIh8b?M1X^`43F6)C7OjS~LyS zijS7IP(p!NtOfM}&*f0}W>V_jn_DduAM2Vfo<-o}?nb{^m}YI4ahTP+SM^518?EM8O4|LSwMCdF zb0^n@7>GEm^Idn5%y7PYbaAau%OOT&y|pF0&AL!MS?gDNsq+D01(((aOtPk}w0V}W zq0Y&ol5#WdL)c#~K3AMCURWkWV|p`q;VRX`*>V{*^LCb=N!8X}-?PWkw}W9Iou;6c z37hpSAc}~?vN|4*y+o-tF(f!CZv>}&g4dxD%w>M7f6Ove=17WDWlMtlAF9z7$22-OdZRf&vz`-H-^FJ| zL`twuwx`DM9+qnLYq_U`*ZT6>bt{1DAY6xReDy1#lfM$f<;v=e*+Sh;QK_AHtdr-B zO!XvBm00LG<54BJd4KS}U{dLYa?cgt50~;jd=N|_TZHqJV56w93MvNz9`>3A5@KFgt zKtWmZh+HdWtrjCfU&6kGRswM_S_uP!d#AlLq z9m$Ko5rO!=;52NPksBmDf6d!3Mq;1L0%wWdyR@f~JM`V3Vbrt@>>BKeLqb{At2VC-9r%=8j5?WYcil^J}Fl8 zz+2~kPN=G#r8Y^i;xM$$g$nAc8?)Uo)gJ?lj1t}2@H3I?^6RH1lAyEZnztg zW~|ZK+T=26np@Ak-=HP#Mot6}qr@*$g8LiFa(}5a(O$DfcF&7K=5hV-VfMc5k`aH1H1BW~Dc0XYMh0W&Bh{f_(>JuNUmMKetc87xp4D%QV^A_hEXpbzaGR5Q98zsibbZ<)$GuiY+YLILN+u z?|-Of61htm`i9~lC)>m7HiBG`Q!tF8AxBqRla_9cfKhd`V9<*QSkTK(oPY(dpa+}b zo?8au4J|VU#%#;n5s`%4DBW(9#wXyM9j*~G6DM3BZ#GI%&`^IXnKzAIC(2+1$bGlU z{c9bJxv`04T#_*@hs3!UzoNw+*{e|Bo2%Ij{MVX+1m^GZNvN92ist-P1;4HNbQ>qV z2!{I$gb9U{Aj`(e{9ho+$BRh60kSX2_LZY*xnf8l>knQfi>x(KHKmwu(GU@*U0TlW z=S1>G&7nH+$Q9c_IwbJ755X3!ff!lys#u9fFl61Zc@fx*uc^&ER^<5HQnl@FWm7?q zC#Po4R8P)rjqs4f+Y3=F;$NE_tC83d;C7qf_9h)PGR8xC{^?g}xx1Zv5OM>bI@%~i zxZt@t17;JV`sD8g(E&~bOJ(+wr%pgtw&mT&`z`n6DyvXelKYEm;WSE?jrsWiqMQ$*swr3*taDL(uXC^pIHJkS&e?4f1&XcS(2 zZ=*L+bcODO&@v6W#u8Q9vK{ht!U!ogG|6-HHvbC6ffj{KnSsTbYkw zV(hl`)^Cp+*q<{!_JY1AQ*a%v)P~J$l%O6nOPkY>^KLIX(_|dEl#}j)#iEl^{R?W& z2RJl((QrqLQOEY}q3(C8ef%e-FpI3BoWJUHe?dF7yxJIv#HQLgkTy3^B&&-Sx`QpG zx0QOsFpjM@n!t8@X^b~Zk;?~^@rr%6_0;qaZRA`7^qBf7_F#|=U+%Kgy;L8y;%W12 zecZu``lt=F>CfQ4*tei^45Ogz2y@JzRXY{+MT} zH+CS!GenHI>qb4qo3f_bYOnpQcP%mQv#lSi0L4-Dqr@j9JT=B>HIX)*p43Z^pWVFi z@nMcbo7UBT(6D>sJ^SwxGk5pl?;v6FPl^A2I9$`bi@QFR0ozru(GVlCGQieht z+&#RxX?d?FL-!;VMW@l937Vez5zKdJ?*A4itrikJ0l(Ssj_@t!P}hyEgxu+5E8*Sg z@|8l*Ku?x;NP8My6Rv&^OQ=J|N`d63H*f`$cc|Di5N;;{>N-8e0q>qDkW-I+wZx=dUC` zsm8Ipy2+?V;zeTR4-;d%U{bFjnXwS+=YLVU5RJ)}K@HI@im z>he+ZDkeZSyKz`yLSuV2nKLZRI2IzDt}l!7_C}&dV`K;_nSbEH-4EZt$I>wP#_ywA zgvpAr=-$qGvz1JVJ84PtwYKN&{Fn^z=Y{yv7#H#0ltOeaU`?LBPVrtm0~G`7@=|>YpJWd-t3>`+!~%>q+?I;t6J`#XbB-K zNMU`oyqy43moj(SWUqIZ53jEtxs=%gb6`GVf`ad!(I<@*iWzmkk%@GsHqC9t_(N`g zFrMN4bW$Q}%YZkK>L$xFMlckW{OCL$=C6xBgc8Vtw9Acu8^J`r2`Bi?YGvbkHw0s? zt*d)Uhc;^S>)iV=ZSfJS(_j`pkB%O6=XmGR;`?RHGk)^0f=3*2XK9L)X}X)!;Tavw zfAMyxM5~8b;O-i zVWKyU{0Ut9j-}I^#jSaeMzyu(#mMQ;T4SX=tWoXInjeo_V+kNHt=%(Cx`3H!bDEkj zkM5H_I!a6@txCM_5`xA*YJ^&-Mp%vp)*RGQRU#$0KJ70UR%CBsR?;?}tpHuw@lPQ) zQ{qDI;VF4hL!PVOmyqCxqBgd7G47YQc$?!eN#cGq_&uz4uzuVmpB%`oKOkRoq9 zBXPKwSDPNeNOu#g-gZqBKu)Q$wvlq9(e0&TIPRI~%BX11iHc8Y zZDiF%TKfey&1FQtHgimHaF_UrHZ&E0zbH70m=5G*eku{TL{o%mZW4)TBvZOCEhhTE zOXzu!6QI{swOlng`3BRO8X{dZTw=1du*le75EdI{M$BlkfTr%q@(N8YFvcK`08r-&@_~GGAj~}tS>qv#< zCQ`$r?Nc&5lU&#U$kNEdp;ebik&Y6QL9pRrxr47|b!U)J(OVQ2B`bxeb?g0KRQD`; zsNlO5@r!$T_}%WXz_B2O`FW)JL&fny00xn;ILX@4V>Gs4Hpnvv_GgS%k2PZ}8^%SG zraFhY#8Xfw2*a*A7yG;2DT zOi?R96e^mW{u%-q;aljJ+15jD8mpA0rN7xpoXWt0lr&q!SnHY*jT<>3_anv}CX<~O3IBOK zaQ(F`WCQg#ScN&JTG7Zn#Zs}2GpANGx~1r-dOp)8zYiMSSmdXOH-`APdcCa=V>ION z;<=j(NQwe;CCkJ5ik9}Lq4ty-(Cv*JhdEF2FWM4ov9^vq!U?Mkt3||G+Y}=Rk|rFq z4N3D#n`&9u=`3<+>`jg%iAG7bRvCz)i(H>q_lf+a^SioEFEJ@}w!SKwTSy^V))*V> z`asN&+oes8`c=E(x~DJ$Nlin*ct0@kpu3j#8bFOrMV4Tgq5isxUJ`l`4UqtKF3)u% zV69IBROTCu^{CbRssL+3d)RZCSCm8=Ip#9t8fdO6EuS=U3Nmu(HZNmJZD?SPVlzHP zXO|2r_54VR>}eblvRC6m<3L1&z+vaBG)w2QSOTLqLF!Me1SuRDjr9a4lsAO8AG%>a zU%mG9K#ky?3V=A@eWBY(BVH4X&@lHIH@~JKi0KyTyGWb`2_uEz;I?D0^^Z1Ttlu_5r>0y4#8P&4YT=7<0`>XWY4+ zB^wX-8I>LtyjcLW*B{k~_PU)Vud_vKIj2dvjt#kk+IVF2)H>JfNZy0m?%ISB`DpIZ z`N~GYFS5z26I6FLw*12It=Qdy^rT>3|9Rb|GheVhf4gcdMI+~MD+|Y+$o(U z!{g6v*ZBh!HK+Nzn-h6N;MpP-<|RTS6$AWUbk+AtKUN*V$jVyOM~3Nt0w$NG31(_RPRaU4o>~*W0 zls1#yyNKXNRon@NnIuyYm|stmcQAm_BI9=H!0j_}R3PYWvDu zOWg?NOZ|94C?X?o_iYaHMvk@RKTeh2ke@AvS~Ja|vADGXekt%u@wcjsCN^1v2NpJK zqlgK()m6;*Vv0x7zKlCf!4up{{fLP3ld1jz0BMy2`VjC~nD9&J_iQCUSqPsrSzz~} zLZygA?riv!g?N{|uE&RXmqd?nTdPcNS2F2f*P+GXoCSH$9qQvuVcv5Df}ac5gljqL z=WJcLp0lN4-QPxTmQkJpy-N-_$ayRiyo&Q};Z1gbIp;Trx7hjBoZlMW zX6Gv^E5q*$-yGgyGRaj)H19-?c}+MUozw#W$Og zo9?Ae-xZz+Px53-cq*Kx)UDx6ILqJR@O>d>AiTMa{@21Y*8iK{2LpKMW@f;$=f)G37jrqG9a8+Ga|-Y@X)hZQ+!@CA%ZWO`$W$ zY91#JWDkU7bUv899#KKpXip>~Z4@4!J~2IWcA6#dqZI6{QJP>_^hOh^rFqsNYva%9 zl^#Ox`}jPpSGJe87t~o_P^aFdXQD;hyGv6~{CZ!n3;-lE)o&j`QRFQche=4Jrd|~2 zRLuspBRFx^7QqzHOPLl7{T-UB@8%*TC})@%?0Os`eJ+2laIWZ8;)+oVhZUUbneWjy zvnD=j8)V$BR(751LQxK{b*^{5*KM2c#kn7`mL#ngbIr2Ya^k5qiFp@bFU%Li{Exvi zOVo9tU}CPqh|6o7#c4FMz?N8@3XS9Hw2ei!13CcJZ}HHKFtF8(Vgea8#!OirEiq{J zVRF?_QpnMfoe%7>1--EZJ3$G+;&H^a)i`GxBLkid)RRKF4waMnl6|Rd*xH6nK4TAR z$TUL+it>M#p^&y(L=+`_vH5_#7X8f-PqdJGIadt6RbQ1FPFoRTcl`y+6JYWPuN|3m z`#xBfwdEylwUKl;Pd`r3D)05VI#p8}Bo@?_@Z>^Ri6SKT;lJcRlC$S#OD2o&p6w4a zlX8GXW%hTx%ieb7C_8`Du}BR3jw}JVpUoAu)nMM7<}c}98&tnUho=QqNxO1cK~wNV zcXkOTyJf70@gI3&;?(SdUL+(!tC*J~nkTFAenBIr@0_Y}9qN|_zg`#}of8m!fWcI? z@pJdP6p`9DtKy{c5*L7s>2SR3L_BPW?^Q7t)sIOT`*3N=pC#qSXS43XRG($m!RQ9W8^ zcWJS>iIcWS(N}wud_h1i!FUk6XxxpZG(-Tg2>}HBf!u|jWeL21Ym&qeyvO4Ak*<$oClPj`T%eS9 zXQW*4rK4J8p|Kr#Lig&u8zcSAo#jiJp+<2$3<-Y0uBQMXP#2g#&X3V{&;EQjeR9hf z0(X@T2DcYhtNKg`_h$vR4`q|hrOs=kee0zUzY4!PMxcyIv@pG z{hAbn)8D6nt))lfW5E6ZCuy`e9?b2IzRbKng^SjXR>?^aGqZATX*2g8LydxxPX3o;^-qkYYM1vUdt|hyL{~D3du7`*dQConeoy5Wh-n7H2x7E62{DNSvRsCJCH`fi^8l;*Jt7j4vLd_XGH zAop6p|6F(O+qs_NH%om3ip}tq`i-d>eMOEeHMu2rODO3R3nus6tHX0TY!-nx??sgmyJ^gY_ST!JWLiE`KP)uAdW&1S@-)!Skqqe1h z4l2B{h1N&Qzlg#`ODzd*U?~rD;S`XmzdJ$BorwTjDl|<6C*ZYGgDSWgG7GbIpmzD!<%J-a67~h?4GjqPb6a)$GZT2E zJz~O07#35=n?O=oH{6US;U_eVpVZ-FI+&Br2YJdQ{SiI?9OsQ5IlEbRyr$l~bbd}x zN|WPLCyDE1jc!8+_k$Gh$HIga6g^OoTZtmh5tin%c826KWVhYM#-y<>HRPgn$rg79 z7s_}NW=zp14p1?I7+@RzC5S?hWLp}TtPPzQ8{|qhe2Y)>#J0afK^@N~n^!&u%pwnD zyMVM@q#7h%tzoL0FmfN^X-t0%TBd&y$UL0V)5HA`@c2eNGqfvSjxrZm1nn?L&onC~ z(cPpr7Xk+bdd}`RC!#Osz*Qfo3{RXuf`7#$gAWs^)||`LarG0Z(9i)8pYY|;uG9TE z`sLAluL$cn~8@ zkhID2n4b}2rn-kI3cbR)emzEgY}&=hRL@L2;U`XclAH!&YA~D2yB`)V3NKw&2g6m1 zA^#&9g2=qlV5D(C(^*0Hc1|DJy3jTdGE{j*192T+vl=TR9GvxX76j#}BIsBUye0#k zT&|61#ki6h1*&PT1{=Ak6Ai(#DvI*3fX=hk1iC@&6RjXrwh9CbGeQ~jB!hUC0iAmj z`FKf;bSeOIJdU;Boaps|!#&r!<$%a-B$&>+jZ6kkbl7|y=)Qu zHZIqf%N0tm%73Z8In9!^PJ{)^a|$TbV!D|L?M1cnKBE~55)w!XuTT(>GvX+ADUM=n z!|nH-XZOWG!iBCax;gNid}{1 z|1LFBTpe35g#jr@*vrypG7LC5qFQQV>n=}+xeqUg6#XXK#(584LUt+AE0ceT$O7-? z5e;u8RF^$Jy++6w|HqE;?#NrQm7~zUsMT_Mnw<_vItF)AnH(qb>h@TRFf`((>CL6( zvbZs~S@6UM;<0>M#TKXQ8TH+SioZe^J+Qx`v+w2*v)M1}hM?5Q5-_+8bJ>-XqW(!X z6>A0i<-A)Y*PJ}eWey>ued0d80*OsCAMsZUFe3rF#Essj7txW~_A2$O06e?6mYd8* zmdxF5m3GJ6C-bk_Fl%AS)^|iM{AU#wqDcp%sP-FhAGTyO4y#REOKe)3RaCU|I$Ejs zuCH$8-|XD_s#^l4K;=FzP_zlTrM@$*ON^YIJol8NbXWkAdP1D9e)F&9^Y~`8t0!oV zIYy^ILnTdpvZQKs*n-lqL~y1>0{bGsW4=D@3}mRikwn0>$_7|MkWKq`%x@v5Y9G*^$*yXgu&$$AseIqI@8h~d3XH`<7SYzKCzQ<8$q zsa6C*-aaUU(o*ozQP}nlB15Q&@0*q=#U7PwjKhgQ^ob}sUZ#)0Ol(Yj=Wh1n$F%pB zQSg~*qUp^Xn%@#WIQgm){-ut@?1Xp2VszQ!+EP* zIA)2^s_@a#`{GelE=NS8E7J6@`C@7yg;^SU3eQ*wP%-kg;5@riSs#e0x4~(D7&TY(7i~|*mUb;UikfTiV-Hq^x<^rSnWZlV)@el+H=_U_H^p`6raMY2 z-%0n}Ujdo=hPIBeK^q-y+5_BmtTJ7BYS!HiYiKO@l&0tuUp5MCvh=cFlV75(&T?oO z`j~CVCxF9<0I5AaRv$1WupyThV2v-voO<~p`BC@9C%;1=Si^~Cr$?H|yA3p&4<<3o znl}sfc&Y1l(uet2Ac?llA}oRwrf@U5($uxJVf-KS^})E^xdPD?FDw3B+p3&cPl(o~ z(16dI1V$Tr&F14E!g0(~9QrD*%(B`0kW4EpdFoEB8#^&NXVmwei29C~$HrQi)3Gr~ zG4$B>OPUD@e;UzcSWi}llXLa_`s()W>#HJT+jSC~f;9z5g94Y);>1)ko+#HXoG9)h zI4~;sh-mc@0HmMX#BF>(X`UkfQhR)F&ty9a^Wve0#;lYoB0io04l`>Oiz+8TY1GSPE&*Xz?8} z`|r2u5S~p`!JH8^e08D-Z7Yl+(>cLv4G-HUOmkRFrGlt4Z7?hvnlK3h29_ftA|?f` zl6%{D78ymvseyBB*s#nGvxEwRW9A7lgcYm;?)ffc3Yc3Egf2(mimiAE(ShlAuzR5# z?kb$cAxh8J3U-#Q?m~`=8HLZd3eUYOdN)JBye$0s{eYxL5kpv@dNH?P`f{GPbMh-l zTQ_~p>FeO{{rh3^e%4Lv8FltDdfUFC~>|K_Sdz@r_{!Oi?dP(c-xe zcs*de4W*4e+i8Oxd(IV3KRHww*K!bT1ge#jlf$uvgLVQ6odEaWRG*+uh*TNd&G#$W z7PN(^+$zOGYe{k7MpHq^3w(O+EcSkcxD01RQzX@DZg3Iem$#PpoUB&vOypm>r@It9 zRfDhgp5rDyv*=j33E&>&WvE1!Z)tv7lcG`xoPe8X`M9iv$0f&(?G#b2QA)ZYNmKAH zwNO9Wts~~sH-b*{?H1_BWiQ?KD}p2fasra_M$uTf^J?1lw=4?%#MCjshSp_@h*h;Y zEpxKaBp8wJzcNQH`0js05HB1PS2=}o77|rZ1JpUITwHN4MbHqbHX*G+Opgokn<7C9 zya$M|U~oFKkY-V;eU3%jGZxa3=26V|?4tSBsC#aWsO4H6+7^`c+`A}3$xP}ZyTYc_ zV&-v;gf}gWqeT7|p3gz6x(>SE;)vGDHc%F`rpcKpGIpbeiJL`cCjYo+I!# z(LPqLCL6iKWFz_Gg(rz* z7V{DW+_crATRdiZB(fW1;XuzjJbYZJV*J3Tb6!M!i^1llt z^6QcN2U6He@=7O`6awkC4K)(;cz$16hY$hHnH*v9+>wv$88=bcAE%w1H&gl)JhXcd zJZz&Vc!Zh`fx@A{>Xeua1hfbJVKYH}Qs0OjIn54>oF|f;*foDisKHh;BMVVj&hGk- zT{E*?W5IB_I(gqE}1i=2Dofv_CKuR||ztXjV-G954>R4j!l&(6i2 zEh_*9+J#e1MgpgS37C1w;>^2e)d3{y=I{;PTvY4FWx^ee*O4x4_$V=5K& z*EAqvBxUX;4MBfUA4p@LUP}R2$R?t{OWQNCzKIOO93+gVmGFV?qrP(ABWQ(~A{N4FGfqh_za zNv++YZvr#twDT9Eb6Ey*-}G`nsv3&^Mxsgc#(zFxgiFif*%+C)Lw4DnYUa6ZA#c-j z+tb>awMUzE5X_#hRj2H(cB%2*=DXTS(nfn%ph&%ul*?T$&QANAroMph3=+Rc--d4K z=*MJ=3lk6yfFk&kO%0-FsS>=XH2ahxh96T{^r^hxhAXi-UxWb$?xGHoLwlbp^RD`s?n&b1lSN(BXV0jongV`bcwT2S zdY}cviA1{3>&%9+rt&n|{lR2uCPoudyjdE)=Qxpz6}$wl_s!qZw}NGIpekMyWZ_79 zNt6)(=7R$3jQ*3cK3K{BKK?I4ggaO&6#I%xi@8#+xTshv=1FCf$9XH)_bMgy1O@32 z%@vbnjI&pY`--c27X>{7nF-pF`l01rJL2iy^uLj;^AJ3V_V0~ldyXC3hp}KQxk(Wk z6{7#URFIS(+GAtngT&KerH6=s{}h!O{~G|8?3wmQ3K?y9EItNCXP6hjeL|j3BDk*% z9~;JM5JzEL)`HNMOFj_FmPQq&D_N#NUgas??*h zZMS^#T9cJ7~kCFhMLrmYzE)HN?Gy zRkkvIO0a4j5#QhO$x6IJvDh_RQyVAZqc){x+k@Mw{BYe8H=c4oDFfm&WuEuIA-t)=cv@J;H6dwzcG;G{V} zm>a>NTm@mT_;&fD$%W-P7&YQa;I0xD?7TNz9QKBb@QYd$mY4v24O6?cPp0}K2IV*I z9c8aKJ*2jjhc#;~eLZe zyyfwsBSQ=3a>Aji(`hT+Io1{ZGQ&;x<2N$L0R#c;$SUV8%*4~i#@yJLt=KPYHiVlP zhf7ZIhyYT!J)Q7r#J!>SHj!4X804VBF7#w0Z&SfF@>Ymz6z!Th5TR0&)$)j>(Ipw6 zy+z7_sPI*b8ER955i~}$k=WOn;MMwiO`-Pj7;gVM1tA*Pi!yMND{$&X{1u`sRmFI{MhX3)p|;a;<)o+j#)P4x4Omrqs(u-hgJa=6)7z0Z~6EtX6aiINW#X zJRw9%u5`L;=A}lP-;@mE)3VIM`sL}|YxR3OVasqw^l0+c>4NKh(MGJgb&nQ-1)UWk zT&B*h;KVrpqPqHg7lGMdhx;duWQNeFGpA0?M7wLFui60IqrRxveAhsxe)s=OADX!$ z@VNU8%5-1i&?rdej*{6MV||1w+zQ?Af500)($%Nt%rW$1g7(LC_?X_Zlx2~vu0;#^ zvdYx(khL~4F4WjCX8%S{Y_P0Dzscnmb!ZijQ8)yH0SfhCu)7}vLWRA+YT$C7q?vEL znDwXI$I)L>(t6F2`xZqGaSyfb2#)js2U)wC9Zkl>d4A`h0T%@(3V{HGFf zDdcC5A{g0oG-Z4BeUiX)f@+f=zdA;d$tJn24SKEXJf?m11T0B?pOPe`1c_3&&{#@(62XvP-a9-C1eSXhy&tc+jn#mrWzbEv7@_{rYW`sHG7Ml ziiUDhhdJF#Y~oq^PwIwkMjlg#6q=<4DmI7`5IrD(h)cEfa~VYu>%W|Px`YlXxV$Fr3MWu*SN-~Mk4jDM$`w|_ zID$W6TNHx;nZ%gtCJ%rW;xCerA>*v?il=0e3C7DC2^?*Cr?>ia(?tG99yd;eNbz&7 zGBfEp0i+NY1T#|-UoXJOpu=6u0gCj030#IXP1MnxIwVMm4z9?Xk?91dsUN{)2k>xv zIUza9RS`Lr;@FmJlQPw}>`HlroW%rxswlZO0kSawg;j(-byo&7jElKzq;#pYxw({nFBh6U-tN#A zJ!w$AyOT74%m&0?-4|KIxi6n{^mdWuNzpHPqdm1=WjtreTP&R8oyDAE41S!HSI3K_ zyV4Uaj{WYg8d)%o_n%iRuk55e*#~ONxHDki4f-7(r1`-znLf+AcHVz~`QUx~4wN4r z+5O$+^NsiZ;)~8q+fGrt zIq#@%j)gC%?h5T_^u$RuoSUFt_ka#Ie?G=zAE7II#+@V&mz$}Rd#O@$vO~AQSKg}X z6T42$y7%x|V_>wUrQYioimN@4`yCZ)wYFK`NJ8?2I;*8dRtUYYtNgO)NQEJ*g#5Sr z3-!U4qMQEwzpIwKzC)_0pVUZ-mNX+30qc9@ih2i+Xy9L}fkrL5}xEQ|ab&+E%(;PE7@LX`NQv*mne}GZ!2!`mAE) zvNIYUKH?YI&A=r!GhBiwshgWt<{O5ngU z74&!4SEKL4M6*TL0zOv<|Or{t?;(pB%@|i_BLK|zpS3;d`gbr zS2vB36OQqkn(qEUZ!BQyO#0cBWoop&%u^t7Cc#u&+!bYtnv}=XQqR+&s~RXGGeizZ z$fm(e3OE#$7R(7au=6+u)Ve0&x@4sT9%t%rH)bQUwD2rSS*tV~cd;ZU{BbjuL&4q@ z_kzf6t4SNmBuT1*`w_2^G3vv-C`9+$fQ=K^_{p>5Bt`QT{jhqY-KNsTl7+7U;FR^^ zn5OpJr4+X?d@H)6iTUz^qc*$g)6x5Ng0isfysC{JRkCxZ?F zWNhZ>nAdZT#jPK6()84?*=5-&%sh<*a?P*#ir~=_#X&f%;{~LlggUG>^6YU=VdZ8@ zqo*~MS2LdA-2W@=Qs4caCsS*KuO(*un1EX1rB$ZNlmc@wXHQZXqNyXO?b7rSPZ))9 zQEW!p^Bd&6eSgF&+#DfElr=-)h1+afWVPqb^38R)DiT?=)6tm|lF@yOdb}>d><5ac z5Kf}t7g>B+k1XGI8(I7m4}K<|ph{ilbSKppz|tK3qg>QLD_QQwrpk~7Os*OGjN3eq z?UWA=SXFo$-of37ptPdy=TR~y3fcS|_Emn@A_$x{MXk;vcx*es=pCJTYU|OtS!RLs zim@0KK)@W}JtT8mh7>&6I8@)XhSVjePH=0DNqv>ZT^WNcm7d8gV%6gC)L${;O1AX# z8vb9VVT1`-xYt)Nm)_Yj;Bdj<>67^N^oH7s>Q z^p)0aEXb<#^?;)Nl*gmJlavYV+a!n_a`27BFx4(>i)FBZs~-ZpK}^3D+oRpu*jV(= z*qBThe3=l+uyxc$E~D3CN92ub4o7#6tnrppn)J2-92?VOPHl0KvCl2!Z_0}Hf$b_! z#on|>PmYsN$KRzGqsWrLP{vlvnQV`S&B5OGf#&NbUAK9*`45j)pjoz0M7QCvHH+G3 zrFr*hiw-`wfw!E6&!d;pnMd!pf8xnAwrvzi^lQ1nutYh5>gALIW+uXlMv-;YUTi1hp9dBVbw!*Yvr>E@;tHqx zZYk|m0C7coJqBShP^CJ=N5%^7;7_zcw}9*QpRy6Y7jD%r+_rWR8Gl-|Yy7DEe5KK^ zc!`9q|6}O{f@4u6=Yuk^uti>TL8}`+_ft=TCT8t3HnzK2&ZEA9u`#ci!$in%amqW9 zKRG2a1_3POUu>>io|$+ZX}}lh-&X*Smj>vH^+Tih7lKzKF9T0f5a*Tgog#-`!c@R{kUiJ7o6YWh=Y#|T(HcD!=I7* zd!%#J&p%rbjHn<(H5ELD-}#I}0c>AGi?-ge22M#%+h{*AxUDaP)VMhzVDrWLPsTzp z6=1j)cL7!D6XVKX2qgytXQr!Dmg1Q9$EaHgH*GS;DvC-HEy|b;H$C2=<+0J*wv=_- z7z*JzL+B*<2unsw^pgFy+hchbyvySfAp4#~y^~heul;dU6!WHzl)Yg7L^>J@#<{li zn_^Y=b7+1Q@ZVJ8EzM-nF|8{r6fLkBduG%wX*+xhlVO&gnUhcYrHI#{1E>7#*SP;L!^oDL6nQ6#?dl?|Z_yzUD;vdR z1^Oyerm-|eKfEwJGP{@b_GL!Dop|rz!OJ4vYbZH@aOX1{FP8|rqL3^0zfgR+f2ru*R;~}Rcw4>vi zC(GF;+dfxrm+o(PJ5{k7A;lN>NraWA+AtN z+KZ`X0iUKmZX*}Z&=h=$(HmSqXMnvce0>dd6})`J0iF)T1GiUntG!u+PyD5qua|cnND7G|xgo z$8^)|n2{$ZdpJ?t5I)!{FsEyo9bvUoCfVl+Pu5I6Vkt@%V7O*{Rbwryf5UK8>(Vrb zjQa~-!;IpcX_nn<9_}L`vW(h5@G;@@m-()3@|)l2j(E}sPp|5#-`s+S%r*_-sPb+y zgrf{$2NX}Wl#0x$%4GZ!GJrjXmoI3~l^r=~O>^I%T@G{R1r0jIC-nEB~&P*t7N*>gJlj4t1;GZWwoeZ42_1)aS^hnk++ zUfDE^ntJYcIj|@Bpw63xy`W1g?ElbN8+mP|4;|pSL4DPT_Akaz50Z~bQ!vmCM=!4a zHGC2z(D-`|W6|BO@=eD0Kyo&svrRgfm{Dg8xSj9UdConohdNK){bSwu6CM7W4u8sl zcmKQ2tp+PWqVM?bHa)VtTUze^d2;tJ{M|kQZ;1~5@fjr;?rl!q)meOZrCw_-*WO)~ zzFYJqT&ugHb-s;>0jmFAhOJ(xoo|1AZBpDi&KN_hq^&q>gju{s4Q@VHhpzBd(uf%B z2EI^~J}~8#wUu*mg7NtcJoe{#mz?`I40hI(&8jr#eqZnYM;-o?4u4>m{*fiow)z^n zYabMSHs*T;r4G+MsGjis`S<$j&vmdjt!gXjFStjOljoe-;lAGW zb^NJsj~GPXpQJq-3smo9#nI>;9rfD~^j5$ja*rxSdlIPMUV&>143pQ?Dz43m-G zB$)k_4rT#jCN6oz;E-v{Xy?QpxPlHv9eQ*SOX0M?b)w7;9uz+r9hT_OuftLu#8bLu zIt=RY0af$gbTH=kn`-+ZIz_&r6UVfn^orUudiQ;L_-)P_B{S0VDj(;5RY16`GX6qm zf2P;|P-lmA?_D~)n?qx<58?t7I6QuIqOq)bd5T>OS$UCXT&0R`)5ptoW(@kDb9o54 z3iaU#W>V0VdMH_syG92QSuZW!PvwWovs1IffS2`+{7l2qzW6xdC?{q{YcjYp(USz< zPG%8@uCfov6dleuYEi@(0lTah)~o$D=&h@xU@}@RBlbqJx2jvC_fD(Z>vXn^FAl9p z6&ZPrNZjq#>z&1Vr)N~kjVc>BXV_~~L|A(0+SafA(92ATy(OGd)eWf#TNsS)+Jq8r z9$J#lI(YCAOGriQp`^?AaMtLRHo{|xTdce0r1#4zwyew5I()Y-e?^Bob$OQ# zpVsA0otc;ENfo}mAwd)vr^5AE5t^S~bWoqFd7 z^v-FWiG?waR#jxJ+Ijmd9#OxUjCX2_>>N&4Y{Z@Nnaa%h*_X1 zk_&l1jP`;1%Wr_p(`w#yrT|p@;4N?#c>YV?aK=q*PEsno@Uv_rTSCYr5W} z-*VVD*!7;=uKuk4mhLF^PK`m#M+*m5Wcye5U(LIl z`?LK+{VRhdI7nWmRKVDOxwJaS^pniHY$olv3=2>4_ z)4#b?Dh&WD;M1SQhbKEge+bW#>F>@jim$L)r|tB;P%4&s`cQ2U_M#{F`(RP7zLgG-iYSM&~MOVtM~!9toBQhj59opECIA2c delta 45119 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�loL%3UzEZbl@U&A!d5Ie)eIhUuz`Sr(@xA8Xjd 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 Ti4Q*d*k&zWZ*L;|bI for details and -usage. +Utilities for determining application-specific dirs. + +See for details and usage. + """ + from __future__ import annotations import os import sys -from pathlib import Path - -if sys.version_info >= (3, 8): # pragma: no cover (py38+) - from typing import Literal -else: # pragma: no cover (py38+) - from pip._vendor.typing_extensions import Literal +from typing import TYPE_CHECKING from .api import PlatformDirsABC from .version import __version__ from .version import __version_tuple__ as __version_info__ +if TYPE_CHECKING: + from pathlib import Path + from typing import Literal + +if sys.platform == "win32": + from pip._vendor.platformdirs.windows import Windows as _Result +elif sys.platform == "darwin": + from pip._vendor.platformdirs.macos import MacOS as _Result +else: + from pip._vendor.platformdirs.unix import Unix as _Result + def _set_platform_dir_class() -> type[PlatformDirsABC]: - if sys.platform == "win32": - from pip._vendor.platformdirs.windows import Windows as Result - elif sys.platform == "darwin": - from pip._vendor.platformdirs.macos import MacOS as Result - else: - from pip._vendor.platformdirs.unix import Unix as Result - if os.getenv("ANDROID_DATA") == "/data" and os.getenv("ANDROID_ROOT") == "/system": - if os.getenv("SHELL") or os.getenv("PREFIX"): - return Result + return _Result - from pip._vendor.platformdirs.android import _android_folder + from pip._vendor.platformdirs.android import _android_folder # noqa: PLC0415 if _android_folder() is not None: - from pip._vendor.platformdirs.android import Android + from pip._vendor.platformdirs.android import Android # noqa: PLC0415 - return Android # return to avoid redefinition of result + return Android # return to avoid redefinition of a result - return Result + return _Result -PlatformDirs = _set_platform_dir_class() #: Currently active platform +if TYPE_CHECKING: + # Work around mypy issue: https://github.com/python/mypy/issues/10962 + PlatformDirs = _Result +else: + PlatformDirs = _set_platform_dir_class() #: Currently active platform AppDirs = PlatformDirs #: Backwards compatibility with appdirs @@ -49,294 +54,578 @@ def user_data_dir( appname: str | None = None, appauthor: str | None | Literal[False] = None, version: str | None = None, - roaming: bool = False, + roaming: bool = False, # noqa: FBT001, FBT002 + ensure_exists: bool = False, # noqa: FBT001, FBT002 ) -> str: """ :param appname: See `appname `. :param appauthor: See `appauthor `. :param version: See `version `. - :param roaming: See `roaming `. + :param roaming: See `roaming `. + :param ensure_exists: See `ensure_exists `. :returns: data directory tied to the user """ - return PlatformDirs(appname=appname, appauthor=appauthor, version=version, roaming=roaming).user_data_dir + return PlatformDirs( + appname=appname, + appauthor=appauthor, + version=version, + roaming=roaming, + ensure_exists=ensure_exists, + ).user_data_dir def site_data_dir( appname: str | None = None, appauthor: str | None | Literal[False] = None, version: str | None = None, - multipath: bool = False, + multipath: bool = False, # noqa: FBT001, FBT002 + ensure_exists: bool = False, # noqa: FBT001, FBT002 ) -> str: """ :param appname: See `appname `. :param appauthor: See `appauthor `. :param version: See `version `. :param multipath: See `roaming `. + :param ensure_exists: See `ensure_exists `. :returns: data directory shared by users """ - return PlatformDirs(appname=appname, appauthor=appauthor, version=version, multipath=multipath).site_data_dir + return PlatformDirs( + appname=appname, + appauthor=appauthor, + version=version, + multipath=multipath, + ensure_exists=ensure_exists, + ).site_data_dir def user_config_dir( appname: str | None = None, appauthor: str | None | Literal[False] = None, version: str | None = None, - roaming: bool = False, + roaming: bool = False, # noqa: FBT001, FBT002 + ensure_exists: bool = False, # noqa: FBT001, FBT002 ) -> str: """ :param appname: See `appname `. :param appauthor: See `appauthor `. :param version: See `version `. - :param roaming: See `roaming `. + :param roaming: See `roaming `. + :param ensure_exists: See `ensure_exists `. :returns: config directory tied to the user """ - return PlatformDirs(appname=appname, appauthor=appauthor, version=version, roaming=roaming).user_config_dir + return PlatformDirs( + appname=appname, + appauthor=appauthor, + version=version, + roaming=roaming, + ensure_exists=ensure_exists, + ).user_config_dir def site_config_dir( appname: str | None = None, appauthor: str | None | Literal[False] = None, version: str | None = None, - multipath: bool = False, + multipath: bool = False, # noqa: FBT001, FBT002 + ensure_exists: bool = False, # noqa: FBT001, FBT002 ) -> str: """ :param appname: See `appname `. :param appauthor: See `appauthor `. :param version: See `version `. :param multipath: See `roaming `. + :param ensure_exists: See `ensure_exists `. :returns: config directory shared by the users """ - return PlatformDirs(appname=appname, appauthor=appauthor, version=version, multipath=multipath).site_config_dir + return PlatformDirs( + appname=appname, + appauthor=appauthor, + version=version, + multipath=multipath, + ensure_exists=ensure_exists, + ).site_config_dir def user_cache_dir( appname: str | None = None, appauthor: str | None | Literal[False] = None, version: str | None = None, - opinion: bool = True, + opinion: bool = True, # noqa: FBT001, FBT002 + ensure_exists: bool = False, # noqa: FBT001, FBT002 ) -> str: """ :param appname: See `appname `. :param appauthor: See `appauthor `. :param version: See `version `. :param opinion: See `roaming `. + :param ensure_exists: See `ensure_exists `. :returns: cache directory tied to the user """ - return PlatformDirs(appname=appname, appauthor=appauthor, version=version, opinion=opinion).user_cache_dir + return PlatformDirs( + appname=appname, + appauthor=appauthor, + version=version, + opinion=opinion, + ensure_exists=ensure_exists, + ).user_cache_dir + + +def site_cache_dir( + appname: str | None = None, + appauthor: str | None | Literal[False] = None, + version: str | None = None, + opinion: bool = True, # noqa: FBT001, FBT002 + ensure_exists: bool = False, # noqa: FBT001, FBT002 +) -> str: + """ + :param appname: See `appname `. + :param appauthor: See `appauthor `. + :param version: See `version `. + :param opinion: See `opinion `. + :param ensure_exists: See `ensure_exists `. + :returns: cache directory tied to the user + """ + return PlatformDirs( + appname=appname, + appauthor=appauthor, + version=version, + opinion=opinion, + ensure_exists=ensure_exists, + ).site_cache_dir def user_state_dir( appname: str | None = None, appauthor: str | None | Literal[False] = None, version: str | None = None, - roaming: bool = False, + roaming: bool = False, # noqa: FBT001, FBT002 + ensure_exists: bool = False, # noqa: FBT001, FBT002 ) -> str: """ :param appname: See `appname `. :param appauthor: See `appauthor `. :param version: See `version `. - :param roaming: See `roaming `. + :param roaming: See `roaming `. + :param ensure_exists: See `ensure_exists `. :returns: state directory tied to the user """ - return PlatformDirs(appname=appname, appauthor=appauthor, version=version, roaming=roaming).user_state_dir + return PlatformDirs( + appname=appname, + appauthor=appauthor, + version=version, + roaming=roaming, + ensure_exists=ensure_exists, + ).user_state_dir def user_log_dir( appname: str | None = None, appauthor: str | None | Literal[False] = None, version: str | None = None, - opinion: bool = True, + opinion: bool = True, # noqa: FBT001, FBT002 + ensure_exists: bool = False, # noqa: FBT001, FBT002 ) -> str: """ :param appname: See `appname `. :param appauthor: See `appauthor `. :param version: See `version `. :param opinion: See `roaming `. + :param ensure_exists: See `ensure_exists `. :returns: log directory tied to the user """ - return PlatformDirs(appname=appname, appauthor=appauthor, version=version, opinion=opinion).user_log_dir + return PlatformDirs( + appname=appname, + appauthor=appauthor, + version=version, + opinion=opinion, + ensure_exists=ensure_exists, + ).user_log_dir def user_documents_dir() -> str: - """ - :returns: documents directory tied to the user - """ + """:returns: documents directory tied to the user""" return PlatformDirs().user_documents_dir +def user_downloads_dir() -> str: + """:returns: downloads directory tied to the user""" + return PlatformDirs().user_downloads_dir + + +def user_pictures_dir() -> str: + """:returns: pictures directory tied to the user""" + return PlatformDirs().user_pictures_dir + + +def user_videos_dir() -> str: + """:returns: videos directory tied to the user""" + return PlatformDirs().user_videos_dir + + +def user_music_dir() -> str: + """:returns: music directory tied to the user""" + return PlatformDirs().user_music_dir + + +def user_desktop_dir() -> str: + """:returns: desktop directory tied to the user""" + return PlatformDirs().user_desktop_dir + + def user_runtime_dir( appname: str | None = None, appauthor: str | None | Literal[False] = None, version: str | None = None, - opinion: bool = True, + opinion: bool = True, # noqa: FBT001, FBT002 + ensure_exists: bool = False, # noqa: FBT001, FBT002 ) -> str: """ :param appname: See `appname `. :param appauthor: See `appauthor `. :param version: See `version `. :param opinion: See `opinion `. + :param ensure_exists: See `ensure_exists `. :returns: runtime directory tied to the user """ - return PlatformDirs(appname=appname, appauthor=appauthor, version=version, opinion=opinion).user_runtime_dir + return PlatformDirs( + appname=appname, + appauthor=appauthor, + version=version, + opinion=opinion, + ensure_exists=ensure_exists, + ).user_runtime_dir + + +def site_runtime_dir( + appname: str | None = None, + appauthor: str | None | Literal[False] = None, + version: str | None = None, + opinion: bool = True, # noqa: FBT001, FBT002 + ensure_exists: bool = False, # noqa: FBT001, FBT002 +) -> str: + """ + :param appname: See `appname `. + :param appauthor: See `appauthor `. + :param version: See `version `. + :param opinion: See `opinion `. + :param ensure_exists: See `ensure_exists `. + :returns: runtime directory shared by users + """ + return PlatformDirs( + appname=appname, + appauthor=appauthor, + version=version, + opinion=opinion, + ensure_exists=ensure_exists, + ).site_runtime_dir def user_data_path( appname: str | None = None, appauthor: str | None | Literal[False] = None, version: str | None = None, - roaming: bool = False, + roaming: bool = False, # noqa: FBT001, FBT002 + ensure_exists: bool = False, # noqa: FBT001, FBT002 ) -> Path: """ :param appname: See `appname `. :param appauthor: See `appauthor `. :param version: See `version `. - :param roaming: See `roaming `. + :param roaming: See `roaming `. + :param ensure_exists: See `ensure_exists `. :returns: data path tied to the user """ - return PlatformDirs(appname=appname, appauthor=appauthor, version=version, roaming=roaming).user_data_path + return PlatformDirs( + appname=appname, + appauthor=appauthor, + version=version, + roaming=roaming, + ensure_exists=ensure_exists, + ).user_data_path def site_data_path( appname: str | None = None, appauthor: str | None | Literal[False] = None, version: str | None = None, - multipath: bool = False, + multipath: bool = False, # noqa: FBT001, FBT002 + ensure_exists: bool = False, # noqa: FBT001, FBT002 ) -> Path: """ :param appname: See `appname `. :param appauthor: See `appauthor `. :param version: See `version `. :param multipath: See `multipath `. + :param ensure_exists: See `ensure_exists `. :returns: data path shared by users """ - return PlatformDirs(appname=appname, appauthor=appauthor, version=version, multipath=multipath).site_data_path + return PlatformDirs( + appname=appname, + appauthor=appauthor, + version=version, + multipath=multipath, + ensure_exists=ensure_exists, + ).site_data_path def user_config_path( appname: str | None = None, appauthor: str | None | Literal[False] = None, version: str | None = None, - roaming: bool = False, + roaming: bool = False, # noqa: FBT001, FBT002 + ensure_exists: bool = False, # noqa: FBT001, FBT002 ) -> Path: """ :param appname: See `appname `. :param appauthor: See `appauthor `. :param version: See `version `. - :param roaming: See `roaming `. + :param roaming: See `roaming `. + :param ensure_exists: See `ensure_exists `. :returns: config path tied to the user """ - return PlatformDirs(appname=appname, appauthor=appauthor, version=version, roaming=roaming).user_config_path + return PlatformDirs( + appname=appname, + appauthor=appauthor, + version=version, + roaming=roaming, + ensure_exists=ensure_exists, + ).user_config_path def site_config_path( appname: str | None = None, appauthor: str | None | Literal[False] = None, version: str | None = None, - multipath: bool = False, + multipath: bool = False, # noqa: FBT001, FBT002 + ensure_exists: bool = False, # noqa: FBT001, FBT002 ) -> Path: """ :param appname: See `appname `. :param appauthor: See `appauthor `. :param version: See `version `. :param multipath: See `roaming `. + :param ensure_exists: See `ensure_exists `. :returns: config path shared by the users """ - return PlatformDirs(appname=appname, appauthor=appauthor, version=version, multipath=multipath).site_config_path + return PlatformDirs( + appname=appname, + appauthor=appauthor, + version=version, + multipath=multipath, + ensure_exists=ensure_exists, + ).site_config_path -def user_cache_path( +def site_cache_path( appname: str | None = None, appauthor: str | None | Literal[False] = None, version: str | None = None, - opinion: bool = True, -) -> Path: - """ - :param appname: See `appname `. - :param appauthor: See `appauthor `. - :param version: See `version `. - :param opinion: See `roaming `. - :returns: cache path tied to the user - """ - return PlatformDirs(appname=appname, appauthor=appauthor, version=version, opinion=opinion).user_cache_path - - -def user_state_path( - appname: str | None = None, - appauthor: str | None | Literal[False] = None, - version: str | None = None, - roaming: bool = False, -) -> Path: - """ - :param appname: See `appname `. - :param appauthor: See `appauthor `. - :param version: See `version `. - :param roaming: See `roaming `. - :returns: state path tied to the user - """ - return PlatformDirs(appname=appname, appauthor=appauthor, version=version, roaming=roaming).user_state_path - - -def user_log_path( - appname: str | None = None, - appauthor: str | None | Literal[False] = None, - version: str | None = None, - opinion: bool = True, -) -> Path: - """ - :param appname: See `appname `. - :param appauthor: See `appauthor `. - :param version: See `version `. - :param opinion: See `roaming `. - :returns: log path tied to the user - """ - return PlatformDirs(appname=appname, appauthor=appauthor, version=version, opinion=opinion).user_log_path - - -def user_documents_path() -> Path: - """ - :returns: documents path tied to the user - """ - return PlatformDirs().user_documents_path - - -def user_runtime_path( - appname: str | None = None, - appauthor: str | None | Literal[False] = None, - version: str | None = None, - opinion: bool = True, + opinion: bool = True, # noqa: FBT001, FBT002 + ensure_exists: bool = False, # noqa: FBT001, FBT002 ) -> Path: """ :param appname: See `appname `. :param appauthor: See `appauthor `. :param version: See `version `. :param opinion: See `opinion `. + :param ensure_exists: See `ensure_exists `. + :returns: cache directory tied to the user + """ + return PlatformDirs( + appname=appname, + appauthor=appauthor, + version=version, + opinion=opinion, + ensure_exists=ensure_exists, + ).site_cache_path + + +def user_cache_path( + appname: str | None = None, + appauthor: str | None | Literal[False] = None, + version: str | None = None, + opinion: bool = True, # noqa: FBT001, FBT002 + ensure_exists: bool = False, # noqa: FBT001, FBT002 +) -> Path: + """ + :param appname: See `appname `. + :param appauthor: See `appauthor `. + :param version: See `version `. + :param opinion: See `roaming `. + :param ensure_exists: See `ensure_exists `. + :returns: cache path tied to the user + """ + return PlatformDirs( + appname=appname, + appauthor=appauthor, + version=version, + opinion=opinion, + ensure_exists=ensure_exists, + ).user_cache_path + + +def user_state_path( + appname: str | None = None, + appauthor: str | None | Literal[False] = None, + version: str | None = None, + roaming: bool = False, # noqa: FBT001, FBT002 + ensure_exists: bool = False, # noqa: FBT001, FBT002 +) -> Path: + """ + :param appname: See `appname `. + :param appauthor: See `appauthor `. + :param version: See `version `. + :param roaming: See `roaming `. + :param ensure_exists: See `ensure_exists `. + :returns: state path tied to the user + """ + return PlatformDirs( + appname=appname, + appauthor=appauthor, + version=version, + roaming=roaming, + ensure_exists=ensure_exists, + ).user_state_path + + +def user_log_path( + appname: str | None = None, + appauthor: str | None | Literal[False] = None, + version: str | None = None, + opinion: bool = True, # noqa: FBT001, FBT002 + ensure_exists: bool = False, # noqa: FBT001, FBT002 +) -> Path: + """ + :param appname: See `appname `. + :param appauthor: See `appauthor `. + :param version: See `version `. + :param opinion: See `roaming `. + :param ensure_exists: See `ensure_exists `. + :returns: log path tied to the user + """ + return PlatformDirs( + appname=appname, + appauthor=appauthor, + version=version, + opinion=opinion, + ensure_exists=ensure_exists, + ).user_log_path + + +def user_documents_path() -> Path: + """:returns: documents a path tied to the user""" + return PlatformDirs().user_documents_path + + +def user_downloads_path() -> Path: + """:returns: downloads path tied to the user""" + return PlatformDirs().user_downloads_path + + +def user_pictures_path() -> Path: + """:returns: pictures path tied to the user""" + return PlatformDirs().user_pictures_path + + +def user_videos_path() -> Path: + """:returns: videos path tied to the user""" + return PlatformDirs().user_videos_path + + +def user_music_path() -> Path: + """:returns: music path tied to the user""" + return PlatformDirs().user_music_path + + +def user_desktop_path() -> Path: + """:returns: desktop path tied to the user""" + return PlatformDirs().user_desktop_path + + +def user_runtime_path( + appname: str | None = None, + appauthor: str | None | Literal[False] = None, + version: str | None = None, + opinion: bool = True, # noqa: FBT001, FBT002 + ensure_exists: bool = False, # noqa: FBT001, FBT002 +) -> Path: + """ + :param appname: See `appname `. + :param appauthor: See `appauthor `. + :param version: See `version `. + :param opinion: See `opinion `. + :param ensure_exists: See `ensure_exists `. :returns: runtime path tied to the user """ - return PlatformDirs(appname=appname, appauthor=appauthor, version=version, opinion=opinion).user_runtime_path + return PlatformDirs( + appname=appname, + appauthor=appauthor, + version=version, + opinion=opinion, + ensure_exists=ensure_exists, + ).user_runtime_path + + +def site_runtime_path( + appname: str | None = None, + appauthor: str | None | Literal[False] = None, + version: str | None = None, + opinion: bool = True, # noqa: FBT001, FBT002 + ensure_exists: bool = False, # noqa: FBT001, FBT002 +) -> Path: + """ + :param appname: See `appname `. + :param appauthor: See `appauthor `. + :param version: See `version `. + :param opinion: See `opinion `. + :param ensure_exists: See `ensure_exists `. + :returns: runtime path shared by users + """ + return PlatformDirs( + appname=appname, + appauthor=appauthor, + version=version, + opinion=opinion, + ensure_exists=ensure_exists, + ).site_runtime_path __all__ = [ + "AppDirs", + "PlatformDirs", + "PlatformDirsABC", "__version__", "__version_info__", - "PlatformDirs", - "AppDirs", - "PlatformDirsABC", - "user_data_dir", - "user_config_dir", - "user_cache_dir", - "user_state_dir", - "user_log_dir", - "user_documents_dir", - "user_runtime_dir", - "site_data_dir", + "site_cache_dir", + "site_cache_path", "site_config_dir", - "user_data_path", - "user_config_path", - "user_cache_path", - "user_state_path", - "user_log_path", - "user_documents_path", - "user_runtime_path", - "site_data_path", "site_config_path", + "site_data_dir", + "site_data_path", + "site_runtime_dir", + "site_runtime_path", + "user_cache_dir", + "user_cache_path", + "user_config_dir", + "user_config_path", + "user_data_dir", + "user_data_path", + "user_desktop_dir", + "user_desktop_path", + "user_documents_dir", + "user_documents_path", + "user_downloads_dir", + "user_downloads_path", + "user_log_dir", + "user_log_path", + "user_music_dir", + "user_music_path", + "user_pictures_dir", + "user_pictures_path", + "user_runtime_dir", + "user_runtime_path", + "user_state_dir", + "user_state_path", + "user_videos_dir", + "user_videos_path", ] diff --git a/gestao_raul/Lib/site-packages/pip/_vendor/platformdirs/__main__.py b/gestao_raul/Lib/site-packages/pip/_vendor/platformdirs/__main__.py index 9c54bfb..fa8a677 100644 --- a/gestao_raul/Lib/site-packages/pip/_vendor/platformdirs/__main__.py +++ b/gestao_raul/Lib/site-packages/pip/_vendor/platformdirs/__main__.py @@ -1,3 +1,5 @@ +"""Main entry point.""" + from __future__ import annotations from pip._vendor.platformdirs import PlatformDirs, __version__ @@ -9,37 +11,44 @@ PROPS = ( "user_state_dir", "user_log_dir", "user_documents_dir", + "user_downloads_dir", + "user_pictures_dir", + "user_videos_dir", + "user_music_dir", "user_runtime_dir", "site_data_dir", "site_config_dir", + "site_cache_dir", + "site_runtime_dir", ) def main() -> None: + """Run the main entry point.""" app_name = "MyApp" app_author = "MyCompany" - print(f"-- platformdirs {__version__} --") + print(f"-- platformdirs {__version__} --") # noqa: T201 - print("-- app dirs (with optional 'version')") + print("-- app dirs (with optional 'version')") # noqa: T201 dirs = PlatformDirs(app_name, app_author, version="1.0") for prop in PROPS: - print(f"{prop}: {getattr(dirs, prop)}") + print(f"{prop}: {getattr(dirs, prop)}") # noqa: T201 - print("\n-- app dirs (without optional 'version')") + print("\n-- app dirs (without optional 'version')") # noqa: T201 dirs = PlatformDirs(app_name, app_author) for prop in PROPS: - print(f"{prop}: {getattr(dirs, prop)}") + print(f"{prop}: {getattr(dirs, prop)}") # noqa: T201 - print("\n-- app dirs (without optional 'appauthor')") + print("\n-- app dirs (without optional 'appauthor')") # noqa: T201 dirs = PlatformDirs(app_name) for prop in PROPS: - print(f"{prop}: {getattr(dirs, prop)}") + print(f"{prop}: {getattr(dirs, prop)}") # noqa: T201 - print("\n-- app dirs (with disabled 'appauthor')") + print("\n-- app dirs (with disabled 'appauthor')") # noqa: T201 dirs = PlatformDirs(app_name, appauthor=False) for prop in PROPS: - print(f"{prop}: {getattr(dirs, prop)}") + print(f"{prop}: {getattr(dirs, prop)}") # noqa: T201 if __name__ == "__main__": diff --git a/gestao_raul/Lib/site-packages/pip/_vendor/platformdirs/__pycache__/__init__.cpython-310.pyc b/gestao_raul/Lib/site-packages/pip/_vendor/platformdirs/__pycache__/__init__.cpython-310.pyc index 67ad7a3c33b8ad5b4418de70bcef26cd2d77e18d..1b87b84e630eaaa33877e98dd0df246b0e0d5498 100644 GIT binary patch literal 15851 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 MV|PfsaD5^3KLvK@$p8QV literal 5202 zcmbtYOLNpl5Y|Xq?ZfK_n1^`<@kTss-Vlcnh$*O4QCk#`s?^4m(C)}aM!Q-@S|}T* zDpiI{4#_2#+>+e*OSIy0#jUV zrO0#7bK(S`48PPEtBx_{uEO)Y@J8VUH@Bfx%Upe^SjG4Fc8kShPO}+APUHp6uwtpP zcI(@Pc*3cLk#Oo!!;PK=9ANr=CwgY7?=|T4zL0dy-}53@IDQ?6>i*?Gxrvi`z!b$* zs*Ecz0an$DD*b6it*G;P{uQ6#lW%fWonPnEe8(HTnsW^|&%fq7`K~wm2HRlOg0$@B zGtyF&mOXs0w3MV}AKx!6W72Yfe<3YpX*tMEX&IN6L;SF`Oi0TSepFf}rR5kuE-h28 z!Ef-B+(Ny&jkHtzG-=yOJHyYCHci?rpCfGtY3KNP(sq(|fnOwT7ipLHWzu$&c7j~Jc{#9tJQQG?#B`Y-CQ>-LDP+kV079LeerQ$W`?IS=s(lUgqMdM{KuSOTTi1*=$w z!1^P~C?-%$qS%IFI|wTu>!Ir}4M)9G#0~&|tS!thJ`N%7i?3Wi3Knk%^>)K;M&aVJ z8%9oG3#aXGYTxr}iy>5tvn{9o+yT^L%WKWqFWn{ SvmAv?o4r{&GIR^x(gL()XH zjT}RKtubvdl^MFcaw;q7YcpFG!fdA-q#>+!iY$io#T_O7dcQ0q^|6tHNiMMF!ZujEz?=m&k4*}D1{d!YQHKyGT4 z_xLh_0)6Xyzyl)?8<1!)YYIZF24Sqz8qrq*uW4xl_69}lCLm>LNFGnbPBibglL7E% zqK{$11HHb*_$5@=C}nplB1Pzbn1|3olR{} z`t|kUMB+mn0A2WfO7DyQF6;n5fgO}W*pU7QI~oAlJsH6+1&(BwEe${T% ztEJ5L_w}2EjpUW(9q()=pXa&lNvY@zf*hAqj)(hlOy7v$kxWmg*(ch~$ZLFNgr|t7 z90FhLr!39BEW4lrKd^giVLMiobqM!$-f zEEuZRIKT_QQMoQ@YyFo@3LVH)%)%hR?{FV}S+zk&g&lgw2hz(5G17a9IQ*>aCAS$k zlH9SBoGjTx-FIRTza-wW9^w$MQ-=NH-31-VG24&3Ic6?Q3wFniCkN8(F2+dnr@=J0 zLPyd(nz@n+_fSt-gDA?~j|wu5@HS;QVE0RrpFl9F-9rhU8cr~&$vDE#BM4^5kp#1q zg5`TCz0-r}C7)ebn6dw_DY^b1T^-y=YFQ4Z^>jGFGlK|DZzCU%PWP+y)MM0MMyDvo3Po)SIOmuRPqBi1r1mCBtvkF0WX?i$0s`1vlzQP4S! zY;;(gLK~gfsD;Nifh|j?1A~}B!yXjaf|cIW#%;sei$^OuIM{K?wi^L&`>t)rW!rwy zc6|9HZ`oO| z7g1b7aT&!G6jxDPLy;X5((iFmga_!EunD4|=u96H=T57{N5}YM)uN4PCzyWhLj5ViL7kHv1*Ti`YuJ6@oM~%z!a0chur64w< pRrqhnvcUhL(a8O#8yBu8ak+t~uMneLRtjo?O~I+Iq?XwZ?LWpd^fLee diff --git a/gestao_raul/Lib/site-packages/pip/_vendor/platformdirs/__pycache__/macos.cpython-310.pyc b/gestao_raul/Lib/site-packages/pip/_vendor/platformdirs/__pycache__/macos.cpython-310.pyc index 7e124222460270d12de01f13bab9914f3764bd79..a3b73b0f677197f58ba9887da14107305b395670 100644 GIT binary patch literal 6519 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 NIKP(9YnO8W`+wMY_^$u} literal 6892 zcmd5>-ESMm5x>1Veu$zzEPo_UoMf9QY1mj~($Bzf)jE>v1c>FplF){Aa6EID(#gj= zX76ZOEbRi3i{>RLTJ#GD(n^p1C;ErnYoGF*m%MrYjvJvYG+U3c4y%m;Q@+_=qC=B>G^NKB#k-~2I!X6EoqCF zg)MRq?R{3y5tSDOqVnPuF(pc%n*#Nd27#+c6lxL2Oc6CF=7}m1bxJG{HBHoMafYZe zQD?P7MhdyecO`Fyz8~)Lcv})f<7cba_&YA>%~O26Bb)s4b{u!2OSM`Al-Kf_+QzCa zC8dzjojB}NL$y`Atp_b3+ZeF~ssJ5Ux8t_I+;FOVV_S0M;w~;7(YoPXsgx(YV2i`b zvKfcUlM&zb;%zR2yPgUIGzWgyRi1m>myw=E-gDa>pg0)bE_ap0gK!~RU@ge(cV%=D z)(L~H$P@Z);I<_XTeK{4PnsU4abuot3Z@6Xc9mau@4zz{H4Gn0%42@w^To`UGP$-fVQ(@q&}Bn{qBUs*RM_*ka5>%#&{E>H#@%Eqe5baQBp`PD6znKCOMFf z*GX*DPEwNhI&L6v%gF@?HV57be;l+J2i}0cA{%&QCUzwKmU;%nH}s2Y2FPRv$2%wz z2f*R6{xULr`}nm&r;( zxRMeCzrBYbQ4xRLYw<>AfB%`Sa!-2(Gz-8ef?jZt80aul%j$bKLBSp@EMt1-a$1cO zG!WcMMjf~jB{I2w6!I~SNOoKW-ifx1>^Ii4Q|dWVj!;!HldE+jReQS8!9I!eSi{U# z8nH7t(7HMW8tTm-U8YwWPFKmR)4-(8U~?9mbI>FOJT~k&nRn1}IwT7RI~7DUPns28 zpP5-zfP*gd*A5E);9rgvuO4TrCf z6;QMYVXd zX@{wq*xa$;LSusI;1{knv$yx84E=DJ>rAq)2=f#-;tf(}wh@STS{zb+p2p@BzDOTJ zoJIqtY{2_~dvUg2VnHv!4CC^okPaHT6TgYao)jLGXlJ^ft4jWY83Y>cGk1 znH3Wnjcl&^DT*R*tZZJty0)?IfNxsU_A~vUmJO&BlCus(^$y7bhE(36g`bWzM0kQ8%8xbJPa@olsB%uv*06CN+{2QuPD zV?%XiqXA(pcW9u4106S_z~Av&It`#KfWzh##hAFwk;r#;80915XYlqbjPlD?PhT11 z?~gsc`VI`Lu-;B~F=asSXNcpy$l%t7%Ah82bD}@c5A8uo!&*KDsVbCo|xCU&9q&#fIDl<^^O% z6;tN|Z)3-}O6X93g8nEEO`gr0Mb>+j9KqAnyav-^p+?O?14$62KKMM+n{uEn0|%`? zl*QWx8lN1~WToQB_J1Xo*74NAFxDv+(a~Oqr zrB==x_=KKG)v$RBn{Q+DJ#2n}4QX;H2zsJ)2+OvZ3q;6KG;C&0mzi0D@<-V$=qIzB z{z9)g1>XT}m)WeXaE8RXBlk!wk4unp@jhP*136~Rn0aDx1;HHs1s-&65L^3D8_`!f z^^oIK*W>&?WVLYtRsNfW`&QpPCnd6zYHL(fWCE@6^yLd+qp@l z`VlYPQem6mwS+fT6&s%7u;ux(%GagjgR<_?I_|D_$E&S}t#}s;Y7pNqAy8?iT8{$D z;jF#<&!PPLQE4r);P)|mxtCkSvf5+zpfYnb#y|y-H6(d?4>I0JA(#>y%qB>tm2`!J zrL$lwv5`ni8cIT0wJ8-{t2wm{L+WSAC*!f4G!sBrCwVC5z*dtyOe5X)q*9uC6UL)f zBb;x+#KgK}o-;4}vuxXJ!8~KyaN!cy07RI714M9PvK$SfA7Sr20;AQ1f0O_)6uJjG zGZaYoqNJ?1ruU?eO7$7vyG__nEGQ8x1UFzO{clAAR_UrZ!s?B_w@7HXX+#>-%VC`f n@JNc6H9nW|E{YI=Wupilql|xM*@SwIHE$cgEX|nbieLW=$$1&L diff --git a/gestao_raul/Lib/site-packages/pip/_vendor/platformdirs/__pycache__/version.cpython-310.pyc b/gestao_raul/Lib/site-packages/pip/_vendor/platformdirs/__pycache__/version.cpython-310.pyc index 486e0d55bd76a5d7712454ee6196e2fc1c5bece2..05a75cc11f3fc98da1744ecb35d8b89c90d561fd 100644 GIT binary patch literal 512 zcmYjOO-~y!5VgG@SrS$)7es$T4kQN<2NYEm>9$3nfI@JqE8A&B{|Yy5 zh=1g3Px%WybsPnOEx$K!W~}j(RhqUDtf$e-{1GGc*NgWn1n~uq`3W#Z98n~Y-r<;& z3fF{^I-mhYf`~wbBDy7?5Dz@kSQ62qv4}*%!vR`x1RR5o*W4N)o`i^Q&^F%y?$Ax% zzChj1wjGmnO)s0GmPoT-}RHUAEH|T&q#0i*u%f;;bA^C;3WSoDy#CZYPP6_ zv?d>qkFsGt7seKf>0(jkr{zs9ZC2z{659TFTy5CfVy;ZvAr8fPwBk@rGGGF79Dul31W2SXurNe1L@}l?0%@iw<`kx2 z22JKFRwF$#JtIx#mmtM2*?>e5BaraZWVyv1A77SQRGgWg7axC%9m>2V2os%nUczW4 zLlHYj3yAoY=4=%cS`5??Q=Xbrk{{!epIn-onpaXBlb%{!l9(S~lvtWGc`9Qd2MbU+ I2NMq?0MfWHh5!Hn diff --git a/gestao_raul/Lib/site-packages/pip/_vendor/platformdirs/__pycache__/windows.cpython-310.pyc b/gestao_raul/Lib/site-packages/pip/_vendor/platformdirs/__pycache__/windows.cpython-310.pyc index 1e306ee159137d2085809710248ed4918c3f0f55..80fd7a6c52021596deb90f8885722d9574dfb475 100644 GIT binary patch literal 9085 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 NJH@jjBZ_K#_kZ+dMeG0o delta 3187 zcmb7G&2JmW72la%?k<;~lJ#jz5oI?@sKk`@)!2^XG?G8+R#hC!`6$z1z2dAWN+g$^ z9Y&T)gFxg%QJ@ER4lUZWkbz!wDO&VUw9TQ1wtqqkEKndoa&ZpMwP@m|?+s;r7`~Lm zynS!y&CHwM``SlW9!{l$RLard_k(}GS^n$bz4TD~=O8hSk*ZcBMM99LRa&I#sTXzi zG>Qg1^=hnU7EPsNRIQp_w1JN?vl_2CMTcltHD)pUuEuQN+185**2j`8b=N2+flIRt za4F!jtP8j_>u1NOlS&+9$JJy?NhjEllG4ls(?=rf?Mj^m z8=?0%qG?jlv9^Jb6fy?0va@>4_^vRZa){zVM>yTbl>;f_hBkTiW z5R*70sYV*8349OP>fLii!G){(b>_mBA}oPlH2JFi>-l{fcm`haEE3#zmmV?(?|E=; zlnN`tcbO+VmsNN{j>Yf2h$ifk&YCCGGvE#GmV)|9rHl(^BbqWo`S z@+Zd(NL)>u*EGV%WG?ls!gILvX{L16gM0DP6@C@<#^ujavlGt%+tSvwI|L}SL)j%P+09v69 z#Eh9FEk8<60XUzh`<+|+r${TaxV$e#>G`E=mloXXmv1b+zWCZg-Z*sTK>$1rg>H2) z3rfwJUl$=F@fIFWfn;OyH<`TrOUjV{Joe`|lxvKeeyx!=pWI(vY(L7Ldc~|di8t$_ zQd5Y(CqL;KE95E1tMWJy*jJ?%@+wvMAaV!u8Tond*|tI!qnWEX%Om#!lG8{ENX{Uc zLNbHoAawRaky|j4gb|Jdu_4iDJV~++O(hA9!7%oQz4wG!YGw(yaL33gg%wtH>t4-Q zrYj>={=uyJ=|D{w7>gm7_TY2Zv81bFuJ6QJ+I@n-#O$WV$Arn^E$tWDFX=YVgK{Pd=d_c5^pYDzH$A=>sPKVT#n+G9{W@NuK$G$ z_DFsb3A%7me%3$xj&;a`%6S+jk>%IlukfHA>1AI;&Rbr!>0jnN;CY>&M};IPxbJ&h zT|6?mA3|+E1aGhW>A+~a465M}5StDWs#8LV@yImjmv$@-^~)w{Vi0}>6pkQ0=e}^`QC};8!Dl=U#^6LZ{}744y~pV=E_Z|*LC5m4ust& zR|+`yOCsmh!wsJ+O=#)4P8N=9?O`qiqt5>y$KSruoCpc(1w{$>=1G==j6z8Mks2>gE-9&K-eUWi4E+6X;> z|D_qDU)Ux#5Ch?-S)eM>k2nCq$Fxum_z^Jwj{|nV0T{5NZ3xQZ+X%S67TYnI2~m#G zOYg^sCM@+CqqXQI_&C}od`{54r3UERJ8^KB(=uQ)ozJxlbmE!=PD*X{U-boGjez7f zDq=NP5}OSG`N458^}#757<4Be;63;?Ab>H@ie>pru7MpQvvZU@n`5(3+m(kBoe}`eEEJKx++5-BqN)Mh)M20C z%R%{YWbpJoU_(sAPEH(g40WKdck2%61{ax>*W}#jSR0MS@~1q4g-2)*_+*=MOF#+O zvLHdUs(wd%TNCh+W@y6L93&e4MawX@Rz_L@N*mAfP7gzK&}MU(rk%PFcWi&a1Uw*33a@v5rg9b3`V z&Smf@^~n=it_yhyiw}IQIOTBrLM>p;s(%qdR{4^If@MQyB=JwPy7R8n?F={r*#y`_. Makes use of the - `appname ` and - `version `. + Follows the guidance `from here `_. + + Makes use of the `appname `, `version + `, `ensure_exists `. + """ @property @@ -29,7 +33,8 @@ class Android(PlatformDirsABC): @property def user_config_dir(self) -> str: """ - :return: config directory tied to the user, e.g. ``/data/user///shared_prefs/`` + :return: config directory tied to the user, e.g. \ + ``/data/user///shared_prefs/`` """ return self._append_app_name_and_version(cast(str, _android_folder()), "shared_prefs") @@ -40,9 +45,14 @@ class Android(PlatformDirsABC): @property def user_cache_dir(self) -> str: - """:return: cache directory tied to the user, e.g. e.g. ``/data/user///cache/``""" + """:return: cache directory tied to the user, e.g.,``/data/user///cache/``""" return self._append_app_name_and_version(cast(str, _android_folder()), "cache") + @property + def site_cache_dir(self) -> str: + """:return: cache directory shared by users, same as `user_cache_dir`""" + return self.user_cache_dir + @property def user_state_dir(self) -> str: """:return: state directory tied to the user, same as `user_data_dir`""" @@ -56,16 +66,39 @@ class Android(PlatformDirsABC): """ path = self.user_cache_dir if self.opinion: - path = os.path.join(path, "log") + path = os.path.join(path, "log") # noqa: PTH118 return path @property def user_documents_dir(self) -> str: - """ - :return: documents directory tied to the user e.g. ``/storage/emulated/0/Documents`` - """ + """:return: documents directory tied to the user e.g. ``/storage/emulated/0/Documents``""" return _android_documents_folder() + @property + def user_downloads_dir(self) -> str: + """:return: downloads directory tied to the user e.g. ``/storage/emulated/0/Downloads``""" + return _android_downloads_folder() + + @property + def user_pictures_dir(self) -> str: + """:return: pictures directory tied to the user e.g. ``/storage/emulated/0/Pictures``""" + return _android_pictures_folder() + + @property + def user_videos_dir(self) -> str: + """:return: videos directory tied to the user e.g. ``/storage/emulated/0/DCIM/Camera``""" + return _android_videos_folder() + + @property + def user_music_dir(self) -> str: + """:return: music directory tied to the user e.g. ``/storage/emulated/0/Music``""" + return _android_music_folder() + + @property + def user_desktop_dir(self) -> str: + """:return: desktop directory tied to the user e.g. ``/storage/emulated/0/Desktop``""" + return "/storage/emulated/0/Desktop" + @property def user_runtime_dir(self) -> str: """ @@ -74,21 +107,43 @@ class Android(PlatformDirsABC): """ path = self.user_cache_dir if self.opinion: - path = os.path.join(path, "tmp") + path = os.path.join(path, "tmp") # noqa: PTH118 return path + @property + def site_runtime_dir(self) -> str: + """:return: runtime directory shared by users, same as `user_runtime_dir`""" + return self.user_runtime_dir + @lru_cache(maxsize=1) -def _android_folder() -> str | None: - """:return: base folder for the Android OS or None if cannot be found""" - try: - # First try to get path to android app via pyjnius - from jnius import autoclass +def _android_folder() -> str | None: # noqa: C901 + """:return: base folder for the Android OS or None if it cannot be found""" + result: str | None = None + # type checker isn't happy with our "import android", just don't do this when type checking see + # https://stackoverflow.com/a/61394121 + if not TYPE_CHECKING: + try: + # First try to get a path to android app using python4android (if available)... + from android import mActivity # noqa: PLC0415 - Context = autoclass("android.content.Context") # noqa: N806 - result: str | None = Context.getFilesDir().getParentFile().getAbsolutePath() - except Exception: - # if fails find an android folder looking path on the sys.path + context = cast("android.content.Context", mActivity.getApplicationContext()) # noqa: F821 + result = context.getFilesDir().getParentFile().getAbsolutePath() + except Exception: # noqa: BLE001 + result = None + if result is None: + try: + # ...and fall back to using plain pyjnius, if python4android isn't available or doesn't deliver any useful + # result... + from jnius import autoclass # noqa: PLC0415 + + context = autoclass("android.content.Context") + result = context.getFilesDir().getParentFile().getAbsolutePath() + except Exception: # noqa: BLE001 + result = None + if result is None: + # and if that fails, too, find an android folder looking at path on the sys.path + # warning: only works for apps installed under /data, not adopted storage etc. pattern = re.compile(r"/data/(data|user/\d+)/(.+)/files") for path in sys.path: if pattern.match(path): @@ -96,6 +151,16 @@ def _android_folder() -> str | None: break else: result = None + if result is None: + # one last try: find an android folder looking at path on the sys.path taking adopted storage paths into + # account + pattern = re.compile(r"/mnt/expand/[a-fA-F0-9-]{36}/(data|user/\d+)/(.+)/files") + for path in sys.path: + if pattern.match(path): + result = path.split("/files")[0] + break + else: + result = None return result @@ -104,17 +169,81 @@ def _android_documents_folder() -> str: """:return: documents folder for the Android OS""" # Get directories with pyjnius try: - from jnius import autoclass + from jnius import autoclass # noqa: PLC0415 - Context = autoclass("android.content.Context") # noqa: N806 - Environment = autoclass("android.os.Environment") # noqa: N806 - documents_dir: str = Context.getExternalFilesDir(Environment.DIRECTORY_DOCUMENTS).getAbsolutePath() - except Exception: + context = autoclass("android.content.Context") + environment = autoclass("android.os.Environment") + documents_dir: str = context.getExternalFilesDir(environment.DIRECTORY_DOCUMENTS).getAbsolutePath() + except Exception: # noqa: BLE001 documents_dir = "/storage/emulated/0/Documents" return documents_dir +@lru_cache(maxsize=1) +def _android_downloads_folder() -> str: + """:return: downloads folder for the Android OS""" + # Get directories with pyjnius + try: + from jnius import autoclass # noqa: PLC0415 + + context = autoclass("android.content.Context") + environment = autoclass("android.os.Environment") + downloads_dir: str = context.getExternalFilesDir(environment.DIRECTORY_DOWNLOADS).getAbsolutePath() + except Exception: # noqa: BLE001 + downloads_dir = "/storage/emulated/0/Downloads" + + return downloads_dir + + +@lru_cache(maxsize=1) +def _android_pictures_folder() -> str: + """:return: pictures folder for the Android OS""" + # Get directories with pyjnius + try: + from jnius import autoclass # noqa: PLC0415 + + context = autoclass("android.content.Context") + environment = autoclass("android.os.Environment") + pictures_dir: str = context.getExternalFilesDir(environment.DIRECTORY_PICTURES).getAbsolutePath() + except Exception: # noqa: BLE001 + pictures_dir = "/storage/emulated/0/Pictures" + + return pictures_dir + + +@lru_cache(maxsize=1) +def _android_videos_folder() -> str: + """:return: videos folder for the Android OS""" + # Get directories with pyjnius + try: + from jnius import autoclass # noqa: PLC0415 + + context = autoclass("android.content.Context") + environment = autoclass("android.os.Environment") + videos_dir: str = context.getExternalFilesDir(environment.DIRECTORY_DCIM).getAbsolutePath() + except Exception: # noqa: BLE001 + videos_dir = "/storage/emulated/0/DCIM/Camera" + + return videos_dir + + +@lru_cache(maxsize=1) +def _android_music_folder() -> str: + """:return: music folder for the Android OS""" + # Get directories with pyjnius + try: + from jnius import autoclass # noqa: PLC0415 + + context = autoclass("android.content.Context") + environment = autoclass("android.os.Environment") + music_dir: str = context.getExternalFilesDir(environment.DIRECTORY_MUSIC).getAbsolutePath() + except Exception: # noqa: BLE001 + music_dir = "/storage/emulated/0/Music" + + return music_dir + + __all__ = [ "Android", ] diff --git a/gestao_raul/Lib/site-packages/pip/_vendor/platformdirs/api.py b/gestao_raul/Lib/site-packages/pip/_vendor/platformdirs/api.py index 6f6e2c2..18d660e 100644 --- a/gestao_raul/Lib/site-packages/pip/_vendor/platformdirs/api.py +++ b/gestao_raul/Lib/site-packages/pip/_vendor/platformdirs/api.py @@ -1,28 +1,29 @@ +"""Base API.""" + from __future__ import annotations import os -import sys from abc import ABC, abstractmethod from pathlib import Path +from typing import TYPE_CHECKING -if sys.version_info >= (3, 8): # pragma: no branch - from typing import Literal # pragma: no cover +if TYPE_CHECKING: + from typing import Iterator, Literal -class PlatformDirsABC(ABC): - """ - Abstract base class for platform directories. - """ +class PlatformDirsABC(ABC): # noqa: PLR0904 + """Abstract base class for platform directories.""" - def __init__( + def __init__( # noqa: PLR0913, PLR0917 self, appname: str | None = None, appauthor: str | None | Literal[False] = None, version: str | None = None, - roaming: bool = False, - multipath: bool = False, - opinion: bool = True, - ): + roaming: bool = False, # noqa: FBT001, FBT002 + multipath: bool = False, # noqa: FBT001, FBT002 + opinion: bool = True, # noqa: FBT001, FBT002 + ensure_exists: bool = False, # noqa: FBT001, FBT002 + ) -> None: """ Create a new platform directory. @@ -32,30 +33,49 @@ class PlatformDirsABC(ABC): :param roaming: See `roaming`. :param multipath: See `multipath`. :param opinion: See `opinion`. + :param ensure_exists: See `ensure_exists`. + """ self.appname = appname #: The name of application. self.appauthor = appauthor """ - The name of the app author or distributing body for this application. Typically, it is the owning company name. - Defaults to `appname`. You may pass ``False`` to disable it. + The name of the app author or distributing body for this application. + + Typically, it is the owning company name. Defaults to `appname`. You may pass ``False`` to disable it. + """ self.version = version """ - An optional version path element to append to the path. You might want to use this if you want multiple versions - of your app to be able to run independently. If used, this would typically be ``.``. + An optional version path element to append to the path. + + You might want to use this if you want multiple versions of your app to be able to run independently. If used, + this would typically be ``.``. + """ self.roaming = roaming """ - Whether to use the roaming appdata directory on Windows. That means that for users on a Windows network setup - for roaming profiles, this user data will be synced on login (see - `here `_). + Whether to use the roaming appdata directory on Windows. + + That means that for users on a Windows network setup for roaming profiles, this user data will be synced on + login (see + `here `_). + """ self.multipath = multipath """ - An optional parameter only applicable to Unix/Linux which indicates that the entire list of data dirs should be - returned. By default, the first item would only be returned. + An optional parameter which indicates that the entire list of data dirs should be returned. + + By default, the first item would only be returned. + """ self.opinion = opinion #: A flag to indicating to use opinionated values. + self.ensure_exists = ensure_exists + """ + Optionally create the directory (and any missing parents) upon access if it does not exist. + + By default, no directories are created. + + """ def _append_app_name_and_version(self, *base: str) -> str: params = list(base[1:]) @@ -63,7 +83,19 @@ class PlatformDirsABC(ABC): params.append(self.appname) if self.version: params.append(self.version) - return os.path.join(base[0], *params) + path = os.path.join(base[0], *params) # noqa: PTH118 + self._optionally_create_directory(path) + return path + + def _optionally_create_directory(self, path: str) -> None: + if self.ensure_exists: + Path(path).mkdir(parents=True, exist_ok=True) + + def _first_item_as_path_if_multipath(self, directory: str) -> Path: + if self.multipath: + # If multipath is True, the first path is returned. + directory = directory.split(os.pathsep)[0] + return Path(directory) @property @abstractmethod @@ -90,6 +122,11 @@ class PlatformDirsABC(ABC): def user_cache_dir(self) -> str: """:return: cache directory tied to the user""" + @property + @abstractmethod + def site_cache_dir(self) -> str: + """:return: cache directory shared by users""" + @property @abstractmethod def user_state_dir(self) -> str: @@ -105,11 +142,41 @@ class PlatformDirsABC(ABC): def user_documents_dir(self) -> str: """:return: documents directory tied to the user""" + @property + @abstractmethod + def user_downloads_dir(self) -> str: + """:return: downloads directory tied to the user""" + + @property + @abstractmethod + def user_pictures_dir(self) -> str: + """:return: pictures directory tied to the user""" + + @property + @abstractmethod + def user_videos_dir(self) -> str: + """:return: videos directory tied to the user""" + + @property + @abstractmethod + def user_music_dir(self) -> str: + """:return: music directory tied to the user""" + + @property + @abstractmethod + def user_desktop_dir(self) -> str: + """:return: desktop directory tied to the user""" + @property @abstractmethod def user_runtime_dir(self) -> str: """:return: runtime directory tied to the user""" + @property + @abstractmethod + def site_runtime_dir(self) -> str: + """:return: runtime directory shared by users""" + @property def user_data_path(self) -> Path: """:return: data path tied to the user""" @@ -135,6 +202,11 @@ class PlatformDirsABC(ABC): """:return: cache path tied to the user""" return Path(self.user_cache_dir) + @property + def site_cache_path(self) -> Path: + """:return: cache path shared by users""" + return Path(self.site_cache_dir) + @property def user_state_path(self) -> Path: """:return: state path tied to the user""" @@ -147,10 +219,80 @@ class PlatformDirsABC(ABC): @property def user_documents_path(self) -> Path: - """:return: documents path tied to the user""" + """:return: documents a path tied to the user""" return Path(self.user_documents_dir) + @property + def user_downloads_path(self) -> Path: + """:return: downloads path tied to the user""" + return Path(self.user_downloads_dir) + + @property + def user_pictures_path(self) -> Path: + """:return: pictures path tied to the user""" + return Path(self.user_pictures_dir) + + @property + def user_videos_path(self) -> Path: + """:return: videos path tied to the user""" + return Path(self.user_videos_dir) + + @property + def user_music_path(self) -> Path: + """:return: music path tied to the user""" + return Path(self.user_music_dir) + + @property + def user_desktop_path(self) -> Path: + """:return: desktop path tied to the user""" + return Path(self.user_desktop_dir) + @property def user_runtime_path(self) -> Path: """:return: runtime path tied to the user""" return Path(self.user_runtime_dir) + + @property + def site_runtime_path(self) -> Path: + """:return: runtime path shared by users""" + return Path(self.site_runtime_dir) + + def iter_config_dirs(self) -> Iterator[str]: + """:yield: all user and site configuration directories.""" + yield self.user_config_dir + yield self.site_config_dir + + def iter_data_dirs(self) -> Iterator[str]: + """:yield: all user and site data directories.""" + yield self.user_data_dir + yield self.site_data_dir + + def iter_cache_dirs(self) -> Iterator[str]: + """:yield: all user and site cache directories.""" + yield self.user_cache_dir + yield self.site_cache_dir + + def iter_runtime_dirs(self) -> Iterator[str]: + """:yield: all user and site runtime directories.""" + yield self.user_runtime_dir + yield self.site_runtime_dir + + def iter_config_paths(self) -> Iterator[Path]: + """:yield: all user and site configuration paths.""" + for path in self.iter_config_dirs(): + yield Path(path) + + def iter_data_paths(self) -> Iterator[Path]: + """:yield: all user and site data paths.""" + for path in self.iter_data_dirs(): + yield Path(path) + + def iter_cache_paths(self) -> Iterator[Path]: + """:yield: all user and site cache paths.""" + for path in self.iter_cache_dirs(): + yield Path(path) + + def iter_runtime_paths(self) -> Iterator[Path]: + """:yield: all user and site runtime paths.""" + for path in self.iter_runtime_dirs(): + yield Path(path) diff --git a/gestao_raul/Lib/site-packages/pip/_vendor/platformdirs/macos.py b/gestao_raul/Lib/site-packages/pip/_vendor/platformdirs/macos.py index a01337c..e4b0391 100644 --- a/gestao_raul/Lib/site-packages/pip/_vendor/platformdirs/macos.py +++ b/gestao_raul/Lib/site-packages/pip/_vendor/platformdirs/macos.py @@ -1,42 +1,92 @@ +"""macOS.""" + from __future__ import annotations -import os +import os.path +import sys +from typing import TYPE_CHECKING from .api import PlatformDirsABC +if TYPE_CHECKING: + from pathlib import Path + class MacOS(PlatformDirsABC): """ - Platform directories for the macOS operating system. Follows the guidance from `Apple documentation - `_. - Makes use of the `appname ` and - `version `. + Platform directories for the macOS operating system. + + Follows the guidance from + `Apple documentation `_. + Makes use of the `appname `, + `version `, + `ensure_exists `. + """ @property def user_data_dir(self) -> str: """:return: data directory tied to the user, e.g. ``~/Library/Application Support/$appname/$version``""" - return self._append_app_name_and_version(os.path.expanduser("~/Library/Application Support/")) + return self._append_app_name_and_version(os.path.expanduser("~/Library/Application Support")) # noqa: PTH111 @property def site_data_dir(self) -> str: - """:return: data directory shared by users, e.g. ``/Library/Application Support/$appname/$version``""" - return self._append_app_name_and_version("/Library/Application Support") + """ + :return: data directory shared by users, e.g. ``/Library/Application Support/$appname/$version``. + If we're using a Python binary managed by `Homebrew `_, the directory + will be under the Homebrew prefix, e.g. ``/opt/homebrew/share/$appname/$version``. + If `multipath ` is enabled, and we're in Homebrew, + the response is a multi-path string separated by ":", e.g. + ``/opt/homebrew/share/$appname/$version:/Library/Application Support/$appname/$version`` + """ + is_homebrew = sys.prefix.startswith("/opt/homebrew") + path_list = [self._append_app_name_and_version("/opt/homebrew/share")] if is_homebrew else [] + path_list.append(self._append_app_name_and_version("/Library/Application Support")) + if self.multipath: + return os.pathsep.join(path_list) + return path_list[0] + + @property + def site_data_path(self) -> Path: + """:return: data path shared by users. Only return the first item, even if ``multipath`` is set to ``True``""" + return self._first_item_as_path_if_multipath(self.site_data_dir) @property def user_config_dir(self) -> str: - """:return: config directory tied to the user, e.g. ``~/Library/Preferences/$appname/$version``""" - return self._append_app_name_and_version(os.path.expanduser("~/Library/Preferences/")) + """:return: config directory tied to the user, same as `user_data_dir`""" + return self.user_data_dir @property def site_config_dir(self) -> str: - """:return: config directory shared by the users, e.g. ``/Library/Preferences/$appname``""" - return self._append_app_name_and_version("/Library/Preferences") + """:return: config directory shared by the users, same as `site_data_dir`""" + return self.site_data_dir @property def user_cache_dir(self) -> str: """:return: cache directory tied to the user, e.g. ``~/Library/Caches/$appname/$version``""" - return self._append_app_name_and_version(os.path.expanduser("~/Library/Caches")) + return self._append_app_name_and_version(os.path.expanduser("~/Library/Caches")) # noqa: PTH111 + + @property + def site_cache_dir(self) -> str: + """ + :return: cache directory shared by users, e.g. ``/Library/Caches/$appname/$version``. + If we're using a Python binary managed by `Homebrew `_, the directory + will be under the Homebrew prefix, e.g. ``/opt/homebrew/var/cache/$appname/$version``. + If `multipath ` is enabled, and we're in Homebrew, + the response is a multi-path string separated by ":", e.g. + ``/opt/homebrew/var/cache/$appname/$version:/Library/Caches/$appname/$version`` + """ + is_homebrew = sys.prefix.startswith("/opt/homebrew") + path_list = [self._append_app_name_and_version("/opt/homebrew/var/cache")] if is_homebrew else [] + path_list.append(self._append_app_name_and_version("/Library/Caches")) + if self.multipath: + return os.pathsep.join(path_list) + return path_list[0] + + @property + def site_cache_path(self) -> Path: + """:return: cache path shared by users. Only return the first item, even if ``multipath`` is set to ``True``""" + return self._first_item_as_path_if_multipath(self.site_cache_dir) @property def user_state_dir(self) -> str: @@ -46,17 +96,47 @@ class MacOS(PlatformDirsABC): @property def user_log_dir(self) -> str: """:return: log directory tied to the user, e.g. ``~/Library/Logs/$appname/$version``""" - return self._append_app_name_and_version(os.path.expanduser("~/Library/Logs")) + return self._append_app_name_and_version(os.path.expanduser("~/Library/Logs")) # noqa: PTH111 @property def user_documents_dir(self) -> str: """:return: documents directory tied to the user, e.g. ``~/Documents``""" - return os.path.expanduser("~/Documents") + return os.path.expanduser("~/Documents") # noqa: PTH111 + + @property + def user_downloads_dir(self) -> str: + """:return: downloads directory tied to the user, e.g. ``~/Downloads``""" + return os.path.expanduser("~/Downloads") # noqa: PTH111 + + @property + def user_pictures_dir(self) -> str: + """:return: pictures directory tied to the user, e.g. ``~/Pictures``""" + return os.path.expanduser("~/Pictures") # noqa: PTH111 + + @property + def user_videos_dir(self) -> str: + """:return: videos directory tied to the user, e.g. ``~/Movies``""" + return os.path.expanduser("~/Movies") # noqa: PTH111 + + @property + def user_music_dir(self) -> str: + """:return: music directory tied to the user, e.g. ``~/Music``""" + return os.path.expanduser("~/Music") # noqa: PTH111 + + @property + def user_desktop_dir(self) -> str: + """:return: desktop directory tied to the user, e.g. ``~/Desktop``""" + return os.path.expanduser("~/Desktop") # noqa: PTH111 @property def user_runtime_dir(self) -> str: """:return: runtime directory tied to the user, e.g. ``~/Library/Caches/TemporaryItems/$appname/$version``""" - return self._append_app_name_and_version(os.path.expanduser("~/Library/Caches/TemporaryItems")) + return self._append_app_name_and_version(os.path.expanduser("~/Library/Caches/TemporaryItems")) # noqa: PTH111 + + @property + def site_runtime_dir(self) -> str: + """:return: runtime directory shared by users, same as `user_runtime_dir`""" + return self.user_runtime_dir __all__ = [ diff --git a/gestao_raul/Lib/site-packages/pip/_vendor/platformdirs/py.typed b/gestao_raul/Lib/site-packages/pip/_vendor/platformdirs/py.typed new file mode 100644 index 0000000..e69de29 diff --git a/gestao_raul/Lib/site-packages/pip/_vendor/platformdirs/unix.py b/gestao_raul/Lib/site-packages/pip/_vendor/platformdirs/unix.py index 9aca5a0..f1942e9 100644 --- a/gestao_raul/Lib/site-packages/pip/_vendor/platformdirs/unix.py +++ b/gestao_raul/Lib/site-packages/pip/_vendor/platformdirs/unix.py @@ -1,30 +1,36 @@ +"""Unix.""" + from __future__ import annotations import os import sys from configparser import ConfigParser from pathlib import Path +from typing import Iterator, NoReturn from .api import PlatformDirsABC -if sys.platform.startswith("linux"): # pragma: no branch # no op check, only to please the type checker - from os import getuid +if sys.platform == "win32": + + def getuid() -> NoReturn: + msg = "should only be used on Unix" + raise RuntimeError(msg) + else: - - def getuid() -> int: - raise RuntimeError("should only be used on Linux") + from os import getuid -class Unix(PlatformDirsABC): +class Unix(PlatformDirsABC): # noqa: PLR0904 """ - On Unix/Linux, we follow the - `XDG Basedir Spec `_. The spec allows - overriding directories with environment variables. The examples show are the default values, alongside the name of - the environment variable that overrides them. Makes use of the - `appname `, - `version `, - `multipath `, - `opinion `. + On Unix/Linux, we follow the `XDG Basedir Spec `_. + + The spec allows overriding directories with environment variables. The examples shown are the default values, + alongside the name of the environment variable that overrides them. Makes use of the `appname + `, `version `, `multipath + `, `opinion `, `ensure_exists + `. + """ @property @@ -35,28 +41,28 @@ class Unix(PlatformDirsABC): """ path = os.environ.get("XDG_DATA_HOME", "") if not path.strip(): - path = os.path.expanduser("~/.local/share") + path = os.path.expanduser("~/.local/share") # noqa: PTH111 return self._append_app_name_and_version(path) + @property + def _site_data_dirs(self) -> list[str]: + path = os.environ.get("XDG_DATA_DIRS", "") + if not path.strip(): + path = f"/usr/local/share{os.pathsep}/usr/share" + return [self._append_app_name_and_version(p) for p in path.split(os.pathsep)] + @property def site_data_dir(self) -> str: """ :return: data directories shared by users (if `multipath ` is - enabled and ``XDG_DATA_DIR`` is set and a multi path the response is also a multi path separated by the OS - path separator), e.g. ``/usr/local/share/$appname/$version`` or ``/usr/share/$appname/$version`` + enabled and ``XDG_DATA_DIRS`` is set and a multi path the response is also a multi path separated by the + OS path separator), e.g. ``/usr/local/share/$appname/$version`` or ``/usr/share/$appname/$version`` """ # XDG default for $XDG_DATA_DIRS; only first, if multipath is False - path = os.environ.get("XDG_DATA_DIRS", "") - if not path.strip(): - path = f"/usr/local/share{os.pathsep}/usr/share" - return self._with_multi_path(path) - - def _with_multi_path(self, path: str) -> str: - path_list = path.split(os.pathsep) + dirs = self._site_data_dirs if not self.multipath: - path_list = path_list[0:1] - path_list = [self._append_app_name_and_version(os.path.expanduser(p)) for p in path_list] - return os.pathsep.join(path_list) + return dirs[0] + return os.pathsep.join(dirs) @property def user_config_dir(self) -> str: @@ -66,21 +72,28 @@ class Unix(PlatformDirsABC): """ path = os.environ.get("XDG_CONFIG_HOME", "") if not path.strip(): - path = os.path.expanduser("~/.config") + path = os.path.expanduser("~/.config") # noqa: PTH111 return self._append_app_name_and_version(path) + @property + def _site_config_dirs(self) -> list[str]: + path = os.environ.get("XDG_CONFIG_DIRS", "") + if not path.strip(): + path = "/etc/xdg" + return [self._append_app_name_and_version(p) for p in path.split(os.pathsep)] + @property def site_config_dir(self) -> str: """ :return: config directories shared by users (if `multipath ` - is enabled and ``XDG_DATA_DIR`` is set and a multi path the response is also a multi path separated by the OS - path separator), e.g. ``/etc/xdg/$appname/$version`` + is enabled and ``XDG_CONFIG_DIRS`` is set and a multi path the response is also a multi path separated by + the OS path separator), e.g. ``/etc/xdg/$appname/$version`` """ # XDG default for $XDG_CONFIG_DIRS only first, if multipath is False - path = os.environ.get("XDG_CONFIG_DIRS", "") - if not path.strip(): - path = "/etc/xdg" - return self._with_multi_path(path) + dirs = self._site_config_dirs + if not self.multipath: + return dirs[0] + return os.pathsep.join(dirs) @property def user_cache_dir(self) -> str: @@ -90,9 +103,14 @@ class Unix(PlatformDirsABC): """ path = os.environ.get("XDG_CACHE_HOME", "") if not path.strip(): - path = os.path.expanduser("~/.cache") + path = os.path.expanduser("~/.cache") # noqa: PTH111 return self._append_app_name_and_version(path) + @property + def site_cache_dir(self) -> str: + """:return: cache directory shared by users, e.g. ``/var/cache/$appname/$version``""" + return self._append_app_name_and_version("/var/cache") + @property def user_state_dir(self) -> str: """ @@ -101,67 +119,138 @@ class Unix(PlatformDirsABC): """ path = os.environ.get("XDG_STATE_HOME", "") if not path.strip(): - path = os.path.expanduser("~/.local/state") + path = os.path.expanduser("~/.local/state") # noqa: PTH111 return self._append_app_name_and_version(path) @property def user_log_dir(self) -> str: - """ - :return: log directory tied to the user, same as `user_state_dir` if not opinionated else ``log`` in it - """ + """:return: log directory tied to the user, same as `user_state_dir` if not opinionated else ``log`` in it""" path = self.user_state_dir if self.opinion: - path = os.path.join(path, "log") + path = os.path.join(path, "log") # noqa: PTH118 + self._optionally_create_directory(path) return path @property def user_documents_dir(self) -> str: - """ - :return: documents directory tied to the user, e.g. ``~/Documents`` - """ - documents_dir = _get_user_dirs_folder("XDG_DOCUMENTS_DIR") - if documents_dir is None: - documents_dir = os.environ.get("XDG_DOCUMENTS_DIR", "").strip() - if not documents_dir: - documents_dir = os.path.expanduser("~/Documents") + """:return: documents directory tied to the user, e.g. ``~/Documents``""" + return _get_user_media_dir("XDG_DOCUMENTS_DIR", "~/Documents") - return documents_dir + @property + def user_downloads_dir(self) -> str: + """:return: downloads directory tied to the user, e.g. ``~/Downloads``""" + return _get_user_media_dir("XDG_DOWNLOAD_DIR", "~/Downloads") + + @property + def user_pictures_dir(self) -> str: + """:return: pictures directory tied to the user, e.g. ``~/Pictures``""" + return _get_user_media_dir("XDG_PICTURES_DIR", "~/Pictures") + + @property + def user_videos_dir(self) -> str: + """:return: videos directory tied to the user, e.g. ``~/Videos``""" + return _get_user_media_dir("XDG_VIDEOS_DIR", "~/Videos") + + @property + def user_music_dir(self) -> str: + """:return: music directory tied to the user, e.g. ``~/Music``""" + return _get_user_media_dir("XDG_MUSIC_DIR", "~/Music") + + @property + def user_desktop_dir(self) -> str: + """:return: desktop directory tied to the user, e.g. ``~/Desktop``""" + return _get_user_media_dir("XDG_DESKTOP_DIR", "~/Desktop") @property def user_runtime_dir(self) -> str: """ :return: runtime directory tied to the user, e.g. ``/run/user/$(id -u)/$appname/$version`` or - ``$XDG_RUNTIME_DIR/$appname/$version`` + ``$XDG_RUNTIME_DIR/$appname/$version``. + + For FreeBSD/OpenBSD/NetBSD, it would return ``/var/run/user/$(id -u)/$appname/$version`` if + exists, otherwise ``/tmp/runtime-$(id -u)/$appname/$version``, if``$XDG_RUNTIME_DIR`` + is not set. """ path = os.environ.get("XDG_RUNTIME_DIR", "") if not path.strip(): - path = f"/run/user/{getuid()}" + if sys.platform.startswith(("freebsd", "openbsd", "netbsd")): + path = f"/var/run/user/{getuid()}" + if not Path(path).exists(): + path = f"/tmp/runtime-{getuid()}" # noqa: S108 + else: + path = f"/run/user/{getuid()}" + return self._append_app_name_and_version(path) + + @property + def site_runtime_dir(self) -> str: + """ + :return: runtime directory shared by users, e.g. ``/run/$appname/$version`` or \ + ``$XDG_RUNTIME_DIR/$appname/$version``. + + Note that this behaves almost exactly like `user_runtime_dir` if ``$XDG_RUNTIME_DIR`` is set, but will + fall back to paths associated to the root user instead of a regular logged-in user if it's not set. + + If you wish to ensure that a logged-in root user path is returned e.g. ``/run/user/0``, use `user_runtime_dir` + instead. + + For FreeBSD/OpenBSD/NetBSD, it would return ``/var/run/$appname/$version`` if ``$XDG_RUNTIME_DIR`` is not set. + """ + path = os.environ.get("XDG_RUNTIME_DIR", "") + if not path.strip(): + if sys.platform.startswith(("freebsd", "openbsd", "netbsd")): + path = "/var/run" + else: + path = "/run" return self._append_app_name_and_version(path) @property def site_data_path(self) -> Path: - """:return: data path shared by users. Only return first item, even if ``multipath`` is set to ``True``""" + """:return: data path shared by users. Only return the first item, even if ``multipath`` is set to ``True``""" return self._first_item_as_path_if_multipath(self.site_data_dir) @property def site_config_path(self) -> Path: - """:return: config path shared by the users. Only return first item, even if ``multipath`` is set to ``True``""" + """:return: config path shared by the users, returns the first item, even if ``multipath`` is set to ``True``""" return self._first_item_as_path_if_multipath(self.site_config_dir) - def _first_item_as_path_if_multipath(self, directory: str) -> Path: - if self.multipath: - # If multipath is True, the first path is returned. - directory = directory.split(os.pathsep)[0] - return Path(directory) + @property + def site_cache_path(self) -> Path: + """:return: cache path shared by users. Only return the first item, even if ``multipath`` is set to ``True``""" + return self._first_item_as_path_if_multipath(self.site_cache_dir) + + def iter_config_dirs(self) -> Iterator[str]: + """:yield: all user and site configuration directories.""" + yield self.user_config_dir + yield from self._site_config_dirs + + def iter_data_dirs(self) -> Iterator[str]: + """:yield: all user and site data directories.""" + yield self.user_data_dir + yield from self._site_data_dirs + + +def _get_user_media_dir(env_var: str, fallback_tilde_path: str) -> str: + media_dir = _get_user_dirs_folder(env_var) + if media_dir is None: + media_dir = os.environ.get(env_var, "").strip() + if not media_dir: + media_dir = os.path.expanduser(fallback_tilde_path) # noqa: PTH111 + + return media_dir def _get_user_dirs_folder(key: str) -> str | None: - """Return directory from user-dirs.dirs config file. See https://freedesktop.org/wiki/Software/xdg-user-dirs/""" - user_dirs_config_path = os.path.join(Unix().user_config_dir, "user-dirs.dirs") - if os.path.exists(user_dirs_config_path): + """ + Return directory from user-dirs.dirs config file. + + See https://freedesktop.org/wiki/Software/xdg-user-dirs/. + + """ + user_dirs_config_path = Path(Unix().user_config_dir) / "user-dirs.dirs" + if user_dirs_config_path.exists(): parser = ConfigParser() - with open(user_dirs_config_path) as stream: + with user_dirs_config_path.open() as stream: # Add fake section header, so ConfigParser doesn't complain parser.read_string(f"[top]\n{stream.read()}") @@ -170,8 +259,7 @@ def _get_user_dirs_folder(key: str) -> str | None: path = parser["top"][key].strip('"') # Handle relative home paths - path = path.replace("$HOME", os.path.expanduser("~")) - return path + return path.replace("$HOME", os.path.expanduser("~")) # noqa: PTH111 return None diff --git a/gestao_raul/Lib/site-packages/pip/_vendor/platformdirs/version.py b/gestao_raul/Lib/site-packages/pip/_vendor/platformdirs/version.py index 9f6eb98..afb4924 100644 --- a/gestao_raul/Lib/site-packages/pip/_vendor/platformdirs/version.py +++ b/gestao_raul/Lib/site-packages/pip/_vendor/platformdirs/version.py @@ -1,4 +1,16 @@ # file generated by setuptools_scm # don't change, don't track in version control -__version__ = version = '2.6.2' -__version_tuple__ = version_tuple = (2, 6, 2) +TYPE_CHECKING = False +if TYPE_CHECKING: + from typing import Tuple, Union + VERSION_TUPLE = Tuple[Union[int, str], ...] +else: + VERSION_TUPLE = object + +version: str +__version__: str +__version_tuple__: VERSION_TUPLE +version_tuple: VERSION_TUPLE + +__version__ = version = '4.3.6' +__version_tuple__ = version_tuple = (4, 3, 6) diff --git a/gestao_raul/Lib/site-packages/pip/_vendor/platformdirs/windows.py b/gestao_raul/Lib/site-packages/pip/_vendor/platformdirs/windows.py index d5c27b3..d7bc960 100644 --- a/gestao_raul/Lib/site-packages/pip/_vendor/platformdirs/windows.py +++ b/gestao_raul/Lib/site-packages/pip/_vendor/platformdirs/windows.py @@ -1,23 +1,28 @@ +"""Windows.""" + from __future__ import annotations -import ctypes import os import sys from functools import lru_cache -from typing import Callable +from typing import TYPE_CHECKING from .api import PlatformDirsABC +if TYPE_CHECKING: + from collections.abc import Callable + class Windows(PlatformDirsABC): - """`MSDN on where to store app data files - `_. - Makes use of the - `appname `, - `appauthor `, - `version `, - `roaming `, - `opinion `.""" + """ + `MSDN on where to store app data files `_. + + Makes use of the `appname `, `appauthor + `, `version `, `roaming + `, `opinion `, `ensure_exists + `. + + """ @property def user_data_dir(self) -> str: @@ -41,7 +46,9 @@ class Windows(PlatformDirsABC): params.append(opinion_value) if self.version: params.append(self.version) - return os.path.join(path, *params) + path = os.path.join(path, *params) # noqa: PTH118 + self._optionally_create_directory(path) + return path @property def site_data_dir(self) -> str: @@ -68,6 +75,12 @@ class Windows(PlatformDirsABC): path = os.path.normpath(get_win_folder("CSIDL_LOCAL_APPDATA")) return self._append_parts(path, opinion_value="Cache") + @property + def site_cache_dir(self) -> str: + """:return: cache directory shared by users, e.g. ``C:\\ProgramData\\$appauthor\\$appname\\Cache\\$version``""" + path = os.path.normpath(get_win_folder("CSIDL_COMMON_APPDATA")) + return self._append_parts(path, opinion_value="Cache") + @property def user_state_dir(self) -> str: """:return: state directory tied to the user, same as `user_data_dir`""" @@ -75,35 +88,63 @@ class Windows(PlatformDirsABC): @property def user_log_dir(self) -> str: - """ - :return: log directory tied to the user, same as `user_data_dir` if not opinionated else ``Logs`` in it - """ + """:return: log directory tied to the user, same as `user_data_dir` if not opinionated else ``Logs`` in it""" path = self.user_data_dir if self.opinion: - path = os.path.join(path, "Logs") + path = os.path.join(path, "Logs") # noqa: PTH118 + self._optionally_create_directory(path) return path @property def user_documents_dir(self) -> str: - """ - :return: documents directory tied to the user e.g. ``%USERPROFILE%\\Documents`` - """ + """:return: documents directory tied to the user e.g. ``%USERPROFILE%\\Documents``""" return os.path.normpath(get_win_folder("CSIDL_PERSONAL")) + @property + def user_downloads_dir(self) -> str: + """:return: downloads directory tied to the user e.g. ``%USERPROFILE%\\Downloads``""" + return os.path.normpath(get_win_folder("CSIDL_DOWNLOADS")) + + @property + def user_pictures_dir(self) -> str: + """:return: pictures directory tied to the user e.g. ``%USERPROFILE%\\Pictures``""" + return os.path.normpath(get_win_folder("CSIDL_MYPICTURES")) + + @property + def user_videos_dir(self) -> str: + """:return: videos directory tied to the user e.g. ``%USERPROFILE%\\Videos``""" + return os.path.normpath(get_win_folder("CSIDL_MYVIDEO")) + + @property + def user_music_dir(self) -> str: + """:return: music directory tied to the user e.g. ``%USERPROFILE%\\Music``""" + return os.path.normpath(get_win_folder("CSIDL_MYMUSIC")) + + @property + def user_desktop_dir(self) -> str: + """:return: desktop directory tied to the user, e.g. ``%USERPROFILE%\\Desktop``""" + return os.path.normpath(get_win_folder("CSIDL_DESKTOPDIRECTORY")) + @property def user_runtime_dir(self) -> str: """ :return: runtime directory tied to the user, e.g. ``%USERPROFILE%\\AppData\\Local\\Temp\\$appauthor\\$appname`` """ - path = os.path.normpath(os.path.join(get_win_folder("CSIDL_LOCAL_APPDATA"), "Temp")) + path = os.path.normpath(os.path.join(get_win_folder("CSIDL_LOCAL_APPDATA"), "Temp")) # noqa: PTH118 return self._append_parts(path) + @property + def site_runtime_dir(self) -> str: + """:return: runtime directory shared by users, same as `user_runtime_dir`""" + return self.user_runtime_dir + def get_win_folder_from_env_vars(csidl_name: str) -> str: """Get folder from environment variables.""" - if csidl_name == "CSIDL_PERSONAL": # does not have an environment name - return os.path.join(os.path.normpath(os.environ["USERPROFILE"]), "Documents") + result = get_win_folder_if_csidl_name_not_env_var(csidl_name) + if result is not None: + return result env_var_name = { "CSIDL_APPDATA": "APPDATA", @@ -111,31 +152,58 @@ def get_win_folder_from_env_vars(csidl_name: str) -> str: "CSIDL_LOCAL_APPDATA": "LOCALAPPDATA", }.get(csidl_name) if env_var_name is None: - raise ValueError(f"Unknown CSIDL name: {csidl_name}") + msg = f"Unknown CSIDL name: {csidl_name}" + raise ValueError(msg) result = os.environ.get(env_var_name) if result is None: - raise ValueError(f"Unset environment variable: {env_var_name}") + msg = f"Unset environment variable: {env_var_name}" + raise ValueError(msg) return result -def get_win_folder_from_registry(csidl_name: str) -> str: - """Get folder from the registry. +def get_win_folder_if_csidl_name_not_env_var(csidl_name: str) -> str | None: + """Get a folder for a CSIDL name that does not exist as an environment variable.""" + if csidl_name == "CSIDL_PERSONAL": + return os.path.join(os.path.normpath(os.environ["USERPROFILE"]), "Documents") # noqa: PTH118 + + if csidl_name == "CSIDL_DOWNLOADS": + return os.path.join(os.path.normpath(os.environ["USERPROFILE"]), "Downloads") # noqa: PTH118 + + if csidl_name == "CSIDL_MYPICTURES": + return os.path.join(os.path.normpath(os.environ["USERPROFILE"]), "Pictures") # noqa: PTH118 + + if csidl_name == "CSIDL_MYVIDEO": + return os.path.join(os.path.normpath(os.environ["USERPROFILE"]), "Videos") # noqa: PTH118 + + if csidl_name == "CSIDL_MYMUSIC": + return os.path.join(os.path.normpath(os.environ["USERPROFILE"]), "Music") # noqa: PTH118 + return None + + +def get_win_folder_from_registry(csidl_name: str) -> str: + """ + Get folder from the registry. + + This is a fallback technique at best. I'm not sure if using the registry for these guarantees us the correct answer + for all CSIDL_* names. - This is a fallback technique at best. I'm not sure if using the - registry for this guarantees us the correct answer for all CSIDL_* - names. """ shell_folder_name = { "CSIDL_APPDATA": "AppData", "CSIDL_COMMON_APPDATA": "Common AppData", "CSIDL_LOCAL_APPDATA": "Local AppData", "CSIDL_PERSONAL": "Personal", + "CSIDL_DOWNLOADS": "{374DE290-123F-4565-9164-39C4925E467B}", + "CSIDL_MYPICTURES": "My Pictures", + "CSIDL_MYVIDEO": "My Video", + "CSIDL_MYMUSIC": "My Music", }.get(csidl_name) if shell_folder_name is None: - raise ValueError(f"Unknown CSIDL name: {csidl_name}") + msg = f"Unknown CSIDL name: {csidl_name}" + raise ValueError(msg) if sys.platform != "win32": # only needed for mypy type checker to know that this code runs only on Windows raise NotImplementedError - import winreg + import winreg # noqa: PLC0415 key = winreg.OpenKey(winreg.HKEY_CURRENT_USER, r"Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders") directory, _ = winreg.QueryValueEx(key, shell_folder_name) @@ -144,33 +212,53 @@ def get_win_folder_from_registry(csidl_name: str) -> str: def get_win_folder_via_ctypes(csidl_name: str) -> str: """Get folder with ctypes.""" + # There is no 'CSIDL_DOWNLOADS'. + # Use 'CSIDL_PROFILE' (40) and append the default folder 'Downloads' instead. + # https://learn.microsoft.com/en-us/windows/win32/shell/knownfolderid + + import ctypes # noqa: PLC0415 + csidl_const = { "CSIDL_APPDATA": 26, "CSIDL_COMMON_APPDATA": 35, "CSIDL_LOCAL_APPDATA": 28, "CSIDL_PERSONAL": 5, + "CSIDL_MYPICTURES": 39, + "CSIDL_MYVIDEO": 14, + "CSIDL_MYMUSIC": 13, + "CSIDL_DOWNLOADS": 40, + "CSIDL_DESKTOPDIRECTORY": 16, }.get(csidl_name) if csidl_const is None: - raise ValueError(f"Unknown CSIDL name: {csidl_name}") + msg = f"Unknown CSIDL name: {csidl_name}" + raise ValueError(msg) buf = ctypes.create_unicode_buffer(1024) windll = getattr(ctypes, "windll") # noqa: B009 # using getattr to avoid false positive with mypy type checker windll.shell32.SHGetFolderPathW(None, csidl_const, None, 0, buf) - # Downgrade to short path name if it has highbit chars. - if any(ord(c) > 255 for c in buf): + # Downgrade to short path name if it has high-bit chars. + if any(ord(c) > 255 for c in buf): # noqa: PLR2004 buf2 = ctypes.create_unicode_buffer(1024) if windll.kernel32.GetShortPathNameW(buf.value, buf2, 1024): buf = buf2 + if csidl_name == "CSIDL_DOWNLOADS": + return os.path.join(buf.value, "Downloads") # noqa: PTH118 + return buf.value def _pick_get_win_folder() -> Callable[[str], str]: - if hasattr(ctypes, "windll"): - return get_win_folder_via_ctypes try: - import winreg # noqa: F401 + import ctypes # noqa: PLC0415 + except ImportError: + pass + else: + if hasattr(ctypes, "windll"): + return get_win_folder_via_ctypes + try: + import winreg # noqa: PLC0415, F401 except ImportError: return get_win_folder_from_env_vars else: diff --git a/gestao_raul/Lib/site-packages/pip/_vendor/pygments/__init__.py b/gestao_raul/Lib/site-packages/pip/_vendor/pygments/__init__.py index 7185e53..60ae9bb 100644 --- a/gestao_raul/Lib/site-packages/pip/_vendor/pygments/__init__.py +++ b/gestao_raul/Lib/site-packages/pip/_vendor/pygments/__init__.py @@ -21,12 +21,12 @@ .. _Pygments master branch: https://github.com/pygments/pygments/archive/master.zip#egg=Pygments-dev - :copyright: Copyright 2006-2022 by the Pygments team, see AUTHORS. + :copyright: Copyright 2006-2024 by the Pygments team, see AUTHORS. :license: BSD, see LICENSE for details. """ from io import StringIO, BytesIO -__version__ = '2.13.0' +__version__ = '2.18.0' __docformat__ = 'restructuredtext' __all__ = ['lex', 'format', 'highlight'] @@ -34,7 +34,9 @@ __all__ = ['lex', 'format', 'highlight'] def lex(code, lexer): """ - Lex ``code`` with ``lexer`` and return an iterable of tokens. + Lex `code` with the `lexer` (must be a `Lexer` instance) + and return an iterable of tokens. Currently, this only calls + `lexer.get_tokens()`. """ try: return lexer.get_tokens(code) @@ -49,11 +51,12 @@ def lex(code, lexer): def format(tokens, formatter, outfile=None): # pylint: disable=redefined-builtin """ - Format a tokenlist ``tokens`` with the formatter ``formatter``. + Format ``tokens`` (an iterable of tokens) with the formatter ``formatter`` + (a `Formatter` instance). - If ``outfile`` is given and a valid file object (an object - with a ``write`` method), the result will be written to it, otherwise - it is returned as a string. + If ``outfile`` is given and a valid file object (an object with a + ``write`` method), the result will be written to it, otherwise it + is returned as a string. """ try: if not outfile: @@ -73,10 +76,7 @@ def format(tokens, formatter, outfile=None): # pylint: disable=redefined-builti def highlight(code, lexer, formatter, outfile=None): """ - Lex ``code`` with ``lexer`` and format it with the formatter ``formatter``. - - If ``outfile`` is given and a valid file object (an object - with a ``write`` method), the result will be written to it, otherwise - it is returned as a string. + This is the most high-level highlighting function. It combines `lex` and + `format` in one function. """ return format(lex(code, lexer), formatter, outfile) diff --git a/gestao_raul/Lib/site-packages/pip/_vendor/pygments/__main__.py b/gestao_raul/Lib/site-packages/pip/_vendor/pygments/__main__.py index 90cafd9..dcc6e5a 100644 --- a/gestao_raul/Lib/site-packages/pip/_vendor/pygments/__main__.py +++ b/gestao_raul/Lib/site-packages/pip/_vendor/pygments/__main__.py @@ -4,7 +4,7 @@ Main entry point for ``python -m pygments``. - :copyright: Copyright 2006-2022 by the Pygments team, see AUTHORS. + :copyright: Copyright 2006-2024 by the Pygments team, see AUTHORS. :license: BSD, see LICENSE for details. """ diff --git a/gestao_raul/Lib/site-packages/pip/_vendor/pygments/__pycache__/__init__.cpython-310.pyc b/gestao_raul/Lib/site-packages/pip/_vendor/pygments/__pycache__/__init__.cpython-310.pyc index bfb81776ab9cf899f176ea618e236d3fca986ecf..a3d1ee3a23ff0ef2fa578ba730c95e777324ba7a 100644 GIT binary patch delta 458 zcmY*VJxc>Y5Y5GWmy^W*@>4Y{rQTAnd1uLr#SGaI4}3=gLJ<|x8dWbjYZcW;W;Jg{3R-M5CjSXmX?s5# z-RKzcKk2LEIdoU&>Np?OFG2sY*2iKsVS*$ zC1D=4`^=Suvl1LjaJk8ETswLMydZ_z$DT_D=RR+#lCzCaJ#c+llF^ F#a~b6j-CJj delta 302 zcmew;)*{ZE&&$ij00h-PLesZzBpJDlfG#bT01`|blb>?>>HjC>K83`*6ooX1#hE39ESY?eLvHdCE;DW~kUdO5 OLI`LNS0^(+p9BDaHd-tI diff --git a/gestao_raul/Lib/site-packages/pip/_vendor/pygments/__pycache__/__main__.cpython-310.pyc b/gestao_raul/Lib/site-packages/pip/_vendor/pygments/__pycache__/__main__.cpython-310.pyc index 7bc7df43218c0a7cd65530c10659e1f105dc9c34..7ff21f1a25054f2a1cd05f33af88ef826023b352 100644 GIT binary patch delta 61 zcmX@Za*TyLpO=@50SFfPt)9sJozY}6GvguoSZAx4(Bjmh;+XQ(oRa()m;B_?+|<01 P;+UWyCs*gmuNad6L?jfO delta 67 zcmX@ca)yOFpO=@50SKypgihrC&S*55nemWnva?l8XmM&$aZGt?PDy@@OMY@`Zfagh VaZGw@aYjKPQL1W2jjJ~f5bnvMTUAe4IMTT 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 Gv=N>QaM{n19r52B`W&)i)< za7#sZwP(&f^UXQmoH;W)_ipmbq&wkuI}m)n|M1M%{5$Rk79G-0*F3pT|Sg}x9~!kS`OyO-^w33YOWQa}VY zA=Y}jm#w4YF###Lc4A(T zm^@)y#Khu9%nrJ&P7`b1E-zv~A~rvonj!M2NrwzBn3#1@cpn7aya<_N7<_JyJ(rK| zhS+y0%7_f3a^exhfTY)G?FOAv-9a6^(pjXx&Y2bq8c$b%9tmPb9|U zYKx(236E z6dvHWyg_`2-}RO^_^63U)SSyE!4dQ_9>v5&%yY6XUBwd?f~K*0m9Kb%=}u-^ursr< ztc{>Mh(+jzX3c48A43b6IwxG>nZO1DA8zdw^$?lZ$0V^HFTjR*6TgCplep$YzoiEX zQMXd>%Lrn-iDyn`Fu@FLYISPeAHP{(57Mhhw;DcwATZBap_mJpP58Z(euB}UI3-9i1JE8g8!r7~7BLq*+4q3X918*BGi1pk zUX*mVp_gv3cpzAL7ON7i5E_K{GA}FwQorVJ7X}-)KypJ9%0l%b(hE{DtziYsP5jp+ z-3v5aK%+K`lM4T`aOa^{z(c)W%!;#EJGgnW(ANO=W6(B2yvXMMl!p~E2Pxx;qF^n< zNH4)C<)J24B9@l~#Mw6>PCw|mTtbTY+eQA)IRa;aSPW50;5jVH2fY8sV$f#jZOP)P z+x+XI(1{l2&q}I^l(VuKB(ziq_zl3%PAUu=R`0R0g{`C_pY{OslruY^p-13Y0JKk; zT}VDwyfqB`49;FC@ya#UrcJCrEN%@qKM~UH^EZ6~tUH095Kfo{6nalb0}Ugi~iT_BO6vQem=L7vlwcqBP%8UzJd2+ z^Oxh@b-6?kj~_77W76t36lpn3$D~>5E>vhFdH@PKC* zq`;(gz+{w-Y3H@24O_S6$B*O*7d(E-P?$wLSsFa?Hz+uh`YR|QACwSij}%Y}f zv^g30e?6saP@o}Foso0}4vc=t-S(_Gxp#w~nkOn!;L@+f=u;E>;7qH9eJ_zZNTpeg z(ES^#&=(Joa2{1JPzEMS4?Kdg(QlJBe!a|ZyTZg&Q~a&6K>8zC>R!@djQEK8CJvLv zoKE|g0?$393C=x*Am$tHNqGn+D0XD>s01hQWO{^qv5-S6qDv_7F{t;;ugVEuSwGrtR{nr?V<#fKBXs_kDkgHI;$Z#fb?2ui=eHe z&#+on$GjPn?lty+S^FkcNF%JAd6|zX8MB~aOzjJ%ESz2xe-dy+8kT>qT4v!InR+_4 z!;XyolU5eaEFwM3!dZ)Ek5|D)vS>coNa5T@GAM*0NO(O6{SM5i6-ZjtFt{BMfwJaH zD+9Uk7PVtFmpTSz5*7ltr&b*ZwoP06jr-{I09-Fl zCdZ8Xx-tWo_;I-YhP4)@@j{c*(cZqJwWGbGW9g;xz1TYh*e1Me8BxdLnmWWksW^rs zysFY)U|etxh?`1>5Z~g5Dv#iE{CefQ^Q0>2z=dsCSo?(#oYhG_7iz~n{QXc0kMVY8sQrvE zCxj61Da-OyY=nwSn7UKgoFE26Q{z)@!!yx1NvLi7=Zde{mVX+QFC=0Kb!2j6&@mn# zr{g2BaV@&+JTf_zQ0XC6g^S_?r4L``;p*z}dExPb@Mwc%3=7hO!t^W%c$om3rcUsS z)lJs8Fi-IxRliG`tNQ1+8!qkv?){UJAf_(bAcw7coxrKW@1K@@(@>oL>5>`NtA|jo)lL z3=f~R-7!IPwIdC%C3zdHUX-_Qf5Vy<+((!0ZNGsfxP_1H9LGNXyPdlAhUj>fpYH16 zx4X_djhy{S*m_^vRfgwzVAoely(C_G#LQs6D^^MRt2z&mrY^NhAa5itn8}XJlB_{NPOi?IQ<;01d81fT T5{t5jPlXWRxzQ)sYS&x<*7L(`7ti}$)&le zc_qa$K|xNg&YM>8ZsfiTUwGiKRK47c*^Tl`;V8E@7x)NMUSdD&{R=Okt{F$YRQ37Gs!P!lBG8 pr&=_521gbj$QCX}7DhHkw*O*GlX*C68C@rLaTYVOP5#Fj1^{K{DBb`7 diff --git a/gestao_raul/Lib/site-packages/pip/_vendor/pygments/__pycache__/formatter.cpython-310.pyc b/gestao_raul/Lib/site-packages/pip/_vendor/pygments/__pycache__/formatter.cpython-310.pyc index 14f9cb4ca90f035206a1e602d7afab62e88758e5..a23910466fb609126a15d23ff07ea0411071d2a5 100644 GIT binary patch delta 2112 zcmZ`)zi%T&6!tof;~)8n?hfvba8D407$v5G#sZ{V1fs~@Nl6+~ushxv+jH67F*CDC z97Sh}`v*?j19u&wgo=`ah7LsI8VOM$N@(D{U3(o8#gfNwXJ@|m-uJ%u{KL!t-dj`) z3$+4%UOfD!yT0;l@mJ@aXTN>#e4Tvhte30!;-62GpPbvXdwcgk+)4g)T&JEqDy};B zld!n)<^rGNm8Z^Ol~;M~Y2mQO>wF%6>%6#MXe{ay0@v`rWz9rU-fHpJIpWuG`SMkA2@_zYnSb1LTzs4))1-E=& zcwFYyj;cxHjNOqpn(gFTc@#NH^tJjb|6RxTy$iVD>qHkkFh}_iwFZe zgL=RVZ6iL5X|pH0!(Je}Ju5g^acW^hG`mgM+27Bond%c{l;U|GA3WI2o7roOn~2yt zKvpxQQZ2`&1P?7Qm2z7^Y{-#|F`p#0tyz5!?c~SW+TJZR^eeQi(gL(h zhfr$KBuf8}Z=+#oOjQacr}S2-RGKZ7D#hAzWodq~QPpd7@J{k>{m~s7cm?Q$2fG!IPIByo(6>X13jGP2l4t@4fH6_r00lb04O?tXg#qc%J`w z+@a+I?=xCH`1T(8@-Rh!vFy&2ewoee$GNT$Y3>Tj~ z52?smip3_yTLVVg*^Pvt4CkDZCSJ(|g(f0_Pb;((f5J1o zL7|Z(<^roe^Ik,q`QaqyLxSzyZii+Y*(M`@g%~2LpQfWzjlhwc;6rlU_LVK{A zK#LWCSo}W3akVAO-o149wEO12L9GJp;8o>L|HY`-FchW|*%nQCma`TO!$qZD4C6-| zu#Bt?{)P?^J3YFHhp}3FKMY4)dUz!~!P^Y7fdR*<$RIn*MLSM_S&!-IwI4$_hHt@P z`dDqCn*3g!xpnR|6^Ft-QNtAhieojif_5j)1{?r|<&n2k99U`8rSg|Ie{Tws z*tCKx3eM=YrB1BARCO@;B!F#L$hvG5;I(YiEmvIMVOWLLB^zIzQP)Ce{6{6fjL-i8 D|6L3H diff --git a/gestao_raul/Lib/site-packages/pip/_vendor/pygments/__pycache__/lexer.cpython-310.pyc b/gestao_raul/Lib/site-packages/pip/_vendor/pygments/__pycache__/lexer.cpython-310.pyc index 2684b4b767eac06af9acd5fa37a3a7681b239674..a64632d2778328ea74f43a03bbfaa19da63944c4 100644 GIT binary patch delta 11231 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 diff --git a/gestao_raul/Lib/site-packages/pip/_vendor/pygments/__pycache__/modeline.cpython-310.pyc b/gestao_raul/Lib/site-packages/pip/_vendor/pygments/__pycache__/modeline.cpython-310.pyc index a4eb51838a0b43507b961c118b639a2da45bf5b9..b56393f8a6ff110e1701fd090608f77641a9c79d 100644 GIT binary patch delta 75 zcmZ3%xtNnTpO=@50SFfPtxkVCk@o?k$;Nl?jPkM0RxzQ)sYS&x<*7L(`7ti}$)&le ec_qa$K|xNg&YPo{CNr|#V#&$OOP&0Qc^d$(O&YoY delta 80 zcmZ3?xq_27pO=@50SKypgr?t`$oqiNXyZF~M%83ztC-N@)S}{;^3##QgZ8#L}G2Axx7QS&P_#+9$td-Ua|kR~zjB diff --git a/gestao_raul/Lib/site-packages/pip/_vendor/pygments/__pycache__/plugin.cpython-310.pyc b/gestao_raul/Lib/site-packages/pip/_vendor/pygments/__pycache__/plugin.cpython-310.pyc index 15306c398177cb4e48c665675da6e60977a546ca..baec0f21eb1841a2cb98823cc276858df82487e1 100644 GIT binary patch delta 816 zcma)(&ubGw6vt;~ce9h-Nn#S)#3F)1!B7wn7C~x3V|x$@(ohd;VA*E2F|wNtvlCQ^ zv{0`iWebBE!+hWTc=LI0-h6Gou2qvt#Uaq%_dbq> z_Hp(6?mbvZ;t@$Di)hR|Mu{{$LziSyp5ftRrjk z3|Lpz`=rwdKC|QW?uo-z8NHTWHSaHd!;l@Ci*TaVGk=L>(#&VJbJP*jv=i`u5s7q6(hE66cNm@kIL5Xf_&8{3v`1 z`0Ky#vqM1zHGislc4BXH0sD}=n^Ar-t|F#}@&|DFG;lvrF}x9=8{qmKlR{_%p-ZqB z!dNs4GpsUhss_p;;w#=-Ig2}g4V!)8t@T@Yyo}NY`CqUoxBms+EVmD~7vL3`^*SQA zeP1R+-_IN4c$z33jrXp^p$=rAgW_*h1@AObS}5mGT$DNrzP!j%A@NiJi&7Tf!Z+eX c&Z2OWUI3RA-(?bU$z&$Q&J8ZO#Vuj|0z5LJ!vFvP literal 2520 zcmb7FTXP#V6xLpRsq2tSp|sqp2Zq5j?xquFfH9Y8n>dgelax3uB&4%eRAtY^6%E#8^lY zQ^KkC1s_g$ibWU)nZ-xmr&XMA97=(wg8L`IweKDY?yJ1G4YrK%C}bQzU|fVrEO62u zC-m?dn2;zESb5;Y@X%`Y?{|F8L^9w36Rj2w+c-{Cv_VWgyc)*flU9}bIa{3{c9z*= z7Qz;J6*OZG1ty%~C?S+lOeBV2o*_G84*{rQTGVPrsmk?3RxfQL?&>sZB?XYi?F&8b zC3Fz6+BT>gDw>G_JoJc!%Dp^zW_Bh)rpG2pHrIJpC&4pNiynI@Utz0_ZwLh%2Ly`G zST&o#xe8;3AqtC4(IBNhDp_jnzYpAEf+I#~7F6lpBU!~_(FTS+JuI2nwIJ!IJnVF34KGiIcG-~w+lwV5y{e)P-?+W?^~Pq?)3ns0FaY9M4c~08nDxfma(%s7*EfQ~RSYBH zl@4aloU4NinIa=vOj#Mi4(3j*G#wo_Hu`|_MKO>*k-PmDze<Eao~q8T2cq(Zcg>kE>QbI=`m-VV(1YPg!OCYjn9E_C5ar zi)q5WQ*DSlDnMbQX`BmPBH%`IuGk(q9VRR8sH6e-G3ha#&-moERy;vmRpl93uI=6y z&>`_Nb1yV}!9*AF&MAAC4 zR?ywTAsV7b_G5Gh4$zM|ikj$&wO(<|hUXjg@9Ud>eSK?l+rPE3w!SrTRl9v+jY_(7 zx}2H~BjzCbXaQOd_01-H(`LU?sf!@&U&^ot_n2RV$#W=G36%2b`yi%JmK4f+a2Ovs zk5St`!OG{suwwQ+dSi8C^P3x6TW1mLDqa9X{<;#Xc2j6CPNO}!s|~PvIzhak5WfYQ z7b50ws;JXw=9^pFjrufq{IarnA&^tFnf~yta(G*bcR~D*| zCrf_?M(c1N3%*a2!1wurTDqjfJ4&cirH_oRtENgr=E`x3am~FxB*o9oAMBUvbP81% U7r7t0miiT);-zA)m@DW01<(trfdBvi diff --git a/gestao_raul/Lib/site-packages/pip/_vendor/pygments/__pycache__/regexopt.cpython-310.pyc b/gestao_raul/Lib/site-packages/pip/_vendor/pygments/__pycache__/regexopt.cpython-310.pyc index 348232c8972b51ea7d5f05de52fd1712b2e219a8..a0e1227ab4e353e701620499ee8f3de3c0f9961b 100644 GIT binary patch delta 64 zcmeAXZxiRv=jG*M0D?t+t2c6cGBTQM4rP>Ql#g|`iU}=FEh>&FPt7UGk8#OQF3nBN SD=Cf%3UYFF-aM1(GY0@K^b_p> delta 70 zcmZn@?-A$D=jG*M0D|ftp&Pk985xZ>hce1DswO*I#e^2878S>or{KW@0qjEY76GsG8(#6%$&VT2vfUo|;pVALEjrT$-Dj YS5h34o?2Xzm>*x1Semmrfw_ST0N#`q?*IS* diff --git a/gestao_raul/Lib/site-packages/pip/_vendor/pygments/__pycache__/sphinxext.cpython-310.pyc b/gestao_raul/Lib/site-packages/pip/_vendor/pygments/__pycache__/sphinxext.cpython-310.pyc index 243c2e7bad700441097d7d5d97604ac4dda2bef6..9e707edcb5428ecc66365b8fb5c9411eeff5c483 100644 GIT binary patch literal 7761 zcmbtZO>i4WcAlOY0D}QQf*?haA}x(&c_p|cNb5NMp=HHdiE_NFpIuS@2|@=Np@$@( z!4G?el!y$R#AG5VDR1pwa@kb{+{>0Lr`&SLY452@<&vt&F(=(pwW%CbTT#B(jX!#2 zXYGKTH$AU=`tQB>z1MGAxty)x_lxU)zkcSJru_#!jQ>nLyo)Q?0O49$K{; zUvC&?gAvd4%|@b}kmZD*Y^2I5Sx)*^BVA6ToGRPgDrb1QoaJ^o_nyWxJiDjyte4s~ z$`d@tC-$`RB-dB8;-qUbO|u>R+B@qFuNelVpuJIR-uLc@lKts#{cOo!k*ypw^O`}e z)pWv^v+gxL;f9{$ZiTIe8`i20Z&kObTRfmmYt8Y!`<@6+%Rbgx08+@^}E?*>7iPdmP}ve6Qu({vkNAX`i3m74GMSq^m}nb+RGw(NvEZE7g{B`)

    re+gie~DPE1WZW!X-WTP*t8*N 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

    l@TIaJQ@x`@gdK1UIc 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

    V*^uYlg{E#-9&i<};G;)t= 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�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℘BObllr+kQ~1soSvaoc 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